diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h index 601ec88..f93dca3 100644 --- a/Core/Inc/sts_lamp_bar.h +++ b/Core/Inc/sts_lamp_bar.h @@ -34,6 +34,10 @@ extern "C" { #define STS_Status_Door_Open (1) //Normal Close NC:Close **2024-07-15 changed #define STS_Status_SOS_Pushdown (0) //Normal Open NO:Open #define STS_Status_SOS_Release (1) //Normal Open NO:Close +#define STS_Status_Alarm_Mute_Pushdown (0) //Normal Open NO:Open +#define STS_Status_Alarm_Mute_Release (1) //Normal Open NO:Close# +#define STS_Status_Alarm_Reset_Pushdown (0) //Normal Open NO:Open +#define STS_Status_Alarm_Reset_Release (1) //Normal Open NO:Close# enum sts_lamp_color { STS_DARK = 0, //灭:0, Code 0x00 diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h index 55fd30e..42f8fc2 100644 --- a/Core/Inc/yunhorn_sts_prd_conf.h +++ b/Core/Inc/yunhorn_sts_prd_conf.h @@ -238,8 +238,8 @@ #define IS_STS_RS485_OUTPUT_ENABLE STS_IOC_OUT_1 #define MajorVer 24U -#define MinorVer 07U -#define SubMinorVer 30U +#define MinorVer 8U +#define SubMinorVer 1U #define FirmwareVersion 3U #define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U @@ -429,8 +429,8 @@ * Address range 0800 0000H - 0803 FFFFH Size: 0x0004 0000 */ -#define FLASH_USER_START_ADDR ((void *) 0x0803F800U) // Last 2kB of flash -#define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFU) //0x400=1KB=1024 +#define FLASH_USER_START_ADDR ((void *) 0x0803F800UL) // Last 2kB of flash +#define FLASH_USER_CONFIG_SIZE ((void *) 0x000007FFUL) //0x400=1KB=1024 #define FLASH_USER_END_ADDR (FLASH_USER_START_ADDR + FLASH_USER_CONFIG - 1) /* 2KB = 2048 = 0x800 End @ of user Flash area */ diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h index ec541c8..c6606ef 100644 --- a/Core/Inc/yunhorn_sts_sensors.h +++ b/Core/Inc/yunhorn_sts_sensors.h @@ -166,7 +166,8 @@ typedef struct STS_OO_SensorStatusDataTypeDef uint8_t state_sensor1_on_off; /* reedswitch or hall element 0: open, 1: closed */ uint8_t state_sensor2_on_off; /* reedswitch or hall element 0: open, 1: closed */ uint8_t state_sensor3_on_off; /* motion RSS, pcr_sensor_on_off; 1: occupancy, 0: no occupancy */ - uint8_t state_sensor4_on_off; /* reserved_sensor_on_off sensor state */ + uint8_t state_sensor4_on_off; /* alarm mute button_on_off sensor state */ + uint8_t state_sensor5_on_off; /* alarm reset button_on_off sensor state */ uint16_t rss_presence_distance; // in mm uint8_t rss_presence_zone[10]; uint8_t rss_presence_zone_count[10]; @@ -217,11 +218,21 @@ typedef struct STS_OO_SensorStatusDataTypeDef uint32_t event_sensor3_unconcious_duration; uint32_t event_sensor4_start_time; /* reserved */ + uint32_t event_sensor4_start_timestamp; uint32_t event_sensor4_stop_time; + uint32_t event_sensor4_stop_timestamp; uint32_t event_sensor4_duration; uint8_t alarm_indictor_mute_state; + + + uint32_t event_sensor5_start_time; /* reserved */ + uint32_t event_sensor5_stop_time; + uint32_t event_sensor5_start_timestamp; + uint32_t event_sensor5_stop_timestamp; + uint32_t event_sensor5_duration; uint8_t alarm_indictor_reset_state; + } STS_OO_SensorStatusDataTypeDef; //#endif @@ -654,7 +665,7 @@ void OnStoreSTSCFGContextRequest(void); /** * @brief Read config from flash */ -void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm); +void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm); void STS_REBOOT_CONFIG_Init(void); @@ -734,7 +745,7 @@ void STS_MOTION_SENSOR_Enable_Wake_Up_Detection(void); void STS_MOTION_SENSOR_Initialization(void); */ -void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size); +void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size); void STS_SENSOR_Function_Test_Process(void); void STS_SENSOR_Distance_Test_Process(void); void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_t count); diff --git a/Core/Src/main.c b/Core/Src/main.c index a142895..3414667 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -25,16 +25,10 @@ #include "usart.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ -#include "yunhorn_sts_sensors.h" -#include "sts_cmox_hmac_sha.h" #include "spi.h" #include "dma.h" #include "tim.h" -#include "sts_lamp_bar.h" #include "sys_app.h" - -#include "acc_hal_integration.h" -#include "acc_detector_presence.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -104,7 +98,6 @@ int main(void) /* USER CODE BEGIN 2 */ - /* USER CODE END 2 */ /* Infinite loop */ diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index 7afd61f..e1ae1c3 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -63,7 +63,7 @@ extern volatile uint8_t sts_occupancy_status; extern volatile uint8_t sts_reed_hall_result, sts_emergency_button_pushed; // inital 0 = close volatile uint8_t sts_hall1_read=STS_Status_Door_Open,sts_hall2_read=STS_Status_SOS_Release; // Above hall1_read == reed_hall_result, hall2_read == emergency_button -volatile uint8_t sts_hall3_read=STS_Status_Door_Open,sts_hall4_read=STS_Status_SOS_Release; +volatile uint8_t sts_hall3_read=STS_Status_Alarm_Mute_Release,sts_hall4_read=STS_Status_Alarm_Reset_Release; extern volatile uint8_t sts_reed_hall_1_result, sts_reed_hall_2_result; extern volatile uint8_t sts_tof_result_changed_flag; diff --git a/Core/Src/sys_app.c b/Core/Src/sys_app.c index a31423f..f23f63b 100644 --- a/Core/Src/sys_app.c +++ b/Core/Src/sys_app.c @@ -118,16 +118,11 @@ void SystemApp_Init(void) /*Initialize the Sensors */ EnvSensors_Init(); // LED1 Flash 3 times for normal power on - LED1_TOGGLE; - HAL_Delay(500); - LED1_TOGGLE; - HAL_Delay(500); - LED1_TOGGLE; - HAL_Delay(500); - LED1_TOGGLE; - HAL_Delay(500); - LED1_TOGGLE; - HAL_Delay(500); + LED1_TOGGLE; HAL_Delay(500); + LED1_TOGGLE; HAL_Delay(500); + LED1_TOGGLE; HAL_Delay(500); + LED1_TOGGLE; HAL_Delay(500); + LED1_TOGGLE; HAL_Delay(500); LED1_TOGGLE; /*Init low power manager*/ UTIL_LPM_Init(); diff --git a/Core/Src/yunhorn_sts_distance_rss.c b/Core/Src/yunhorn_sts_distance_rss.c index 473e619..0314423 100644 --- a/Core/Src/yunhorn_sts_distance_rss.c +++ b/Core/Src/yunhorn_sts_distance_rss.c @@ -53,8 +53,8 @@ #endif //volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 1, 63, 2, 10, 0.5, 1.3, 0.2}; -volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 2, 63, 2, 10, 0.5, 1.3, 0.2}; -//volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2}; +//volatile distance_measure_cfg_t distance_cfg={1.5, 2.0, 2, 63, 2, 10, 0.5, 1.3, 0.2}; +volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2}; extern float sts_distance_rss_distance, sts_sensor_install_height; static void sts_distance_rss_update_configuration(acc_detector_distance_configuration_t distance_configuration); diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 05426fa..4ab1022 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -63,7 +63,7 @@ volatile uint8_t sts_soap_level_state; // RSS motion and distance volatile STS_OO_SensorStatusDataTypeDef sts_o7_sensorData; -volatile float sts_distance_rss_distance, sts_sensor_install_height=0;//in mm +volatile float sts_distance_rss_distance=0, sts_sensor_install_height=0;//in mm extern volatile float sts_presence_rss_distance, sts_presence_rss_score; volatile uint8_t sts_rss_config_updated_flag = 0; extern volatile uint8_t sts_occupancy_overtime_state; @@ -226,16 +226,16 @@ void STS_YunhornSTSEventRFAC_Process(void) void STS_YunhornSTSEventP1_Process(void) { - sts_reed_hall_1_result = HALL1_STATE; //sts_hall1_read; + sts_reed_hall_1_result = sts_hall1_read;//HALL1_STATE; //sts_hall1_read; last_sts_reed_hall_1_result = sts_reed_hall_1_result; - sts_reed_hall_2_result = HALL2_STATE;// sts_hall2_read; + sts_reed_hall_2_result = sts_hall2_read;//HALL2_STATE;// sts_hall2_read; last_sts_reed_hall_2_result = sts_reed_hall_2_result; - sts_reed_hall_3_result = HALL3_STATE;// sts_hall3_read; + sts_reed_hall_3_result = sts_hall3_read;//HALL3_STATE;// sts_hall3_read; last_sts_reed_hall_3_result = sts_reed_hall_3_result; - sts_reed_hall_4_result = HALL4_STATE;// sts_hall3_read; + sts_reed_hall_4_result = sts_hall4_read;//HALL4_STATE;// sts_hall3_read; last_sts_reed_hall_4_result = sts_reed_hall_4_result; STS_Combined_Status_Processing(); @@ -501,11 +501,13 @@ void STS_Combined_Status_Processing(void) 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 )) + 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_reed_hall_3_result == STS_Status_Alarm_Mute_Release )&& (sts_reed_hall_4_result == STS_Status_Alarm_Reset_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 )) + } 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_reed_hall_3_result == STS_Status_Alarm_Mute_Pushdown )|| (sts_reed_hall_4_result == STS_Status_Alarm_Reset_Pushdown )) { sts_status_color = STS_RED; @@ -860,8 +862,8 @@ void STS_PRESENCE_SENSOR_Init(void) sts_o7_sensorData.unconscious_state = 0; sts_o7_sensorData.unconscious_duration = 0; - PME_ON; - STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init(); + //PME_ON; + //STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init(); //STS_PRESENCE_SENSOR_TOF_Init(); //HAL_Delay(2000); //STS_PRESENCE_SENSOR_Distance_Measure_Process(); @@ -885,17 +887,23 @@ void STS_PRESENCE_SENSOR_RSS_Init(void) APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n"); PME_ON; - - if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0)) + APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 1 :rss distance =%u height=%u\r\n",sts_distance_rss_distance,sts_sensor_install_height); + //if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0)) { uint8_t exit_status =0; - exit_status=sts_distance_rss_detector_distance(); - if (exit_status ==0) { - APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance); - } - else { - APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height Error \r\n"); - } + do { + APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 \r\n"); + exit_status=sts_distance_rss_detector_distance(); + APP_LOG(TS_ON, VLEVEL_H, "##### STS RSS Init step 2 return =%u \r\n", exit_status); + + if (exit_status ==0) { + APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance); + } + else { + APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height Error \r\n"); + HAL_Delay(100); + } + } while((exit_status)); sts_sensor_install_height=sts_distance_rss_distance; } @@ -1219,6 +1227,25 @@ void OnSensor3StateChanged(void) else sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds; #endif + SysTime_t sensor_event_time = SysTimeGetMcuTime(); + uint32_t time_stamp=STS_Get_Date_Time_Stamp(); + + if (sts_hall3_read==STS_Status_Alarm_Mute_Pushdown) + { + sts_o7_sensorData.event_sensor4_start_time = sensor_event_time.Seconds; + sts_o7_sensorData.event_sensor4_start_timestamp = time_stamp; + sts_o7_sensorData.event_sensor4_stop_time = 0; + sts_o7_sensorData.event_sensor4_duration = 0; + APP_LOG(TS_OFF, VLEVEL_L, "Alarm Mute PushDown ---Timer start: %u\r\n",sts_o7_sensorData.event_sensor4_start_time ); + }else if (sts_hall3_read==STS_Status_Alarm_Mute_Release) + { + sts_o7_sensorData.event_sensor4_start_time = 0; + sts_o7_sensorData.event_sensor4_start_timestamp = 0; + sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds; + sts_o7_sensorData.event_sensor4_stop_timestamp = time_stamp; + //sts_o7_sensorData.over_stay_state = 0; + //sts_o7_sensorData.event_sensor2_duration = 0; + } } void OnSensor4StateChanged(void) @@ -1232,6 +1259,25 @@ void OnSensor4StateChanged(void) else sts_o7_sensorData.event_sensor4_stop_time = sensor_event_time.Seconds; #endif + SysTime_t sensor_event_time = SysTimeGetMcuTime(); + uint32_t time_stamp=STS_Get_Date_Time_Stamp(); + + if (sts_hall4_read==STS_Status_Alarm_Mute_Pushdown) + { + sts_o7_sensorData.event_sensor5_start_time = sensor_event_time.Seconds; + sts_o7_sensorData.event_sensor5_start_timestamp = time_stamp; + sts_o7_sensorData.event_sensor5_stop_time = 0; + sts_o7_sensorData.event_sensor5_duration = 0; + APP_LOG(TS_OFF, VLEVEL_L, "Alarm RESET PushDown ---Timer start: %u\r\n",sts_o7_sensorData.event_sensor5_start_time ); + }else if (sts_hall4_read==STS_Status_Alarm_Mute_Release) + { + sts_o7_sensorData.event_sensor5_start_time = 0; + sts_o7_sensorData.event_sensor5_start_timestamp = 0; + sts_o7_sensorData.event_sensor5_stop_time = sensor_event_time.Seconds; + sts_o7_sensorData.event_sensor5_stop_timestamp = time_stamp; + //sts_o7_sensorData.over_stay_state = 0; + //sts_o7_sensorData.event_sensor2_duration = 0; + } } diff --git a/LoRaWAN/App/app_lorawan.c b/LoRaWAN/App/app_lorawan.c index 0317ebe..8c72b4c 100644 --- a/LoRaWAN/App/app_lorawan.c +++ b/LoRaWAN/App/app_lorawan.c @@ -70,7 +70,7 @@ void MX_LoRaWAN_Init(void) SystemApp_Init(); /* USER CODE BEGIN MX_LoRaWAN_Init_2 */ //STS_Lamp_Bar_Self_Test_Simple(); - STS_Lamp_Bar_Self_Test(); + //STS_Lamp_Bar_Self_Test(); /* USER CODE END MX_LoRaWAN_Init_2 */ LoRaWAN_Init(); /* USER CODE BEGIN MX_LoRaWAN_Init_3 */ diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 1e7e88e..333efe9 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -75,7 +75,7 @@ extern volatile uint32_t event_start_time, event_stop_time; extern volatile uint16_t sts_unconscious_threshold; volatile uint8_t sts_occupancy_overtime_state = 0; volatile uint8_t sts_presence_fall_detection=TRUE; -volatile uint32_t SamplingPeriodicity = 1000; //unit ms +volatile uint32_t SamplingPeriodicity = 3000; //unit ms volatile uint32_t HeartBeatPeriodicity = 120000; //unit ms volatile uint8_t STS_LoRa_WAN_Joined = 0; @@ -83,7 +83,7 @@ volatile uint8_t upload_message_timer=0; volatile uint8_t heart_beat_timer =0; volatile uint32_t wcnt=0; volatile bool p2_work_finished=true; -uint8_t outbuf[128]={0x0}; +uint8_t outbuf[255]={0x0}; volatile static bool r_b=true; volatile sts_cfg_nvm_t sts_cfg_nvm = { sts_mtmcode1, @@ -222,7 +222,7 @@ typedef enum TxEventType_e /* USER CODE BEGIN PTD */ #define YUNHORN_STS_RSS_WAKEUP_CHECK_TIME SamplingPeriodicity //3000 ms #define YUNHORN_STS_SAMPLING_CHECK_TIME SamplingPeriodicity -#define YUNHORN_STS_HEART_BEAT_CHECK_TIME HeartBeatPeriodicity +#define YUNHORN_STS_HEART_BEAT_CHECK_TIME 300000 //300 sec, 5 min /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ @@ -487,7 +487,7 @@ static LmHandlerParams_t LmHandlerParams = /** * @brief Type of Event to generate application Tx */ -static TxEventType_t EventType = TX_ON_EVENT; //TX_ON_TIMER;//TX_ON_EVENT; +static TxEventType_t EventType = TX_ON_TIMER; //TX_ON_TIMER;//TX_ON_EVENT; /** * @brief Timer to handle the application Tx @@ -612,7 +612,7 @@ void LoRaWAN_Init(void) 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(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, 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(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); @@ -684,24 +684,18 @@ void LoRaWAN_Init(void) #endif #if defined(STS_O7)||defined(STS_O6) - UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, - YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, - UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); + UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); - UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, - YUNHORN_STS_HEART_BEAT_CHECK_TIME, - UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL); + UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL); //UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&STSLampBarColorTimer); - //UTIL_TIMER_Start(&STSDurationCheckTimer); + UTIL_TIMER_Start(&STSDurationCheckTimer); #else - UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer, - YUNHORN_STS_SAMPLING_CHECK_TIME, - UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL); + UTIL_TIMER_Create(&YunhornSTSSamplingCheckTimer, YUNHORN_STS_SAMPLING_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSSamplingCheckTimerEvent, NULL); UTIL_TIMER_Start(&YunhornSTSSamplingCheckTimer); #endif /* USER CODE END LoRaWAN_Init_Last */ @@ -1116,20 +1110,9 @@ static void OnTxTimerEvent(void *context) /* USER CODE BEGIN OnTxTimerEvent_1 */ /* USER CODE END OnTxTimerEvent_1 */ - //heart_beat_timer = 1; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); -#if 0 - if (sts_ac_code[0]==0x0) { - /* RFAC Challenge */ - if (rfac_timer < (STS_BURN_IN_RFAC+3)) { - rfac_timer ++; + UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_YunhornSTSEventRFAC), CFG_SEQ_Prio_0); - } - - } -#endif /*Wait for next tx slot*/ UTIL_TIMER_Start(&TxTimer); @@ -1428,10 +1411,14 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) } 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_TIMER_Start(&YunhornSTSRSSWakeUpTimer); - UTIL_TIMER_Start(&STSDurationCheckTimer); + //UTIL_TIMER_Start(&TxTimer); + //UTIL_TIMER_Start(&STSDurationCheckTimer); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); /* USER CODE END OnJoinRequest_1 */ @@ -1511,8 +1498,6 @@ static void OnTxPeriodicityChanged(uint32_t periodicity) TxPeriodicity = APP_TX_DUTYCYCLE; } - //HeartBeatPeriodicity = TxPeriodicity; - /* Update timer periodicity */ UTIL_TIMER_Stop(&TxTimer); UTIL_TIMER_SetPeriod(&TxTimer, TxPeriodicity); @@ -1699,7 +1684,7 @@ static void OnYunhornSTSOORSSWakeUpTimerEvent(void *context) } } - //UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); + UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); } @@ -1749,7 +1734,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity) UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); /* USER CODE BEGIN OnTxPeriodicityChanged_2 */ - APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity Changed to: %u (ms)\r\n", HeartBeatPeriodicity ); + APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity = %u (sec)\r\n", HeartBeatPeriodicity/1000 ); /* USER CODE END OnTxPeriodicityChanged_2 */ } @@ -1889,7 +1874,7 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context) * */ -void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) +void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) { uint8_t i=0, mems_ver, invalid_flag=1; UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf)); @@ -2113,6 +2098,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) PME_ON; // 2024-07-31 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); i = tlv_buf_size; STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); @@ -2127,6 +2113,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) //STS_SENSOR_Power_OFF((tlv_buf[CFG_CMD3]-0x30)); PME_OFF; // 2024-07-31 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); i = tlv_buf_size; STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); @@ -2141,6 +2128,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) PME_OFF; PME_ON; // 2024-07-31 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); i = tlv_buf_size; STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); @@ -2161,15 +2149,16 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) } else if ((char)tlv_buf[CFG_CMD5] == 'H') { periodicity_length *= 3600; } - TxPeriodicity = periodicity_length*1000; //translate to 1000ms=1s + periodicity_length = periodicity_length*1000; //translate to 1000ms=1s //OnTxPeriodicityChanged(TxPeriodicity); #if defined(STS_O6)||defined(STS_O7) - HeartBeatPeriodicity = TxPeriodicity; - OnYunhornSTSHeartBeatPeriodicityChanged(TxPeriodicity); + HeartBeatPeriodicity = periodicity_length; + OnYunhornSTSHeartBeatPeriodicityChanged(periodicity_length); #endif // 2024-07-31 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); i = tlv_buf_size; @@ -2185,7 +2174,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) sts_cfg_nvm.sts_service_mask = (uint8_t)sts_service_mask; OnStoreSTSCFGContextRequest(); - APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Periodicity Changed to [ %d ] Seconds\r\n", periodicity_length); + //APP_LOG(TS_OFF, VLEVEL_M, "###### YUNHORN Periodicity Changed to [ %d ] Seconds\r\n", periodicity_length); } else { STS_SENSOR_Upload_Config_Invalid_Message(); @@ -2217,6 +2206,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) OnYunhornSTSSamplingPeriodicityChanged(SamplingPeriodicity); #endif // 2024-07-31 + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); i = tlv_buf_size; @@ -2281,6 +2271,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) OnStoreSTSCFGContextRequest(); i=0; // Step 1: Prepare status update message + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; @@ -2315,6 +2306,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) OnStoreSTSCFGContextRequest(); i=0; // Step 1: Prepare status update message + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_L, "###### Fall detection CFG = %s\r\n",(char*)outbuf); @@ -2343,6 +2335,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) OnStoreSTSCFGContextRequest(); i=0; // Step 1: Prepare status update message + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_L, "###### Occupancy/Overstay/unconscious config changed =%s\r\n",(char *)outbuf); @@ -2364,7 +2357,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) } i=0; // Step 1: Prepare status update message - + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_L, "###### P Work mode switched =%s\r\n",(char *)outbuf); @@ -2410,6 +2403,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) STS_PRESENCE_SENSOR_NVM_CFG(); i=0; // Step 1: Prepare status update message + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Full CFG=%s\r\n",(char *)outbuf); @@ -2448,6 +2442,7 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(); i=0; // Step 1: Prepare status update message + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_L, "###### RSS Simple CFG=%s\r\n",(char*)outbuf); @@ -2527,9 +2522,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, size_t tlv_buf_size) } i=0; - for (uint8_t j=0; j <(tlv_buf_size) ; j++) { - outbuf[i++] = (uint8_t) tlv_buf[j]; - } + UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); + UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf, tlv_buf_size); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); } @@ -2657,7 +2651,7 @@ void OnStoreSTSCFGContextRequest(void) /* USER CODE END OnStoreContextRequest_Last */ } -void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm) +void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm) { /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_1 */ // uint8_t nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]="", nvm_store_size=YUNHORN_STS_MAX_NVM_CFG_SIZE; @@ -2665,7 +2659,8 @@ void OnRestoreSTSCFGContextRequest(uint8_t *cfg_in_nvm) APP_LOG(TS_OFF, VLEVEL_M, "Restore NVM start\r\n"); /* USER CODE END OnRestoreSTSCFGContextRequest_1 */ - UTIL_MEM_cpy_8(cfg_in_nvm, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + FLASH_IF_Read(cfg_in_nvm, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + //UTIL_MEM_cpy_8(cfg_in_nvm, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); /* USER CODE BEGIN OnRestoreSTSCFGContextRequest_Last */ @@ -2682,7 +2677,7 @@ void STS_REBOOT_CONFIG_Init(void) /* USER CODE END OnRestoreContextRequest_1 */ //UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); - FLASH_IF_Read((void*)nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); + FLASH_IF_Read(nvm_stored_value, 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)) @@ -2748,9 +2743,7 @@ void OnRestoreSTSCFGContextProcess(void) } else if ((char) sts_cfg_nvm.unit =='S') { periodicity *= 1; } - periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit - //TxPeriodicity= periodicity*1000; // to ms - //OnTxPeriodicityChanged(TxPeriodicity); // in msec unit + periodicity *= 1000; // to ms uint32_t sampling = (sts_cfg_nvm.sampling); if ((char)sts_cfg_nvm.s_unit =='M') { @@ -2766,6 +2759,7 @@ void OnRestoreSTSCFGContextProcess(void) { // ensure it's not in production yet OnTxPeriodicityChanged(APP_TX_DUTYCYCLE); // in msec unit OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); + OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit } else { //OnTxPeriodicityChanged(TxPeriodicity); // in msec unit @@ -2775,7 +2769,8 @@ void OnRestoreSTSCFGContextProcess(void) HeartBeatPeriodicity = samplingperiodicity*1000; #endif #if defined(STS_O7)|| defined(STS_O6) ||defined(STS_O5) - OnYunhornSTSHeartBeatPeriodicityChanged(periodicity*1000); + HeartBeatPeriodicity = periodicity; + OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSSamplingPeriodicityChanged(sampling); // in m-sec unit #endif @@ -2813,7 +2808,7 @@ void OnRestoreSTSCFGContextProcess(void) if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length)) { STS_PRESENCE_SENSOR_Init(); - //STS_PRESENCE_SENSOR_RSS_Init(); + STS_PRESENCE_SENSOR_RSS_Init(); } #endif