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 OnRestoreSTSCFG_FactoryDefault_ContextRequest(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");
// PME_ON;
#if 0
//if ((sts_distance_rss_distance==0)&&(sts_sensor_install_height==0))
{
uint8_t exit_status =0;
do {
exit_status=sts_distance_rss_detector_distance();
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 {
APP_LOG(TS_ON, VLEVEL_H, "##### RSS Installation Height Error \r\n");
HAL_Delay(100);
APP_LOG(TS_ON, VLEVEL_M, "##### RSS Installation Height Error \r\n");
//HAL_Delay(100);
}
} while((0));
sts_sensor_install_height = (uint16_t)sts_distance_rss_distance;
}
#endif
STS_PRESENCE_SENSOR_NVM_CFG();
#if 0
switch (sts_work_mode)
@ -993,7 +993,7 @@ void STS_PRESENCE_SENSOR_RSS_Init(void)
break;
}
#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
{
exit_status = sts_distance_rss_detector_distance();
HAL_Delay(100);
HAL_Delay(10);
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_color = STS_PINK;
STS_Lamp_Bar_Refresh();
HAL_Delay(1000);
HAL_Delay(200);
sts_presence_rss_bring_up_test(bring_up_result);
HAL_Delay(1000);
HAL_Delay(200);
STS_PRESENCE_SENSOR_Distance_Measure_Process();
}
HAL_Delay(1000);
HAL_Delay(200);
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(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, 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)
{
@ -685,8 +686,8 @@ void LoRaWAN_Init(void)
#endif
#if defined(STS_O7)||defined(STS_O6)
//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);
UTIL_TIMER_Create(&YunhornSTSHeartBeatTimer, YUNHORN_STS_HEART_BEAT_CHECK_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSHeartBeatTimerEvent, NULL);
UTIL_TIMER_Start(&YunhornSTSHeartBeatTimer);
@ -1129,14 +1130,15 @@ static void OnTxTimerEvent(void *context)
/* USER CODE BEGIN 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);
}
/*Wait for next tx slot*/
UTIL_TIMER_Start(&TxTimer);
}
//}
/* USER CODE BEGIN OnTxTimerEvent_2 */
@ -1414,33 +1416,47 @@ 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(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
{
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)
{
//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;
//SendTxData();
//UTIL_TIMER_Start(&TxTimer);
UTIL_TIMER_Start(&STSDurationCheckTimer);
//UTIL_TIMER_Start(&STSDurationCheckTimer);
OnYunhornSTSHeartBeatPeriodicityChanged(HeartBeatPeriodicity);
//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_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"
sts_cfg_nvm_factory_default[0] = 0x46; // F flag set
STS_REBOOT_CONFIG_Init();
//STS_REBOOT_CONFIG_Init();
OnRestoreSTSCFG_FactoryDefault_ContextRequest();
__set_FAULTMASK(1);
OnSystemReset();
@ -2817,15 +2836,28 @@ void OnStoreSTSCFGContextRequest(void)
/* 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");
/* 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.