📄 mmigprs.c
字号:
#endif break; case E_MFW_GPRS_S_EREP: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_EREPG"); #endif break; case E_MFW_GPRS_R_EREP_RJ: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_EREP_RJ"); #endif /* Notify WAP of context deactivation */ #ifdef MMI_WAP_ENABLED AUI_wap_gprs_status(GPRS_CONTEXT_DEACTIVATE); #endif break; case E_MFW_GPRS_R_EREP_ATT: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_EREP_ATT"); #endif /* Attach status has changed, display message as appropriate */ gprs_status = mmiGprsStatus(); if (mmi_gprs->display) { if (gprs_status==GPRS_ATTACHED) textId = TxtAttached; else textId = TxtNotAttached; /* Show result */ mmiGprsResultScreen(win, TxtGPRS, textId); } mmiGprsStatus(); break; case E_MFW_GPRS_R_EREP_ACT: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_EREP_ACT"); #endif /* Notify WAP of context activation */ #ifdef MMI_WAP_ENABLED AUI_wap_gprs_status(GPRS_CONTEXT_ACTIVATE); #endif break; case E_MFW_GPRS_R_EREP_DEACT: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_EREP_DEACT"); #endif /* Notify WAP of context deactivation */ #ifdef MMI_WAP_ENABLED AUI_wap_gprs_status(GPRS_CONTEXT_DEACTIVATE); #endif break; case E_MFW_GPRS_R_EREP_CLASS: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_EREP_CLASS"); #endif break; case E_MFW_GPRS_R_REG: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_REG"); TRACE_EVENT_P1("regState: %d", gprs_data->regState); #endif gprs_status = mmiGprsStatus(); if (mmi_gprs->display) { switch (gprs_status) { case GPRS_ATTACHED:#ifdef MMI_HOMEZONE_ENABLED /* Cell reselection for homezone */ homezoneUpdate(gprs_data->lac, gprs_data->ci);#endif /* Show result */ mmiGprsResultScreen(win, TxtGPRS, TxtAttached); break; case GPRS_OFF:#ifdef MMI_HOMEZONE_ENABLED /* Cell reselection for homezone */ homezoneUpdate(0,0);#endif /* Show result */ mmiGprsResultScreen(win, TxtGPRS, TxtNotAttached); break; case GPRS_SEARCHING: /* not registered, searching */#ifdef MMI_HOMEZONE_ENABLED /* Cell reselection for homezone */ homezoneUpdate(0, 0);#endif mmi_gprs->status = MMI_GPRS_STATUS_ATTACHING; mmiPleaseWait(win, TxtGPRS, TxtSearching); /* SPR#1986 */ break; default: /* Show result */ mmiGprsResultScreen(win, TxtGPRS, TxtError); break; } } break; case E_MFW_GPRS_S_SMSSERV: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_SMSSERV"); #endif /* First display "Using <service>" */ if (mmi_gprs->display) { USHORT TxtId2, TxtId1 = TxtUsing; switch(gprs_data->SMSService) { case CGSMS_SERVICE_GPRS: /* GPRS */ TxtId2 = TxtGPRS; break; case CGSMS_SERVICE_CS: /* circuit switched */ TxtId2 = TxtCSD; break; case CGSMS_SERVICE_GPRS_PREFERRED: /* GPRS preferred */ TxtId2 = TxtGPRSPreferred; break; case CGSMS_SERVICE_CS_PREFERRED: /* circuit switched preferred */ TxtId2 = TxtCSDPreferred; break; default: /* Shouldn't happen, but... */ TxtId1 = TxtFailed; TxtId2 = TxtNull; break; } /* Show result */ mmiGprsResultScreen(win, TxtId1, TxtId2); } mmiGprsStatus(); break; case E_MFW_GPRS_OK: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_OK"); #endif break; case E_MFW_GPRS_ERROR: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_ERROR"); #endif /* First display "GPRS Error" */ if (mmi_gprs->display) { /* Delete please wait window */ mmiPleaseWaitDestroy(); /* Show result */ mmiGprsResultScreen(win, TxtGPRS, TxtFailed); } /* Notify WAP of error */#ifdef MMI_WAP_ENABLED AUI_wap_gprs_status(GPRS_ERROR);#endif break; case E_MFW_GPRS_CONNECT: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_CONNECT"); #endif /* Delete please wait window */ mmiPleaseWaitDestroy(); /* Display "CONNECTED" window */ info_screen(win, TxtGPRS, TxtConnected, NULL); mmiGprsStatus(); break; case E_MFW_GPRS_ERR_CONNECT: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_ERR_CONNECT"); #endif /* First display "GPRS No Answer" */ if (mmi_gprs->display) { /* Show result */ mmiGprsResultScreen(win, TxtGPRS, TxtNoAnswer); } mmiGprsStatus(); break; case E_MFW_GPRS_COUNTER: #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_COUNTER"); #endif /* Add values returned from ACI * to total counter */ mmi_gprs->uplink_counter += (ULONG)(gprs_data->counter.octets_uplink); mmi_gprs->downlink_counter += (ULONG)(gprs_data->counter.octets_downlink); /* Only display counter if user has requested it */ if (mmi_gprs->display) { mmi_gprs->display = FALSE; mmiGprsStatus(); /* Delete please wait window */ mmiPleaseWaitDestroy(); mmiGprsShowCounter(win, mmi_gprs->counter_type); } break; default:#ifdef TRACE_MMIGPRS TRACE_EVENT_P1("GPRSMfwCb: event = %d", event);#endif break; } if (idleIsFocussed()) { /* Update idle screen icons to show any change in GPRS status */ iconsShow(); } else { /* iconsShow calls mmiGprsStatus; if we don't call that, call this on its own */ mmiGprsStatus(); } return TRUE;}/******************************************************************************* $Function: GPRSAttach $Description: Attempts an attach to the GPRS network. $Returns: $Arguments: Standard menu option parameters*******************************************************************************/int GPRSAttach(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfw_parent(mfw_header()); int gprsStatus; TRACE_FUNCTION("GPRSAttach()"); if (!mmi_gprs->gprsHandle) { mmi_gprs->gprsHandle = gprs_create(0, E_MFW_GPRS_ALL_EVENTS, (MfwCb)GPRSMfwCb); /* Set CID to 0; on increment will become 1. */ mmi_gprs->cid = GPRS_CID_OMITTED; /* If we've set the SMS service while unattached, change it now */ if (mmi_gprs->SMSService != CGSMS_SERVICE_OMITTED) gprs_setServiceSMS(mmi_gprs->SMSService); } gprsStatus = mmiGprsStatus(); if (gprsStatus==(int)GPRS_ATTACHED) { /* Show result */ mmiGprsResultScreen(win, TxtAlreadyAttached, TxtNull); return; } mmi_gprs->status = MMI_GPRS_STATUS_ATTACHING; mmiPleaseWait(win, TxtPleaseWait, NULL); if (gprs_attach(CGATT_STATE_ATTACHED)==MFW_RES_OK) { #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSAttach executing, awaiting confirmation."); #endif } else { /* Show result */ mmiGprsResultScreen(win, TxtFailed, TxtNull); } return;}/******************************************************************************* $Function: GPRSDetach $Description: Attempts a detach from the GPRS network. $Returns: $Arguments: Standard menu option parameters*******************************************************************************/int GPRSDetach(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfw_parent(mfw_header()); int gprsStatus; TRACE_FUNCTION("GPRSDetach()"); /* Check to make sure gprs handle exists */ if (!mmi_gprs->gprsHandle) { /* Show result */ mmiGprsResultScreen(win, TxtNotAttached, TxtNull); return; } gprsStatus = mmiGprsStatus(); if (gprsStatus==(int)GPRS_OFF) { mmiGprsResultScreen(win, TxtNotAttached, TxtNull); return; } if (gprsStatus==(int)GPRS_SEARCHING) { mmiGprsResultScreen(win, TxtGPRS, TxtNotAvailable); return; } /* Try to detach */ mmi_gprs->status = MMI_GPRS_STATUS_DETACHING; mmiPleaseWait(win, TxtPleaseWait, NULL); if (gprs_attach(CGATT_STATE_DETACHED)==MFW_RES_OK) { #ifdef TRACE_MMIGPRS TRACE_EVENT("GPRSDetach executing, awaiting confirmation."); #endif } else { mmiGprsResultScreen(win, TxtFailed,TxtNull); } return;}/******************************************************************************* $Function: mmiGprsShowCounter $Description: Generic counter displaying function $Returns: $Arguments: Standard menu option parameters*******************************************************************************/static void mmiGprsShowCounter(T_MFW_HND win, USHORT identifier){#ifdef NEW_EDITOR T_AUI_EDITOR_DATA editor_data;#else T_EDITOR_DATA editor_data;#endif T_MFW_GPRS *gprs; USHORT titleId; TRACE_FUNCTION("mmiGprsShowCounter()"); /* Destroy old editor if it exists */ if (mmi_gprs->gprsEdit_win) { mmiGprsDestroyCounter(); } /* Set appropriate title string (corrected) */ switch(identifier) { case MMI_GPRS_COUNTER_DOWNLINK: titleId = TxtIncomingData; break; case MMI_GPRS_COUNTER_UPLINK: titleId = TxtOutgoingData; break; default: titleId = TxtNull; break; } mmi_gprs->counterstring = (char *)ALLOC_MEMORY(ULONG_SIZE_IN_DECIMAL); mmiGprsUpdateCounter(win, identifier); /* New Editor */#ifdef NEW_EDITOR AUI_edit_SetDefault(&editor_data); AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR_XX, EDITOR_FONT); AUI_edit_SetEvents(&editor_data, identifier, FALSE, FOREVER, (T_AUI_EDIT_CB)mmiGprsShowCounterCb); AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtReset, titleId, NULL); AUI_edit_SetMode(&editor_data, ED_MODE_READONLY, ED_CURSOR_NONE); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)mmi_gprs->counterstring, ULONG_SIZE_IN_DECIMAL); mmi_gprs->gprsEdit_win = AUI_edit_Start(win, &editor_data);#else /* NEW_EDITOR */ editor_data.TextString = NULL; editor_data.LeftSoftKey = TxtSoftOK; editor_data.RightSoftKey = TxtReset; editor_data.AlternateLeftSoftKey = NULL; editor_data.Callback = (T_EDIT_CB)mmiGprsShowCounterCb; editor_data.Identifier = identifier; editor_data.hide = FALSE; editor_data.mode = READ_ONLY_MODE; editor_data.timeout = FOREVER; editor_data.min_enter = 0; editor_data.destroyEditor = FALSE; editor_data.editor_attr.win.px = 0; editor_data.editor_attr.win.py = Mmi_layout_line(1)+4; editor_data.editor_attr.win.sx = SCREEN_SIZE_X; editor_data.editor_attr.win.sy = Mmi_layout_line(2)+4; editor_data.editor_attr.edtCol = COLOUR_EDITOR_XX; editor_data.editor_attr.font = 0; editor_data.editor_attr.mode = edtCurNone; editor_data.editor_attr.controls = 0; editor_data.editor_attr.size = ULONG_SIZE_IN_DECIMAL; editor_data.TextId = titleId; editor_data.editor_attr.text = mmi_gprs->counterstring; /* Create the dialog handler */ mmi_gprs->gprsEdit_win = editor_start(win, &editor_data); /* start the editor */#endif /* NEW_EDITOR */ return;}/******************************************************************************* $Function: mmiGprsDestroyCounter $Description: Destroy counter display $Returns: None $Arguments: None *******************************************************************************/static void mmiGprsDestroyCounter(){ if (mmi_gprs->gprsEdit_win) { /* New Editor */ #ifdef NEW_EDITOR AUI_edit_Destroy(mmi_gprs->gprsEdit_win);#else editor_destroy(mmi_gprs->gprsEdit_win);#endif FREE_MEMORY((void *)mmi_gprs->counterstring, ULONG_SIZE_IN_DECIMAL); mmi_gprs->counterstring = NULL; mmi_gprs->gprsEdit_win = NULL; } return;}/******************************************************************************* $Function: mmiGprsUpdateCounter $Description: Change text string for the counter we've just changed $Returns: $Arguments: identifier - the type of counter we're updating*******************************************************************************/static char * mmiGprsUpdateCounter(T_MFW_HND win, USHORT identifier){ ULONG counter; TRACE_FUNCTION("mmiGprsUpdateCounter()"); counter = 0; switch(identifier) { case MMI_GPRS_COUNTER_UPLINK: counter = mmi_gprs->uplink_counter; break; case MMI_GPRS_COUNTER_DOWNLINK: counter = mmi_gprs->downlink_counter; break; } if (counter<1024) { sprintf(mmi_gprs->counterstring, "%d bytes",counter); // Counter is <1K, display bytes } else { counter = counter/KILOBYTE; if (counter<1024) sprintf(mmi_gprs->counterstring, "%dKB",counter); // Counter is <1M, display Kbytes else { counter = counter/KILOBYTE; sprintf(mmi_gprs->counterstring, "%dMB",counter); // Display Mbytes } } return mmi_gprs->counterstring;}/******************************************************************************* $Function: mmiGprsShowCounterCb $Description: Change text string for the counter we've just changed $Returns: nothing. $Arguments: win - the editor window identifier - the type of counter we're updating reason - the event that caused the callback*******************************************************************************/static void mmiGprsShowCounterCb(T_MFW_HND win, USHORT identifier, USHORT reason){ T_MFW_RES result; TRACE_FUNCTION("mmiGprsShowCounterCb()"); switch(reason) { /* Press hangup key or select OK * Calls mmiGprsDestroyCounter to destroy window */ case INFO_KCD_LEFT: case INFO_KCD_HUP: mmiGprsDestroyCounter(); break; /* Select "reset" * Now just zeroes the counter totals */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -