Exemplo n.º 1
0
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);
}
Exemplo n.º 3
0
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);
}