|
|
@ -137,13 +137,13 @@ int32_t ZCanCommnaderMaster::sendCmdAndReceiveBuf(int32_t cmdid, int32_t subModu |
|
|
|
int32_t errocode = 0; |
|
|
|
regListener(cmdheader->packetindex, [this, &rxdataIsReady, &ack, &rxsize, &errocode](CanPacketRxBuffer *report) { |
|
|
|
if (report->get_cmdheader()->packetType == kptv2_error_ack) { |
|
|
|
auto *error_ack = report->get_data_as<int32_t>(); |
|
|
|
auto *error_ack = report->get_param_as<int32_t>(); |
|
|
|
errocode = *error_ack; |
|
|
|
} else if (*rxsize < report->get_datalen()) { |
|
|
|
} else if (*rxsize < report->get_params_len()) { |
|
|
|
errocode = err::kbuffer_not_enough; |
|
|
|
} else { |
|
|
|
*rxsize = report->get_datalen(); |
|
|
|
memcpy(ack, report->get_data(), *rxsize); |
|
|
|
*rxsize = report->get_params_len(); |
|
|
|
memcpy(ack, report->get_params(), *rxsize); |
|
|
|
} |
|
|
|
rxdataIsReady = true; |
|
|
|
}); |
|
|
@ -192,12 +192,12 @@ int32_t ZCanCommnaderMaster::sendCmd(int32_t cmdid, int32_t subModuleid, int32_t |
|
|
|
regListener(cmdheader->packetindex, [this, &rxdataIsReady, &ack, &nack, &errocode](CanPacketRxBuffer *report) { |
|
|
|
// ZLOGI(TAG, "....................................");
|
|
|
|
if (report->get_cmdheader()->packetType == kptv2_error_ack) { |
|
|
|
auto *error_ack = report->get_data_as<int32_t>(); |
|
|
|
auto *error_ack = report->get_param_as<int32_t>(); |
|
|
|
errocode = *error_ack; |
|
|
|
// ZLOGI(TAG, "error_ack %d %s", *error_ack, err::error2str(*error_ack));
|
|
|
|
} else { |
|
|
|
// ZLOGI(TAG, "%d %d", report->get_datalen(), nack);
|
|
|
|
int32_t *rxbuf = report->get_data_as<int32_t>(); |
|
|
|
int32_t *rxbuf = report->get_param_as<int32_t>(); |
|
|
|
if (ack != nullptr && nack != 0) { |
|
|
|
for (size_t i = 0; i < nack; i++) { |
|
|
|
// ZLOGI(TAG, "ack[%d] = %d", i, rxbuf[i]);
|
|
|
@ -267,7 +267,7 @@ void ZCanCommnaderMaster::callListener(CanPacketRxBuffer *report) { |
|
|
|
uint16_t index = report->get_cmdheader()->packetindex; |
|
|
|
|
|
|
|
if (m_rawpacketcb) { |
|
|
|
m_rawpacketcb(report->get_data(), report->get_datalen()); |
|
|
|
m_rawpacketcb(report->get_rx_raw(), report->get_rx_raw_len()); |
|
|
|
} |
|
|
|
|
|
|
|
if (report->get_cmdheader()->packetType == kptv2_ack || report->get_cmdheader()->packetType == kptv2_error_ack) { |
|
|
@ -279,7 +279,7 @@ void ZCanCommnaderMaster::callListener(CanPacketRxBuffer *report) { |
|
|
|
} |
|
|
|
|
|
|
|
if (report->get_cmdheader()->packetType == kptv2_event) { |
|
|
|
if (m_on_event) m_on_event(report->id, report->get_cmdheader(), report->get_datalen()); |
|
|
|
if (m_on_event) m_on_event(report->id, report->get_cmdheader(), report->get_params_len()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|