CDT I-BM API 1.0.0
Loading...
Searching...
No Matches
cdtIbmApi.h
1#pragma once
2
3#include <iostream>
4#include <string>
5
6#include "FrontEndBase.h"
7#include "FrontEndFactory.h"
8#include "cdtIbmRegsMap.h"
9#include "hvCalibration.h"
10
11enum class TiaBoardVersion : uint8_t { V3_0 = 0, V3_2 = 1 };
12
18struct FWInfo {
19 std::string version;
20 uint32_t refClock;
21 uint32_t serdesSampling;
22};
23
27const std::unordered_map<uint32_t, FWInfo> fwMap = {{0xa973c7e4, {"v1.2.0", 1584549000, 0xBE}},
28 {0x1f1a44d2, {"v1.4.1", 1249940700, 0x96}},
29 {0xf3015ede, {"v1.4.3", 1249940700, 0x96}}};
30
37class CdtIonBMAPI : public FrontEndBase {
38 public:
39 CdtIonBMAPI(RMMAPI* rmmApi, int ring, int node, TiaBoardVersion tia_board_version, std::string name);
40 void configFE();
41 std::string getFirmwareVersionLegacy();
42 uint32_t getFirmwareHash();
43 double readHV();
44 void writeHV(const double voltage, const double voltagePerSec);
45 bool isHVRampRunning() const;
46 void measurementEnable(bool enable);
47 bool isMeasRunning();
48 double getWindowTime();
49 void setWindowTime(double seconds);
50
51 void requestHVStop();
52 void resetHVStop();
53 bool isStopHVRequested() const;
54
55 rmmStatus setSamplingPeriod(double sampling);
56 double getSamplingPeriod();
57 rmmStatus setSumCounterStop(uint32_t value);
58 rmmStatus setADCSummation(uint8_t value);
59 uint8_t getADCSummation();
60
61 rmmStatus enableEmulateADCData(bool enable);
62 rmmStatus setEmulatedADCValue(uint32_t value);
63 RMMResult isEmulatedADCDataEnabled();
64 RMMResult getEmulatedADCValue();
65
66 // TODO: Remove that once the FW readback is done
67 RMMResult setADCDataInjection(bool enable, uint32_t value);
68
69 TiaBoardVersion getTiaBoardVersion() const {
70 return tiaVersion;
71 }
72
73 const std::string& getTiaBoardVersionLabel() const {
74 return tiaBoardVersionLabel;
75 }
76
77 private:
78 bool isI2cRequestDone();
79 void jumpToVoltage(const double voltage);
80 uint32_t calcDacForVoltage(const double voltage);
81 rmmStatus setSerdesSampling(uint16_t sampling);
82
83 std::atomic<bool> _isHVRampRunning{false};
84 std::atomic<bool> _hvStopRequested{false};
85
86 std::atomic<uint32_t> previousDacValue{0};
87
88 TiaBoardVersion tiaVersion;
89 std::string tiaBoardVersionLabel;
90 RMMLog ibmLog;
91
92 FWInfo activeFwInfo{"v1.4.1", 1249940700, 0x96};
93 void fetchConfigParams();
94};
std::string getFirmwareVersionLegacy()
Retrieves the legacy firmware version.
Definition cdtIbmApi.cpp:215
bool isMeasRunning()
Checks if the measurement is currently running.
Definition cdtIbmApi.cpp:203
CdtIonBMAPI(RMMAPI *rmmApi, int ring, int node, TiaBoardVersion tia_board_version, std::string name)
Constructor for the CdtIonBMAPI class.
Definition cdtIbmApi.cpp:29
void configFE()
Configures the FEN with default values.
Definition cdtIbmApi.cpp:66
RMMResult getEmulatedADCValue()
Retrieves the current emulated ADC value.
Definition cdtIbmApi.cpp:498
rmmStatus setEmulatedADCValue(uint32_t value)
Sets the emulated ADC value.
Definition cdtIbmApi.cpp:487
void writeHV(const double voltage, const double voltagePerSec)
Writes a voltage value to the HV chip, ensuring proper enabling and smooth ramping.
Definition cdtIbmApi.cpp:281
uint8_t getADCSummation()
Retrieves the summation over 'n' ADC samples.
Definition cdtIbmApi.cpp:182
double readHV()
Reads the measured voltage from the HV chip via I2C.
Definition cdtIbmApi.cpp:249
double getSamplingPeriod()
Retrieves the current sampling period.
Definition cdtIbmApi.cpp:129
bool isStopHVRequested() const
Checks if a stop request has been issued.
Definition cdtIbmApi.cpp:449
RMMResult isEmulatedADCDataEnabled()
Checks whether ADC data emulation is currently enabled.
Definition cdtIbmApi.cpp:474
double getWindowTime()
Retrieves the current integration window time from the CDRE board.
Definition cdtIbmApi.cpp:415
rmmStatus enableEmulateADCData(bool enable)
Enables or disables emulation of ADC data.
Definition cdtIbmApi.cpp:462
void resetHVStop()
Resets the stop request flag, allowing operations to continue.
Definition cdtIbmApi.cpp:440
void measurementEnable(bool enable)
Enables or disables the measurement process.
Definition cdtIbmApi.cpp:191
bool isHVRampRunning() const
Checks if the high-voltage (HV) ramp process is currently running.
Definition cdtIbmApi.cpp:379
void requestHVStop()
Requests to stop ongoing operations.
Definition cdtIbmApi.cpp:433
void setWindowTime(double seconds)
Sets the integration window time for the CDRE board.
Definition cdtIbmApi.cpp:393
rmmStatus setSumCounterStop(uint32_t value)
Sets the TIA SERDES sum counter stop value.
Definition cdtIbmApi.cpp:150
rmmStatus setADCSummation(uint8_t value)
Sets the summation over 'n' consecutive ADC samples.
Definition cdtIbmApi.cpp:167
uint32_t getFirmwareHash()
Retrieves the ESS firmware hash.
Definition cdtIbmApi.cpp:227
rmmStatus setSamplingPeriod(double sampling)
Sets the sampling period in microseconds.
Definition cdtIbmApi.cpp:110
Holds firmware-dependent configuration parameters.
Definition cdtIbmApi.h:18
std::string version
Firmware version as a string (e.g., "v1.2.0")
Definition cdtIbmApi.h:19
uint32_t refClock
Reference clock frequency in Hz.
Definition cdtIbmApi.h:20
uint32_t serdesSampling
Default SERDES sampling value.
Definition cdtIbmApi.h:21