Browse Source

添加低电量灯光效果

master
zhaohe 11 months ago
parent
commit
5f9e9b3578
  1. 6
      app/src/acid_dispenser_ble_slave_main.c
  2. 31
      app/src/app_service/light_ctrl.c
  3. 1
      app/src/app_service/light_ctrl.h

6
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++;
}
}

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

1
app/src/app_service/light_ctrl.h

@ -8,3 +8,4 @@
void light_ctrl_init(); // main中初始化一遍
void light_ctrl_trigger_once_low_power();
Loading…
Cancel
Save