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

📄 wap_wapmmi.c

📁 是一个手机功能的模拟程序
💻 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:		  	wap_wapmmi.c
 $Revision:		                                                      
                                                                              
 $Author:		Condat(UK)                                                         
 $Date:		                                                          
                                                                               
********************************************************************************
                                                                              
 Description:
 	Create events to send to MMI, and receive events from MMI to forward.
    
                        
********************************************************************************

 $History: wap_wapmmi.c

	20/05/2003 - SPR#1934 - SH - Synchronised latest with 1.7.0 version.
	   
 $End

*******************************************************************************/
#ifndef WAP_WAPMMI_C
#undef WAP_WAPMMI_C
#endif

#define ENTITY_WAP


/*==== INCLUDES ===================================================*/
#if defined (NEW_FRAME)

#include <stdarg.h>
#include <string.h>
#include <stdlib.h>
#include <stddef.h>
#include "typedefs.h"
#include "pcm.h"
#include "pconst.cdg"
#include "mconst.cdg"
#include "message.h"
#include "ccdapi.h"
#include "vsi.h"
#include "custom.h"
#include "gsm.h"
#include "prim.h"
#include "cnf_wap.h"
#include "mon_wap.h"
#include "pei.h"
#include "tok.h"

#else

#include <string.h>
#include "stddefs.h"
#include "pconst.cdg"
#include "message.h"
#include "ccdapi.h"
#include "custom.h"
#include "gsm.h"
#include "cnf_wap.h"
#include "mon_wap.h"
#include "prim.h"
#include "vsi.h"
#include "pei.h"
#include "tok.h"

#endif

#include "dti.h"
#include "wap.h"
#include "cus_wap.h"

#include "aapimmi.h"
#include "capimmi.h"
#include "aapiclnt.h"
#include "aapigle.h"
#include "capiclnt.h"
#include "capigle.h"
#include "wip_mem.h"
#include "capimem.h"
#include "tapigle.h"

#include "wap_types.h"
#include "wap_codec.h"
#include "wap_wapmmi.h"

//#define WAP_TRACE 1
#define TRACE_WAP_WAPMMI
#include "mmiutilapi.h"
#define TRACE_EVENT(f) WAP_TRACE_EVENT(("wapaus-wap_wapmmi.c<<<talcon,%s",f));
#define TRACE_FUNCTION(f) TRACE_EVENT(f)



UBYTE startup_failed = FALSE;	/*  TRUE if WAP start fails */

/* Functions to display strings, for tracing purposes. */
 
void WAP_trace_string(char *String, UBYTE length)
{
	UBYTE stringIndex;
	char trace_string[41];  

	for (stringIndex=0; (stringIndex<40 && stringIndex<length); stringIndex++)
		trace_string[stringIndex] = String[stringIndex];

	trace_string[stringIndex] = 0;

	TRACE_EVENT_P2("%s (%d)", trace_string, length);

	return;
}

void WAP_trace_ushort_string(USHORT *String, USHORT length)
{
	USHORT stringIndex;
	char trace_string[41];
	
	for (stringIndex=0; (stringIndex<40 && stringIndex<length); stringIndex++)
		trace_string[stringIndex] = (char) String[stringIndex];

	trace_string[stringIndex] = 0;

	TRACE_EVENT_P2("%s (%d)", trace_string, length);

	return;
}


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

 $Function:    	W_MMI_WAP_READY_IND
 
 $Description:	Informs WAP that MMI is ready to receive events.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_READY_IND(T_MMI_WAP_READY_IND *parameter)
{

#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_READY_IND");
#endif

	/* Does nothing - already intercepted by wap_codec */
	
return;
}


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

 $Function:    	W_MMI_WAP_START_IND
 
 $Description:	Starts the WAP application.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_START_IND(T_MMI_WAP_START_IND *parameter)
{
	T_WAP_MMI_READY_CNF parameter2;
	
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_START_IND");
#endif

	/* If startup fails, do not continue */
	
	startup_failed = FALSE;
	GLEc_start();

	if (!startup_failed)
	{ 
		WAP_init_cache();

		MEMc_initCache(WAP_cache_size);

		wap_lib_run_aus_callback();
		 
		parameter2.event_id = WAP_START_IND_ID;
		W_WAP_MMI_READY_CNF(&parameter2);	
	}
	
	return;
}


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

 $Function:    	W_MMI_WAP_NEW_VIEW_IND
 
 $Description:	Create a new view
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_NEW_VIEW_IND(T_MMI_WAP_NEW_VIEW_IND *parameter)
{
	T_WAP_MMI_READY_CNF parameter2;
	
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_NEW_VIEW_IND");
	TRACE_EVENT_P1("WAP object ID: %d",parameter->object_id);
	TRACE_EVENT_P2("WAP id/uamode: %d, %d", parameter->object_id, parameter->uaMode);
	TRACE_EVENT_P2("WAP width/height: %d, %d", (USHORT)parameter->view_width, (USHORT)parameter->view_height);
	TRACE_EVENT_P2("font height: %d, width of 'A': %d", parameter->font_height, parameter->font_width[65]);
	TRACE_EVENT_P2("unicode height: %d, unicode width: %d", parameter->unicode_width, parameter->unicode_height);
#endif

	/* Ensure new view is not set up if startup fails */
	
	if (!startup_failed)
	{
		/* Send display data to wap_gle */
		setupDisplayData(parameter->view_width, parameter->view_height, parameter->font_width,
			parameter->font_height, parameter->unicode_width, parameter->unicode_height);

		GLEc_openView(parameter->object_id, parameter->uaMode, parameter->view_width, parameter->view_height);
	 	
		wap_lib_run_aus_callback();

		parameter2.event_id = WAP_NEW_VIEW_IND_ID;
		W_WAP_MMI_READY_CNF(&parameter2);
	}
	return;
}


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

 $Function:    	W_MMI_WAP_TERMINATE_IND
 
 $Description:	Closes the WAP application and frees any memory allocated.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_TERMINATE_IND(T_MMI_WAP_TERMINATE_IND *parameter)
{
	T_WAP_MMI_READY_CNF parameter2;

#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_TERMINATE_IND");
#endif /*TRACE_WAP_WAPMMI */

	/* Don't terminate if startup failed */

	if (!startup_failed)
	{
		freeDisplayData();

		GLEc_terminate();

		CLNTc_terminate();

		wap_lib_run_aus_callback();
#ifdef TRACE_WAP_WAPMMI
		TRACE_EVENT("W_MMI_WAP_TERMINATE_IND complete");
#endif
	}
	else
	{
		TRACE_EVENT("Startup failed - not terminating.");
	}

	parameter2.event_id = WAP_TERMINATE_IND_ID;
	W_WAP_MMI_READY_CNF(&parameter2);		
	
	return;
}


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

 $Function:    	W_MMI_WAP_CLOSE_VIEW_IND
 
 $Description:	Close the specified view.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_CLOSE_VIEW_IND(T_MMI_WAP_CLOSE_VIEW_IND *parameter)
{
	T_WAP_MMI_READY_CNF parameter2;
	
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_CLOSE_VIEW_IND");
	TRACE_EVENT_P1("WAP object ID: %d",parameter->object_id);
#endif

	/* Don't close view if startup failed */
	
	if (!startup_failed)
	{
		
		GLEc_closeView(parameter->object_id);

		wap_lib_run_aus_callback();
	}
	
	parameter2.event_id = WAP_CLOSE_VIEW_IND_ID;
	W_WAP_MMI_READY_CNF(&parameter2);	
	
	return;
}


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

 $Function:    	W_MMI_WAP_CONFIGURE_IND
 
 $Description:	Sends configuration information to the browser
 
 $Returns:		None

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_CONFIGURE_IND(T_MMI_WAP_CONFIGURE_IND *parameter)
{
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_CONFIGURE_IND");
	WAP_TRACE_EVENT(("WAP object ID: %d",parameter->object_id));
	TRACE_EVENT_P3("WAP Type, Param, Length: %d, %d, %d", parameter->type, parameter->param, parameter->length);
	if (parameter->type==WAP_IntConfig)
	{
		WAP_TRACE_EVENT(("WAP Integer Value: %d", parameter->intvalue));
	}
	else if (parameter->length>0)
	{
		WAP_trace_string(parameter->strvalue, parameter->length);
	}
#endif

	/* Integer configuration */
	
	if (parameter->type==WAP_IntConfig)
	{
		GLEc_setIntConfig(parameter->object_id, (ConfigInt)parameter->param, parameter->intvalue);
	}

	/* String configuration */
	
	if (parameter->type==WAP_StrConfig)
	{
		CLNTc_setStrConfig(parameter->object_id, (ConfigStr)parameter->param, parameter->strvalue,
			(UINT16)parameter->length);
	}

	wap_lib_run_aus_callback();

	return;
}


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


 $Function:    	W_MMI_WAP_CONNECTION_CONFIGURE_IND
 
 $Description:	Sends network configuration information to the browser, such as the
 				bearer, IP addresses, passwords and ids etc.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_CONNECTION_CONFIGURE_IND(T_MMI_WAP_CONNECTION_CONFIGURE_IND *parameter)
{
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_CONNECTION_CONFIGURE_IND");
	TRACE_EVENT_P1("WAP object ID: %d",parameter->object_id);
	TRACE_EVENT_P1("WAP param: %d",parameter->param);
	TRACE_EVENT_P3("WAP Type, Channel_id, Length: %d, %d, %d", parameter->type, parameter->channel_id, parameter->length);
	if (parameter->type==WAP_IntConfig)
	{
		TRACE_EVENT_P1("WAP Integer Value: %d", parameter->intvalue);
	}
	else if (parameter->length>0)
	{
		WAP_trace_string(parameter->strvalue, parameter->length);
	}
#endif

	/* These configurations are not sent to AUSB */
								
	if (parameter->param > WAP_additionalConfig)
	{
		switch (parameter->param)
		{
			case WAP_setPort1:
				wap_data->port1 = parameter->intvalue;
			break;

			case WAP_setPort2:
				wap_data->port2 = parameter->intvalue;
			break;
			}

		return;
		}

	/* Integer configuration */
	
	if (parameter->type==WAP_IntConfig)
	{
		CLNTc_setDCHIntConfig(parameter->object_id, parameter->channel_id, (ConfigInt)parameter->param,
			parameter->intvalue);
		}

	/* String configuration */
	
	if (parameter->type==WAP_StrConfig)
	{
		CLNTc_setDCHStrConfig(parameter->object_id, parameter->channel_id, (ConfigStr)parameter->param,
			parameter->strvalue, (UBYTE)parameter->length);
		}

	wap_lib_run_aus_callback();
		
	return;
}


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


 $Function:    	W_MMI_WAP_DOWNLOAD_URL_IND
 
 $Description:	Requests the WAP browser to download a particular URL.
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_DOWNLOAD_URL_IND(T_MMI_WAP_DOWNLOAD_URL_IND *parameter)
{		
#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_DOWNLOAD_URL_IND");
	TRACE_EVENT_P1("WAP object ID: %d",parameter->object_id);
	TRACE_EVENT_P2("WAP URL length, Reload: %d, %d", parameter->url_length, parameter->reload);
	WAP_trace_string(parameter->Url, parameter->url_length);
#endif

	MMIc_loadURL(parameter->object_id, parameter->Url, parameter->reload);

	wap_lib_run_aus_callback();
		
	return;
}


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


 $Function:    	W_MMI_WAP_BROWSE_CONTROL_IND
 
 $Description:	Sends a control command to the browser, e.g. stop, refresh, redisplay,
 				press a key, go back, block the screen
 
 $Returns:		None.

 $Arguments:	parameter - data block
 
*******************************************************************************/

void W_MMI_WAP_BROWSE_CONTROL_IND(T_MMI_WAP_BROWSE_CONTROL_IND *parameter)
{
	GleEvent event;

#ifdef TRACE_WAP_WAPMMI
	TRACE_EVENT("W_MMI_WAP_BROWSE_CONTROL_IND");
	TRACE_EVENT_P1("WAP object ID: %d",parameter->object_id);

⌨️ 快捷键说明

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