|
|
@ -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)); |
|
|
|
} |
|
|
|
|