⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwroncharger.c

📁 MTK6226修改平台UI的文件介绍
💻 C
📖 第 1 页 / 共 5 页
字号:
    U16 string_id = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    g_charbat_context.batteryStatus = p->battery_status;
#ifdef __MTK_TARGET__
    g_charbat_context.chargerLevel = p->battery_voltage;
#endif 
    mmi_devmgr_charger_send_ack(p->battery_status);

    switch (p->battery_status)
    {
    #ifdef __MMI_USB_SUPPORT__
        case PMIC_USB_CHARGER_IN:
            string_id = STR_USB_CHARGER_CONNECTED;
            /* PASS */
    #endif /* __MMI_USB_SUPPORT__ */ 
        case PMIC_CHARGER_IN:
        {
            if (!string_id)
            {
                string_id = STR_CHARGER_CONNECTED;
            }

            g_charbat_context.isChargerConnected = 1;
        #ifdef __MMI_USB_SUPPORT__
            mmi_usb_set_background_still(MMI_FALSE);
        #endif 

            if (mmi_bootup_is_before_power_on() == MMI_TRUE)
            {
                PRINT_INFORMATION(("[DevMngr-PMIC] CHARGER IN before power on indication"));
            }
            else
            {
                if (mmi_bootup_is_in_power_on_period() == MMI_TRUE)
                {
                    IdleScreenChargerConnected(KAL_TRUE);
                    // wangbei add start 20071010
                    #ifdef __NEW_STATUS_ICONS_STYLE__
                     draw_submenu_statusicons();
                    #endif
                    // wangbei add end
                }
                else
                {
                    g_charbat_context.ChargingComplete = 0; /* To prevent reentrence of charging complete screen */
                    TurnOnBacklight(1);

                    if (!g_charbat_context.PowerOnCharger && mmi_bootup_is_in_power_on_period() == MMI_FALSE)
                    {
                        BatteryIndicationPopup(string_id);
                        IdleScreenChargerConnected(KAL_FALSE);   /* swap for sublcd display */
                        // wangbei add start 20071010
                        #ifdef __NEW_STATUS_ICONS_STYLE__
                            draw_charger_connected_batteryicon();
                        #endif
                           // wangbei add end
                    }

                    if (g_charbat_context.LowBatteryFlag)   /* Charger plug in shall stop low battery LED pattern */
                    {
                        g_charbat_context.LowBatteryFlag = 0;
                        StopLEDPatternBatteryWarning(); /* disconnect charger, the abnormal led pattern shall stop */
                    }
                }
            }
            break;
        }
    #ifdef __MMI_USB_SUPPORT__
        case PMIC_USB_CHARGER_OUT:
            string_id = STR_USB_CHARGER_REMOVED;
            /* PASS */
    #endif /* __MMI_USB_SUPPORT__ */ 
        case PMIC_CHARGER_OUT:
        {
            if (!string_id)
            {
                string_id = STR_CHARGER_REMOVED;
            }
            g_charbat_context.ChargingComplete = 0; /* to prevent reentrence of charging complete screen */
            g_charbat_context.isChargerConnected = 0;

        #ifdef __MMI_USB_SUPPORT__
            mmi_usb_set_background_still(MMI_TRUE);
        #endif 

            if (mmi_bootup_is_before_power_on() == MMI_TRUE)
            {
                PRINT_INFORMATION(("[DevMngr-PMIC] CHARGER OUT before power on indication"));
            }
            else
            {
                StopLEDPatternBatteryWarning();
                if (g_charbat_context.PowerOnCharger &&
                    mmi_alm_is_in_alarm() == 0 && g_pwr_context.PowerOnMode != POWER_ON_USB)
                {
                    Message.oslSrcId = MOD_MMI;
                    Message.oslDestId = MOD_L4C;
                    Message.oslMsgId = MSG_ID_MMI_EQ_POWER_OFF_REQ;
                    Message.oslDataPtr = NULL;
                    Message.oslPeerBuffPtr = NULL;
                    OslMsgSendExtQueue(&Message);
                }
                else
                {
                    if (mmi_bootup_is_in_power_on_period() == MMI_FALSE)
                    {
                        TurnOnBacklight(1);
                    #ifdef __USB_IN_NORMAL_MODE__
                        /* check is in mass storage mode */
                        if (!mmi_usb_is_in_mass_storage_mode() &&
                            (GetActiveScreenId() != POPUP_SCREENID))
                    #endif /* __USB_IN_NORMAL_MODE__ */                        
                        {
                            /* not in mass storage, can show the plug-out prompt */                        
                        BatteryIndicationPopup(string_id);
                        }
                        DeleteScreenIfPresent(SCR_CHARGER_POWER_ON);
                        StopLEDPatternCharging();
                    }

                    IdleScreenChargerDisconnected();
                    // wangbei add start 20071010
                    #ifdef __NEW_STATUS_ICONS_STYLE__
                    draw_submenu_statusicons();
                    #endif
                  // wangbei add end

                    if (g_charbat_context.ChargingAbnormal)
                    {
                        g_charbat_context.ChargingAbnormal = 0;
                    }

                }
            }
            g_charbat_context.PowerOnCharger = 0;

            break;
        }

        case PMIC_CHARGE_COMPLETE:  /* battery full charged. */
        {
        #ifndef __MTK_TARGET__
            g_charbat_context.chargerLevel = BATTERY_LEVEL_3;
        #endif 

            if (mmi_bootup_is_before_power_on() == MMI_TRUE)
            {
                BatteryStatusIndication(BATTERY_LEVEL_3);
            }
            else
            {
                if (g_charbat_context.PowerOnCharger)
                {
                    /* To prevent reentrence of charging complete screen */
                    if (g_charbat_context.ChargingComplete == 0 && (AlmIsRTCPwron() == 0))
                    {
                        g_charbat_context.ChargingComplete = 1;

                    #ifdef __MMI_USB_SUPPORT__
                        if (g_pwr_context.PowerOnMode == POWER_ON_USB)
                        {
                            ShowUsbChgCmpltScr();
                        }
                        else
                    #endif /* __MMI_USB_SUPPORT__ */ 
                        {
                            ShowChargingCompleteScr();
                            StartLEDPatternFullCharging();
                            HideStatusIcon(STATUS_ICON_SUBLCD_BATTERY_STRENGTH);
                            ShowStatusIcon(STATUS_ICON_SUBLCD_BATTERY_STRENGTH);
                            ChangeStatusIconLevel(STATUS_ICON_BATTERY_STRENGTH, 100);
                            ChangeStatusIconLevel(STATUS_ICON_SUBLCD_BATTERY_STRENGTH, 100);
                            UpdateStatusIcons();
                             // wangbei add start 20071010
                             #ifdef __NEW_STATUS_ICONS_STYLE__
                            draw_submenu_statusicons();
                             #endif
                           // wangbei add end
                        }
                    }
                }
                /* Message for Power off Device;Deepali */
                else
                {
                #ifdef __MMI_LED_POWERON_CHARGEFULL__
                    g_charbat_context.ChargingComplete = 1;
                    StartLEDPatternFullCharging();
                #endif /* __MMI_LED_POWERON_CHARGEFULL__ */ 
                    IdleScreenBatteryFullCharged();
                }
            }
            break;
        }

        case PMIC_VBAT_STATUS:
        {
        #ifndef __MTK_TARGET__
            g_charbat_context.chargerLevel = p->battery_voltage;
        #endif 

            BatteryStatusLowBatteryHandler(p->battery_voltage);
            BatteryStatusIndication(p->battery_voltage);
            break;
        }

        case PMIC_INVALID_BATTERY:
            ChargingAbnormalHandler(STR_INVALID_BATTERY);
            break;

        case PMIC_OVERBATTEMP:
            ChargingAbnormalHandler(STR_OVER_TEMP_BATTERY);
            break;

        case PMIC_OVERVOLPROTECT:
            ChargingAbnormalHandler(STR_OVER_VOLTAGE_BATTERY);
            break;

        case PMIC_OVERCHARGECURRENT:
            ChargingAbnormalHandler(STR_OVER_CURRENT_BATTERY);
            break;

        case PMIC_LOWBATTEMP:
            ChargingAbnormalHandler(STR_LOW_TEMP_BATTERY);
            break;

        case PMIC_CHARGING_TIMEOUT:
            ChargingAbnormalHandler(STR_CHARGING_TIMEOUT);
            break;

        case PMIC_INVALID_CHARGER:
            ChargingAbnormalHandler(STR_INVALID_CHARGER);
            break;
   //wangbei add start 20070709
   #ifdef __CTA_CHARGER_CHECK__
//NicoLin add for CTA charger check 20070705
       case PMIC_WARNNING_CHARGER:
            ChargingAbnormalHandler(STR_WARNNING_CHARGER);
            break;
//NicoLin add end  
#endif
// wangbei add end

        case PMIC_LOWCHARGECURRENT:
            ChargingAbnormalHandler(STR_CHARGE_BAD_CONTACT);
            break;

        case PMIC_CHARGE_BAD_CONTACT:
            ChargingAbnormalHandler(STR_CHARGE_BAD_CONTACT);
            break;

        case PMIC_BATTERY_BAD_CONTACT:
            ChargingAbnormalHandler(STR_BATTERY_BAD_CONTACT);
            break;

        default:
            break;
    }

    /* Shall reset this flag in the end of msg handler func */
    SetInterruptPopupDisplay(POPUP_ALL_ON);
}


