diff --git a/app/src/acid_dispenser_ble_slave_main.c b/app/src/acid_dispenser_ble_slave_main.c index c752b24..c8cbb68 100644 --- a/app/src/acid_dispenser_ble_slave_main.c +++ b/app/src/acid_dispenser_ble_slave_main.c @@ -216,9 +216,15 @@ void pre_process_state(app_event_t* event, uint16_t event_size) { static int32_t cnt; if (eventType == kappevent_tmr_1s_scheduler_event) { + ZLOGI("scheduler....."); if (cnt % 5 == 0 && zble_module_is_connected()) { send_report_heart(battery_mgr_get_battery_level(), zapp_get_gstate()->reset_flag, 1); } + + if (cnt % 5 == 0) { + light_ctrl_trigger_once_low_power(); + } + cnt++; } } diff --git a/app/src/app_service/light_ctrl.c b/app/src/app_service/light_ctrl.c index 8c65ec0..e23457d 100644 --- a/app/src/app_service/light_ctrl.c +++ b/app/src/app_service/light_ctrl.c @@ -6,10 +6,11 @@ #include "board/board.h" #include "nrf_gpio.h" #include "znordic.h" -#define PERIOD_MS 300 +#define PERIOD_MS 100 APP_TIMER_DEF(m_schedule_tmr); - +bool m_triggerOnceLowPowerEffect; +int m_triggerOnceLowPowerEffectCnt = 0; static void nrf_gpio_set_rgb(uint8_t r, uint8_t g, uint8_t b) { nrf_gpio_pin_write(LEDR, r); nrf_gpio_pin_write(LEDG, g); @@ -18,6 +19,24 @@ static void nrf_gpio_set_rgb(uint8_t r, uint8_t g, uint8_t b) { static void light_tmr_cb(void* p_context) { static bool laststate = false; + laststate = !laststate; + + if (m_triggerOnceLowPowerEffect) { + m_triggerOnceLowPowerEffectCnt++; + if (m_triggerOnceLowPowerEffectCnt * PERIOD_MS > 2000) { + m_triggerOnceLowPowerEffect = false; + m_triggerOnceLowPowerEffectCnt = 0; + return; + } + if (m_triggerOnceLowPowerEffectCnt % 6 < 3) { + nrf_gpio_set_rgb(0, 0, 0); + } else { + nrf_gpio_set_rgb(1, 0, 0); + } + + return; + } + if (zappcore_get_state() == kstate_offline_standby) { nrf_gpio_set_rgb(0, 0, 0); } else if (zappcore_get_state() == kstate_offline_broadcast) { @@ -39,15 +58,18 @@ static void light_tmr_cb(void* p_context) { } else { nrf_gpio_set_rgb(0, laststate, laststate); } - laststate = !laststate; } } else if (zappcore_get_state() == kstate_online_standy) { nrf_gpio_set_rgb(0, 0, 0); } } -void light_ctrl_init() { +void light_ctrl_trigger_once_low_power() { + m_triggerOnceLowPowerEffect = true; + m_triggerOnceLowPowerEffectCnt = 0; +} +void light_ctrl_init() { nrf_gpio_cfg_output(LEDR); nrf_gpio_cfg_output(LEDG); nrf_gpio_cfg_output(LEDB); @@ -55,4 +77,3 @@ void light_ctrl_init() { ZERROR_CHECK(app_timer_create(&m_schedule_tmr, APP_TIMER_MODE_REPEATED, light_tmr_cb)); ZERROR_CHECK(app_timer_start(m_schedule_tmr, APP_TIMER_TICKS(PERIOD_MS), NULL)); } - diff --git a/app/src/app_service/light_ctrl.h b/app/src/app_service/light_ctrl.h index ad6029e..ef6371e 100644 --- a/app/src/app_service/light_ctrl.h +++ b/app/src/app_service/light_ctrl.h @@ -8,3 +8,4 @@ void light_ctrl_init(); // mainÖгõʼ»¯Ò»±é +void light_ctrl_trigger_once_low_power(); \ No newline at end of file