NSUKit 1.4.0
板卡级统一交互接口
载入中...
搜索中...
未找到
base_itf.h
浏览该文件的文档.
1//
2// Created by 56585 on 2023/8/14.
3//
4
5#ifndef NSUKIT_BASE_ITF_H
6#define NSUKIT_BASE_ITF_H
7
8#include "base/base_kit.h"
9
10
11namespace nsukit {
16 public:
18 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
19 }
20
22 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
23 }
24 };
25
26
28 friend class RegOperationMixin;
29
30 public:
31 virtual ~U_Interface() = default;
32
33 virtual nsukitStatus_t accept(nsuInitParam_t *param) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
34
35 virtual nsukitStatus_t close() { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
36
37 virtual nsukitStatus_t set_timeout(float s) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
38 };
39
40
42 public:
44 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
45 };
46
48 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
49 };
50
51 virtual nsukitStatus_t multi_write(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t> &value) {
52 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
53 }
54
55 virtual nsukitStatus_t multi_read(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t *> &value) {
56 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
57 }
58
59 virtual nsukitStatus_t
61 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
62 }
63
64 virtual nsukitStatus_t
66 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
67 }
68
69 virtual nsukitStatus_t
71 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
72 }
73
74 virtual nsukitStatus_t
76 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
77 }
78 };
79
80
82 public:
83 U_BaseCmdMixin *mixin_ = nullptr;
84
85 virtual nsukitStatus_t send_bytes(nsuBytes_t &bytes) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
86
87 virtual nsukitStatus_t send_bytes(nsuCharBuf_p bytes, nsuSize_t length) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
88
89 virtual nsukitStatus_t
90 recv_bytes(nsuSize_t size, nsuCharBuf_p buf) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
91
93 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
94 }
95
97 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
98 }
99
100 nsukitStatus_t multi_write(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t> &value) {
101 if (mixin_== nullptr) {
102 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
103 }
104 return mixin_->multi_write(addr, value);
105 }
106
107 nsukitStatus_t multi_read(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t *> &value) {
108 if (mixin_== nullptr) {
109 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
110 }
111 return mixin_->multi_read(addr, value);
112 }
113
116 if (mixin_== nullptr) {
117 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
118 }
119 return mixin_->increment_write(addr, value, length, reg_len);
120 }
121
124 if (mixin_== nullptr) {
125 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
126 }
127 return mixin_->increment_read(addr, length, value, reg_len);
128 }
129
132 if (mixin_== nullptr) {
133 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
134 }
135 return mixin_->loop_write(addr, value, length, reg_len);
136 }
137
140 if (mixin_== nullptr) {
141 return nsukitStatus_t::NSUKIT_STATUS_MISMATCH_MIXIN;
142 }
143 return mixin_->loop_read(addr, length, value, reg_len);
144 }
145 };
146
147
149 private:
150 I_BaseCmdUItf *cmd_itf_;
151 public:
152 explicit Mixin_NativeRegCmd(I_BaseCmdUItf* base) : cmd_itf_(base) {};
153
154 nsukitStatus_t multi_write(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t> &value);
155
156 nsukitStatus_t multi_read(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t *> &value);
157
159 increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len = NSU_REG_BWIDTH);
160
162 increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len = NSU_REG_BWIDTH);
163
165 loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len = NSU_REG_BWIDTH);
166
168 loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len = NSU_REG_BWIDTH);
169 };
170
171
173 private:
174 I_BaseCmdUItf *cmd_itf_;
175 protected:
176 struct RegPack {
177 uint32_t head = 0x5F5F5F5F;
178 uint32_t id = 0;
179 uint32_t num = 0x00000000;
180 uint32_t length = 20;
181 uint32_t addr = 0;
182 uint32_t value = 0;
183 };
184
185 static nsuSize_t _fmt_reg_read(nsuRegAddr_t reg, nsuCharBuf_p buf);
186
194 static nsuSize_t _fmt_reg_write(nsuRegAddr_t reg, nsuRegValue_t value, nsuCharBuf_p buf);
195
196 public:
197 explicit Mixin_VirtualRegCmd(I_BaseCmdUItf* base) : cmd_itf_(base) {};
198
199 nsukitStatus_t _common_write(nsuRegAddr_t reg, nsuRegValue_t value);
200
201 nsukitStatus_t _common_read(nsuRegAddr_t reg, nsuRegValue_t *buf);
202
203 nsukitStatus_t multi_write(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t> &value);
204
205 nsukitStatus_t multi_read(std::vector<nsuRegAddr_t> &addr, std::vector<nsuRegValue_t *> &value);
206
208 increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len = NSU_REG_BWIDTH);
209
211 increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len = NSU_REG_BWIDTH);
212
214 loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len = NSU_REG_BWIDTH);
215
217 loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len = NSU_REG_BWIDTH);
218 };
219
220
225 public:
226 virtual nsuMemory_p alloc_buffer(nsuStreamLen_t length, nsuVoidBuf_p buf= nullptr) { return 0; }
227
228 virtual nsukitStatus_t free_buffer(nsuMemory_p fd) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
229
230 virtual nsuVoidBuf_p get_buffer(nsuMemory_p fd, nsuStreamLen_t length) { return nullptr; }
231
232 virtual nsukitStatus_t
234 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
235 }
236
237 virtual nsukitStatus_t
239 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
240 }
241
242 virtual nsukitStatus_t wait_stream(nsuMemory_p fd, float timeout = 1.) {
243 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
244 }
245
246 virtual nsukitStatus_t break_stream(nsuMemory_p fd) { return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD; }
247
248 virtual nsukitStatus_t
250 bool(*stop_event) () = nullptr, float timeout = 5., int flag = 1) {
251 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
252 }
253
254 virtual nsukitStatus_t
256 bool(*stop_event) () = nullptr, float timeout = 5., int flag = 1) {
257 return nsukitStatus_t::NSUKIT_STATUS_NEED_RELOAD;
258 }
259 };
260
261}
262
263#endif //NSUKIT_BASE_ITF_H
virtual nsukitStatus_t send_bytes(nsuCharBuf_p bytes, nsuSize_t length)
Definition: base_itf.h:87
nsukitStatus_t multi_write(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t > &value)
Definition: base_itf.h:100
virtual nsukitStatus_t recv_bytes(nsuSize_t size, nsuCharBuf_p buf)
Definition: base_itf.h:90
virtual nsukitStatus_t write(nsuRegAddr_t addr, nsuRegValue_t value)
Definition: base_itf.h:92
nsukitStatus_t loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:131
nsukitStatus_t loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:139
virtual nsukitStatus_t send_bytes(nsuBytes_t &bytes)
Definition: base_itf.h:85
virtual nsukitStatus_t read(nsuRegAddr_t addr, nsuRegValue_t *buf)
Definition: base_itf.h:96
nsukitStatus_t increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:123
nsukitStatus_t increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:115
nsukitStatus_t multi_read(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t * > &value)
Definition: base_itf.h:107
virtual nsuVoidBuf_p get_buffer(nsuMemory_p fd, nsuStreamLen_t length)
Definition: base_itf.h:230
virtual nsukitStatus_t break_stream(nsuMemory_p fd)
Definition: base_itf.h:246
virtual nsuMemory_p alloc_buffer(nsuStreamLen_t length, nsuVoidBuf_p buf=nullptr)
Definition: base_itf.h:226
virtual nsukitStatus_t free_buffer(nsuMemory_p fd)
Definition: base_itf.h:228
virtual nsukitStatus_t open_recv(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset=0)
Definition: base_itf.h:238
virtual nsukitStatus_t stream_recv(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset=0, bool(*stop_event)()=nullptr, float timeout=5., int flag=1)
Definition: base_itf.h:249
virtual nsukitStatus_t stream_send(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset=0, bool(*stop_event)()=nullptr, float timeout=5., int flag=1)
Definition: base_itf.h:255
virtual nsukitStatus_t open_send(nsuChnlNum_t chnl, nsuMemory_p fd, nsuStreamLen_t length, nsuStreamLen_t offset=0)
Definition: base_itf.h:233
virtual nsukitStatus_t wait_stream(nsuMemory_p fd, float timeout=1.)
Definition: base_itf.h:242
Mixin_NativeRegCmd(I_BaseCmdUItf *base)
Definition: base_itf.h:152
Mixin_VirtualRegCmd(I_BaseCmdUItf *base)
Definition: base_itf.h:197
virtual nsukitStatus_t reg_write(nsuRegAddr_t addr, nsuRegValue_t value)
Definition: base_itf.h:17
virtual nsukitStatus_t reg_read(nsuRegAddr_t addr, nsuRegValue_t *buf)
Definition: base_itf.h:21
virtual nsukitStatus_t increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:65
virtual nsukitStatus_t increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:60
virtual nsukitStatus_t loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:75
virtual nsukitStatus_t multi_write(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t > &value)
Definition: base_itf.h:51
virtual nsukitStatus_t loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
Definition: base_itf.h:70
virtual nsukitStatus_t _common_write(nsuRegAddr_t reg, nsuRegValue_t value)
Definition: base_itf.h:43
virtual nsukitStatus_t _common_read(nsuRegAddr_t reg, nsuRegValue_t *buf)
Definition: base_itf.h:47
virtual nsukitStatus_t multi_read(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t * > &value)
Definition: base_itf.h:55
virtual nsukitStatus_t close()
Definition: base_itf.h:35
virtual nsukitStatus_t accept(nsuInitParam_t *param)
Definition: base_itf.h:33
virtual nsukitStatus_t set_timeout(float s)
Definition: base_itf.h:37
virtual ~U_Interface()=default
#define NSU_REG_BWIDTH
Definition: config.h:39
DLLEXTERN typedef nsuSize_t nsuStreamLen_t
Definition: type.h:88
nsukitStatus_t
Definition: type.h:53
DLLEXTERN typedef size_t nsuSize_t
Definition: type.h:87
DLLEXTERN typedef void * nsuVoidBuf_p
Definition: type.h:83
#define NSU_DLLEXPORT
Definition: type.h:18
DLLEXTERN typedef void * nsuMemory_p
Definition: type.h:86
DLLEXTERN typedef char * nsuCharBuf_p
Definition: type.h:82
DLLEXTERN typedef std::vector< char > nsuBytes_t
Definition: type.h:81
DLLEXTERN typedef uint32_t nsuRegValue_t
Definition: type.h:90
DLLEXTERN typedef uint8_t nsuChnlNum_t
Definition: type.h:85
DLLEXTERN typedef uint32_t nsuRegAddr_t
Definition: type.h:89