/*****************************************************************************
 * FUNCTION
 *  LowBatteryCommonAction
 * DESCRIPTION
 *  Handles the common action for low battery.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void LowBatteryCommonAction(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (mmi_bootup_is_in_power_on_period() == MMI_TRUE)
    {
        /* Reset low battery alarm counter,  low battery will alert right after finish power on procedure  */
        RESET_LOW_BATTERY_ALARM_CNT();
    }
    else
    {
        if (!g_charbat_context.isChargerConnected && batteryLowCount >= lowBatteryAlarmThreshold)
        {
            batteryLowCount = 0;
            BatteryIndicationPopup(STR_LOW_BATTERY);
            StartLEDPatternBatteryLow();
            ChgrPlayLowBatTone();
            BatteryStatusIndication(BATTERY_LOW_WARNING);
            PRINT_INFORMATION(("[DevMngr-PMIC] PMIC_LOW_BATTERY"));
        }

        if (GetTotalCallCount() > 0 && g_charbat_context.LowBatteryTxProhibitFlag)
        {
            g_charbat_context.LowBatteryCutOffCallCnt++;

            if (g_charbat_context.LowBatteryCutOffCallCnt >= LBAT_CALLDROP_CNT)
            {
                g_charbat_context.LowBatteryCutOffCallCnt = 0;
                DeInitCM();
            }
        }
        else
        {
            g_charbat_context.LowBatteryCutOffCallCnt = 0;
        }
    }

    g_charbat_context.LowBatteryFlag = 1;   /* for led pattern history */
    batteryLowCount++;
}


