---fix no flashing bug...

This commit is contained in:
Yunhorn 2024-08-12 18:40:02 +08:00
parent 6a30d6bf18
commit 4b46039979
4 changed files with 134 additions and 73 deletions

View File

@ -223,19 +223,27 @@
//#define YUNHORN_STS_M10_LORA_APP_DATA_PORT 9U //#define YUNHORN_STS_M10_LORA_APP_DATA_PORT 9U
//#define YUNHORN_STS_M10_LORA_APP_HTBT_PORT 9U //#define YUNHORN_STS_M10_LORA_APP_HTBT_PORT 9U
#define STS_IOC_IN_0 ((uint8_t)0x01) /* I/O Control sensor 1 */ #define STS_IOC_IN_0 ((uint8_t)0x01) /* I/O Control sensor 1 */ // HALL-1
#define STS_IOC_IN_1 ((uint8_t)0x02) /* I/O Control sensor 2 */ #define STS_IOC_IN_1 ((uint8_t)0x02) /* I/O Control sensor 2 */ // HALL-2
#define STS_IOC_IN_2 ((uint8_t)0x04) /* I/O Control sensor 3 */ #define STS_IOC_IN_2 ((uint8_t)0x04) /* I/O Control sensor 3 */ // MOTION-1
#define STS_IOC_IN_3 ((uint8_t)0x08) /* I/O Control sensor 4 */ #define STS_IOC_IN_3 ((uint8_t)0x08) /* I/O Control sensor 4 */ // HALL-4
#define STS_IOC_OUT_0 ((uint8_t)0x10) /* I/O Control out interface 1 */ #define STS_IOC_OUT_0 ((uint8_t)0x10) /* I/O Control out interface 1 */
#define STS_IOC_OUT_1 ((uint8_t)0x20) /* I/O Control out interface 2 */ #define STS_IOC_OUT_1 ((uint8_t)0x20) /* I/O Control out interface 2 */
#define STS_IOC_OUT_2 ((uint8_t)0x40) /* I/O Control out interface 3 */ #define STS_IOC_OUT_2 ((uint8_t)0x40) /* I/O Control out interface 3 */
#define STS_IOC_OUT_3 ((uint8_t)0x80) /* I/O Control out interface 4 */ #define STS_IOC_OUT_3 ((uint8_t)0x80) /* I/O Control out interface 4 */
#define STS_IOC_MASK (0xFFu) /* I/O Control mask */ #define STS_IOC_MASK_ALL (0xFF) /* I/O Control mask */
#define STS_IOC_MASK_NONE (0x00) /* NONE enabled */
#define STS_IOC_IN_ALL (STS_IOC_IN_0|STS_IOC_IN_1 |STS_IOC_IN_2 |STS_IOC_IN_3) #define STS_IOC_IN_ALL (STS_IOC_IN_0|STS_IOC_IN_1 |STS_IOC_IN_2 |STS_IOC_IN_3)
#define STS_IOC_OUT_ALL (STS_IOC_OUT_0|STS_IOC_OUT_1|STS_IOC_OUT_2|STS_IOC_OUT_3) #define STS_IOC_OUT_ALL (STS_IOC_OUT_0|STS_IOC_OUT_1|STS_IOC_OUT_2|STS_IOC_OUT_3)
#define IS_STS_LAMP_BAR_OUTPUT_ENABLE STS_IOC_OUT_0 #define IS_STS_LAMP_BAR_OUTPUT_ENABLE STS_IOC_OUT_0
#define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1 #define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1
#define STS_IOC_MODE_0_MASK STS_IOC_OUT_0 //NETWOR MODE, NO ON-BOARD INTERFACE, OUT LAMP BAR ENABLED
#define STS_IOC_MODE_1_MASK STS_IOC_IN_1 //WIRED MODE, ONE ON-BOARD INTEFACE ENABLE, NO LAMP BAR
#define STS_IOC_MODE_2_MASK STS_IOC_IN_0|STS_IOC_IN_1 //REEDSWITCH MODE, ONE ON-BOARD INTERFACE ENABLED, LAMP BAR ENABLED
#define STS_IOC_MODE_3_MASK STS_IOC_IN_2|STS_IOC_IN_1|STS_IOC_OUT_0 // RSS MODE, ONE ON-BOARD INTERFACE MOTION ENABLED, LAMP BAR ENABLED
#define STS_IOC_MODE_4_MASK STS_IOC_IN_0|STS_IOC_IN_1|STS_IOC_IN_2|STS_IOC_OUT_0|STS_IOC_OUT_1 //DUAL MODE
#define STS_IOC_MODE_5_MASK STS_IOC_IN_ALL|STS_IOC_OUT_ALL //UNI_MODE
#define MajorVer 24U #define MajorVer 24U
#define MinorVer 8U #define MinorVer 8U

View File

@ -169,56 +169,37 @@ void STS_Lamp_Bar_Refresh(void)
void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum) void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
{ {
if (sts_lamp_color <=8)
switch (sts_lamp_color)
{ {
case STS_DARK: switch (sts_lamp_color)
STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0); {
break; case STS_DARK:
case STS_GREEN: STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, 0x0);
STS_Lamp_Bar_Set_RGB_Color(0x0, lum, 0x0); break;
break; case STS_GREEN:
case STS_RED: STS_Lamp_Bar_Set_RGB_Color(0x0, lum, 0x0);
STS_Lamp_Bar_Set_RGB_Color(lum, 0x0, 0x0); break;
break; case STS_RED:
case STS_BLUE: STS_Lamp_Bar_Set_RGB_Color(lum, 0x0, 0x0);
STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, lum); break;
break; case STS_BLUE:
case STS_YELLOW: STS_Lamp_Bar_Set_RGB_Color(0x0, 0x0, lum);
STS_Lamp_Bar_Set_RGB_Color(lum, lum, 0x0); break;
break; case STS_YELLOW:
case STS_PINK: STS_Lamp_Bar_Set_RGB_Color(lum, lum, 0x0);
STS_Lamp_Bar_Set_RGB_Color(lum, 0x0, lum); break;
break; case STS_PINK:
case STS_CYAN: STS_Lamp_Bar_Set_RGB_Color(lum, 0x0, lum);
STS_Lamp_Bar_Set_RGB_Color(0x0, lum, lum); break;
break; case STS_CYAN:
case STS_WHITE: STS_Lamp_Bar_Set_RGB_Color(0x0, lum, lum);
STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum); break;
break; case STS_WHITE:
case STS_COLOR_MAX: STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum);
sts_lamp_bar_color = STS_RED_BLUE; break;
break; }
case STS_GREENDARK:
sts_lamp_bar_color = STS_GREEN_DARK;
break;
case STS_REDDARK:
sts_lamp_bar_color = STS_RED_DARK;
break;
case STS_REDBLUE:
sts_lamp_bar_color = STS_RED_BLUE;
break;
case STS_BLUEDARK:
sts_lamp_bar_color = STS_BLUE_DARK;
break;
case STS_REDGREEN:
sts_lamp_bar_color = STS_RED_GREEN;
break;
case STS_BLUEGREEN:
sts_lamp_bar_color = STS_BLUE_GREEN;
break;
} }
} }
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)

View File

@ -479,8 +479,9 @@ void STS_Combined_Status_Processing(void)
switch (sts_work_mode) switch (sts_work_mode)
{ {
case STS_NETWORK_MODE: case STS_NETWORK_MODE:
sts_status_color = sts_cloud_netcolor+0x30; sts_status_color = sts_cloud_netcolor;
sts_lamp_bar_color = sts_cloud_netcolor+0x30; sts_lamp_bar_color = sts_cloud_netcolor;
break; break;
case STS_WIRED_MODE: // NO LAMP BAR FOR THOSE WATER LEAKAGE SENSOR OR SOAP CAPACITY SENSORS case STS_WIRED_MODE: // NO LAMP BAR FOR THOSE WATER LEAKAGE SENSOR OR SOAP CAPACITY SENSORS
sts_status_color = STS_DARK; sts_status_color = STS_DARK;
@ -848,7 +849,7 @@ void STS_PRESENCE_SENSOR_Init(void)
APP_LOG(TS_ON, VLEVEL_M, "##### YunHorn SmarToilets(r) Presence Sensor Started\r\n"); APP_LOG(TS_ON, VLEVEL_M, "##### YunHorn SmarToilets(r) Presence Sensor Started\r\n");
sts_o7_sensorData.workmode = (uint8_t)sts_work_mode; //STS_DUAL_MODE; sts_o7_sensorData.workmode = (uint8_t)sts_work_mode; //STS_DUAL_MODE;
//sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN; sts_o7_sensorData.lamp_bar_color = (uint8_t)STS_GREEN;
sts_o7_sensorData.battery_Pct = 99; sts_o7_sensorData.battery_Pct = 99;
sts_o7_sensorData.dutycycletimelevel = 1; sts_o7_sensorData.dutycycletimelevel = 1;
sts_o7_sensorData.event_sensor1_start_time = 0; sts_o7_sensorData.event_sensor1_start_time = 0;

View File

@ -83,6 +83,7 @@ volatile uint8_t upload_message_timer=0;
volatile uint8_t heart_beat_timer =0; volatile uint8_t heart_beat_timer =0;
volatile uint32_t wcnt=0; volatile uint32_t wcnt=0;
volatile bool p2_work_finished=true; volatile bool p2_work_finished=true;
extern volatile uint8_t luminance_level;
uint8_t outbuf[255]={0x0}; uint8_t outbuf[255]={0x0};
volatile static bool r_b=true; volatile static bool r_b=true;
volatile sts_cfg_nvm_t sts_cfg_nvm = { volatile sts_cfg_nvm_t sts_cfg_nvm = {
@ -613,7 +614,7 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL);
UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL);
UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL); UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
if (FLASH_IF_Init(NULL) != FLASH_IF_OK) if (FLASH_IF_Init(NULL) != FLASH_IF_OK)
@ -939,7 +940,7 @@ static void SendTxData(void)
} else if (sts_work_mode == STS_UNI_MODE) } else if (sts_work_mode == STS_UNI_MODE)
{ {
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT; AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT;
} else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)) } else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
{ {
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT; AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT;
} }
@ -953,7 +954,7 @@ static void SendTxData(void)
AppData.Port = (uint8_t)YUNHORN_STS_O6_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = (uint8_t)YUNHORN_STS_O6_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
else if (sts_work_mode == STS_UNI_MODE) else if (sts_work_mode == STS_UNI_MODE)
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)) else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
//AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1; //AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
@ -1161,15 +1162,23 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
//uint8_t lum=DEFAULT_LUMINANCE_LEVEL; //uint8_t lum=DEFAULT_LUMINANCE_LEVEL;
//HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */ //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */
//if ((sts_work_mode != STS_WIRED_MODE)) //if ((sts_work_mode != STS_WIRED_MODE))
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x07; uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f;
#if 0
luminance_level += 10;
luminance_level %= 60;
luminance_level = MAX(10,luminance_level);
#endif
//if (STSLampBarColorTimer.IsRunning)
{
UTIL_TIMER_Stop(&STSLampBarColorTimer);
if (high4==0) if (high4==0)
{ {
if (last_sts_lamp_bar_color != sts_lamp_bar_color) //if (last_sts_lamp_bar_color != sts_lamp_bar_color)
{ {
__disable_irq(); //__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level);
__enable_irq(); //__enable_irq();
//STS_WS2812B_Refresh(); //STS_WS2812B_Refresh();
last_sts_lamp_bar_color = sts_lamp_bar_color; last_sts_lamp_bar_color = sts_lamp_bar_color;
} }
@ -1178,22 +1187,25 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
if (r_b) if (r_b)
{ {
//__disable_irq(); //__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(high4, luminance_level);
//__enable_irq(); //__enable_irq();
last_sts_lamp_bar_color = high4; //last_sts_lamp_bar_color = high4;
//STS_WS2812B_Refresh(); //STS_WS2812B_Refresh();
} }
else { else {
//__disable_irq(); //__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(low4, luminance_level);
//__enable_irq(); //__enable_irq();
last_sts_lamp_bar_color = low4; //last_sts_lamp_bar_color = low4;
//STS_WS2812B_Refresh(); //STS_WS2812B_Refresh();
} }
r_b = !r_b; r_b = !r_b;
} }
UTIL_TIMER_Start(&STSLampBarColorTimer);
}
} }
static void OnYunhornSTSDurationCheckTimerEvent(void *context) static void OnYunhornSTSDurationCheckTimerEvent(void *context)
@ -1419,21 +1431,23 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
if (STS_LoRa_WAN_Joined) if (STS_LoRa_WAN_Joined)
{ {
heart_beat_timer = 1; heart_beat_timer = 1;
//SendTxData(); SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); //UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
//UTIL_TIMER_Start(&TxTimer); //UTIL_TIMER_Start(&TxTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer); //UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
STS_SENSOR_Distance_Test_Process(); STS_SENSOR_Distance_Test_Process();
APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance); APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance);
} }
/* USER CODE END OnJoinRequest_1 */ /* USER CODE END OnJoinRequest_1 */
@ -2278,7 +2292,40 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
if (sts_work_mode == STS_NETWORK_MODE) if (sts_work_mode == STS_NETWORK_MODE)
{ //network mode { //network mode
sts_cloud_netcolor = (uint8_t)(tlv_buf[CFG_CMD5]-0x30); sts_cloud_netcolor = (uint8_t)(tlv_buf[CFG_CMD5]-0x30);
APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to %u = %02X \r\n", sts_cloud_netcolor, (uint8_t)tlv_buf[CFG_CMD5]); if (sts_cloud_netcolor == STS_COLOR_MAX) sts_cloud_netcolor = STS_RED_BLUE;
else if (sts_cloud_netcolor > STS_COLOR_MAX)
{
#if 1
switch((uint8_t)tlv_buf[CFG_CMD5])
{
case STS_GREENDARK:
sts_lamp_bar_color = STS_GREEN_DARK;
sts_cloud_netcolor = STS_GREEN_DARK;
break;
case STS_REDDARK:
sts_lamp_bar_color = STS_RED_DARK;
sts_cloud_netcolor = STS_RED_DARK;
break;
case STS_REDBLUE:
sts_lamp_bar_color = STS_RED_BLUE;
sts_cloud_netcolor = STS_RED_BLUE;
break;
case STS_BLUEDARK:
sts_lamp_bar_color = STS_BLUE_DARK;
sts_cloud_netcolor = STS_BLUE_DARK;
break;
case STS_REDGREEN:
sts_lamp_bar_color = STS_RED_GREEN;
sts_cloud_netcolor = STS_RED_GREEN;
break;
case STS_BLUEGREEN:
sts_lamp_bar_color = STS_BLUE_GREEN;
sts_cloud_netcolor = STS_BLUE_GREEN;
break;
}
}
#endif
APP_LOG(TS_OFF, VLEVEL_L, "\r\n Cloud Color Set to 0X%02X \r\n",sts_cloud_netcolor);
} }
sts_service_mask = STS_SERVICE_MASK_L0; sts_service_mask = STS_SERVICE_MASK_L0;
@ -2382,9 +2429,33 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
//sts_service_mask = STS_SERVICE_MASK_L0; //sts_service_mask = STS_SERVICE_MASK_L0;
//sts_lamp_bar_color = STS_GREEN; //sts_lamp_bar_color = STS_GREEN;
switch (sts_work_mode) {
case STS_NETWORK_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_0_MASK;
break;
case STS_WIRED_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_1_MASK;
break;
case STS_REEDSWITCH_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_2_MASK;
break;
case STS_RSS_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_3_MASK;
break;
case STS_DUAL_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_4_MASK;
break;
case STS_UNI_MODE:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MODE_5_MASK;
break;
default:
sts_cfg_nvm.sts_ioc_mask = STS_IOC_MASK_NONE;
break;
}
sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode; sts_cfg_nvm.work_mode = (uint8_t)sts_work_mode;
if (sts_work_mode == STS_UNI_MODE) { if (sts_work_mode == STS_UNI_MODE) {
sts_presence_fall_detection=TRUE; sts_presence_fall_detection=TRUE;
} else { } else {
sts_presence_fall_detection=FALSE; sts_presence_fall_detection=FALSE;
} }