Merge pull request 'pixel_network_rm2' (#7) from pixel_network_rm2 into master

Reviewed-on: https://gitea.yunhorn.com/sundp/O7/pulls/7
This commit is contained in:
Yunhorn 2025-03-19 21:27:49 +08:00
commit 2e44e814dc
19 changed files with 105 additions and 49 deletions

View File

@ -50,7 +50,7 @@ extern "C" {
* #define VLEVEL_M 2 functional traces * #define VLEVEL_M 2 functional traces
* #define VLEVEL_H 3 all traces * #define VLEVEL_H 3 all traces
*/ */
#define VERBOSE_LEVEL VLEVEL_M #define VERBOSE_LEVEL VLEVEL_H
/** /**
* @brief Enable trace logs * @brief Enable trace logs

View File

@ -270,9 +270,6 @@
#ifdef STS_O6 #ifdef STS_O6
#define sts_mtmcode2 3U //MTM-03 for O6, MTM-07 for O7 #define sts_mtmcode2 3U //MTM-03 for O6, MTM-07 for O7
#endif #endif
#ifdef STS_O7
#define sts_mtmcode2 7U //MTM-03 for O6, MTM-07 for O7
#endif
#ifdef STS_P2 #ifdef STS_P2
#define sts_mtmcode2 106 #define sts_mtmcode2 106
#define sts_senddataport (YUNHORN_STS_P2_LORA_APP_DATA_PORT) #define sts_senddataport (YUNHORN_STS_P2_LORA_APP_DATA_PORT)
@ -287,10 +284,15 @@
#define sts_senddataport (YUNHORN_STS_O6_LORA_APP_DATA_PORT) #define sts_senddataport (YUNHORN_STS_O6_LORA_APP_DATA_PORT)
#define sts_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT) #define sts_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT)
#endif #endif
#ifdef STS_O7 #ifdef STS_O7
#define sts_mtmcode1 0U
#define sts_mtmcode2 7U //MTM-03 for O6, MTM-07 for O7
#define YUNHORN_STS_PRD_STRING "STS_O7"
#define sts_senddataport (YUNHORN_STS_O7_LORA_APP_DATA_PORT) #define sts_senddataport (YUNHORN_STS_O7_LORA_APP_DATA_PORT)
#define sts_sendhtbtport (YUNHORN_STS_O7_LORA_APP_HTBT_PORT) #define sts_sendhtbtport (YUNHORN_STS_O7_LORA_APP_HTBT_PORT)
#endif #endif
#if defined(STS_O6)||defined(STS_O7) #if defined(STS_O6)||defined(STS_O7)
#define sts_appctrlport (YUNHORN_STS_O7_USER_APP_CTRL_PORT) #define sts_appctrlport (YUNHORN_STS_O7_USER_APP_CTRL_PORT)
#define sts_appctrl_reply_port (YUNHORN_STS_O7_USER_APP_CTRL_REPLY_PORT) #define sts_appctrl_reply_port (YUNHORN_STS_O7_USER_APP_CTRL_REPLY_PORT)

View File

@ -99,8 +99,8 @@ int main(void)
MX_LoRaWAN_Init(); MX_LoRaWAN_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n"); //APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n");
STS_TOF_VL53LX_PeopleCounting_Process_Init(); //STS_TOF_VL53LX_PeopleCounting_Process_Init();
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */

View File

@ -38,7 +38,7 @@
typedef struct ws2812b_e { typedef struct ws2812b_e {
//uint16_t head[3]; //uint16_t head[3];
uint16_t GRB[WS2812B_DATA_LEN]; uint16_t GRB[WS2812B_DATA_LEN+RESET_PULSE];
uint16_t tail; uint16_t tail;
} WS2812B_FrameTypeDef; } WS2812B_FrameTypeDef;
@ -198,6 +198,7 @@ void STS_Lamp_Bar_Set_STS_RGB_Color(uint8_t sts_lamp_color, uint8_t lum)
STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum); STS_Lamp_Bar_Set_RGB_Color(lum, lum, lum);
break; break;
} }
} }
} }

View File

