Обновление
This commit is contained in:
parent
3f3b2eab06
commit
a6c05be8f1
|
|
@ -425,6 +425,11 @@ typedef struct __attribute__ ((packed)) {
|
|||
uint16_t EVENT_CHANNEL_NUMBER;
|
||||
} eXcpCommand_GET_DAQ_EVENT_INFO_GET;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
uint8_t ODT;
|
||||
uint8_t DAQ;
|
||||
} eXcpCommand_GET_DAQ_STM;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
eXcpTypeCommand COM;
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ void CanSerialPortFrameXcpInit(
|
|||
InitThreadBlock(env->T_can_Listener_XCP, "CanListenerXCP", osPriorityNormal);
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_CONNECT_255(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_CONNECT_255(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_CONNECT *xcpCommand_CONNECT = (eXcpCommand_CONNECT *) env->response;
|
||||
|
||||
xcpCommand_CONNECT->COM = XCP_COMMAND_CONNECT;
|
||||
|
|
@ -78,14 +78,14 @@ uint8_t XCP_COMMAND_CONNECT_255(tCanSerialPortFrameXCP *env) {
|
|||
return 8;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_DISCONNECT_254(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_DISCONNECT_254(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
env->response[0] = XCP_COMMAND_CONNECT;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_GET_STATUS_253(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_GET_STATUS_253(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_GET_STATUS *xcpCommand_GET_STATUS = (eXcpCommand_GET_STATUS *) env->response;
|
||||
|
||||
xcpCommand_GET_STATUS->COM = XCP_COMMAND_CONNECT;
|
||||
|
|
@ -115,14 +115,14 @@ uint8_t XCP_COMMAND_GET_STATUS_253(tCanSerialPortFrameXCP *env) {
|
|||
return 8;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_SYNCH_252(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_SYNCH_252(tCanSerialPortFrameXCP *env) {
|
||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||
env->response[1] = XCP_ERR_CMD_SYNCH;
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
uint8_t XCP_GET_COMM_MODE_INFO_251(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_COMM_MODE_INFO_251(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_GET_COMM_MODE_INFO *xcpCommand_GET_COMM_MODE_INFO = (eXcpCommand_GET_COMM_MODE_INFO *) env->response;
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ uint8_t XCP_GET_COMM_MODE_INFO_251(tCanSerialPortFrameXCP *env) {
|
|||
return 8;
|
||||
}
|
||||
|
||||
uint8_t XCP_GET_SEED_248(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_SEED_248(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_REQ_GET_SEED *request = (eXcpCommand_REQ_GET_SEED *) env->canFrame.data;
|
||||
|
||||
eXcpCommand_GET_SEED *xcpCommand_GET_SEED = (eXcpCommand_GET_SEED *) env->response;
|
||||
|
|
@ -154,7 +154,7 @@ uint8_t XCP_GET_SEED_248(tCanSerialPortFrameXCP *env) {
|
|||
return 6;
|
||||
}
|
||||
|
||||
uint8_t XCP_UNLOCK_247(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_UNLOCK_247(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_REQ_UNLOCK *request = (eXcpCommand_REQ_UNLOCK *) env->canFrame.data;
|
||||
|
||||
uint32_t securitySeedMy = SeedToKeyHVAC_NAMI(env->RND, 0x11223344);
|
||||
|
|
@ -170,7 +170,7 @@ uint8_t XCP_UNLOCK_247(tCanSerialPortFrameXCP *env) {
|
|||
return 2;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_SET_MTA_246(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_SET_MTA_246(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_SET_MTA *request = (eXcpCommand_SET_MTA *) env->canFrame.data;
|
||||
|
||||
env->ADR_EXT = request->ADR_EX;
|
||||
|
|
@ -181,7 +181,7 @@ uint8_t XCP_COMMAND_SET_MTA_246(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_UPLOAD_245(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_UPLOAD_245(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_Upload *request = (eXcpCommand_Upload *) env->canFrame.data;
|
||||
|
||||
env->response[0] = XCP_COMMAND_CONNECT;
|
||||
|
|
@ -204,7 +204,7 @@ uint8_t XCP_COMMAND_UPLOAD_245(tCanSerialPortFrameXCP *env) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_SHORT_UPLOAD_244(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_SHORT_UPLOAD_244(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_SHORT_UPLOAD *request = (eXcpCommand_SHORT_UPLOAD *) env->canFrame.data;
|
||||
|
||||
if (request->COUNT > (MAX_CTO - 1)) {
|
||||
|
|
@ -221,7 +221,7 @@ uint8_t XCP_COMMAND_SHORT_UPLOAD_244(tCanSerialPortFrameXCP *env) {
|
|||
return request->COUNT + 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_DOWNLOAD_240(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_DOWNLOAD_240(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
||||
|
||||
|
|
@ -236,7 +236,7 @@ uint8_t XCP_COMMAND_DOWNLOAD_240(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_DOWNLOAD_NEXT_239(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_DOWNLOAD_NEXT_239(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_Download *request = (eXcpCommand_Download *) env->canFrame.data;
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ uint8_t XCP_COMMAND_DOWNLOAD_NEXT_239(tCanSerialPortFrameXCP *env) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint8_t XCP_COMMAND_DOWNLOAD_MAX_238(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_COMMAND_DOWNLOAD_MAX_238(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
uint8_t COUNT = env->canFrame.dlc - 1;
|
||||
|
||||
|
|
@ -275,7 +275,7 @@ uint8_t XCP_COMMAND_DOWNLOAD_MAX_238(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_CLEAR_DAQ_LIST_227(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_CLEAR_DAQ_LIST_227(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
env->response[0] = XCP_COMMAND_CONNECT;
|
||||
|
||||
|
|
@ -283,7 +283,7 @@ uint8_t XCP_CLEAR_DAQ_LIST_227(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_GET_DAQ_LIST_INFO_216(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_DAQ_LIST_INFO_216(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_Get_DAQ_List_Info_Request *request = (eXcpCommand_Get_DAQ_List_Info_Request *) env->canFrame.data;
|
||||
|
||||
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
||||
|
|
@ -310,7 +310,7 @@ uint8_t XCP_GET_DAQ_LIST_INFO_216(tCanSerialPortFrameXCP *env) {
|
|||
return 6;
|
||||
}
|
||||
|
||||
uint8_t XCP_FREE_DAQ_214(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_FREE_DAQ_214(tCanSerialPortFrameXCP *env) {
|
||||
env->DAQ_COUNT = 0;
|
||||
memset(env->DAQ, 0, sizeof(env->DAQ));
|
||||
|
||||
|
|
@ -329,7 +329,7 @@ uint8_t XCP_FREE_DAQ_214(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_ALLOC_DAQ_213(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_ALLOC_DAQ_213(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_ALLOC_DAQ *request = (eXcpCommand_ALLOC_DAQ *) env->canFrame.data;
|
||||
|
||||
env->DAQ_COUNT = request->DAQ_COUNT;
|
||||
|
|
@ -338,7 +338,7 @@ uint8_t XCP_ALLOC_DAQ_213(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_ALLOC_ODT_212(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_ALLOC_ODT_212(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_ALLOC_ODT *request = (eXcpCommand_ALLOC_ODT *) env->canFrame.data;
|
||||
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].ODT_COUNT = request->ODT_COUNT;
|
||||
|
|
@ -348,7 +348,7 @@ uint8_t XCP_ALLOC_ODT_212(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_ALLOC_ODT_ENTRY_211(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_ALLOC_ODT_ENTRY_211(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_ALLOC_ODT_ENTRY *request = (eXcpCommand_ALLOC_ODT_ENTRY *) env->canFrame.data;
|
||||
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].ODT_NUMBER[request->ODT_NUMBER].ODT_ENTRIES_COUNT = request->ODT_ENTRIES_COUNT;
|
||||
|
|
@ -358,7 +358,7 @@ uint8_t XCP_ALLOC_ODT_ENTRY_211(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_SET_DAQ_PTR_226(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_SET_DAQ_PTR_226(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_SET_DAQ_PTR *request = (eXcpCommand_SET_DAQ_PTR *) env->canFrame.data;
|
||||
|
||||
if ((request->DAQ_LIST_NUMBER > MAX_DAO) ||
|
||||
|
|
@ -380,7 +380,7 @@ uint8_t XCP_SET_DAQ_PTR_226(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_WRITE_DAQ_225(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_WRITE_DAQ_225(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_WRITE_DAQ *request = (eXcpCommand_WRITE_DAQ *) env->canFrame.data;
|
||||
|
||||
if (env->ODT_ENTRY_NUMBER > MAX_ODT_ENTRIES_SIZE) {
|
||||
|
|
@ -402,7 +402,7 @@ uint8_t XCP_WRITE_DAQ_225(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_SET_DAQ_LIST_MODE_224(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_SET_DAQ_LIST_MODE_224(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_SET_DAQ_LIST_MODE *request = (eXcpCommand_SET_DAQ_LIST_MODE *) env->canFrame.data;
|
||||
|
||||
if ((request->DAQ_LIST_NUMBER > MAX_DAO) || (request->EVENT_CHANNEL_NUMBER > MAX_EVENT_CHANNEL)) {
|
||||
|
|
@ -429,7 +429,7 @@ uint8_t XCP_SET_DAQ_LIST_MODE_224(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_START_STOP_DAQ_LIST_222(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_START_STOP_DAQ_LIST_222(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_START_STOP_DAQ_LIST *request = (eXcpCommand_START_STOP_DAQ_LIST *) env->canFrame.data;
|
||||
|
||||
if (request->DAQ_LIST_NUMBER > MAX_DAO) {
|
||||
|
|
@ -455,7 +455,7 @@ uint8_t XCP_START_STOP_DAQ_LIST_222(tCanSerialPortFrameXCP *env) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
uint8_t XCP_START_STOP_SYNCH_221(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_START_STOP_SYNCH_221(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_START_STOP_SYNCH *request = (eXcpCommand_START_STOP_SYNCH *) env->canFrame.data;
|
||||
|
||||
if (request->MODE == XCP_SYNC_START_SEL) {
|
||||
|
|
@ -484,7 +484,7 @@ uint8_t XCP_START_STOP_SYNCH_221(tCanSerialPortFrameXCP *env) {
|
|||
return 2;
|
||||
}
|
||||
|
||||
uint8_t XCP_READ_DAQ_219(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_READ_DAQ_219(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_WRITE_DAQ *response = (eXcpCommand_WRITE_DAQ *) env->response;
|
||||
|
||||
response->COM = XCP_COMMAND_CONNECT;
|
||||
|
|
@ -498,7 +498,7 @@ uint8_t XCP_READ_DAQ_219(tCanSerialPortFrameXCP *env) {
|
|||
return 8;
|
||||
}
|
||||
|
||||
uint8_t XCP_GET_DAQ_PROCESSOR_INFO_218(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_DAQ_PROCESSOR_INFO_218(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_GET_DAQ_PROCESSOR_INFO *response = (eXcpCommand_GET_DAQ_PROCESSOR_INFO *) env->response;
|
||||
|
||||
|
|
@ -530,7 +530,7 @@ uint8_t XCP_GET_DAQ_PROCESSOR_INFO_218(tCanSerialPortFrameXCP *env) {
|
|||
return 8;
|
||||
}
|
||||
|
||||
uint8_t XCP_GET_DAQ_RESOLUTION_INFO_217(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_DAQ_RESOLUTION_INFO_217(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_GET_DAQ_RESOLUTION_INFO *response = (eXcpCommand_GET_DAQ_RESOLUTION_INFO *) env->response;
|
||||
|
||||
response->COM = XCP_COMMAND_CONNECT;
|
||||
|
|
@ -546,7 +546,7 @@ uint8_t XCP_GET_DAQ_RESOLUTION_INFO_217(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_GET_DAQ_LIST_MODE_223(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_DAQ_LIST_MODE_223(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_GET_DAQ_LIST_MODE_GET *request = (eXcpCommand_GET_DAQ_LIST_MODE_GET *) env->canFrame.data;
|
||||
|
||||
|
|
@ -579,7 +579,7 @@ uint8_t XCP_GET_DAQ_LIST_MODE_223(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
|
||||
uint8_t XCP_GET_DAQ_EVENT_INFO_215(tCanSerialPortFrameXCP *env) {
|
||||
static uint8_t XCP_GET_DAQ_EVENT_INFO_215(tCanSerialPortFrameXCP *env) {
|
||||
|
||||
eXcpCommand_GET_DAQ_EVENT_INFO_GET *request = (eXcpCommand_GET_DAQ_EVENT_INFO_GET *) env->canFrame.data;
|
||||
|
||||
|
|
@ -612,6 +612,15 @@ uint8_t XCP_GET_DAQ_EVENT_INFO_215(tCanSerialPortFrameXCP *env) {
|
|||
return 7;
|
||||
}
|
||||
|
||||
static uint8_t XCP_GET_DAQ_STM(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_GET_DAQ_STM *response = (eXcpCommand_GET_DAQ_STM *) env->canFrame.data;
|
||||
|
||||
memcpy(env->DAQ[response->DAQ].ODT_NUMBER[response->ODT].DATA_STM, &env->canFrame.data[3], env->canFrame.dlc - 2);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
const xcp_func_ptr fXcp_func_ptr[256] = {
|
||||
NULL,
|
||||
NULL,
|
||||
|
|
@ -885,16 +894,22 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
|||
|
||||
eXcpTypeCommand com = env->canFrame.data[0];
|
||||
|
||||
if (fXcp_func_ptr[com] != NULL) {
|
||||
if (com > 0xBF) { // CMD
|
||||
|
||||
response_size = fXcp_func_ptr[com](env);
|
||||
if (fXcp_func_ptr[com] != NULL) {
|
||||
|
||||
response_size = fXcp_func_ptr[com](env);
|
||||
|
||||
if (response_size) {
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, timeout);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
if (response_size) {
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, timeout);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
} else { // ODT
|
||||
XCP_GET_DAQ_STM(env);
|
||||
}
|
||||
|
||||
osMutexRelease(env->access);
|
||||
|
|
|
|||
Loading…
Reference in New Issue