fieldtest.c

来自「是一个手机功能的模拟程序」· C语言 代码 · 共 2,278 行 · 第 1/5 页

C
2,278
字号
        
 $Returns:		

 $Arguments:	
                
*******************************************************************************/
static void LayeroneParaTwo_DialogCB(T_MFW_HND win, USHORT e,  SHORT identifier,
                                     void *parameter)
{   
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    tSpecialMode* data = (tSpecialMode*) win_data->user;
    //int WDTcounter,SWRcounter,HWRcounter;
    int redLED,greenLED,backlightLED,LCD,vibrator,MIC,Speaker;
    U16 voltage;

    TRACE_FUNCTION("LayeroneParaTwo_DialogCB()");

    switch( e )
    {  //when window first created
    case LAYERONEPARATWO_INIT:
        {   
            dspl_ClearAll();

            //redLED=Red_Status();
            greenLED=Green_Status();
            backlightLED=Backlight_Status();
            //LCD=LCD_Status();
            //vibrator=Vibrator_Status();
            
            #ifdef _M188_
            voltage=GetBatteryVoltageBySpi();
            #else
            voltage=1;
            #endif			

            /* 2004/03/02 sunsj modify for display area */
            //sprintf(data->buffer,"redLED:%d",redLED);
            //dspl_TextOut(0, 0, 0, (char*)data->buffer);

            sprintf(data->buffer,"greenLED:%d",greenLED);
            dspl_TextOut(0, 13, 0, (char*)data->buffer);

            sprintf(data->buffer,"backlightLED:%d",backlightLED);
            dspl_TextOut(0, 26, 0, (char*)data->buffer);

            //sprintf(data->buffer,"LCD:%d",LCD);
            //dspl_TextOut(0, 39, 0, (char*)data->buffer);

            //sprintf(data->buffer,"vibrator:%d",vibrator);
            //dspl_TextOut(0, 52, 0, (char*)data->buffer);

            //sprintf(data->buffer,"voltage:%d",voltage);
            //dspl_TextOut(0, 65, 0, (char*)data->buffer);
            
            sprintf(data->buffer,"voltage:%d",voltage);
            dspl_TextOut(0, 39, 0, (char*)data->buffer);
        }
        break;

    default:
        {
            TRACE_EVENT("LayeroneParaTwo_DialogCB(): Unknown Event");
        }
        break;

    }

}

static void LayeroneParaTwoCB (MfwEvt e, MfwKbd *k)
{
    T_MFW_HND       win  = mfw_parent (mfw_header());
    T_MFW_WIN       *win_data   = ( (T_MFW_HDR *) win )->data;
    tSpecialMode*data       = (tSpecialMode*) win_data->user;   


    TRACE_FUNCTION("ShowVerionCB()");


    LayeroneParaTwo_destroy(data->win); //ganchh modified

}

/*******************************************************************************

 $Function:    	LayeroneParaTwo_destroy

 $Description:	Destroys the dialog
        
 $Returns:		

 $Arguments:	
                
*******************************************************************************/
void LayeroneParaTwo_destroy(MfwHnd own_window)
{
    T_MFW_WIN * win_data;

    tSpecialMode* data = NULL;

    if( own_window )



        win_data = ((T_MFW_HDR *)own_window)->data;
    if( win_data != NULL )
        data = (tSpecialMode*)win_data->user;

    if( data )
    {
        TRACE_EVENT ("LayeroneParaTwo_destroy()");

        win_delete (data->win);
        // Free Memory
        FREE_MEMORY ((void *)data, sizeof (tSpecialMode));

    }
    else
    {
        TRACE_EVENT ("LayeroneParaTwo_destroy() called twice");
    }
}

int LayeroneParaThreeStart(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND     parent_window   = mfwParent( mfw_header() );
    T_MFW_HND           win           = LayeroneParaThree_create(parent_window);
    TRACE_FUNCTION("LayeroneParaThreeStart()");
    //#ifdef _DAIENABLE_
    //  DAIsignalEnable();  //enable the DAI
    //#endif
    if( win NEQ NULL )
    {
        SEND_EVENT (win, LAYERONEPARATHREE_INIT, 0, 0);
    }

    return 0;


}



static T_MFW_HND LayeroneParaThree_create(MfwHnd parent_window)
{
    tSpecialMode* data = (tSpecialMode*)ALLOC_MEMORY (sizeof (tSpecialMode));
    T_MFW_WIN  * win;

    if( data EQ NULL )
    {
        return NULL;
    }

    // Create window handler
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
    if( data->win EQ NULL )
    {
        FREE_MEMORY( (void *) data, sizeof( tSpecialMode ) );
        return NULL;
    }
    // connect the dialog data to the MFW-window
    data->mmi_control.dialog = (T_DIALOG_FUNC)LayeroneParaThree_DialogCB;
    data->mmi_control.data   = data;
    win                      = ((T_MFW_HDR *)data->win)->data;
    win->user                = (void *)data;
    data->parent_win         = parent_window;
    data->kbd=kbdCreate(data->win,KEY_ALL,(MfwCb)LayeroneParaThreeCB);
    return data->win;
}


/*******************************************************************************

 $Function:    	LayeroneParaTwo_DialogCB

 $Description:	CallBack Function
        
 $Returns:		

 $Arguments:	
                
*******************************************************************************/
static void LayeroneParaThree_DialogCB(T_MFW_HND win, USHORT e,  SHORT identifier,
                                       void *parameter)
{   
    T_MFW_WIN           *win_data   = ( (T_MFW_HDR *) win )->data;
    tSpecialMode* data = (tSpecialMode*) win_data->user;
    int WDTcounter,SWRcounter,HWRcounter;
    char reason[20];

    TRACE_FUNCTION("LayeroneParaThree_DialogCB()");

    switch( e )
    {  //when window first created
    case LAYERONEPARATWO_INIT:
        {   
            dspl_ClearAll();
            //dspl_Clear(0, 0, 120, 160);
            WDTcounter=FFS_FieldTest.WDTCounter;
            SWRcounter=FFS_FieldTest.SoftWareResetCounter;
            HWRcounter=FFS_FieldTest.HardWareResetCounter;
            strcpy(reason,FFS_FieldTest.ResetReason);

            /*
            sprintf(data->buffer,"sleep-mode:\n%d\n",a/2);
            dspl_TextOut(0, 0, 0, (char*)data->buffer);
            
            sprintf(data->buffer,"batt-abc:%d\n",b);
            dspl_TextOut(0, 16, 0, (char*)data->buffer);
            */
            /* 2004/03/02 sunsj modify for display area */
            sprintf(data->buffer,"WDT counter:%d\n",WDTcounter);
            dspl_TextOut(0, 13, 0, (char*)data->buffer);

            sprintf(data->buffer,"SWR counter:%d\n",SWRcounter);    //SWR softeare reset
            dspl_TextOut(0, 26, 0, (char*)data->buffer);

            sprintf(data->buffer,"HWR counter:%d",HWRcounter);
            dspl_TextOut(0, 39, 0, (char*)data->buffer);

            sprintf(data->buffer,"reason:%s",reason);
            dspl_TextOut(0, 52, 0, (char*)data->buffer);


        }
        break;

    default:
        {
            TRACE_EVENT("LayeroneParaThree_DialogCB(): Unknown Event");
        }
        break;

    }

}

static void LayeroneParaThreeCB (MfwEvt e, MfwKbd *k)
{
    T_MFW_HND       win  = mfw_parent (mfw_header());
    T_MFW_WIN       *win_data   = ( (T_MFW_HDR *) win )->data;
    tSpecialMode*data       = (tSpecialMode*) win_data->user;   


    TRACE_FUNCTION("LayeroneParaThreeCB()");


    LayeroneParaThree_destroy(data->win); //ganchh modified

}

/*******************************************************************************

 $Function:    	LayeroneParaThree_destroy

 $Description:	Destroys the dialog
        
 $Returns:		

 $Arguments:	
                
*******************************************************************************/
void LayeroneParaThree_destroy(MfwHnd own_window)
{
    T_MFW_WIN * win_data;

    tSpecialMode* data = NULL;

    if( own_window )



        win_data = ((T_MFW_HDR *)own_window)->data;
    if( win_data != NULL )
        data = (tSpecialMode*)win_data->user;

    if( data )
    {
        TRACE_EVENT ("LayeroneParaThree_destroy()");

        win_delete (data->win);
        // Free Memory
        FREE_MEMORY ((void *)data, sizeof (tSpecialMode));

    }
    else
    {
        TRACE_EVENT ("LayeroneParaThree_destroy() called twice");
    }
}

void FieldTestInit()
{
    TRACE_EVENT("FieldTestInit");
    memset(&ResetRelatedPara,0,sizeof(ModeCheck_Parameter)); //ganchh, reset all the value
    //begin xzy add for WDTCounter 0123;
    flash_FTread();
    RAMValue=(USHORT *)RAMDeafultAdress;
    //*RAMValue=RAMDeafultValue1;
    //memset((void *)0x7FFFD,RAMDeafultValue1,1);
#if 0
    sprintf(temp,"xzy,WDTValue:%d\n",FFS_FieldTest.WDTValue);
    MmiTrace(temp);

    sprintf(temp,"xzy,WDTCounter:%d\n",FFS_FieldTest.WDTCounter);
    MmiTrace(temp);

    sprintf(temp,"xzy,SoftWareResetCounter:%d\n",FFS_FieldTest.SoftWareResetCounter);
    MmiTrace(temp);

    sprintf(temp,"xzy,HardWareResetCounter:%d\n",FFS_FieldTest.HardWareResetCounter);
    MmiTrace(temp);

    sprintf(temp,"xzy,RAMValue:%d\n",(*RAMValue));
    MmiTrace(temp);
#endif
    if( FFS_FieldTest.WDTValue!=WDTDeafultValue2 )
    {
        FFS_FieldTest.WDTCounter++;


        if( (*RAMValue)==RAMDeafultValue1 )
        {
            ResetRelatedPara.PhoneIsResetedFlag=1;
            FFS_FieldTest.SoftWareResetCounter++;
            strcpy(FFS_FieldTest.ResetReason,"SoftWare Reset");
        }
        else
        {
            FFS_FieldTest.HardWareResetCounter++;
            strcpy(FFS_FieldTest.ResetReason,"LostPower Reset");
        }

    }
    else
    {
        if( FFS_FieldTest.LowVoltageValue==LowVoltageDeafultValue2 )
        {
            strcpy(FFS_FieldTest.ResetReason,"Low Voltage shutdown");
        }
        else
        {
            strcpy(FFS_FieldTest.ResetReason,"Normal shutdown");
        }
    }

    FFS_FieldTest.WDTValue=WDTDeafultValue1;
    flash_FTwrite();

    //TRACE_EVENT("SetRamValue");
    //*((USHORT *)RAMDeafultAdress)=(USHORT)RAMDeafultValue1;    //ganchunhui move to after begin to login the network
#if 0
    MmiTrace("read value");
    sprintf(temp,"xzy,RAMValue:%d\n",(*RAMValue));
    MmiTrace(temp);

    sprintf(temp,"xzy,WDTCounter:%d\n",FFS_FieldTest.WDTCounter);
    MmiTrace(temp);
#endif

}

void FieldTestExit()
{
    //begin xzy add for WDTCounter 0123;
    FFS_FieldTest.WDTValue=WDTDeafultValue2;
    //memset((void *)0x7FFFD,RAMDeafultValue1,1);

    //*RAMValue=RAMDeafultValue2;
#if 0
    sprintf(temp,"xzy,WDTValue%d\n",FFS_FieldTest.WDTValue);
    MmiTrace(temp);

    sprintf(temp,"xzy,RAMValue%d\n",(*RAMValue));
    MmiTrace(temp);
#endif
    flash_FTwrite();
    //end xzy add for WDTCounter 0123;

}

void FieldTestLowPowerExit()
{
    TRACE_EVENT("LowPowerExit");

    //begin xzy add for WDTCounter 0123;
    FFS_FieldTest.WDTValue=WDTDeafultValue2;
    FFS_FieldTest.LowVoltageValue=LowVoltageDeafultValue2;
    //memset((void *)0x7FFFD,RAMDeafultValue1,1);

    //*RAMValue=RAMDeafultValue2;

#if 0
    sprintf(temp,"xzy,WDTValue%d\n",FFS_FieldTest.WDTValue);
    MmiTrace(temp);

    sprintf(temp,"xzy,RAMValue%d\n",(*RAMValue));
    MmiTrace(temp);
#endif
    flash_FTwrite();
    //end xzy add for WDTCounter 0123;

}

#if 0
void SetRamValue()
{
    TRACE_EVENT("SetRamValue");
    *((USHORT *)RAMDeafultAdress)=RAMDeafultValue1;
    sprintf(temp,"xzy,RAMValue:%d\n",(*((USHORT *)RAMDeafultAdress)));
    MmiTrace(temp);

}

USHORT ReadRamValue()
{
    return(*RAMValue);
}

#endif
//begin xzy added 0126 for test command
int TestCommand(MfwMnu* m, MfwMnuItem* i)
{
    T_MFW_HND     parent_window   = mfwParent( mfw_header() );
    T_MFW_HND           win           = TestCommand_create(parent_window);
    TRACE_FUNCTION("TestCommand()");

    if( win NEQ NULL )
    {
        SEND_EVENT (win, TESTCOMMAND_INIT, 0, 0);
    }

    return 0;

}

static T_MFW_HND TestCommand_create(MfwHnd parent_window)
{
    tSpecialMode* data = (tSpecialMode*)ALLOC_MEMORY (sizeof (tSpecialMode));
    T_MFW_WIN  * win;

    if( data EQ NULL )
    {
        return NULL;
    }

    // Create window handler
    data->win = win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
    if( data->win EQ NULL )
    {
        FREE_MEMORY( (void *) data, sizeof( tSpecialMode ) );
        return NULL;
    }
    // connect the dialog data to the MFW-window
    data->mmi_control.dialog = (T_DIALOG_FUNC)TestCommand_DialogCB;
    data->mmi_control.data   = data;

⌨️ 快捷键说明

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