@ -58,6 +58,7 @@
// 2024-08-15 volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 2, 63, 2, 10, 0.5, 1.3, 0.2}; // 2024-08-15 volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 2, 63, 2, 10, 0.5, 1.3, 0.2};
//volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.5, 1.3, 0.2}; //volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.5, 1.3, 0.2};
volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.4, 1.2, 0.2}; volatile distance_measure_cfg_t distance_cfg={0.8, 3.5, 4, 63, 2, 10, 0.4, 1.2, 0.2};
//volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2}; //volatile distance_measure_cfg_t distance_cfg={1.5, 3.3, 2, 63, 4, 10, 0.8182f, 0.4, 0.2};
extern volatile uint16_t sts_distance_rss_distance, sts_sensor_install_height; extern volatile uint16_t sts_distance_rss_distance, sts_sensor_install_height;
@ -75,7 +76,7 @@ int sts_distance_rss_detector_distance(void)
if (!acc_rss_activate(hal)) if (!acc_rss_activate(hal))
{ {
APP_LOG(TS_OFF, VLEVEL_L, "Failed to activate RSS\n"); APP_LOG(TS_OFF, VLEVEL_M, "Failed to activate RSS\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@ -90,13 +91,15 @@ int sts_distance_rss_detector_distance(void)
return EXIT_FAILURE; return EXIT_FAILURE;
} }
APP_LOG(TS_OFF, VLEVEL_M, "\r\n UPDATE CONFIG \r\n");
sts_distance_rss_update_configuration(distance_configuration); sts_distance_rss_update_configuration(distance_configuration);
acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration); acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration);
if (distance_handle == NULL) if (distance_handle == NULL)
{ {
APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_create() failed\n"); APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_create() failed\n");
acc_detector_distance_configuration_destroy(&distance_configuration); acc_detector_distance_configuration_destroy(&distance_configuration);
acc_rss_deactivate(); acc_rss_deactivate();
return EXIT_FAILURE; return EXIT_FAILURE;
@ -106,7 +109,7 @@ int sts_distance_rss_detector_distance(void)
if (!acc_detector_distance_activate(distance_handle)) if (!acc_detector_distance_activate(distance_handle))
{ {
APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_activate() failed\n"); APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_activate() failed\n");
acc_detector_distance_destroy(&distance_handle); acc_detector_distance_destroy(&distance_handle);
acc_rss_deactivate(); acc_rss_deactivate();
return EXIT_FAILURE; return EXIT_FAILURE;
@ -115,6 +118,7 @@ int sts_distance_rss_detector_distance(void)
bool success = true; bool success = true;
const int iterations = 5; //5; const int iterations = 5; //5;
uint16_t number_of_peaks = 1; // FSB first significant Bin uint16_t number_of_peaks = 1; // FSB first significant Bin
acc_detector_distance_result_t result[number_of_peaks]; acc_detector_distance_result_t result[number_of_peaks];
acc_detector_distance_result_info_t result_info; acc_detector_distance_result_info_t result_info;
float tmp_distance = 0.0f; float tmp_distance = 0.0f;
@ -125,7 +129,7 @@ int sts_distance_rss_detector_distance(void)
if (!success) if (!success)
{ {
APP_LOG(TS_OFF, VLEVEL_L, "acc_detector_distance_get_next() failed\n"); APP_LOG(TS_OFF, VLEVEL_M, "acc_detector_distance_get_next() failed\n");
break; break;
} }
for(uint8_t j=0; j< result_info.number_of_peaks; j++) for(uint8_t j=0; j< result_info.number_of_peaks; j++)
@ -139,6 +143,7 @@ int sts_distance_rss_detector_distance(void)
sts_sensor_install_height = (uint16_t)sts_distance_rss_distance; sts_sensor_install_height = (uint16_t)sts_distance_rss_distance;
APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance =%u mm --- Assume Sensor Install Height = %u mm\r\n", (uint16_t)sts_distance_rss_distance, (uint16_t)sts_sensor_install_height); APP_LOG(TS_OFF, VLEVEL_M, "\r\nAverage Distance =%u mm --- Assume Sensor Install Height = %u mm\r\n", (uint16_t)sts_distance_rss_distance, (uint16_t)sts_sensor_install_height);
bool deactivated = acc_detector_distance_deactivate(distance_handle); bool deactivated = acc_detector_distance_deactivate(distance_handle);
acc_detector_distance_destroy(&distance_handle); acc_detector_distance_destroy(&distance_handle);

View File

@ -67,7 +67,7 @@ volatile uint16_t sts_sensor_install_height=0;//in mm
// RSS motion and distance // RSS motion and distance
#ifdef USE_ACCONEER_A111 #ifdef USE_ACCONEER_A111
volatile uint16_t sts_distance_rss_distance=0, sts_sensor_install_height=0;//in mm volatile uint16_t sts_distance_rss_distance=0;//in mm
extern volatile float sts_presence_rss_distance, sts_presence_rss_score; extern volatile float sts_presence_rss_distance, sts_presence_rss_score;
volatile uint8_t sts_rss_config_updated_flag = STS_RSS_CONFIG_NON; volatile uint8_t sts_rss_config_updated_flag = STS_RSS_CONFIG_NON;
extern volatile uint8_t sts_occupancy_overtime_state; extern volatile uint8_t sts_occupancy_overtime_state;
@ -114,6 +114,7 @@ extern volatile uint8_t motion_in_hs_zone[12][10]; //0.4*12=4.8meter high, past
extern volatile uint8_t detected_hs_zone; extern volatile uint8_t detected_hs_zone;
extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config; extern volatile STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config;
volatile uint32_t cnt=0; volatile uint32_t cnt=0;
volatile uint8_t sts_rss_result_changed_flag = 0; volatile uint8_t sts_rss_result_changed_flag = 0;
volatile uint8_t sts_rss_result = STS_RESULT_NO_MOTION; volatile uint8_t sts_rss_result = STS_RESULT_NO_MOTION;
volatile uint8_t sts_rss_2nd_result = STS_RESULT_NO_MOTION; //2nd RSS sensor status volatile uint8_t sts_rss_2nd_result = STS_RESULT_NO_MOTION; //2nd RSS sensor status
@ -243,6 +244,7 @@ void STS_YunhornSTSEventP1_Process(void)
{ {
sts_reed_hall_changed_flag |= 0x02; sts_reed_hall_changed_flag |= 0x02;
} }
last_sts_reed_hall_2_result = sts_reed_hall_2_result; last_sts_reed_hall_2_result = sts_reed_hall_2_result;
sts_reed_hall_3_result = sts_hall3_read;//HALL3_STATE;// sts_hall3_read; sts_reed_hall_3_result = sts_hall3_read;//HALL3_STATE;// sts_hall3_read;
@ -520,6 +522,7 @@ void STS_Combined_Status_Processing(void)
{ {
sts_status_color = STS_RED_BLUE; sts_status_color = STS_RED_BLUE;
} }
break; break;
#ifdef USE_ACCONEER_A111 #ifdef USE_ACCONEER_A111
case STS_RSS_MODE: case STS_RSS_MODE:

View File

@ -36,6 +36,7 @@
#include "sys_sensors.h" #include "sys_sensors.h"
#include "flash_if.h" #include "flash_if.h"
#include "main.h" #include "main.h"
#include <stdio.h>
#ifdef CLOCK_SYNC #ifdef CLOCK_SYNC
#include "LmhpClockSync.h" #include "LmhpClockSync.h"
#endif #endif
@ -51,6 +52,7 @@
extern volatile uint8_t sts_service_mask; extern volatile uint8_t sts_service_mask;
extern volatile uint32_t rfac_timer; extern volatile uint32_t rfac_timer;
volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0}; volatile uint8_t sts_ac_code[YUNHORN_STS_AC_CODE_SIZE]={0x0};
static void STS_Show_STS_CFG_NVM(uint8_t * nvm_store_value);
extern hmac_result_t hmac_result; extern hmac_result_t hmac_result;
extern volatile uint8_t ToF_EventDetected; extern volatile uint8_t ToF_EventDetected;
extern volatile uint8_t sts_hall1_read, sts_hall2_read, sts_hall3_read, sts_hall4_read; extern volatile uint8_t sts_hall1_read, sts_hall2_read, sts_hall3_read, sts_hall4_read;
@ -86,21 +88,21 @@ volatile bool p2_work_finished=true;
extern volatile uint8_t luminance_level; extern volatile uint8_t luminance_level;
uint8_t outbuf[255]={0x0}; uint8_t outbuf[255]={0x0};
volatile static bool r_b=true; volatile static bool r_b=true;
volatile sts_cfg_nvm_factory_default[64]={0xF0}; volatile uint8_t sts_cfg_nvm_factory_default[64]={0xF0};
volatile sts_cfg_nvm_t sts_cfg_nvm = { volatile sts_cfg_nvm_t sts_cfg_nvm = {
sts_mtmcode1, sts_mtmcode1,
sts_mtmcode2, sts_mtmcode2,
sts_version, sts_version,
sts_hardware_ver, sts_hardware_ver,
0x05, //Regular TxPeriodicity interval 0x05,
'M', //Uplink data interval unit, for heart-beat uplink 'M', //Uplink data interval for heart-beat uplink
0x01, //Heart-beat interval or Sampling interval 0x03,
'S', //Sampling sensor interval unit, for real-time sensing of MEMS 'S', //Sampling sensor interval for real-time sensing of MEMS
0x04, // dual mode=4, uni_mode =5 0x03, // dual mode=4, uni_mode =5, RSS mode =3
0x00, // sts service mask 0x00, // sts service mask
0x00, //sts_ioc_mask 0x00, //sts_ioc_mask
0x20, //32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG 0x20, //32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG
{ // below 20 bytes { // below 20 bytes
0x08, //start_m [8]*0.1 meter =0.8 0x08, //start_m [8]*0.1 meter =0.8
0x19, //lenght_m 0x19=[25]*0.1=2.5f meter 0x19, //lenght_m 0x19=[25]*0.1=2.5f meter
0x0F, //threshold 0X0F=[15]*0.1=1.5f 0x0F, //threshold 0X0F=[15]*0.1=1.5f
@ -960,6 +962,7 @@ static void SendTxData(void)
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT; AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_DATA_PORT;
} else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE)) } else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
{ {
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT; AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_DATA_PORT;
} }
@ -974,6 +977,7 @@ static void SendTxData(void)
else if (sts_work_mode == STS_UNI_MODE) else if (sts_work_mode == STS_UNI_MODE)
AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = (uint8_t)YUNHORN_STS_O7_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE)) else if ((sts_work_mode == STS_RSS_MODE)||(sts_work_mode == STS_REEDSWITCH_MODE)||(sts_work_mode == STS_NETWORK_MODE)||(sts_work_mode == STS_WIRED_MODE))
AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1; AppData.Port = (uint8_t)YUNHORN_STS_O2_LORA_APP_HTBT_PORT; //LORAWAN_USER_APP_PORT+1;
//AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1; //AppData.Port = (uint8_t)sts_sendhtbtport; //LORAWAN_USER_APP_PORT+1;
@ -1435,6 +1439,15 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode; STS_LoRa_WAN_Joined = (uint8_t) joinParams->Mode;
APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %s \r\n", (STS_LoRa_WAN_Joined == 1)?"ABP":"OTAA"); APP_LOG(TS_OFF, VLEVEL_L,"\r\n STS_LoRa_WAN_Joined = %s \r\n", (STS_LoRa_WAN_Joined == 1)?"ABP":"OTAA");
AppData.Port = 1;
AppData.BufferSize = 16;
UTIL_MEM_cpy_8((uint8_t*)AppData.Buffer, (uint8_t *)YUNHORN_STS_PRD_STRING, sizeof(YUNHORN_STS_PRD_STRING));
AppData.BufferSize = sizeof(YUNHORN_STS_PRD_STRING);
LmHandlerParams.IsTxConfirmed = true;
LmHandlerErrorStatus_t status = LmHandlerSend(&AppData, LmHandlerParams.IsTxConfirmed, false);
if (status ==LORAMAC_HANDLER_SUCCESS ) LmHandlerParams.IsTxConfirmed = false;
} }
else else
{ {
@ -1449,10 +1462,6 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
heart_beat_timer = 1; heart_beat_timer = 1;
//SendTxData(); //SendTxData();
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
//UTIL_TIMER_Start(&TxTimer); //UTIL_TIMER_Start(&TxTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer); UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
@ -1465,8 +1474,8 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams)
#elif defined(STS_P2) #elif defined(STS_P2)
APP_LOG(TS_OFF, VLEVEL_H, "\r\nTOF Measured Distance=[%u] mm \r\n", (uint16_t)sts_sensor_install_height); APP_LOG(TS_OFF, VLEVEL_H, "\r\nTOF Measured Distance=[%u] mm \r\n", (uint16_t)sts_sensor_install_height);
#endif #endif
UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer);
} }
@ -1793,7 +1802,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity)
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
/* USER CODE BEGIN OnTxPeriodicityChanged_2 */ /* USER CODE BEGIN OnTxPeriodicityChanged_2 */
APP_LOG(TS_OFF, VLEVEL_H,"**************** HeartBeatPeriodicity = %u (sec)\r\n", periodicity/1000 ); APP_LOG(TS_OFF, VLEVEL_M,"**************** HeartBeatPeriodicity = %u (sec)\r\n", periodicity/1000 );
/* USER CODE END OnTxPeriodicityChanged_2 */ /* USER CODE END OnTxPeriodicityChanged_2 */
} }
@ -1940,11 +1949,11 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context)
void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_size) void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_size)
{ {
uint8_t i=0, mems_ver, invalid_flag=1, tlv_buf[128]={0x0}; uint8_t i=0, mems_ver, invalid_flag=1, tlv_buf[128]={0x0}, tlv_buf_size=parse_buffer_size;
UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf,0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)tlv_buf,(void*)parse_buffer, parse_buffer_size&0x7F); /* 127 BYTES MAX */ UTIL_MEM_cpy_8((void*)tlv_buf,(void*)parse_buffer, parse_buffer_size&0x7F); /* 127 BYTES MAX */
if (((char)tlv_buf[CFG_CMD1] == 'Y') && (tlv_buf_size <=5)) // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT if (((char)tlv_buf[CFG_CMD1] == 'Y') && (parse_buffer_size <=5)) // BEGIN OF *** BOARD LEVEL CONTROL OR REPORT
{ {
switch ((char)tlv_buf[CFG_CMD2]) switch ((char)tlv_buf[CFG_CMD2])
{ {
@ -2166,11 +2175,11 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
{ {
//STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30)); //STS_SENSOR_Power_ON((uint8_t)(tlv_buf[CFG_CMD3]-0x30));
PME_ON; PME_ON;
// 2024-07-31 // 2024-07-31
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size);
i = tlv_buf_size;
i = parse_buffer_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2184,8 +2193,8 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
PME_OFF; PME_OFF;
// 2024-07-31 // 2024-07-31
UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf));
UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size);
i = tlv_buf_size; i = parse_buffer_size;
STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf);
} else { } else {
STS_SENSOR_Upload_Config_Invalid_Message(); STS_SENSOR_Upload_Config_Invalid_Message();
@ -2383,6 +2392,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
} else if (tlv_buf_size == 7 && tlv_buf[CFG_CMD4]=='F') // Change fall detection } else if (tlv_buf_size == 7 && tlv_buf[CFG_CMD4]=='F') // Change fall detection
{ {
invalid_flag = 0; // P 1 1 F A B C invalid_flag = 0; // P 1 1 F A B C
if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0')) if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))) //&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0'))) && ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))) //&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
{ {
@ -2423,14 +2433,14 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
}else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='O') // Change occupancy/motionless/ unconscious overtime threshold }else if (tlv_buf_size == 8 && tlv_buf[CFG_CMD4]=='O') // Change occupancy/motionless/ unconscious overtime threshold
{ {
invalid_flag = 0; // P 1 1 O A B C D invalid_flag = 0; // P 1 1 O M O U A
if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0')) if (((tlv_buf[CFG_CMD5] >='0') && (tlv_buf[CFG_CMD5]<='9')) && ((tlv_buf[CFG_CMD6]<='9') && (tlv_buf[CFG_CMD6]>='0'))
&& ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0'))) && ((tlv_buf[CFG_CMD7]<='9') && (tlv_buf[CFG_CMD7]>='0'))&& ((tlv_buf[CFG_CMD8]<='9') && (tlv_buf[CFG_CMD8]>='0')))
{ {
sts_motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); //Motionless duration in min sts_motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); //M: Motionless duration in min
sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //Long occupation in min sts_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //O: Long occupation in min
sts_unconscious_level_threshold = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //motion level threshold less than 1280 sts_unconscious_level_threshold = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //U: motion level threshold less than 1280
sts_alarm_mute_reset_timer_in_10sec = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; //alarm mute reset timer in 10 sec sts_alarm_mute_reset_timer_in_10sec = (uint8_t)(tlv_buf[CFG_CMD8] - 0x30)*10; //A: alarm mute reset timer in 10 sec
sts_cfg_nvm.motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30); sts_cfg_nvm.motionless_duration_threshold_in_min = (uint8_t)(tlv_buf[CFG_CMD5] - 0x30);
sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30); sts_cfg_nvm.occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30);
@ -2594,6 +2604,11 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
{ {
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; invalid_flag = 1;
} }
} }
@ -2614,6 +2629,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s
i = tlv_buf_size; i = tlv_buf_size;
APP_LOG(TS_OFF, VLEVEL_M, "###### RSS Simple CFG=%s\r\n",(char*)outbuf); APP_LOG(TS_OFF, VLEVEL_M, "###### RSS Simple CFG=%s\r\n",(char*)outbuf);
// Step 2: Save valid config to NVM // Step 2: Save valid config to NVM
sts_cfg_nvm.mtmcode1 = sts_mtmcode1; sts_cfg_nvm.mtmcode1 = sts_mtmcode1;
sts_cfg_nvm.mtmcode2 = sts_mtmcode2; sts_cfg_nvm.mtmcode2 = sts_mtmcode2;
@ -2763,6 +2779,7 @@ void STS_SENSOR_Upload_Message(uint8_t appDataPort, uint8_t appBufferSize, uint8
void OnStoreSTSCFGContextRequest(void) void OnStoreSTSCFGContextRequest(void)
{ {
/* USER CODE BEGIN OnStoreContextRequest_1 */ /* USER CODE BEGIN OnStoreContextRequest_1 */
uint8_t i=0,j=0,nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0}; uint8_t i=0,j=0,nvm_store_value[YUNHORN_STS_MAX_NVM_CFG_SIZE]={0x0};
@ -2772,6 +2789,9 @@ void OnStoreSTSCFGContextRequest(void)
nvm_store_value[i++] = sts_cfg_nvm.mtmcode2; nvm_store_value[i++] = sts_cfg_nvm.mtmcode2;
nvm_store_value[i++] = sts_cfg_nvm.version; nvm_store_value[i++] = sts_cfg_nvm.version;
nvm_store_value[i++] = sts_cfg_nvm.hardware_ver; nvm_store_value[i++] = sts_cfg_nvm.hardware_ver;
APP_LOG(TS_OFF, VLEVEL_L, "\r\n\n\n\n\n STS_CFG_NVM periodicity=%02x unit=%02x \r\n",sts_cfg_nvm.periodicity,sts_cfg_nvm.unit);
nvm_store_value[i++] = sts_cfg_nvm.periodicity; nvm_store_value[i++] = sts_cfg_nvm.periodicity;
nvm_store_value[i++] = sts_cfg_nvm.unit; nvm_store_value[i++] = sts_cfg_nvm.unit;
nvm_store_value[i++] = sts_cfg_nvm.sampling; nvm_store_value[i++] = sts_cfg_nvm.sampling;
@ -2867,12 +2887,15 @@ void STS_REBOOT_CONFIG_Init(void)
/* USER CODE END OnRestoreContextRequest_1 */ /* USER CODE END OnRestoreContextRequest_1 */
//UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); //UTIL_MEM_cpy_8(nvm_stored_value, (void *)STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
APP_LOG(TS_OFF, VLEVEL_M, "\r\nfactory default 0=%02x \r\n", sts_cfg_nvm_factory_default[0]);
if (sts_cfg_nvm_factory_default[0] != 0x46) // for reset to factory default if (sts_cfg_nvm_factory_default[0] != 0x46) // for reset to factory default
{ {
FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE); FLASH_IF_Read(nvm_stored_value, STS_CONFIG_NVM_BASE_ADDRESS, YUNHORN_STS_MAX_NVM_CFG_SIZE);
STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
} else { // RESET TO FACTORY DEFAULT,CONFIG TO ORIGINAL SETTINGS } else { // RESET TO FACTORY DEFAULT,CONFIG TO ORIGINAL SETTINGS
FLASH_IF_Read(nvm_stored_value, FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE); FLASH_IF_Read(nvm_stored_value, FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE);
STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
sts_cfg_nvm_factory_default[0] = 0xF3; sts_cfg_nvm_factory_default[0] = 0xF3;
} }
/* USER CODE BEGIN OnRestoreContextRequest_Last */ /* USER CODE BEGIN OnRestoreContextRequest_Last */
@ -2923,7 +2946,7 @@ void STS_REBOOT_CONFIG_Init(void)
} }
} }
//#endif //#endif
STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value);
OnRestoreSTSCFGContextProcess(); OnRestoreSTSCFGContextProcess();
@ -3009,6 +3032,7 @@ void OnRestoreSTSCFGContextProcess(void)
#if defined(STS_O7)||defined(STS_O6) #if defined(STS_O7)||defined(STS_O6)
APP_LOG(TS_OFF, VLEVEL_M, "\n--------STS_PRESENCE_SENSOR_Init()---------------------------------\n");
// if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length)) // if ((sts_version == sts_cfg_nvm.version)&& (NVM_CFG_PARAMETER_SIZE == sts_cfg_nvm.length))
{ {
STS_PRESENCE_SENSOR_Init(); STS_PRESENCE_SENSOR_Init();
@ -3020,6 +3044,21 @@ void OnRestoreSTSCFGContextProcess(void)
} }
static void STS_Show_STS_CFG_NVM(uint8_t * store_value)
{
APP_LOG(TS_OFF, VLEVEL_M, "\n-----------------------------------------------\n");
APP_LOG(TS_OFF, VLEVEL_M, "\n00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15\n");
for (uint8_t i=0; i<YUNHORN_STS_MAX_NVM_CFG_SIZE; i++)
{
if (i%16==0) APP_LOG(TS_OFF, VLEVEL_M, "\n");
APP_LOG(TS_OFF, VLEVEL_M, "%02X ", store_value[i]);
}
APP_LOG(TS_OFF, VLEVEL_M, "\n\r");
APP_LOG(TS_OFF, VLEVEL_M, "\n###############################################\n\r");
}
void STS_SENSOR_Distance_Test_Process(void) void STS_SENSOR_Distance_Test_Process(void)
{ {
#if defined(STS_O6)||defined(STS_O7) #if defined(STS_O6)||defined(STS_O7)
@ -3102,7 +3141,7 @@ uint32_t STS_Get_Date_Time_Stamp(void)
UnixEpoch.Seconds -= 18; /*removing leap seconds*/ UnixEpoch.Seconds -= 18; /*removing leap seconds*/
SysTimeLocalTime(UnixEpoch.Seconds, &localtime); SysTimeLocalTime(UnixEpoch.Seconds, &localtime);
APP_LOG(TS_OFF, VLEVEL_M, "UTC TIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n", APP_LOG(TS_OFF, VLEVEL_L, "UTC TIME:%02dh%02dm%02ds on %02d/%02d/%04d\r\n",
localtime.tm_hour, localtime.tm_min, localtime.tm_sec, localtime.tm_hour, localtime.tm_min, localtime.tm_sec,
localtime.tm_mday, localtime.tm_mon + 1, localtime.tm_year + 1900); localtime.tm_mday, localtime.tm_mon + 1, localtime.tm_year + 1900);

View File

@ -154,9 +154,9 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1119592399" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/> <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1119592399" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2024044405" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols"> <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2024044405" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="CORE_CM4"/> <listOptionValue builtIn="false" value="CORE_CM4"/>
<listOptionValue builtIn="false" value="STS_P2"/>
<listOptionValue builtIn="false" value="CLOCK_SYNC"/> <listOptionValue builtIn="false" value="CLOCK_SYNC"/>
<listOptionValue builtIn="false" value="RM2_1"/> <listOptionValue builtIn="false" value="RM2"/>
<listOptionValue builtIn="false" value="STS_O7"/>
<listOptionValue builtIn="false" value="YUNHORN_STS_RANDOM"/> <listOptionValue builtIn="false" value="YUNHORN_STS_RANDOM"/>
<listOptionValue builtIn="false" value="STM32WLE5xx"/> <listOptionValue builtIn="false" value="STM32WLE5xx"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>

Binary file not shown.

View File

@ -71,7 +71,7 @@ main-build: STS_O7.elf secondary-outputs
# Tool invocations # Tool invocations
STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS) STS_O7.elf STS_O7.map: $(OBJS) $(USER_OBJS) D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld makefile objects.list $(OPTIONAL_TOOL_DEPS)
arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group arm-none-eabi-gcc -o "STS_O7.elf" @"objects.list" $(USER_OBJS) -Wl,--start-group $(LIBS) -Wl,--end-group -mcpu=cortex-m4 -T"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\STM32WLE5CCUX_FLASH.ld" --specs=nosys.specs -Wl,-Map="STS_O7.map" -Wl,--gc-sections -static -L"D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\STS_O7\STM32CubeIDE\Drivers\rss\lib" -L../../../../../../../Middlewares/ST/STM32_Cryptographic/lib -Xlinker -no-enum-size-warning -z noexecstack --specs=nano.specs -mfloat-abi=soft -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
@echo 'Finished building target: $@' @echo 'Finished building target: $@'
@echo ' ' @echo ' '

View File

@ -2,10 +2,12 @@
<launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType"> <launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType">
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth__pwd_enable" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_certif_path" value=""/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_certif_path" value=""/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value=""/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_pwd_file" value=""/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
<intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/> <intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
@ -34,7 +36,7 @@
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="0"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\Release\st-link_gdbserver_log.txt"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="D:\ONEDRIVE\STM32WLV13\Projects\NUCLEO-WL55JC\Applications\LoRaWAN\YUNHORN_STS_E5CC_AS923_POC\STM32CubeIDE\Release\st-link_gdbserver_log.txt"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="enable"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="none"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/> <stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/>

View File

@ -43,10 +43,14 @@ STS_O7 For Occupancy sensors
2024-06-06 before STS_FALL_DETECTION_MODE change 2024-06-06 before STS_FALL_DETECTION_MODE change
2024-06-17 good for sensor 1 and sensor 2 start stop timer freezed for now 2024-06-17 good for sensor 1 and sensor 2 start stop timer freezed for now
2024-06-26 RTM for pixel-network STS_RSS_MODE = 3 P113 switch 2024-06-26 RTM for pixel-network STS_RSS_MODE = 3 P113 switch
******************************************************************************
2024-08-05 PIXEL-NETWORK RM2
=======
2024-07-30 revert back ...not good for alarm so far 2024-07-30 revert back ...not good for alarm so far
2024-08-06 start focus on fall detection 2024-08-06 start focus on fall detection
2024-08-06 fall detection for O7, Motion detection for O6 2024-08-06 fall detection for O7, Motion detection for O6
2024-08-28 STS-P2 2024-08-28 STS-P2
***************************************************************************** *****************************************************************************
2025-03-12 PIXEL-NETWORK WITH RESET TO FACTORY DEFAULT CMD
*/ */