From 0405c35ade9f2bf03486afe7300262a9e385ac24 Mon Sep 17 00:00:00 2001
From: YunHorn Technology <dp.s@yunhorn.com>
Date: Fri, 7 Jun 2024 13:31:26 +0800
Subject: [PATCH] --- STS-O2 for HACTL 202406071331

---
 Core/Inc/sts_lamp_bar.h             |   2 +-
 Core/Inc/sys_conf.h                 |   6 +-
 Core/Inc/yunhorn_sts_prd_conf.h     |   6 +-
 Core/Inc/yunhorn_sts_sensors.h      |   4 +-
 Core/Src/sts_lamp_bar.c             | 140 +++++++++++++++-------------
 Core/Src/yunhorn_sts_presence_rss.c |   2 +-
 Core/Src/yunhorn_sts_process.c      |   6 +-
 LoRaWAN/App/lora_app.c              |  58 ++++++------
 8 files changed, 116 insertions(+), 108 deletions(-)

diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h
index ef44973..e77b08f 100644
--- a/Core/Inc/sts_lamp_bar.h
+++ b/Core/Inc/sts_lamp_bar.h
@@ -67,7 +67,7 @@ enum sts_oo_work_mode {
 
 	STS_OTHER_MODE				// ?    OTHER MODE
 };
-#ifdef STS_O7
+#if	defined(STS_O7)||defined(STS_O6)
 #define STS_Reed_Hall_State			HALL1_STATE
 #define STS_Emergency_Button_State	HALL2_STATE
 #else
diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h
index 871fadc..58ce722 100644
--- a/Core/Inc/sys_conf.h
+++ b/Core/Inc/sys_conf.h
@@ -47,12 +47,12 @@ extern "C" {
 /**
   * @brief  Verbose level for all trace logs
   */
-#define VERBOSE_LEVEL                        VLEVEL_M
+#define VERBOSE_LEVEL                        VLEVEL_OFF
 
 /**
   * @brief Enable trace logs
   */
-#define APP_LOG_ENABLED                      1
+#define APP_LOG_ENABLED                      0
 
 /**
   * @brief Activate monitoring (probes) of some internal RF signals for debug purpose
@@ -75,7 +75,7 @@ extern "C" {
   * @brief Enable/Disable MCU Debugger pins (dbg serial wires)
   * @note  by HW serial wires are ON by default, need to put them OFF to save power
   */
-#define DEBUGGER_ENABLED                     1
+#define DEBUGGER_ENABLED                     0
 
 /**
   * @brief Disable Low Power mode
diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h
index 25764dc..67925fd 100644
--- a/Core/Inc/yunhorn_sts_prd_conf.h
+++ b/Core/Inc/yunhorn_sts_prd_conf.h
@@ -221,7 +221,7 @@
 
 #define MajorVer									24U
 #define MinorVer									06U
-#define SubMinorVer 								05U
+#define SubMinorVer 								07U
 #define FirmwareVersion								3U
  
 #define	YUNHORN_STS_MAX_NVM_CFG_SIZE				64U
@@ -247,8 +247,8 @@
 #define sts_sendhtbtport						(YUNHORN_STS_O6_LORA_APP_HTBT_PORT)
 #endif
 #ifdef	STS_O7
-#define sts_senddataport						(YUNHORN_STS_O7_LORA_APP_DATA_PORT)
-#define sts_sendhtbtport						(YUNHORN_STS_O7_LORA_APP_HTBT_PORT)
+#define sts_senddataport						(YUNHORN_STS_O6_LORA_APP_DATA_PORT)
+#define sts_sendhtbtport						(YUNHORN_STS_O6_LORA_APP_HTBT_PORT)
 #endif
 #if	defined(STS_O6)||defined(STS_O7)
 #define sts_appctrlport							(YUNHORN_STS_O7_USER_APP_CTRL_PORT)
diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h
index a359533..718ef95 100644
--- a/Core/Inc/yunhorn_sts_sensors.h
+++ b/Core/Inc/yunhorn_sts_sensors.h
@@ -39,7 +39,7 @@ extern "C" {
   * Sensor data parameters
   */
 	
-#if	(defined(YUNHORN_STS_M7_ENABLED) || defined(YUNHORN_STS_O7_ENABLED))
+#if	defined(STS_O7)||defined(STS_O6)
 enum cfg_cmd_order{
 	CFG_CMD1=0,		//'Y'
 	CFG_CMD2,			//'D' 'Z' 'V' 'O' 'F' 'H' 'M'
@@ -86,7 +86,7 @@ enum RSS_CFG_order{
 
 #endif
 
-#ifdef YUNHORN_STS_O7_ENABLED
+#if	defined(STS_O7)||defined(STS_O6)
 
 enum sts_rss_config_t {
 	STS_RSS_CONFIG_DEFAULT=0,
diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c
index da1d8ed..72c5dde 100644
--- a/Core/Src/sts_lamp_bar.c
+++ b/Core/Src/sts_lamp_bar.c
@@ -238,7 +238,6 @@ void STS_Combined_Status_Processing(void)
 		case STS_NETWORK_MODE:
 			sts_status_color = sts_cloud_netcolor;
 			break;
-
 		case STS_WIRED_MODE:				// NO LAMP BAR FOR THOSE WATER LEAKAGE SENSOR OR SOAP CAPACITY SENSORS
 			sts_status_color = STS_DARK;
 #ifdef 	STS_M1
@@ -246,13 +245,11 @@ void STS_Combined_Status_Processing(void)
 			sts_water_leakage_changed_flag = 1;
 #endif
 			break;
-
 		case STS_REEDSWITCH_MODE:
 
 			sts_status_color = (sts_reed_hall_result == STS_Status_Door_Open )? STS_GREEN: STS_RED;
 
 			break;
-
 		case STS_RSS_MODE:
 			if (sts_rss_result == STS_RESULT_NO_MOTION){
 				sts_status_color = STS_GREEN;
@@ -261,19 +258,47 @@ void STS_Combined_Status_Processing(void)
 				sts_status_color = STS_RED;
 			}
 			break;
-
 		case STS_DUAL_MODE:		// FOR STS_O6
 			if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release ))
 			{
 				sts_status_color = STS_GREEN;
-				sts_lamp_bar_color = STS_GREEN;
 
 			} else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown ))
 			{
 				sts_status_color = STS_RED;
-				sts_lamp_bar_color = STS_RED;
-#if 0 // not for STS-O6 sensor
 				switch(sts_fall_rising_detected_result) {
+					case STS_PRESENCE_LAYDOWN:
+						sts_lamp_bar_color = STS_YELLOW;
+					    sts_status_color = STS_YELLOW;
+					break;
+					case STS_PRESENCE_FALL:		//RED_BLUE FLASH
+						sts_lamp_bar_color = STS_RED_BLUE;
+						sts_status_color = STS_RED_BLUE;
+						break;
+					case STS_PRESENCE_RISING:  //NORMAL OCCUPANCY STATUS
+						sts_lamp_bar_color = STS_RED;
+						sts_status_color = STS_RED;
+						break;
+				}
+				if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
+				{
+					sts_status_color = STS_RED_BLUE;
+				}
+			  }
+		break;
+
+		case STS_UNI_MODE:		//FOR STS-O7
+			if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release ))
+			{
+				sts_status_color = STS_GREEN;
+
+			} else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown ))
+			{
+				sts_status_color = STS_RED;
+			}
+
+			switch(sts_fall_rising_detected_result)
+			{
 					case STS_PRESENCE_LAYDOWN:
 						sts_lamp_bar_color = STS_YELLOW;
 					    sts_status_color = STS_YELLOW;
@@ -286,69 +311,15 @@ void STS_Combined_Status_Processing(void)
 						sts_lamp_bar_color = STS_RED;
 						sts_status_color = STS_RED;
 					break;
-				}
-#endif
-				if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
-				{
-					sts_status_color = STS_RED_BLUE;
-					sts_lamp_bar_color = STS_RED_BLUE;
-				}
-			  }
-		break;
-
-		case STS_UNI_MODE:		//FOR STS-O7
-			if ((sts_rss_result == STS_RESULT_NO_MOTION) && (sts_reed_hall_1_result == STS_Status_Door_Open )&& (sts_reed_hall_2_result == STS_Status_SOS_Release ))
-			{
-				sts_status_color = STS_GREEN;
-				sts_lamp_bar_color = STS_GREEN;
-
-			} else if ((sts_rss_result == STS_RESULT_MOTION) || (sts_reed_hall_1_result == STS_Status_Door_Close )||(sts_reed_hall_2_result == STS_Status_SOS_Pushdown ))
-			{
-				sts_status_color = STS_RED;
-				sts_lamp_bar_color = STS_RED;
-			}
-
-			switch(sts_fall_rising_detected_result)
-			{
-				case STS_PRESENCE_NONE:
-					sts_lamp_bar_color = STS_GREEN;
-					sts_status_color = STS_GREEN;
+					default:
+						sts_lamp_bar_color = STS_RED;
+						sts_status_color = STS_RED;
 					break;
-
-				case STS_PRESENCE_FALL:		//RED_BLUE FLASH
-					sts_lamp_bar_color = STS_RED_BLUE;
-					sts_status_color = STS_RED_BLUE;
-				break;
-
-				case STS_PRESENCE_LAYDOWN:
-					sts_lamp_bar_color = STS_YELLOW;
-				    sts_status_color = STS_YELLOW;
-				break;
-
-				case STS_PRESENCE_RISING:  //NORMAL OCCUPANCY STATUS
-					sts_lamp_bar_color = STS_RED;
-					sts_status_color = STS_RED;
-				break;
-
-				case STS_PRESENCE_UNCONCIOUS:
-					sts_lamp_bar_color = STS_RED_BLUE;
-					sts_status_color = STS_RED_BLUE;
-				break;
-
-				case STS_PRESENCE_STAYSTILL:
-					sts_lamp_bar_color = STS_RED_BLUE;
-					sts_status_color = STS_RED_BLUE;
-				break;
-				default:
-					sts_lamp_bar_color = STS_GREEN;
-					sts_status_color = STS_GREEN;
-				break;
 			}
 
 			if (sts_reed_hall_2_result == STS_Status_SOS_Pushdown )
 			{
 				sts_status_color = STS_RED_BLUE;
-				sts_lamp_bar_color = STS_RED_BLUE;
 			}
 
 		break;
