From 7abaa62de7290abd898f74ab5272275e52078c39 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 30 Jan 2026 15:59:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanSpamTransmitter.c | 217 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 183 insertions(+), 34 deletions(-) diff --git a/CanSpamTransmitter.c b/CanSpamTransmitter.c index 7d658ed..38ab0ff 100644 --- a/CanSpamTransmitter.c +++ b/CanSpamTransmitter.c @@ -198,6 +198,145 @@ static void CCU_Msg3(tCanSpamTransmitter *env) { _m->CCU_MSG3_CS = d0 ^ d1 ^ d2 ^ d3; } +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 + + // Incar temperature sensors for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_IncarTempErrR_Stat = 0; // Bits= 1 + + // Duct temperature sensors for front zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_DuctTempSenErrF_Stat = 0; // Bits= 1 + + // Duct temperature sensors for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_DuctTempSenErrR_Stat = 0; // Bits= 1 + + // Evaporator temperature sensor for front zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_EvaTempSenErrF_Stat = 0; // Bits= 1 + + // Evaporator temperature sensor for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_EvaTempSenErrR_Stat = 0; // Bits= 1 + + // Deflectors for front zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_DeflectorSwErrF_Stat = 0; // Bits= 1 + + // Deflectors for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_DeflectorSwErrR_Stat = 0; // Bits= 1 + + // Pressure sensors error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_PressSenErr_Stat = 0; // Bits= 1 + + // Ambient temperature sensor error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_AmbienTemptSenErr_Stat = 0; // Bits= 1 + + // Sealing valve error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_SealingValveErr_Stat = 0; // Bits= 1 + + // ETXV error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_ETXVerr_Stat = 0; // Bits= 1 + + // HVAC fan or TXV for front zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_HVACfanOrTXVerrF_Stat = 0; // Bits= 1 + + // HVAC fan or TXV for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_HVACfanOrTXVerrR_Stat = 0; // Bits= 1 + + // Actuators for front zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_ActuatorErrF_Stat = 0; // Bits= 1 + + // Actuators for rear zone error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_ActuatorErrR_Stat = 0; // Bits= 1 + + // Ultraviolet system error status + // 3 : "Component malfunction" + // 2 : "Supply chain short circuit + + // 1 : "Supply chain break + + // 0 : "No error" + _m->CCU_UltravioletErr_Stat = 0; // Bits= 2 + + // CCU VIN record error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_VinRecordErr_Stat = 0; // Bits= 1 + + // Air quality sensor error status + // 4 : "Component malfunction" + // 3 : "Communication error" + // 2 : "Supply chain short circuit" + // 1 : "Supply chain break" + // 0 : "No error" + _m->CCU_AirQualSenErr_Stat = 0; // Bits= 3 + + // CCU communication error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_CommErr_Stat = 0; // Bits= 1 + + // Two-way valve error status + // 1 : "Error" + // 0 : "No error" + _m->CCU_TWVerr_Stat = 0; // Bits= 1 + + // Ionization system error status + // 4 : "Component malfunction" + // 3 : "Communication error + + // 2 : "Supply chain short circuit + + // 1 : "Supply chain break + + // 0 : "No error" + _m->CCU_IonizationErr_Stat = 0; // Bits= 3 + + // Aromatization system error status + // 4 : "Component malfunction" + // 3 : "Communication error + + // 2 : "Supply chain short circuit + + // 1 : "Supply chain break + + // 0 : "No error" + _m->CCU_AromaErr_Stat = 0; // Bits= 3 +} + static void sendEventToCan(tCanSpamTransmitter *env) { if (env->ide) { env->canFrame.id_type = FLEXCAN_ID_EXT; @@ -236,10 +375,14 @@ static eTimeEventTransmit isEventTransmitter(tCanSpamTransmitter *env) { if (env->time_CCU_Errors_CYC < env->timeMs) { env->time_CCU_Errors_CYC = env->timeMs + CCU_Errors_CYC; + + CCU_Errors(env); + env->can_id = Pack_CCU_Errors_candb(&ccu_candb_tx.CCU_Errors, env->canFrame.data, &env->canFrame.dlc, &env->ide); -// return event_CCU_Errors_CYC; + + return event_CCU_Errors_CYC; } @@ -264,39 +407,39 @@ static eTimeEventTransmit isEventTransmitter(tCanSpamTransmitter *env) { return event_CCU_HVC_Req_Msg; } - // конец---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ - // конец---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ - // конец---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ + // конец ---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ + // конец ---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ + // конец ---------------------------------------0x310 CCU_HVC_Req_Msg------------------------------------------------ - // начало--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - // начало--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - // начало--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - if (env->time_CCU_VCU_Msg1 < env->timeMs) { - env->time_CCU_VCU_Msg1 = env->timeMs + CCU_VCU_Msg1_CYC; + // начало РЕЗЕРВ--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- +// if (env->time_CCU_VCU_Msg1 < env->timeMs) { +// env->time_CCU_VCU_Msg1 = env->timeMs + CCU_VCU_Msg1_CYC; - env->can_id = Pack_CCU_VCU_Msg1_candb(&ccu_candb_tx.CCU_VCU_Msg1, env->canFrame.data, &env->canFrame.dlc, - &env->ide); +// env->can_id = Pack_CCU_VCU_Msg1_candb(&ccu_candb_tx.CCU_VCU_Msg1, env->canFrame.data, &env->canFrame.dlc, +// &env->ide); // return event_CCU_VCU_Msg1; - } - // конец---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - // конец---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - // конец---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- +// } + // конец РЕЗЕРВ---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- + // конец РЕЗЕРВ---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- + // конец РЕЗЕРВ---------------------------------------0x315 CCU_VCU_Msg1--------------------------------------------------- - // начало--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- - // начало--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- - // начало--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- - if (env->time_CCU_VCU_Msg2 < env->timeMs) { - env->time_CCU_VCU_Msg2 = env->timeMs + CCU_VCU_Msg2_CYC; + // начало РЕЗЕРВ--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- +// if (env->time_CCU_VCU_Msg2 < env->timeMs) { +// env->time_CCU_VCU_Msg2 = env->timeMs + CCU_VCU_Msg2_CYC; - env->can_id = Pack_CCU_VCU_Msg2_candb(&ccu_candb_tx.CCU_VCU_Msg2, env->canFrame.data, &env->canFrame.dlc, - &env->ide); +// env->can_id = Pack_CCU_VCU_Msg2_candb(&ccu_candb_tx.CCU_VCU_Msg2, env->canFrame.data, &env->canFrame.dlc, +// &env->ide); // return event_CCU_VCU_Msg2; - } - // конец---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- - // конец---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- - // конец---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- +// } + // конец РЕЗЕРВ---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- + // конец РЕЗЕРВ---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- + // конец РЕЗЕРВ---------------------------------------0x316 CCU_VCU_Msg2--------------------------------------------------- // начало--------------------------------------0x380 CCU_Msg1------------------------------------------------------- // начало--------------------------------------0x380 CCU_Msg1------------------------------------------------------- @@ -322,17 +465,23 @@ static eTimeEventTransmit isEventTransmitter(tCanSpamTransmitter *env) { return event_CCU_Msg3; } - // начало--------------------------------------0x501 CCU_Msg3------------------------------------------------------- - // начало--------------------------------------0x501 CCU_Msg3------------------------------------------------------- - // начало--------------------------------------0x501 CCU_Msg3------------------------------------------------------- + // конец--------------------------------------0x501 CCU_Msg3------------------------------------------------------- + // конец--------------------------------------0x501 CCU_Msg3------------------------------------------------------- + // конец--------------------------------------0x501 CCU_Msg3------------------------------------------------------- - if (env->time_CCU_AC_Ctrl < env->timeMs) { - env->time_CCU_AC_Ctrl = env->timeMs + CCU_AC_Ctrl_CYC; - env->can_id = Pack_CCU_AC_Ctrl_candb(&ccu_candb_tx.CCU_AC_Ctrl, env->canFrame.data, &env->canFrame.dlc, - &env->ide); + // начало РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- + // начало РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- +// if (env->time_CCU_AC_Ctrl < env->timeMs) { +// env->time_CCU_AC_Ctrl = env->timeMs + CCU_AC_Ctrl_CYC; +// env->can_id = Pack_CCU_AC_Ctrl_candb(&ccu_candb_tx.CCU_AC_Ctrl, env->canFrame.data, &env->canFrame.dlc, +// &env->ide); // return event_CCU_AC_Ctrl; - } +// } + // конец РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- + // конец РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- + // конец РЕЗЕРВ--------------------------------------0x18FFF200 CCU_AC_Ctrl ------------------------------------------------------- return event_CCU_none; }