// file: $isip_ifc/class/algo/KalmanFilter/kf_01.cc
// version: $Id: kf_01.cc 10405 2006-01-28 23:47:00Z patil $
//

// isip include files
//
#include "KalmanFilter.h"
#include <Console.h>

// method: debug
//
// arguments:
//  const unichar* msg: (input) message to print
//
// return: a boolean value indicating status
//
boolean KalmanFilter::debug(const unichar* msg_a) const {

  // declare local variables
  //
  String output;
  String value;

  // output an information message
  //
  output.debugStr(name(), msg_a, L":");
  Console::put(output);
  Console::increaseIndention();

  // display the algorithm choice
  //
  output.debugStr(name(), msg_a, L"algorithm_d",
		  ALGO_MAP((long)algorithm_d));
  Console::put(output);

  // display the implementation name
  //
  output.debugStr(name(), msg_a, L"implementation_d",
                  IMPL_MAP.getName((long)implementation_d));
  Console::put(output);
  
  // display filter-related information
  //
  // display the order
  //
  value.assign((long)order_d);
  output.debugStr(name(), msg_a, L"order_d", value);
  Console::put(output);

  // display the initial state vector
  //
  state_mem_d.debug(L"state_mem_d");

  // display the transition model and observation model
  //
  trn_d.debug(L"trn_d");
  obs_d.debug(L"obs_d");

  // display the covariance information for process, observation and
  // estimate error
  //
  covar_nse_pro_d.debug(L"covar_nse_pro_d");
  
  // display the observation noise covariance
  //
  value.assign((float)covar_nse_obs_d);
  output.debugStr(name(), msg_a, L"covar_nse_obs_d", value);
  Console::put(output);
  
  covar_err_est_d.debug(L"covar_err_est_d");
  
  // state_d.debug(L"state_d");
  data_filt_d.debug(L"data_filt_d");

  // display the data related to UKF
  //
  alpha_d.debug(L"alpha_d");
  beta_d.debug(L"beta_d");
  kappa_d.debug(L"kappa_d");
    
  // display the base class
  //
  AlgorithmBase::debug(L"AlgorithmBase");

  // decrease indention
  //
  Console::decreaseIndention();

  // exit gracefully
  //
  return true;
}
