Обновление
This commit is contained in:
parent
3d1f127b6c
commit
d44d247b7f
|
|
@ -17,6 +17,11 @@
|
||||||
#define PROTOCOL_CAN_ADR_XCP 0x250
|
#define PROTOCOL_CAN_ADR_XCP 0x250
|
||||||
#define PROTOCOL_CAN_TYPE_XCP 0x0
|
#define PROTOCOL_CAN_TYPE_XCP 0x0
|
||||||
|
|
||||||
|
#define PROTECT_CAL_PAG 1
|
||||||
|
#define PROTECT_DAQ 1
|
||||||
|
#define PROTECT_STIM 1
|
||||||
|
#define PROTECT_PGM 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,
|
||||||
|
|
@ -587,8 +592,8 @@ typedef struct __attribute__ ((packed)) {
|
||||||
} eXcpCommand_XCP_GET_CAL_PAGE_EA;
|
} eXcpCommand_XCP_GET_CAL_PAGE_EA;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef bool (xcp_clear_flash_func)(uint32_t firstPageAddr, uint32_t totalSize);
|
typedef bool (xcp_clear_flash_func)(uint32_t firstPageAddr, uint32_t totalSize);
|
||||||
|
|
||||||
typedef bool (xcp_write_flash_func)(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size);
|
typedef bool (xcp_write_flash_func)(uint32_t beginPageAddr, void *sourceRamAddr, uint32_t size);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -630,7 +635,6 @@ typedef struct {
|
||||||
tXCP_DAQ *DAQ;
|
tXCP_DAQ *DAQ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tRtcIO *rtcIO;
|
tRtcIO *rtcIO;
|
||||||
|
|
||||||
osMutexId_t access;
|
osMutexId_t access;
|
||||||
|
|
|
||||||
|
|
@ -220,11 +220,11 @@ static uint8_t XCP_COMMAND_GET_STATUS_FD(tCanSerialPortFrameXCP *env) {
|
||||||
xcpCommand_GET_STATUS->RESUME = env->STATE.RESUME; // устройство не в режиме RESUME
|
xcpCommand_GET_STATUS->RESUME = env->STATE.RESUME; // устройство не в режиме RESUME
|
||||||
|
|
||||||
// Статус защиты ресурсов
|
// Статус защиты ресурсов
|
||||||
xcpCommand_GET_STATUS->CAL_PAG = 1; // защита команд калибровки/пагинации
|
xcpCommand_GET_STATUS->CAL_PAG = PROTECT_CAL_PAG; // защита команд калибровки/пагинации
|
||||||
xcpCommand_GET_STATUS->reserve5 = 0;
|
xcpCommand_GET_STATUS->reserve5 = 0;
|
||||||
xcpCommand_GET_STATUS->DAQ = 1; // защита DAQ-команд
|
xcpCommand_GET_STATUS->DAQ = PROTECT_DAQ; // защита DAQ-команд
|
||||||
xcpCommand_GET_STATUS->STIM = 1; // защита STIM-команд
|
xcpCommand_GET_STATUS->STIM = PROTECT_STIM; // защита STIM-команд
|
||||||
xcpCommand_GET_STATUS->PGM = 1; // защита команд программирования
|
xcpCommand_GET_STATUS->PGM = PROTECT_PGM; // защита команд программирования
|
||||||
xcpCommand_GET_STATUS->reserve6 = 0;
|
xcpCommand_GET_STATUS->reserve6 = 0;
|
||||||
xcpCommand_GET_STATUS->reserve7 = 0;
|
xcpCommand_GET_STATUS->reserve7 = 0;
|
||||||
xcpCommand_GET_STATUS->reserve8 = 0;
|
xcpCommand_GET_STATUS->reserve8 = 0;
|
||||||
|
|
@ -428,12 +428,14 @@ static uint8_t XCP_COMMAND_DOWNLOAD_F0(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_CAL_PAG == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
|
||||||
|
|
@ -450,12 +452,14 @@ static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_EF(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_CAL_PAG == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
|
||||||
|
|
@ -482,12 +486,14 @@ static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_EF(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
static uint8_t XCP_COMMAND_DOWNLOAD_MAX_EE(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_COMMAND_DOWNLOAD_MAX_EE(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
|
#if (PROTECT_CAL_PAG == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 1;
|
uint8_t COUNT = env->canFrame.dlc - 1;
|
||||||
|
|
||||||
|
|
@ -502,12 +508,14 @@ static uint8_t XCP_COMMAND_DOWNLOAD_MAX_EE(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
static uint8_t XCP_CLEAR_DAQ_LIST_E3(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_CLEAR_DAQ_LIST_E3(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
|
@ -518,12 +526,15 @@ static uint8_t XCP_CLEAR_DAQ_LIST_E3(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_GET_DAQ_LIST_INFO_D8(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_GET_DAQ_LIST_INFO_D8(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Get_DAQ_List_Info_Request *request = (eXcpCommand_Get_DAQ_List_Info_Request *) env->canFrame.data;
|
eXcpCommand_Get_DAQ_List_Info_Request *request = (eXcpCommand_Get_DAQ_List_Info_Request *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -552,12 +563,15 @@ static uint8_t XCP_GET_DAQ_LIST_INFO_D8(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_ALLOC_DAQ_D5(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_ALLOC_DAQ_D5(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_ALLOC_DAQ *request = (eXcpCommand_ALLOC_DAQ *) env->canFrame.data;
|
eXcpCommand_ALLOC_DAQ *request = (eXcpCommand_ALLOC_DAQ *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
env->SETUP.DAQ_COUNT = request->DAQ_COUNT;
|
env->SETUP.DAQ_COUNT = request->DAQ_COUNT;
|
||||||
|
|
||||||
|
|
@ -567,12 +581,15 @@ static uint8_t XCP_ALLOC_DAQ_D5(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
static uint8_t XCP_FREE_DAQ_D6(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_FREE_DAQ_D6(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
FREE_DAQ(env);
|
FREE_DAQ(env);
|
||||||
|
|
||||||
|
|
@ -583,12 +600,15 @@ static uint8_t XCP_FREE_DAQ_D6(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_ALLOC_ODT_D4(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_ALLOC_ODT_D4(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_ALLOC_ODT *request = (eXcpCommand_ALLOC_ODT *) env->canFrame.data;
|
eXcpCommand_ALLOC_ODT *request = (eXcpCommand_ALLOC_ODT *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
env->DAQ[request->DAQ_LIST_NUMBER].ODT_COUNT = request->ODT_COUNT;
|
env->DAQ[request->DAQ_LIST_NUMBER].ODT_COUNT = request->ODT_COUNT;
|
||||||
|
|
||||||
|
|
@ -600,12 +620,15 @@ static uint8_t XCP_ALLOC_ODT_D4(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_ALLOC_ODT_ENTRY_D3(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_ALLOC_ODT_ENTRY_D3(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_ALLOC_ODT_ENTRY *request = (eXcpCommand_ALLOC_ODT_ENTRY *) env->canFrame.data;
|
eXcpCommand_ALLOC_ODT_ENTRY *request = (eXcpCommand_ALLOC_ODT_ENTRY *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
env->DAQ[request->DAQ_LIST_NUMBER].ODT_NUMBER[request->ODT_NUMBER].ODT_ENTRIES_COUNT = request->ODT_ENTRIES_COUNT;
|
env->DAQ[request->DAQ_LIST_NUMBER].ODT_NUMBER[request->ODT_NUMBER].ODT_ENTRIES_COUNT = request->ODT_ENTRIES_COUNT;
|
||||||
|
|
||||||
|
|
@ -617,12 +640,15 @@ static uint8_t XCP_ALLOC_ODT_ENTRY_D3(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_SET_DAQ_PTR_E2(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_SET_DAQ_PTR_E2(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_SET_DAQ_PTR *request = (eXcpCommand_SET_DAQ_PTR *) env->canFrame.data;
|
eXcpCommand_SET_DAQ_PTR *request = (eXcpCommand_SET_DAQ_PTR *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if ((request->DAQ_LIST_NUMBER > MAX_DAO) ||
|
if ((request->DAQ_LIST_NUMBER > MAX_DAO) ||
|
||||||
(request->ODT_NUMBER > MAX_ODT) ||
|
(request->ODT_NUMBER > MAX_ODT) ||
|
||||||
|
|
@ -646,12 +672,15 @@ static uint8_t XCP_SET_DAQ_PTR_E2(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_WRITE_DAQ_E1(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_WRITE_DAQ_E1(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_WRITE_DAQ *request = (eXcpCommand_WRITE_DAQ *) env->canFrame.data;
|
eXcpCommand_WRITE_DAQ *request = (eXcpCommand_WRITE_DAQ *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (env->SETUP.ODT_ENTRY_NUMBER > MAX_ODT_ENTRIES_SIZE_DAQ) {
|
if (env->SETUP.ODT_ENTRY_NUMBER > MAX_ODT_ENTRIES_SIZE_DAQ) {
|
||||||
|
|
||||||
|
|
@ -675,12 +704,15 @@ static uint8_t XCP_WRITE_DAQ_E1(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_SET_DAQ_LIST_MODE_E0(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_SET_DAQ_LIST_MODE_E0(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_SET_DAQ_LIST_MODE *request = (eXcpCommand_SET_DAQ_LIST_MODE *) env->canFrame.data;
|
eXcpCommand_SET_DAQ_LIST_MODE *request = (eXcpCommand_SET_DAQ_LIST_MODE *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if ((request->DAQ_LIST_NUMBER > MAX_DAO) || (request->EVENT_CHANNEL_NUMBER > MAX_EVENT_CHANNEL)) {
|
if ((request->DAQ_LIST_NUMBER > MAX_DAO) || (request->EVENT_CHANNEL_NUMBER > MAX_EVENT_CHANNEL)) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -709,12 +741,15 @@ static uint8_t XCP_SET_DAQ_LIST_MODE_E0(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_START_STOP_DAQ_LIST_DE(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_START_STOP_DAQ_LIST_DE(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_START_STOP_DAQ_LIST *request = (eXcpCommand_START_STOP_DAQ_LIST *) env->canFrame.data;
|
eXcpCommand_START_STOP_DAQ_LIST *request = (eXcpCommand_START_STOP_DAQ_LIST *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -742,12 +777,15 @@ static uint8_t XCP_START_STOP_DAQ_LIST_DE(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_START_STOP_SYNCH_DD(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_START_STOP_SYNCH_DD(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_START_STOP_SYNCH *request = (eXcpCommand_START_STOP_SYNCH *) env->canFrame.data;
|
eXcpCommand_START_STOP_SYNCH *request = (eXcpCommand_START_STOP_SYNCH *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->MODE == XCP_SYNC_START_SEL) {
|
if (request->MODE == XCP_SYNC_START_SEL) {
|
||||||
for (uint16 i = 0; i < MAX_DAO; ++i) {
|
for (uint16 i = 0; i < MAX_DAO; ++i) {
|
||||||
|
|
@ -781,12 +819,15 @@ static uint8_t XCP_START_STOP_SYNCH_DD(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_READ_DAQ_DB(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_READ_DAQ_DB(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_WRITE_DAQ *response = (eXcpCommand_WRITE_DAQ *) env->response;
|
eXcpCommand_WRITE_DAQ *response = (eXcpCommand_WRITE_DAQ *) env->response;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
response->COM = XCP_COMMAND_CONNECT;
|
response->COM = XCP_COMMAND_CONNECT;
|
||||||
response->BIT_OFFSET = env->DAQ[env->SETUP.DAQ_LIST_NUMBER].ODT_NUMBER[env->SETUP.ODT_NUMBER].BIT_OFFSET[env->SETUP.ODT_ENTRY_NUMBER];
|
response->BIT_OFFSET = env->DAQ[env->SETUP.DAQ_LIST_NUMBER].ODT_NUMBER[env->SETUP.ODT_NUMBER].BIT_OFFSET[env->SETUP.ODT_ENTRY_NUMBER];
|
||||||
|
|
@ -803,12 +844,15 @@ static uint8_t XCP_GET_DAQ_PROCESSOR_INFO_DA(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
eXcpCommand_GET_DAQ_PROCESSOR_INFO *response = (eXcpCommand_GET_DAQ_PROCESSOR_INFO *) env->response;
|
eXcpCommand_GET_DAQ_PROCESSOR_INFO *response = (eXcpCommand_GET_DAQ_PROCESSOR_INFO *) env->response;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
response->COM = XCP_COMMAND_CONNECT;
|
response->COM = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
|
@ -841,12 +885,15 @@ static uint8_t XCP_GET_DAQ_PROCESSOR_INFO_DA(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_GET_DAQ_RESOLUTION_INFO_D9(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_GET_DAQ_RESOLUTION_INFO_D9(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_GET_DAQ_RESOLUTION_INFO *response = (eXcpCommand_GET_DAQ_RESOLUTION_INFO *) env->response;
|
eXcpCommand_GET_DAQ_RESOLUTION_INFO *response = (eXcpCommand_GET_DAQ_RESOLUTION_INFO *) env->response;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
response->COM = XCP_COMMAND_CONNECT;
|
response->COM = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
|
@ -865,12 +912,15 @@ static uint8_t XCP_GET_DAQ_LIST_MODE_DF(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
eXcpCommand_GET_DAQ_LIST_MODE_GET *request = (eXcpCommand_GET_DAQ_LIST_MODE_GET *) env->canFrame.data;
|
eXcpCommand_GET_DAQ_LIST_MODE_GET *request = (eXcpCommand_GET_DAQ_LIST_MODE_GET *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -905,12 +955,15 @@ static uint8_t XCP_GET_DAQ_EVENT_INFO_D7(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
eXcpCommand_GET_DAQ_EVENT_INFO_GET *request = (eXcpCommand_GET_DAQ_EVENT_INFO_GET *) env->canFrame.data;
|
eXcpCommand_GET_DAQ_EVENT_INFO_GET *request = (eXcpCommand_GET_DAQ_EVENT_INFO_GET *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_DAQ == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_DAQ) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->EVENT_CHANNEL_NUMBER > MAX_EVENT_CHANNEL) {
|
if (request->EVENT_CHANNEL_NUMBER > MAX_EVENT_CHANNEL) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -969,12 +1022,14 @@ static uint8_t XCP_GET_DAQ_STM(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_START_D2(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_START_D2(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_PROGRAM_START *response = (eXcpCommand_PROGRAM_START *) env->response;
|
eXcpCommand_PROGRAM_START *response = (eXcpCommand_PROGRAM_START *) env->response;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
response->COM = XCP_COMMAND_CONNECT;
|
response->COM = XCP_COMMAND_CONNECT;
|
||||||
response->RESERVED1 = 0;
|
response->RESERVED1 = 0;
|
||||||
|
|
@ -999,12 +1054,15 @@ static uint8_t XCP_PROGRAM_START_D2(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_CLEAR_D1(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_CLEAR_D1(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_XCP_PROGRAM_CLEAR_D1 *request = (eXcpCommand_XCP_PROGRAM_CLEAR_D1 *) env->canFrame.data;
|
eXcpCommand_XCP_PROGRAM_CLEAR_D1 *request = (eXcpCommand_XCP_PROGRAM_CLEAR_D1 *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->MODE == 0) {
|
if (request->MODE == 0) {
|
||||||
|
|
||||||
|
|
@ -1032,12 +1090,15 @@ static uint8_t XCP_PROGRAM_CLEAR_D1(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_D0(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_D0(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_ProgramNext_D0_CA *request = (eXcpCommand_Program_ProgramNext_D0_CA *) env->canFrame.data;
|
eXcpCommand_Program_ProgramNext_D0_CA *request = (eXcpCommand_Program_ProgramNext_D0_CA *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
|
||||||
|
|
@ -1066,12 +1127,15 @@ static uint8_t XCP_PROGRAM_D0(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t PROGRAM_VERIFY_C8(tCanSerialPortFrameXCP *env) {
|
static uint8_t PROGRAM_VERIFY_C8(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_Verify_C8 *request = (eXcpCommand_Program_Verify_C8 *) env->canFrame.data;
|
eXcpCommand_Program_Verify_C8 *request = (eXcpCommand_Program_Verify_C8 *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (env->bufWriteFlashCount > 0) {
|
if (env->bufWriteFlashCount > 0) {
|
||||||
bool result = env->write_flash_func(env->bufWriteFlashAdr, env->bufWriteFlash, env->bufWriteFlashCount);
|
bool result = env->write_flash_func(env->bufWriteFlashAdr, env->bufWriteFlash, env->bufWriteFlashCount);
|
||||||
|
|
@ -1087,12 +1151,15 @@ static uint8_t PROGRAM_VERIFY_C8(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_NEXT_CA(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_NEXT_CA(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_ProgramNext_D0_CA *request = (eXcpCommand_Program_ProgramNext_D0_CA *) env->canFrame.data;
|
eXcpCommand_Program_ProgramNext_D0_CA *request = (eXcpCommand_Program_ProgramNext_D0_CA *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
uint8_t COUNT = env->canFrame.dlc - 2;
|
uint8_t COUNT = env->canFrame.dlc - 2;
|
||||||
|
|
||||||
|
|
@ -1107,12 +1174,15 @@ static uint8_t XCP_PROGRAM_NEXT_CA(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_PREPARE_CC(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_PREPARE_CC(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_Prepare_CC *request = (eXcpCommand_Program_Prepare_CC *) env->canFrame.data;
|
eXcpCommand_Program_Prepare_CC *request = (eXcpCommand_Program_Prepare_CC *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if ((env->ADR_MTA < env->startFlashAdr) || ((env->ADR_MTA + request->CODESIZE) > env->endFlashAdr)) {
|
if ((env->ADR_MTA < env->startFlashAdr) || ((env->ADR_MTA + request->CODESIZE) > env->endFlashAdr)) {
|
||||||
|
|
||||||
|
|
@ -1131,12 +1201,15 @@ static uint8_t XCP_PROGRAM_PREPARE_CC(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_FORMAT_CB(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_FORMAT_CB(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_Program_Format_CB *request = (eXcpCommand_Program_Format_CB *) env->canFrame.data;
|
eXcpCommand_Program_Format_CB *request = (eXcpCommand_Program_Format_CB *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
@ -1146,12 +1219,15 @@ static uint8_t XCP_PROGRAM_FORMAT_CB(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_PROGRAM_RESET_CF(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_PROGRAM_RESET_CF(tCanSerialPortFrameXCP *env) {
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (env->bufWriteFlashCount > 0) {
|
if (env->bufWriteFlashCount > 0) {
|
||||||
bool result = env->write_flash_func(env->bufWriteFlashAdr, env->bufWriteFlash, env->bufWriteFlashCount);
|
bool result = env->write_flash_func(env->bufWriteFlashAdr, env->bufWriteFlash, env->bufWriteFlashCount);
|
||||||
|
|
@ -1164,12 +1240,15 @@ static uint8_t XCP_PROGRAM_RESET_CF(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_GET_PGM_PROCESSOR_INFO_CE(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_GET_PGM_PROCESSOR_INFO_CE(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_PGM_PROCESSOR_INFO_CE *response = (eXcpCommand_PGM_PROCESSOR_INFO_CE *) env->response;
|
eXcpCommand_PGM_PROCESSOR_INFO_CE *response = (eXcpCommand_PGM_PROCESSOR_INFO_CE *) env->response;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
response->COM = XCP_COMMAND_CONNECT;
|
response->COM = XCP_COMMAND_CONNECT;
|
||||||
|
|
||||||
|
|
@ -1190,12 +1269,15 @@ static uint8_t XCP_GET_PGM_PROCESSOR_INFO_CE(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_GET_SECTOR_INFO_CD(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_GET_SECTOR_INFO_CD(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_REQ_GET_SECTOR_INFO_CD *request = (eXcpCommand_REQ_GET_SECTOR_INFO_CD *) env->canFrame.data;
|
eXcpCommand_REQ_GET_SECTOR_INFO_CD *request = (eXcpCommand_REQ_GET_SECTOR_INFO_CD *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_PGM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_PGM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (request->SECTOR_NUMBER > PROGRAM_MAX_SECTOR) {
|
if (request->SECTOR_NUMBER > PROGRAM_MAX_SECTOR) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
|
|
@ -1246,12 +1328,14 @@ static uint8_t XCP_SET_CALIBRATION_PAGE_EB(tCanSerialPortFrameXCP *env) {
|
||||||
static uint8_t XCP_GET_CAL_PAGE_EA(tCanSerialPortFrameXCP *env) {
|
static uint8_t XCP_GET_CAL_PAGE_EA(tCanSerialPortFrameXCP *env) {
|
||||||
eXcpCommand_XCP_GET_CAL_PAGE_EA *request = (eXcpCommand_XCP_GET_CAL_PAGE_EA *) env->canFrame.data;
|
eXcpCommand_XCP_GET_CAL_PAGE_EA *request = (eXcpCommand_XCP_GET_CAL_PAGE_EA *) env->canFrame.data;
|
||||||
|
|
||||||
|
#if (PROTECT_CAL_PAG == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_CAL_PAG) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
env->response[0] = XCP_COMMAND_CONNECT;
|
env->response[0] = XCP_COMMAND_CONNECT;
|
||||||
env->response[1] = env->PAGE_ID;
|
env->response[1] = env->PAGE_ID;
|
||||||
|
|
@ -1564,6 +1648,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
||||||
|
|
||||||
} else { // ODT
|
} else { // ODT
|
||||||
|
|
||||||
|
#if (PROTECT_STIM == 1)
|
||||||
if (isUNLOCK(env, XCP_PROTECT_STM) == false) {
|
if (isUNLOCK(env, XCP_PROTECT_STM) == false) {
|
||||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||||
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
env->response[1] = XCP_ERR_ACCESS_LOCKED;
|
||||||
|
|
@ -1571,6 +1656,9 @@ 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, timeout);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
XCP_GET_DAQ_STM(env);
|
XCP_GET_DAQ_STM(env);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue