diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index 2ec7385..8d33239 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -209,7 +209,6 @@ void Error_Handler(void);
#define I2C2_STANDARD_100K 0x00000E14
#define I2C2_FAST_400K 0x00000004
#define I2C2_FAST_PLUS_1M 0x00000000
-
#endif
#if defined(STS_R4)
@@ -229,6 +228,19 @@ void Error_Handler(void);
#define SOAP_DATA HAL_GPIO_ReadPin(SOAP_STATUS_GPIO_Port,SOAP_STATUS_Pin)
#endif
+#if defined(STS_M1)
+/* Water leakage MEMS_IF_3, PA10 */
+#define WATER_LEAKAGE_STATUS_Pin GPIO_PIN_10
+#define WATER_LEAKAGE_STATUS_GPIO_Port GPIOA
+
+/* Water leakageON_OFF, MEMS_IF_1, PB5 */
+#define WATER_LEAKAGE_SWITCH_Pin GPIO_PIN_5
+#define WATER_LEAKAGE_SWITCH_GPIO_Port GPIOB
+
+#define WATER_LEAKAGE_DATA HAL_GPIO_ReadPin(WATER_LEAKAGE_STATUS_GPIO_Port,WATER_LEAKAGE_STATUS_Pin)
+
+#endif
+
/* USER CODE END Private defines */
#ifdef __cplusplus
diff --git a/Core/Inc/utilities_def.h b/Core/Inc/utilities_def.h
index 3f355e1..c0fe858 100644
--- a/Core/Inc/utilities_def.h
+++ b/Core/Inc/utilities_def.h
@@ -82,8 +82,10 @@ typedef enum
/* USER CODE BEGIN CFG_SEQ_Task_Id_t */
CFG_SEQ_Task_YunhornSTSEventRFAC, /* RFAC */
-#ifdef STS_O6
+#if defined(STS_M1)||defined(STS_O6)
CFG_SEQ_Task_YunhornSTSEventP1, /* REEDSWITCH, IO */
+#endif
+#if defined(STS_O6)
CFG_SEQ_Task_YunhornSTSEventP2, /* MOTION */
CFG_SEQ_Task_YunhornSTSEventP3, /* LAMP BAR LED */
#endif
@@ -99,7 +101,7 @@ typedef enum
#ifdef STS_E2
CFG_SEQ_Task_YunhornSTSEventP7, /* IAQ */
#endif
-#ifdef STS_M1
+#ifdef STS_M7
CFG_SEQ_Task_YunhornSTSEventP8, /* ETR, PULSE COUNT */
#endif
#ifdef MODBUS_RS485
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index 8fec7a1..2e67930 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -418,7 +418,7 @@ void LoRaWAN_Init(void)
/* USER CODE BEGIN LoRaWAN_Init_LV */
uint32_t feature_version = 0UL;
/* USER CODE END LoRaWAN_Init_LV */
- APP_LOG(TS_OFF, VLEVEL_M, "\n\n# YUNHORN SMARTOILETS: MTM:%d.%d HWFW:%d.%d V:%d.%d.%d #\n\n",
+ APP_LOG(TS_OFF, VLEVEL_M, "\n\n# YUNHORN SMARTOILETS: (%s) MTM:%d.%d HWFW:%d.%d V:%d.%d.%d #\n\n",(char*)YUNHORN_STS_PRD_STRING,
(uint8_t)sts_mtmcode1, (uint8_t)sts_mtmcode2,(uint8_t)sts_hardware_ver,(uint8_t)FirmwareVersion,
(uint8_t)MajorVer,(uint8_t)MinorVer,(uint8_t)SubMinorVer);
/* USER CODE BEGIN LoRaWAN_Init_1 */
@@ -510,6 +510,13 @@ void LoRaWAN_Init(void)
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), UTIL_SEQ_RFU, STS_YunhornSTSEventRFAC_Process);
+#ifdef STS_M1
+
+ UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), UTIL_SEQ_RFU, STS_YunhornSTSEventP1_Process);
+
+#endif
+
+
#ifdef STS_P2
UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP5), UTIL_SEQ_RFU, STS_YunhornSTSEventP5_Process);
@@ -748,6 +755,8 @@ static void SendTxData(void)
sts_tof_range_data_t sts_rr_sensor_data={0x0,0x0,0x0};
#elif defined(STS_R4)
sts_r_sensor_data_t sts_r4_sensor_data={0};
+#elif defined(STS_M1)
+ sts_r_sensor_data_t sts_m1_sensor_data={0};
#endif
if (LmHandlerIsBusy() == false)
@@ -767,12 +776,20 @@ static void SendTxData(void)
#endif /* CAYENNE_LPP */
EnvSensors_Read(&sensor_data);
+
#ifdef STS_R4
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), CFG_SEQ_Prio_0);
//STS_YunhornSTSEventP6_Process();
STS_R4_sensor_read(&sts_r4_sensor_data);
#endif
+#ifdef STS_M1
+
+ STS_M1_sensor_read(&sts_m1_sensor_data);
+#endif
+
+
+
#ifdef VL53LX
STS_people_count_sensor_Read(&sts_p2_sensor_data);
#endif
@@ -788,14 +805,16 @@ static void SendTxData(void)
AppData.Port = YUNHORN_STS_R2_LORA_APP_DATA_PORT; /* STS-R2 Data Port */
#elif defined(STS_R5)
AppData.Port = YUNHORN_STS_R5_LORA_APP_DATA_PORT; /* STS-R5 Data Port */
-#endif
+#endif //STS_R1
#endif //VL53L0
-#ifdef STS_R4
+#ifdef STS_R4 //SOAP/SANITIZER LEVEL
AppData.Port = YUNHORN_STS_R4_LORA_APP_DATA_PORT; /* STS-R4 Data Port */
#endif
-
+#ifdef STS_M1 // WATER LEAKAGE SENSOR
+ AppData.Port = YUNHORN_STS_M1_LORA_APP_DATA_PORT; /* STS-M1 Data Port */
+#endif
AppData.Buffer[i++] = (uint8_t) (AppLedStateOn|0x80); // for first byte, cannot be 0x0
AppData.Buffer[i++] = (uint8_t) sts_mtmcode1;
@@ -926,6 +945,14 @@ static void SendTxData(void)
AppData.Buffer[i++] = (uint8_t)(sts_r4_sensor_data.measure_tech & 0xFF);
AppData.Buffer[i++] = (uint8_t)(sts_r4_sensor_data.on_off_event & 0xFF);
#endif //STS_R4
+
+/* STS-M1 WATER LEAKAGE SENSOR */
+#ifdef STS_M1
+ AppData.Buffer[i++] = 2;
+ AppData.Buffer[i++] = (uint8_t)(sts_m1_sensor_data.measure_tech & 0xFF);
+ AppData.Buffer[i++] = (uint8_t)(sts_m1_sensor_data.on_off_event & 0xFF);
+#endif //STS_M1
+
AppData.BufferSize = i;
if ((JoinLedTimer.IsRunning) && (LmHandlerJoinStatus() == LORAMAC_HANDLER_SET))
@@ -964,8 +991,11 @@ static void OnTxTimerEvent(void *context)
/* USER CODE BEGIN OnTxTimerEvent_1 */
/* USER CODE END OnTxTimerEvent_1 */
-
+#ifdef STS_R4
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP6), CFG_SEQ_Prio_0);
+#elif defined(STS_M1)
+ UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
+#endif
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject
index 27a9d57..2d527e3 100644
--- a/STM32CubeIDE/.cproject
+++ b/STM32CubeIDE/.cproject
@@ -133,7 +133,7 @@