From fbc9138720cdfbe93d77a0982b72e8f5f869813d Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Mon, 14 Apr 2025 23:53:37 +0800 Subject: [PATCH] wip good so far 2025 04 14 --- Core/Inc/sts_lamp_bar.h | 2 +- Core/Inc/yunhorn_sts_prd_conf.h | 4 +- Core/Inc/yunhorn_sts_sensors.h | 7 +- Core/Src/yunhorn_sts_presence_rss.c | 241 ++++++++++++++---- .../yunhorn_sts_presence_rss_bring_up_test.c | 36 +-- Core/Src/yunhorn_sts_process.c | 53 +++- LoRaWAN/App/lora_app.c | 64 +++-- STM32CubeIDE/Release/STS_O7.bin | Bin 258332 -> 258244 bytes 8 files changed, 306 insertions(+), 101 deletions(-) diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h index ba213eb..60e5bda 100644 --- a/Core/Inc/sts_lamp_bar.h +++ b/Core/Inc/sts_lamp_bar.h @@ -79,7 +79,7 @@ enum sts_oo_work_mode { STS_TOF_PRESENCE_MODE, // A TOF PRESENCE OCCUPANCY STS_TOF_IN_OUT_MODE, // B TOF IN OUT COUNT - + STS_RSS_BACKGROUND_MODE, // C RSS_BACKGROUND EVALUATION MODE STS_OTHER_MODE // ? OTHER MODE }; #if defined(STS_O7)||defined(STS_O6) diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h index 978a9bf..74b88e5 100644 --- a/Core/Inc/yunhorn_sts_prd_conf.h +++ b/Core/Inc/yunhorn_sts_prd_conf.h @@ -246,8 +246,8 @@ #define STS_IOC_MODE_5_MASK STS_IOC_IN_ALL|STS_IOC_OUT_ALL //UNI_MODE #define MajorVer 25U -#define MinorVer 3U -#define SubMinorVer 25U +#define MinorVer 4U +#define SubMinorVer 15U #define FirmwareVersion 3U #define YUNHORN_STS_MAX_NVM_CFG_SIZE 64U diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h index 58254ea..fea4e49 100644 --- a/Core/Inc/yunhorn_sts_sensors.h +++ b/Core/Inc/yunhorn_sts_sensors.h @@ -85,7 +85,7 @@ enum RSS_CFG_order{ RSS_CFG_DOWNSAMPLING_FACTOR, // 15 RSS_CFG_POWER_MODE, // 16 RSS_CFG_UPDATE_FLAG, // 17 ADD AT 2025-04-11 - RSS_CFG_RESERVE1, // 18 + RSS_CFG_BG_MOTION_NOISE, // 18 RSS_CFG_RESERVE2, // 19 }; @@ -726,7 +726,7 @@ void STS_PRESENCE_SENSOR_Read(STS_OO_SensorStatusDataTypeDef *o6_data); void STS_PRESENCE_SENSOR_Prepare_Send_Data(STS_OO_SensorStatusDataTypeDef *sensor_data); void STS_PRESENCE_SENSOR_Init(void); -void STS_PRESENCE_SENSOR_RSS_Init(void); +//void STS_PRESENCE_SENSOR_RSS_Init(void); void STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init(void); void STS_PRESENCE_SENSOR_TOF_Init(void); @@ -770,7 +770,8 @@ 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); void STS_PRESENCE_SENSOR_Distance_Measure_Process(void); - +void STS_PRESENCE_SENSOR_Background_Measure_Process(uint16_t *bg_distance, uint16_t *bg_motion_noise); +void sts_presence_rss_background_evaluation_process(uint16_t *evaluated_distance, uint16_t *evaluated_score); void STS_Sensor_Init(void); void STS_Sensor_Prepare(void); diff --git a/Core/Src/yunhorn_sts_presence_rss.c b/Core/Src/yunhorn_sts_presence_rss.c index ec81c7a..78eb799 100644 --- a/Core/Src/yunhorn_sts_presence_rss.c +++ b/Core/Src/yunhorn_sts_presence_rss.c @@ -148,6 +148,7 @@ volatile uint16_t sts_fall_rising_pattern_factor1=0, sts_fall_rising_pattern_fac volatile uint16_t sts_roc_acc_standard_variance=0; extern volatile uint8_t sts_presence_fall_detection; static uint8_t sts_rss_init_ok=0; +extern uint8_t sts_lamp_bar_color; /* USER CODE END Includes */ /* External variables ---------------------------------------------------------*/ @@ -192,20 +193,11 @@ static uint8_t sts_rss_init_ok=0; * * @param[in] presence_configuration The presence configuration to set default values in */ -static void set_default_configuration(acc_detector_presence_configuration_t presence_configuration) + +static void set_default_configuration_common(acc_detector_presence_configuration_t presence_configuration) { - acc_detector_presence_configuration_service_profile_set(presence_configuration, DEFAULT_PROFILE); - - acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); - acc_detector_presence_configuration_update_rate_set(presence_configuration, DEFAULT_UPDATE_RATE_PRESENCE); - acc_detector_presence_configuration_detection_threshold_set(presence_configuration, DEFAULT_THRESHOLD); - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - //acc_service_sparse_configuration_sweeps_per_frame_set(sparse_configuration, sweeps_per_frame); - - acc_detector_presence_configuration_start_set(presence_configuration, DEFAULT_START_M); - acc_detector_presence_configuration_length_set(presence_configuration, DEFAULT_LENGTH_M); - acc_detector_presence_configuration_downsampling_factor_set(presence_configuration, DEFAULT_DOWNSAMPLING_FACTOR); - acc_detector_presence_configuration_receiver_gain_set(presence_configuration, DEFAULT_RECEIVER_GAIN); + acc_detector_presence_configuration_update_rate_set(presence_configuration, sts_presence_rss_config.default_update_rate_presence); + acc_detector_presence_configuration_downsampling_factor_set(presence_configuration, sts_presence_rss_config.default_downsampling_factor); acc_detector_presence_configuration_filter_parameters_t filter = acc_detector_presence_configuration_filter_parameters_get(presence_configuration); filter.inter_frame_deviation_time_const = DEFAULT_INTER_FRAME_DEVIATION_TIME_CONST; @@ -225,6 +217,47 @@ static void set_default_configuration(acc_detector_presence_configuration_t pres acc_detector_presence_configuration_filter_parameters_set(presence_configuration, &filter); acc_detector_presence_configuration_nbr_removed_pc_set(presence_configuration, DEFAULT_NBR_REMOVED_PC); acc_detector_presence_configuration_power_save_mode_set(presence_configuration, ACC_POWER_SAVE_MODE_ACTIVE); + + +} +static void set_default_configuration(acc_detector_presence_configuration_t presence_configuration) +{ + acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); + acc_detector_presence_configuration_service_profile_set(presence_configuration, DEFAULT_PROFILE); // *** optional + acc_detector_presence_configuration_update_rate_set(presence_configuration, DEFAULT_UPDATE_RATE_PRESENCE); + acc_detector_presence_configuration_detection_threshold_set(presence_configuration, DEFAULT_THRESHOLD); +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//acc_service_sparse_configuration_sweeps_per_frame_set(sparse_configuration, sweeps_per_frame); + + acc_detector_presence_configuration_start_set(presence_configuration, DEFAULT_START_M); + acc_detector_presence_configuration_length_set(presence_configuration, DEFAULT_LENGTH_M); + acc_detector_presence_configuration_downsampling_factor_set(presence_configuration, DEFAULT_DOWNSAMPLING_FACTOR); + acc_detector_presence_configuration_receiver_gain_set(presence_configuration, DEFAULT_RECEIVER_GAIN); + + set_default_configuration_common(presence_configuration); + + // by set_default_configuration_common +#if 0 + acc_detector_presence_configuration_filter_parameters_t filter = acc_detector_presence_configuration_filter_parameters_get(presence_configuration); + filter.inter_frame_deviation_time_const = DEFAULT_INTER_FRAME_DEVIATION_TIME_CONST; + +// will be disabled if this value > 1/2 of update rate, default update rate 65, so must < 30 + filter.inter_frame_fast_cutoff = DEFAULT_INTER_FRAME_FAST_CUTOFF; + filter.inter_frame_slow_cutoff = DEFAULT_INTER_FRAME_SLOW_CUTOFF; + +// no effect if intra-frame-weight set to 0 + filter.intra_frame_time_const = DEFAULT_INTRA_FRAME_TIME_CONST; +// for slow movement, people sit still, rest in sofa, seat, closestool, etc. +// set the intra_frame_weight to 0.0 + filter.intra_frame_weight = DEFAULT_INTRA_FRAME_WEIGHT; + +// if detection toggles too often, increase the following, if too sluggish, decrease it instead + filter.output_time_const = DEFAULT_OUTPUT_TIME_CONST; //0.0f; + acc_detector_presence_configuration_filter_parameters_set(presence_configuration, &filter); + acc_detector_presence_configuration_nbr_removed_pc_set(presence_configuration, DEFAULT_NBR_REMOVED_PC); + acc_detector_presence_configuration_power_save_mode_set(presence_configuration, ACC_POWER_SAVE_MODE_ACTIVE); +#endif + // by set_default_configuration_common } /** @@ -235,14 +268,12 @@ static void set_default_configuration(acc_detector_presence_configuration_t pres static void set_default_fall_rise_configuration(acc_detector_presence_configuration_t presence_configuration) { acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); - acc_detector_presence_configuration_service_profile_set(presence_configuration, DEFAULT_PROFILE); - acc_detector_presence_configuration_update_rate_set(presence_configuration, DEFAULT_UPDATE_RATE_PRESENCE); acc_detector_presence_configuration_detection_threshold_set(presence_configuration, DEFAULT_THRESHOLD); - // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - //acc_service_sparse_configuration_sweeps_per_frame_set(sparse_configuration, sweeps_per_frame); +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +//acc_service_sparse_configuration_sweeps_per_frame_set(sparse_configuration, sweeps_per_frame); acc_detector_presence_configuration_start_set(presence_configuration, DEFAULT_START_M); acc_detector_presence_configuration_length_set(presence_configuration, DEFAULT_LENGTH_M); acc_detector_presence_configuration_downsampling_factor_set(presence_configuration, DEFAULT_DOWNSAMPLING_FACTOR); @@ -303,7 +334,7 @@ static void sts_rss_set_current_configuration_full(acc_detector_presence_configu } -static void sts_rss_set_current_configuration_simple(acc_detector_presence_configuration_t presence_configuration) +static void sts_rss_set_configuration_background_evalution(acc_detector_presence_configuration_t presence_configuration) { APP_LOG(TS_OFF, VLEVEL_M, "\r\nsts_rss_cfg-start: %4d ,length: %4d ,threshold: %4d ,gain: %2d ,rate: %2d ,profile: %1d \r\n", (int)(sts_presence_rss_config.default_start_m*1000), @@ -314,15 +345,36 @@ static void sts_rss_set_current_configuration_simple(acc_detector_presence_confi (int)(sts_presence_rss_config.default_profile)); acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); - //acc_detector_presence_configuration_update_rate_set(presence_configuration, DEFAULT_UPDATE_RATE_PRESENCE); 2024-08-21 update + acc_detector_presence_configuration_service_profile_set(presence_configuration, sts_presence_rss_config.default_profile); + + acc_detector_presence_configuration_start_set(presence_configuration, ((float)sts_sensor_install_height/2000.0)); + acc_detector_presence_configuration_length_set(presence_configuration, ((float)(sts_sensor_install_height*2/3 - 300)/1000.0)); + acc_detector_presence_configuration_detection_threshold_set(presence_configuration, (float)300/1000.0); + acc_detector_presence_configuration_receiver_gain_set(presence_configuration, (float)80/100.0); + + set_default_configuration_common(presence_configuration); +} + + +static void sts_rss_set_current_configuration_simple(acc_detector_presence_configuration_t presence_configuration) +{ + APP_LOG(TS_OFF, VLEVEL_H, "\r\nsts_rss_cfg-start: %4d ,length: %4d ,threshold: %4d ,gain: %2d ,rate: %2d ,profile: %1d \r\n", + (int)(sts_presence_rss_config.default_start_m*1000), + (int)(sts_presence_rss_config.default_length_m*1000), + (int)(sts_presence_rss_config.default_threshold*1000), + (int)(sts_presence_rss_config.default_receiver_gain*100), + (int)(sts_presence_rss_config.default_update_rate_presence), + (int)(sts_presence_rss_config.default_profile)); + + acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); + acc_detector_presence_configuration_service_profile_set(presence_configuration, sts_presence_rss_config.default_profile); - acc_detector_presence_configuration_update_rate_set(presence_configuration, sts_presence_rss_config.default_update_rate_presence); acc_detector_presence_configuration_start_set(presence_configuration, sts_presence_rss_config.default_start_m); acc_detector_presence_configuration_length_set(presence_configuration, sts_presence_rss_config.default_length_m); //DEFAULT_LENGTH_M_2); acc_detector_presence_configuration_detection_threshold_set(presence_configuration, sts_presence_rss_config.default_threshold);//DEFAULT_DETECTION_THRESHOLD_2); acc_detector_presence_configuration_receiver_gain_set(presence_configuration, sts_presence_rss_config.default_receiver_gain); - acc_detector_presence_configuration_service_profile_set(presence_configuration, sts_presence_rss_config.default_profile); + set_default_configuration_common(presence_configuration); } static void print_current_configuration(acc_detector_presence_configuration_t presence_configuration) @@ -344,7 +396,7 @@ static void print_current_configuration(acc_detector_presence_configuration_t pr float sts_run_f_intra_frame_weight = sts_run_filter.intra_frame_weight; float sts_run_f_output_time_const = sts_run_filter.output_time_const; - APP_LOG(TS_OFF, VLEVEL_H, "\r\nWork_mode:%2d Start: %4d (mm) Length: %4d (mm) Threshold: %4d (*) Gain= %2d (%) UpdateRate=%4d Profile= %d \r\n", + APP_LOG(TS_OFF, VLEVEL_M, "\r\nWork_mode:%2d Start: %4d (mm) Length: %4d (mm) Threshold: %4d (*) Gain= %2d (%) UpdateRate=%4d Profile= %d \r\n", sts_work_mode, (int)(1000.0*sts_run_start), (int)(1000.0*sts_run_length), (int)(1000.0*sts_run_threshold), (int)(100.0*sts_run_gain),(int)sts_run_update_rate, (int)sts_run_profile); @@ -376,6 +428,105 @@ static void print_result(acc_detector_presence_result_t result) * OUTPUT: sts_rss_result = STS_PRESENCE_MOTION, STS_PRESENCE_NO_MOTION * sts_rss_result */ + +void sts_presence_rss_background_evaluation_process(uint16_t *evaluated_distance, uint16_t *evaluated_score) +{ + + const acc_hal_t *hal = acc_hal_integration_get_implementation(); + + if (!acc_rss_activate(hal)) + { + APP_LOG(TS_OFF, VLEVEL_H,"Failed to activate RSS\n"); + return EXIT_FAILURE; + } + + acc_rss_override_sensor_id_check_at_creation(true); + + acc_detector_presence_configuration_t presence_configuration = acc_detector_presence_configuration_create(); + if (presence_configuration == NULL) + { + APP_LOG(TS_OFF, VLEVEL_H,"Failed to create configuration\n"); + acc_rss_deactivate(); + return EXIT_FAILURE; + } + + + + sts_rss_set_configuration_background_evalution(presence_configuration); + + acc_detector_presence_handle_t handle = acc_detector_presence_create(presence_configuration); + if (handle == NULL) + { + APP_LOG(TS_OFF, VLEVEL_H,"Failed to create detector\n"); + acc_detector_presence_configuration_destroy(&presence_configuration); + acc_detector_presence_destroy(&handle); + acc_rss_deactivate(); + return EXIT_FAILURE; + } + + print_current_configuration(presence_configuration); + + acc_detector_presence_configuration_destroy(&presence_configuration); + + + if (!acc_detector_presence_activate(handle)) + { + APP_LOG(TS_OFF, VLEVEL_H, "Failed to activate detector \n"); + return false; + } + bool deactivated = false; + bool success = true; + const int iterations = 1000; + acc_detector_presence_result_t result; + uint16_t motioncount = 0; + float average_distance =0.0f; + float average_score =0.0f; + + for (int i = 0; i < (iterations); i++) + { + success = acc_detector_presence_get_next(handle, &result); + if (!success) + { + APP_LOG(TS_OFF, VLEVEL_H,"acc_detector_presence_get_next() failed\n"); + break; + } + + //print_result(result); + if (!result.data_saturated) + { + if (result.presence_detected) + { + //print_result(result); + motioncount++; + average_distance += result.presence_distance; + average_score += result.presence_score; + + } + } + + acc_integration_sleep_ms(60); //--- around 1000ms in total + if (motioncount%10 ==0) + { + + LED1_TOGGLE; + + } + } + + deactivated = acc_detector_presence_deactivate(handle); + acc_detector_presence_destroy(&handle); + acc_rss_deactivate(); + + average_distance = (1000.0f*average_distance)/motioncount; // in meters + average_score = (1000.0f*average_score)/motioncount; + APP_LOG(TS_OFF, VLEVEL_M, "\r\nBackground Scan: MotionCount: %d , Distance Center Around: %d (mm) , Score: %d \r\n", (int) motioncount, (int)average_distance, (int)average_score); + + *evaluated_distance = (uint16_t)average_distance; + *evaluated_score = (uint16_t)average_score; + + LED1_ON; +} + int sts_presence_rss_fall_rise_detection(void) { const acc_hal_t *hal = acc_hal_integration_get_implementation(); @@ -404,11 +555,18 @@ int sts_presence_rss_fall_rise_detection(void) if (sts_rss_init_ok==0) { - if (sts_work_mode ==STS_UNI_MODE) sts_rss_config_updated_flag |= STS_RSS_CONFIG_FALL_DETECTION; - else if ((sts_work_mode == STS_RSS_MODE) || (sts_work_mode == STS_DUAL_MODE)) sts_rss_config_updated_flag |= STS_RSS_CONFIG_DEFAULT; - set_default_configuration(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_M, "\r\n First Time RSS init, update flag=%02x\r\n", sts_rss_config_updated_flag); - print_current_configuration(presence_configuration); + if (sts_work_mode ==STS_UNI_MODE) + { + sts_rss_config_updated_flag = STS_RSS_CONFIG_FALL_DETECTION; + } + else if ((sts_work_mode == STS_RSS_MODE) || (sts_work_mode == STS_DUAL_MODE)) + { + if (sts_rss_config_updated_flag == STS_RSS_CONFIG_NON) + sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; + } + //set_default_configuration(presence_configuration); + //APP_LOG(TS_OFF, VLEVEL_M, "\r\n First Time RSS init, update flag=%02x\r\n", sts_rss_config_updated_flag); + //print_current_configuration(presence_configuration); sts_rss_init_ok = 1; } @@ -437,33 +595,6 @@ int sts_presence_rss_fall_rise_detection(void) set_default_fall_rise_configuration(presence_configuration); APP_LOG(TS_OFF, VLEVEL_H,"\r\n######### YUNHORN STS *** FALL DETECTION *** cfg applied\n"); break; - #if 1 - case STS_RSS_CONFIG_DEFAULT|STS_RSS_CONFIG_SIMPLE: - set_default_configuration(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n##### YUNHORN STS *** Default *** cfg applied\n"); - sts_rss_set_current_configuration_simple(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n##### YUNHORN STS *** Simple *** cfg applied\n"); - break; - #endif - - case STS_RSS_CONFIG_DEFAULT|STS_RSS_CONFIG_FULL: - set_default_configuration(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n##### YUNHORN STS *** Default *** cfg applied\n"); - sts_rss_set_current_configuration_full(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n######### YUNHORN STS *** FULL *** cfg applied\n"); - break; - case STS_RSS_CONFIG_FULL|STS_RSS_CONFIG_FALL_DETECTION: - set_default_fall_rise_configuration(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n######### YUNHORN STS *** FALL DETECTION *** cfg applied\n"); - sts_rss_set_current_configuration_full(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_H,"\r\n######### YUNHORN STS *** FULL *** cfg applied\n"); - break; - case STS_RSS_CONFIG_SIMPLE|STS_RSS_CONFIG_FALL_DETECTION: - set_default_fall_rise_configuration(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_M,"\r\n##### YUNHORN STS *** Default *** cfg applied\n"); - sts_rss_set_current_configuration_simple(presence_configuration); - APP_LOG(TS_OFF, VLEVEL_M,"\r\n##### YUNHORN STS *** Simple *** cfg applied\n"); - break; default: break; } @@ -675,7 +806,7 @@ int sts_presence_rss_fall_rise_detection(void) average_distance = (1000.0f*average_distance)/average_result; // in meters average_score = (1000.0f*average_score)/average_result; - + APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance: %d (mm) Score: %d \r\n",(int)average_distance, (int)average_score); sts_presence_rss_distance = average_distance; sts_presence_rss_score = average_score; // uint8_t pre_sts_rss_result = (average_result > (DEFAULT_UPDATE_RATE_PRESENCE/5))? 1: 0; diff --git a/Core/Src/yunhorn_sts_presence_rss_bring_up_test.c b/Core/Src/yunhorn_sts_presence_rss_bring_up_test.c index d631606..d5f8567 100644 --- a/Core/Src/yunhorn_sts_presence_rss_bring_up_test.c +++ b/Core/Src/yunhorn_sts_presence_rss_bring_up_test.c @@ -45,7 +45,7 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) uint8_t t=0; uint8_t test_result[20]={0x0}; - APP_LOG(TS_OFF, VLEVEL_L,"-- 0 -- Acconeer software version %s\n", acc_version_get()); + // APP_LOG(TS_OFF, VLEVEL_L,"-- 0 -- Acconeer software version %s\n", acc_version_get()); const acc_hal_t *hal = acc_hal_integration_get_implementation(); @@ -89,7 +89,7 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) acc_rss_assembly_test_configuration_communication_write_read_test_disable(configuration); // Enable and run: Interrupt Test - APP_LOG(TS_OFF, VLEVEL_L,"-- Interrupt Test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Interrupt Test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_communication_interrupt_test_enable(configuration); if (!run_test(configuration)) @@ -104,10 +104,10 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_communication_interrupt_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Interrupt Test --- End ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Interrupt Test --- End ********************\r\n"); // Enable and run: Clock Test - APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_clock_test_enable(configuration); if (!run_test(configuration)) { @@ -121,11 +121,11 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_clock_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- end ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- end ********************\r\n"); // Enable and run: Power cycle test - APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_power_cycle_test_enable(configuration); if (!run_test(configuration)) { @@ -139,11 +139,11 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_power_cycle_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- end ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- end ********************\r\n"); // Enable and run: Hibernate Test - APP_LOG(TS_OFF, VLEVEL_L,"-- Hibernate Test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Hibernate Test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_communication_hibernate_test_enable(configuration); if (!run_test(configuration)) { @@ -157,10 +157,10 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_communication_hibernate_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Hibernate Test --- End ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Hibernate Test --- End ********************\r\n"); // Enable and run: Supply Test - APP_LOG(TS_OFF, VLEVEL_L,"-- Supply Test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Supply Test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_supply_test_enable(configuration); if (!run_test(configuration)) { @@ -174,10 +174,10 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_supply_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Supply Test --- End ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Supply Test --- End ********************\r\n"); // Enable and run: Clock Test - APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_clock_test_enable(configuration); if (!run_test(configuration)) { @@ -191,10 +191,10 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_clock_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- end ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Clock Test --- end ********************\r\n"); // Enable and run: Power cycle test - APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- Start ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- Start ********************\r\n"); acc_rss_assembly_test_configuration_power_cycle_test_enable(configuration); if (!run_test(configuration)) { @@ -208,14 +208,14 @@ int sts_presence_rss_bring_up_test(uint8_t *rss_self_test_result) } acc_rss_assembly_test_configuration_power_cycle_test_disable(configuration); - APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- end ********************\r\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- Power cycle test --- end ********************\r\n"); - APP_LOG(TS_OFF, VLEVEL_L,"-- 10 -- Bring up test: All tests passed\n"); + // APP_LOG(TS_OFF, VLEVEL_L,"-- 10 -- Bring up test: All tests passed\n"); test_result[t++] = 1; //(10) memcpy(rss_self_test_result, test_result, 12); - APP_LOG(TS_OFF, VLEVEL_L,"--Bring up test result #=%d \r\n", t); + // APP_LOG(TS_OFF, VLEVEL_L,"--Bring up test result #=%d \r\n", t); acc_rss_assembly_test_configuration_destroy(&configuration); acc_rss_deactivate(); @@ -234,7 +234,7 @@ static bool run_test(acc_rss_assembly_test_configuration_t configuration) APP_LOG(TS_OFF, VLEVEL_L,"Bring up test: Failed to complete\n"); return false; } else { - APP_LOG(TS_OFF, VLEVEL_L,"Bring up test: SUCCESS to complete\n"); + APP_LOG(TS_OFF, VLEVEL_H,"Bring up test: SUCCESS to complete\n"); } diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 73a41ad..bdae9c9 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -762,9 +762,11 @@ void STS_PRESENCE_SENSOR_NVM_CFG(void) sts_presence_rss_config.default_power_save_mode = (float)(sts_cfg_nvm.p[RSS_CFG_POWER_MODE]); // sts_rss_config_updated_flag = (sts_rss_config_updated_flag|STS_RSS_CONFIG_FULL); //set to 2 for FULL config effect in next detection - sts_rss_config_updated_flag = (STS_RSS_CONFIG_FULL); //set to 2 for FULL config effect in next detection + //sts_rss_config_updated_flag = (STS_RSS_CONFIG_FULL); //set to 2 for FULL config effect in next detection //sts_presence_rss_config.default_config_update_flag = (uint8_t) sts_rss_config_updated_flag; sts_rss_config_updated_flag = (uint8_t)(sts_cfg_nvm.p[RSS_CFG_UPDATE_FLAG]); + + APP_LOG(TS_ON, VLEVEL_M, "\r\n##### Reboot --- with NVM CFG'ED RSS flag =%02x \r\n", sts_rss_config_updated_flag); } void STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(void) @@ -1002,6 +1004,8 @@ void STS_PRESENCE_SENSOR_REEDSWITCH_HALL_Init(void) APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) REED SWITCH HALL ELEMENT Initializing \r\n"); } + +#if 0 void STS_PRESENCE_SENSOR_RSS_Init(void) { APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n"); @@ -1045,7 +1049,7 @@ void STS_PRESENCE_SENSOR_RSS_Init(void) #endif APP_LOG(TS_ON, VLEVEL_M, "\r\n##### Reboot --- with NVM CFG'ED RSS flag =%02x \r\n", sts_rss_config_updated_flag); } - +#endif void STS_PRESENCE_SENSOR_Distance_Measure_Process(void) { @@ -1056,18 +1060,42 @@ void STS_PRESENCE_SENSOR_Distance_Measure_Process(void) (unsigned int)(distance_cfg.acc_profile),(unsigned int)(distance_cfg.hwaas)); do { + LED1_TOGGLE; exit_status = sts_distance_rss_detector_distance(); HAL_Delay(10); i++; } while ((exit_status == EXIT_FAILURE) && (i < 1)); + LED1_ON; + } +void STS_PRESENCE_SENSOR_Background_Measure_Process(uint16_t *bg_distance, uint16_t *bg_motion_noise) +{ + + uint8_t previous_sts_work_mode = sts_work_mode, previous_sts_lamp_bar_color = sts_lamp_bar_color; + uint16_t distance_center=0, motion_noise=0; + + sts_work_mode = STS_RSS_BACKGROUND_MODE; + sts_lamp_bar_color = STS_BLUE; + + sts_presence_rss_background_evaluation_process(&distance_center, &motion_noise); + + APP_LOG(TS_OFF, VLEVEL_H, "\r\n Background Distance center at %d mm, and Motion Noise =%d \r\n", distance_center, motion_noise); + + *bg_distance = distance_center; + *bg_motion_noise = motion_noise; + + sts_work_mode = previous_sts_work_mode; + sts_lamp_bar_color = previous_sts_lamp_bar_color; +} void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_t count) { - uint8_t bring_up_result[20]; + uint8_t bring_up_result[16]; + uint8_t previous_lamp_bar_color=sts_lamp_bar_color; + uint16_t bg_range=0, bg_noise=0; PME_ON; HAL_Init(); MX_GPIO_Init(); @@ -1076,19 +1104,32 @@ void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_ for (uint8_t i=0;i < count; i++) //while(1) { STS_Lamp_Bar_Self_Test_Simple(); - sts_lamp_bar_color = STS_PINK; + STS_Lamp_Bar_Refresh(); HAL_Delay(200); + sts_lamp_bar_color = STS_PINK; sts_presence_rss_bring_up_test(bring_up_result); HAL_Delay(200); - + sts_lamp_bar_color = STS_CYAN; STS_PRESENCE_SENSOR_Distance_Measure_Process(); + bring_up_result[10]=sts_sensor_install_height>>8&0xff; + bring_up_result[11]=sts_sensor_install_height&0xff; + + HAL_Delay(200); + + STS_PRESENCE_SENSOR_Background_Measure_Process(&bg_range, &bg_noise); + bring_up_result[12]=bg_range>>8&0xff; + bring_up_result[13]=bg_range&0xff; + bring_up_result[14]=bg_noise>>8&0xff; + bring_up_result[15]=bg_noise&0xff; + } HAL_Delay(200); + sts_lamp_bar_color = previous_lamp_bar_color; - UTIL_MEM_cpy_8(self_test_result, bring_up_result, 10); + UTIL_MEM_cpy_8(self_test_result, bring_up_result, sizeof(bring_up_result)); } diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index a511bea..1758234 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -121,8 +121,8 @@ volatile sts_cfg_nvm_t sts_cfg_nvm = { 0x09, //output time const 0x05=[5]*0.1=0.5 0.5--> 0.9 2025-03-26 TODO XXXXXX 0x02, //downsampling factor [2]=2 0x03, //power saving mode ACTIVE [3] = 3U - 0x01, //reserve --P[17] RSS CFG UPDATE FLAG 2025-04-14 - 0x00, //reserve --P[18] RESERVE1 + 0x02, //P[17] RSS CFG UPDATE FLAG 2025-04-14 + 0x6E, //P[18] RSS_CFG_BG_MOTION_NOISE 2025-04-14 0x00, //reserve --P[19] RESERVE2 }, // above 20 bytes 0x00, //reserve2 @@ -1180,7 +1180,7 @@ static void OnTxTimerEvent(void *context) { /* USER CODE BEGIN OnTxTimerEvent_1 */ - if (sts_warm_up_count < 10) + if (sts_warm_up_count < 5) { /* USER CODE END OnTxTimerEvent_1 */ //if ((sensor_data_ready ==1)) //|| (sts_reed_hall_changed_flag)) //||(sts_rss_result_changed_flag)||(sts_fall_rising_detected_result_changed_flag)) @@ -2066,11 +2066,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) outbuf[i++] = (uint8_t)(99*((GetBatteryLevel()/254)&0xff)); #if defined(STS_O7)||defined(STS_O6) - outbuf[i++] = (uint8_t)0x04; //length of following data - outbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/1000)%10+0x30)&0xff; - outbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/100)%10+0x30)&0xff; - outbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/10)%10+0x30)&0xff; - outbuf[i++] = (uint8_t) (((uint16_t)sts_distance_rss_distance)%10+0x30)&0xff; + outbuf[i++] = (uint8_t)0x02; //length of following data, 2025 04 14 UPDATE + outbuf[i++] = (uint8_t) (((uint16_t)sts_distance_rss_distance>>8)&0xff); + outbuf[i++] = (uint8_t) ((uint16_t)sts_distance_rss_distance&0xff); + #endif #if (defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED)||defined(YUNHORN_STS_R1_ENABLED)) #ifdef TOF_1 @@ -2090,9 +2089,36 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); + } else if ((char)tlv_buf[CFG_CMD3] == 'B') + { // Background Noise Measure "YZB" +#if defined(STS_O7)||defined(STS_O6) + uint16_t bg_distance=0, bg_motion_noise=0; + STS_PRESENCE_SENSOR_Background_Measure_Process(&bg_distance, &bg_motion_noise); + APP_LOG(TS_OFF, VLEVEL_M, "\r\nRSS Measured Background Center Distance=[%u] mm Motion Noise Level = [%d] \r\n", + (uint16_t)bg_distance, (uint16_t)bg_motion_noise); + sts_cfg_nvm.p[RSS_CFG_BG_MOTION_NOISE] = (uint8_t)(bg_motion_noise/10)&0xff; + OnStoreSTSCFGContextRequest(); + + i=0; + outbuf[i++] = (uint8_t)'B'; + outbuf[i++] = (uint8_t)sts_mtmcode1; + outbuf[i++] = (uint8_t)sts_mtmcode2; + outbuf[i++] = (uint8_t)sts_version; + outbuf[i++] = (uint8_t)sts_hardware_ver; + outbuf[i++] = (uint8_t)(99*((GetBatteryLevel()/254)&0xff)); + + + outbuf[i++] = (uint8_t) 0x04; //length of following data + outbuf[i++] = (uint8_t) (bg_distance>>8)&0xff; + outbuf[i++] = (uint8_t) (bg_distance)&0xff; + outbuf[i++] = (uint8_t) (bg_motion_noise>>8)&0xff; + outbuf[i++] = (uint8_t) (bg_motion_noise)&0xff; + + STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); +#endif } - break; + break; // "YZ_" case 'M': //"YM" if ((char)tlv_buf[CFG_CMD3] >= '0' && (char)tlv_buf[CFG_CMD3]<='9') // Service Mask "YZM" @@ -2605,6 +2631,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) if (invalid_flag == 0) { + sts_cfg_nvm.p[RSS_CFG_UPDATE_FLAG] = STS_RSS_CONFIG_FULL; + STS_PRESENCE_SENSOR_NVM_CFG(); i=0; // Step 1: Prepare status update message @@ -2647,6 +2675,8 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) APP_LOG(TS_OFF, VLEVEL_M,"\r\nStart,Lenght,threshold,gain=%02x %02x %02x %02x \r\n", sts_cfg_nvm.p[RSS_CFG_START_M],sts_cfg_nvm.p[RSS_CFG_LENGTH_M],sts_cfg_nvm.p[RSS_CFG_THRESHOLD],sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN]); + + sts_cfg_nvm.p[RSS_CFG_UPDATE_FLAG] = STS_RSS_CONFIG_SIMPLE; STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(); i=0; // Step 1: Prepare status update message @@ -3136,7 +3166,8 @@ 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_NVM_CFG(); + //STS_PRESENCE_SENSOR_RSS_Init(); } #endif //STS_SENSOR_Distance_Test_Process(); @@ -3157,7 +3188,7 @@ void STS_SENSOR_Distance_Test_Process(void) void STS_SENSOR_Function_Test_Process(void) { - char tstbuf[128] =""; uint8_t i=0, count = 1; + uint8_t tstbuf[128] ={0x0}; uint8_t i=0, count = 1; uint8_t mems_Dev_ID[2] = {0x0}; tstbuf[i++] = (uint8_t) 'S'; @@ -3175,22 +3206,23 @@ void STS_SENSOR_Function_Test_Process(void) } else { - tstbuf[i++] = (uint8_t)14; //length of following data + tstbuf[i++] = (uint8_t)16; //length of following data 16 bytes #if defined(STS_O7)||defined(STS_O6) - uint8_t self_test_result[10]={0x0}; + uint8_t self_test_result[16]={0x0}; STS_PRESENCE_SENSOR_Function_Test_Process(self_test_result, count); - for (uint8_t j=0; j < 10; j++) + for (uint8_t j=0; j < 16; j++) tstbuf[i++] = (uint8_t) (self_test_result[j])&0xff; //STS_PRESENCE_SENSOR_Distance_Measure_Process(); - +#if 0 tstbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/1000)%10+0x30)&0xff; tstbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/100)%10+0x30)&0xff; tstbuf[i++] = (uint8_t) ((((uint16_t)sts_distance_rss_distance)/10)%10+0x30)&0xff; tstbuf[i++] = (uint8_t) (((uint16_t)sts_distance_rss_distance)%10+0x30)&0xff; #endif +#endif #if (defined(YUNHORN_STS_R0_ENABLED)||defined(YUNHORN_STS_R5_ENABLED)||defined(YUNHORN_STS_R1_ENABLED)) tstbuf[i++] = (uint8_t) (count)&0xff; //MX_TOF_Process(); @@ -3213,7 +3245,7 @@ void STS_SENSOR_Function_Test_Process(void) } //memset((void*)outbuf,0x0, sizeof(outbuf)); - UTIL_MEM_cpy_8((void*)outbuf, (void*)tstbuf, i); + UTIL_MEM_cpy_8((void*)outbuf, (void*)tstbuf, sizeof(tstbuf)); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t*)outbuf); } diff --git a/STM32CubeIDE/Release/STS_O7.bin b/STM32CubeIDE/Release/STS_O7.bin index 226ddbd596cd0ad803a71d332f3d5d805070d3c3..d1d7d0f4ace5f8c5bb5051007330b505527ae225 100644 GIT binary patch delta 55178 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 delta 55119 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