Обновление
This commit is contained in:
parent
30eda237ed
commit
8b103fc1dd
|
|
@ -7,6 +7,7 @@
|
|||
#include "AsciiStringAssmeblingUtils.h"
|
||||
#include "SystemMutexCmsis.h"
|
||||
#include "CanPorts.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#define LOG_SIGN "CAN_XCP"
|
||||
#define LOGGER env->logger
|
||||
|
|
@ -215,7 +216,8 @@ static uint8_t XCP_COMMAND_UPLOAD_245(tCanSerialPortFrameXCP *env) {
|
|||
for (uint8_t i = 0; i < fullBlock; ++i) {
|
||||
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), request->COUNT);
|
||||
env->ADR_MTA += 7;
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP,
|
||||
PROTOCOL_CAN_TYPE_XCP,
|
||||
1000);
|
||||
}
|
||||
|
||||
|
|
@ -1069,6 +1071,45 @@ const xcp_func_ptr fXcp_func_ptr[256] = {
|
|||
XCP_COMMAND_CONNECT_255
|
||||
};
|
||||
|
||||
void PrintfDebug(char *str, uint8_t *data, uint8_t dlc) {
|
||||
|
||||
switch (dlc) {
|
||||
|
||||
case 0:
|
||||
sprintf(str, " ");
|
||||
break;
|
||||
case 1:
|
||||
sprintf(str, "0x%02X", data[0]);
|
||||
break;
|
||||
case 2:
|
||||
sprintf(str, "0x%02X:0x%02X", data[0], data[1]);
|
||||
break;
|
||||
case 3:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X", data[0], data[1], data[2]);
|
||||
break;
|
||||
case 4:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3]);
|
||||
break;
|
||||
case 5:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3], data[4]);
|
||||
break;
|
||||
case 6:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3], data[4], data[5]);
|
||||
break;
|
||||
case 7:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3], data[4],
|
||||
data[5], data[6]);
|
||||
break;
|
||||
case 8:
|
||||
sprintf(str, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3], data[4],
|
||||
data[5], data[6], data[7]);
|
||||
break;
|
||||
default:
|
||||
sprintf(str, " ");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeout) {
|
||||
uint8_t response_size = 0;
|
||||
|
|
@ -1084,14 +1125,20 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
|||
eXcpTypeCommand com = env->canFrame.data[0];
|
||||
|
||||
if (com > 0xBF) { // CMD
|
||||
char str[80];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "COMMAND (DLC=%d) = %d", env->canFrame.dlc, com)
|
||||
PrintfDebug(str, env->canFrame.data, env->canFrame.dlc);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "> [%d] %s", env->canFrame.dlc, str)
|
||||
|
||||
if (fXcp_func_ptr[com] != NULL) {
|
||||
|
||||
response_size = fXcp_func_ptr[com](env);
|
||||
|
||||
if (response_size) {
|
||||
|
||||
PrintfDebug(str, env->response, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", response_size, str)
|
||||
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, PROTOCOL_CAN_ADR_XCP,
|
||||
PROTOCOL_CAN_TYPE_XCP, timeout);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue