Обновление
This commit is contained in:
parent
854cb82eea
commit
52394d3347
|
|
@ -210,16 +210,28 @@ typedef struct __attribute__ ((packed)) {
|
|||
} eXcpCommand_SET_DAQ_PTR;
|
||||
|
||||
#define MAX_DAO 1
|
||||
#define MAX_ODT 50
|
||||
#define MAX_ODT_ENTRIES_SIZE 14
|
||||
#define MAX_ODT 60
|
||||
#define MAX_ODT_ENTRIES_SIZE 16
|
||||
|
||||
typedef struct {
|
||||
uint8_t ODT_ENTRIES_COUNT;
|
||||
uint8_t ODT_ENTRIES_SIZE[MAX_ODT_ENTRIES_SIZE];
|
||||
uint32_t ODT_ENTRIES_ADR[MAX_ODT_ENTRIES_SIZE];
|
||||
} tXCP_ODT_ENTRIES;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t ODT_ENTRIES_COUNT[MAX_ODT];
|
||||
uint8_t ALTERNATING;
|
||||
uint8_t DIRECTION;
|
||||
uint8_t DTO_CTR;
|
||||
uint8_t TIMESTAMP;
|
||||
uint8_t PID_OFF;
|
||||
uint16_t EVENT_CHANNEL_NUMBER;
|
||||
uint8_t TRANSMISSION_RATE_PRESCALER;
|
||||
uint8_t DAQ_LIST_PRIORITY;
|
||||
|
||||
uint8_t ODT_COUNT;
|
||||
|
||||
tXCP_ODT_ENTRIES ODT_NUMBER[MAX_ODT];
|
||||
} tXCP_DAQ;
|
||||
|
||||
|
|
@ -273,6 +285,34 @@ typedef struct __attribute__ ((packed)) {
|
|||
uint8_t DAQ_LIST_PRIORITY;
|
||||
} eXcpCommand_SET_DAQ_LIST_MODE;
|
||||
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
eXcpTypeCommand COM;
|
||||
uint8_t MODE;
|
||||
uint8_t DAQ_LIST_NUMBER;
|
||||
} eXcpCommand_START_STOP_DAQ_LIST;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
eXcpTypeCommand COM;
|
||||
uint8_t RESERVED;
|
||||
uint16_t DAQ_COUNT;
|
||||
} eXcpCommand_ALLOC_DAQ;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
eXcpTypeCommand COM;
|
||||
uint8_t RESERVED;
|
||||
uint8_t DAQ_LIST_NUMBER;
|
||||
uint8_t ODT_COUNT;
|
||||
} eXcpCommand_ALLOC_ODT;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
eXcpTypeCommand COM;
|
||||
uint8_t RESERVED;
|
||||
uint8_t DAQ_LIST_NUMBER;
|
||||
uint8_t ODT_NUMBER;
|
||||
uint8_t ODT_ENTRIES_COUNT;
|
||||
} eXcpCommand_ALLOC_ODT_ENTRY;
|
||||
|
||||
typedef struct {
|
||||
tSerialPortFrameIO *ioCanFrame;
|
||||
tLoggerInterface *logger;
|
||||
|
|
@ -291,6 +331,9 @@ typedef struct {
|
|||
uint8_t response[8];
|
||||
|
||||
tXCP_DAQ DAQ[MAX_DAO];
|
||||
uint16_t DAQ_COUNT;
|
||||
|
||||
tRtcIO *rtcIO;
|
||||
|
||||
tStaticThreadBlock(1024) T_can_Listener_XCP;
|
||||
|
||||
|
|
@ -302,6 +345,7 @@ typedef uint8_t (*xcp_func_ptr)(tCanSerialPortFrameXCP *env);
|
|||
void CanSerialPortFrameXcpInit(
|
||||
tCanSerialPortFrameXCP *env,
|
||||
tSerialPortFrameIO *ioCanFrame,
|
||||
tRtcIO *rtcIO,
|
||||
tLoggerInterface *logger
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -33,11 +33,12 @@ static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedI
|
|||
void CanSerialPortFrameXcpInit(
|
||||
tCanSerialPortFrameXCP *env,
|
||||
tSerialPortFrameIO *ioCanFrame,
|
||||
tRtcIO *rtcIO,
|
||||
tLoggerInterface *logger
|
||||
) {
|
||||
env->ioCanFrame = ioCanFrame;
|
||||
|
||||
|
||||
env->rtcIO = rtcIO;
|
||||
env->logger = logger;
|
||||
|
||||
InitThreadBlock(env->T_can_Listener_XCP, "CanListenerXCP", osPriorityNormal);
|
||||
|
|
@ -306,24 +307,40 @@ uint8_t XCP_GET_DAQ_LIST_INFO_216(tCanSerialPortFrameXCP *env) {
|
|||
}
|
||||
|
||||
uint8_t XCP_FREE_DAQ_214(tCanSerialPortFrameXCP *env) {
|
||||
env->DAQ_COUNT = 0;
|
||||
|
||||
for (uint16_t i = 0; i < MAX_DAO; ++i) {
|
||||
env->DAQ[i].ODT_COUNT = 0;
|
||||
|
||||
for (uint8_t j = 0; j < MAX_ODT; ++j) {
|
||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint8_t XCP_ALLOC_DAQ_213(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_ALLOC_DAQ *request = (eXcpCommand_ALLOC_DAQ *) env->canFrame.data;
|
||||
|
||||
env->DAQ_COUNT = request->DAQ_COUNT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint8_t XCP_ALLOC_ODT_ENTRY_211(tCanSerialPortFrameXCP *env) {
|
||||
eXcpCommand_DAQ_Alloc_ODR_Entry *request = (eXcpCommand_DAQ_Alloc_ODR_Entry *) env->canFrame.data;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].ODT_ENTRIES_COUNT[request->DAQ_LIST_NUMBER] = request->ODT_ENTRIES_COUNT;
|
||||
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;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -370,11 +387,39 @@ uint8_t XCP_WRITE_DAQ_225(tCanSerialPortFrameXCP *env) {
|
|||
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) {
|
||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||
env->response[1] = XCP_ERR_OUT_OF_RANGE;
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].ALTERNATING = request->ALTERNATING;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].DIRECTION = request->DIRECTION;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].DTO_CTR = request->DTO_CTR;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].TIMESTAMP = request->TIMESTAMP;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].PID_OFF = request->PID_OFF;
|
||||
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].EVENT_CHANNEL_NUMBER = request->EVENT_CHANNEL_NUMBER;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].TRANSMISSION_RATE_PRESCALER = request->TRANSMISSION_RATE_PRESCALER;
|
||||
env->DAQ[request->DAQ_LIST_NUMBER].DAQ_LIST_PRIORITY = request->DAQ_LIST_PRIORITY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
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) {
|
||||
env->response[0] = XCP_COMMAND_DISCONNECT;
|
||||
env->response[1] = XCP_ERR_OUT_OF_RANGE;
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const xcp_func_ptr fXcp_func_ptr[256] = {
|
||||
|
|
@ -600,7 +645,7 @@ const xcp_func_ptr fXcp_func_ptr[256] = {
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
XCP_START_STOP_DAQ_LIST_222,
|
||||
NULL,
|
||||
XCP_SET_DAQ_LIST_MODE_224,
|
||||
XCP_WRITE_DAQ_225,
|
||||
|
|
@ -662,8 +707,6 @@ eXcpResult vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 tim
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
_Noreturn void CanXcpProcessing_ListenerTask(tCanSerialPortFrameXCP *env) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue