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

📄 mmigprs.c

📁 GSM手机设计软件代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*******************************************************************************					CONDAT (UK)********************************************************************************                                                                               This software product is the property of Condat (UK) Ltd and may not be disclosed to any third party without the express permission of the owner.                                                                                                               ******************************************************************************** $Project name:	                                                       $Project code:	                                                            $Module:		 $File:		    MmiGprs.c $Revision:		                                                                                                                                     $Author:		Condat(UK)                                                          $Date:		                                                                                                                                         ********************************************************************************                                                                               Description: 	GPRS handling for MMI.                            ******************************************************************************** $History: MmiGprs.c	15/05/2003 - SPR#1983 - SH - Updated to latest from 1.6.3 version.	    $End*******************************************************************************/#define ENTITY_MFW/* Switch for tracing*/#define TRACE_MMIGPRS#include <string.h>#include <stdio.h>#include <stdlib.h>#if defined (NEW_FRAME)#include "typedefs.h"#include "vsi.h"#include "pei.h"#include "custom.h"#include "gsm.h"#else#include "stddefs.h"#include "custom.h"#include "gsm.h"#include "vsi.h"#endif#include "mfw_sys.h"#include "p_sim.h"#include "cus_aci.h"#include "mfw_mfw.h"#include "mfw_win.h"#include "mfw_kbd.h"/* New Editor changes */#ifndef NEW_EDITOR#include "mfw_edt.h"#endif#include "mfw_lng.h"#include "mfw_tim.h"#include "mfw_icn.h"#include "mfw_mnu.h"#include "mfw_phb.h"#include "mfw_cm.h"#include "mfw_sim.h"#include "mfw_nm.h"#include "mfw_sat.h"#include "mfw_ss.h" /*for convert*/#include "mfw_phb.h"#include "ksd.h"#include "psa.h"#include "mfw_sms.h"#include "mfw_cphs.h"#include "mfw_sat.h"#include "message.h"#include "prim.h"#include "aci_cmh.h"  /* include types declared in ACI              */#include "gaci_cmh.h" /* include types declared in GACI             */#include "mfw_gprs.h"#include "dspl.h"#include "MmiGprs.h"#include "MmiBookShared.h"#include "MmiIcons.h"		/* Including this header allows us to access the global icon status, for the GPRS icon.*/#include "MmiSmsBroadcast.h"  /* Including this to get the info_screen function *//* New Editor changes.  Need editor for counter display */#ifdef NEW_EDITOR#include "ATBCommon.h"#include "ATBDisplay.h"#include "ATBEditor.h"#include "AUIEditor.h"#else#include "MmiEditor.h"#endif#include "MmiBookUtils.h"#include "MmiBookMenuWindow.h"		/* So we can use bookMenuStart() to create our own menus */#include "MMIColours.h"/* Required to send status to WAP */#ifdef MMI_WAP_ENABLED#include "AUIWapExt.h"#endif#define ULONG_SIZE_IN_DECIMAL		10		/* Max no. of decimal digits a ULONG can have */#define KILOBYTE					1024	/* No of bytes in a kilobyte, used for data counter calculation. */#define PLEASEWAIT_TIMEOUT			35000	/* Time for "please wait" window to time out *//* Counter types */enum{	MMI_GPRS_COUNTER_UPLINK,	MMI_GPRS_COUNTER_DOWNLINK};/* GPRS data */typedef struct{	T_MFW_HDR 		*gprsHandle;			/* Provide a handle to the GPRS information. */	T_GPRS_CID		cid;					/* The context id.  Starts at 1 then increments. */	MfwHnd 			gprsPleaseWait_win;		/* Handle for the Please Wait window */	MfwHnd 			gprsEdit_win;			/* Handle for editor window */	MfwHnd			menu_win;				/* Handler for menu windows */	char			*counterstring;			/* String for counter digits */	ULONG			uplink_counter;			/* Value of uplink counter */	ULONG			downlink_counter;		/* Value of downlink counter */	USHORT			counter_type;			/* TRUE if uplink counter has been requested */	T_CGSMS_SERVICE SMSService;				/* Type of SMS service */	BOOL			display;				/* Whether to display "OK" windows or not */	USHORT			status;					/* Current status */}T_MMI_GPRS_DATA;/* GPRS status values */typedef enum{	MMI_GPRS_STATUS_IDLE,	MMI_GPRS_STATUS_ATTACHING,	MMI_GPRS_STATUS_DETACHING,	MMI_GPRS_STATUS_DATA_COUNTER};static T_MMI_GPRS_DATA		*mmi_gprs=NULL;/******************************************************************************* LOCAL FUNCTION PROTOTYPES*******************************************************************************/static T_MFW_HND mmiPleaseWait(T_MFW_HND parent_win, USHORT TextId1, USHORT TextId2);static void mmiPleaseWaitCb(T_MFW_HND win, UBYTE identifier, UBYTE reason);static void mmiPleaseWaitDestroy();static void mmiGprsShowCounter(T_MFW_HND win, USHORT identifier);static void mmiGprsDestroyCounter();static char * mmiGprsUpdateCounter(T_MFW_HND win, USHORT identifier);static void mmiGprsShowCounterCb(T_MFW_HND win, USHORT identifier, USHORT reason);/******************************************************************************* $Function:    	mmiGprsInit $Description:	Initialise GPRS $Returns:		Handler for MFW GPRS events. $Arguments:	None.*******************************************************************************/void mmiGprsInit(void){#ifdef TRACE_MMIGPRS	TRACE_FUNCTION("mmiGprsInit()");#endif	gprs_init();	/* Allocate memory for mmi data */	mmi_gprs = (T_MMI_GPRS_DATA *)ALLOC_MEMORY(sizeof(T_MMI_GPRS_DATA));	memset(mmi_gprs, 0, sizeof(T_MMI_GPRS_DATA));	mmi_gprs->gprsHandle = gprs_create(0, E_MFW_GPRS_ALL_EVENTS, (MfwCb)GPRSMfwCb);	mmi_gprs->cid = GPRS_CID_OMITTED;	mmi_gprs->uplink_counter = 0;	mmi_gprs->downlink_counter = 0;	mmi_gprs->SMSService = CGSMS_SERVICE_OMITTED;	mmi_gprs->display = FALSE;	return;}/******************************************************************************* $Function:    	mmiGprsExit $Description:	Exit GPRS $Returns:		None. $Arguments:	None.*******************************************************************************/void mmiGprsExit(void){#ifdef TRACE_MMIGPRS	TRACE_FUNCTION("mmiGprsInit()");#endif	/* Delete any remaining please wait window (just in case!)*/	mmiPleaseWaitDestroy();	/* Delete the MFW module */	if (mmi_gprs->gprsHandle)		gprs_delete(mmi_gprs->gprsHandle);	/* Delete MMI data */	FREE_MEMORY((void *)mmi_gprs, sizeof(T_MMI_GPRS_DATA));	gprs_exit();	return;}/******************************************************************************* $Function:    	mmiGprsStatus $Description:	Return status of GPRS. $Returns:		GPRS_OFF, GPRS_NOT_ATTACHED, GPRS_ATTACHED $Arguments:	None.*******************************************************************************/int mmiGprsStatus(void){	T_MFW_GPRS *gprs;	static int previous_result = -1;	int result;#ifdef TRACE_MMIGPRS	TRACE_FUNCTION("mmiGprsStatus()");#endif	/* Keeps track of last status value (for use with WAP later)	 * Default state is GPRS OFF */	iconsDeleteState(iconIdGPRSOn);	result = GPRS_OFF;	/* Check if searching or attached */	if (mmi_gprs)	{		if (mmi_gprs->gprsHandle)		{		 	gprs = mmi_gprs->gprsHandle->data;			if (gprs)			{				gprs->data.regState = gprs_status();#ifdef TRACE_MMIGPRS				TRACE_EVENT_P1("mmiGprsStatus: regState = %d", gprs->data.regState);#endif				if (gprs->data.regState==CGREG_STAT_SEARCHING)				{					result = GPRS_SEARCHING;				}				/* Check regState rather than attached to find GPRS status */				else if (gprs->data.regState==CGREG_STAT_REG_HOME || gprs->data.regState==CGREG_STAT_REG_ROAM)				{					iconsSetState(iconIdGPRSOn);					result = GPRS_ATTACHED;				}			}		}	}	#ifdef MMI_WAP_ENABLED	/* If status has changed, notify WAP */	if (result!=previous_result)	{		AUI_wap_gprs_status(result);	}#endif	previous_result = result;	return result;}/******************************************************************************* $Function:    	mmiPleaseWait $Description:	Creates a "Please Wait" message that will hang around until an "OK" or 				"Error" message is received by GPRSMfwCb $Returns:		Pointer to the created window $Arguments:	parent_win - the parent window 				TextId1	- the first text string to be shown 				TextId2  - the second text string to be shown*******************************************************************************/static T_MFW_HND mmiPleaseWait(T_MFW_HND parent_win, USHORT TextId1, USHORT TextId2){	T_DISPLAY_DATA display_info;	TRACE_FUNCTION("mmiPleaseWait()");	/* Delete any previous window */	mmiPleaseWaitDestroy();	dlg_initDisplayData_TextId( &display_info, TxtNull, TxtCancel, TextId1, TextId2, COLOUR_STATUS);	dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)mmiPleaseWaitCb, PLEASEWAIT_TIMEOUT, KEY_HUP | KEY_RIGHT );	mmi_gprs->display = TRUE;							/* Allow OK and Fail messages to appear. */	mmi_gprs->menu_win = parent_win;					/* Store parent window */	/* Show information screen, storing window pointer */	mmi_gprs->gprsPleaseWait_win = info_dialog(parent_win,&display_info);	return mmi_gprs->gprsPleaseWait_win;}/******************************************************************************* $Function:    	mmiPleaseWaitCb $Description:	Please wait window callback function. $Returns:		None $Arguments:	win - the parent window 				identifier - not used 				reason - the reason for the callback*******************************************************************************/static void mmiPleaseWaitCb(T_MFW_HND win, UBYTE identifier, UBYTE reason){	TRACE_FUNCTION("mmiPleaseWaitCb()");	/* Dialog already destroyed by this point */	mmi_gprs->gprsPleaseWait_win = NULL;		switch(reason)	{		case INFO_TIMEOUT:					/* Delete window */						info_screen(mmi_gprs->menu_win, TxtTimedOut, NULL, NULL);			mmi_gprs->status = MMI_GPRS_STATUS_IDLE;			break;				case INFO_KCD_HUP:		case INFO_KCD_RIGHT:					/*Cancel current operation */						switch(mmi_gprs->status)			{				case MMI_GPRS_STATUS_ATTACHING:				case MMI_GPRS_STATUS_DETACHING:					gprs_attach_abort();					mmi_gprs->status = MMI_GPRS_STATUS_IDLE;					mmi_gprs->display = FALSE;					break;				case MMI_GPRS_STATUS_DATA_COUNTER:					gprs_counter_abort();					mmi_gprs->status = MMI_GPRS_STATUS_IDLE;					mmi_gprs->display = FALSE;					break;			}			break;	}		return;}/******************************************************************************* $Function:    	mmiPleaseWaitDestroy $Description:	Check to see if the "Please Wait" window is present, and destroys it 				if so. $Returns:		None. $Arguments:	None.*******************************************************************************/static void mmiPleaseWaitDestroy(){	TRACE_FUNCTION("mmiPleaseWaitCb()");	if (mmi_gprs->gprsPleaseWait_win)	{		SEND_EVENT(mmi_gprs->gprsPleaseWait_win, DIALOG_DESTROY, NULL, NULL);		mmi_gprs->gprsPleaseWait_win = NULL;	}		return;}/******************************************************************************* $Function:    	mmiGprsResultScreen $Description:	Displays a result and returns GPRS to idle status $Returns:		None. $Arguments:	parent_win - the parent window 				TextId1	- the first text string to be shown 				TextId2  - the second text string to be shown *******************************************************************************/static T_MFW_HND mmiGprsResultScreen(T_MFW_HND parent_win, USHORT TextId1, USHORT TextId2){	mmiPleaseWaitDestroy();			info_screen(parent_win, TextId1, TextId2, NULL);	mmi_gprs->status = MMI_GPRS_STATUS_IDLE;	mmi_gprs->display = FALSE;	return;}/******************************************************************************* $Function:    	GPRSMfwCb $Description:	Callback function for MFW GPRS events. $Returns: $Arguments:	Event number and generic parameter.*******************************************************************************/int GPRSMfwCb(T_MFW_EVENT event, void* para){	T_MFW_HND 			win			= mfwParent( mfw_header());	T_MFW_GPRS_DATA		*gprs_data	= (T_MFW_GPRS_DATA *)para;				// Structure that stores data from mfw	USHORT				textId;	int gprs_status;	TRACE_FUNCTION("GPRSMfwCb()");	switch(event)	{		case E_MFW_GPRS_S_CNTXT:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_CNTXT");			#endif			break;		case E_MFW_GPRS_S_ATT:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_ATT");			#endif			mmi_gprs->status = MMI_GPRS_STATUS_ATTACHING;			if (mmi_gprs->display)			{				/* Previous please wait will be destroyed and this new message shown */				mmiPleaseWait(win, TxtGPRS, TxtConnecting);			}			mmiGprsStatus();			break;		case E_MFW_GPRS_S_ACT:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_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_ACT:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_ACT");			#endif			/* Notify WAP of context activation */			#ifdef MMI_WAP_ENABLED			AUI_wap_gprs_status(GPRS_CONTEXT_ACTIVATE);			#endif			break;		case E_MFW_GPRS_S_DATA:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_DATA");			#endif			break;		case E_MFW_GPRS_R_DATA:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_DATA");			#endif			break;		case E_MFW_GPRS_S_QOS:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_QOS");			#endif			break;		case E_MFW_GPRS_R_QOS:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_QOS");			#endif			break;		case E_MFW_GPRS_S_QOS_MIN:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_QOS_MIN");			#endif			break;		case E_MFW_GPRS_S_CLASS:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_CLASS");			#endif			break;		case E_MFW_GPRS_S_PDPADDR:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_PDPADDR");			#endif			break;		case E_MFW_GPRS_S_AUTORESP:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_AUTORESP");			#endif			break;		case E_MFW_GPRS_S_ANS:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_S_ANS");			#endif			break;		case E_MFW_GPRS_R_ANS:			#ifdef TRACE_MMIGPRS			TRACE_EVENT("GPRSMfwCb: E_MFW_GPRS_R_ANS");

⌨️ 快捷键说明

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