Обновление
This commit is contained in:
parent
5d3da3d028
commit
3f3b2eab06
|
|
@ -232,6 +232,7 @@ typedef struct {
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t ODT_ENTRIES_COUNT;
|
uint8_t ODT_ENTRIES_COUNT;
|
||||||
|
uint8_t IS_STIM_RECEIVED;
|
||||||
tXCP_DATA_STIM DATA_STM[MAX_ODT_ENTRIES_SIZE];
|
tXCP_DATA_STIM DATA_STM[MAX_ODT_ENTRIES_SIZE];
|
||||||
uint8_t BIT_OFFSET[MAX_ODT_ENTRIES_SIZE];
|
uint8_t BIT_OFFSET[MAX_ODT_ENTRIES_SIZE];
|
||||||
uint8_t ADR_EXT[MAX_ODT_ENTRIES_SIZE];
|
uint8_t ADR_EXT[MAX_ODT_ENTRIES_SIZE];
|
||||||
|
|
|
||||||
|
|
@ -927,13 +927,15 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
||||||
|
|
||||||
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
|
uint8_t ODT_ENTRIES_SIZE = env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||||
|
|
||||||
|
if (ODT_ENTRIES_SIZE) {
|
||||||
|
|
||||||
memcpy(&env->DATA[size],
|
memcpy(&env->DATA[size],
|
||||||
(uint8_t *) env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_ADR[k],
|
(uint8_t *) env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_ADR[k],
|
||||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
|
ODT_ENTRIES_SIZE);
|
||||||
|
|
||||||
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
size += ODT_ENTRIES_SIZE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -966,39 +968,46 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
|
||||||
|
|
||||||
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
||||||
|
|
||||||
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
|
uint8_t ODT_ENTRIES_SIZE = env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||||
|
|
||||||
|
if (ODT_ENTRIES_SIZE) {
|
||||||
|
|
||||||
memcpy(&env->DATA[size],
|
memcpy(&env->DATA[size],
|
||||||
env->DAQ[i].ODT_NUMBER[j].DATA_STM[k].DATA,
|
env->DAQ[i].ODT_NUMBER[j].DATA_STM[k].DATA,
|
||||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
|
ODT_ENTRIES_SIZE);
|
||||||
|
|
||||||
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
size += ODT_ENTRIES_SIZE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t size_stim = size;
|
uint8_t size_stim = 0;
|
||||||
|
|
||||||
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
|
||||||
|
|
||||||
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
|
if (env->DAQ[i].ODT_NUMBER[j].IS_STIM_RECEIVED) {
|
||||||
|
|
||||||
if (size_stim <= size) {
|
uint8_t ODT_ENTRIES_SIZE = env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
||||||
|
|
||||||
|
if (ODT_ENTRIES_SIZE) {
|
||||||
|
|
||||||
|
if ((size_stim + ODT_ENTRIES_SIZE) <= size) {
|
||||||
memcpy((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[k].DATA[size_stim],
|
&env->DAQ[i].ODT_NUMBER[j].DATA_STM[k].DATA[size_stim],
|
||||||
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
|
ODT_ENTRIES_SIZE);
|
||||||
|
|
||||||
size_stim += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
|
size_stim += ODT_ENTRIES_SIZE;
|
||||||
} else {
|
} else {
|
||||||
asm("nop");
|
asm("nop");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
env->DAQ[i].ODT_NUMBER[j].IS_STIM_RECEIVED = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue