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

📄 mmicharging.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:

            //2004-03-18 Sunny modify
            if( (OlderCurrentBatPicNum)==4 )
            {
                //2004-03-18 Sunny add
                ChargeOffset=(ChargeOffset+1)%(5-currenticon);
                GetBatPicnum();
                BlinkBatPicnum=CurrentBatPicNum;
                //2004-03-18 Sunny add end
            }
            else
            {
                ChargeOffset=(ChargeOffset+1)%(5-currenticon);
            }   
            //2004-03-18 Sunny modify end

            timStart(data->tim);
            IsBlinktimerRun=1;
        }
    }
    else
    {
        while( AutoPowerOn()!=0 );
        IsBlinktimerRun=0;
        ChargeOffset=0;
        SEND_EVENT( data->win, ChargeWin_DESTROY, 0, 0 );   
        data->win=0;
        //write the WDT data to eeprom indicating turned off normally
        SwitchOffMobile();
    }

    return MFW_EVENT_CONSUMED;

}

static int ChargeWinKbdCB( MfwEvt e, MfwKbd *k )
{
#if 0
    T_MFW_HND       win         = mfwParent( mfw_header() );
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *) win)->data;
    t_ChargeWin     *data       = (t_ChargeWin *) win_data->user;

#endif
    switch( k->code )
    {
/* zhq, 2004/07/05, modified for we use long press power key to switch on. 
    case KCD_HUP:
*/
    case KCD_POWER:
        SwitchOnFromChargingWin();
        StartPlayByReason(POWERONPLAY, 0);
        /* 2004/07/05 sunsj modify */
        NotCharingMode = TRUE;
        drawOuterIdle();
        break;
    case KCD_ABC:
        /* 2004/04/02 sunsj modify */
        if( pwr_Status.ChargingVirtualKeyFlag )
        {
            //LedLightnessAdjust(200); MI18800000446 WYJ remove
            timStart(gtVibator);
            chargerbatEvent();
        }
        break;

    default:
        //LCD_ON(); MI18800000446 WYJ remove
        lcdindex=0;
        break;

    }
    return MFW_EVENT_CONSUMED;
}


void SwitchOnFromChargingWin(void){
    T_MFW_HND       win         = mfwParent( mfw_header() );
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *) win)->data;
    t_ChargeWin     *data       = (t_ChargeWin *) win_data->user;

    timStop(data->tim);
    //timDelete(data->tim);/*2003/12/16, wangyan modify*/
    IsBlinktimerRun=0;

    SEND_EVENT( win, ChargeWin_DESTROY, 0, 0 );
    win=0;

    ChargeOffset=0;
    //	startExec(PhoneInit,0);
    AniandSerachon();
}

// -----------------------------------------------------------
// Function		:  SetChargingIcon
// Description	:  Draw battery icon for charging window
// Input		: 
// Output		: 
// Notes		: 
// Last Modified: 
// -------------------------------------------------------------
//
void  SetChargingIcon( U8 BatteryCount)
{
    //2004-04-12 Sunny add
    MfwHnd edt = idle_get_edt_window();
    if( edt )
    {
        return;
    }
    //2004-04-12 Sunny add end

    /*2003/11/13,talcon modify*/
    if( BatteryCount > 4 ) BatteryCount = 0;
    /* 2004/06 sunsj modify for picture manage */
    //drawIconByIcnAttr((MfwIcnAttr*)&batt_Attr[BatteryCount],(MfwIcnAttr*)&battMask_Attr[BatteryCount]);
    DRAW_ICON_SEL_MASK(ICON_IDLEBATTERY, BatteryCount);
}

/*2003/12/22,talcon add for outerIdle*/
void  SetChargingIcon_Sub( U8 BatteryCount)
{
    if( BatteryCount > 4 ) BatteryCount = 0;

    /* 2004/06 sunsj modify for picture manage */
    //drawIconByIcnAttr((MfwIcnAttr*)&batt_Attr[BatteryCount+iconBattMax],(MfwIcnAttr*)&battMask_Attr[BatteryCount+iconBattMax]);
   // DRAW_ICON_SEL_MASK(ICON_IDLEBATTERY, BatteryCount+iconBattMax);
	 DRAW_ICON_SEL_MASK(ICON_OUTIDLEBATTERY, BatteryCount);//shiheng 0805
	
}

