Обновление

This commit is contained in:
cfif 2026-04-16 11:08:33 +03:00
parent fc9c5e7b04
commit 8f478c98e2
2 changed files with 57 additions and 52 deletions

View File

@ -8,6 +8,7 @@
#include "fc7xxx_driver_lin.h" #include "fc7xxx_driver_lin.h"
#include "Lins.h" #include "Lins.h"
#include "LoggerInterface.h" #include "LoggerInterface.h"
#include "string.h"
//#define LOG_SIGN "Lin0" //#define LOG_SIGN "Lin0"
#define LOGGER env->logger #define LOGGER env->logger
@ -543,6 +544,8 @@ static bool setState20(tLinTaskActuator *env, bool isError, uint8_t index) {
env->linCommandActuator[index].COM = LIN_ACT_CFR_SUCCESSFUL; env->linCommandActuator[index].COM = LIN_ACT_CFR_SUCCESSFUL;
env->linCommandActuator[index].isRFR_STA = 1; env->linCommandActuator[index].isRFR_STA = 1;
env->linStateActuator[index].Stall_Slave = LIN_STALL_STA_OFF;
if (env->linCommandActuator[index].BUS_ADR == 0) { if (env->linCommandActuator[index].BUS_ADR == 0) {
if (isBroadCast(env)) { if (isBroadCast(env)) {
@ -552,6 +555,8 @@ static bool setState20(tLinTaskActuator *env, bool isError, uint8_t index) {
env->linCommandActuator[j].COM = LIN_ACT_CFR_SUCCESSFUL; env->linCommandActuator[j].COM = LIN_ACT_CFR_SUCCESSFUL;
env->linCommandActuator[j].isRFR_STA = 1; env->linCommandActuator[j].isRFR_STA = 1;
env->linStateActuator[index].Stall_Slave = LIN_STALL_STA_OFF;
if (isError) { if (isError) {
env->linStateActuator[j].error_connect = 1; env->linStateActuator[j].error_connect = 1;
} else { } else {
@ -566,7 +571,7 @@ static bool setState20(tLinTaskActuator *env, bool isError, uint8_t index) {
return false; return false;
} }
static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) { static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env) {
lin_event_id_t ret = LIN_NO_EVENT; lin_event_id_t ret = LIN_NO_EVENT;
@ -579,7 +584,8 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[0].COM == LIN_ACT_CFR_MOD) { if (env->linCommandActuator[0].COM == LIN_ACT_CFR_MOD) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Sending a command (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].MODE) env->linCommandActuator[0].MODE)
#endif #endif
@ -588,7 +594,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", "Command completed successfully (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].MODE) env->linCommandActuator[0].MODE)
@ -596,7 +602,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
setState20(env, false, 0); setState20(env, false, 0);
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command failed (BROADCAST) [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", "Command failed (BROADCAST) [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].MODE) env->linCommandActuator[0].MODE)
@ -609,7 +615,8 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[0].COM == LIN_ACT_CFR_INI) { if (env->linCommandActuator[0].COM == LIN_ACT_CFR_INI) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Sending a command (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].POS) env->linCommandActuator[0].POS)
#endif #endif
@ -619,7 +626,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)", "Command completed successfully (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].POS) env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].POS)
#endif #endif
@ -627,7 +634,8 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Command failed (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command failed (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].POS) env->linCommandActuator[0].POS)
#endif #endif
@ -640,7 +648,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[0].COM == LIN_ACT_CFR_SET) { if (env->linCommandActuator[0].COM == LIN_ACT_CFR_SET) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Sending a command (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Sending a command (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].POS, env->linCommandActuator[0].POS,
@ -662,7 +670,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Command completed successfully (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].POS, env->linCommandActuator[0].POS,
@ -676,7 +684,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command failed (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Command failed (BROADCAST): LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].BUS_ADR,
env->linCommandActuator[0].POS, env->linCommandActuator[0].POS,
@ -703,7 +711,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].BUS_ADR == 0) { if (env->linCommandActuator[i].BUS_ADR == 0) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Let's skip the command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Let's skip the command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].MODE) env->linCommandActuator[i].MODE)
#endif #endif
@ -713,7 +721,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Sending a command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].MODE) env->linCommandActuator[i].MODE)
#endif #endif
@ -722,7 +730,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", "Command completed successfully: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].MODE) env->linCommandActuator[i].MODE)
@ -732,7 +740,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Command failed [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Command failed [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].MODE) env->linCommandActuator[i].MODE)
#endif #endif
@ -747,7 +755,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].BUS_ADR == 0) { if (env->linCommandActuator[i].BUS_ADR == 0) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Let's skip the command: LIN_ACT_CFR_INI (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Let's skip the command: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS) env->linCommandActuator[i].POS)
#endif #endif
@ -756,7 +764,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_INI) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_INI) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command: LIN_ACT_CFR_INI (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Sending a command: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS) env->linCommandActuator[i].POS)
#endif #endif
@ -766,7 +774,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully: LIN_ACT_CFR_INI (ADR = %d POS = %d)", "Command completed successfully: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].POS) env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].POS)
#endif #endif
@ -774,7 +782,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, "Command failed: LIN_ACT_CFR_INI (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Command failed: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS) env->linCommandActuator[i].POS)
#endif #endif
@ -790,7 +798,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].BUS_ADR == 0) { if (env->linCommandActuator[i].BUS_ADR == 0) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Let's skip the command: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Let's skip the command: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS, env->linCommandActuator[i].POS,
@ -805,7 +813,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) { if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Sending a command: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Sending a command: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS, env->linCommandActuator[i].POS,
@ -826,7 +834,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command completed successfully: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Command completed successfully: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS, env->linCommandActuator[i].POS,
@ -841,7 +849,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"Command failed: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)", "Command failed: LIN_ACT_CFR_SET (ADR = %d POS = %d STALL= %d LNOISE = %d AUTOS = %d SPEED = %d COILS = %d)",
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].BUS_ADR,
env->linCommandActuator[i].POS, env->linCommandActuator[i].POS,
@ -890,10 +898,10 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
&Reset_Slave); &Reset_Slave);
if (ret == LIN_RX_COMPLETED) { if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN, "OK: State = %d", i) LoggerFormatInfo(LOGGER, env->SIGN_LOG, "OK: State = %d", i)
} else { } else {
LoggerFormatInfo(LOGGER, LOG_SIGN, "ERROR: State = %d", i) LoggerFormatInfo(LOGGER, env->SIGN_LOG, "ERROR: State = %d", i)
} }
} }
@ -967,7 +975,6 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
BUS_ADR = BUS_ADR - 1; BUS_ADR = BUS_ADR - 1;
if (BUS_ADR != i) { if (BUS_ADR != i) {
asm("nop"); asm("nop");
} }
@ -984,7 +991,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
Error4_Permanent_Electrical_Slave) Error4_Permanent_Electrical_Slave)
) { ) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN, LoggerFormatInfo(LOGGER, env->SIGN_LOG,
"State: ADR = %d CPOS = %d Emrf = %d Mode = %d ErrSupply = %d ErrComm = %d ErrTemp = %d ErrElect = %d", "State: ADR = %d CPOS = %d Emrf = %d Mode = %d ErrSupply = %d ErrComm = %d ErrTemp = %d ErrElect = %d",
BUS_ADR + 1, BUS_ADR + 1,
CPOS_ALL, CPOS_ALL,
@ -1011,7 +1018,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
if (Stall_Slave == LIN_STALL_STA_ON) { if (Stall_Slave == LIN_STALL_STA_ON) {
LoggerFormatInfo(LOGGER, LOG_SIGN, "Detect STALL: (ADR = %d POS = %d)", LoggerFormatInfo(LOGGER, env->SIGN_LOG, "Detect STALL: (ADR = %d POS = %d)",
BUS_ADR + 1, BUS_ADR + 1,
CPOS_ALL) CPOS_ALL)
} }
@ -1021,7 +1028,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave; env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave;
// LoggerFormatInfo(LOGGER, LOG_SIGN, "BUS_ADR = %d, CPOS_ALL = %d, Stall_Slave = %d", BUS_ADR, // LoggerFormatInfo(LOGGER, env->SIGN_LOG, "BUS_ADR = %d, CPOS_ALL = %d, Stall_Slave = %d", BUS_ADR,
// env->linStateActuator[BUS_ADR].CPOS_ALL, // env->linStateActuator[BUS_ADR].CPOS_ALL,
// env->linStateActuator[BUS_ADR].Stall_Slave) // env->linStateActuator[BUS_ADR].Stall_Slave)
@ -1033,7 +1040,7 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
} else { } else {
//#if (LOG_LIN_ACTUATOR == 1) //#if (LOG_LIN_ACTUATOR == 1)
// LoggerFormatInfo(LOGGER, LOG_SIGN, // LoggerFormatInfo(LOGGER, env->SIGN_LOG,
// "Command READ - ERROR: ADR = %d ", // "Command READ - ERROR: ADR = %d ",
// i // i
// ) // )
@ -1064,28 +1071,12 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall, char *LOG_SIGN) { void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall, char *LOG_SIGN) {
#if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN_ACTUATOR == 1)
LoggerInfoStatic(LOGGER, LOG_SIGN, "Reset STALL (DETECT STALL RESET)") LoggerInfoStatic(LOGGER, env->SIGN_LOG, "Reset LOCAL STALL (DETECT STALL RESET)")
#endif #endif
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) { for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
// if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) {
// !!!!!! env->linStateActuator[i].Stall_Slave = LIN_STALL_STA_OFF;
dataLocalStall[i] = LIN_STALL_STA_OFF; dataLocalStall[i] = LIN_STALL_STA_OFF;
/*
if (env->linCommandActuator[i].BUS_ADR == 0) {
for (uint8_t j = 0; j < env->LIN_ISSR_ALL; ++j) {
env->linStateActuator[j].Stall_Slave = LIN_STALL_STA_OFF;
dataLocalStall[j] = LIN_STALL_STA_OFF;
} }
return;
}
*/
// }
}
} }
//начало----------------------------------------- LIN 1 ---------------------------------------------------------------- //начало----------------------------------------- LIN 1 ----------------------------------------------------------------
@ -1105,6 +1096,8 @@ void Lin_1_Init(tLinTaskActuator *env,
env->LIN_ISSR_ALL = LIN_ISSR_ALL; env->LIN_ISSR_ALL = LIN_ISSR_ALL;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);
memcpy(env->SIGN_LOG, "Ln1 ", sizeof("Ln1 ") - 1);
InitThreadAtrStatic(&env->threadLin.attr, "Ln1", env->threadLin.controlBlock, env->threadLin.stack, InitThreadAtrStatic(&env->threadLin.attr, "Ln1", env->threadLin.controlBlock, env->threadLin.stack,
osPriorityNormal); osPriorityNormal);
} }
@ -1113,8 +1106,8 @@ void Lin_1_Init(tLinTaskActuator *env,
static _Noreturn void Lin1_Thread(tLinTaskActuator *env) { static _Noreturn void Lin1_Thread(tLinTaskActuator *env) {
for (;;) { for (;;) {
if (osMutexAcquire(env->access, 1000) == osOK) { if (osMutexAcquire(env->access, 5000) == osOK) {
lin_event_id_t res = Lin_Scheduler(env, "Ln1 "); lin_event_id_t res = Lin_Scheduler(env);
uint8_t isError = 0; uint8_t isError = 0;
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) { for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
@ -1131,6 +1124,8 @@ static _Noreturn void Lin1_Thread(tLinTaskActuator *env) {
env->busy = false; env->busy = false;
osMutexRelease(env->access); osMutexRelease(env->access);
} else {
LoggerInfoStatic(LOGGER, "Ln1 ", "Mutex acquisition error")
} }
SystemDelayMs(500); SystemDelayMs(500);
@ -1168,6 +1163,8 @@ void Lin_2_Init(tLinTaskActuator *env,
env->LIN_ISSR_ALL = LIN_ISSR_ALL; env->LIN_ISSR_ALL = LIN_ISSR_ALL;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);
memcpy(env->SIGN_LOG, "Ln2 ", sizeof("Ln2 ") - 1);
InitThreadAtrStatic(&env->threadLin.attr, "Ln2", env->threadLin.controlBlock, env->threadLin.stack, InitThreadAtrStatic(&env->threadLin.attr, "Ln2", env->threadLin.controlBlock, env->threadLin.stack,
osPriorityNormal); osPriorityNormal);
} }
@ -1176,8 +1173,8 @@ void Lin_2_Init(tLinTaskActuator *env,
static _Noreturn void Lin2_Thread(tLinTaskActuator *env) { static _Noreturn void Lin2_Thread(tLinTaskActuator *env) {
for (;;) { for (;;) {
if (osMutexAcquire(env->access, 1000) == osOK) { if (osMutexAcquire(env->access, 5000) == osOK) {
lin_event_id_t res = Lin_Scheduler(env, "Ln2 "); lin_event_id_t res = Lin_Scheduler(env);
uint8_t isError = 0; uint8_t isError = 0;
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) { for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
@ -1194,6 +1191,8 @@ static _Noreturn void Lin2_Thread(tLinTaskActuator *env) {
env->busy = false; env->busy = false;
osMutexRelease(env->access); osMutexRelease(env->access);
} else {
LoggerInfoStatic(LOGGER, "Ln2 ", "Mutex acquisition error")
} }
SystemDelayMs(500); SystemDelayMs(500);
@ -1231,6 +1230,8 @@ void Lin_3_Init(tLinTaskActuator *env,
env->LIN_ISSR_ALL = LIN_ISSR_ALL; env->LIN_ISSR_ALL = LIN_ISSR_ALL;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);
memcpy(env->SIGN_LOG, "Ln3 ", sizeof("Ln3 ") - 1);
InitThreadAtrStatic(&env->threadLin.attr, "Ln3", env->threadLin.controlBlock, env->threadLin.stack, InitThreadAtrStatic(&env->threadLin.attr, "Ln3", env->threadLin.controlBlock, env->threadLin.stack,
osPriorityNormal); osPriorityNormal);
} }
@ -1239,8 +1240,8 @@ void Lin_3_Init(tLinTaskActuator *env,
static _Noreturn void Lin3_Thread(tLinTaskActuator *env) { static _Noreturn void Lin3_Thread(tLinTaskActuator *env) {
for (;;) { for (;;) {
if (osMutexAcquire(env->access, 1000) == osOK) { if (osMutexAcquire(env->access, 5000) == osOK) {
lin_event_id_t res = Lin_Scheduler(env, "Ln3 "); lin_event_id_t res = Lin_Scheduler(env);
uint8_t isError = 0; uint8_t isError = 0;
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) { for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
@ -1257,6 +1258,8 @@ static _Noreturn void Lin3_Thread(tLinTaskActuator *env) {
env->busy = false; env->busy = false;
osMutexRelease(env->access); osMutexRelease(env->access);
} else {
LoggerInfoStatic(LOGGER, "Ln3 ", "Mutex acquisition error")
} }
SystemDelayMs(500); SystemDelayMs(500);

View File

@ -446,6 +446,8 @@ typedef struct {
bool busy; // Устройство занято bool busy; // Устройство занято
uint8_t error_connect; // Ошибка соединения (устройство не отвечает) uint8_t error_connect; // Ошибка соединения (устройство не отвечает)
char SIGN_LOG[5];
tLinStateFullActuator linStateActuator[9]; tLinStateFullActuator linStateActuator[9];
tLinCommandActuator linCommandActuator[9]; tLinCommandActuator linCommandActuator[9];