tdaq-develop-2025-02-12
ROCCosmicRayVetoInterface.h
1 #ifndef _ots_ROCCosmicRayVetoInterface_h_
2 #define _ots_ROCCosmicRayVetoInterface_h_
3 
4 #include <sstream>
5 #include <string>
6 // #include "ROC_Registers.h"
7 #include "dtcInterfaceLib/DTC.h"
8 #include "otsdaq-mu2e/ROCCore/ROCCoreVInterface.h"
9 
10 namespace ots
11 {
12 
13 class ROCCosmicRayVetoInterface : public ROCCoreVInterface
14 {
15  // clang-format off
16 public:
17  ROCCosmicRayVetoInterface(const std::string &rocUID,
18  const ConfigurationTree &theXDAQContextConfigTree,
19  const std::string &interfaceConfigurationPath);
20 
22 
23  // state machine
24  //----------------
25  void configure (void) override;
26  void halt (void) override;
27  void pause (void) override;
28  void resume (void) override;
29  void start (std::string runNumber) override;
30  void stop (void) override;
31  bool running (void) override;
32 
33  // write and read to registers
34  //virtual void writeROCRegister (uint16_t address, uint16_t data_to_write) override;
35  //virtual uint16_t readROCRegister (uint16_t address) override;
36  virtual void writeEmulatorRegister (uint16_t address, uint16_t data_to_write) override;
37  virtual uint16_t readEmulatorRegister (uint16_t address) override;
38 
39  //virtual void readROCBlock (std::vector<uint16_t>& data, uint16_t address, uint16_t numberOfReads, bool incrementAddress) override { }
40  //virtual void readEmulatorBlock (std::vector<uint16_t>& data, uint16_t address, uint16_t numberOfReads, bool incrementAddress) override { }
41 
42 
43  // specific ROC functions
44  //virtual int readTimestamp (void) ;
45  //virtual void writeDelay (uint16_t delay) override; // 5ns steps
46  //virtual int readDelay (void) override; // 5ns steps
47 
48  //virtual int readDTCLinkLossCounter (void) override;
49  //virtual void resetDTCLinkLossCounter (void) override;
50 
51  // CRV ROC specific functions
52  void Reset();
53  void RocConfigure(bool gr=false);
54  void ResetTxBuffers();
55 
56 public:
57  void DoTheCRV_Dance (__ARGS__);
58  void GetFirmwareVersion (__ARGS__);
59  void GetTestCounter (__ARGS__);
60  void SetTestCounter (__ARGS__);
61  void HardReset (__ARGS__);
62  void SoftReset (__ARGS__);
63  void RocConfigure (__ARGS__);
64  void GetStatus (__ARGS__);
65  void FiberRx (__ARGS__);
66  void FiberTx (__ARGS__);
67  void SetLoopbackMode (__ARGS__);
68  // clang-format on
69 };
70 
71 } // namespace ots
72 
73 #endif