|
@ -154,6 +154,20 @@ void ZCanHost::initialize(string can_if_name, int baudrate, bool enablLoopback) |
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(ms)); |
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(ms)); |
|
|
return true; |
|
|
return true; |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
m_cmdMap["call"] = [this](int argc, char** argv, string& retval) { |
|
|
|
|
|
if (argc == 1 + 1) { |
|
|
|
|
|
call(atoi(argv[1])); |
|
|
|
|
|
return true; |
|
|
|
|
|
} else if (argc == 2 + 1) { |
|
|
|
|
|
call(atoi(argv[1]), atoi(argv[2])); |
|
|
|
|
|
return true; |
|
|
|
|
|
} else if (argc == 3 + 1) { |
|
|
|
|
|
call(atoi(argv[1]), atoi(argv[2]), atoi(argv[3])); |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
static void prase_cmd(char* input, int inputlen, int& argc, char* argv[]) { |
|
|
static void prase_cmd(char* input, int inputlen, int& argc, char* argv[]) { |
|
@ -440,3 +454,31 @@ int32_t ZCanHost::hpp272_read_c1000(int sensorid, hpp272_data_t& value) { |
|
|
memcpy(&value, &rx->data[2], sizeof(hpp272_data_t)); |
|
|
memcpy(&value, &rx->data[2], sizeof(hpp272_data_t)); |
|
|
return 0; |
|
|
return 0; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int32_t ZCanHost::call(int32_t cmdid, int32_t* val0, int32_t nval) { |
|
|
|
|
|
shared_ptr<ZCanReceiverCMD> cmd = make_shared<ZCanReceiverCMD>(); |
|
|
|
|
|
cmd->cmdid = cmdid; |
|
|
|
|
|
cmd->subcmdid = 0; |
|
|
|
|
|
int32_t* p = (int32_t*)&cmd->data[0]; |
|
|
|
|
|
for (int i = 0; i < nval; i++) { |
|
|
|
|
|
p[i] = val0[i]; |
|
|
|
|
|
} |
|
|
|
|
|
cmd->len = 4 * nval; |
|
|
|
|
|
|
|
|
|
|
|
auto rx = m_zcanReceiverHost->sendcmdblock(cmd, 100); |
|
|
|
|
|
if (!rx) { |
|
|
|
|
|
return err::zecode(err::knoack); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (rx->packetType == kpt_error_ack) { |
|
|
|
|
|
logger->error("call error ack,{}", *zuint16p(&rx->data[0])); |
|
|
|
|
|
return err::zecode(err::kfail); |
|
|
|
|
|
} |
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
int32_t ZCanHost::call(int32_t cmdid) { return call(cmdid, (int32_t*)nullptr, 0); } |
|
|
|
|
|
int32_t ZCanHost::call(int32_t cmdid, int32_t val0) { return call(cmdid, &val0, 1); } |
|
|
|
|
|
int32_t ZCanHost::call(int32_t cmdid, int32_t val0, int32_t val1) { |
|
|
|
|
|
int32_t val[2] = {val0, val1}; |
|
|
|
|
|
return call(cmdid, val, 2); |
|
|
|
|
|
} |