예제 #1
0
/****************************************************************************
NAME    
    powerManagerHandleVbatLow
    
DESCRIPTION
    Called when the battery voltage is detected to be in Battery Low state
*/
static void powerManagerHandleVbatLow( void )
{
    sinkState lSinkState = stateManagerGetState ();
    bool batt_was_low = powerManagerIsVbatLow();

    PM_DEBUG(("PM: Battery Low\n"));
    if(powerManagerIsChargerConnected() || lSinkState == deviceLimbo)
    {
        theSink.battery_state = POWER_BATT_LEVEL0;
    }
    else
    {
        theSink.battery_state = POWER_BATT_LOW;  
    }

    if(!batt_was_low || !powerManagerIsVbatLow())
    {
        /* update state indication to indicate low batt state change */
#ifndef NO_LED         
        LEDManagerIndicateState( lSinkState );
#endif        
    }
    
    AudioSetPower(powerManagerGetLBIPM());
}
예제 #2
0
/*******************************************************************************
NAME
    sinkUpgradePowerEventHandler

DESCRIPTION
    Handle power events and pass relevant ones to the Upgrade library.
    The upgrade library is interested in two kinds of events:
    1. When the library is in the 'normal' state then low battery when
       a charger is not connected triggers transition to
       the 'low battery error' state.
    2. When the library is in the 'low battery error' state, then connecting
       a charger (or when battery level will magically change from low to ok
       without connecting a charger) enables transition back to
       the 'normal' state.

PARAMETERS
    void

RETURNS
    void
*/
void sinkUpgradePowerEventHandler(void)
{
    upgrade_power_state_t power_state = upgrade_battery_ok;

    if(powerManagerIsChargerConnected())
    {
        power_state = upgrade_charger_connected;
    }
    else if(powerManagerIsVbatLow() || powerManagerIsVbatCritical())
    {
        /* Only when charger is not connected and battery level is low notify
         * the upgrade library. This is because purpose the upgrade library's
         * low battery handling is to prevent draining battery to much when
         * charger is not connected.
         */
        power_state = upgrade_battery_low;
    }

    UpgradePowerManagementSetState(power_state);
}
예제 #3
0
/****************************************************************************
NAME    
    batteryNormal
    
DESCRIPTION
    Called when the battery voltage is detected to be in a Normal state
*/
static void powerManagerHandleVbatNormal(uint8 level)
{
#ifndef NO_LED     
    bool low_batt = powerManagerIsVbatLow();
#endif    
    PM_DEBUG(("PM: Battery Normal %d\n", level));
    MessageSend(&theSink.task, EventSysBatteryOk, 0);
    
    /* If charger connected send a charger gas gauge message (these don't have any functional use but can be associated with LEDs/tones) */
    if (powerManagerIsChargerConnected())
        MessageSend(&theSink.task, (EventSysChargerGasGauge0+level), 0);
    
    /* reset any low battery warning that may be in place */
    theSink.battery_state = POWER_BATT_LEVEL0 + level;
    csr2csrHandleAgBatteryRequestRes(level);
#ifndef NO_LED 
    /* when changing from low battery state to a normal state, refresh the led state pattern
       to replace the low battery pattern should it have been shown */
    if(low_batt) LEDManagerIndicateState(stateManagerGetState());
#endif    
    AudioSetPower(powerManagerGetLBIPM());
}