PhasespaceCore::~PhasespaceCore() {
  ros::Time elapsed_time = ros::Time::now();

  std::cout << "\n\n";

  // closes log files
  if (!log_multi_files_) {
    std::string complete_path;
    std::ifstream last_file;

    complete_path = log_file_base_path_ + date_time_ + log_file_name_ + ".dat";
    if (log_file_.is_open()) {
      num_log_files_++;
      std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file generated: " << complete_path << '\n';
      log_file_.close();
    }
    // checks for emptiness (in case removes the file)
    last_file.open(complete_path);
    if (last_file.peek() == std::ifstream::traits_type::eof() && std::remove(complete_path.c_str()) == 0) {
      std::cout << "[ INFO] [" << elapsed_time
                << "]: [PhaseSpace] Log file was empty, thus has been removed: " << complete_path << '\n';
    }

    complete_path = log_file_base_path_ + date_time_ + log_file_name_old_ + ".dat";
    if (log_file_old_.is_open()) {
      num_log_files_++;
      std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file generated: " << complete_path << '\n';
      log_file_old_.close();
    }
    // checks for emptiness
    last_file.open(complete_path);
    if (last_file.peek() == std::ifstream::traits_type::eof() && std::remove(complete_path.c_str()) == 0) {
      std::cout << "[ INFO] [" << elapsed_time
                << "]: [PhaseSpace] Log file was empty, thus has been removed: " << complete_path << '\n';
    }
  }

  // prints statistics (can't use rosconsole macros due to ros::shutdown() callback)
  std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Final statistics..." << '\n';
  int marker_id = 0;
  for (auto const& occurrences : *markers_count_) {
    if (occurrences > 0) {
      int perc = 100*occurrences/num_data_retrieved_;
      std::cout << "       + Marker[" << marker_id << "]: " << occurrences << " occurrences (" << perc << " %)" << '\n';
    }
    marker_id++;
  }
  std::cout << "       + Total elapsed time: " << elapsed_time - start_time_ << '\n';
  std::cout << "       + Total data acquired: " << num_data_retrieved_ << '\n';
  std::cout << "       + Total data rate: " << (double)num_data_retrieved_ / (elapsed_time-start_time_).toSec() << '\n';
  std::cout << "       + Total log files created: " << num_log_files_ << std::endl;

  // performs system cleanup and client connection termination
  owlDone();
  delete private_node_handle_;
  delete markers_;
  delete markers_count_;
}
Ejemplo n.º 2
0
void
phasespace_close()
{
    PhaseSpaceData *d = data();

    owlDone();
    (*d->destroy)();
    d->status = PHASESPACE_CLEAN;
}
Ejemplo n.º 3
0
vrpn_Tracker_PhaseSpace::~vrpn_Tracker_PhaseSpace()
{
#ifdef DEBUG
  printf("%s\n", __PRETTY_FUNCTION__);
#endif

  if(owlRunning)
    owlDone();
}