RMM API 2.0.0
Loading...
Searching...
No Matches
RMMOutputQueues.h
1#pragma once
2
3#include <iostream>
4#include <json.hpp>
5#include <string>
6
7#include "RMMRegisterAccess.h"
8using json = nlohmann::json;
9
15 virtual ~OutputQueueBase() {}
16 bool enabled;
17 uint32_t readoutType;
19 uint32_t pktGenIdles;
20 uint32_t pktGenLength;
21};
22
31 uint32_t destinationLUT;
32};
33
41 std::string sourceMAC;
42 std::string sourceIP;
43 uint32_t sourcePort;
44 std::string destinationIP;
45 std::string destinationMAC;
46 uint32_t destinationPort;
47};
48
53using OutputQueueMap = std::map<uint8_t, std::shared_ptr<OutputQueueBase>>;
54
62 public:
69 const OutputQueueMap& getAllEntries() const { return outputQueue; };
70
71 void configOutputQueues();
73 rmmStatus getOutputQueueForRing(int ring, std::shared_ptr<OutputQueueBase>& result);
74 void fillOutputQueuefromJson(json& outputQueues);
75
76 private:
77 RMMRegisterAccess& RMMRegs;
78 OutputQueueMap outputQueue;
79};
Class for managing and writing log messages to different log levels and files.
Definition RMMLog.h:47
void configOutputQueues()
Configures the output queues for data processing.
Definition RMMOutputQueues.cpp:197
RMMLog rmmLog
Log handler for RMMOutputQueues messages.
Definition RMMOutputQueues.h:72
rmmStatus getOutputQueueForRing(int ring, std::shared_ptr< OutputQueueBase > &result)
Retrieves the output queue data for a specific ring.
Definition RMMOutputQueues.cpp:54
RMMOutputQueues(RMMRegisterAccess &RMMRegs)
Constructor of the RMMOutputQueues.
Definition RMMOutputQueues.cpp:45
void fillOutputQueuefromJson(json &outputQueues)
Fills output queue configurations from a JSON object.
Definition RMMOutputQueues.cpp:125
const OutputQueueMap & getAllEntries() const
Retrieves all output queue entries.
Definition RMMOutputQueues.h:69
Class to handle register access over the ESS Readout Master Module.
Definition RMMRegisterAccess.h:57
Struct to hold the base configuration data for each output queue.
Definition RMMOutputQueues.h:14
bool pktGenEnable
Flag to enable/disable packet generator.
Definition RMMOutputQueues.h:18
bool enabled
Flag to enable/disable the output queue.
Definition RMMOutputQueues.h:16
uint32_t readoutType
Readout type identifier.
Definition RMMOutputQueues.h:17
uint32_t pktGenLength
Packet generator length.
Definition RMMOutputQueues.h:20
uint32_t pktGenIdles
Packet generator idle cycles.
Definition RMMOutputQueues.h:19
Struct to hold full configuration for non-UDP output queues with manual addressing.
Definition RMMOutputQueues.h:40
std::string sourceIP
Source IP address in string format (e.g., "192.168.1.1").
Definition RMMOutputQueues.h:42
std::string sourceMAC
Source MAC address.
Definition RMMOutputQueues.h:41
std::string destinationIP
Destination IP Address in string format (eg "192.168.2.12")
Definition RMMOutputQueues.h:44
std::string destinationMAC
Destination MAC address for using LUT without ARP.
Definition RMMOutputQueues.h:45
uint32_t sourcePort
Source UDP port.
Definition RMMOutputQueues.h:43
uint32_t destinationPort
Destination UDP Port.
Definition RMMOutputQueues.h:46
Struct to hold configuration data for output queues using UDP and destination LUT.
Definition RMMOutputQueues.h:30
uint32_t destinationLUT
Destination lookup table index.
Definition RMMOutputQueues.h:31