Обновление
This commit is contained in:
parent
30eda237ed
commit
8b103fc1dd
|
|
@ -7,6 +7,7 @@
|
||||||
#include "AsciiStringAssmeblingUtils.h"
|
#include "AsciiStringAssmeblingUtils.h"
|
||||||
#include "SystemMutexCmsis.h"
|
#include "SystemMutexCmsis.h"
|
||||||
#include "CanPorts.h"
|
#include "CanPorts.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#define LOG_SIGN "CAN_XCP"
|
#define LOG_SIGN "CAN_XCP"
|
||||||
#define LOGGER env->logger
|
#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) {
|
for (uint8_t i = 0; i < fullBlock; ++i) {
|
||||||
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), request->COUNT);
|
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), request->COUNT);
|
||||||
env->ADR_MTA += 7;
|
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);
|
1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1069,6 +1071,45 @@ const xcp_func_ptr fXcp_func_ptr[256] = {
|
||||||
XCP_COMMAND_CONNECT_255
|
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 vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeout) {
|
||||||
uint8_t response_size = 0;
|
uint8_t response_size = 0;
|
||||||
|
|
@ -1084,14 +1125,20 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
||||||
eXcpTypeCommand com = env->canFrame.data[0];
|
eXcpTypeCommand com = env->canFrame.data[0];
|
||||||
|
|
||||||
if (com > 0xBF) { // CMD
|
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) {
|
if (fXcp_func_ptr[com] != NULL) {
|
||||||
|
|
||||||
response_size = fXcp_func_ptr[com](env);
|
response_size = fXcp_func_ptr[com](env);
|
||||||
|
|
||||||
if (response_size) {
|
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,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP, timeout);
|
PROTOCOL_CAN_TYPE_XCP, timeout);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue