5#include "RMMRegisterAccess.h"
8enum class DomFiber { EVEN, ODD };
10class RMMRingTimestamps {
12 RMMRingTimestamps(RMMRegisterAccess& RMMRegs);
13 void calcAndUpdateTimestamps(
int ring,
int nodes);
16 static constexpr int MIN_NODEID = 0;
17 static constexpr int DIR_EVEN = 0x0;
18 static constexpr int DIR_ODD = 0x1;
19 static constexpr double C_158_PERIOD_NS = 6.309;
20 static constexpr double C_88_PERIOD_NS = 11.357;
21 static constexpr uint32_t DUMMY_TIME = 0xabcd1234;
23 RMMRegisterAccess& RMMRegs;
26 struct DirectionData {
36 uint32_t time_set_dly;
40 ToFData getFeTimes(
int logical_ring,
int node_id);
41 DirectionData getFeTimesOneDirection(
int ring,
int node_id,
bool dir_is_even);
42 void sendGetTimePkt(
int ring,
int node_id,
bool dir_is_even);
43 uint64_t readout64bCounter(
const std::string& measure,
int engine_id);
44 std::unordered_map<std::string, uint32_t> getFeIcdlys(
int ring,
int node);