Обновление

This commit is contained in:
cfif 2025-11-12 09:32:15 +03:00
parent 5d3da3d028
commit 3f3b2eab06
2 changed files with 27 additions and 17 deletions

View File

@ -232,6 +232,7 @@ typedef struct {
typedef struct {
uint8_t ODT_ENTRIES_COUNT;
uint8_t IS_STIM_RECEIVED;
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];

View File

@ -927,13 +927,15 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
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],
(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,41 +968,48 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
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],
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) {
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) {
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].ODT_ENTRIES_SIZE[k]);
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],
&env->DAQ[i].ODT_NUMBER[j].DATA_STM[k].DATA[size_stim],
ODT_ENTRIES_SIZE);
size_stim += ODT_ENTRIES_SIZE;
} else {
asm("nop");
}
size_stim += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
} else {
asm("nop");
}
env->DAQ[i].ODT_NUMBER[j].IS_STIM_RECEIVED = 0;
}
}
}
}