Orion
high-rate readout
emulator.hpp
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include <cstdint>
8 #include <span>
9 #include <functional>
10 
11 namespace itk::itkpix::emu {
12 
13 namespace intf {
14 
21 class Emulator {
22 public:
23 
25  virtual ~Emulator() = default;
26 
28  virtual void reset() = 0;
29 
31  virtual void send_cmds(const std::span<const uint16_t> cmds) = 0;
32 
33  typedef std::function<void(const uint64_t* data, size_t size)> OnDataCallback;
34  typedef std::function<void(const uint64_t data)> OnServiceCallback;
35 
38  virtual void callback_on_data(OnDataCallback on_data) = 0;
39 
42  virtual void callback_on_service(OnServiceCallback on_service) = 0;
43 
44 }; // Emulator
45 
46 } // intf
47 
48 
49 namespace concepts {
50 
58 template<typename T>
59 concept Emulator =
62  std::constructible_from<T, uint8_t> and
63 
65  std::destructible<T> and
66 
68  requires(T self) {
69  { self.reset() } -> std::same_as<void>;
70  } and
71 
74  requires(T self, const std::span<const uint16_t> cmds) {
75  { self.send_cmds(cmds) } -> std::same_as<void>;
76  } and
77 
80  requires(T self, std::function<void(const uint64_t* data, size_t size)> on_data) {
81  { self.callback_on_data(on_data) } -> std::same_as<void>;
82  } and
83 
86  requires(T self, std::function<void(const uint64_t data)> on_service) {
87  { self.callback_on_service(on_service) } -> std::same_as<void>;
88  };
89 
90 }; // concepts
91 
92 } // itk::itkpix::emu
Emulator interface on downlink/uplink streams level. downlink provided as 16-bit command frames uplin...
Definition: emulator.hpp:21
virtual ~Emulator()=default
Destructor.
virtual void reset()=0
Reset emulator.
virtual void send_cmds(const std::span< const uint16_t > cmds)=0
Send commands.
virtual void callback_on_data(OnDataCallback on_data)=0
Set on_data callback.
virtual void callback_on_service(OnServiceCallback on_service)=0
Set on_service callback.
concept Emulator
Emulator interface on downlink/uplink streams level. Downlink is represented as 16-bit command frames...
Definition: emulator.hpp:59
uint16_t size
Definition: fragheader.hpp:5