Обновление
This commit is contained in:
parent
7abaa62de7
commit
cdc6ef6bb1
|
|
@ -5,6 +5,7 @@
|
|||
#include "CanSpamTransmitter.h"
|
||||
#include "CmsisRtosThreadUtils.h"
|
||||
#include "CanPorts.h"
|
||||
#include "memory.h"
|
||||
|
||||
void CanSpamTransmitter_Init(tCanSpamTransmitter *env,
|
||||
tSerialPortFrameIO *ioCanFrame) {
|
||||
|
|
@ -198,89 +199,89 @@ static void CCU_Msg3(tCanSpamTransmitter *env) {
|
|||
_m->CCU_MSG3_CS = d0 ^ d1 ^ d2 ^ d3;
|
||||
}
|
||||
|
||||
static void CCU_Errors(tCanSpamTransmitter *env) {
|
||||
static void CCU_Errors(tCanSpamTransmitter *env) {
|
||||
|
||||
CCU_Errors_t *_m = &ccu_candb_tx.CCU_Errors;
|
||||
|
||||
// Incar temperature sensors for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_IncarTempErrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_IncarTempErrF_Stat = env->CCU_Errors.CCU_IncarTempErrF_Stat; // Bits= 1
|
||||
|
||||
// Incar temperature sensors for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_IncarTempErrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_IncarTempErrR_Stat = env->CCU_Errors.CCU_IncarTempErrR_Stat; // Bits= 1
|
||||
|
||||
// Duct temperature sensors for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_DuctTempSenErrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_DuctTempSenErrF_Stat = env->CCU_Errors.CCU_DuctTempSenErrF_Stat; // Bits= 1
|
||||
|
||||
// Duct temperature sensors for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_DuctTempSenErrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_DuctTempSenErrR_Stat = env->CCU_Errors.CCU_DuctTempSenErrR_Stat; // Bits= 1
|
||||
|
||||
// Evaporator temperature sensor for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_EvaTempSenErrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_EvaTempSenErrF_Stat = env->CCU_Errors.CCU_EvaTempSenErrF_Stat; // Bits= 1
|
||||
|
||||
// Evaporator temperature sensor for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_EvaTempSenErrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_EvaTempSenErrR_Stat = env->CCU_Errors.CCU_EvaTempSenErrR_Stat; // Bits= 1
|
||||
|
||||
// Deflectors for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_DeflectorSwErrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_DeflectorSwErrF_Stat = env->CCU_Errors.CCU_DeflectorSwErrF_Stat; // Bits= 1
|
||||
|
||||
// Deflectors for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_DeflectorSwErrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_DeflectorSwErrR_Stat = env->CCU_Errors.CCU_DeflectorSwErrR_Stat; // Bits= 1
|
||||
|
||||
// Pressure sensors error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_PressSenErr_Stat = 0; // Bits= 1
|
||||
_m->CCU_PressSenErr_Stat = env->CCU_Errors.CCU_PressSenErr_Stat; // Bits= 1
|
||||
|
||||
// Ambient temperature sensor error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_AmbienTemptSenErr_Stat = 0; // Bits= 1
|
||||
_m->CCU_AmbienTemptSenErr_Stat = env->CCU_Errors.CCU_AmbienTemptSenErr_Stat; // Bits= 1
|
||||
|
||||
// Sealing valve error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_SealingValveErr_Stat = 0; // Bits= 1
|
||||
_m->CCU_SealingValveErr_Stat = env->CCU_Errors.CCU_SealingValveErr_Stat; // Bits= 1
|
||||
|
||||
// ETXV error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_ETXVerr_Stat = 0; // Bits= 1
|
||||
_m->CCU_ETXVerr_Stat = env->CCU_Errors.CCU_ETXVerr_Stat; // Bits= 1
|
||||
|
||||
// HVAC fan or TXV for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_HVACfanOrTXVerrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_HVACfanOrTXVerrF_Stat = env->CCU_Errors.CCU_HVACfanOrTXVerrF_Stat; // Bits= 1
|
||||
|
||||
// HVAC fan or TXV for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_HVACfanOrTXVerrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_HVACfanOrTXVerrR_Stat = env->CCU_Errors.CCU_HVACfanOrTXVerrR_Stat; // Bits= 1
|
||||
|
||||
// Actuators for front zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_ActuatorErrF_Stat = 0; // Bits= 1
|
||||
_m->CCU_ActuatorErrF_Stat = env->CCU_Errors.CCU_ActuatorErrF_Stat; // Bits= 1
|
||||
|
||||
// Actuators for rear zone error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_ActuatorErrR_Stat = 0; // Bits= 1
|
||||
_m->CCU_ActuatorErrR_Stat = env->CCU_Errors.CCU_ActuatorErrR_Stat; // Bits= 1
|
||||
|
||||
// Ultraviolet system error status
|
||||
// 3 : "Component malfunction"
|
||||
|
|
@ -289,12 +290,12 @@ static void CCU_Errors(tCanSpamTransmitter *env) {
|
|||
// 1 : "Supply chain break
|
||||
|
||||
// 0 : "No error"
|
||||
_m->CCU_UltravioletErr_Stat = 0; // Bits= 2
|
||||
_m->CCU_UltravioletErr_Stat = env->CCU_Errors.CCU_UltravioletErr_Stat; // Bits= 2
|
||||
|
||||
// CCU VIN record error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_VinRecordErr_Stat = 0; // Bits= 1
|
||||
_m->CCU_VinRecordErr_Stat = env->CCU_Errors.CCU_VinRecordErr_Stat; // Bits= 1
|
||||
|
||||
// Air quality sensor error status
|
||||
// 4 : "Component malfunction"
|
||||
|
|
@ -302,17 +303,17 @@ static void CCU_Errors(tCanSpamTransmitter *env) {
|
|||
// 2 : "Supply chain short circuit"
|
||||
// 1 : "Supply chain break"
|
||||
// 0 : "No error"
|
||||
_m->CCU_AirQualSenErr_Stat = 0; // Bits= 3
|
||||
_m->CCU_AirQualSenErr_Stat = env->CCU_Errors.CCU_AirQualSenErr_Stat; // Bits= 3
|
||||
|
||||
// CCU communication error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_CommErr_Stat = 0; // Bits= 1
|
||||
_m->CCU_CommErr_Stat = env->CCU_Errors.CCU_CommErr_Stat; // Bits= 1
|
||||
|
||||
// Two-way valve error status
|
||||
// 1 : "Error"
|
||||
// 0 : "No error"
|
||||
_m->CCU_TWVerr_Stat = 0; // Bits= 1
|
||||
_m->CCU_TWVerr_Stat = env->CCU_Errors.CCU_TWVerr_Stat; // Bits= 1
|
||||
|
||||
// Ionization system error status
|
||||
// 4 : "Component malfunction"
|
||||
|
|
@ -323,7 +324,7 @@ static void CCU_Errors(tCanSpamTransmitter *env) {
|
|||
// 1 : "Supply chain break
|
||||
|
||||
// 0 : "No error"
|
||||
_m->CCU_IonizationErr_Stat = 0; // Bits= 3
|
||||
_m->CCU_IonizationErr_Stat = env->CCU_Errors.CCU_IonizationErr_Stat; // Bits= 3
|
||||
|
||||
// Aromatization system error status
|
||||
// 4 : "Component malfunction"
|
||||
|
|
@ -334,7 +335,7 @@ static void CCU_Errors(tCanSpamTransmitter *env) {
|
|||
// 1 : "Supply chain break
|
||||
|
||||
// 0 : "No error"
|
||||
_m->CCU_AromaErr_Stat = 0; // Bits= 3
|
||||
_m->CCU_AromaErr_Stat = env->CCU_Errors.CCU_AromaErr_Stat; // Bits= 3
|
||||
}
|
||||
|
||||
static void sendEventToCan(tCanSpamTransmitter *env) {
|
||||
|
|
@ -486,10 +487,16 @@ static eTimeEventTransmit isEventTransmitter(tCanSpamTransmitter *env) {
|
|||
return event_CCU_none;
|
||||
}
|
||||
|
||||
void set_CCU_Errors(tCanSpamTransmitter *env, CCU_Errors_t *CCU_Errors) {
|
||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
memcpy(&env->CCU_Errors, CCU_Errors, sizeof(CCU_Errors_t));
|
||||
osMutexRelease(env->access);
|
||||
}
|
||||
}
|
||||
|
||||
static _Noreturn void CanSpamTransmitter_Thread(tCanSpamTransmitter *env) {
|
||||
for (;;) {
|
||||
if (osMutexAcquire(env->access, 100) == osOK) {
|
||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
|
||||
env->timeMs = GetSystemTick();
|
||||
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ typedef struct {
|
|||
uint32_t time_CCU_Msg3;
|
||||
uint32_t time_CCU_AC_Ctrl;
|
||||
|
||||
CCU_Errors_t CCU_Errors;
|
||||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
uint32_t stack[512];
|
||||
|
|
@ -59,5 +61,6 @@ void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCan
|
|||
|
||||
void CanSpamTransmitter_StartThread(tCanSpamTransmitter *env);
|
||||
|
||||
void set_CCU_Errors(tCanSpamTransmitter *env, CCU_Errors_t *CCU_Errors);
|
||||
|
||||
#endif //HVAC_M7_CANSPAMTRANSMITTER_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue