Orion
high-rate readout
txcore.hpp
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include <cstdint>
8 #include <vector>
9 #include <mutex>
10 
11 #include "itk/types.hpp"
12 #include "itk/logger.hpp"
13 
14 
15 namespace hwc {
16 
21 class TxCore {
22 public:
23 
25  virtual ~TxCore() = default;
26 
29  virtual void init_send_data(netio_tag_t fid) = 0;
30 
36  virtual void send_data(netio_tag_t fid, const uint8_t* data, size_t size, bool flush = true) = 0;
37 
42  virtual void send_data(netio_tag_t fid,
43  const std::vector<const uint8_t*>& msgs, const std::vector<size_t>& sizes) = 0;
44 
50  virtual void send_data(const std::vector<netio_tag_t>& fids,
51  const uint8_t* data, size_t size, bool flush = true) = 0;
52 
57  virtual void send_data(const std::vector<netio_tag_t>& fids,
58  const std::vector<const uint8_t*>& msgs, const std::vector<size_t>& sizes) = 0;
59 
60  inline void send_data(netio_tag_t fid, std::span<const uint8_t> data, bool flush = true) {
61  send_data(fid, data.data(), data.size(), flush);
62  }
63  inline void send_data(const std::vector<netio_tag_t>& fids, std::span<const uint8_t> data, bool flush = true) {
64  send_data(fids, data.data(), data.size(), flush);
65  }
66 
69  virtual void write(uint16_t cmd) = 0;
70 
73  virtual void write(const std::span<const uint16_t> cmds) = 0;
74 
77  virtual void send(bool flush = true) = 0;
78 
81  virtual bool is_tx_empty() = 0;
82 
84  virtual void wait_tx_empty() = 0;
85 
88  virtual void write_idle(uint count = 1) = 0;
89 
92  virtual void tx_delay_cmd(uint32_t delay_cmd) = 0;
93 
96  virtual void tx_delay_ms(double delay_ms) = 0;
97 
99 
102  virtual std::string get_fe_type() = 0;
103 
106  virtual uint16_t get_idle_word() = 0;
107 
108 }; // TxCore
109 
110 } // hwc
Transmitter Core interface.
Definition: txcore.hpp:21
virtual void write(const std::span< const uint16_t > cmds)=0
Write commands in buffer.
virtual void send_data(const std::vector< netio_tag_t > &fids, const uint8_t *data, size_t size, bool flush=true)=0
Send data to list of fids.
virtual void init_send_data(netio_tag_t fid)=0
Initialize send_data for fid.
virtual uint16_t get_idle_word()=0
Get idle word.
virtual void write_idle(uint count=1)=0
Write 'idle' frames.
virtual void send_data(netio_tag_t fid, const std::vector< const uint8_t * > &msgs, const std::vector< size_t > &sizes)=0
Send messages.
virtual void send_data(const std::vector< netio_tag_t > &fids, const std::vector< const uint8_t * > &msgs, const std::vector< size_t > &sizes)=0
Send messages to list of fids.
virtual void send(bool flush=true)=0
Send accumulated buffer to output.
virtual std::string get_fe_type()=0
Properties.
virtual void write(uint16_t cmd)=0
Write command in buffer.
virtual void send_data(netio_tag_t fid, const uint8_t *data, size_t size, bool flush=true)=0
Send data to one fid.
virtual void tx_delay_ms(double delay_ms)=0
Delay in milliseconds.
virtual void wait_tx_empty()=0
Waits until the buffer is emptyю
virtual void tx_delay_cmd(uint32_t delay_cmd)=0
Delay in number of commands.
virtual bool is_tx_empty()=0
Check if TX buffer is empty.
virtual ~TxCore()=default
Default destructor.
uint16_t size
Definition: fragheader.hpp:5
Logger definitions.
Common types and constants definitions.