11 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
12 if (addr.size() != value.size()) {
13 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
15 auto _a = addr.begin();
16 auto _v = value.begin();
18 while (_a != addr.end() && _v != value.end()) {
19 res |= cmd_itf_->
write(*_a, *_v);
28 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
29 if (addr.size() != value.size()) {
30 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
32 auto _a = addr.begin();
33 auto _v = value.begin();
35 while (_a != addr.end() && _v != value.end()) {
36 res |= cmd_itf_->
read(*_a, *_v);
46 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
47 auto num = length / reg_len;
49 for (
int i=0;i<num;i++){
50 res |= cmd_itf_->
write(addr+reg_len*i, *(ptr+i));
52 if ((length - num*reg_len) > 0) {
54 memcpy(&last, ptr+num, length - num*reg_len);
55 res |= cmd_itf_->
write(addr+reg_len*num, last);
63 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
64 if (value ==
nullptr) {
65 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
67 auto ceil_num = (
nsuSize_t )std::ceil((
float )length/(float )reg_len);
69 for (
int i=0;i<ceil_num;i++){
70 res |= cmd_itf_->
read(addr+reg_len*i, buf+i);
72 memcpy(value, buf, length);
80 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
81 auto num = length / reg_len;
83 for (
int i=0;i<num;i++){
84 res |= cmd_itf_->
write(addr, *(ptr+i));
86 if ((length - num*reg_len) > 0) {
88 memcpy(&last, ptr+num, length - num*reg_len);
89 res |= cmd_itf_->
write(addr, last);
97 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
98 if (value ==
nullptr) {
99 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
101 auto ceil_num = (
nsuSize_t )std::ceil((
float )length/(float )reg_len);
103 memcpy(buf, value, length);
104 for (
int i=0;i<ceil_num;i++){
105 res |= cmd_itf_->
read(addr, buf+i);
113 static constexpr uint32_t DataPacketID = 0x31001001;
121 pack.
id = DataPacketID;
122 pack.
length = DataPacketSize;
124 memcpy(buf, &pack, DataPacketSize);
126 return DataPacketSize;
131 static constexpr uint32_t DataPacketID = 0x31001000;
132 static constexpr size_t DataPacketLength =
sizeof(
RegPack);
134 if (buf ==
nullptr) {
139 pack.
id = DataPacketID;
140 pack.
length = DataPacketLength;
144 memcpy(buf, &pack,
sizeof(
RegPack));
145 return DataPacketLength;
158 memcpy(&pack, r_head, 16);
161 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
168 if (buf ==
nullptr)
return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
171 auto res = cmd_itf_->
send_bytes(cmd_buf, len);
177 memcpy(&pack, r_head, 16);
180 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
183 if (res == nsukitStatus_t::NSUKIT_STATUS_SUCCESS) *buf = *(
nsuRegValue_t *)r_head;
189 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
190 if (addr.size() != value.size()) {
191 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
193 auto _a = addr.begin();
194 auto _v = value.begin();
196 while (_a != addr.end() && _v != value.end()) {
197 res |= cmd_itf_->
write(*_a, *_v);
205 auto res = nsukitStatus_t::NSUKIT_STATUS_SUCCESS;
206 if (addr.size() != value.size()) {
207 return nsukitStatus_t::NSUKIT_STATUS_INVALID_VALUE;
209 auto _a = addr.begin();
210 auto _v = value.begin();
212 while (_a != addr.end() && _v != value.end()) {
213 res |= cmd_itf_->
read(*_a, *_v);
222 auto padding_len = (
nsuRegValue_t)(std::ceil((
float )length/(
float )reg_len)*(float)reg_len);
223 RegPack head = {0x5F5F5F5F, 0x31001010, 0x00000000, padding_len+6*4, addr, padding_len};
225 memcpy(buf, &head,
sizeof(
RegPack));
226 memcpy(buf+
sizeof(
RegPack), value, length);
227 if (padding_len > length) memset(buf+
sizeof(
RegPack)+length, 0, padding_len-length);
234 memcpy(&head, r_head, 16);
237 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
244 auto padding_len = (
nsuRegValue_t)(std::ceil((
float )length/(
float )reg_len)*(float)reg_len);
245 RegPack head = {0x5F5F5F5F, 0x31001011, 0x00000000, 24, addr, padding_len};
251 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
254 memcpy(value, buf+4*20, padding_len);
261 auto padding_len = (
nsuRegValue_t)(std::ceil((
float )length/(
float )reg_len)*(float)reg_len);
262 RegPack head = {0x5F5F5F5F, 0x31001020, 0x00000000, padding_len+6*4, addr, padding_len};
264 memcpy(buf, &head,
sizeof(
RegPack));
265 memcpy(buf+
sizeof(
RegPack), value, length);
266 if (padding_len > length) memset(buf+
sizeof(
RegPack)+length, 0, padding_len-length);
273 memcpy(&head, r_head, 16);
276 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
284 auto padding_len = (
nsuRegValue_t)(std::ceil((
float )length/(
float )reg_len)*(float)reg_len);
285 RegPack head = {0x5F5F5F5F, 0x31001021, 0x00000000, 24, addr, padding_len};
291 res |= nsukitStatus_t::NSUKIT_STATUS_ITF_FAIL;
294 memcpy(value, buf+20, padding_len);
virtual nsukitStatus_t recv_bytes(nsuSize_t size, nsuCharBuf_p buf)
virtual nsukitStatus_t write(nsuRegAddr_t addr, nsuRegValue_t value)
virtual nsukitStatus_t send_bytes(nsuBytes_t &bytes)
virtual nsukitStatus_t read(nsuRegAddr_t addr, nsuRegValue_t *buf)
nsukitStatus_t multi_write(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t > &value)
nsukitStatus_t multi_read(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t * > &value)
nsukitStatus_t increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t increment_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
static nsuSize_t _fmt_reg_write(nsuRegAddr_t reg, nsuRegValue_t value, nsuCharBuf_p buf)
nsukitStatus_t _common_read(nsuRegAddr_t reg, nsuRegValue_t *buf)
nsukitStatus_t multi_read(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t * > &value)
nsukitStatus_t multi_write(std::vector< nsuRegAddr_t > &addr, std::vector< nsuRegValue_t > &value)
nsukitStatus_t loop_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t loop_read(nsuRegAddr_t addr, nsuSize_t length, nsuVoidBuf_p value, nsuSize_t reg_len=NSU_REG_BWIDTH)
nsukitStatus_t _common_write(nsuRegAddr_t reg, nsuRegValue_t value)
static nsuSize_t _fmt_reg_read(nsuRegAddr_t reg, nsuCharBuf_p buf)
nsukitStatus_t increment_write(nsuRegAddr_t addr, nsuVoidBuf_p value, nsuSize_t length, nsuSize_t reg_len=NSU_REG_BWIDTH)
#define DEBUG_PRINT_CLASS(message)
DLLEXTERN typedef size_t nsuSize_t
DLLEXTERN typedef void * nsuVoidBuf_p
DLLEXTERN typedef char * nsuCharBuf_p
DLLEXTERN typedef uint32_t nsuRegValue_t
DLLEXTERN typedef uint32_t nsuRegAddr_t