@@ -410,6 +381,17 @@ void STS_Combined_Status_Processing(void)
 			break;
 	}
 
+#if 0
+	if (sts_status_color == STS_RED_BLUE)
+	{
+		//STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level);
+		STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, luminance_level);
+		HAL_Delay(100);
+		STS_Lamp_Bar_Set_STS_RGB_Color(STS_BLUE, luminance_level);
+		HAL_Delay(100);
+		STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED_BLUE, luminance_level);
+	}
+#endif
 	if ((sts_work_mode == STS_WIRED_MODE) || (sts_service_mask > STS_SERVICE_MASK_L0))
 	{
 		sts_status_color = STS_DARK;
@@ -417,11 +399,39 @@ void STS_Combined_Status_Processing(void)
 		last_lamp_bar_color = STS_DARK;
 		STS_Lamp_Bar_Set_Dark();
 	}
+	else
+	{
 
-//	sensor_data_ready = 1;
+		//if ((last_lamp_bar_color != sts_status_color))
+		{
+			sts_lamp_bar_color = ((sts_service_mask == STS_SERVICE_MASK_L0)? sts_status_color:STS_DARK);
 
+				STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level);
 
+				if ((sts_service_mask == STS_SERVICE_MASK_L0) || (sts_lamp_bar_color == STS_DARK))
+				{
+				//	STS_WS2812B_Refresh();
+				}
 
+			last_lamp_bar_color = sts_lamp_bar_color;
+		}
+	}
+
+	//STS_Lamp_Bar_Refresh();
+#if 1
+	//if ((sts_rss_result_changed_flag)|| (sts_reed_hall_changed_flag) || (sts_tof_result_changed_flag) || (sts_water_leakage_changed_flag))
+	{
+
+		//sts_rss_result_changed_flag =0;
+		sts_reed_hall_changed_flag =0;
+		sts_tof_result_changed_flag =0;
+#ifdef 	STS_M1
+		sts_water_leakage_changed_flag=0;
+#endif
+		sensor_data_ready = 1;
+		//STS_PRESENCE_SENSOR_Prepare_Send_Data();
+	}
+#endif
 }
 
 void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
diff --git a/Core/Src/yunhorn_sts_presence_rss.c b/Core/Src/yunhorn_sts_presence_rss.c
index e101361..adbea64 100644
--- a/Core/Src/yunhorn_sts_presence_rss.c
+++ b/Core/Src/yunhorn_sts_presence_rss.c
@@ -466,7 +466,7 @@ int sts_presence_rss_fall_rise_detection(void)
 					motion_count = 0;
 				}
 			}
-			}
+		}
 
 			acc_integration_sleep_ms(1000 / DEFAULT_UPDATE_RATE_PRESENCE); 				//	DEFAULT_UPDATE_RATE);
 	}
diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c
index 63ca460..ab237e9 100644
--- a/Core/Src/yunhorn_sts_process.c
+++ b/Core/Src/yunhorn_sts_process.c
@@ -38,7 +38,7 @@
 /* USER CODE BEGIN Includes */
 extern volatile sts_cfg_nvm_t sts_cfg_nvm;
 extern volatile uint8_t sts_ac_code[20];
-volatile uint8_t sts_service_mask=0;
+volatile uint8_t sts_service_mask;
 volatile uint32_t rfac_timer;
 volatile uint8_t sensor_data_ready=0;
 
@@ -88,7 +88,7 @@ volatile STS_R0_SensorDataTypeDef r4_data;
 #ifdef YUNHORN_STS_O5_ENABLED
 
 #endif
-#ifdef STS_O7
+#if	defined(STS_O7)||defined(STS_O6)
 extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
 
 extern volatile distance_measure_cfg_t distance_cfg;
