Обновление после командировки 29.06.2026
This commit is contained in:
parent
503c56520f
commit
7015f42074
|
|
@ -13,8 +13,6 @@
|
||||||
#include "VarsTabDumpObserver.h"
|
#include "VarsTabDumpObserver.h"
|
||||||
|
|
||||||
|
|
||||||
#define XCP_CAN_HANDLER 1
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
XCP_ERR_CMD_SYNCH = 0x00,
|
XCP_ERR_CMD_SYNCH = 0x00,
|
||||||
XCP_ERR_CMD_BUSY = 0x10,
|
XCP_ERR_CMD_BUSY = 0x10,
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,8 @@ static void PrintfDebug(uint8_t *data, uint8_t dlc) {
|
||||||
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3]);
|
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3]);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3], data[4]);
|
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3],
|
||||||
|
data[4]);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3],
|
sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], data[3],
|
||||||
|
|
@ -78,6 +79,7 @@ static bool isUNLOCK(tCanSerialPortFrameXCP *env, eTypeProtect RESOURCE) {
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedInfo) {
|
static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedInfo) {
|
||||||
#define Mask 0x55F388A6UL
|
#define Mask 0x55F388A6UL
|
||||||
|
|
@ -368,7 +370,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
|
||||||
#endif
|
#endif
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 1, PROTOCOL_CAN_ADR_XCP,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 1, PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP,
|
PROTOCOL_CAN_TYPE_XCP,
|
||||||
1000, XCP_CAN_HANDLER);
|
100);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -378,7 +380,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
|
||||||
uint8_t tailBlock = request->COUNT % 7;
|
uint8_t tailBlock = request->COUNT % 7;
|
||||||
|
|
||||||
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;
|
||||||
#if (LOG_XCP == 1)
|
#if (LOG_XCP == 1)
|
||||||
PrintfDebug(env->response, 7 + 1);
|
PrintfDebug(env->response, 7 + 1);
|
||||||
|
|
@ -386,11 +388,11 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
|
||||||
#endif
|
#endif
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP,
|
PROTOCOL_CAN_TYPE_XCP,
|
||||||
1000, XCP_CAN_HANDLER);
|
100);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tailBlock > 0) {
|
if (tailBlock > 0) {
|
||||||
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), tailBlock);
|
memcpy(&env->response[1], (uint8_t * )(env->ADR_MTA), tailBlock);
|
||||||
env->ADR_MTA += tailBlock;
|
env->ADR_MTA += tailBlock;
|
||||||
|
|
||||||
#if (LOG_XCP == 1)
|
#if (LOG_XCP == 1)
|
||||||
|
|
@ -398,12 +400,12 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", tailBlock + 1, strPrintfDebug_XCP)
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", tailBlock + 1, strPrintfDebug_XCP)
|
||||||
#endif
|
#endif
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, tailBlock + 1, PROTOCOL_CAN_ADR_XCP,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, tailBlock + 1, PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP, 1000, XCP_CAN_HANDLER);
|
PROTOCOL_CAN_TYPE_XCP, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
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 += request->COUNT;
|
env->ADR_MTA += request->COUNT;
|
||||||
return request->COUNT + 1;
|
return request->COUNT + 1;
|
||||||
}
|
}
|
||||||
|
|
@ -439,16 +441,27 @@ static uint8_t XCP_COMMAND_DOWNLOAD_F0(tCanSerialPortFrameXCP *env) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
// uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
uint8_t COUNT;
|
||||||
|
if (request->COUNT <= 6) {
|
||||||
|
COUNT = request->COUNT;
|
||||||
|
} else {
|
||||||
|
COUNT = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// memcpy((uint8_t *) (env->ADR_MTA), &env->response[2], COUNT);
|
// memcpy((uint8_t *) (env->ADR_MTA), &env->response[2], COUNT);
|
||||||
memcpy((uint8_t *) (env->ADR_MTA), &env->canFrame.data[2], COUNT);
|
memcpy((uint8_t * )(env->ADR_MTA), &env->canFrame.data[2], COUNT);
|
||||||
env->ADR_MTA += COUNT;
|
env->ADR_MTA += COUNT;
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
|
||||||
env->downloadRemaining = request->COUNT - COUNT;
|
env->downloadRemaining = request->COUNT - COUNT;
|
||||||
|
|
||||||
return 1;
|
if (request->COUNT <= 6) {
|
||||||
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
return 1;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_EF(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_EF(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
@ -464,12 +477,13 @@ static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_EF(tCanSerialPortFrameXCP *env) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
//uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
uint8_t COUNT = request->COUNT;
|
||||||
|
|
||||||
memcpy((uint8_t *) (env->ADR_MTA), &env->response[2], COUNT);
|
memcpy((uint8_t * )(env->ADR_MTA), &env->canFrame.data[2], COUNT);
|
||||||
env->ADR_MTA += COUNT;
|
env->ADR_MTA += COUNT;
|
||||||
|
|
||||||
if (request->COUNT != env->downloadRemaining) {
|
if (request->COUNT > env->downloadRemaining) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_SEQUENCE;
|
env->response[1] = XCP_ERR_SEQUENCE;
|
||||||
env->response[2] = env->downloadRemaining;
|
env->response[2] = env->downloadRemaining;
|
||||||
|
|
@ -500,7 +514,7 @@ static uint8_t XCP_COMMAND_DOWNLOAD_MAX_EE(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 1;
|
uint8_t COUNT = env->canFrame.dlc - 1;
|
||||||
|
|
||||||
memcpy((uint8_t *) (env->ADR_MTA), &env->response[1], COUNT);
|
memcpy((uint8_t * )(env->ADR_MTA), &env->response[1], COUNT);
|
||||||
env->ADR_MTA += COUNT;
|
env->ADR_MTA += COUNT;
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
|
@ -1608,7 +1622,7 @@ const eXcp_com xcp_com[256] = {
|
||||||
uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeout) {
|
uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeout) {
|
||||||
uint8_t response_size = 0;
|
uint8_t response_size = 0;
|
||||||
|
|
||||||
uint16_t recv = env->ioCanFrame->receive(env->ioCanFrame->env, PROTOCOL_CAN_XCP, (uint8_t *) &env->canFrame,
|
uint16_t recv = env->ioCanFrame->receive(env->ioCanFrame->env, PROTOCOL_CAN_XCP, (uint8_t * ) & env->canFrame,
|
||||||
1,
|
1,
|
||||||
timeout);
|
timeout);
|
||||||
|
|
||||||
|
|
@ -1642,7 +1656,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
||||||
|
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size,
|
||||||
PROTOCOL_CAN_ADR_XCP,
|
PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP, timeout, XCP_CAN_HANDLER);
|
PROTOCOL_CAN_TYPE_XCP, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1658,7 +1672,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
||||||
|
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 2,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 2,
|
||||||
PROTOCOL_CAN_ADR_XCP,
|
PROTOCOL_CAN_ADR_XCP,
|
||||||
PROTOCOL_CAN_TYPE_XCP, timeout);
|
PROTOCOL_CAN_TYPE_XCP, 100);
|
||||||
} else {
|
} else {
|
||||||
XCP_GET_DAQ_STM(env);
|
XCP_GET_DAQ_STM(env);
|
||||||
}
|
}
|
||||||
|
|
@ -1674,6 +1688,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
||||||
|
|
||||||
return response_size;
|
return response_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
_Noreturn void CanXcpProcessing_Service_Dto_Stim_Task(tCanSerialPortFrameXCP *env) {
|
_Noreturn void CanXcpProcessing_Service_Dto_Stim_Task(tCanSerialPortFrameXCP *env) {
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
|
|
@ -1815,7 +1830,7 @@ void Dto_Daq(tCanSerialPortFrameXCP *env, uint16_t channel, uint32_t timeout) {
|
||||||
memcpy(&env->response[2], &env->DATA[size], BODY_MAX_LEN);
|
memcpy(&env->response[2], &env->DATA[size], BODY_MAX_LEN);
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, MAX_DTO,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, MAX_DTO,
|
||||||
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
||||||
1000);
|
100);
|
||||||
size += BODY_MAX_LEN;
|
size += BODY_MAX_LEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1824,7 +1839,7 @@ void Dto_Daq(tCanSerialPortFrameXCP *env, uint16_t channel, uint32_t timeout) {
|
||||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response,
|
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response,
|
||||||
count_size_tail + 2,
|
count_size_tail + 2,
|
||||||
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
||||||
1000);
|
100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue