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

📄 mmicall.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
    //  {0,0,0,(char *)TxtCallTransfer,         0,(MenuFunc)transferExec,      item_flag_none},//MC//zy dont use it temp
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtStartConference,  0,(MenuFunc)startConferenceExec,         item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage,   0,   (MenuFunc)M_callSendNew,   item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice,   0,   (MenuFunc)CallRecord,   item_flag_none},//zy 12/03
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtMemo,    0,   (MenuFunc)memoAdd,   item_flag_none},//gdy add 03/01/07
    /*#ifdef FIELD_TEST_MODE
       {0,0,0,(char*) TxtTestCommand,   0,   (MenuFunc)TestModeStart,   item_flag_none}//xzy add 03/02/12 for testmode
    #endif*//*2003/12/1, wangyan delete*/

};

static const MfwMnuAttr menuCallTwo =
{
    0,
    &menuListArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    menuCallTwoItems,                /* with these items         */
    sizeof(menuCallTwoItems)/sizeof(T_MFW_MNU_ITEM) /* number of items     */
};

//18/12/2001  MC added sms message option
//2004-03-5 Sunny modify for item icon
static T_MFW_MNU_ITEM menuCallConferenceItems[] =
{
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtPrivateCall,  0,(MenuFunc)privateStartAddConferenceExec,  item_flag_none},
    //   {0,0,0,(char *)TxtSwap,         0,(MenuFunc)swapExec,                       item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtEndAll,       0,(MenuFunc)endConferSingleExec,                     item_flag_none},/*zy 2003-03-19 replace endAllExec*/
    //	{0,0,0,(char *)TxtContacts,     0,(MenuFunc)contactsExec,                   item_flag_none},//zy Mobile Innovation 01/08/02 seemed not need
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtHold,         0,(MenuFunc)holdExec,                       item_flag_none},
    //    {0,0,0,(char *)TxtMute,         0,(MenuFunc)muteExec,                       item_flag_none},
    //    {0,0,0,(char *)TxtScratchPad,   0,(MenuFunc)scratchPadExec,                 item_flag_none},
    //    {0,0,0,(char *)TxtMainMenu,     0,(MenuFunc)mainMenuExec,                   item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtAddNewCall,      0,(MenuFunc)addNewCall,      item_flag_none},//zy Mobile Innovation 01/08/02 add new call menu
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage,  0,   (MenuFunc)M_callSendNew,   item_flag_none},
    //     {0,0,0,(char *)TxtEndOne,          0,(MenuFunc)endOneExec,           item_flag_none},//zy 2003-03-04move it zy Mobile Innovation 01/08/02 add end active call
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice,  0,   (MenuFunc)CallRecord,   item_flag_none},//zy 12/03
    {(MfwIcnAttr*)&colist,0,0,(char*)TxtMemo,    0,   (MenuFunc)memoAdd,   item_flag_none},//gdy add 03/01/07
    /*#ifdef FIELD_TEST_MODE
       {0,0,0,(char*) TxtTestCommand,   0,   (MenuFunc)TestModeStart,   item_flag_none}//xzy add 03/02/12 for testmode
    #endif*//*2003/12/1, wangyan delete*/
};

static const MfwMnuAttr menuCallConference =
{
    0,
    &menuListArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    (T_MFW_MNU_ITEM *)menuCallConferenceItems,                /* with these items         */
    sizeof(menuCallConferenceItems)/sizeof(T_MFW_MNU_ITEM) /* number of items     */
};
/****************zy 10/08/2002 add for single conferenceItems needn't hold items******/
//2004-03-5 Sunny modify for item icon
static T_MFW_MNU_ITEM menuCallConferSingleItems[] =
{
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtPrivateCall,  0,(MenuFunc)privateStartAddConferenceExec,  item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtSwap,         0,(MenuFunc)swapExec,                       item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtEndAll,       0,(MenuFunc)endConferSingleExec,                     item_flag_none},
    //  {0,0,0,(char *)TxtAddNewCall,      0,(MenuFunc)addNewCall,      item_flag_none},//zy Mobile Innovation 01/08/02 add new call menu
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtSendMessage,   0,   (MenuFunc)M_callSendNew,   item_flag_none},
    {(MfwIcnAttr*)&colist,0,0,(char *)TxtEndOne,          0,(MenuFunc)endOneExec,           item_flag_none},//zy Mobile Innovation 01/08/02 add end active call
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtRecVoice,   0,   (MenuFunc)CallRecord,   item_flag_none},//zy 12/03
    {(MfwIcnAttr*)&colist,0,0,(char*) TxtMemo,    0,   (MenuFunc)memoAdd,   item_flag_none},//gdy add 03/01/07
    /*#ifdef FIELD_TEST_MODE
       {0,0,0,(char*) TxtTestCommand,   0,   (MenuFunc)TestModeStart,   item_flag_none}//xzy add 03/02/12 for testmode
    #endif*//*2003/12/1, wangyan delete*/
};

static const MfwMnuAttr menuCallConferSingle =
{
    0,
    &menuListArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    (T_MFW_MNU_ITEM *)menuCallConferSingleItems,                /* with these items         */
    sizeof(menuCallConferSingleItems)/sizeof(T_MFW_MNU_ITEM) /* number of items     */
};
/****************end of zy 10/08/2002 add**********************************/
#if 0 /*2003/12/16, wangyan delete*/
static const T_MFW_MNU_ITEM menuDTMFItems [] =
{
    {0,0,0, (char*)TxtSendMessage,  0,(MenuFunc)exeSendMessage,    item_flag_none},
    {0,0,0, (char*)TxtAddNew,       0,(MenuFunc)callExeNameEnter,  item_flag_none}
};



static const T_MFW_MNU_ATTR menuDTMF =
{
    0,
    &menuListArea,
    MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu       */
    -1,                                 /* use default font         */
    (T_MFW_MNU_ITEM *)menuDTMFItems,                      /* with these items         */
    sizeof(menuDTMFItems)/sizeof(T_MFW_MNU_ITEM) /* number of items     */
};
#endif /*2003/12/16, wangyan delete*/


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

          CALL WINDOW. DECLARATION

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



T_call call_data;


void call(T_MFW_HND win, USHORT event, SHORT value, void * parameter);


static int call_win_cb(MfwEvt e, MfwWin *w);
static int call_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_kbd_long_cb (MfwEvt e, MfwKbd *k);


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

          MENU WINDOW. DECLARATION

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

typedef struct
{
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND       win;
    T_MFW_HND       kbd;
    T_MFW_HND       kbd_long;
    T_MFW_HND       menu;
    T_VOID_FUNC     func_cb;
    T_MFW_HND       parent;
    /*
     * internal data
     */
} T_call_menu;


static T_MFW_HND call_menu_create(MfwHnd parent);
static void call_menu_destroy(MfwHnd window);

T_MFW_HND call_menu_start(MfwHnd parent,MfwMnuAttr* menuAttr,T_VOID_FUNC func_cb);

void call_menu (T_MFW_HND win, USHORT event, SHORT value, void * parameter);


static int call_menu_win_cb (MfwEvt e, MfwWin *w);
static int call_menu_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_menu_kbd_long_cb (MfwEvt e, MfwKbd *k);
static int call_menu_mnu_cb (MfwEvt e, MfwMnu *m);



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

          CALL FUNCTIONS. DECLARATION

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

void call_incoming_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_calling_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_ending_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_waiting_answer_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_sending_dtmf_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_menu_end_cb(void);
void call_failtryagain_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
void call_failure_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
static void call_calling_show (USHORT Identifier);
void call_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
/* Marcus: Issue 1057: 21/01/2003: Added the following function prototype
   zy 2003-04-16 checkin
*/
void call_acm_max_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);


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

          DIALLING WINDOW. DECLARATION

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



typedef struct
{
    T_MMI_CONTROL   mmi_control;
    T_MFW_HND win;     // window handle
    T_MFW_HND kbd;
    T_MFW_HND kbd_long;
    T_MFW_HND edt;
    UBYTE mode;
    UBYTE callstatus;
} T_call_scratchpad;




T_MFW_HND call_scratchpad_create(MfwHnd parent);
void call_scratchpad_exit (void);
static int call_scratchpad_kbd_cb (MfwEvt e, MfwKbd *k);
static int call_scratchpad_kbd_long_cb (MfwEvt e, MfwKbd *k);
static int call_scratchpad_win_cb (MfwEvt e, MfwWin *w);

void call_scratchpad (T_MFW_HND win, USHORT event, SHORT value, void * parameter);

T_MFW_HND call_scratchpad_start (T_MFW_HND win_parent,char character,UBYTE mode, UBYTE callstatus);
void StartAutoDtmf(void);

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

                                Private Methods

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

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

 $Function:     callInit

 $Description:  initiates the window

 $Returns:    none

 $Arguments:  parent window

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

void callInit (MfwHnd parent)
{

    //	MMI_TRACE_EVENT(("wangyan callInit"));

    cm_init();
    call_data.cm = cm_create(0, E_CM_ALL_SERVICES, (MfwCb)callCmEvent);
    MMI_TRACE_EVENT(("wangyan callInit call_data.cm=%d",call_data.cm));
    call_data.win = 0;
    call_data.callStatus = CallInactive;
    call_data.win_sms=0;//zy 2003-04-01 just initial smssend=0 at here it means there are a smssend win whereever it be



}


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

 $Function:     callExit

 $Description:  Exits the window

 $Returns:    none

 $Arguments:  none

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


void callExit (void)
{

    MMI_TRACE_EVENT(("wangyan callExit"));
    cm_delete(call_data.win);
    cm_exit();
}




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

 $Function:     callAutoRedialKeyEvent

 $Description:  keyboard event handler

 $Returns:    none

 $Arguments:  typical

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


void callAutoRedialKeyEvent(T_MFW_HND win, USHORT identifier, USHORT reason)
{

    TRACE_FUNCTION("callAutoRedialKeyEvent");

    call_data.win_redial = 0;
    switch( reason )
    {
    case INFO_KCD_LEFT:
        /*
           callSetMode(ViewAutoRedial);
           cm_redial();
        */       
        break;
    case INFO_KCD_HUP:
    case INFO_KCD_RIGHT:
    case INFO_KCD_CLEAR:
    case INFO_KCD_F4:/*2004/4/27, wangyan add*/
        cm_redial_abort();
        callSetMode(ViewConnect);
        /*2004/4/27, wangyan add*/
        if( call_data.win_redial )
        {
            SEND_EVENT(call_data.win_redial,DIALOG_DESTROY,0,0);
            MMI_TRACE_EVENT(("wangyan call_data.win_calling DIALOG_DESTROY"));
            call_data.win_redial = 0;
        }
        /*2004/4/27, wangyan add*/
        break;
    default:
        break;
    }
}



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

 $Function:     callCmEvent

 $Description:  call management event handler

 $Returns:    1, processed, 0 ignored

⌨️ 快捷键说明

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