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

📄 atbwapaci.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
#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, &regstate );
  		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 + -