diff --git a/Core/Inc/sys_conf.h b/Core/Inc/sys_conf.h index 6059cf0..db49324 100644 --- a/Core/Inc/sys_conf.h +++ b/Core/Inc/sys_conf.h @@ -50,7 +50,7 @@ extern "C" { * #define VLEVEL_M 2 functional traces * #define VLEVEL_H 3 all traces */ -#define VERBOSE_LEVEL VLEVEL_M +#define VERBOSE_LEVEL VLEVEL_H /** * @brief Enable trace logs diff --git a/Core/Inc/yunhorn_sts_prd_conf.h b/Core/Inc/yunhorn_sts_prd_conf.h index 1ff9599..1043fcf 100644 --- a/Core/Inc/yunhorn_sts_prd_conf.h +++ b/Core/Inc/yunhorn_sts_prd_conf.h @@ -270,9 +270,6 @@ #ifdef STS_O6 #define sts_mtmcode2 3U //MTM-03 for O6, MTM-07 for O7 #endif -#ifdef STS_O7 -#define sts_mtmcode2 7U //MTM-03 for O6, MTM-07 for O7 -#endif #ifdef STS_P2 #define sts_mtmcode2 106 #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_sendhtbtport (YUNHORN_STS_O6_LORA_APP_HTBT_PORT) #endif + #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_sendhtbtport (YUNHORN_STS_O7_LORA_APP_HTBT_PORT) #endif + #if defined(STS_O6)||defined(STS_O7) #define sts_appctrlport (YUNHORN_STS_O7_USER_APP_CTRL_PORT) #define sts_appctrl_reply_port (YUNHORN_STS_O7_USER_APP_CTRL_REPLY_PORT) diff --git a/Core/Src/main.c b/Core/Src/main.c index 413e83d..a9a319e 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -99,8 +99,8 @@ int main(void) MX_LoRaWAN_Init(); /* USER CODE BEGIN 2 */ - APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n"); - STS_TOF_VL53LX_PeopleCounting_Process_Init(); + //APP_LOG(TS_OFF, VLEVEL_M,"\r\n Before TOF ...................\r\n"); + //STS_TOF_VL53LX_PeopleCounting_Process_Init(); /* USER CODE END 2 */ /* Infinite loop */ diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index ef2269d..b5961c5 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -38,7 +38,7 @@ typedef struct ws2812b_e { //uint16_t head[3]; - uint16_t GRB[WS2812B_DATA_LEN]; + uint16_t GRB[WS2812B_DATA_LEN+RESET_PULSE]; uint16_t tail; } 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); break; } + } } diff --git a/Core/Src/yunhorn_sts_distance_rss.c b/Core/Src/yunhorn_sts_distance_rss.c index 3b26cfd..a553f69 100644 --- a/Core/Src/yunhorn_sts_distance_rss.c +++ b/Core/Src/yunhorn_sts_distance_rss.c @@ -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}; //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={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; @@ -75,7 +76,7 @@ int sts_distance_rss_detector_distance(void) 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; } @@ -90,13 +91,15 @@ int sts_distance_rss_detector_distance(void) return EXIT_FAILURE; } + APP_LOG(TS_OFF, VLEVEL_M, "\r\n UPDATE CONFIG \r\n"); + sts_distance_rss_update_configuration(distance_configuration); acc_detector_distance_handle_t distance_handle = acc_detector_distance_create(distance_configuration); 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_rss_deactivate(); return EXIT_FAILURE; @@ -106,7 +109,7 @@ int sts_distance_rss_detector_distance(void) 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_rss_deactivate(); return EXIT_FAILURE; @@ -115,6 +118,7 @@ int sts_distance_rss_detector_distance(void) bool success = true; const int iterations = 5; //5; uint16_t number_of_peaks = 1; // FSB first significant Bin + acc_detector_distance_result_t result[number_of_peaks]; acc_detector_distance_result_info_t result_info; float tmp_distance = 0.0f; @@ -125,7 +129,7 @@ int sts_distance_rss_detector_distance(void) 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; } 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; 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); acc_detector_distance_destroy(&distance_handle); diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index d417f4b..cbdaed4 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -67,7 +67,7 @@ volatile uint16_t sts_sensor_install_height=0;//in mm // RSS motion and distance #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; volatile uint8_t sts_rss_config_updated_flag = STS_RSS_CONFIG_NON; 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 STS_OO_RSS_SensorTuneDataTypeDef sts_presence_rss_config; volatile uint32_t cnt=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_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; } + last_sts_reed_hall_2_result = sts_reed_hall_2_result; 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; } + break; #ifdef USE_ACCONEER_A111 case STS_RSS_MODE: diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 83ffdd6..405ccce 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -36,6 +36,7 @@ #include "sys_sensors.h" #include "flash_if.h" #include "main.h" +#include <stdio.h> #ifdef CLOCK_SYNC #include "LmhpClockSync.h" #endif @@ -51,6 +52,7 @@ extern volatile uint8_t sts_service_mask; extern volatile uint32_t rfac_timer; 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 volatile uint8_t ToF_EventDetected; 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; uint8_t outbuf[255]={0x0}; 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 = { sts_mtmcode1, sts_mtmcode2, sts_version, sts_hardware_ver, - 0x05, //Regular TxPeriodicity interval - 'M', //Uplink data interval unit, for heart-beat uplink - 0x01, //Heart-beat interval or Sampling interval - 'S', //Sampling sensor interval unit, for real-time sensing of MEMS - 0x04, // dual mode=4, uni_mode =5 - 0x00, // sts service mask - 0x00, //sts_ioc_mask - 0x20, //32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG - { // below 20 bytes + 0x05, + 'M', //Uplink data interval for heart-beat uplink + 0x03, + 'S', //Sampling sensor interval for real-time sensing of MEMS + 0x03, // dual mode=4, uni_mode =5, RSS mode =3 + 0x00, // sts service mask + 0x00, //sts_ioc_mask + 0x20, //32 bytes, below start of p[0] 20 BYTES AND 12 BYTES FALL DOWN CFG + { // below 20 bytes 0x08, //start_m [8]*0.1 meter =0.8 0x19, //lenght_m 0x19=[25]*0.1=2.5f meter 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; } 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; } @@ -974,6 +977,7 @@ static void SendTxData(void) else if (sts_work_mode == STS_UNI_MODE) 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)) + 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; @@ -1435,6 +1439,15 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) 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"); + + 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 { @@ -1449,10 +1462,6 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) heart_beat_timer = 1; //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(&STSDurationCheckTimer); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); @@ -1465,8 +1474,8 @@ static void OnJoinRequest(LmHandlerJoinParams_t *joinParams) #elif defined(STS_P2) APP_LOG(TS_OFF, VLEVEL_H, "\r\nTOF Measured Distance=[%u] mm \r\n", (uint16_t)sts_sensor_install_height); #endif - UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); - UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); + UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); + UTIL_TIMER_Start(&YunhornSTSRSSWakeUpTimer); } @@ -1793,7 +1802,7 @@ static void OnYunhornSTSHeartBeatPeriodicityChanged(uint32_t periodicity) UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); /* 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 */ } @@ -1940,11 +1949,11 @@ static void OnYunhornSTSSamplingCheckTimerEvent(void *context) 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_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]) { @@ -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)); PME_ON; - // 2024-07-31 UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); - UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); - i = tlv_buf_size; + UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size); + + i = parse_buffer_size; STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); } else { 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; // 2024-07-31 UTIL_MEM_set_8((void*)outbuf, 0x0, sizeof(outbuf)); - UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,tlv_buf_size); - i = tlv_buf_size; + UTIL_MEM_cpy_8((void*)outbuf,(void*)tlv_buf,parse_buffer_size); + i = parse_buffer_size; STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, i, (uint8_t *)outbuf); } else { 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 { 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')) && ((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 { - 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')) && ((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_occupancy_overtime_threshold_in_10min = (uint8_t)(tlv_buf[CFG_CMD6] - 0x30)*10; //Long occupation in min - sts_unconscious_level_threshold = (uint8_t)(tlv_buf[CFG_CMD7] - 0x30+1)*128; //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_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; //O: Long occupation in min + 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; //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.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')) { + + //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; } } @@ -2614,6 +2629,7 @@ void USER_APP_AUTO_RESPONDER_Parse(uint8_t *parse_buffer, uint8_t parse_buffer_s i = tlv_buf_size; APP_LOG(TS_OFF, VLEVEL_M, "###### RSS Simple CFG=%s\r\n",(char*)outbuf); + // Step 2: Save valid config to NVM sts_cfg_nvm.mtmcode1 = sts_mtmcode1; 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) { + /* USER CODE BEGIN OnStoreContextRequest_1 */ 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.version; 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.unit; nvm_store_value[i++] = sts_cfg_nvm.sampling; @@ -2867,12 +2887,15 @@ void STS_REBOOT_CONFIG_Init(void) /* USER CODE END OnRestoreContextRequest_1 */ //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 { 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 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; } /* USER CODE BEGIN OnRestoreContextRequest_Last */ @@ -2923,7 +2946,7 @@ void STS_REBOOT_CONFIG_Init(void) } } //#endif - + STS_Show_STS_CFG_NVM((uint8_t*)nvm_stored_value); OnRestoreSTSCFGContextProcess(); @@ -3009,6 +3032,7 @@ void OnRestoreSTSCFGContextProcess(void) #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)) { 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) { #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*/ 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_mday, localtime.tm_mon + 1, localtime.tm_year + 1900); diff --git a/STM32CubeIDE/.cproject b/STM32CubeIDE/.cproject index 5542029..9a0d9f7 100644 --- a/STM32CubeIDE/.cproject +++ b/STM32CubeIDE/.cproject @@ -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 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="STS_P2"/> <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="STM32WLE5xx"/> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> diff --git a/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin b/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin new file mode 100644 index 0000000..85dfd75 Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_DEBUG_RM2_1_pixel_network_20240806a.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin b/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin new file mode 100644 index 0000000..0825b6d Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_PIXEL_NETWORK_20240820.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin new file mode 100644 index 0000000..6818931 Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_46cm_pixel_network_20240806b.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin new file mode 100644 index 0000000..9fd42dd Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_1_pixel_network_20240806a.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin new file mode 100644 index 0000000..9648bfd Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240806b.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin new file mode 100644 index 0000000..1f83805 Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_46cm_pixel_network_20240820.bin differ diff --git a/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin b/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin new file mode 100644 index 0000000..e36f663 Binary files /dev/null and b/STM32CubeIDE/Release/STS_O6_RTM_RM2_pixel_network_20240806A.bin differ diff --git a/STM32CubeIDE/Release/STS_O7.bin b/STM32CubeIDE/Release/STS_O7.bin index 7f8cf35..36508d2 100644 Binary files a/STM32CubeIDE/Release/STS_O7.bin and b/STM32CubeIDE/Release/STS_O7.bin differ diff --git a/STM32CubeIDE/Release/makefile b/STM32CubeIDE/Release/makefile index 54f7c2a..f768fc6 100644 --- a/STM32CubeIDE/Release/makefile +++ b/STM32CubeIDE/Release/makefile @@ -71,7 +71,7 @@ main-build: STS_O7.elf secondary-outputs # 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) - 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 ' ' diff --git a/STM32CubeIDE/STS_O7.launch b/STM32CubeIDE/STS_O7.launch index 9dcffc1..8f08898 100644 --- a/STM32CubeIDE/STS_O7.launch +++ b/STM32CubeIDE/STS_O7.launch @@ -2,10 +2,12 @@ <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.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=""/> <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_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_swv" value="false"/> <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"/> <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.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.reset_strategy" value="connect_under_reset"/> <booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/> diff --git a/readme.txt b/readme.txt index b5cca4d..98c0480 100644 --- a/readme.txt +++ b/readme.txt @@ -43,10 +43,14 @@ STS_O7 For Occupancy sensors 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-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-08-06 start focus on fall detection 2024-08-06 fall detection for O7, Motion detection for O6 2024-08-28 STS-P2 ***************************************************************************** - +2025-03-12 PIXEL-NETWORK WITH RESET TO FACTORY DEFAULT CMD */