Обновление

This commit is contained in:
cfif 2026-01-28 14:48:17 +03:00
parent 03233e644e
commit 58bfb47bf9
1 changed files with 22 additions and 20 deletions

View File

@ -14,46 +14,46 @@
SECT_SRAM_XCP tXCP_DAQ DAQ[MAX_DAO]; SECT_SRAM_XCP tXCP_DAQ DAQ[MAX_DAO];
char strPrintfDebug[80]; static char strPrintfDebug_XCP[80];
void PrintfDebug(uint8_t *data, uint8_t dlc) { static void PrintfDebug(uint8_t *data, uint8_t dlc) {
switch (dlc) { switch (dlc) {
case 0: case 0:
sprintf(strPrintfDebug, " "); sprintf(strPrintfDebug_XCP, " ");
break; break;
case 1: case 1:
sprintf(strPrintfDebug, "0x%02X", data[0]); sprintf(strPrintfDebug_XCP, "0x%02X", data[0]);
break; break;
case 2: case 2:
sprintf(strPrintfDebug, "0x%02X:0x%02X", data[0], data[1]); sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X", data[0], data[1]);
break; break;
case 3: case 3:
sprintf(strPrintfDebug, "0x%02X:0x%02X:0x%02X", data[0], data[1], data[2]); sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X:0x%02X", data[0], data[1], data[2]);
break; break;
case 4: case 4:
sprintf(strPrintfDebug, "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, "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, "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],
data[4], data[5]); data[4], data[5]);
break; break;
case 7: case 7:
sprintf(strPrintfDebug, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], data[2], sprintf(strPrintfDebug_XCP, "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[3], data[4],
data[5], data[6]); data[5], data[6]);
break; break;
case 8: case 8:
sprintf(strPrintfDebug, "0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X:0x%02X", data[0], data[1], sprintf(strPrintfDebug_XCP, "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[2], data[3], data[4],
data[5], data[6], data[7]); data[5], data[6], data[7]);
break; break;
default: default:
sprintf(strPrintfDebug, " "); sprintf(strPrintfDebug_XCP, " ");
} }
} }
@ -78,7 +78,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
@ -97,6 +97,8 @@ static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedI
return key; return key;
} }
*/
extern uint32_t generate_key(uint32_t seed);
void CanSerialPortFrameXcpInit( void CanSerialPortFrameXcpInit(
tCanSerialPortFrameXCP *env, tCanSerialPortFrameXCP *env,
@ -268,7 +270,7 @@ static uint8_t XCP_GET_SEED_F8(tCanSerialPortFrameXCP *env) {
eXcpCommand_GET_SEED *xcpCommand_GET_SEED = (eXcpCommand_GET_SEED *) env->response; eXcpCommand_GET_SEED *xcpCommand_GET_SEED = (eXcpCommand_GET_SEED *) env->response;
xcpCommand_GET_SEED->COM = XCP_COMMAND_CONNECT; xcpCommand_GET_SEED->COM = XCP_COMMAND_CONNECT;
xcpCommand_GET_SEED->LEN = 4; xcpCommand_GET_SEED->LEN = 4;
xcpCommand_GET_SEED->KEY = 0x11223344; xcpCommand_GET_SEED->KEY = 0x853A08FB;
env->RESOURCE = request->RESOURCE; env->RESOURCE = request->RESOURCE;
return 6; return 6;
@ -277,7 +279,7 @@ static uint8_t XCP_GET_SEED_F8(tCanSerialPortFrameXCP *env) {
static uint8_t XCP_UNLOCK_F7(tCanSerialPortFrameXCP *env) { static uint8_t XCP_UNLOCK_F7(tCanSerialPortFrameXCP *env) {
eXcpCommand_REQ_UNLOCK *request = (eXcpCommand_REQ_UNLOCK *) env->canFrame.data; eXcpCommand_REQ_UNLOCK *request = (eXcpCommand_REQ_UNLOCK *) env->canFrame.data;
uint32_t securitySeedMy = SeedToKeyHVAC_NAMI(0, 0x11223344); uint32_t securitySeedMy = generate_key(0x853A08FB);//SeedToKeyHVAC_NAMI(0, 0x11223344);
if (securitySeedMy != request->KEY) { if (securitySeedMy != request->KEY) {
env->response[0] = XCP_COMMAND_DISCONNECT; env->response[0] = XCP_COMMAND_DISCONNECT;
@ -362,7 +364,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
#if (LOG_XCP == 1) #if (LOG_XCP == 1)
PrintfDebug(env->response, 1); PrintfDebug(env->response, 1);
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 1, strPrintfDebug) LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 1, strPrintfDebug_XCP)
#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,
@ -380,7 +382,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
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);
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 7 + 1, strPrintfDebug) LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 7 + 1, strPrintfDebug_XCP)
#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,
@ -393,7 +395,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) {
#if (LOG_XCP == 1) #if (LOG_XCP == 1)
PrintfDebug(env->response, tailBlock + 1); PrintfDebug(env->response, tailBlock + 1);
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", tailBlock + 1, strPrintfDebug) 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); PROTOCOL_CAN_TYPE_XCP, 1000);
@ -1621,7 +1623,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
#if (LOG_XCP == 1) #if (LOG_XCP == 1)
if ((com != 0xD0) && (com != 0xF5)) { if ((com != 0xD0) && (com != 0xF5)) {
PrintfDebug(env->canFrame.data, env->canFrame.dlc); PrintfDebug(env->canFrame.data, env->canFrame.dlc);
LoggerFormatInfo(LOGGER, LOG_SIGN, "> %s [%d] %s", xcp_com[com].desc, env->canFrame.dlc, strPrintfDebug) LoggerFormatInfo(LOGGER, LOG_SIGN, "> %s [%d] %s", xcp_com[com].desc, env->canFrame.dlc, strPrintfDebug_XCP)
} }
#endif #endif
if (xcp_com[com].func != NULL) { if (xcp_com[com].func != NULL) {
@ -1633,7 +1635,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
#if (LOG_XCP == 1) #if (LOG_XCP == 1)
if ((com != 0xD0) && (com != 0xF5)) { if ((com != 0xD0) && (com != 0xF5)) {
PrintfDebug(env->response, response_size); PrintfDebug(env->response, response_size);
LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", response_size, strPrintfDebug) LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", response_size, strPrintfDebug_XCP)
} }
#endif #endif