good startup without manual trigger door contact ,etc.

This commit is contained in:
Yunhorn 2025-04-09 15:55:08 +08:00
parent 9693082c84
commit 74209c1cc3
4 changed files with 62 additions and 28 deletions

View File

@ -679,6 +679,8 @@ void OnStoreSTSCFGContextRequest(void);
*/ */
void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm); void OnRestoreSTSCFGContextRequest(void *cfg_in_nvm);
void OnRestoreSTSCFG_FactoryDefault_ContextRequest(void);
void STS_REBOOT_CONFIG_Init(void); void STS_REBOOT_CONFIG_Init(void);
/** /**

View File

@ -957,24 +957,24 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n"); APP_LOG(TS_ON, VLEVEL_H, "##### YunHorn SmarToilets(r) MEMS RSS Initializing \r\n");
// PME_ON; // PME_ON;
#if 0
//if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0)) //if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0))
{ {
uint8_t exit_status =0; uint8_t exit_status =0;
do { do {
exit_status=sts_distance_rss_detector_distance(); exit_status=sts_distance_rss_detector_distance();
if (exit_status ==0) { if (exit_status ==0) {
APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance); APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height =%u \r\n", (uint16_t)sts_distance_rss_distance);
} }
else { else {
APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height Error \r\n"); APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height Error \r\n");
HAL_Delay(100); //HAL_Delay(100);
} }
} while((0)); } while((0));
sts_sensor_install_height = (uint16_t)sts_distance_rss_distance; sts_sensor_install_height = (uint16_t)sts_distance_rss_distance;
} }
#endif
STS_PRESENCE_SENSOR_NVM_CFG(); STS_PRESENCE_SENSOR_NVM_CFG();
#if 0 #if 0
switch (sts_work_mode) switch (sts_work_mode)
@ -993,7 +993,7 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
break; break;
} }
#endif #endif
APP_LOG(TS_ON, VLEVEL_M, "##### Reboot --- with NVM CFG'ED RSS flag =%02x \r\n", sts_rss_config_updated_flag); APP_LOG(TS_ON, VLEVEL_M, "\r\n##### Reboot --- with NVM CFG'ED RSS flag =%02x \r\n", sts_rss_config_updated_flag);
} }
@ -1007,9 +1007,9 @@ void STS_PRESENCE_SENSOR_Distance_Measure_Process(void)
do do
{ {
exit_status = sts_distance_rss_detector_distance(); exit_status = sts_distance_rss_detector_distance();
HAL_Delay(100); HAL_Delay(10);
i++; i++;
} while ((exit_status == EXIT_FAILURE) && (i < 2)); } while ((exit_status == EXIT_FAILURE) && (i < 1));
} }
@ -1028,15 +1028,15 @@ void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_
STS_Lamp_Bar_Self_Test_Simple(); STS_Lamp_Bar_Self_Test_Simple();
sts_lamp_bar_color = STS_PINK; sts_lamp_bar_color = STS_PINK;
STS_Lamp_Bar_Refresh(); STS_Lamp_Bar_Refresh();
HAL_Delay(1000); HAL_Delay(200);
sts_presence_rss_bring_up_test(bring_up_result); sts_presence_rss_bring_up_test(bring_up_result);
HAL_Delay(1000); HAL_Delay(200);
STS_PRESENCE_SENSOR_Distance_Measure_Process(); STS_PRESENCE_SENSOR_Distance_Measure_Process();
} }
HAL_Delay(1000); HAL_Delay(200);
UTIL_MEM_cpy_8(self_test_result, bring_up_result, 10); UTIL_MEM_cpy_8(self_test_result, bring_up_result, 10);

View File

@ -616,8 +616,9 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL);
UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL);
UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); UTIL_TIMER_Create(&STSLampBarColorTimer, 2*LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnYunhornSTSLampBarColorTimerEvent, NULL);
// UTIL_TIMER_Create(&STSDurationCheckTimer, 30*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
if (FLASH_IF_Init(NULL) != FLASH_IF_OK) if (FLASH_IF_Init(NULL) != FLASH_IF_OK)
{ {
@ -685,8 +686,8 @@ void LoRaWAN_Init(void)
#endif #endif
#if defined(STS_O7)||defined(STS_O6) #if defined(STS_O7)||defined(STS_O6)
//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);
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL); UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer); UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
@ -1129,14 +1130,15 @@ static void OnTxTimerEvent(void *context)
/* USER CODE BEGIN OnTxTimerEvent_1 */ /* USER CODE BEGIN OnTxTimerEvent_1 */
/* USER CODE END OnTxTimerEvent_1 */ /* 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)) //if ((sensor_data_ready ==1)) //|| (sts_reed_hall_changed_flag)) //||(sts_rss_result_changed_flag)||(sts_fall_rising_detected_result_changed_flag))
//if ((sensor_data_ready ==1) || (sts_reed_hall_changed_flag) || (sts_rss_result_changed_flag)||(sts_fall_rising_detected_result_changed_flag))
{ {
UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0); UTIL_SEQ_SetTask((1 << CFG_SEQ_Task_LoRaSendOnTxTimerOrButtonEvent), CFG_SEQ_Prio_0);
}
/*Wait for next tx slot*/ /*Wait for next tx slot*/
UTIL_TIMER_Start(&TxTimer); UTIL_TIMER_Start(&TxTimer);
} //}
/* USER CODE BEGIN OnTxTimerEvent_2 */ /* USER CODE BEGIN OnTxTimerEvent_2 */
@ -1414,33 +1416,47 @@ 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(AppData.Buffer, (uint8_t*)"YUNHORN168", 10);
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
{ {
APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### = JOIN FAILED\r\n"); APP_LOG(TS_OFF, VLEVEL_M, "\r\n###### = JOIN FAILED\r\n");
} }
APP_LOG(TS_OFF, VLEVEL_H, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower); APP_LOG(TS_OFF, VLEVEL_M, "###### U/L FRAME:JOIN | DR:%d | PWR:%d\r\n", joinParams->Datarate, joinParams->TxPower);
} }
if (STS_LoRa_WAN_Joined) if (STS_LoRa_WAN_Joined)
{ {
//STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 20, (uint8_t*)"STS_Calibrated");
#if 0
STS_SENSOR_Distance_Test_Process();
APP_LOG(TS_OFF, VLEVEL_M, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance);
//STS_SENSOR_Upload_Message(LORAWAN_USER_APP_CTRL_REPLY_PORT, 20, (uint8_t*)"STS_Calibrated");
heart_beat_timer = 1; heart_beat_timer = 1;
//SendTxData(); //SendTxData();
//UTIL_TIMER_Start(&TxTimer); //UTIL_TIMER_Start(&TxTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer); //UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity); OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
//UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL); //UTIL_TIMER_Create(&YunhornSTSRSSWakeUpTimer, YUNHORN_STS_RSS_WAKEUP_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSOORSSWakeUpTimerEvent, NULL);
STS_SENSOR_Distance_Test_Process();
APP_LOG(TS_OFF, VLEVEL_H, "\r\nRSS Measured Distance=[%u] mm \r\n", (uint16_t)sts_distance_rss_distance);
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);
#endif
} }
@ -1931,7 +1947,10 @@ void USER_APP_AUTO_RESPONDER_Parse(char *tlv_buf, uint8_t tlv_buf_size)
} else if ((char)tlv_buf[CFG_CMD3] == 'F') { // RESET TO FACTORY ORIGINAL SETTING "YZF" } else if ((char)tlv_buf[CFG_CMD3] == 'F') { // RESET TO FACTORY ORIGINAL SETTING "YZF"
sts_cfg_nvm_factory_default[0] = 0x46; // F flag set sts_cfg_nvm_factory_default[0] = 0x46; // F flag set
STS_REBOOT_CONFIG_Init(); //STS_REBOOT_CONFIG_Init();
OnRestoreSTSCFG_FactoryDefault_ContextRequest();
__set_FAULTMASK(1); __set_FAULTMASK(1);
OnSystemReset(); OnSystemReset();
@ -2817,15 +2836,28 @@ void OnStoreSTSCFGContextRequest(void)
/* USER CODE END OnStoreContextRequest_Last */ /* USER CODE END OnStoreContextRequest_Last */
} }
void OnRestoreSTSCFG_FactoryDefault_ContextRequest(void *cfg_in_nvm) void OnRestoreSTSCFG_FactoryDefault_ContextRequest(void)
{ {
APP_LOG(TS_OFF, VLEVEL_M, "Restore Defatory Default NVM ********************** \r\n"); APP_LOG(TS_OFF, VLEVEL_M, "Restore Defatory Default NVM ********************** \r\n");
/* USER CODE END OnRestoreSTSCFGContextRequest_1 */ /* USER CODE END OnRestoreSTSCFGContextRequest_1 */
FLASH_IF_Read(cfg_in_nvm, FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE); FLASH_IF_Read((void*)sts_cfg_nvm_factory_default, (void*)FLASH_MFG_DEFAULT_START_ADDR, YUNHORN_STS_MAX_NVM_CFG_SIZE);
STS_Show_STS_CFG_NVM((uint8_t*)cfg_in_nvm); STS_Show_STS_CFG_NVM((uint8_t*)sts_cfg_nvm_factory_default);
if (FLASH_IF_Erase(STS_CONFIG_NVM_BASE_ADDRESS, FLASH_PAGE_SIZE) == FLASH_IF_OK)
{
APP_LOG(TS_OFF, VLEVEL_M, "\r\n %%%%% write CFG to normal NVM \r\n");
FLASH_IF_Write(STS_CONFIG_NVM_BASE_ADDRESS, (const void *)sts_cfg_nvm_factory_default, YUNHORN_STS_MAX_NVM_CFG_SIZE);
FLASH_IF_Write(FLASH_MFG_DEFAULT_START_ADDR, (const void *)sts_cfg_nvm_factory_default, YUNHORN_STS_MAX_NVM_CFG_SIZE);
sts_cfg_nvm_factory_default[0] = 0xF3; // with valid ac code
}
} }

Binary file not shown.