DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
definitions.cpp
Go to the documentation of this file.
1
11#include "timing/MasterNode.hpp"
12#include "timing/IONode.hpp"
13#include "timing/HSINode.hpp"
14
15#include <pybind11/pybind11.h>
16#include <pybind11/stl.h>
17
18#include <utility>
19#include <map>
20#include <string>
21
22namespace py = pybind11;
23
24namespace dunedaq {
25namespace timing {
26namespace python {
27
28std::map<std::string, FixedLengthCommandType> swap_commands_map(const std::map<FixedLengthCommandType, std::string>& command_map)
29{
30 std::map<std::string, FixedLengthCommandType> swapped_map;
31 for (auto& cmd: command_map) {
32 swapped_map.emplace( std::pair<std::string,FixedLengthCommandType>(cmd.second, cmd.first) );
33 }
34 return swapped_map;
35}
36
37void
39{
40 py::enum_<BoardType>(m, "BoardType")
41 .value("kBoardFMC", kBoardFMC)
42 .value("kBoardSim", kBoardSim)
43 .value("kBoardPC059", kBoardPC059)
44 .value("kBoardMicrozed", kBoardMicrozed)
45 .value("kBoardTLU", kBoardTLU)
46 .value("kBoardFIB", kBoardFIB)
47 .value("kBoardMIB", kBoardMIB)
48 .value("kBoardPC069", kBoardPC069)
49 .value("kBoardGIB", kBoardGIB)
50 .value("kBoardUnknown", kBoardUnknown)
51 .export_values();
52
53 py::enum_<BoardRevision>(m, "BoardRevision")
54 .value("kFMCRev1", kFMCRev1)
55 .value("kFMCRev2", kFMCRev2)
56 .value("kFMCRev3", kFMCRev3)
57 .value("kFMCRev4", kFMCRev4)
58 .value("kPC059Rev1", kPC059Rev1)
59 .value("kTLURev1", kTLURev1)
60 .value("kSIMRev1", kSIMRev1)
61 .value("kFIBRev1", kFIBRev1)
62 .value("kMIBRev1", kMIBRev1)
63 .value("kPC069a", kPC069a)
64 .value("kPC069b", kPC069b)
65 .value("kPC069c", kPC069c)
66 .value("kMIBRev2", kMIBRev2)
67 .value("kGIBRev1", kGIBRev1)
68 .value("kFIBRev2", kFIBRev2)
69 .export_values();
70
71 py::enum_<CarrierType>(m, "CarrierType")
72 .value("kCarrierEnclustraA35", kCarrierEnclustraA35)
73 .value("kCarrierKC705", kCarrierKC705)
74 .value("kCarrierMicrozed", kCarrierMicrozed)
75 .value("kCarrierATFC", kCarrierATFC)
76 .value("kCarrierAFC", kCarrierAFC)
77 .value("kCarrierNexusVideo", kCarrierNexusVideo)
78 .value("kCarrierTrenzTE0712", kCarrierTrenzTE0712)
79 .value("kCarrierUnknown", kCarrierUnknown)
80 .export_values();
81
82 py::enum_<DesignType>(m, "DesignType")
83 .value("kDesignMaster", kDesignMaster)
84 .value("kDesignOuroborosSim", kDesignOuroborosSim)
85 .value("kDesignOuroboros", kDesignOuroboros)
86 .value("kDesignTest", kDesignTest)
87 .value("kDesignEndpoint", kDesignEndpoint)
88 .value("kDesignFanout", kDesignFanout)
89 .value("kDesignOverlord", kDesignOverlord)
90 .value("kDesignEndpoBICRT", kDesignEndpoBICRT)
91 .value("kDesignChronos", kDesignChronos)
92 .value("kDesignBoreas", kDesignBoreas)
93 .value("kDesignKerberos", kDesignKerberos)
94 .value("kDesignGaia", kDesignGaia)
95 .value("kDesignCharon", kDesignCharon)
96 .value("kDesignHades", kDesignHades)
97 .value("kDesignUnknown", kDesignUnknown)
98 .export_values();
99
100 py::enum_<FixedLengthCommandType>(m, "FixedLengthCommandType")
101 .value("TimeSync", TimeSync)
102 .value("Echo", Echo)
103 .value("SpillStart", SpillStart)
104 .value("SpillStop", SpillStop)
105 .value("RunStart", RunStart)
106 .value("RunStop", RunStop)
107 .value("WibCalib", WibCalib)
108 .value("SSPCalib", SSPCalib)
109 .value("FakeTrig0", FakeTrig0)
110 .value("FakeTrig1", FakeTrig1)
111 .value("FakeTrig2", FakeTrig2)
112 .value("FakeTrig3", FakeTrig3)
113 .value("BeamTrig", BeamTrig)
114 .value("NoBeamTrig", NoBeamTrig)
115 .value("ExtFakeTrig", ExtFakeTrig)
116 .export_values();
117
118 py::enum_<ClockSource>(m, "ClockSource")
119 .value("kFreeRun", kFreeRun)
120 .value("kInput0", kInput0)
121 .value("kInput1", kInput1)
122 .value("kInput2", kInput2)
123 .value("kInput3", kInput3)
124 .export_values();
125
126 py::enum_<TimestampSource>(m, "TimestampSource")
127 .value("kUpstream", kUpstream)
128 .value("kSoftware", kSoftware)
129 .value("kMixed", kMixed)
130 .export_values();
131
132 py::enum_<TimestampEpoch>(m, "TimestampEpoch")
133 .value("kUNIX", kUNIX)
134 .value("kCustom", kCustom)
135 .export_values();
136
137 py::enum_<TimestampTimebase>(m, "TimestampTimebase")
138 .value("kTAI", kTAI)
139 .value("kUTC", kUTC)
140 .export_values();
141
142 m.attr("kBoardNameMap") = timing::IONode::get_board_type_map();
143 m.attr("kCarrierNameMap") = timing::IONode::get_carrier_type_map();
144 m.attr("kDesignNameMap") = timing::IONode::get_design_type_map();
145 m.attr("kBoardRevisionMap") = timing::IONode::get_board_revision_map();
146 m.attr("kUIDRevisionMap") = timing::IONode::get_board_uid_revision_map();
147 m.attr("kClockConfigMap") = timing::IONode::get_clock_config_map();
148 m.attr("kEpStates") = EndpointNode::get_endpoint_state_map();
149 m.attr("kLibrarySupportedBoards") = timing::IONode::get_library_supported_boards();
150 m.attr("kLibrarySupportedDesigns") = timing::IONode::get_library_supported_designs();
151 m.attr("kMasterFWMajorRequired") = MasterNode::required_major_firmware_version;
152 m.attr("kHSIWordsNumber") = HSINode::hsi_buffer_event_words_number;
153}
154
155} // namespace python
156} // namespace timing
157} // namespace dunedaq
static std::map< uint8_t, std::string > get_endpoint_state_map()
Get the states map.
static constexpr size_t hsi_buffer_event_words_number
Definition HSINode.hpp:133
static const std::vector< BoardType > & get_library_supported_boards()
Definition IONode.hpp:206
static const std::map< std::string, std::string > & get_clock_config_map()
Definition IONode.hpp:205
static const std::vector< DesignType > & get_library_supported_designs()
Definition IONode.hpp:207
static const std::map< uint64_t, BoardRevision > & get_board_uid_revision_map()
Definition IONode.hpp:203
static const std::map< DesignType, std::string > & get_design_type_map()
Definition IONode.hpp:204
static const std::map< BoardRevision, std::string > & get_board_revision_map()
Definition IONode.hpp:202
static const std::map< BoardType, std::string > & get_board_type_map()
Definition IONode.hpp:198
static const std::map< CarrierType, std::string > & get_carrier_type_map()
Definition IONode.hpp:200
static const uint32_t required_major_firmware_version
void register_definitions(py::module &m)
std::map< std::string, FixedLengthCommandType > swap_commands_map(const std::map< FixedLengthCommandType, std::string > &command_map)
The DUNE-DAQ namespace.
Definition DataStore.hpp:57