μ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
22public:
23 Core(struct pcie_bars &);
24 ~Core();
25};
26
28protected:
29 std::unique_ptr<struct trigger_iface_regs> regs_storage;
30 struct trigger_iface_regs &regs;
31
32 void encode_params() override;
33
34public:
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,
43 transm_count_rst;
44 std::optional<uint8_t> rcv_len, transm_len;
45 };
46 std::vector<struct parameters> parameters;
47};
48
49} /* namespace trigger_iface */
50
51#endif
Definition: controllers.h:7
Definition: decoders.h:97
Definition: trigger_iface.h:27
void write_params() override
Definition: trigger_iface.cc:111
void encode_params() override
Definition: trigger_iface.cc:82
Definition: trigger_iface.h:16
void decode() override
Definition: trigger_iface.cc:49
Definition: pcie-defs.h:19
Definition: trigger_iface.h:40
Definition: trigger_iface.cc:22