@@ -724,7 +724,7 @@ uint8_t STS_SENSOR_MEMS_Get_ID(uint8_t *devID)
 {
 	uint8_t scanned_id[2] = {0x0,0x0};
 
-#ifdef    YUNHORN_STS_O7_ENABLED
+#if	defined(STS_O7)||defined(STS_O6)
 	if (hal_test_spi_read_chipid(scanned_id))
 	{
 		devID[0] = scanned_id[0];
diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c
index 7fd6d30..91bd937 100644
--- a/LoRaWAN/App/lora_app.c
+++ b/LoRaWAN/App/lora_app.c
@@ -125,7 +125,7 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = {
 		{0x0,0x0,0x0,0x0,0x0,   0x0,0x0,0x0,0x0,0x0,    0x0,0x0,0x0,0x0,0x0,   0x0,0x0,0x0,0x0,0x0}
 };
 
-#ifdef YUNHORN_STS_O7_ENABLED
+#if	defined(STS_O6)||defined(STS_O7)
 extern volatile uint8_t sensor_data_ready;
 extern volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData;
 extern volatile float sts_distance_rss_distance;
@@ -449,7 +449,7 @@ static LmHandlerParams_t LmHandlerParams =
 /**
   * @brief Type of Event to generate application Tx
   */
-static TxEventType_t EventType = TX_ON_EVENT;
+static TxEventType_t EventType = TX_ON_EVENT; //TX_ON_TIMER;//TX_ON_EVENT;
 
 /**
   * @brief Timer to handle the application Tx
@@ -645,11 +645,11 @@ void LoRaWAN_Init(void)
   UTIL_SEQ_RegTask((1 << CFG_SEQ_Task_YunhornSTSEventP8), UTIL_SEQ_RFU, STS_YunhornSTSEventP8_Process);
 #endif
 
-#ifdef    YUNHORN_STS_O7_ENABLED
+#if	defined(STS_O7)||defined(STS_O6)
   UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer,
 		  YUNHORN_STS_RSS_WAKEUP_CHECK_TIME,
 		  UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
-  //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
+  UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
 
   UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer,
 		  YUNHORN_STS_HEART_BEAT_CHECK_TIME,
@@ -672,11 +672,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 {
   switch (GPIO_Pin)
   {
-#ifdef	STS_O7
+#if	defined(STS_O6)||defined(STS_O7)
   case  HALL1_Pin:
 	  if (sts_reed_hall_1_changed)
 	  {
-	  HAL_Delay(450);	//de-bouncing
+	  HAL_Delay(250);	//de-bouncing
 	  sts_hall1_read = HALL1_STATE;
 	  APP_LOG(TS_OFF, VLEVEL_M, "\n\n Door Contact Read = %02x  --%20s\r\n", HALL1_STATE, (HALL1_STATE==STS_Status_Door_Close)?"Door Closed":"Door Opened");
 	  OnSensor1StateChanged();
@@ -684,24 +684,22 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 	  //	if (EventType == TX_ON_EVENT)
 	  {
 		  //sensor_data_ready =1;
-		  //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
-		  STS_YunhornSTSEventP1_Process();
+		  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
 		  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
 	  }
-	  sts_reed_hall_1_changed =0;
+	  //sts_reed_hall_1_changed =0;
 	  }
   break;
 
   case  HALL2_Pin:
 	  if (sts_reed_hall_2_changed)
 	  {
-	  HAL_Delay(450);	//de-bouncing
+	  HAL_Delay(250);	//de-bouncing
 	  sts_hall2_read = HALL2_STATE;
 	  APP_LOG(TS_OFF, VLEVEL_M, "\n\n SOS Button Read = %02x   --%20s\r\n", HALL2_STATE, (HALL2_STATE==STS_Status_SOS_Pushdown)?"SOS Pushdown":"SOS Released");
 	  OnSensor2StateChanged();
 	  //sensor_data_ready =1;
-	  //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
-	  STS_YunhornSTSEventP1_Process();
+	  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP1), CFG_SEQ_Prio_0);
 	  UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
 	  //sts_reed_hall_2_changed =0;
 	  }
@@ -856,20 +854,25 @@ static void SendTxData(void)
 	uint32_t i = 0;
 
     STS_PRESENCE_SENSOR_Prepare_Send_Data(&sensorData);
+    if (sts_work_mode == STS_DUAL_MODE) {
 
     AppData.Port = LORAWAN_USER_APP_PORT;
 
+    } else if (sts_work_mode == STS_UNI_MODE) {
+
+    }
+
 	if ((heart_beat_timer != 0L))			// sensor data OVERWRITE heart-beat message, 2024-05-12
 	{
 		heart_beat_timer=0;
-		AppData.Port = sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
-		AppData.Buffer[i++]= AppLedStateOn|0x80;
+		AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
+		AppData.Buffer[i++]= (uint8_t)(AppLedStateOn|0x80)&0x0ff;
 		AppData.Buffer[i++] = (uint8_t)(99*batteryLevel/254)&0xff;					//#05
 
 	 } else if ((sensor_data_ready!= 0U)) //sensor_data_ready for manual push button-1 trigger)
 	    {
 			sensor_data_ready =0;
-			AppData.Buffer[i++] = AppLedStateOn|0x80;									//00 ************  MUST KEEP IT HERE, NON-ZERO   ******
+			AppData.Buffer[i++] = (uint8_t)(AppLedStateOn|0x80)&0xff;									//00 ************  MUST KEEP IT HERE, NON-ZERO   ******
 
 			AppData.Buffer[i++] = (uint8_t)(sensorData.lamp_bar_color)&0xff;  			//01
 			AppData.Buffer[i++] = (uint8_t)(sensorData.workmode)&0xff;					//02 WORK MODE
@@ -918,7 +921,7 @@ static void SendTxData(void)
 			}
 	}
 
-	AppData.BufferSize = (sts_service_mask > STS_SERVICE_MASK_L1? 0:i);
+	AppData.BufferSize = (uint8_t)(sts_service_mask > STS_SERVICE_MASK_L1? 0:i)&0xff;;
 
     if( IsClockSynched == false )
     {
@@ -950,14 +953,14 @@ static void SendTxData(void)
 	status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false);
 	if (LORAMAC_HANDLER_SUCCESS == status)
 	{
-		APP_LOG(TS_ON, VLEVEL_L, "SEND REQUEST\r\n");
+		APP_LOG(TS_ON, VLEVEL_H, "SEND REQUEST\r\n");
 	}
 	else if (LORAMAC_HANDLER_DUTYCYCLE_RESTRICTED == status)
 	{
 		nextTxIn = LmHandlerGetDutyCycleWaitTime();
 		if (nextTxIn > 0)
 		{
-			APP_LOG(TS_ON, VLEVEL_L, "Next Tx in  : ~%d second(s)\r\n", (nextTxIn / 1000));
+			APP_LOG(TS_ON, VLEVEL_H, "Next Tx in  : ~%d second(s)\r\n", (nextTxIn / 1000));
 		}
 	}
   }
@@ -1208,13 +1211,10 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
 
     APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower);
   }
-
-  UTIL_TIMER_Start(&STSLampBarColorTimer);
-  HAL_Delay(2000);
   heart_beat_timer = 1;
   UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
-  HAL_Delay(2000);
-  UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
+
+  UTIL_TIMER_Start(&STSLampBarColorTimer);
   /* USER CODE END OnJoinRequest_1 */
 }
 
@@ -1470,9 +1470,7 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context)
 {
 	UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventP2), CFG_SEQ_Prio_0);
 
