Обновление после командировки 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;
|
||||||
}
|
}
|
||||||
|
|
@ -386,7 +388,7 @@ 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) {
|
||||||
|
|
@ -398,7 +400,7 @@ 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;
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
if (request->COUNT <= 6) {
|
||||||
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
return 1;
|
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;
|
||||||
|
|
@ -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