diff --git a/Src/CanSerialPortFrameXCP.c b/Src/CanSerialPortFrameXCP.c index 630b521..8360bbd 100644 --- a/Src/CanSerialPortFrameXCP.c +++ b/Src/CanSerialPortFrameXCP.c @@ -14,46 +14,46 @@ 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) { case 0: - sprintf(strPrintfDebug, " "); + sprintf(strPrintfDebug_XCP, " "); break; case 1: - sprintf(strPrintfDebug, "0x%02X", data[0]); + sprintf(strPrintfDebug_XCP, "0x%02X", data[0]); break; case 2: - sprintf(strPrintfDebug, "0x%02X:0x%02X", data[0], data[1]); + sprintf(strPrintfDebug_XCP, "0x%02X:0x%02X", data[0], data[1]); break; 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; 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; 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; 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]); break; 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[5], data[6]); break; 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[5], data[6], data[7]); break; default: - sprintf(strPrintfDebug, " "); + sprintf(strPrintfDebug_XCP, " "); } } @@ -78,7 +78,7 @@ static bool isUNLOCK(tCanSerialPortFrameXCP *env, eTypeProtect RESOURCE) { return false; } - +/* static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedInfo) { #define Mask 0x55F388A6UL @@ -97,6 +97,8 @@ static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedI return key; } +*/ +extern uint32_t generate_key(uint32_t seed); void CanSerialPortFrameXcpInit( 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; xcpCommand_GET_SEED->COM = XCP_COMMAND_CONNECT; xcpCommand_GET_SEED->LEN = 4; - xcpCommand_GET_SEED->KEY = 0x11223344; + xcpCommand_GET_SEED->KEY = 0x853A08FB; env->RESOURCE = request->RESOURCE; return 6; @@ -277,7 +279,7 @@ static uint8_t XCP_GET_SEED_F8(tCanSerialPortFrameXCP *env) { static uint8_t XCP_UNLOCK_F7(tCanSerialPortFrameXCP *env) { 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) { env->response[0] = XCP_COMMAND_DISCONNECT; @@ -362,7 +364,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) { #if (LOG_XCP == 1) PrintfDebug(env->response, 1); - LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 1, strPrintfDebug) + LoggerFormatInfo(LOGGER, LOG_SIGN, "< [%d] %s", 1, strPrintfDebug_XCP) #endif env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 1, PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP, @@ -380,7 +382,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) { env->ADR_MTA += 7; #if (LOG_XCP == 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 env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP, @@ -393,7 +395,7 @@ static uint8_t XCP_COMMAND_UPLOAD_F5(tCanSerialPortFrameXCP *env) { #if (LOG_XCP == 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 env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, tailBlock + 1, PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP, 1000); @@ -1621,7 +1623,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou #if (LOG_XCP == 1) if ((com != 0xD0) && (com != 0xF5)) { 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 if (xcp_com[com].func != NULL) { @@ -1633,7 +1635,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou #if (LOG_XCP == 1) if ((com != 0xD0) && (com != 0xF5)) { 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