|
|
@ -8,6 +8,8 @@ using namespace iflytop; |
|
|
|
|
|
|
|
#define TAG "IflytopCanbusMaster"
|
|
|
|
|
|
|
|
#define DEFUALT_OVERTIME 30
|
|
|
|
|
|
|
|
IflytopCanbusMaster *IflytopCanbusMaster::ins() { |
|
|
|
static IflytopCanbusMaster *ins = new IflytopCanbusMaster(); |
|
|
|
return ins; |
|
|
@ -211,23 +213,43 @@ void IflytopCanbusMaster::callcmd3(int32_t device_id, int32_t cmdid, int32_t par |
|
|
|
param[2] = param2; |
|
|
|
callcmd(device_id, cmdid, (uint8_t *)param, 12, overtime); |
|
|
|
} |
|
|
|
void IflytopCanbusMaster::callcmd4(int32_t to, int32_t cmdid, int32_t param0, int32_t param1, int32_t param2, int32_t param3, int32_t overtime) { |
|
|
|
int32_t param[4]; |
|
|
|
param[0] = param0; |
|
|
|
param[1] = param1; |
|
|
|
param[2] = param2; |
|
|
|
param[3] = param3; |
|
|
|
callcmd(to, cmdid, (uint8_t *)param, 16, overtime); |
|
|
|
} |
|
|
|
|
|
|
|
void IflytopCanbusMaster::sendraw(int32_t from, int32_t to, uint8_t *data, size_t len) { sendframe(from, to, data, len); } |
|
|
|
|
|
|
|
ack_read_board_info_data_t IflytopCanbusMaster::readboardinfo(int to) { |
|
|
|
ack_read_board_info_data_t ack; |
|
|
|
callcmd0(to, kcmd_read_board_info, 100); |
|
|
|
callcmd0(to, kcmd_read_board_info, DEFUALT_OVERTIME); |
|
|
|
memcpy(&ack, m_receipt_frame->params, sizeof(ack)); |
|
|
|
return ack; |
|
|
|
} |
|
|
|
ack_sysinfo_t IflytopCanbusMaster::readsysinfo(int to) { |
|
|
|
ack_sysinfo_t ack; |
|
|
|
callcmd0(to, kcmd_read_sysinfo, 100); |
|
|
|
callcmd0(to, kcmd_read_sysinfo, DEFUALT_OVERTIME); |
|
|
|
memcpy(&ack, m_receipt_frame->params, sizeof(ack)); |
|
|
|
return ack; |
|
|
|
} |
|
|
|
ask_taskinfo_t IflytopCanbusMaster::readtaskinfo(int to, int32_t taskoff) { |
|
|
|
ask_taskinfo_t ack; |
|
|
|
callcmd1(to, kcmd_read_taskinfo, taskoff, 100); |
|
|
|
callcmd1(to, kcmd_read_taskinfo, taskoff, DEFUALT_OVERTIME); |
|
|
|
memcpy(&ack, m_receipt_frame->params, sizeof(ack)); |
|
|
|
return ack; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void IflytopCanbusMaster::pump_rotate(int boardid, int subid, int rpm) { callcmd2(boardid, kcmd_pump_rotate, subid, rpm, DEFUALT_OVERTIME); } |
|
|
|
void IflytopCanbusMaster::pump_stop(int boardid, int subid) { callcmd1(boardid, kcmd_pump_stop, subid, DEFUALT_OVERTIME); } |
|
|
|
void IflytopCanbusMaster::pump_set_ihold_irun_idelay(int boardid, int subid, int ihold, int irun, int idelay) { callcmd4(boardid, kcmd_pump_set_ihold_irun_idelay, subid, irun, ihold, idelay, DEFUALT_OVERTIME); } |
|
|
|
void IflytopCanbusMaster::pump_set_acc(int boardid, int subid, int acc) { callcmd2(boardid, kcmd_pump_set_acc, subid, acc, DEFUALT_OVERTIME); } |
|
|
|
|
|
|
|
void IflytopCanbusMaster::pump_set_subic_reg(int boardid, int subid, int regadd, int val) { callcmd3(boardid, kcmd_pump_set_subic_reg, subid, regadd, val, DEFUALT_OVERTIME); } |
|
|
|
int IflytopCanbusMaster::pump_get_subic_reg(int boardid, int subid, int regadd) { |
|
|
|
callcmd2(boardid, kcmd_pump_get_subic_reg, subid, regadd, DEFUALT_OVERTIME); |
|
|
|
return *(int32_t *)m_receipt_frame->params; |
|
|
|
} |