/*****************************************************************************
 * FUNCTION
 *  BatteryStatusLowBatteryHandler
 * DESCRIPTION
 *  his function handle low battery case.
 * PARAMETERS
 *  battery_voltage     [IN]        Battery level
 * RETURNS
 *  void
 *****************************************************************************/
void BatteryStatusLowBatteryHandler(U8 battery_voltage)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef MMI_ON_HARDWARE_P
    kal_prompt_trace(
        MOD_MMI,
        "=LOWBAT=[Thre %d] [Cnt %d] [LBflag %d] [Txflag %d]",
        lowBatteryAlarmThreshold,
        batteryLowCount,
        g_charbat_context.LowBatteryFlag,
        g_charbat_context.LowBatteryTxProhibitFlag);
#endif /* MMI_ON_HARDWARE_P */ 
    switch (battery_voltage)
    {
            /*  
             * 1. After power on animation, will check the battery level again, if too low, will shutdown as well.
             * 2. When charger connected, shall ignore low battery indication  
             */
        case BATTERY_LOW_POWEROFF:  /* shutdown bcos of low battery */
        {
            if (!g_charbat_context.isChargerConnected && mmi_bootup_is_in_power_on_period() == MMI_FALSE)
            {
                PRINT_INFORMATION(("[DevMngr-PMIC] LOW_BATTERY_POWER_OFF"));
                ShowLowPowerShutdownScr();
            }
            break;
        }

        case BATTERY_LOW_TX_PROHIBIT:
        {
            if (g_charbat_context.LowBatteryTxProhibitFlag == 0)
            {
                /* Battery level changer, Change alert Threshold */
                g_charbat_context.LowBatteryTxProhibitFlag = 1; /* BATTERY_LOW_TX_PROHIBIT is a kind of low battery indication */

                if (GetTotalCallCount() == 0)
                {
                    SET_LOW_BATTERY_ALARM_THRESHOLD(LBAT_IDLE_DURCNT_PROHIBIT);
                    RESET_LOW_BATTERY_ALARM_CNT();
                }
                else
                {
                    SET_LOW_BATTERY_ALARM_THRESHOLD(LBAT_TALK_DURCNT_PROHIBIT);
                    RESET_LOW_BATTERY_ALARM_CNT();
                }
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -