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 @@
+
+
+
+
+
+
+
+
+