RMM API 2.0.0
Loading...
Searching...
No Matches
RMMRails.h
1#pragma once
2
3#include <memory>
4#include <string>
5#include <unordered_map>
6#include <vector>
7
8#include "I2CMutex.h"
9#include "RMMLog.h"
10#include "RMMRegisterAccess.h"
11
12#define I2C_MUX_ADDR 117 // 0x75
13#define I2C_MUX_POSITION 16 // 0x10
14
15#define TICK_FREQ 125e6
16
17#define POWER_MON_MAX_MEASUREMENT_AGE 10 // seconds
18
19using SensorResultsMap = std::map<std::string, float>;
20using PowerResultsMap = std::map<std::string, SensorResultsMap>;
21
28class RMMRails {
29 public:
31 double getTemperature();
32 rmmStatus enablePowerMonitoring(int interval_ms);
33 rmmStatus disablePowerMonitoring();
34 rmmStatus getPowerVoltageCurrent(float voltageTolerancePercent, PowerResultsMap *result);
35
37
38 private:
39 RMMRegisterAccess &RMMRegs;
40 rmmStatus calibrateINA226s();
41 rmmStatus selectINA226s();
42
43 bool powerMonitorsCalibrated;
44 bool powerMonitorsEnabled;
45};
Class for managing and writing log messages to different log levels and files.
Definition RMMLog.h:47
rmmStatus disablePowerMonitoring()
Disables the internal state machine that reads out the power rail information.
Definition RMMRails.cpp:114
double getTemperature()
Gets the temperature of the RMM FPGA.
Definition RMMRails.cpp:21
rmmStatus enablePowerMonitoring(int interval_ms)
Enables the internal state machine to start reading out the Voltage, Current, and Power of various po...
Definition RMMRails.cpp:88
RMMRails(RMMRegisterAccess &RMMRegs)
Constructor of the RMMRails.
Definition RMMRails.cpp:10
RMMLog rmmLog
Log handler for RMMRails messages.
Definition RMMRails.h:36
rmmStatus getPowerVoltageCurrent(float voltageTolerancePercent, PowerResultsMap *result)
Gets the power, voltage, and current for all INA226 sensors on the VCU118.
Definition RMMRails.cpp:142
Class to handle register access over the ESS Readout Master Module.
Definition RMMRegisterAccess.h:57