Обновление

This commit is contained in:
cfif 2025-11-11 14:52:46 +03:00
parent 9cde8e5ead
commit 5d3da3d028
1 changed files with 45 additions and 12 deletions

View File

@ -925,13 +925,17 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
env->response[1] = i; // DAQ
size = 0;
for (uint8_t k = 0; k < env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT; ++k) {
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
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]);
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
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]);
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
}
}
@ -943,12 +947,13 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
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;
size += BODY_MAX_LEN;
}
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);
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, count_size_tail,
1000);
}
@ -959,15 +964,43 @@ _Noreturn void CanXcpProcessing_ServiceTask(tCanSerialPortFrameXCP *env) {
size = 0;
for (uint8_t k = 0; k < env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_COUNT; ++k) {
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++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]);
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
memcpy(&env->DATA[size],
env->DAQ[i].ODT_NUMBER[j].DATA_STM[k].DATA,
env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]);
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
}
size += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
}
uint8_t size_stim = size;
for (uint8_t k = 0; k < MAX_ODT_ENTRIES_SIZE; ++k) {
if (env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k]) {
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]);
size_stim += env->DAQ[i].ODT_NUMBER[j].ODT_ENTRIES_SIZE[k];
} else {
asm("nop");
}
}
}
}
}