From d857a1fc8ddffe1c979d851781320ef32f59e48e Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Fri, 13 Jun 2025 18:15:40 +0800 Subject: [PATCH] revised for warm up timer --- Core/Inc/sys_conf.h | 6 ++-- Core/Src/main.c | 1 + LoRaWAN/App/lora_app.c | 28 +++++++++++-------- STM32CubeIDE/.settings/language.settings.xml | 4 +-- STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 164052 -> 168416 bytes STS/Core/Src/yunhorn_sts_process.c | 10 ++++--- STS/TOF/App/app_tof_peoplecount.c | 6 ++-- 7 files changed, 32 insertions(+), 23 deletions(-) diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h index 241072d..f10502a 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_OFF +#define VERBOSE_LEVEL VLEVEL_M /** * @brief Enable trace logs */ -#define APP_LOG_ENABLED 0 +#define APP_LOG_ENABLED 1 /** * @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 0 +#define DEBUGGER_ENABLED 1 /** * @brief Disable Low Power mode diff --git a/Core/Src/main.c b/Core/Src/main.c index 6db5514..3809503 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -29,6 +29,7 @@ #include "usart.h" #include "sys_app.h" #include "tim.h" +#include "yunhorn_sts_sensors.h" #ifdef STS_P2 #include "app_tof.h" #include "app_tof_peoplecount.h" diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index dc9228e..1d2a9bb 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -58,14 +58,16 @@ volatile uint8_t heart_beat_timer =0; extern volatile uint8_t sensor_data_ready; extern uint8_t sts_door_jam_profile; extern uint8_t sts_color_occupy_vacant; - +extern volatile uint16_t sts_sensor_install_height; #ifdef STS_T6 volatile uint8_t PIRValue =0, prev_sts_pir_state=0, sts_pir_state_changed=0; extern volatile uint8_t sts_tof_presence_state; uint32_t lowIn=0; volatile bool lockLow = true, takeLowTime; #endif + static uint32_t sts_warm_up_count = 0; + extern volatile sts_cfg_nvm_t sts_cfg_nvm; extern volatile uint32_t rfac_timer; extern volatile uint32_t STS_TOFScanPeriod_msec, STS_TxPeriod_sec, STS_HeartBeatTimerPeriod_sec; @@ -85,7 +87,7 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = { sts_version, sts_hardware_ver, 0x0A, //Regular TxPeriodicity interval - 'M', //Uplink data interval unit, for heart-beat uplink + 'S', //Uplink data interval unit, for heart-beat uplink #if defined(STS_P2)||defined(L8)||defined(STS_O6T)||defined(STS_T6) 0x1E, //Heart-beat interval or Sampling interval 'M', //Sampling sensor interval unit, for real-time sensing of MEMS @@ -704,6 +706,7 @@ void STS_Sensor_Init(void) UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, 1000*STS_HeartBeatTimerPeriod_sec, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL); //UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); + ppc_cfg_parameter_update(); // UTIL_TIMER_Start(&YunhornSTSWakeUpScanTimer); @@ -724,7 +727,6 @@ void STS_Sensor_Init(void) void STS_Sensor_Prepare(void) { - //STS_TOF_VL53LX_PresenceDetection_Process_Init(); UTIL_TIMER_Start(&YunhornSTSWakeUpScanTimer); @@ -1371,7 +1373,7 @@ static void OnTxTimerEvent(void *context) #elif (defined(STS_P2)||defined(STS_T6)) UTIL_TIMER_Stop(&YunhornSTSWakeUpScanTimer); - APP_LOG(TS_OFF, VLEVEL_M, "\r\nTxTimer Event \r\n"); + APP_LOG(TS_OFF, VLEVEL_M, "\r\n### Warm-up TxTimer Event : %d ###\r\n", sts_warm_up_count); #endif UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); @@ -1847,13 +1849,13 @@ void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity) } /* Update timer YunhornSTSHeartBeatTimer */ - + APP_LOG(TS_OFF, VLEVEL_M,"* STS HeartBeatPeriodicity = %u (msec)\r\n", periodicity ); UTIL_TIMER_Stop(&YunhornSTSHeartBeatTimer); UTIL_TIMER_SetPeriod(&YunhornSTSHeartBeatTimer, periodicity); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); /* USER CODE BEGIN OnYunhornSTSHeartBeatPeriodicityChanged_2 */ - APP_LOG(TS_OFF, VLEVEL_M,"* STS HeartBeatPeriodicity = %u (sec)\r\n", periodicity/1000 ); + APP_LOG(TS_OFF, VLEVEL_M,"* STS HeartBeatPeriodicity = %u (msec)\r\n", periodicity ); /* USER CODE END OnYunhornSTSHeartBeatPeriodicityChanged_2 */ } @@ -2097,9 +2099,9 @@ void OnRestoreSTSCFGContextProcess(void) } else if ((char) sts_cfg_nvm.unit =='S') { periodicity *= 1; } - periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit + //periodicity = (periodicity > 10)? periodicity : 10; // in seconds unit - //APP_LOG(TS_OFF, VLEVEL_M, "\n\n Tx periodicity in NVM =%u sec\n",periodicity); + APP_LOG(TS_OFF, VLEVEL_M, "\n\n Tx periodicity in NVM =%u sec\n",periodicity); TxPeriodicity= periodicity*1000; // to ms @@ -2115,7 +2117,7 @@ void OnRestoreSTSCFGContextProcess(void) } STS_HeartBeatTimerPeriod_sec = sampling_heartbeat_periodicity; - APP_LOG(TS_OFF, VLEVEL_H, "\n\n sampling or heartbeat periodicity in NVM =%u sec\n",sampling_heartbeat_periodicity); + APP_LOG(TS_OFF, VLEVEL_M, "\n\n sampling or heartbeat periodicity in NVM =%u sec\n",sampling_heartbeat_periodicity); @@ -2143,8 +2145,9 @@ void OnRestoreSTSCFGContextProcess(void) #endif #if defined(STS_T6) - STS_HeartBeatTimerPeriod_sec = periodicity; - OnYunhornSTSHeartBeatPeriodicityChanged(STS_HeartBeatTimerPeriod_sec); + //STS_HeartBeatTimerPeriod_sec = periodicity; + OnYunhornSTSHeartBeatPeriodicityChanged(1000*STS_HeartBeatTimerPeriod_sec); + #endif #if defined(STS_R1)||defined(STS_R5)||defined(STS_R4)||defined(STS_R1D)||defined(STS_O5)||defined(STS_M1) @@ -2155,9 +2158,12 @@ void OnRestoreSTSCFGContextProcess(void) sts_work_mode = sts_cfg_nvm.work_mode; sts_service_mask = sts_cfg_nvm.sts_service_mask; sts_door_jam_profile = sts_cfg_nvm.sts_door_jam_profile; + sts_sensor_install_height = sts_cfg_nvm.sensor_install_height_in_10cm*100; sts_color_occupy_vacant = sts_cfg_nvm.color_occupy_vacant; APP_LOG(TS_OFF, VLEVEL_M, "\r\n Color Occupy =%02x, VACANT =%02x \r\n",((sts_color_occupy_vacant>>4)&0x0f), sts_color_occupy_vacant&0x0f ); + ppc_cfg_parameter_update(); + #ifdef YUNHORN_STS_O6_ENABLED sts_lamp_bar_color = STS_COLOR_DEFAULT_VACANT; sts_fall_detection_acc_threshold = (uint8_t)sts_cfg_nvm.fall_detection_acc_threshold*10; diff --git a/STM32CubeIDE/.settings/language.settings.xml b/STM32CubeIDE/.settings/language.settings.xml index 6f79038..d7e3a93 100644 --- a/STM32CubeIDE/.settings/language.settings.xml +++ b/STM32CubeIDE/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index 593b039e1a72be47fa2228eb0c1cb05cd6086f53..ba34634673a060a7875bec0d14273384eafc3786 100644 GIT binary patch delta 55487 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 mLM**dANETkZRq^Zc^hvldUtPf4CsCCF SENSOR INSTALL HEIGHT STORED = %d dm(10cm)\n", sts_cfg_nvm.sensor_install_height_in_10cm); OnStoreSTSCFGContextRequest(); @@ -1078,7 +1079,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); break; case 'D': /* "YZD": Distance/Install height Measure */ - uint16_t range_distance = STS_SENSOR_Distance_Test_Process(); + uint16_t range_distance_status = STS_SENSOR_Distance_Test_Process(); i = 0; outbuf[i++] = (uint8_t)'D'; outbuf[i++] = (uint8_t)sts_mtmcode1; @@ -1087,7 +1088,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s outbuf[i++] = (uint8_t)sts_hardware_ver; outbuf[i++] = (uint8_t)(99*((GetBatteryLevel()/254)&0xff)); - if (range_distance == 0 ) + if (range_distance_status == 0 ) { sts_cfg_nvm.sensor_install_height_in_10cm = sts_sensor_install_height/100; //in 10 cm, say 4500mm=450cm=45 dm @@ -1106,6 +1107,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s #endif #if defined(STS_T6) + sts_tof_init_status = -1; // to enfore config update/init ppc_cfg_parameter_update(); #endif @@ -1597,7 +1599,7 @@ void ppc_cfg_parameter_update(void) ppc_cfg[DOOR_JAM_NOW].front_zone_center = FRONT_ZONE_CENTER; ppc_cfg[DOOR_JAM_NOW].back_zone_center = BACK_ZONE_CENTER; sts_door_jam_profile = DOOR_JAM_NOW; - + sts_tof_init_status=-1; APP_LOG(TS_OFF, VLEVEL_M, "\r\n Door Jam profile updated to %d with Max/Min/Threshold=%d:%d:%d \r\n", sts_door_jam_profile, ppc_cfg[DOOR_JAM_NOW].max_distance,ppc_cfg[DOOR_JAM_NOW].min_distance, ppc_cfg[DOOR_JAM_NOW].dist_threshold); } diff --git a/STS/TOF/App/app_tof_peoplecount.c b/STS/TOF/App/app_tof_peoplecount.c index aae097d..4a01aba 100644 --- a/STS/TOF/App/app_tof_peoplecount.c +++ b/STS/TOF/App/app_tof_peoplecount.c @@ -690,7 +690,7 @@ void STS_TOF_VL53LX_PresenceDetection_Process_Start(void) LED_GREEN_ON; sts_lamp_bar_color = (sts_cfg_nvm.color_occupy_vacant)&0x0f; //STS_COLOR_DEFAULT_VACANT; //(sts_cfg_nvm.color_occupy_vacant)&0x0f; //STS_GREEN; } - APP_LOG(TS_OFF, VLEVEL_M, "\r\n Lamp Bar Color=%2d \r\n", sts_lamp_bar_color); + APP_LOG(TS_OFF, VLEVEL_H, "\r\n Lamp Bar Color=%2d \r\n", sts_lamp_bar_color); sts_people_count_sensor_data.Count_Valid = (status ==0)? 1:0; //APP_LOG(TS_OFF, VLEVEL_M,"############### SUB-PROCESS running .... \r\n"); } @@ -758,7 +758,7 @@ int sts_tof_vl53lx_presence_detection_init(void) /* Initialize and configure the device according to people counting need */ status = VL53L1X_SensorInit(dev); - + ppc_cfg_parameter_update(); sts_distance_mode = (sts_door_jam_profile ==0)?DISTANCE_MODE_SHORT:DISTANCE_MODE_LONG; APP_LOG(TS_OFF, VLEVEL_M, "\r\nDistance[ Max=%d, Min=%d Threshold=%d ] [Timing=%d ] [ Mode=%d ]\r\n", ppc_cfg[sts_door_jam_profile].max_distance, @@ -1079,7 +1079,7 @@ int sts_tof_vl53lx_range_distance(uint16_t *range_distance) if (status != 0) { APP_LOG(TS_OFF, VLEVEL_L,"Error in operating the device\n"); return (-1); - } else if (Distance != 0 ) + } else //if (Distance != 0 ) { APP_LOG(TS_OFF, VLEVEL_M,"\r\nVL53L1X RANGE DISTANCE =%d \r\n", Distance); *range_distance = Distance;