int app_batt_alert_timer_handler(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { //Read LED GPIO state if(bat_lvl_alert_used) { if (bat_led_state) { GPIO_SetInactive( bat_led_port, bat_led_pin); bat_led_state = 0; app_timer_set(APP_BATT_ALERT_TIMER, dest_id, 20); #ifdef CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION if (app_get_sleep_mode()) app_force_active_mode(); // prevent sleep only if enabled #endif //CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION } else { GPIO_SetActive( bat_led_port, bat_led_pin); bat_led_state = 1; app_timer_set(APP_BATT_ALERT_TIMER, dest_id, 5); #ifdef CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION app_restore_sleep_mode(); #endif //CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION } } return (KE_MSG_CONSUMED); }
/** **************************************************************************************** * @brief Handler of the Green LED Timer * * @param[in] msgid * @param[in] param * @param[in] dest_id * @param[in] src_id * * @return KE_MSG_CONSUMED **************************************************************************************** */ int app_green_led_timer_handler(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { if (!dbg_uses_led_pins() || !((GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)) { // GPIOs are not being used by the debugger switch(green_led_st) { case LED_OFF: green_led_off(); break; case BLINK_LED_IS_ON__TURN_OFF: GPIO_SetActive(KBD_GREEN_LED_PORT, KBD_GREEN_LED_PIN); // high - off app_timer_set(APP_GREEN_LED_TIMER, TASK_APP, BLINK_GREEN_OFF); green_led_st = BLINK_LED_IS_OFF__TURN_ON; if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((red_led_st == LED_OFF) || (red_led_st == BLINK_LED_IS_OFF__TURN_ON))) { app_restore_sleep_mode(); // restore sleep } break; case BLINK_LED_IS_OFF__TURN_ON: green_led_blink(); app_timer_set(APP_GREEN_LED_TIMER, TASK_APP, BLINK_GREEN_ON); leds_block_sleep(); break; case LED_ON: green_led_off(); if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((red_led_st == LED_OFF) || (red_led_st == BLINK_LED_IS_OFF__TURN_ON))) { app_restore_sleep_mode(); // restore sleep } break; default: break; } } return (KE_MSG_CONSUMED); }
void app_batt_alert_stop(void) { batt_alert_en = 0; if (bat_lvl_alert_used) { #ifdef CUSTOM_BATTERY_LEVEL_MEASUREMENTS___LED_IS_ACTIVE_LOW GPIO_SetActive( bat_led_port, bat_led_pin); #else GPIO_SetInactive( bat_led_port, bat_led_pin); #endif //CUSTOM_BATTERY_LEVEL_MEASUREMENTS___LED_IS_ACTIVE_LOW } ke_timer_clear(APP_BATT_ALERT_TIMER, TASK_APP); #ifdef CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION if (bat_led_state == 0) app_restore_sleep_mode(); #endif //CUSTOM_BATTERY_LEVEL_MEASUREMENTS___BOOST_MODE_CONFIGURATION bat_led_state = 0; }
/** **************************************************************************************** * @brief Handler of the Red LED Timer * * @param[in] msgid * @param[in] param * @param[in] dest_id * @param[in] src_id * * @return KE_MSG_CONSUMED **************************************************************************************** */ int app_red_led_timer_handler(ke_msg_id_t const msgid, void const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id) { if (!dbg_uses_led_pins() || !((GetWord16(SYS_STAT_REG) & DBG_IS_UP) == DBG_IS_UP)) { // GPIOs are not being used by the debugger switch(red_led_st) { case LED_OFF: red_led_off(); break; case DOUBLE_BLINK_LED_IS_ON__TURN_OFF_A: red_led_off(); app_timer_set(APP_RED_LED_TIMER, TASK_APP, DOUBLE_BLINK_RED_OFF_A); red_led_st = DOUBLE_BLINK_LED_IS_OFF__TURN_ON_B; if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((green_led_st == LED_OFF) || (green_led_st == BLINK_LED_IS_OFF__TURN_ON))) { app_restore_sleep_mode(); } break; case DOUBLE_BLINK_LED_IS_OFF__TURN_ON_B: red_led_blink(); app_timer_set(APP_RED_LED_TIMER, TASK_APP, DOUBLE_BLINK_RED_ON_B); red_led_st = DOUBLE_BLINK_LED_IS_ON__TURN_OFF_B; leds_block_sleep(); break; case DOUBLE_BLINK_LED_IS_ON__TURN_OFF_B: red_led_off(); app_timer_set(APP_RED_LED_TIMER, TASK_APP, DOUBLE_BLINK_RED_OFF_B); red_led_st = LED_OFF; if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((green_led_st == LED_OFF) || (green_led_st == BLINK_LED_IS_OFF__TURN_ON))) { app_restore_sleep_mode(); } break; case BLINK_LED_IS_ON__TURN_OFF: red_led_off(); app_timer_set(APP_RED_LED_TIMER, TASK_APP, BLINK_RED_OFF); red_led_st = BLINK_LED_IS_OFF__TURN_ON; if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((green_led_st == LED_OFF) || (green_led_st == BLINK_LED_IS_OFF__TURN_ON))){ app_restore_sleep_mode(); // restore sleep } break; case BLINK_LED_IS_OFF__TURN_ON: red_led_blink(); app_timer_set(APP_RED_LED_TIMER, TASK_APP, BLINK_RED_ON); leds_block_sleep(); break; case LED_ON: red_led_off(); if ((GetBits16(ANA_STATUS_REG, BOOST_SELECTED) == 0x1) && ((green_led_st == LED_OFF) || (green_led_st == BLINK_LED_IS_OFF__TURN_ON))) { app_restore_sleep_mode(); // restore sleep } high_priority_indications_active = false; break; default: break; } } return (KE_MSG_CONSUMED); }