/************************************************************************************************
    $History:	2004-04-13 Sunny modify
************************************************************************************************/
void  SetOffChargingIcon( U8 BatteryCount)
{
    /* 2004/06/21 yhf modify */
    int i;
#if (MAIN_LCD_SIZE==4)
	if( winIsFocussed(g_ChargingWin) )
    {
        dspl_Clear(32,92,95,129);
        /* 2004/06 sunsj modify for picture manage */
        //DRAW_ICON_SEL(ICON_OFFCHARGING, 0);
        /* 2004/07/03 yhf modify */
        DRAW_ICON_SEL_MASK_OWN(ICON_OFFCHARGING,0);
        //dspl_BitBlt(32, 92, 63, 37, 0, (void*)offcharge_progress, 0);
        for( i=0;i<BatteryCount;i++ )
        {
            DRAW_ICON_ATTRIBUTE(ICON_OFFCHARGING, 79-i*13, 94, 2, ICON_LOCATION);
            //dspl_BitBlt(79-i*13, 93, 12, 33, 0, (void*)offcharge_play, 0);
        }
    }
#elif (MAIN_LCD_SIZE==3)
	DRAW_ICON(ICON_OFFBATTERYBKG);
	
	   DRAW_ICON_SEL(ICON_OFFCHARGING,BatteryCount-1);
	
#endif
}

// Function		: ALPollingTick
// Description	: Polls various devices based on a number of seconds. The 
//                devices are: 
//                  The headset, every second Charging status 
//                  The battery, every second if not charging
//                  It also forces an update of the NVM every 
//                  ten minutes (60*5 = 300 secs)
// Input		: 
// Output		: 
// Notes		: Last modified for batt removal and low volt detection
// Last Modified: Amir K. 11Aug
// --------------------------------------------------------------------------
//
void  ALPollingTick( void )
{
    static CARKITSTATE CarkitState=NOTHING,LastCarkitState=NOTHING;
    static UBYTE  ChargerIn=0;
    static UBYTE    inidx=0;

    TRACE_EVENT("ALPollingTick()");
    // ----------------------------
    // is Charger  IN
    // ----------------------------
    /*	if(pwr_Status.charger_plugged==1){//if charger in
            if ( GlobalIconStatus & GlobalBatteryIconFlag ){//if  battery icon is shown
                if((pwr_Status.charging_state==1)||(pwr_Status.charging_state==2)){//if is charging
                    if(currenticon>0)
                        currenticon-=1;
                    SetChargingIcon( currenticon +ChargeOffset );
                    ChargeOffset=(ChargeOffset+1)%(5-currenticon);
                }else{//if is end of charging
                    SetChargingIcon( currenticon );
                }
            }
        }else{//charger not in 
            if ( GlobalIconStatus & GlobalBatteryIconFlag )
                SetChargingIcon( currenticon );
        }*/
    if( currenticon<=BlinkBatPicnum )
    {  ///zym modified for obviate to display between two and three
        currenticon=BlinkBatPicnum;
    }

    //if(currenticon>0)
    //2004-03-17 Sunny modified
    if( currenticon==4 )
        currenticon-=1;
    currenticon=0;//2004-03-21 Sunny add.
    oldChargeIcon = currenticon +ChargeOffset ;
    OlderCurrentBatPicNum = oldChargeIcon;
    SetChargingIcon( currenticon +ChargeOffset );
    DisplayOuterIdleCharge(currenticon +ChargeOffset);//2004-03-21 Sunny add.
    //if(((currenticon +ChargeOffset)==4)&&(bat_voltage_info.batchanged))

    //2004-03-18 Sunny modify
    if( (currenticon +ChargeOffset)==4 )   ///zym modified for low voltage warning
    {
        //2004-03-17 Sunny add
        ChargeOffset=(ChargeOffset+1)%(5-currenticon);
        GetBatPicnum();
        BlinkBatPicnum=CurrentBatPicNum;
        //2004-03-17 Sunny add end
    }
    else
    {
        ChargeOffset=(ChargeOffset+1)%(5-currenticon);
    }
    //2004-03-18 Sunny modify end
} // ALPollingTick

static void chargerbatEvent(void)
{
    T_MFW_HND       win         = mfwParent( mfw_header() );
    T_MFW_WIN       *win_data   = ((T_MFW_HDR *) win)->data;
    t_ChargeWin     *data       = (t_ChargeWin *) win_data->user;

    pwr_Status.ChargingVirtualKeyFlag=0;

    if( pwr_Status.charger_plugged==0 )
    {
        while( AutoPowerOn()!=0 );
        SEND_EVENT( data->win, ChargeWin_DESTROY, 0, 0 );
        data->win=0;
        //write the WDT data to eeprom indicating turned off normally
        SwitchOffMobile();
        return;
    }

    GetBatPicnum();

    if( pwr_Status.charging_state==0 )
    {// full
        if( IsBlinktimerRun )
        {
            timStop(data->tim);
            IsBlinktimerRun=0;
        }
        //PROMPT(28, 48 ,0,TxtChargComplete);
        DisplayChargingWordInfo(TxtChargComplete);
/* zhq, 2004/07/09, added for when charging complete, we synchronize sub screen's
display text . */
		drawOuterIdle();
        SetOffChargingIcon( 4 );
        timStart(data->tim);

    }
    else
    {// if((pwr_Status.charging_state==1)||(pwr_Status.charging_state==2)||(pwr_Status.charging_state==100)){//charger in and not full
        //PROMPT(28,48,0,TxtCharging);
        DisplayChargingWordInfo(TxtCharging);
        if( IsBlinktimerRun==0 )
        {
            BlinkBatPicnum=CurrentBatPicNum;
            timStart(data->tim);
            IsBlinktimerRun=1;
        }
    }

}

/************************************************************************/
/* 2004/07/15 sunsj modify                                              */
/************************************************************************/
#if(MAIN_LCD_SIZE==4)
void DisplayChargingWordInfo(int i)
{
	int x = 0;

	x = (96-get_StringWidth(MmiRsrcGetText(i)))/2;
    if( winIsFocussed(g_ChargingWin) )
	{
		PROMPT(x, 48 ,0,i);
	}
}
#elif(MAIN_LCD_SIZE==3)
void DisplayChargingWordInfo(int i)
{
	int x = 0;

	x = (128-get_StringWidth(MmiRsrcGetText(i)))/2;
    if( winIsFocussed(g_ChargingWin) )
	{
		PROMPT(x, 0 ,0,i);
	}
}

#endif

void LowVoltageWarningDialogCB(T_MFW_HND win, USHORT identifier, UBYTE reason)
{
    //driverFlag &= 0xFFFFFFEF;
    lowVoltageWin = NULL;
}

void LowVoltageWarningDialog(void){
    //T_MFW_HND win =  mfwParent(mfw_header());
    T_DISPLAY_DATA display_info;

    //if(win) {
    //if(!(driverFlag & 0x010)){
    if( !lowVoltageWin )
    {
        dialog_info_init(&display_info);
        display_info.KeyEvents      = KEY_ALL&(~KEY_F4);
        display_info.TextId         = TxtNeedCharging;
        display_info.TextId2        = TxtNull;
        display_info.TextString     = '\0';
        display_info.TextString2    = '\0';
        display_info.LeftSoftKey    = TxtNull;
        display_info.RightSoftKey   = TxtNull;
        display_info.Time           = FOREVER;
        display_info.iconindex  = REMIND_NORECORD;
        display_info.Identifier=LOW_VOLTAGE_WARNING;
        display_info.Callback       =(T_VOID_FUNC) LowVoltageWarningDialogCB;

        //driverFlag |= 0x010;

        //2004-04-01 Sunny add for outer screen
        setOuterState(OUTERIDLESTATE_LOWVOLTAGE, 1, 0);
        //2004-04-01 Sunny add end

        lowVoltageWin = info_dialog( 0, &display_info );

        StartPlayByReason(NEEDCHARGE,0);
    }
    else
        StartPlayByReason(NEEDCHARGE,0);

    //}
    //else{


    //}
    return ;
}

/*************************************************************************************************
$Name:			LowVoltageSwitchOffDialog
$Author:		Sunny
$Date:			2004-04-01
$Description:	Remind the switch off info when the voltage down to switch off
*************************************************************************************************/

void LowVoltageSwitchOffDialog(void){

    T_DISPLAY_DATA display_info;    

    if( !lowVoltageWin )
    {
        dialog_info_init(&display_info);
        display_info.KeyEvents      = KEY_ALL&(~KEY_F4);
        display_info.TextId         = TxtNoPower;
        display_info.TextId2        = TxtSwitchOff;
        display_info.TextString     = '\0';
        display_info.TextString2    = '\0';
        display_info.LeftSoftKey    = TxtNull;
        display_info.RightSoftKey   = TxtNull;
        display_info.Time           = FOREVER;
        display_info.iconindex  = REMIND_NORECORD;
        display_info.Identifier=LOW_VOLTAGE_WARNING;
        display_info.Callback       =(T_VOID_FUNC) LowVoltageWarningDialogCB;       

        setOuterState(OUTERIDLESTATE_LOWVOLTAGESWITCHOFF, 1, 0);        

        lowVoltageWin = info_dialog( 0, &display_info );    
    }

    return ;
}

⌨️ 快捷键说明

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