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: 2025-12-21 13:07:08 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/timingcmd/Nljs.hpp"
      14              : #include "timinglibs/timingcmd/Structs.hpp"
      15              : #include "timinglibs/TimingIssues.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              :   
      39            0 : }
      40              : 
      41              : void
      42            0 : TimingHardwareManagerPDII::conf(const CommandData_t& conf_data)
      43              : {
      44            0 :   register_common_hw_commands_for_design();
      45            0 :   register_master_hw_commands_for_design();
      46            0 :   register_endpoint_hw_commands_for_design();
      47            0 :   register_hsi_hw_commands_for_design();
      48              : 
      49            0 :   TimingHardwareManagerBase::conf(conf_data);
      50              : 
      51              :   // monitoring
      52              :   // only register monitor threads if we have been given the name of the device to monitor
      53            0 :   if (m_monitored_device_name_master.compare("")) {
      54            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_master, 1);
      55              :     //register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_master, 2);
      56              :   }
      57              : 
      58            0 :   for (auto fanout : m_monitored_device_names_fanout) {
      59            0 :       register_info_gatherer(m_gather_interval, fanout.second, 1);
      60              :       //register_info_gatherer(m_gather_interval_debug, *it, 2);
      61            0 :   }
      62              : 
      63            0 :   if (m_monitored_device_name_endpoint.compare("")) {
      64            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_endpoint, 1);
      65              :     //register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_endpoint, 2);
      66              :   }
      67              : 
      68            0 :   if (m_monitored_device_name_hsi.compare("")) {
      69            0 :     register_info_gatherer(m_gather_interval, m_monitored_device_name_hsi, 1);
      70              :     //register_info_gatherer(m_gather_interval_debug, m_monitored_device_name_hsi, 2);
      71              :   }
      72              : 
      73            0 :   start_hw_mon_gathering();
      74            0 : } // NOLINT
      75              : 
      76              : void
      77            0 : TimingHardwareManagerPDII::start(const CommandData_t& /*data*/)
      78              : {
      79            0 : }
      80              : void
      81            0 : TimingHardwareManagerPDII::stop(const CommandData_t& /*data*/)
      82              : {
      83            0 : }
      84              : 
      85              : void
      86            0 : TimingHardwareManagerPDII::register_common_hw_commands_for_design()
      87              : {
      88            0 :   register_timing_hw_command("io_reset", &TimingHardwareManagerPDII::io_reset);
      89            0 :   register_timing_hw_command("print_status", &TimingHardwareManagerPDII::print_status);
      90            0 : }
      91              : 
      92              : void
      93            0 : TimingHardwareManagerPDII::register_master_hw_commands_for_design()
      94              : {
      95            0 :   register_timing_hw_command("set_timestamp", &TimingHardwareManagerPDII::set_timestamp);
      96            0 :   register_timing_hw_command("set_endpoint_delay", &TimingHardwareManagerPDII::set_endpoint_delay);
      97            0 :   register_timing_hw_command("send_fl_command", &TimingHardwareManagerPDII::send_fl_cmd);
      98            0 :   register_timing_hw_command("master_endpoint_scan", &TimingHardwareManagerPDII::master_endpoint_scan);
      99            0 : }
     100              : 
     101              : void
     102            0 : TimingHardwareManagerPDII::register_endpoint_hw_commands_for_design()
     103              : {
     104            0 :   register_timing_hw_command("endpoint_enable", &TimingHardwareManagerPDII::endpoint_enable);
     105            0 :   register_timing_hw_command("endpoint_disable", &TimingHardwareManagerPDII::endpoint_disable);
     106            0 :   register_timing_hw_command("endpoint_reset", &TimingHardwareManagerPDII::endpoint_reset);
     107            0 : }
     108              : 
     109              : void
     110            0 : TimingHardwareManagerPDII::register_hsi_hw_commands_for_design()
     111              : {
     112            0 :   register_timing_hw_command("hsi_reset", &TimingHardwareManagerPDII::hsi_reset);
     113            0 :   register_timing_hw_command("hsi_configure", &TimingHardwareManagerPDII::hsi_configure);
     114            0 :   register_timing_hw_command("hsi_start", &TimingHardwareManagerPDII::hsi_start);
     115            0 :   register_timing_hw_command("hsi_stop", &TimingHardwareManagerPDII::hsi_stop);
     116            0 :   register_timing_hw_command("hsi_print_status", &TimingHardwareManagerPDII::hsi_print_status);
     117            0 : }
     118              : 
     119              : // void
     120              : // TimingHardwareManagerPDII::get_info(opmonlib::InfoCollector& ci, int level)
     121              : // {
     122              : 
     123              : //   // send counters internal to the module
     124              : //   timinghardwaremanagerpdiinfo::Info module_info;
     125              : //   module_info.received_hw_commands_counter = m_received_hw_commands_counter.load();
     126              : //   module_info.accepted_hw_commands_counter = m_accepted_hw_commands_counter.load();
     127              : //   module_info.rejected_hw_commands_counter = m_rejected_hw_commands_counter.load();
     128              : //   module_info.failed_hw_commands_counter = m_failed_hw_commands_counter.load();
     129              : 
     130              : //   ci.add(module_info);
     131              : 
     132              : //   // the hardware device data
     133              : //   for (auto it = m_info_gatherers.begin(); it != m_info_gatherers.end(); ++it) {
     134              : //     // master info
     135              : //     if (m_monitored_device_name_master.find(it->second.get()->get_device_name()) != std::string::npos) {
     136              : //       if (it->second.get()->get_op_mon_level() <= level) {
     137              : //         it->second.get()->add_info_to_collector("master", ci);
     138              : //       }
     139              : //     }
     140              : 
     141              : //     for (uint i = 0; i < m_monitored_device_names_fanout.size(); ++i) {
     142              : //       std::string fanout_device_name = m_monitored_device_names_fanout.at(i);
     143              : //       if (fanout_device_name.find(it->second.get()->get_device_name()) != std::string::npos) {
     144              : //         if (it->second.get()->get_op_mon_level() <= level) {
     145              : //           it->second.get()->add_info_to_collector("fanout_" + std::to_string(i), ci);
     146              : //         }
     147              : //       }
     148              : //     }
     149              : 
     150              : //     if (m_monitored_device_name_endpoint.find(it->second.get()->get_device_name()) != std::string::npos) {
     151              : //       if (it->second.get()->get_op_mon_level() <= level) {
     152              : //         it->second.get()->add_info_to_collector("endpoint", ci);
     153              : //       }
     154              : //     }
     155              : 
     156              : //     if (m_monitored_device_name_hsi.find(it->second.get()->get_device_name()) != std::string::npos) {
     157              : //       if (it->second.get()->get_op_mon_level() <= level) {
     158              : //         it->second.get()->add_info_to_collector("hsi", ci);
     159              : //       }
     160              : //     }
     161              : //   }
     162              : // }
     163              : 
     164              : } // namespace timinglibs
     165              : } // namespace dunedaq
     166              : 
     167            0 : DEFINE_DUNE_DAQ_MODULE(dunedaq::timinglibs::TimingHardwareManagerPDII)
     168              : 
     169              : // Local Variables:
     170              : // c-basic-offset: 2
     171              : // End:
        

Generated by: LCOV version 2.0-1