|
|
@ -91,7 +91,7 @@ void ENTER_DEEP_SLEEP() { |
|
|
|
BoardEcgSensor_set_sence_state(); |
|
|
|
BoardBattery_sence_gpio_init_before_sleep(); |
|
|
|
// nrf_sdh_disable_request(); |
|
|
|
app_timer_stop_all(); |
|
|
|
app_timer_pause(); |
|
|
|
nrf_sdh_suspend(); |
|
|
|
sd_power_system_off(); |
|
|
|
NVIC_SystemReset(); |
|
|
@ -159,6 +159,8 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { |
|
|
|
/******************************************************************************* |
|
|
|
* 待机状态 * |
|
|
|
*******************************************************************************/ |
|
|
|
static uint32_t lasttrypoweron_time = 0; |
|
|
|
|
|
|
|
if (ds_now_state() == kdevice_state_standby) { |
|
|
|
// 充电事件触发 --> 切换到充电页面 |
|
|
|
if (BoardBattery_get_charging_state()) { |
|
|
@ -166,11 +168,15 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { |
|
|
|
} |
|
|
|
|
|
|
|
// 导联连接事件触发 --> 切换到开机中页面 |
|
|
|
else if (BoardEcgSensor_plod_get_connected_state()) { |
|
|
|
|
|
|
|
else if (BoardEcgSensor_plod_get_connected_state() && znordic_haspassed_ms(lasttrypoweron_time) >= LOW_BATTERY_REMINDER_DELAY_MS) { |
|
|
|
lasttrypoweron_time = znordic_getpower_on_ms(); |
|
|
|
if (BoardBattery_get_battery_level() > APP_WORK_BATTERY_LEVEL) { |
|
|
|
state_machine__change_to_poweroning_state(); |
|
|
|
} else { |
|
|
|
BoardLight_load(); |
|
|
|
BoardLight_blockFlash(3, 100); |
|
|
|
BoardLight_unload(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -179,7 +185,7 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { |
|
|
|
if (!znordic_rtc_has_setted()) { |
|
|
|
ENTER_DEEP_SLEEP(); |
|
|
|
} |
|
|
|
if(APP_BATTERY_PROTECT_LEVEL > BoardBattery_get_battery_level()){ |
|
|
|
if (APP_BATTERY_PROTECT_LEVEL > BoardBattery_get_battery_level()) { |
|
|
|
ENTER_DEEP_SLEEP(); |
|
|
|
} |
|
|
|
} |
|
|
@ -225,8 +231,8 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 低电量,设备直接进入深度睡眠 |
|
|
|
else if (BoardBattery_get_battery_level() < APP_AUTO_STANDY_BATTERY_LEVEL) { |
|
|
|
// 低电量,设备进入待机模式 |
|
|
|
else if (BoardBattery_get_battery_level() < APP_AUTO_STANDY_BATTERY_LEVEL && ds_cur_state_haspassed_ms() > 3000) { |
|
|
|
state_machine__change_to_standby_state(); |
|
|
|
} |
|
|
|
// ZLOGI("bt:%d plod:%d has_disc:%d state:%d", zdatachannel_is_connected(), BoardEcgSensor_plod_get_connected_state_after_filter(), plod_state_has_disconnected_ms(), ds_cur_state_haspassed_ms()); |
|
|
@ -389,6 +395,7 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { |
|
|
|
*******************************************************************************/ |
|
|
|
|
|
|
|
void one_conduction_main() { |
|
|
|
ZLOGI("one_conduction_main"); |
|
|
|
BoardBeepCtrl_init(); |
|
|
|
AppEvent_regListener(app_event_listener); |
|
|
|
|
|
|
@ -398,11 +405,15 @@ void one_conduction_main() { |
|
|
|
BoardLight_load(); |
|
|
|
|
|
|
|
BoardBattery_load(); |
|
|
|
#if 1 |
|
|
|
if (BoardBattery_get_battery_level() < APP_WORK_BATTERY_LEVEL) { |
|
|
|
BoardLight_blockFlash(3, 100); |
|
|
|
// 系统进入深度睡眠,进入深度睡眠前,使能唤醒引脚 |
|
|
|
app_timer_pause(); |
|
|
|
nrf_delay_ms(LOW_BATTERY_REMINDER_DELAY_MS); |
|
|
|
ENTER_DEEP_SLEEP(); |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb)); |
|
|
|
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(300), NULL)); |
|
|
|