μHAL
trigger_iface.h
1#ifndef TRIGGER_IFACE_H
2#define TRIGGER_IFACE_H
3
4#include <memory>
5#include <optional>
6#include <vector>
7
8#include "controllers.h"
9#include "decoders.h"
10
11namespace trigger_iface {
12
13/* forward declaration */
14struct trigger_iface_regs;
15
16class Core: public RegisterDecoder {
17 std::unique_ptr<struct trigger_iface_regs> regs_storage;
18 struct trigger_iface_regs &regs;
19
20 void decode() override;
21
22 public:
23 Core(struct pcie_bars &);
24 ~Core();
25};
26
28 protected:
29 std::unique_ptr<struct trigger_iface_regs> regs_storage;
30 struct trigger_iface_regs &regs;
31
32 void encode_params() override;
33
34 public:
35 Controller(struct pcie_bars &);
37
38 void write_params() override;
39
40 struct parameters {
41 /* rcv_count_rst and transm_count_rst are cleared automatically */
42 std::optional<bool> direction, direction_polarity, rcv_count_rst, transm_count_rst;
43 std::optional<uint8_t> rcv_len, transm_len;
44 };
45 std::vector<struct parameters> parameters;
46};
47
48} /* namespace trigger_iface */
49
50#endif
Definition: controllers.h:7
Definition: decoders.h:97
Definition: trigger_iface.h:27
void write_params() override
Definition: trigger_iface.cc:92
void encode_params() override
Definition: trigger_iface.cc:74
Definition: trigger_iface.h:16
void decode() override
Definition: trigger_iface.cc:45
Definition: pcie-defs.h:19
Definition: trigger_iface.h:40
Definition: trigger_iface.cc:24