tdaq-develop-2025-02-12
FESlowControlsChannel.h
1 #ifndef _ots_FESlowControlsChannel_h_
2 #define _ots_FESlowControlsChannel_h_
3 
4 #include <iostream>
5 #include <string>
6 
7 namespace ots
8 {
9 class FEVInterface;
10 
12 {
13  // clang-format off
14  public:
16  const std::string& channelName,
17  const std::string& dataType,
18  const std::string& universalAddress,
19  const std::string& transformation,
20  unsigned int universalDataBitOffset,
21  bool readAccess,
22  bool writeAccess,
23  bool monitoringEnabled,
24  bool recordChangesOnly,
25  time_t delayBetweenSamples,
26  bool saveEnabled,
27  const std::string& savePath,
28  const std::string& saveFileRadix,
29  bool saveBinaryFormat,
30  bool alarmsEnabled,
31  bool latchAlarms,
32  const std::string& lolo,
33  const std::string& lo,
34  const std::string& hi,
35  const std::string& hihi);
36 
38 
39 
40  void print (std::ostream& out = std::cout) const;
41 
42  const std::string& getUniversalAddress () const { return universalAddress_; };
43  unsigned int getReadSizeBytes () const { return sizeOfReadBytes_; }
44  time_t getLastSampleTime () const { return lastSampleTime_; }
45  void doRead (std::string& readValue);
46  const std::string& getSample () const { return sample_; }
47  void handleSample (const std::string& universalReadValue, std::string& txBuffer, FILE* fpAggregate = 0, bool aggregateIsBinaryFormat = false, bool txBufferUsed = true);
48  const std::string& getLastSampleReadValue () const { return universalReadValue_; };
49  void clearAlarms (int targetAlarm = -1);
50 
51  const std::string& getInterfaceUID (void) const;
52  const std::string& getInterfaceType (void) const;
53 
54  static std::string underscoreString (const std::string& str);
55 
56  private:
57  void extractSample ();
58  char checkAlarms (std::string& txBuffer);
59  void convertStringToBuffer (const std::string& inString, std::string& buffer, bool useDataType = false);
60 
61  FEVInterface* interface_;
62 
65  public:
66  const std::string channelName;
67  const std::string fullChannelName;
68  const std::string dataType;
69  const std::string transformation;
70 
71  private:
72  unsigned int sizeOfDataTypeBits_;
74  unsigned int sizeOfDataTypeBytes_, sizeOfReadBytes_;
75  unsigned int universalDataBitOffset_;
76  unsigned char txPacketSequenceNumber_;
77 
78  public:
79  const bool readAccess_, writeAccess_, monitoringEnabled;
80  const bool recordChangesOnly_;
81  const time_t delayBetweenSamples_;
82 
83  const bool saveEnabled_;
84  const std::string savePath_;
85  const std::string saveFileRadix_;
86  const bool saveBinaryFormat_;
87 
88  const bool alarmsEnabled_, latchAlarms_;
89 
90  private:
91  std::string universalReadValue_;
92  std::string universalAddress_;
93 
94  std::string sample_, lastSample_;
95  std::string lolo_, lo_, hi_, hihi_;
96  time_t lastSampleTime_;
97  bool loloAlarmed_, loAlarmed_, hiAlarmed_, hihiAlarmed_;
98 
99  const std::string saveFullFileName_;
100 
101  // clang-format on
102 };
103 
104 } // namespace ots
105 
106 #endif
void handleSample(const std::string &universalReadValue, std::string &txBuffer, FILE *fpAggregate=0, bool aggregateIsBinaryFormat=false, bool txBufferUsed=true)
FESlowControlsChannel(FEVInterface *interface, const std::string &channelName, const std::string &dataType, const std::string &universalAddress, const std::string &transformation, unsigned int universalDataBitOffset, bool readAccess, bool writeAccess, bool monitoringEnabled, bool recordChangesOnly, time_t delayBetweenSamples, bool saveEnabled, const std::string &savePath, const std::string &saveFileRadix, bool saveBinaryFormat, bool alarmsEnabled, bool latchAlarms, const std::string &lolo, const std::string &lo, const std::string &hi, const std::string &hihi)
static std::string underscoreString(const std::string &str)
void clearAlarms(int targetAlarm=-1)
default to all