Обновление

This commit is contained in:
cfif 2025-12-17 17:28:47 +03:00
parent a8ca120cc3
commit f0e42d2be5
2 changed files with 47 additions and 3 deletions

View File

@ -7,6 +7,10 @@
#include "CanPorts.h"
#include "fc7xxx_driver_lin.h"
#include "Lins.h"
#include "LoggerInterface.h"
#define LOG_SIGN "Lin0"
#define LOGGER env->logger
//начало----------------------------------------- LIN 0 ----------------------------------------------------------------
//начало----------------------------------------- LIN 0 ----------------------------------------------------------------
@ -522,10 +526,12 @@ lin_event_id_t CFR_PRG_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
*/
void Lin_0_Init(tLinTaskActuator *env,
tLinData *linData,
tLinIO *linIO) {
tLinIO *linIO,
tLoggerInterface *logger) {
env->linIo = linIO;
env->linData = linData;
env->logger = logger;
env->access = osMutexNew(NULL);
InitThreadAtrStatic(&env->thread.attr, "Lin0", env->thread.controlBlock, env->thread.stack,
@ -693,8 +699,17 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) {
env->linStateActuator[BUS_ADR].Error2_Communication_Slave = Error2_Communication_Slave;
env->linStateActuator[BUS_ADR].Error3_Temperature_Slave = Error3_Temperature_Slave;
env->linStateActuator[BUS_ADR].Error4_Permanent_Electrical_Slave = Error4_Permanent_Electrical_Slave;
if (env->linStateActuator[BUS_ADR].Stall_Slave == LIN_STALL_STA_OFF) {
env->linStateActuator[BUS_ADR].Stall_Slave = Stall_Slave;
}
env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave;
LoggerFormatInfo(LOGGER, LOG_SIGN, "BUS_ADR = %d, CPOS_ALL = %d, Stall_Slave = %d", BUS_ADR,
env->linStateActuator[BUS_ADR].CPOS_ALL,
env->linStateActuator[BUS_ADR].Stall_Slave)
} else {
asm("nop");
}
@ -734,6 +749,29 @@ static void isEnterCommand(tLinTaskActuator *env) {
}
void resetStall(tLinTaskActuator *env) {
for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) {
env->linStateActuator[i].Stall_Slave = LIN_STALL_STA_OFF;
if (env->linCommandActuator[i].BUS_ADR == 0x20) {
for (uint8_t j = 0; j < LIN0_ISSR_ALL; ++j) {
env->linStateActuator[j].Stall_Slave = LIN_STALL_STA_OFF;
}
return;
}
}
}
}
static _Noreturn void Lin0_Thread(tLinTaskActuator *env) {
for (;;) {

View File

@ -8,6 +8,7 @@
#include <cmsis_os.h>
#include "stdbool.h"
#include "LinIO.h"
#include "LoggerInterface.h"
typedef struct __attribute__ ((packed)) {
@ -461,6 +462,8 @@ typedef struct {
tLinData *linData;
tLoggerInterface *logger;
struct {
osThreadId_t id;
uint32_t stack[1024];
@ -472,10 +475,13 @@ typedef struct {
void Lin_0_Init(tLinTaskActuator *env,
tLinData *linData,
tLinIO *linIO);
tLinIO *linIO,
tLoggerInterface *logger);
void Lin0_StartThread(tLinTaskActuator *env);
void GetLin0CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
void resetStall(tLinTaskActuator *env);
#endif //HVAC_LIN_TASKS_H