LCOV - code coverage report
Current view: top level - timinglibs/plugins - TimingHardwareManagerPDII.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 50 0
Test Date: 2026-10-11 15:05:20 Functions: 0.0 % 9 0

            Line data    Source code
       1              : /**
       2              :  * @file TimingHardwareManagerPDII.cpp TimingHardwareManagerPDII class
       3              :  * implementation
       4              :  *
       5              :  * This is part of the DUNE DAQ Software Suite, copyright 2020.
       6              :  * Licensing/copyright details are in the COPYING file that you should have
       7              :  * received with this code.
       8              :  */
       9              : 
      10              : #include "TimingHardwareManagerPDII.hpp"
      11              : #include "timinglibs/dal/TimingHardwareManagerPDII.hpp"
      12              : 
      13              : #include "timinglibs/TimingIssues.hpp"
      14              : #include "timinglibs/timingcmd/Nljs.hpp"
      15              : #include "timinglibs/timingcmd/Structs.hpp"
      16              : 
      17              : #include "timing/MasterNode.hpp"
      18              : 
      19              : #include "ers/Issue.hpp"
      20              : #include "logging/Logging.hpp"
      21              : 
      22              : #include <chrono>
      23              : #include <cstdlib>
      24              : #include <memory>
      25              : #include <string>
      26              : #include <thread>
      27              : #include <vector>
      28              : 
      29              : namespace dunedaq {
      30              : namespace timinglibs {
      31              : 
      32            0 : TimingHardwareManagerPDII::TimingHardwareManagerPDII(const std::string& name)
      33            0 :   : TimingHardwareManagerBase(name)
      34              : {
      35            0 :   register_command("conf", &TimingHardwareManagerPDII::conf);
      36            0 :   register_command("start", &TimingHardwareManagerPDII::start);
      37            0 :   register_command("stop", &TimingHardwareManagerPDII::stop);
      38            0 : }
      39              : 
      40              : void
      41            0 : TimingHardwareManagerPDII::conf(const CommandData_t& conf_data)
      42              : {
      43            0 :   register_common_hw_commands_for_design();
      44            0 :   register_master_hw_commands_for_design();
      45            0 :   register_endpoint_hw_commands_for_design();
      46            0 :   register_hsi_hw_commands_for_design();
      47              : 
      48            0 :   TimingHardwareManagerBase::conf(conf_data);
      49              : 
      50              :   // monitoring
      51              :   // only register monitor threads if we have been given the name of the device to monitor
      52            0 :   if (m_monitored_device_name_master.compare("")) {
      53            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_master, 1);
      54              :     // register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_master, 2);
      55              :   }
      56              : 
      57            0 :   for (auto fanout : m_monitored_device_names_fanout) {
      58            0 :     register_info_gatherer(m_gather_interval, fanout.second, 1);
      59              :     // register_info_gatherer(m_gather_interval_debug, *it, 2);
      60            0 :   }
      61              : 
      62            0 :   if (m_monitored_device_name_endpoint.compare("")) {
      63            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_endpoint, 1);
      64              :     // register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_endpoint, 2);
      65              :   }
      66              : 
      67            0 :   if (m_monitored_device_name_hsi.compare("")) {
      68            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_hsi, 1);
      69              :     // register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_hsi, 2);
      70              :   }
      71              : 
      72            0 :   start_hw_mon_gathering();
      73            0 : } // NOLINT
      74              : 
      75              : void
      76            0 : TimingHardwareManagerPDII::start(const CommandData_t& /*data*/)
      77              : {
      78            0 : }
      79              : void
      80            0 : TimingHardwareManagerPDII::stop(const CommandData_t& /*data*/)
      81              : {
      82            0 : }
      83              : 
      84              : void
      85            0 : TimingHardwareManagerPDII::register_common_hw_commands_for_design()
      86              : {
      87            0 :   register_timing_hw_command("io_reset", &TimingHardwareManagerPDII::io_reset);
      88            0 :   register_timing_hw_command("print_status", &TimingHardwareManagerPDII::print_status);
      89            0 : }
      90              : 
      91              : void
      92            0 : TimingHardwareManagerPDII::register_master_hw_commands_for_design()
      93              : {
      94            0 :   register_timing_hw_command("set_timestamp", &TimingHardwareManagerPDII::set_timestamp);
      95            0 :   register_timing_hw_command("set_endpoint_delay", &TimingHardwareManagerPDII::set_endpoint_delay);
      96            0 :   register_timing_hw_command("send_fl_command", &TimingHardwareManagerPDII::send_fl_cmd);
      97            0 :   register_timing_hw_command("master_endpoint_scan", &TimingHardwareManagerPDII::master_endpoint_scan);
      98            0 : }
      99              : 
     100              : void
     101            0 : TimingHardwareManagerPDII::register_endpoint_hw_commands_for_design()
     102              : {
     103            0 :   register_timing_hw_command("endpoint_enable", &TimingHardwareManagerPDII::endpoint_enable);
     104            0 :   register_timing_hw_command("endpoint_disable", &TimingHardwareManagerPDII::endpoint_disable);
     105            0 :   register_timing_hw_command("endpoint_reset", &TimingHardwareManagerPDII::endpoint_reset);
     106            0 : }
     107              : 
     108              : void
     109            0 : TimingHardwareManagerPDII::register_hsi_hw_commands_for_design()
     110              : {
     111            0 :   register_timing_hw_command("hsi_reset", &TimingHardwareManagerPDII::hsi_reset);
     112            0 :   register_timing_hw_command("hsi_configure", &TimingHardwareManagerPDII::hsi_configure);
     113            0 :   register_timing_hw_command("hsi_start", &TimingHardwareManagerPDII::hsi_start);
     114            0 :   register_timing_hw_command("hsi_stop", &TimingHardwareManagerPDII::hsi_stop);
     115            0 :   register_timing_hw_command("hsi_print_status", &TimingHardwareManagerPDII::hsi_print_status);
     116            0 : }
     117              : 
     118              : // void
     119              : // TimingHardwareManagerPDII::get_info(opmonlib::InfoCollector& ci, int level)
     120              : // {
     121              : 
     122              : //   // send counters internal to the module
     123              : //   timinghardwaremanagerpdiinfo::Info module_info;
     124              : //   module_info.received_hw_commands_counter = m_received_hw_commands_counter.load();
     125              : //   module_info.accepted_hw_commands_counter = m_accepted_hw_commands_counter.load();
     126              : //   module_info.rejected_hw_commands_counter = m_rejected_hw_commands_counter.load();
     127              : //   module_info.failed_hw_commands_counter = m_failed_hw_commands_counter.load();
     128              : 
     129              : //   ci.add(module_info);
     130              : 
     131              : //   // the hardware device data
     132              : //   for (auto it = m_info_gatherers.begin(); it != m_info_gatherers.end(); ++it) {
     133              : //     // master info
     134              : //     if (m_monitored_device_name_master.find(it->second.get()->get_device_name()) != std::string::npos) {
     135              : //       if (it->second.get()->get_op_mon_level() <= level) {
     136              : //         it->second.get()->add_info_to_collector("master", ci);
     137              : //       }
     138              : //     }
     139              : 
     140              : //     for (uint i = 0; i < m_monitored_device_names_fanout.size(); ++i) {
     141              : //       std::string fanout_device_name = m_monitored_device_names_fanout.at(i);
     142              : //       if (fanout_device_name.find(it->second.get()->get_device_name()) != std::string::npos) {
     143              : //         if (it->second.get()->get_op_mon_level() <= level) {
     144              : //           it->second.get()->add_info_to_collector("fanout_" + std::to_string(i), ci);
     145              : //         }
     146              : //       }
     147              : //     }
     148              : 
     149              : //     if (m_monitored_device_name_endpoint.find(it->second.get()->get_device_name()) != std::string::npos) {
     150              : //       if (it->second.get()->get_op_mon_level() <= level) {
     151              : //         it->second.get()->add_info_to_collector("endpoint", ci);
     152              : //       }
     153              : //     }
     154              : 
     155              : //     if (m_monitored_device_name_hsi.find(it->second.get()->get_device_name()) != std::string::npos) {
     156              : //       if (it->second.get()->get_op_mon_level() <= level) {
     157              : //         it->second.get()->add_info_to_collector("hsi", ci);
     158              : //       }
     159              : //     }
     160              : //   }
     161              : // }
     162              : 
     163              : } // namespace timinglibs
     164              : } // namespace dunedaq
     165              : 
     166            0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::timinglibs::TimingHardwareManagerPDII)
     167              : 
     168              : // Local Variables:
     169              : // c-basic-offset: 2
     170              : // End:
        

Generated by: LCOV version 2.0-1