-	APP_LOG(TS_OFF, VLEVEL_M, "\r\n ******** MOTION CHANGED FLAG= %d  \r\n", sts_rss_result_changed_flag);
-
-	if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag ==1))
+	if ((STS_LoRa_WAN_Joined != 0)&&(sts_rss_result_changed_flag==1))
 	{
 		sts_rss_result_changed_flag = 0;
 	    UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
@@ -1549,7 +1547,7 @@ static void OnYunhornSTSSamplingPeriodicityChanged(uint32_t periodicity)
 
   /* Update timer periodicity */
 
-#ifdef    STS_O7
+#if	defined(STS_O6)||defined(STS_O7)
   UTIL_TIMER_Stop(&YunhornSTSRSSWakeUpTimer);
   UTIL_TIMER_SetPeriod(&YunhornSTSRSSWakeUpTimer, SamplingPeriodicity);
   UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
@@ -2436,7 +2434,7 @@ void STS_REBOOT_CONFIG_Init(void)
   UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
   /* USER CODE BEGIN OnRestoreContextRequest_Last */
 
-#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D))
+//#if (defined(STS_O7)||defined(STS_O5) || defined(STS_O6) || defined(STS_R0) || defined(STS_R5)|| defined(STS_R4)|| defined(STS_R1D))
 	if ((nvm_stored_value[NVM_MTM1] != sts_mtmcode1) || (nvm_stored_value[NVM_MTM2] != sts_mtmcode2) || (nvm_stored_value[NVM_VER] != sts_version))
 	{
 		APP_LOG(TS_OFF, VLEVEL_M, "Initial Boot with Empty Config, Flash with default config....\r\n");
@@ -2479,7 +2477,7 @@ void STS_REBOOT_CONFIG_Init(void)
 				sts_cfg_nvm.ac[j] 				= (uint8_t)nvm_stored_value[NVM_AC_CODE_START +j];
 			}
 	}
-#endif
+//#endif
 
 	OnRestoreSTSCFGContextProcess();
 
@@ -2556,7 +2554,7 @@ void OnRestoreSTSCFGContextProcess(void)
 	}
 
 
-#ifdef YUNHORN_STS_O7_ENABLED
+#if	defined(STS_O7)||defined(STS_O6)
 	if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
 	{
 		STS_PRESENCE_SENSOR_Init();