From 36241582ae923a2c59ac777e0d896b82dbb3b22d Mon Sep 17 00:00:00 2001
From: darya
Date: Tue, 23 Jun 2026 11:21:41 +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=2023.06.2026?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
LinSensorTasks.c | 243 +++++++++++++++++++++++++++++++++--------------
LinSensorTasks.h | 17 +++-
2 files changed, 185 insertions(+), 75 deletions(-)
diff --git a/LinSensorTasks.c b/LinSensorTasks.c
index 6f44aa6..a97035f 100644
--- a/LinSensorTasks.c
+++ b/LinSensorTasks.c
@@ -14,14 +14,30 @@
#define LOG_SIGN5 "Ln5"
#define LOGGER env->logger
-const uint8_t DRS_SENSON_ADR_Stat[LIN5_SENSOR_COUNT] = {DRS_DL_Stat,
- DRS_DR_Stat,
- DRS_FPL_Stat,
- DRS_FPR_Stat,
- DRS_RLB_Stat,
- DRS_RRB_Stat,
- DRS_FCL_Stat,
- DRS_FCR_Stat};
+const uint8_t LIN5_SENSON_ADR_Stat[LIN5_SENSOR_COUNT] = {DRS_DL_Stat,
+ DRS_DR_Stat,
+ DRS_FPL_Stat,
+ DRS_FPR_Stat,
+ DRS_RLB_Stat,
+ DRS_RRB_Stat,
+ DRS_FCL_Stat,
+ DRS_FCR_Stat};
+
+const uint8_t LIN4_SENSON_ADR_Stat[LIN4_SENSOR_COUNT] = {AirQS_Stat,
+ Aroma_Stat,
+ Ionizer_Stat,
+ eTXV_fHVAC_Stat,
+ eTXV_rHVAC_Stat,
+ eTXV_batChiller_Stat,
+ eTXV_eeChiller_Stat};
+
+const uint8_t LIN4_SENSON_LEN_Stat[LIN4_SENSOR_COUNT] = {sizeof(tAirQS_Stat),
+ sizeof(tAroma_Stat),
+ sizeof(tIonizer_Stat),
+ sizeof(teTXV_fHVAC_Stat),
+ sizeof(teTXV_rHVAC_Stat),
+ sizeof(teTXV_batChiller_Stat),
+ sizeof(teTXV_eeChiller_Stat)};
static lin_event_id_t SEND_SENSOR_COM_x(tLinIO *linIo, uint8_t COM_ADR) {
lin_event_id_t res = linIo->runCommand(linIo->env, COM_ADR, 30);
@@ -55,10 +71,12 @@ static lin_event_id_t Set_CCU_Req(tLinIO *linIo, tLinData *linData, tCCU_Req *p_
return res;
}
-static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_Stat *p_AirQS_Stat) {
+
+static lin_event_id_t
+Get_Sensor4_Stat(tLinIO *linIo, tLinData *linData, void *p_Stat, uint8_t p_Stat_Len, uint8_t ADR_stat) {
lin_event_id_t res;
- tAirQS_Stat *tAirQS_Stat_ = (tAirQS_Stat *) linData->g_aRxBuffer;
+ void *pStat_ = (void *) linData->g_aRxBuffer;
uint8_t retry = 1;
@@ -67,12 +85,12 @@ static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_St
linData->direction = LIN_DIRECTION_GET;
linData->g_aTxBufferLen = 0;
- linData->g_aRxBufferLen = sizeof(tAirQS_Stat);
+ linData->g_aRxBufferLen = p_Stat_Len;
- res = SEND_SENSOR_COM_x(linIo, AirQS_Stat);
+ res = SEND_SENSOR_COM_x(linIo, ADR_stat);
if (res == LIN_RX_COMPLETED) {
- memcpy(p_AirQS_Stat, tAirQS_Stat_, sizeof(tAirQS_Stat));
+ memcpy(p_Stat, pStat_, p_Stat_Len);
break;
}
@@ -83,7 +101,6 @@ static lin_event_id_t Get_AirQS_Stat(tLinIO *linIo, tLinData *linData, tAirQS_St
}
-
//начало----------------------------------------- LIN 4 ----------------------------------------------------------------
//начало----------------------------------------- LIN 4 ----------------------------------------------------------------
//начало----------------------------------------- LIN 4 ----------------------------------------------------------------
@@ -95,7 +112,7 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
env->d_CCU_Req.CCU_AirQS_Req = 1;
ret = Set_CCU_Req(env->linIo, env->linData, &env->d_CCU_Req);
-#if (LOG_LIN4_ACTUATOR == 1)
+#if (LOG_LIN4_SENSOR == 1)
if (ret == LIN_TX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "OK Set_CCU_Req = %d", ret)
} else {
@@ -103,27 +120,107 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
}
#endif
+ for (uint8_t i = 0; i < LIN4_SENSOR_COUNT; ++i) {
- ret = Get_AirQS_Stat(env->linIo, env->linData, &env->d_AirQS_Stat);
+ ret = Get_Sensor4_Stat(env->linIo, env->linData, &env->Stat[i], LIN4_SENSON_LEN_Stat[i],
+ LIN4_SENSON_ADR_Stat[i]);
-#if (LOG_LIN4_ACTUATOR == 1)
+ switch (i) {
- if (ret == LIN_RX_COMPLETED) {
- LoggerFormatInfo(LOGGER, LOG_SIGN4,
- "AirQS_LinRespErr_Stat = %d AirQS_Sens_Stat = %d AirQS_Combined_Stat = %d AirQS_Err_Stat = %d AirQS_COLvl_Stat = %d AirQS_NOxLvl_Stat = %d AirQS_NH3Lvl_Stat = %d",
- env->d_AirQS_Stat.AirQS_LinRespErr_Stat,
- env->d_AirQS_Stat.AirQS_Sens_Stat,
- env->d_AirQS_Stat.AirQS_Combined_Stat,
- env->d_AirQS_Stat.AirQS_Err_Stat,
- env->d_AirQS_Stat.AirQS_COLvl_Stat,
- env->d_AirQS_Stat.AirQS_NOxLvl_Stat,
- env->d_AirQS_Stat.AirQS_NH3Lvl_Stat)
- } else {
- LoggerFormatInfo(LOGGER, LOG_SIGN4, "ERROR Get_AirQS_Stat = %d", ret)
- }
+ case eeAirQS_Stat: {
+ tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
+
+#if (LOG_LIN4_SENSOR == 1)
+
+ if (ret == LIN_RX_COMPLETED) {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4,
+ "AirQS_LinRespErr_Stat = %d AirQS_Sens_Stat = %d AirQS_Combined_Stat = %d AirQS_Err_Stat = %d AirQS_COLvl_Stat = %d AirQS_NOxLvl_Stat = %d AirQS_NH3Lvl_Stat = %d",
+ pAirQS_Stat->AirQS_LinRespErr_Stat,
+ pAirQS_Stat->AirQS_Sens_Stat,
+ pAirQS_Stat->AirQS_Combined_Stat,
+ pAirQS_Stat->AirQS_Err_Stat,
+ pAirQS_Stat->AirQS_COLvl_Stat,
+ pAirQS_Stat->AirQS_NOxLvl_Stat,
+ pAirQS_Stat->AirQS_NH3Lvl_Stat)
+ } else {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
+ }
#endif
+ break;
+ }
+ case eeAroma_Stat: {
+ tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
+
+ if (ret == LIN_RX_COMPLETED) {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4,
+ "Aroma_LinRespErr_Stat = %d Aroma_CartridgeSw_Stat = %d Aroma_Err_Stat = %d Aroma_Intens_Stat = %d Aroma_CartridgeFlavor_Stat = %d Aroma_CartridgeCapacity_Stat = %d",
+ pAroma_Stat->Aroma_LinRespErr_Stat,
+ pAroma_Stat->Aroma_CartridgeSw_Stat,
+ pAroma_Stat->Aroma_Err_Stat,
+ pAroma_Stat->Aroma_Intens_Stat,
+ pAroma_Stat->Aroma_CartridgeFlavor_Stat,
+ pAroma_Stat->Aroma_CartridgeCapacity_Stat)
+ } else {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
+ }
+
+ break;
+ }
+
+ case eeIonizer_Stat: {
+ tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
+
+ if (ret == LIN_RX_COMPLETED) {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4,
+ "Ionizer_LinRespErr_Stat = %d Ionizer_Err_Stat = %d Ionizer_Ionization_Stat = %d",
+ pIonizer_Stat->Ionizer_LinRespErr_Stat,
+ pIonizer_Stat->Ionizer_Err_Stat,
+ pIonizer_Stat->Ionizer_Ionization_Stat)
+ } else {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
+ }
+
+ break;
+ }
+ case eeTXV_fHVAC_Stat: {
+ teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
+
+ if (ret == LIN_RX_COMPLETED) {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4,
+ "eTXV_fHVAC_Pos_Stat = %d eTXV_fHVAC_LinRespErr_Stat = %d eTXV_fHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_fHVAC_Temp_Val = %d",
+ p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat,
+ p_teTXV_fHVAC_Stat->eTXV_fHVAC_LinRespErr_Stat,
+ p_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat,
+ p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val,
+ p_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val)
+ } else {
+ LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR = %d", ret)
+ }
+
+ break;
+ }
+
+ case eeTXV_rHVAC_Stat: {
+ teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
+ break;
+ }
+
+ case eeTXV_batChiller_Stat: {
+ teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
+ break;
+ }
+
+ case eeTXV_eeChiller_Stat: {
+ teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
+ break;
+ }
+ }
+
+ }
+
+
return LIN_NO_EVENT;
}
@@ -367,55 +464,55 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
// if (env->linStateSensor.error_connect[i] == 0) {
- ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]);
+ ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], LIN5_SENSON_ADR_Stat[i]);
- uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat;
+ uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat;
- if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) {
+ if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) {
- if (env->linStateSensor.LED_COUNT[i] == 0) {
- env->linStateSensor.LED_COUNT[i] = 3;
- } else {
- --env->linStateSensor.LED_COUNT[i];
- }
-
- }
- env->linStateSensor.prev_btn_state[i] = current_btn_state;
-
- env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
- env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
-
- if (ret == LIN_RX_COMPLETED) {
- env->linStateSensor.error_connect[i] = 0;
-#if (LOG_LIN5_SENSOR == 1)
-
- if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
- *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
- (env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
-
- *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
- env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
-
- LoggerFormatInfo(LOGGER, LOG_SIGN5,
- "Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
- i,
- env->linStateSensor.LED_COUNT[i],
- env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
- env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
- env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
- )
- }
-#endif
+ if (env->linStateSensor.LED_COUNT[i] == 0) {
+ env->linStateSensor.LED_COUNT[i] = 3;
} else {
- env->linStateSensor.error_connect[i] = 1;
-#if (LOG_LIN5_SENSOR == 1)
- if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
- env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
- LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
- }
-#endif
+ --env->linStateSensor.LED_COUNT[i];
}
+ }
+ env->linStateSensor.prev_btn_state[i] = current_btn_state;
+
+ env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
+ env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
+
+ if (ret == LIN_RX_COMPLETED) {
+ env->linStateSensor.error_connect[i] = 0;
+#if (LOG_LIN5_SENSOR == 1)
+
+ if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
+ *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
+ (env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
+
+ *((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
+ env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
+
+ LoggerFormatInfo(LOGGER, LOG_SIGN5,
+ "Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
+ i,
+ env->linStateSensor.LED_COUNT[i],
+ env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
+ env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
+ env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
+ )
+ }
+#endif
+ } else {
+ env->linStateSensor.error_connect[i] = 1;
+#if (LOG_LIN5_SENSOR == 1)
+ if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
+ env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
+ LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
+ }
+#endif
+ }
+
// }
}
diff --git a/LinSensorTasks.h b/LinSensorTasks.h
index 9ae375d..a475d10 100644
--- a/LinSensorTasks.h
+++ b/LinSensorTasks.h
@@ -13,7 +13,18 @@
#define LOG_LIN4_SENSOR 1
#define LOG_LIN5_SENSOR 0
-#define LIN5_SENSOR_COUNT 8
+
+#define LIN4_SENSOR_COUNT 7
+
+typedef enum {
+ eeAirQS_Stat = 0,
+ eeAroma_Stat = 1,
+ eeIonizer_Stat = 2,
+ eeTXV_fHVAC_Stat = 3,
+ eeTXV_rHVAC_Stat = 4,
+ eeTXV_batChiller_Stat = 5,
+ eeTXV_eeChiller_Stat = 6
+} eSensorStat4;
#define AirQS_Stat 0x14
#define Aroma_Stat 0x5
@@ -24,6 +35,8 @@
#define eTXV_batChiller_Stat 0x22
#define eTXV_eeChiller_Stat 0x24
+#define LIN5_SENSOR_COUNT 8
+
#define CCU_DRS_Req 0x1
#define DRS_DL_Stat 0xD
#define DRS_DR_Stat 0x12
@@ -220,7 +233,7 @@ typedef struct {
tLoggerInterface *logger;
tCCU_Req d_CCU_Req;
- tAirQS_Stat d_AirQS_Stat;
+ uint8_t Stat[LIN4_SENSOR_COUNT];
struct {
osThreadId_t id;