134 std::vector<uint8_t> dat;
135 dat.assign(Buf,Buf+*Len);
136 if(*Len == 9 && *Buf == 1){
140 uint8_t cmd = dat[1];
141 uint8_t addr = dat[2];
143 if(dat[dat.size()-1] !=
crc){
150 uint8_t rpl[4] = {2,1,0x64,0x94};
152 uint32_t bufI =
drv->readReg(addr);
155 std::vector<uint8_t> rx_data;
157 rx_data.insert(rx_data.begin(), &rpl[0],&rpl[4]);
158 rx_data.insert(rx_data.end(),buf, buf+4);
159 rx_data.push_back(
checksum(&rx_data,8));
160 sendCdc((
char*)rx_data.data(), 9);
162 }
else if(cmd == 146){
166 drv->writeReg(addr,__REV(ndat));
167 std::vector<uint8_t> repl({2,1,0x64,0x92,dat[3],dat[4],dat[5],dat[6]});
169 sendCdc((
char*)repl.data(), 9);
170 }
else if(cmd == 143){
171 std::vector<uint8_t> repl(8,0);
173 repl.assign({2,1,40,0x8f,0,0,0,2});
175 repl.assign({2,1,40,0x8f,2,6,2,2});
178 sendCdc((
char*)repl.data(), 9);
180 std::vector<uint8_t> repl({2,1,64,0x0A,0,0,0,0});
187 sendCdc((
char*)repl.data(), 9);
188 }
else if(cmd == 0x0F){
189 std::vector<uint8_t> repl({2,1,64,0x0F,0,0,0,0});
193 repl[6] = (v>>8) & 0xff;
196 sendCdc((
char*)repl.data(), 9);
197 }
else if(cmd == 0x88){
198 char version[9] = {2,
'0',
'0',
'1',
'5',
'V',
'3',
'0',
'7'};
203 uint32_t tmpVal = (uint8_t) version[1] -
'0';
204 std::vector<uint8_t> repl = {2,0x01,0x64,0x88,0x00,0,0,0};
206 tmpVal += (uint8_t) version[2] -
'0';
210 tmpVal = (uint8_t) version[3] -
'0';
212 tmpVal += (uint8_t) version[4] -
'0';
216 repl[6] = (uint8_t) version[6] -
'0';
219 tmpVal = (uint8_t) version[7] -
'0';
221 tmpVal += (uint8_t) version[8] -
'0';
224 sendCdc((
char*)repl.data(), 9);
virtual void cdcRcv(char *Buf, uint32_t *Len)