Orion
high-rate readout
elink_client.hpp
1 // e-link interface
2 
3 #pragma once
4 
5 #include "<span>"
6 
7 namespace itk::lpgbt {
8 
9 class ElinkClient {
10 public:
11 
12  virtual ~ElinkClient() = default;
13 
14  // tx core
15  virtual void connect(netio_tag_t tx_fid);
16  virtual void disconnect();
17 
18  // rx core
19  virtual void subscribe(netio_tag_t rx_fid);
20  virtual void unsubscribe();
21 
22  virtual void send_data(const std::span<uint8_t> data, bool flush = true) = 0;
23  virtual void on_data(const std::span<uint8_t> data) = 0;
24 
25  // properties
26  virtual netio_tag_t get_tx_fid() = 0;
27  virtual netio_tag_t get_rx_fid() = 0;
28 
29 }; // ElinkClient
30 
31 } // itk::lpgbt