Обновление
This commit is contained in:
parent
d81f98ed8b
commit
9cde8e5ead
|
|
@ -218,14 +218,21 @@ typedef struct __attribute__ ((packed)) {
|
|||
#define MAX_CTO 8
|
||||
#define MAX_DTO 8
|
||||
|
||||
#define MAX_DAO 6
|
||||
#define MAX_ODT 20
|
||||
#define MAX_ODT_ENTRIES_SIZE 6
|
||||
#define BODY_MAX_LEN (MAX_DTO - 2)
|
||||
|
||||
#define MAX_DAO 20
|
||||
#define MAX_ODT 10
|
||||
#define MAX_ODT_ENTRIES_SIZE 7
|
||||
|
||||
#define MAX_EVENT_CHANNEL 1
|
||||
|
||||
typedef struct {
|
||||
uint8_t DATA[BODY_MAX_LEN];
|
||||
} tXCP_DATA_STIM;
|
||||
|
||||
typedef struct {
|
||||
uint8_t ODT_ENTRIES_COUNT;
|
||||
tXCP_DATA_STIM DATA_STM[MAX_ODT_ENTRIES_SIZE];
|
||||
uint8_t BIT_OFFSET[MAX_ODT_ENTRIES_SIZE];
|
||||
uint8_t ADR_EXT[MAX_ODT_ENTRIES_SIZE];
|
||||
uint8_t ODT_ENTRIES_SIZE[MAX_ODT_ENTRIES_SIZE];
|
||||
|
|
@ -453,6 +460,8 @@ typedef struct {
|
|||
uint8_t downloadRemaining;
|
||||
uint8_t response[8];
|
||||
|
||||
uint8_t DATA[MAX_ODT_ENTRIES_SIZE * BODY_MAX_LEN];
|
||||
|
||||
//tXCP_EVENT_CHANNEL EVENT_CHANNEL[MAX_EVENT_CHANNEL];
|
||||
tXCP_DAQ DAQ[MAX_DAO];
|
||||
uint16_t DAQ_COUNT;
|
||||
|
|
|
|||
|
|
@ -312,17 +312,18 @@ uint8_t XCP_GET_DAQ_LIST_INFO_216(tCanSerialPortFrameXCP *env) {
|
|||
|
||||
uint8_t XCP_FREE_DAQ_214(tCanSerialPortFrameXCP *env) {
|
||||
env->DAQ_COUNT = 0;
|
||||
memset(env->DAQ, 0, sizeof(env->DAQ));
|
||||
|
||||
for (uint16_t i = 0; i < MAX_DAO; ++i) {
|
||||
// for (uint16_t i = 0; i < MAX_DAO; ++i) {
|
||||
|
||||
env->DAQ[i].SELECTED = 0;
|
||||
env->DAQ[i].RUNNING = 0;
|
||||
env->DAQ[i].ODT_COUNT = 0;
|
||||
// env->DAQ[i].SELECTED = 0;
|
||||
// env->DAQ[i].RUNNING = 0;
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
// for (uint8_t j = 0; j < MAX_ODT; ++j) {
|
||||
// env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT = 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
env->response[0] = XCP_COMMAND_CONNECT;
|
||||
return 1;
|
||||
|
|
@ -903,7 +904,7 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
|||
}
|
||||
|
||||
_Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
|
||||
uint8_t response_size;
|
||||
uint8_t size;
|
||||
|
||||
while (1) {
|
||||
|
||||
|
|
@ -922,33 +923,49 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
|
|||
|
||||
env->response[0] = j; // ODT
|
||||
env->response[1] = i; // DAQ
|
||||
response_size = 0;
|
||||
size = 0;
|
||||
|
||||
for (uint8_t k = 0; k < env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT; ++k) {
|
||||
|
||||
memcpy(&env->response[2] + response_size,
|
||||
memcpy(&env->DATA[size],
|
||||
(uint8_t *) env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_ADR[k],
|
||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
|
||||
|
||||
response_size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||
|
||||
}
|
||||
|
||||
if (response_size) {
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, 1000);
|
||||
uint8_t count_size = size / BODY_MAX_LEN;
|
||||
uint8_t count_size_tail = size % BODY_MAX_LEN;
|
||||
|
||||
size = 0;
|
||||
|
||||
for (uint8_t k = 0; k < count_size; ++k) {
|
||||
memcpy(&env->response[2], &env->DATA[size], BODY_MAX_LEN);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, MAX_DTO, 1000);
|
||||
size += 6;
|
||||
}
|
||||
|
||||
if (count_size_tail) {
|
||||
memcpy(&env->response[2], &env->DATA[size], count_size_tail);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, count_size_tail, 1000);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} else { // STIM - DTO
|
||||
|
||||
for (uint8_t j = 0; j < env->DAQ[i].ODT_COUNT; ++j) {
|
||||
|
||||
size = 0;
|
||||
|
||||
for (uint8_t k = 0; k < env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT; ++k) {
|
||||
|
||||
memcpy(&env->response[2] + response_size,
|
||||
(uint8_t *) env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_ADR[k],
|
||||
memcpy((uint8_t *) env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_ADR[k],
|
||||
&env->DAQ[i].ODT_NUMBER[j].DATA_STM[size],
|
||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
|
||||
|
||||
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue