📄 atbwapaci.c
字号:
memcpy((void *)copy->Formatstring, (void *)parameter->Text, parameter->formatstring_length*sizeof(USHORT));
}
Element->data = (void *)copy;
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_SEND_IMAGE_IND
$Description: An image is to be displayed.
$Returns: None.
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_SEND_IMAGE_IND(T_WAP_MMI_SEND_IMAGE_IND *parameter)
{
T_WAP_VIEW *View;
T_WAP_ELEMENT *Element;
T_WAP_MMI_SEND_IMAGE_IND *copy;
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_SEND_IMAGE_IND");
TRACE_EVENT_P1("MMI object ID: %d",parameter->object_id);
#endif
if (!(View = ATB_wap_get_view(parameter->object_id)))
return;
/* Check if we're shutting down */
if (ATB_wap_status_get(View, ATB_WAP_SHUTTING_DOWN))
{
TRACE_EVENT("*** SHUTTING DOWN ***");
return;
}
/* If an update is forbidden, ignore this event */
if (!View->acceptUpdate)
return;
Element = ATB_wap_buffer_add_element(View, WAP_IMAGE);
copy = (T_WAP_MMI_SEND_IMAGE_IND *)AUI_wap_memory_alloc(sizeof(T_WAP_MMI_SEND_IMAGE_IND));
memcpy((void *)copy, (void *)parameter, sizeof(T_WAP_MMI_SEND_IMAGE_IND));
if (parameter->image_length != 0)
{
copy->Image = (UBYTE *)AUI_wap_memory_alloc(parameter->image_length*sizeof(UBYTE));
memcpy((void *)copy->Image, (void *)parameter->Image, parameter->image_length*sizeof(UBYTE));
}
Element->data = (void *)copy;
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_SEND_TABLE_IND
$Description: A table/fieldset is to be displayed.
$Returns: None.
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_SEND_TABLE_IND(T_WAP_MMI_SEND_TABLE_IND *parameter)
{
T_WAP_VIEW *View;
T_WAP_ELEMENT *Element;
T_WAP_MMI_SEND_TABLE_IND *copy;
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_SEND_TABLE_IND");
TRACE_EVENT_P1("object ID: %d",parameter->object_id);
TRACE_EVENT_P2("Columns: %d, Rows: %d",parameter->cols_length, parameter->rows_length);
TRACE_EVENT_P4("pX: %d, pY: %d, pWidth: %d, pHeight: %d",parameter->pX, parameter->pY, parameter->pWidth, parameter->pHeight);
ATB_trace_ushort_string(parameter->Title, parameter->title_length);
#endif
if (!(View = ATB_wap_get_view(parameter->object_id)))
return;
/* Check if we're shutting down */
if (ATB_wap_status_get(View, ATB_WAP_SHUTTING_DOWN))
{
TRACE_EVENT("*** SHUTTING DOWN ***");
return;
}
/* If an update is forbidden, ignore this event */
if (!View->acceptUpdate)
return;
/* Allocate memory and copy the data */
Element = ATB_wap_buffer_add_element(View, WAP_TABLE);
copy = (T_WAP_MMI_SEND_TABLE_IND *)AUI_wap_memory_alloc(sizeof(T_WAP_MMI_SEND_TABLE_IND));
memcpy((void *)copy, (void *)parameter, sizeof(T_WAP_MMI_SEND_TABLE_IND));
if (parameter->title_length != 0)
{
copy->Title = (USHORT *)AUI_wap_memory_alloc(parameter->title_length*sizeof(USHORT));
memcpy((void *)copy->Title, (void *)parameter->Title, parameter->title_length*sizeof(USHORT));
}
if (parameter->cols_length != 0)
{
copy->ColWidth = (SHORT *)AUI_wap_memory_alloc(parameter->cols_length*sizeof(SHORT));
memcpy((void *)copy->ColWidth, (void *)parameter->ColWidth, parameter->cols_length*sizeof(SHORT));
}
if (parameter->rows_length != 0)
{
copy->RowHeight = (SHORT *)AUI_wap_memory_alloc(parameter->rows_length*sizeof(SHORT));
memcpy((void *)copy->RowHeight, (void *)parameter->RowHeight, parameter->rows_length*sizeof(SHORT));
}
Element->data = (void *)copy;
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_CARD_DRAW_COMPLETED_IND
$Description: Card drawing is completed, card may be displayed.
$Returns: None.
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_CARD_DRAW_COMPLETED_IND(T_WAP_MMI_CARD_DRAW_COMPLETED_IND *parameter)
{
T_WAP_VIEW *View;
UBYTE temp;
if (!(View = ATB_wap_get_view(parameter->object_id)))
return;
/* Check if we're shutting down */
if (ATB_wap_status_get(View, ATB_WAP_SHUTTING_DOWN))
{
TRACE_EVENT("*** SHUTTING DOWN ***");
return;
}
temp = dspl_Enable(0);
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_CARD_DRAW_COMPLETED_IND");
TRACE_EVENT_P1("MMI object ID: %d",parameter->object_id);
#endif
/* If an update is forbidden, ignore this event */
if (!View->acceptUpdate)
{
dspl_Enable(temp);
return;
}
/* Destroy the current card, and make the new buffered card the current card */
ATB_wap_buffer_clear(View);
View->ElementHeader = View->NewElementHeader;
View->NewElementHeader = NULL;
AUI_wap_card_show_req(View);
dspl_Enable(temp);
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_CONNECT_REQ
$Description: The connection (GSM or GPRS) can now be made.
The GSM connection occurs in this function.
The GPRS attachment is made in this function. Once GPRS is
attached, the connection proceeds in function connect_gprs() below.
$Returns: None.
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_CONNECT_REQ(T_WAP_MMI_CONNECT_REQ *parameter)
{
T_WAP_VIEW *View;
char temp[NUMBER_MAX_LEN+1];
T_ACI_BS_SPEED speed;
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_CONNECT_REQ");
TRACE_EVENT_P1("MMI object ID: %d",parameter->object_id);
#endif
if (!(View = ATB_wap_get_view(parameter->object_id)))
return;
/* Check if we're shutting down */
if (ATB_wap_status_get(View, ATB_WAP_SHUTTING_DOWN))
{
TRACE_EVENT("*** SHUTTING DOWN ***");
return;
}
switch (View->Profile->AccessType)
{
case WAP_CS_DATA:
/* CSD call - connect straight away */
sAT_PercentPPP(0,1,View->Profile->Username, View->Profile->Password, USE_NO_PPP_FOR_AAA);
sAT_PercentWAP(0,0);
sAT_PercentWAP(0,1);
/* Set the connection speed */
switch(View->Profile->ConnectionSpeed)
{
case WAP_ANALOGUE:
speed = BS_SPEED_AUTO;
break;
case WAP_ISDN9600:
speed = BS_SPEED_9600_V110;
break;
case WAP_ISDN14400:
speed = BS_SPEED_14400_V110;
break;
default:
speed = BS_SPEED_9600_V34;
break;
}
sAT_PlusCBST(CMD_SRC_ATI_1, speed, CBST_NAM_Asynch, CBST_CE_NonTransparent);
/* Make the call */
sprintf(temp, "=%s", View->Profile->DialupNumber);
atD(temp,CMD_SRC_ATI_1);
break;
#ifdef GPRS
case WAP_GPRS_DATA:
{
/* GPRS call - attach now. If attached, connect.
* If not, wait until attach succeeds */
T_CGATT_STATE regstate;
/* Check to see if attached */
qAT_PlusCGATT ( CMD_SRC_LCL, ®state );
#ifdef TRACE_ATBWAPACI
TRACE_EVENT_P1("Reg state: %d", regstate);
#endif
/* If we're not attached, attempt to do so */
if (regstate!=CGATT_STATE_ATTACHED)
{
/* Display status "attaching" */
ATB_wap_status_change(View, ATB_WAP_ATTACHING);
/* Attempt to attach */
sAT_PlusCGATT ( CMD_SRC_LCL, CGATT_STATE_ATTACHED );
}
/* Otherwise, go straight to GPRS connection */
else
{
connect_gprs(parameter->object_id);
}
}
#endif
}
return;
}
#ifdef GPRS
/*******************************************************************************
$Function: connect_gprs
$Description: GPRS is attached; now activate PDP context
$Returns: None.
$Arguments: object_id - the current session
*******************************************************************************/
void connect_gprs(UBYTE object_id)
{
SHORT cids[MAX_CID_PLUS_EINS];
BOOL states[MAX_CID_PLUS_EINS];
T_GPRS_CONT_REC context;
T_ACI_RETURN ret;
UBYTE minsize;
T_WAP_VIEW *View;
TRACE_FUNCTION("connect_gprs()");
if (!(View = ATB_wap_get_view(object_id)))
return;
/* Check to see if context already active */
qAT_PlusCGACT ( CMD_SRC_LCL, states, cids );
#ifdef TRACE_ATBWAPACI
TRACE_EVENT_P1("Context 0: %d", cids[0]);
#endif
/* If context doesn't exist, define it */
if ( cids[0] == INVALID_CID)
{
#ifdef TRACE_ATBWAPACI
TRACE_EVENT("Defining new context.");
#endif
minsize = (MAX_APN_LEN<(URL_MAX_LEN+1))?MAX_APN_LEN:(URL_MAX_LEN+1);
memset(&context.apn,'\0',MAX_APN_LEN);
memcpy(&context.apn,&View->Profile->APN,minsize);
strcpy((char*)context.pdp_type,"IP");
minsize = (MAX_PDP_ADDR_LEN<(IPADDRESS_MAX_LEN+1))?MAX_PDP_ADDR_LEN:(IPADDRESS_MAX_LEN+1);
memset(&context.pdp_addr,'\0',MAX_PDP_ADDR_LEN);
context.d_comp = CGDCONT_D_COMP_OMITTED;
context.h_comp = CGDCONT_H_COMP_OMITTED;
memset(&context.qos,0,sizeof(T_QOS));
memset(&context.min_qos,0,sizeof(T_QOS));
ret = sAT_PlusCGDCONT(CMD_SRC_LCL,GPRS_CID_1,&context);
#ifdef TRACE_ATBWAPACI
TRACE_EVENT_P1("CGDCONT Return = %d",ret);
#endif
if (ret==AT_FAIL)
{
AUI_error_dialog(View, ERROR_GPRS_NOT_SUPPORTED);
return;
}
}
/* Removed duplicate call to qAT_PlusCGACT.
* If context isn't activated, call CGPCO */
if (states[0])
{
#ifdef TRACE_ATBWAPACI
TRACE_EVENT("Context is activated.");
#endif
}
else
{
#ifdef TRACE_ATBWAPACI
TRACE_EVENT("Context not activated.");
#endif
ret = sAT_PercentCGPCO (
CMD_SRC_LCL,
GPRS_CID_1,
ACI_PCO_AUTH_PROT_PAP,
(CHAR *)View->Profile->Username,
(CHAR *)View->Profile->Password,
NULL,
NULL
);
#ifdef TRACE_ATBWAPACI
TRACE_EVENT_P1("CGPCO Return = %d", ret);
#endif
if (ret==AT_FAIL)
{
AUI_error_dialog(View, ERROR_GPRS_NOT_SUPPORTED);
return;
}
}
//ret = sAT_Dn(CMD_SRC_LCL,"*98**1*1#",D_CLIR_OVRD_Default,D_CUG_CTRL_NotPresent,D_TOC_Data);
ret = sAT_Dn(CMD_SRC_LCL,"*98*1#",D_CLIR_OVRD_Default,D_CUG_CTRL_NotPresent,D_TOC_Data);
switch (ret)
{
case (AT_CMPL): /*operation completed*/
case (AT_EXCT):
break;
default:
AUI_error_dialog(View, ERROR_CALL_DISCONNECTED);
#ifdef TRACE_ATBWAPACI
TRACE_EVENT("Error occurred in connection.");
#endif
return;
break;
}
return;
}
#endif
/*******************************************************************************
$Function: M_WAP_MMI_DISCONNECTED_IND
$Description: A disconnection has occurred.
$Returns: None
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_DISCONNECTED_IND(T_WAP_MMI_DISCONNECTED_IND *parameter)
{
T_WAP_VIEW *View;
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_DISCONNECTED_IND");
TRACE_EVENT_P1("MMI object ID: %d",parameter->object_id);
#endif
if (!(View = ATB_wap_get_view(parameter->object_id)))
return;
/* Check if we're shutting down */
if (ATB_wap_status_get(View, ATB_WAP_SHUTTING_DOWN))
{
TRACE_EVENT("*** SHUTTING DOWN ***");
return;
}
/* Change MMI status */
ATB_wap_status_change(View,ATB_WAP_ONLINE_CONNECTION_CLOSED);
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_READY_CNF
$Description: Confirm that WAP has completed the operation.
$Returns: None.
$Arguments: parameter - data block
*******************************************************************************/
void M_WAP_MMI_READY_CNF(T_WAP_MMI_READY_CNF *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_WAP_MMI_READY_CNF");
TRACE_EVENT_P1("Event id = %d", parameter->event_id);
#endif
switch (parameter->event_id)
{
case WAP_START_IND_ID:
ATB_wap_start_done();
break;
case WAP_NEW_VIEW_IND_ID:
ATB_wap_new_view_done();
break;
case WAP_CLOSE_VIEW_IND_ID:
ATB_wap_close_view_done();
break;
case WAP_TERMINATE_IND_ID:
ATB_wap_terminate_done();
break;
case WAP_CACHE_PREPARE_IND_ID:
ATB_wap_cache_prepare_done();
break;
}
return;
}
/*******************************************************************************
$Function: disconnect_wap_call
$Description: Disconnect GPRS WAP call in progress.
$Returns: TRUE if connection is disconnected, FALSE if disconnection in progress
$Arguments: access_type - WAP_GPRS_DATA or WAP_CS_DATA
*******************************************************************************/
UBYTE disconnect_wap_call(UBYTE access_type)
{
UBYTE disconnected;
T_ACI_RETURN ret;
#ifdef GPRS
SHORT cids[MAX_CID_PLUS_EINS] = {GPRS_CID_1, INVALID_CID};
#endif /* GPRS */
TRACE_FUNCTION("disconnect_wap_call()");
disconnected = TRUE;
#ifdef GPRS
if (access_type==WAP_GPRS_DATA)
{
/* Update data counter */
sAT_PercentSNCNT(CMD_SRC_LCL, TRUE);
/* Disconnect */
ret = sAT_PlusCGACT(CMD_SRC_LCL, CGACT_STATE_DEACTIVATED, cids);
#ifdef TRACE_ATBWAPACI
TRACE_EVENT_P1("Result of sAT_PlusCGACT = %d", ret);
#endif
/* If detaching will take a little time, show a please wait dialog */
if (ret==AT_EXCT)
{
disconnected = FALSE;
}
}
#endif /* GPRS */
return disconnected;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -