📄 atbwapaci.c
字号:
#ifdef GPRS
case WAP_GPRS_DATA:
{
T_CGATT_STATE regstate;
/* SPR#1574 - SH - Modified to detect if GPRS attach fails.
/* SPR#1575 - SH - Check to see if attached */
qAT_PlusCGATT ( CMD_SRC_LCL, ®state );
WAP_TRACE_EVENT(("Reg state: %d", regstate));
/* 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
}
}
#ifdef GPRS
/*******************************************************************************
$Function: connect_gprs
$Description: SPR#1575 - SH - Added this function
Already attached; now activate PDP context
$Returns:
$Arguments: View - the current view
*******************************************************************************/
#ifdef MMS_WAP_ENABLED
ULONG IPAddressSaved = 0;
#endif
void connect_gprs(UBYTE object_id)
{
SHORT tst_cid[MAX_CID_PLUS_EINS];
T_GPRS_CONT_REC context;
T_ACI_RETURN ret;
UBYTE minsize;
BOOL states[MAX_CID_PLUS_EINS];
T_CGCLASS_CLASS m_class;
USHORT lac, cid;
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, tst_cid );
TRACE_EVENT_P1("Context 0: %d", tst_cid[0]);
/* If context doesn't exist, define it */
if ( tst_cid[0] == INVALID_CID)
{
TRACE_EVENT("Defining new context.");
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);
TRACE_EVENT_P1("CGDCONT Return = %d",ret);
if (ret==AT_FAIL)
{
TRACE_EVENT("*** GPRS NOT SUPPORTED ***");
AUI_error_dialog(View, ERROR_GPRS_NOT_SUPPORTED);
return;
}
}
/* If context isn't activated, call ATD */
qAT_PlusCGACT ( CMD_SRC_LCL, states, tst_cid );
if (states[0])
{
TRACE_EVENT("Context is activated.");
ATB_data_call_connected(); /* SPR#2138 */
}
else
{
TRACE_EVENT("Context not activated.");
//robert chen modified, to adapte new ACI API, 2004-08-10
//ret = sAT_PercentCGPCO (CMD_SRC_LCL,1,ACI_PCO_AUTH_PROT_PAP,(CHAR *)View->Profile->Username,(CHAR *)View->Profile->Password);
ret = sAT_PercentCGPCO (
CMD_SRC_LCL,
GPRS_CID_1,
ACI_PCO_AUTH_PROT_PAP,
(CHAR *)View->Profile->Username,
(CHAR *)View->Profile->Password,
NULL,
NULL
);
TRACE_EVENT_P1("CGPCO Return = %d", ret);
if (ret==AT_FAIL)
{
TRACE_EVENT("*** GPRS NOT SUPPORTED ***");
//AUI_error_dialog(View, ERROR_GPRS_NOT_SUPPORTED);
return;
}
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):
TRACE_EVENT("Connection proceeding OK");
break;
default:
TRACE_EVENT("*** GPRS NOT SUPPORTED ***");
/*talcoin*/
AUI_error_dialog(View, ERROR_GPRS_NOT_SUPPORTED);
TRACE_EVENT("Error occurred in connection.");
return;
break;
}
}
}
#endif
/*******************************************************************************
$Function: M_WAP_MMI_DISCONNECTED_IND
$Description:
$Returns:
$Arguments:
*******************************************************************************/
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;
/* SPR#1574 - SH - Removed parameter */
ATB_wap_status_change(View,ATB_WAP_ONLINE_CONNECTION_CLOSED);
return;
}
/*******************************************************************************
$Function: M_WAP_MMI_READY_CNF
$Description: SPR#1569 - SH - Added this function
Confirm that WAP has completed the operation.
$Returns:
$Arguments:
*******************************************************************************/
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;
#ifdef MMS_WAP_ENABLED
/*talcon add for mms*/
case WAP_MMSSTART_IND_ID:
ATB_mms_start_done();
//ATB_wap_start_done();
break;
case WAP_MMSTERMINATE_IND_ID:
ATB_mms_terminate_done();
break;
/*end talcon add*/
#endif
}
return;
}
/*******************************************************************************
$Function: disconnect_wap_call
$Description: Disconnect GPRS WAP call in progress.
SPR#1547 - SH - Added parameter 'access_type' to check if GPRS
is in use, rather than CSD
$Returns:
$Arguments:
*******************************************************************************/
void 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);
/* SPR#1560 - SH - Only call sAT_H if there is an active context */
/* 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;
}
#ifdef MMS_WAP_ENABLED
/********************mms************************
*************************************************/
/*initialize wap statck*/
void M_MMI_WAP_MMSSTART_IND(T_MMI_WAP_MMSSTART_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_MMSSTART_IND");
#endif
mmi_coder(WAP_MMSSTART_IND_ID,(void*)parameter);
return;
}
void M_MMI_WAP_MMSTERMINATE_IND(T_MMI_WAP_MMSTERMINATE_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_MMSTERMINATE_IND");
#endif
mmi_coder(WAP_MMSTERMINATE_IND_ID,(void*)parameter);
return;
}
/******content post**********/
/*******************************************
$Description:
Post first content
*******************************************/
void M_MMI_WAP_POSTCONTENT_IND(T_MMI_WAP_POSTCONTENT_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_POSTCONTENT_IND");
#endif
mmi_coder(WAP_POSTCONTENT_IND_ID,(void*)parameter);
return;
}
/*******************************************
$Description:
post more content
*******************************************/
void M_MMI_WAP_POSTMORECONTENT_IND(T_MMI_WAP_POSTMORECONTENT_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_POSTMORECONTENT_IND");
#endif
mmi_coder(WAP_POSTMORECONTENT_IND_ID,(void*)parameter);
return;
}
/**************************************/
/******content get**********/
/******************************************
$Description:
get first content
****************************************/
void M_MMI_WAP_GETCONTENT_IND(T_MMI_WAP_GETCONTENT_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_GETCONTENT_IND");
#endif
mmi_coder(WAP_GETCONTENT_IND_ID,(void*)parameter);
return;
}
/*******************************************
$Description:
get more content
*******************************************/
void M_MMI_WAP_ACKCONTENT_IND(T_MMI_WAP_ACKCONTENT_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_ACKCONTENT_IND");
#endif
mmi_coder(WAP_ACKCONTENT_IND_ID,(void*)parameter);
return;
}
/**************************************/
/*******************************************
$Description:
post: response to post the last content
get : response to get content
*******************************************/
void M_WAP_MMI_CONTENT_REQ(T_WAP_MMI_CONTENT_REQ *parameter)
{
#ifdef MMS_MESSAGE_SAR_USED
if(parameter->data2)
{
parameter->data = parameter->data2;
parameter->data_length = parameter->data_length2;
}
#endif
#ifdef TRACE_WAP_WAPMMI
WAP_TRACE_EVENT(("M_WAP_MMI_CONTENT_REQ: %d, %d , %d, %d, %d, %d", parameter->urlID, parameter->data_length, parameter->moreData,parameter->contentType_length,parameter->totalSize,parameter->errorNo));
if(parameter->data)
{
WAP_TRACE_EVENT(("data: %02x,%02x", parameter->data[0],parameter->data[1]));
}
#endif
if(parameter->urlID == URLID_MMS_SEND &&
MMS_Get_MessageType((char*)parameter->data) != MMS_MESSAGE_TYPE_SEND_CONF)
{
parameter->data_length = 0;
WAP_TRACE_EVENT(("sent notires.mms"));
}
MMS_Content_REQ(parameter->urlID,
parameter->data,
parameter->data_length,
parameter->moreData,
parameter->totalSize,
parameter->errorNo
);
#ifdef MMS_MESSAGE_SAR_USED
{
static int g_codememalloc = 0;
#define MMS_new(ptr, size) MI_ALLOC(ptr, size,g_codememalloc)
#define MMS_free(ptr,size) MI_FREE(ptr, g_codememalloc);
if(parameter->data2)
{
MMS_free(parameter->data2, parameter->data_length2);
}
}
#endif
return;
}
/*******************************************
$Description:
response to post the non-last content
*******************************************/
void M_WAP_MMI_ACKPOSTCONTENT_REQ(T_WAP_MMI_ACKPOSTCONTENT_REQ *parameter)
{
#ifdef TRACE_WAP_WAPMMI
WAP_TRACE_EVENT(("M_WAP_MMI_ACKPOSTCONTENT_REQ:%d",parameter->urlID));
#endif
handle_mmssend(NULL);
return;
}
/*******************************************
$Description:
cancel content
*******************************************/
void M_MMI_WAP_CANCELCONTENT_IND(T_MMI_WAP_CANCELCONTENT_IND *parameter)
{
#ifdef TRACE_ATBWAPACI
TRACE_FUNCTION("M_MMI_WAP_CANCELCONTENT_IND");
#endif
mmi_coder(WAP_CANCELCONTENT_IND_ID,(void*)parameter);
return;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -