Обновление
This commit is contained in:
parent
8eaee9d0d4
commit
4023c117d7
|
|
@ -9,7 +9,7 @@
|
||||||
#include "Lins.h"
|
#include "Lins.h"
|
||||||
#include "LoggerInterface.h"
|
#include "LoggerInterface.h"
|
||||||
|
|
||||||
#define LOG_SIGN "Lin0"
|
//#define LOG_SIGN "Lin0"
|
||||||
#define LOGGER env->logger
|
#define LOGGER env->logger
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -112,7 +112,7 @@ static lin_event_id_t SEND_ACTUATOR_COM_x(tLinIO *linIo, uint8_t COM_ADR) {
|
||||||
|
|
||||||
|
|
||||||
static lin_event_id_t DFR_PRG_x(tLinIO *linIo, tLinData *linData,
|
static lin_event_id_t DFR_PRG_x(tLinIO *linIo, tLinData *linData,
|
||||||
uint8_t BUS_ADR) {
|
uint8_t BUS_ADR) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_SET;
|
linData->direction = LIN_DIRECTION_SET;
|
||||||
|
|
@ -142,13 +142,13 @@ static lin_event_id_t DFR_PRG_x(tLinIO *linIo, tLinData *linData,
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t RFR_PRG_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t RFR_PRG_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
uint8_t *BUS_ADR,
|
uint8_t *BUS_ADR,
|
||||||
uint8_t *BUS_NEW_ADR,
|
uint8_t *BUS_NEW_ADR,
|
||||||
uint8_t *NOTL_DREH_Master,
|
uint8_t *NOTL_DREH_Master,
|
||||||
uint8_t *NOTL_ENAB_Master,
|
uint8_t *NOTL_ENAB_Master,
|
||||||
uint8_t *DREH_Slave,
|
uint8_t *DREH_Slave,
|
||||||
uint8_t *ParitySlave,
|
uint8_t *ParitySlave,
|
||||||
uint8_t *Version_CFR) {
|
uint8_t *Version_CFR) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
ACT_RFR_PRG *ACT_RFR_PRG_ = (ACT_RFR_PRG *) linData->g_aRxBuffer;
|
ACT_RFR_PRG *ACT_RFR_PRG_ = (ACT_RFR_PRG *) linData->g_aRxBuffer;
|
||||||
|
|
@ -190,7 +190,7 @@ static lin_event_id_t RFR_PRG_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_AD
|
||||||
|
|
||||||
|
|
||||||
static lin_event_id_t DFR_IDE_x(tLinIO *linIo, tLinData *linData,
|
static lin_event_id_t DFR_IDE_x(tLinIO *linIo, tLinData *linData,
|
||||||
uint8_t BUS_ADR) {
|
uint8_t BUS_ADR) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_SET;
|
linData->direction = LIN_DIRECTION_SET;
|
||||||
|
|
@ -218,10 +218,10 @@ static lin_event_id_t DFR_IDE_x(tLinIO *linIo, tLinData *linData,
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t RFR_IDE_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t RFR_IDE_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
uint8_t *BUS_ADR,
|
uint8_t *BUS_ADR,
|
||||||
uint8_t *IDE_ref,
|
uint8_t *IDE_ref,
|
||||||
uint8_t *IDE_Sup,
|
uint8_t *IDE_Sup,
|
||||||
uint8_t *IDE_Har) {
|
uint8_t *IDE_Har) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
ACT_RFR_IDE *ACT_RFR_IDE_ = (ACT_RFR_IDE *) linData->g_aRxBuffer;
|
ACT_RFR_IDE *ACT_RFR_IDE_ = (ACT_RFR_IDE *) linData->g_aRxBuffer;
|
||||||
|
|
@ -286,16 +286,16 @@ static lin_event_id_t DFR_STA_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_AD
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t RFR_STA_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t RFR_STA_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
uint8_t *BUS_ADR,
|
uint8_t *BUS_ADR,
|
||||||
uint16_t *CPOS_ALL,
|
uint16_t *CPOS_ALL,
|
||||||
eEmrf_Slave_STA *Emrf_Slave,
|
eEmrf_Slave_STA *Emrf_Slave,
|
||||||
eMode_Mod *Mode_Slave,
|
eMode_Mod *Mode_Slave,
|
||||||
uint8_t *Error1_Supply_Slave,
|
uint8_t *Error1_Supply_Slave,
|
||||||
uint8_t *Error2_Communication_Slave,
|
uint8_t *Error2_Communication_Slave,
|
||||||
uint8_t *Error3_Temperature_Slave,
|
uint8_t *Error3_Temperature_Slave,
|
||||||
uint8_t *Error4_Permanent_Electrical_Slave,
|
uint8_t *Error4_Permanent_Electrical_Slave,
|
||||||
eStall_STA *Stall_Slave,
|
eStall_STA *Stall_Slave,
|
||||||
eReset_STA *Reset_Slave) {
|
eReset_STA *Reset_Slave) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
ACT_RFR_STA *ACT_RFR_STA_ = (ACT_RFR_STA *) linData->g_aRxBuffer;
|
ACT_RFR_STA *ACT_RFR_STA_ = (ACT_RFR_STA *) linData->g_aRxBuffer;
|
||||||
|
|
@ -341,9 +341,9 @@ static lin_event_id_t RFR_STA_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_AD
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t ISSR_x(tLinIO *linIo, tLinData *linData, uint8_t COM,
|
static lin_event_id_t ISSR_x(tLinIO *linIo, tLinData *linData, uint8_t COM,
|
||||||
uint8_t *BLOCK_MT,
|
uint8_t *BLOCK_MT,
|
||||||
uint16_t *CPOS_ALL,
|
uint16_t *CPOS_ALL,
|
||||||
uint8_t *DIAGNOSE_MT) {
|
uint8_t *DIAGNOSE_MT) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_GET;
|
linData->direction = LIN_DIRECTION_GET;
|
||||||
|
|
@ -376,7 +376,7 @@ static lin_event_id_t ISSR_x(tLinIO *linIo, tLinData *linData, uint8_t COM,
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t CFR_MOD_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t CFR_MOD_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
eMode_Mod Mode_Slave) {
|
eMode_Mod Mode_Slave) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_SET;
|
linData->direction = LIN_DIRECTION_SET;
|
||||||
|
|
@ -407,7 +407,7 @@ static lin_event_id_t CFR_MOD_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_AD
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t CFR_INI_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t CFR_INI_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
uint16 INI_CPOS) {
|
uint16 INI_CPOS) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_SET;
|
linData->direction = LIN_DIRECTION_SET;
|
||||||
|
|
@ -437,12 +437,12 @@ static lin_event_id_t CFR_INI_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_AD
|
||||||
}
|
}
|
||||||
|
|
||||||
static lin_event_id_t CFR_SET_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
static lin_event_id_t CFR_SET_x(tLinIO *linIo, tLinData *linData, uint8_t BUS_ADDRESS,
|
||||||
uint16 FINAL_POS,
|
uint16 FINAL_POS,
|
||||||
eStall_SET Stall_SET,
|
eStall_SET Stall_SET,
|
||||||
eLnoise_SET Lnoise_SET,
|
eLnoise_SET Lnoise_SET,
|
||||||
eAutos_SET Autos_SET,
|
eAutos_SET Autos_SET,
|
||||||
eSpeed_SET Speed_SET,
|
eSpeed_SET Speed_SET,
|
||||||
eCoils_Stop_SET Coils_Stop_SET) {
|
eCoils_Stop_SET Coils_Stop_SET) {
|
||||||
lin_event_id_t res;
|
lin_event_id_t res;
|
||||||
|
|
||||||
linData->direction = LIN_DIRECTION_SET;
|
linData->direction = LIN_DIRECTION_SET;
|
||||||
|
|
@ -551,140 +551,311 @@ static bool setState20(tLinTaskActuator *env, bool isError, uint8_t index) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool isBroadCast(tLinTaskActuator *env) {
|
||||||
|
|
||||||
static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env) {
|
for (uint8_t j = 0; j < env->LIN_ISSR_ALL; ++j) {
|
||||||
|
if (env->linCommandActuator[j].BUS_ADR != 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env, char *LOG_SIGN) {
|
||||||
|
|
||||||
lin_event_id_t ret = LIN_NO_EVENT;
|
lin_event_id_t ret = LIN_NO_EVENT;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
if (isBroadCast(env)) {
|
||||||
|
|
||||||
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) {
|
//--------------------------------------BROADCAST---------------------------------------------------------
|
||||||
|
//--------------------------------------BROADCAST---------------------------------------------------------
|
||||||
|
//--------------------------------------BROADCAST---------------------------------------------------------
|
||||||
|
|
||||||
|
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: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
env->linCommandActuator[i].BUS_ADR,
|
env->linCommandActuator[0].BUS_ADR,
|
||||||
env->linCommandActuator[i].MODE)
|
env->linCommandActuator[0].MODE)
|
||||||
#endif
|
#endif
|
||||||
ret = CFR_MOD_x(env->linIo, env->linData, env->linCommandActuator[i].BUS_ADR | 0x20,
|
ret = CFR_MOD_x(env->linIo, env->linData, env->linCommandActuator[0].BUS_ADR | 0x20,
|
||||||
env->linCommandActuator[i].MODE);
|
env->linCommandActuator[0].MODE);
|
||||||
|
|
||||||
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, LOG_SIGN,
|
||||||
"Command completed successfully: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
"Command completed successfully (BROADCAST): LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
env->linCommandActuator[i].BUS_ADR,
|
env->linCommandActuator[0].BUS_ADR,
|
||||||
env->linCommandActuator[i].MODE)
|
env->linCommandActuator[0].MODE)
|
||||||
#endif
|
#endif
|
||||||
if (setState20(env, false, i))
|
setState20(env, false, 0);
|
||||||
break;
|
|
||||||
|
|
||||||
} 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, LOG_SIGN, "Command failed (BROADCAST) [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
env->linCommandActuator[i].BUS_ADR,
|
env->linCommandActuator[0].BUS_ADR,
|
||||||
env->linCommandActuator[i].MODE)
|
env->linCommandActuator[0].MODE)
|
||||||
#endif
|
#endif
|
||||||
if (setState20(env, true, i))
|
setState20(env, true, 0);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
if (env->linCommandActuator[0].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, LOG_SIGN, "Sending a command (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
||||||
env->linCommandActuator[i].BUS_ADR,
|
env->linCommandActuator[0].BUS_ADR,
|
||||||
env->linCommandActuator[i].POS)
|
env->linCommandActuator[0].POS)
|
||||||
#endif
|
#endif
|
||||||
ret = CFR_INI_x(env->linIo, env->linData,
|
ret = CFR_INI_x(env->linIo, env->linData,
|
||||||
env->linCommandActuator[i].BUS_ADR | 0x20,
|
env->linCommandActuator[0].BUS_ADR | 0x20,
|
||||||
env->linCommandActuator[i].POS);
|
env->linCommandActuator[0].POS);
|
||||||
|
|
||||||
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, LOG_SIGN,
|
||||||
"Command completed successfully: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
"Command completed successfully (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
||||||
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].POS)
|
env->linCommandActuator[0].BUS_ADR, env->linCommandActuator[0].POS)
|
||||||
#endif
|
#endif
|
||||||
if (setState20(env, false, i))
|
setState20(env, false, 0);
|
||||||
break;
|
|
||||||
} 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, LOG_SIGN, "Command failed (BROADCAST): LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
||||||
|
env->linCommandActuator[0].BUS_ADR,
|
||||||
|
env->linCommandActuator[0].POS)
|
||||||
|
#endif
|
||||||
|
setState20(env, true, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (env->linCommandActuator[0].COM == LIN_ACT_CFR_SET) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"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].POS,
|
||||||
|
env->linCommandActuator[0].Stall_SET,
|
||||||
|
env->linCommandActuator[0].Lnoise_SET,
|
||||||
|
env->linCommandActuator[0].Autos_SET,
|
||||||
|
env->linCommandActuator[0].Speed_SET,
|
||||||
|
env->linCommandActuator[0].Coils_Stop_SET
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
ret = CFR_SET_x(env->linIo, env->linData,
|
||||||
|
env->linCommandActuator[0].BUS_ADR | 0x20,
|
||||||
|
env->linCommandActuator[0].POS,
|
||||||
|
env->linCommandActuator[0].Stall_SET,
|
||||||
|
env->linCommandActuator[0].Lnoise_SET,
|
||||||
|
env->linCommandActuator[0].Autos_SET,
|
||||||
|
env->linCommandActuator[0].Speed_SET,
|
||||||
|
env->linCommandActuator[0].Coils_Stop_SET);
|
||||||
|
|
||||||
|
if (ret == LIN_TX_COMPLETED) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"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].POS,
|
||||||
|
env->linCommandActuator[0].Stall_SET,
|
||||||
|
env->linCommandActuator[0].Lnoise_SET,
|
||||||
|
env->linCommandActuator[0].Autos_SET,
|
||||||
|
env->linCommandActuator[0].Speed_SET,
|
||||||
|
env->linCommandActuator[0].Coils_Stop_SET)
|
||||||
|
#endif
|
||||||
|
setState20(env, false, 0);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"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].POS,
|
||||||
|
env->linCommandActuator[0].Stall_SET,
|
||||||
|
env->linCommandActuator[0].Lnoise_SET,
|
||||||
|
env->linCommandActuator[0].Autos_SET,
|
||||||
|
env->linCommandActuator[0].Speed_SET,
|
||||||
|
env->linCommandActuator[0].Coils_Stop_SET
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
setState20(env, true, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
//--------------------------------------NO BROADCAST---------------------------------------------------------
|
||||||
|
//--------------------------------------NO BROADCAST---------------------------------------------------------
|
||||||
|
//--------------------------------------NO BROADCAST---------------------------------------------------------
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
||||||
|
|
||||||
|
if (env->linCommandActuator[i].BUS_ADR == 0) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Let's skip the command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR,
|
||||||
|
env->linCommandActuator[i].MODE)
|
||||||
|
#endif
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_MOD) {
|
||||||
|
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Sending a command: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR,
|
||||||
|
env->linCommandActuator[i].MODE)
|
||||||
|
#endif
|
||||||
|
ret = CFR_MOD_x(env->linIo, env->linData, env->linCommandActuator[i].BUS_ADR | 0x20,
|
||||||
|
env->linCommandActuator[i].MODE);
|
||||||
|
|
||||||
|
if (ret == LIN_TX_COMPLETED) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"Command completed successfully: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR,
|
||||||
|
env->linCommandActuator[i].MODE)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, false, i))
|
||||||
|
break;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Command failed [%d]: LIN_ACT_CFR_MOD (ADR = %d MODE = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR,
|
||||||
|
env->linCommandActuator[i].MODE)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, true, i))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
||||||
|
|
||||||
|
if (env->linCommandActuator[i].BUS_ADR == 0) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "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
|
||||||
if (setState20(env, true, i))
|
continue;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (env->linCommandActuator[i].COM == LIN_ACT_CFR_INI) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
|
||||||
|
|
||||||
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, LOG_SIGN, "Sending a command: LIN_ACT_CFR_INI (ADR = %d POS = %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,
|
|
||||||
env->linCommandActuator[i].Stall_SET,
|
|
||||||
env->linCommandActuator[i].Lnoise_SET,
|
|
||||||
env->linCommandActuator[i].Autos_SET,
|
|
||||||
env->linCommandActuator[i].Speed_SET,
|
|
||||||
env->linCommandActuator[i].Coils_Stop_SET
|
|
||||||
)
|
|
||||||
#endif
|
#endif
|
||||||
ret = CFR_SET_x(env->linIo, env->linData,
|
ret = CFR_INI_x(env->linIo, env->linData,
|
||||||
env->linCommandActuator[i].BUS_ADR | 0x20,
|
env->linCommandActuator[i].BUS_ADR | 0x20,
|
||||||
env->linCommandActuator[i].POS,
|
env->linCommandActuator[i].POS);
|
||||||
env->linCommandActuator[i].Stall_SET,
|
|
||||||
env->linCommandActuator[i].Lnoise_SET,
|
|
||||||
env->linCommandActuator[i].Autos_SET,
|
|
||||||
env->linCommandActuator[i].Speed_SET,
|
|
||||||
env->linCommandActuator[i].Coils_Stop_SET);
|
|
||||||
|
|
||||||
if (ret == LIN_TX_COMPLETED) {
|
if (ret == LIN_TX_COMPLETED) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"Command completed successfully: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR, env->linCommandActuator[i].POS)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, false, i))
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "Command failed: LIN_ACT_CFR_INI (ADR = %d POS = %d)",
|
||||||
|
env->linCommandActuator[i].BUS_ADR,
|
||||||
|
env->linCommandActuator[i].POS)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, true, i))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
||||||
|
|
||||||
|
if (env->linCommandActuator[i].BUS_ADR == 0) {
|
||||||
#if (LOG_LIN_ACTUATOR == 1)
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
"Command completed successfully: 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,
|
||||||
env->linCommandActuator[i].Stall_SET,
|
env->linCommandActuator[i].Stall_SET,
|
||||||
env->linCommandActuator[i].Lnoise_SET,
|
env->linCommandActuator[i].Lnoise_SET,
|
||||||
env->linCommandActuator[i].Autos_SET,
|
env->linCommandActuator[i].Autos_SET,
|
||||||
env->linCommandActuator[i].Speed_SET,
|
env->linCommandActuator[i].Speed_SET,
|
||||||
env->linCommandActuator[i].Coils_Stop_SET
|
env->linCommandActuator[i].Coils_Stop_SET)
|
||||||
)
|
|
||||||
#endif
|
#endif
|
||||||
if (setState20(env, false, i))
|
continue;
|
||||||
break;
|
}
|
||||||
} else {
|
|
||||||
|
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, LOG_SIGN,
|
||||||
"Command failed: 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,
|
||||||
env->linCommandActuator[i].Stall_SET,
|
env->linCommandActuator[i].Stall_SET,
|
||||||
env->linCommandActuator[i].Lnoise_SET,
|
env->linCommandActuator[i].Lnoise_SET,
|
||||||
env->linCommandActuator[i].Autos_SET,
|
env->linCommandActuator[i].Autos_SET,
|
||||||
env->linCommandActuator[i].Speed_SET,
|
env->linCommandActuator[i].Speed_SET,
|
||||||
env->linCommandActuator[i].Coils_Stop_SET
|
env->linCommandActuator[i].Coils_Stop_SET)
|
||||||
)
|
|
||||||
#endif
|
#endif
|
||||||
if (setState20(env, true, i))
|
ret = CFR_SET_x(env->linIo, env->linData,
|
||||||
break;
|
env->linCommandActuator[i].BUS_ADR | 0x20,
|
||||||
|
env->linCommandActuator[i].POS,
|
||||||
|
env->linCommandActuator[i].Stall_SET,
|
||||||
|
env->linCommandActuator[i].Lnoise_SET,
|
||||||
|
env->linCommandActuator[i].Autos_SET,
|
||||||
|
env->linCommandActuator[i].Speed_SET,
|
||||||
|
env->linCommandActuator[i].Coils_Stop_SET);
|
||||||
|
|
||||||
|
if (ret == LIN_TX_COMPLETED) {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"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].POS,
|
||||||
|
env->linCommandActuator[i].Stall_SET,
|
||||||
|
env->linCommandActuator[i].Lnoise_SET,
|
||||||
|
env->linCommandActuator[i].Autos_SET,
|
||||||
|
env->linCommandActuator[i].Speed_SET,
|
||||||
|
env->linCommandActuator[i].Coils_Stop_SET
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, false, i))
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN,
|
||||||
|
"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].POS,
|
||||||
|
env->linCommandActuator[i].Stall_SET,
|
||||||
|
env->linCommandActuator[i].Lnoise_SET,
|
||||||
|
env->linCommandActuator[i].Autos_SET,
|
||||||
|
env->linCommandActuator[i].Speed_SET,
|
||||||
|
env->linCommandActuator[i].Coils_Stop_SET
|
||||||
|
)
|
||||||
|
#endif
|
||||||
|
if (setState20(env, true, i))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
} // BroadCast
|
||||||
|
|
||||||
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
||||||
/*
|
/*
|
||||||
|
|
@ -712,16 +883,16 @@ static lin_event_id_t Lin_Scheduler(tLinTaskActuator *env) {
|
||||||
env->linCommandActuator[i].isRFR_STA = 0;
|
env->linCommandActuator[i].isRFR_STA = 0;
|
||||||
|
|
||||||
|
|
||||||
uint8_t BUS_ADR;
|
uint8_t BUS_ADR = 0;
|
||||||
uint16_t CPOS_ALL;
|
uint16_t CPOS_ALL = 0;
|
||||||
eEmrf_Slave_STA Emrf_Slave;
|
eEmrf_Slave_STA Emrf_Slave = 0;
|
||||||
eMode_Mod Mode_Slave;
|
eMode_Mod Mode_Slave = 0;
|
||||||
uint8_t Error1_Supply_Slave;
|
uint8_t Error1_Supply_Slave = 0;
|
||||||
uint8_t Error2_Communication_Slave;
|
uint8_t Error2_Communication_Slave = 0;
|
||||||
uint8_t Error3_Temperature_Slave;
|
uint8_t Error3_Temperature_Slave = 0;
|
||||||
uint8_t Error4_Permanent_Electrical_Slave;
|
uint8_t Error4_Permanent_Electrical_Slave = 0;
|
||||||
eStall_STA Stall_Slave;
|
eStall_STA Stall_Slave = 0;
|
||||||
eReset_STA Reset_Slave;
|
eReset_STA Reset_Slave = 0;
|
||||||
|
|
||||||
ret = RFR_STA_x(env->linIo, env->linData, i | 0x20,
|
ret = RFR_STA_x(env->linIo, env->linData, i | 0x20,
|
||||||
&BUS_ADR,
|
&BUS_ADR,
|
||||||
|
|
@ -836,28 +1007,28 @@ bool setBusy(tLinTaskActuator *env) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall) {
|
void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall, char *LOG_SIGN) {
|
||||||
|
|
||||||
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) {
|
// if (env->linCommandActuator[i].COM == LIN_ACT_CFR_SET) {
|
||||||
#if (LOG_LIN_ACTUATOR == 1)
|
#if (LOG_LIN_ACTUATOR == 1)
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Reset STALL")
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Reset STALL")
|
||||||
#endif
|
#endif
|
||||||
env->linStateActuator[i].Stall_Slave = LIN_STALL_STA_OFF;
|
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) {
|
if (env->linCommandActuator[i].BUS_ADR == 0) {
|
||||||
|
|
||||||
for (uint8_t j = 0; j < env->LIN_ISSR_ALL; ++j) {
|
for (uint8_t j = 0; j < env->LIN_ISSR_ALL; ++j) {
|
||||||
env->linStateActuator[j].Stall_Slave = LIN_STALL_STA_OFF;
|
env->linStateActuator[j].Stall_Slave = LIN_STALL_STA_OFF;
|
||||||
dataLocalStall[j] = LIN_STALL_STA_OFF;
|
dataLocalStall[j] = LIN_STALL_STA_OFF;
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// }
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -879,7 +1050,7 @@ 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);
|
||||||
|
|
||||||
InitThreadAtrStatic(&env->threadLin.attr, "Lin1", env->threadLin.controlBlock, env->threadLin.stack,
|
InitThreadAtrStatic(&env->threadLin.attr, "Ln1", env->threadLin.controlBlock, env->threadLin.stack,
|
||||||
osPriorityNormal);
|
osPriorityNormal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -888,7 +1059,7 @@ static _Noreturn void Lin1_Thread(tLinTaskActuator *env) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||||
lin_event_id_t res = Lin_Scheduler(env);
|
lin_event_id_t res = Lin_Scheduler(env, "Ln1 ");
|
||||||
|
|
||||||
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) {
|
||||||
|
|
@ -941,7 +1112,7 @@ 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);
|
||||||
|
|
||||||
InitThreadAtrStatic(&env->threadLin.attr, "Lin2", env->threadLin.controlBlock, env->threadLin.stack,
|
InitThreadAtrStatic(&env->threadLin.attr, "Ln2", env->threadLin.controlBlock, env->threadLin.stack,
|
||||||
osPriorityNormal);
|
osPriorityNormal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -950,7 +1121,7 @@ static _Noreturn void Lin2_Thread(tLinTaskActuator *env) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||||
lin_event_id_t res = Lin_Scheduler(env);
|
lin_event_id_t res = Lin_Scheduler(env, "Ln2 ");
|
||||||
|
|
||||||
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) {
|
||||||
|
|
@ -1003,7 +1174,7 @@ 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);
|
||||||
|
|
||||||
InitThreadAtrStatic(&env->threadLin.attr, "Lin3", env->threadLin.controlBlock, env->threadLin.stack,
|
InitThreadAtrStatic(&env->threadLin.attr, "Ln3", env->threadLin.controlBlock, env->threadLin.stack,
|
||||||
osPriorityNormal);
|
osPriorityNormal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1012,7 +1183,7 @@ static _Noreturn void Lin3_Thread(tLinTaskActuator *env) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||||
lin_event_id_t res = Lin_Scheduler(env);
|
lin_event_id_t res = Lin_Scheduler(env, "Ln3 ");
|
||||||
|
|
||||||
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) {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#include "LinIO.h"
|
#include "LinIO.h"
|
||||||
#include "LoggerInterface.h"
|
#include "LoggerInterface.h"
|
||||||
|
|
||||||
#define LOG_LIN_ACTUATOR 0
|
#define LOG_LIN_ACTUATOR 1
|
||||||
|
|
||||||
typedef struct __attribute__ ((packed)) {
|
typedef struct __attribute__ ((packed)) {
|
||||||
uint8_t BUS_ADR;
|
uint8_t BUS_ADR;
|
||||||
|
|
@ -490,7 +490,7 @@ void Lin3_StartThread(tLinTaskActuator *env);
|
||||||
|
|
||||||
|
|
||||||
void GetLin123CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
|
void GetLin123CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
|
||||||
void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall);
|
void resetStall(tLinTaskActuator *env, uint8_t *dataLocalStall, char *LOG_SIGN);
|
||||||
bool setBusy(tLinTaskActuator *env);
|
bool setBusy(tLinTaskActuator *env);
|
||||||
|
|
||||||
#endif //HVAC_LIN_TASKS_H
|
#endif //HVAC_LIN_TASKS_H
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue