📄 wap_wapmmi.c
字号:
/*******************************************************************************
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(¶meter2);
}
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(¶meter2);
}
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(¶meter2);
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(¶meter2);
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 + -