From c8d616916b1268d63460995123a1850f06f3262b Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Mon, 16 Dec 2024 20:23:12 +0800 Subject: [PATCH] workable L8 --- LoRaWAN/App/lora_app.c | 16 ++++--- STM32CubeIDE/Release/WLE5CC_NODE_STS.bin | Bin 187808 -> 187996 bytes STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 275904 -> 275888 bytes STS/Core/Src/sts_cmox_hmac_sha.c | 2 +- STS/Core/Src/yunhorn_sts_process.c | 55 +++++++++++------------ STS/TOF/App/app_tof.c | 16 +++++-- 6 files changed, 51 insertions(+), 38 deletions(-) diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index e290931..fe81187 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -612,23 +612,26 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { case BUT1_Pin: /* Note: when "EventType == TX_ON_TIMER" this GPIO is not initialized */ - HAL_Delay(150); - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); + HAL_Delay(250); + //__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin); sts_hall1_read = HALL1_STATE; + if (last_sts_hall1_read != sts_hall1_read) // to eliminate power drop issue of PCB with long REEDSWITCH CABLES + { // 1) record event start/stop time + APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXIT_CALLBACK, Door state =%d \r\n", sts_hall1_read); OnSensor1StateChanged(); // 2) change lamp bar color if (sts_hall1_read == STS_Status_Door_Close) { sts_lamp_bar_color = STS_OCCUPANCY_NORMAL_COLOR; sts_status_color = STS_OCCUPANCY_NORMAL_COLOR; - //APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXIT_CALLBACK, Door CLOSED: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); + // APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXIT_CALLBACK, Door CLOSED: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); } else { //sts_lamp_bar_color = prev_color; sts_status_color = STS_VACANT_COLOR; sts_lamp_bar_color = STS_VACANT_COLOR; - //APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXTI_CALLBACK, Door Open: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); + // APP_LOG(TS_OFF, VLEVEL_M,"\r\n EXTI_CALLBACK, Door Open: sts status color =%d, lampbar_color=%d \r\n", sts_status_color, sts_lamp_bar_color); } // 3) combine states and colors //STS_YunhornSTSEventP1_Process(); @@ -645,6 +648,9 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); last_sts_hall1_read = sts_hall1_read; + } else { + APP_LOG(TS_OFF, VLEVEL_M, "\r\n --- ---- ----- -------- hall 1, door close again \r\n"); + } break; #ifndef STS_R4 @@ -946,7 +952,7 @@ void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, uint8 AppData.Port = appDataPort; AppData.BufferSize = appBufferSize; - APP_LOG(TS_OFF, VLEVEL_M, "\n\r AppPort=%d BufferSize=%d \r\n", AppData.Port,AppData.BufferSize); + //APP_LOG(TS_OFF, VLEVEL_M, "\n\r AppPort=%d BufferSize=%d \r\n", AppData.Port,AppData.BufferSize); status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false); if (LORAMAC_HANDLER_SUCCESS == status) diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin b/STM32CubeIDE/Release/WLE5CC_NODE_STS.bin index 85c046fd61921c8c47a6b7816761c6513a7bea1e..c4bb61e645136c0ff924aab33481a91f356ff7f8 100644 GIT binary patch delta 12805 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 delta 12576 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 z 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 ZV*QPk^0bKYBTgnqI8Iwq<$nbK{s-*=C|Lji diff --git a/STS/Core/Src/sts_cmox_hmac_sha.c b/STS/Core/Src/sts_cmox_hmac_sha.c index 1e5e0c6..e065dac 100644 --- a/STS/Core/Src/sts_cmox_hmac_sha.c +++ b/STS/Core/Src/sts_cmox_hmac_sha.c @@ -52,7 +52,7 @@ uint32_t sts_hmac_verify(void) hmac_result.ac_pass = (ret == 0x0)?1U:0U; - APP_LOG(TS_OFF, VLEVEL_M, "\r\nHMAC Verify Success = %u \r\n", hmac_result.ac_pass); + //APP_LOG(TS_OFF, VLEVEL_M, "\r\nHMAC Verify Success = %u \r\n", hmac_result.ac_pass); return ret; } diff --git a/STS/Core/Src/yunhorn_sts_process.c b/STS/Core/Src/yunhorn_sts_process.c index ddeba5e..6f57f32 100644 --- a/STS/Core/Src/yunhorn_sts_process.c +++ b/STS/Core/Src/yunhorn_sts_process.c @@ -346,7 +346,7 @@ void STS_YunhornSTSEventRFAC_Process(void) } } #if 1 - if ((rfac_timer > (STS_BURN_IN_RFAC + 3))) + if ((rfac_timer >= (STS_BURN_IN_RFAC + 3))) { //APP_LOG(TS_OFF, VLEVEL_M, "\r\n -Verify RFAC Success or Not\r\n"); STS_YunhornAuthenticationCode_Process(); @@ -1335,8 +1335,9 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s outbuf[i++] = (uint8_t) (cfg_in_nvm[NVM_CFG_START+j]); } #endif - UTIL_MEM_cpy_8(outbuf, cfg_in_nvm,44); - i=44; + outbuf[i++] = (uint8_t) 'C'; + UTIL_MEM_cpy_8(outbuf+1, cfg_in_nvm,44); + i=45; STS_SENSOR_Upload_Message(YUNHORN_STS_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); break; @@ -1578,6 +1579,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s sts_service_mask = STS_SERVICE_MASK_L0; sts_cfg_nvm.sts_service_mask = sts_service_mask; + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n Good ac code, start to store in NVM \r\n"); OnStoreSTSCFGContextRequest(); @@ -1732,17 +1734,19 @@ void OnStoreSTSCFGContextRequest(void) to_store__value[i++] = sts_cfg_nvm.fall_detection_depth_threshold; to_store__value[i++] = sts_cfg_nvm.fall_confirm_threshold_in_10sec; #endif - if ((nvm_store_value[NVM_AC_CODE_START]!= 0x0) && (nvm_store_value[NVM_AC_CODE_START+19]!=0x0)) + + if ((nvm_store_value[NVM_AC_CODE_START]!= 0x0) && (nvm_store_value[NVM_AC_CODE_START+19]!=0x0)&&(nvm_store_value[NVM_AC_CODE_START]!= 0xff) && (nvm_store_value[NVM_AC_CODE_START+19]!=0xff)) { - APP_LOG(TS_OFF, VLEVEL_M, "\n\r Transfer good NVM Stored ac_code to NVM_STORE_VALUE\r\n"); + //APP_LOG(TS_OFF, VLEVEL_M, "\n\r Transfer good NVM Stored ac_code to NVM_STORE_VALUE\r\n"); UTIL_MEM_cpy_8((void*)&to_store__value[NVM_AC_CODE_START], (void*)&nvm_store_value[NVM_AC_CODE_START],YUNHORN_STS_AC_CODE_SIZE); } else if ((sts_ac_code[0]!=0x0) && (sts_ac_code[YUNHORN_STS_AC_CODE_SIZE-1]!=0x0)) { - APP_LOG(TS_OFF, VLEVEL_M, "\n\r Transfer new generated ac_code to NVM_STORE_VALUE\r\n"); + //APP_LOG(TS_OFF, VLEVEL_M, "\n\r Transfer new generated ac_code to NVM_STORE_VALUE\r\n"); UTIL_MEM_cpy_8((void*)&to_store__value[NVM_AC_CODE_START], (void*)sts_ac_code,YUNHORN_STS_AC_CODE_SIZE); UTIL_MEM_cpy_8((void*)&nvm_store_value[NVM_AC_CODE_START], (void*)sts_ac_code,YUNHORN_STS_AC_CODE_SIZE); } + /* USER CODE END OnStoreContextRequest_1 */ /* store nvm in flash */ @@ -1902,6 +1906,7 @@ void OnRestoreSTSCFGContextProcess(void) sts_work_mode = sts_cfg_nvm.work_mode; sts_service_mask = sts_cfg_nvm.sts_service_mask; + sts_sensor_install_height = sts_cfg_nvm.sensor_install_height_in_10cm*100; #ifdef YUNHORN_STS_O6_ENABLED sts_lamp_bar_color = STS_GREEN; @@ -2063,26 +2068,23 @@ void STS_SENSOR_Distance_Test_Process(void) //MX_TOF_Init(); STSWakeupScanTimerStop(); //STS_TOF_L8_Process(); - - uint32_t range_once=0; - - //MX_TOF_Process(); + uint32_t range_once=0, range_sum=0; uint8_t rpt=0; - for (rpt=0; rpt<3; rpt++) + do { - range_once = range_once + (uint16_t)MX_TOF_Ranging_Process(); - //APP_LOG(TS_OFF, VLEVEL_M, "\r\n Range_once=%d \r\n", range_once); + range_once = (uint16_t)MX_TOF_Ranging_Process(); + if (range_once > 0) + { + rpt++; + range_sum += range_once ; + } HAL_Delay(150); - } + }while (rpt<3); - range_once /= 3; + range_sum /= 3; + sts_sensor_install_height = range_sum; - //APP_LOG(TS_OFF, VLEVEL_M, "\r\n Range_once=%d \r\n", range_once); - - sts_sensor_install_height = range_once; //(uint16_t)MX_TOF_Ranging_Process(); - - //sts_sensor_install_height = (uint16_t)STS_Get_Center_Range_Distance(); - APP_LOG(TS_OFF, VLEVEL_M, "\n STS SENSOR INSTALLATION HEIGHT =%d mm\n\r", (uint16_t)sts_sensor_install_height); + APP_LOG(TS_OFF, VLEVEL_L, "\n STS SENSOR INSTALLATION HEIGHT =%d mm\n\r", (uint16_t)sts_sensor_install_height); STS_LMZ_Ambient_Height_Scan_Process(); @@ -2503,7 +2505,7 @@ void YunhornSTSDurationCheckTimer(void) fhmos_cfg.th_fall_duration_potential_15sec*15, fhmos_cfg.th_fall_duration_confirm_15sec*15); #endif - if ((sts_o7_sensorData.event_sensor3_fall_duration >= fhmos_cfg.th_fall_duration_confirm_15sec*15) && + if ((sts_o7_sensorData.event_sensor3_fall_duration >= (fhmos_cfg.th_fall_duration_potential_15sec*15 + fhmos_cfg.th_fall_duration_confirm_15sec*15)) && (STS_FHMOS_FALL_STATE_POTENTIAL ==fhmos_data.state_fall)) { uint32_t time_stamp=STS_Get_Date_Time_Stamp(); //uint8_t datetimestamp[8]={0}; @@ -2527,15 +2529,12 @@ void YunhornSTSDurationCheckTimer(void) } else if ((sts_o7_sensorData.event_sensor3_fall_duration >= fhmos_cfg.th_fall_duration_potential_15sec*15) && - (sts_o7_sensorData.event_sensor3_fall_duration < fhmos_cfg.th_fall_duration_confirm_15sec*15) && + (sts_o7_sensorData.event_sensor3_fall_duration < (fhmos_cfg.th_fall_duration_potential_15sec*15 + fhmos_cfg.th_fall_duration_confirm_15sec*15)) && (STS_FHMOS_FALL_STATE_NORMAL == fhmos_data.state_fall)) //fhmos_cfg.th_motionless_long_15sec*15)) { // stay this state until > long threshold fhmos_data.state_fall = STS_FHMOS_FALL_STATE_POTENTIAL; fhmos_data.state_fall_released = 0; -// APP_LOG(TS_OFF, VLEVEL_M, "\r\n 002 Fall State =%d \r\n", fhmos_data.state_fall); - // sts_lamp_bar_color = STS_FALL_SUSPICIOUS_COLOR; - // APP_LOG(TS_OFF, VLEVEL_M, "\r\nSensor L8 set FALL POTENTIAL color to %d color:%s \r\n",sts_lamp_bar_color, (char*) code2color[sts_lamp_bar_color]); over_threshold |= 1<<7; // APP_LOG(TS_OFF, VLEVEL_M, "\r\n 1<<7 Over Threshold =0x%02x \r\n", over_threshold); @@ -2662,7 +2661,7 @@ void YunhornSTSDurationCheckTimer(void) // APP_LOG(TS_OFF, VLEVEL_M, "\r\n Over Threshold =0x%02x \r\n", over_threshold); last_sts_cmb_result = sts_cmb_result; - UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); +// UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); } over_threshold = 0; @@ -3025,7 +3024,7 @@ void OnSensorL8AStateChanged(void) sts_fhmos_state_changed = 1; - } else if ((sts_head_level_low == 0) && (last_head_level_low_state ==1)) + } else if ((sts_head_level_low == 0) && (last_head_level_low_state ==1)&&(STS_Status_Door_Close==sts_hall1_read)) { fhmos_data.head_low_level_stop_time = sensor_event_time.Seconds; fhmos_data.state_fall = STS_FHMOS_FALL_STATE_NORMAL; diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index 7c5309c..826d50a 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -83,7 +83,8 @@ static uint32_t STS_Get_Center_Range_Distance(RANGING_SENSOR_Result_t *Result); */ /* Private define ------------------------------------------------------------*/ -#define TIMING_BUDGET (30U) /* 16 ms < TimingBudget < 500 ms */ +//#define TIMING_BUDGET (30U) /* 16 ms < TimingBudget < 500 ms */ +#define TIMING_BUDGET (50U) /* 16 ms < TimingBudget < 500 ms */ #define POLLING_PERIOD (250U) /* refresh rate for polling mode (milliseconds, shall be consistent with TimingBudget value) */ #ifdef L8 @@ -197,6 +198,8 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) sts_high_threshold = sts_sensor_install_height; sts_low_threshold = sts_sensor_install_height-1400; + APP_LOG(TS_OFF, VLEVEL_M, "\r\nReconfig ----> Threshold High=%d mm, Low=%d mm \r\n", sts_high_threshold, sts_low_threshold); + STS_TOF_L8_Reconfig(); status = VL53L8A1_RANGING_SENSOR_Start(VL53L8A1_DEV_CENTER, RS_MODE_ASYNC_CONTINUOUS); @@ -521,6 +524,10 @@ static void MX_53L8A1_ThresholdDetection_Process(void) //ITConfig.LowThreshold = LOW_THRESHOLD; /* mm */ //ITConfig.HighThreshold = HIGH_THRESHOLD; /* mm */ + sts_high_threshold = sts_sensor_install_height; + sts_low_threshold = sts_high_threshold - 1400; + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Threshold High=%4d, Low=%4d \r\n", sts_high_threshold, sts_low_threshold); + ITConfig.LowThreshold = sts_low_threshold; ITConfig.HighThreshold = sts_high_threshold; @@ -669,7 +676,7 @@ static void print_result(RANGING_SENSOR_Result_t *Result) } - head_height_level_from_floor = sts_sensor_install_height - head_distance_from_ceiling; + head_height_level_from_floor = MIN(1400, abs(sts_sensor_install_height - head_distance_from_ceiling)); #if 0 APP_LOG(TS_OFF, VLEVEL_M, "\r\n #### Head distance from ceiling = %4d \r\n Head distance from floor =%d \r\n", head_distance_from_ceiling, head_height_level_from_floor); @@ -680,7 +687,7 @@ static void print_result(RANGING_SENSOR_Result_t *Result) factor1_floor_level_from_ceiling, factor2_head_level_from_floor, fhmos_cfg.th_fall_body_min_height_cm); #endif - APP_LOG(TS_OFF, VLEVEL_M, "\r\nBodyLow=%d < Obj: %d > Head_Max=%d\r\n", 10*fhmos_cfg.th_fall_body_min_height_cm, head_height_level_from_floor, (10*fhmos_cfg.th_head_level_height_cm)); + APP_LOG(TS_OFF, VLEVEL_M, "\r\nBodyLow=%d <= Target: %d <=Head_Max=%d\r\n", 10*fhmos_cfg.th_fall_body_min_height_cm, head_height_level_from_floor, (10*fhmos_cfg.th_head_level_height_cm)); if ((head_distance_from_ceiling <= factor1_floor_level_from_ceiling) && ((head_height_level_from_floor) <= (10*fhmos_cfg.th_head_level_height_cm)) && (head_height_level_from_floor >= (10*fhmos_cfg.th_fall_body_min_height_cm ))) { @@ -699,7 +706,8 @@ static void print_result(RANGING_SENSOR_Result_t *Result) } else if ((head_distance_from_ceiling < (factor2_head_level_from_floor - 150))) // TODO XXX 50mm gap to avoid flapping back and forth { sts_head_level_low = 0; - fhmos_data.state_fall = STS_FHMOS_FALL_STATE_NORMAL; + APP_LOG(TS_OFF, VLEVEL_M, "\r\n Not reset fhmos_data.state_fall to Normal \r\n"); + //fhmos_data.state_fall = STS_FHMOS_FALL_STATE_NORMAL; sts_fhmos_bitmap_pending = 0; }