From 20a553398dcd0d195781e76954383a28f1306474 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Wed, 21 Aug 2024 20:17:29 +0800 Subject: [PATCH] -revised for rss cfg update flag --- Core/Inc/yunhorn_sts_sensors.h | 9 +++++++-- Core/Src/main.c | 2 +- Core/Src/yunhorn_sts_presence_rss.c | 23 +++++++++++++++++++++-- Core/Src/yunhorn_sts_process.c | 16 ++++++++-------- LoRaWAN/App/lora_app.c | 16 +++++++--------- STM32CubeIDE/STS_O7.launch | 16 +++++++++++++--- 6 files changed, 57 insertions(+), 25 deletions(-) diff --git a/Core/Inc/yunhorn_sts_sensors.h b/Core/Inc/yunhorn_sts_sensors.h index 60d5bef..26f86c5 100644 --- a/Core/Inc/yunhorn_sts_sensors.h +++ b/Core/Inc/yunhorn_sts_sensors.h @@ -89,7 +89,12 @@ enum RSS_CFG_order{ #endif #if defined(STS_O7)||defined(STS_O6) - +#define STS_RSS_CONFIG_NON 0x00 +#define STS_RSS_CONFIG_DEFAULT 0x01 +#define STS_RSS_CONFIG_SIMPLE 0x02 +#define STS_RSS_CONFIG_FULL 0x04 +#define STS_RSS_CONFIG_FALL_DETECTION 0x08 +#if 0 enum sts_rss_config_update_t { STS_RSS_CONFIG_NON=0, STS_RSS_CONFIG_DEFAULT, @@ -97,7 +102,7 @@ enum sts_rss_config_update_t { STS_RSS_CONFIG_FULL, STS_RSS_CONFIG_FALL_DETECTION }; - +#endif enum sts_ctrl_cmd_type { STS_CTRL_CMD_TYPE_DUTYCYCLE_LEVEL_CHANGE, STS_CTRL_CMD_MEMS_TUNE_TOF_VL53L0X=0x00, diff --git a/Core/Src/main.c b/Core/Src/main.c index 3414667..f383cfd 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -23,6 +23,7 @@ #include "app_lorawan.h" #include "gpio.h" #include "usart.h" +#include "stdio.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "spi.h" @@ -91,7 +92,6 @@ int main(void) MX_TIM1_Init(); MX_SPI1_Init(); /* USER CODE END SysInit */ - /* Initialize all configured peripherals */ MX_LoRaWAN_Init(); diff --git a/Core/Src/yunhorn_sts_presence_rss.c b/Core/Src/yunhorn_sts_presence_rss.c index 966c973..72825c8 100644 --- a/Core/Src/yunhorn_sts_presence_rss.c +++ b/Core/Src/yunhorn_sts_presence_rss.c @@ -262,6 +262,7 @@ static void set_default_fall_rise_configuration(acc_detector_presence_configurat // 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); } @@ -272,8 +273,9 @@ static void sts_rss_set_current_configuration_full(acc_detector_presence_configu acc_detector_presence_configuration_sensor_set(presence_configuration, DEFAULT_SENSOR_ID); // acc_service_profile_t presence_profile = sts_presence_rss_config.default_profile; -// acc_detector_presence_configuration_service_profile_set(presence_configuration, presence_profile); +// acc_detector_presence_configuration_service_profile_set(presence_configuration, presence_profile); 2024-08-21 update + 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); //DEFAULT_UPDATE_RATE_2); acc_detector_presence_configuration_detection_threshold_set(presence_configuration, sts_presence_rss_config.default_threshold);//DEFAULT_DETECTION_THRESHOLD_2); @@ -301,8 +303,9 @@ 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) { 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_update_rate_set(presence_configuration, DEFAULT_UPDATE_RATE_PRESENCE); 2024-08-21 update + 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); @@ -375,6 +378,22 @@ int sts_presence_rss_fall_rise_detection(void) set_default_fall_rise_configuration(presence_configuration); APP_LOG(TS_OFF, VLEVEL_M,"\r\n######### YUNHORN STS *** FALL DETECTION *** cfg applied\n"); break; + case STS_RSS_CONFIG_DEFAULT|STS_RSS_CONFIG_SIMPLE: + set_default_configuration(presence_configuration); + sts_rss_set_current_configuration_simple(presence_configuration); + break; + case STS_RSS_CONFIG_DEFAULT|STS_RSS_CONFIG_FULL: + set_default_configuration(presence_configuration); + sts_rss_set_current_configuration_full(presence_configuration); + break; + case STS_RSS_CONFIG_FULL|STS_RSS_CONFIG_FALL_DETECTION: + set_default_fall_rise_configuration(presence_configuration); + sts_rss_set_current_configuration_full(presence_configuration); + break; + case STS_RSS_CONFIG_SIMPLE|STS_RSS_CONFIG_FALL_DETECTION: + set_default_fall_rise_configuration(presence_configuration); + sts_rss_set_current_configuration_simple(presence_configuration); + break; default: break; } diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 7746131..2d2f21a 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -275,13 +275,13 @@ void STS_YunhornSTSEventP2_Process(void) { switch (sts_work_mode) { case STS_RSS_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_DEFAULT; break; case STS_DUAL_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_DEFAULT; break; case STS_UNI_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_FALL_DETECTION; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_FALL_DETECTION; break; default: break; @@ -711,7 +711,7 @@ void STS_PRESENCE_SENSOR_NVM_CFG(void) sts_presence_rss_config.default_downsampling_factor = (float)(sts_cfg_nvm.p[RSS_CFG_DOWNSAMPLING_FACTOR]); 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_FULL; //set to 2 for FULL config effect in next detection + sts_rss_config_updated_flag = (sts_rss_config_updated_flag|STS_RSS_CONFIG_FULL); //set to 2 for FULL config effect in next detection } void STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(void) @@ -721,7 +721,7 @@ void STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(void) sts_presence_rss_config.default_threshold = (float)(sts_cfg_nvm.p[RSS_CFG_THRESHOLD]*0.1f); sts_presence_rss_config.default_receiver_gain = (float)(sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN]*0.01f); - sts_rss_config_updated_flag = STS_RSS_CONFIG_SIMPLE; //set to 1 for simple config effect in next detection + sts_rss_config_updated_flag = (sts_rss_config_updated_flag|STS_RSS_CONFIG_SIMPLE); //set to 1 for simple config effect in next detection } void STS_PRESENCE_SENSOR_Init_Send_Data(void) @@ -966,14 +966,14 @@ void STS_PRESENCE_SENSOR_RSS_Init(void) switch (sts_work_mode) { case STS_RSS_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_DEFAULT; break; case STS_DUAL_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_DEFAULT; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_DEFAULT; break; case STS_UNI_MODE: - sts_rss_config_updated_flag = STS_RSS_CONFIG_FALL_DETECTION; + sts_rss_config_updated_flag |= STS_RSS_CONFIG_FALL_DETECTION; break; default: break; diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index f47b611..37d2813 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -2553,22 +2553,20 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size) #if 1 for (j =0; j < CFG_CMD_RSS_SIMPLE_SIZE-3; j++) { - if ((tlv_buf[CFG_CMD4+j] >='0') && (tlv_buf[CFG_CMD4+j]<='9')) + if ((tlv_buf[CFG_CMD4+j] < '0') || (tlv_buf[CFG_CMD4+j] >'9')) { - //sts_cfg_nvm.p[j] = (uint8_t)((tlv_buf[CFG_CMD4+j] - 0x30)&0xff); - //APP_LOG(TS_OFF,VLEVEL_H,"\r\n tlv_buf %d = %02x cfg->p[%d]=%02x \r\n",j,tlv_buf[CFG_CMD4+j], j, sts_cfg_nvm.p[j]); - } else { invalid_flag = 1; } } #endif - sts_cfg_nvm.p[RSS_CFG_START_M] = (uint8_t)((tlv_buf[CFG_CMD4] - 0x30)*10+(tlv_buf[CFG_CMD5] - 0x30)); - sts_cfg_nvm.p[RSS_CFG_LENGTH_M] = (uint8_t)((tlv_buf[CFG_CMD6] - 0x30)*10+(tlv_buf[CFG_CMD7] - 0x30)); - sts_cfg_nvm.p[RSS_CFG_THRESHOLD] = (uint8_t)((tlv_buf[CFG_CMD8] - 0x30)*10+(tlv_buf[CFG_CMD9] - 0x30)); - sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN] = (uint8_t)((tlv_buf[CFG_CMD10]- 0x30)*10+(tlv_buf[CFG_CMD11]- 0x30)); - if (invalid_flag == 0) { + sts_cfg_nvm.p[RSS_CFG_START_M] = (uint8_t)((tlv_buf[CFG_CMD4] - 0x30)*10+(tlv_buf[CFG_CMD5] - 0x30)); + sts_cfg_nvm.p[RSS_CFG_LENGTH_M] = (uint8_t)((tlv_buf[CFG_CMD6] - 0x30)*10+(tlv_buf[CFG_CMD7] - 0x30)); + sts_cfg_nvm.p[RSS_CFG_THRESHOLD] = (uint8_t)((tlv_buf[CFG_CMD8] - 0x30)*10+(tlv_buf[CFG_CMD9] - 0x30)); + sts_cfg_nvm.p[RSS_CFG_RECEIVER_GAIN] = (uint8_t)((tlv_buf[CFG_CMD10]- 0x30)*10+(tlv_buf[CFG_CMD11]- 0x30)); + + STS_PRESENCE_SENSOR_NVM_CFG_SIMPLE(); i=0; // Step 1: Prepare status update message diff --git a/STM32CubeIDE/STS_O7.launch b/STM32CubeIDE/STS_O7.launch index 51094b5..9dcffc1 100644 --- a/STM32CubeIDE/STS_O7.launch +++ b/STM32CubeIDE/STS_O7.launch @@ -10,8 +10,8 @@ - - + + @@ -20,8 +20,9 @@ + - + @@ -41,6 +42,15 @@ + + + + + + + + +