MTK11B GPRS Network connection

来源:互联网 发布:数据库两张表关联查询 编辑:程序博客网 时间:2024/06/11 23:59
MTK11B/11C GPRS Network connection
1: Create an AP.
2: According to AP access GPRS account ID, if not found automatically created.
3: According to the GPRS account ID to create Socket.
Examples are divided into two files: mysocket.c, mysocket.h
mysocket. c :
#include "mysocket.h"
//Total Entrance*/
void myapp_Socket_Initial(void)
{
myapp_Socket_HTTP_Start();
if(g_myapp_socket_inital)
{
if(myapp_Socket_HTTP_Create())
{
}
}
void socket_set_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler)
{
#if (MTK_VERSION > 0x0848)
#if (MTK_VERSION >= 0x0936)
mmi_frm_set_protocol_event_handler(eventID, (PsIntFuncPtr)funcPtr, isMultiHandler);
#else
mmi_frm_set_protocol_event_handler(eventID, (PsIntFuncPtr)funcPtr, isMultiHandler);
#endif
#else
mmi_frm_set_protocol_event_handler((PsFuncPtr)funcPtr, eventID);
#endif
}
void socket_clear_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr)
{ if(myapp_Socket_HTTP_Connect()) { } myapp_Socket_Send_Data(); }
#if (MTK_VERSION > 0x0848)
#if (MTK_VERSION >= 0x0936)
mmi_frm_clear_protocol_event_handler(eventID, (PsIntFuncPtr)funcPtr);
#else
mmi_frm_clear_protocol_event_handler(eventID, (PsIntFuncPtr)funcPtr);
#endif
#else
mmi_frm_clear_protocol_event_handler(eventID);
#endif
}
#if 1
static void socket_mmi_dtcnt_add_disp_list(U32 acct_id, const U8 *acct_name, const U8 *addr, U8 bearer_type, U32 account_type, U8 conn_type, U8 sim_info, U8 read_only)
{
#if (MTK_VERSION >= 0x11A1112)
#elif (MTK_VERSION >= 0x10A1103)
extern void mmi_dtcnt_add_disp_list(U32 acct_id, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only);
mmi_dtcnt_add_disp_list(acct_id, bearer_type, account_type, conn_type, sim_info, read_only);
#else
extern void mmi_dtcnt_add_disp_list(U32 acct_id, const U8 * acct_name, const U8 * addr, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only);
mmi_dtcnt_add_disp_list(acct_id, acct_name, addr, bearer_type, account_type, conn_type, sim_info, read_only);
#endif
}
static void socket_mmi_dtcnt_update_disp_list(U32 acct_id, const U8 *acct_name, const U8 *addr, U8 bearer_type, U32 account_type, U8 conn_type, U8 sim_info, U8 read_only)
{
#if (MTK_VERSION >= 0x11A1112)
#elif (MTK_VERSION >= 0x10A1103)
extern void mmi_dtcnt_update_disp_list(U32 acct_id, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only);
mmi_dtcnt_update_disp_list(acct_id, bearer_type, account_type, conn_type, sim_info, read_only);
#else
extern void mmi_dtcnt_update_disp_list(U32 acct_id, const U8 * acct_name, const U8 * addr, U8 bearer_type, mmi_socket_dtcnt_acct_type_enum account_type, U8 conn_type, U8 sim_info, U8 read_only);
mmi_dtcnt_update_disp_list(acct_id, acct_name, addr, bearer_type, account_type, conn_type, sim_info, read_only);
#endif
}
static BOOL socket_update_acc_prof_id(kal_uint32 acc_prof_id, const WCHAR* account_name,
myapp_apn_struct apn_param, cbm_sim_id_enum sim)
{
srv_dtcnt_result_enum ret;
srv_dtcnt_store_prof_data_struct prof_info;
srv_dtcnt_prof_gprs_struct prof_gprs;
int i;
MMI_ASSERT(apn_param.apn != NULL);
memset(&prof_gprs, 0, sizeof(prof_gprs));
prof_gprs.APN = apn_param.apn;
prof_gprs.prof_common_header.sim_info = sim + 1;
prof_gprs.prof_common_header.AccountName = (const U8*)account_name;
//if (accountInfo)
{
prof_gprs.prof_common_header.Auth_info.AuthType = apn_param.authentication_type;
strcpy((char*)prof_gprs.prof_common_header.Auth_info.UserName, apn_param.user_name);
strcpy((char*)prof_gprs.prof_common_header.Auth_info.Passwd, apn_param.password);
for(i = 0; i < 4; i++)
{
prof_gprs.prof_common_header.PrimaryAddr[i] = apn_param.dns[i];
}
}
prof_gprs.prof_common_header.acct_type = SRV_DTCNT_PROF_TYPE_USER_CONF;
prof_gprs.prof_common_header.px_service = SRV_DTCNT_PROF_PX_SRV_HTTP;
if(app_stricmp((char*)apn_param.apn, (char*)"cmwap") == 0)
{
prof_gprs.prof_common_header.use_proxy = KAL_TRUE;
prof_gprs.prof_common_header.px_addr[0] = 10;
prof_gprs.prof_common_header.px_addr[1] = 0;
prof_gprs.prof_common_header.px_addr[2] = 0;
prof_gprs.prof_common_header.px_addr[3] = 172;
prof_gprs.prof_common_header.px_port = 80;
}
strcpy(prof_gprs.prof_common_header.HomePage, "http://wap.gd.10086.cn");
prof_info.prof_data = &prof_gprs;
prof_info.prof_fields = SRV_DTCNT_PROF_FIELD_ALL;
prof_info.prof_type = SRV_DTCNT_BEARER_GPRS;
ret = srv_dtcnt_store_update_prof(acc_prof_id, &prof_info);
if(ret == SRV_DTCNT_RESULT_SUCCESS)
{
socket_mmi_dtcnt_update_disp_list(acc_prof_id, prof_gprs.prof_common_header.AccountName, prof_gprs.APN,
DATA_ACCOUNT_BEARER_GPRS,
prof_gprs.prof_common_header.acct_type, 1, prof_gprs.prof_common_header.sim_info, prof_gprs.prof_common_header.read_only);
return TRUE;
}
else
{
return FALSE;
}
}
static kal_uint32 socket_find_acc_prof_id(const WCHAR* account_name)
{
int i, j;
srv_dtcnt_result_enum ret;
srv_dtcnt_store_prof_qry_struct store_prof_qry;
srv_dtcnt_prof_str_info_qry_struct prof_str_info_qry;
U16 name[SRV_DTCNT_PROF_MAX_ACC_NAME_LEN + 1] = {0};
for(j = 0; j < SRV_SIM_CTRL_MAX_SIM_NUM; ++j)
{
memset(&store_prof_qry, 0, sizeof(store_prof_qry));
store_prof_qry.qry_info.filters = SRV_DTCNT_STORE_QRY_TYPE_SIM | SRV_DTCNT_STORE_QRY_TYPE_BEARER_TYPE;
store_prof_qry.qry_info.sim_qry_info = j + 1;
store_prof_qry.qry_info.bearer_qry_info = SRV_DTCNT_BEARER_GPRS;
ret = srv_dtcnt_store_qry_ids(&store_prof_qry);
if(ret == SRV_DTCNT_RESULT_SUCCESS)
{
for(i = 0; i < store_prof_qry.num_ids; ++i)
{
prof_str_info_qry.dest = (S8*)name;
prof_str_info_qry.dest_len = sizeof(name);
srv_dtcnt_get_account_name(store_prof_qry.ids[i], &prof_str_info_qry, SRV_DTCNT_ACCOUNT_PRIMARY);
if(kal_wstrcmp(account_name, name) == 0)
{
return store_prof_qry.ids[i];
}
}
}
}
return -1;
}
static kal_uint32 myapp_socket_add_acc_prof_id(const WCHAR* account_name)
{
srv_dtcnt_store_prof_data_struct store_prof_data;
srv_dtcnt_prof_gprs_struct prof_gprs;
kal_uint32 acc_prof_id;
srv_dtcnt_result_enum ret;
memset(&prof_gprs, 0, sizeof(prof_gprs));
prof_gprs.APN = "cmwap"; // This value is used when the application is modified //china comm, can modiftiy to new comm co.
prof_gprs.prof_common_header.sim_info = SRV_DTCNT_SIM_TYPE_1;
prof_gprs.prof_common_header.AccountName = (const U8*)account_name;
prof_gprs.prof_common_header.acct_type = SRV_DTCNT_PROF_TYPE_USER_CONF;
prof_gprs.prof_common_header.px_service = SRV_DTCNT_PROF_PX_SRV_HTTP; prof_gprs.prof_common_header.use_proxy = KAL_TRUE;
prof_gprs.prof_common_header.px_addr[0] = 10;
prof_gprs.prof_common_header.px_addr[1] = 0;
prof_gprs.prof_common_header.px_addr[2] = 0;
prof_gprs.prof_common_header.px_addr[3] = 172;
prof_gprs.prof_common_header.px_port = 80;
strcpy(prof_gprs.prof_common_header.HomePage, "http://wap.gd.10086.cn");
store_prof_data.prof_data = &prof_gprs;
store_prof_data.prof_fields = SRV_DTCNT_PROF_FIELD_ALL;
store_prof_data.prof_type = SRV_DTCNT_BEARER_GPRS;
ret = srv_dtcnt_store_add_prof(&store_prof_data, &acc_prof_id);
if(ret == SRV_DTCNT_RESULT_SUCCESS)
{
socket_mmi_dtcnt_add_disp_list(acc_prof_id,
DATA_ACCOUNT_BEARER_GPRS,
prof_gprs.prof_common_header.acct_type, prof_gprs.prof_common_header.read_only);
}
else
{
acc_prof_id = -1;
}
return acc_prof_id;
}
static kal_uint32 socket_find_acc_prof_id_by_apn(const char* apn, cbm_sim_id_enum sim) {
extern srv_dtcnt_store_info_context g_srv_dtcnt_store_ctx;
int i;
1, prof_gprs.prof_common_header.sim_info, prof_gprs.prof_common_header.AccountName, prof_gprs.APN,
for(i = 0; i < SRV_DTCNT_PROF_MAX_ACCOUNT_NUM; ++i)
{
if(g_srv_dtcnt_store_ctx.acc_list[i].in_use &&
g_srv_dtcnt_store_ctx.acc_list[i].bearer_type == SRV_DTCNT_BEARER_GPRS &&
g_srv_dtcnt_store_ctx.acc_list[i].sim_info == (sim + 1) &&
app_stricmp((char*)g_srv_dtcnt_store_ctx.acc_list[i].dest_name, (char*)apn) == 0)
{
return g_srv_dtcnt_store_ctx.acc_list[i].acc_id;
}
}
return -1;
}
/**
* Obtain the data account assigned to the application, you can support two applications at the same time
*
* @param handle
*
* @return Account index, this value is certainly valid
*/
static kal_uint32 socket_get_acc_prof_id(myapp_apn_struct apn_param, cbm_sim_id_enum sim_id)
{
// 1. Search the data account that exists in the system
// 2. Check that the virtual machine platform account already exists
/ / 3. If there is to return to the account ID, if there is to continue
// 4. Add a virtual machine platform data account
/ / 5. If the account ID returned successfully, if the failure to return to the specified account ID
const WCHAR* names[] = { L"SOC1 GPRS", L"SOC2 GPRS" };
kal_uint32 modify_acc_prof_ids[] = { SRV_DTCNT_PROF_MAX_ACCOUNT_NUM - 1, SRV_DTCNT_PROF_MAX_ACCOUNT_NUM - 2 }; kal_uint32 acc_prof_id;
kal_uint32 id;
id = 0;
MMI_ASSERT(id >= 0 && id <= 1);
acc_prof_id = socket_find_acc_prof_id_by_apn((const char*)apn_param.apn, sim_id);
if(acc_prof_id != -1)
{
return acc_prof_id;
}
acc_prof_id = socket_find_acc_prof_id(names[id]);
if(acc_prof_id == -1)
{
acc_prof_id = myapp_socket_add_acc_prof_id(names[id]);
}
if(acc_prof_id == -1)
{
if(id == 0)
{
acc_prof_id = socket_find_acc_prof_id(names[1]);
}
else
{
acc_prof_id = socket_find_acc_prof_id(names[0]);
}
if(acc_prof_id == -1)
{
acc_prof_id = modify_acc_prof_ids[id];
}
else
{
if(acc_prof_id == SRV_DTCNT_PROF_MAX_ACCOUNT_NUM - 1)
{
acc_prof_id = acc_prof_id - 1;
}
else
{
acc_prof_id = acc_prof_id + 1;
}
}
}
if(!socket_update_acc_prof_id(acc_prof_id, names[id], apn_param, sim_id))
{
acc_prof_id = -1;
}
return acc_prof_id;
}
void socket_set_account_id(cbm_sim_id_enum sim_id)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 i;
U16 vs_apn[32];
S8 temp[32];
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
//socket_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)myapp_socket_notify, TRUE); //socket_set_protocol_event_handler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND,
(PsIntFuncPtr)myapp_socket_get_host_by_name_ind, TRUE);
i = socket_get_acc_prof_id(g_myapp_apn_param, sim_id);
cbm_hold_bearer(g_socket_content.cbm_app_id);
g_socket_content.nwt_account_id = cbm_encode_data_account_id(i, sim_id, g_socket_content.cbm_app_id, KAL_FALSE); }
#endif
BOOL myapp_Socket_Register_Id_Get_NetworkId(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
cbm_app_info_struct app_info;
U8 app_id = CBM_INVALID_APP_ID;
S8 ret = 0;
kal_uint8 val = 1;
//register app id
memset(&app_info, 0, sizeof(app_info));
app_info.app_icon_id = 301;
app_info.app_str_id = 111;
app_info.app_type = 0; //DTCNT_APPTYPE_NONE
ret = cbm_register_app_id_with_app_info(&app_info, &app_id);
//get network id
if(ret == CBM_OK)
{
g_socket_content.cbm_app_id = app_id;
socket_set_account_id(CBM_SIM_ID_SIM1);
return TRUE;
}
else
{
}
}
void myapp_Socket_HTTP_Close(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_socket_content.soc_state = SOC_HTTP_INVALID;
if(g_socket_content.soc_id >= 0)
{
soc_close(g_socket_content.soc_id);
socket_clear_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)myapp_socket_notify); }
}
void myapp_socket_notify(void * inMsg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
app_soc_notify_ind_struct *soc_notify = (app_soc_notify_ind_struct*) inMsg;
kal_int8 ret;
S16 Error;
switch(soc_notify->event_type)
{
case SOC_WRITE:
break;
case SOC_READ:
{
myapp_Socket_HTTP_Receive();
}
break;
case SOC_CONNECT:
if(soc_notify->result)
{
myapp_Socket_Send_Data();
}
else //SIM card signal is poor will come here
{
}
break;
case SOC_CLOSE:
myapp_Socket_HTTP_Close();
break;
default:
break;
}
}
MMI_BOOL myapp_socket_get_host_by_name_ind(void *inMsg)
{
/*----------------------------------------------------------------*/
/* Local Variables */ /*----------------------------------------------------------------*/
app_soc_get_host_by_name_ind_struct *dns_ind;
kal_uint8 em_app_id;
int i;
/*----------------------------------------------------------------*/
/* Code Body */ /*----------------------------------------------------------------*/
if(!inMsg)
{
}
dns_ind = (app_soc_get_host_by_name_ind_struct*) inMsg;
socket_clear_protocol_event_handler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND, (PsIntFuncPtr)myapp_socket_get_host_by_name_ind);
/* Check if the result is OK */
if(dns_ind->result == KAL_TRUE)
{
g_socket_content.soc_addr.addr[0] = dns_ind->addr[0];
g_socket_content.soc_addr.addr[1] = dns_ind->addr[1];
g_socket_content.soc_addr.addr[2] = dns_ind->addr[2];
g_socket_content.soc_addr.addr[3] = dns_ind->addr[3];
if(myapp_Socket_HTTP_Connect() == KAL_TRUE)
{
myapp_Socket_Send_Data();
}
}
else
}
return MMI_TRUE;
}
void myapp_socket_get_host_by_name(const kal_uint8 *hostname)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 ret;
char rcvd_buffer[200] = {0};
kal_uint32 rcvd_counter = 0;
/*----------------------------------------------------------------*/
/* Code Body
/*----------------------------------------------------------------*/
ret = soc_gethostbyname(
KAL_FALSE,
MOD_MMI,
(kal_int32) 1,
(kal_char*) hostname,
(kal_uint8*) &rcvd_buffer,
(kal_uint8*) &rcvd_counter,
0,
g_socket_content.nwt_account_id);
if(ret == SOC_SUCCESS)
{
g_socket_content.soc_addr.addr[0] = rcvd_buffer[0];
g_socket_content.soc_addr.addr[1] = rcvd_buffer[1];
g_socket_content.soc_addr.addr[2] = rcvd_buffer[2];
g_socket_content.soc_addr.addr[3] = rcvd_buffer[3];
if(myapp_Socket_HTTP_Connect() == KAL_TRUE)
{
myapp_Socket_Send_Data();
}
}
else if(ret == SOC_WOULDBLOCK)
{
/* waits for APP_SOC_GET_HOST_BY_NAME_IND */
socket_set_protocol_event_handler(MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND,
(PsIntFuncPtr)myapp_socket_get_host_by_name_ind, TRUE);
}
else
{
if(ret == SOC_ERROR)
{ */
http_socket_output_result(SOC_HTTP_CON_ERROR);
}
else
{
http_socket_output_result(SOC_HTTP_CON_ERROR);
}
}
}
kal_bool myapp_Socket_HTTP_Connect(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int8 sd, ret;
kal_uint8 val;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if(g_socket_content.soc_state >= SOC_HTTP_REQ_CONNECTONED)
{
return KAL_TRUE;
}
if(g_socket_content.soc_state == SOC_HTTP_STATE_CREATED)
{
socket_set_protocol_event_handler(MSG_ID_APP_SOC_NOTIFY_IND, (PsIntFuncPtr)myapp_socket_notify, TRUE); ret = soc_connect(g_socket_content.soc_id, &g_socket_content.soc_addr);
if(ret == SOC_SUCCESS)
{
g_socket_content.soc_state = SOC_HTTP_TCP_CON_CREATED;
return KAL_TRUE;
}
else if(ret == SOC_WOULDBLOCK)
{
return KAL_FALSE;
}
else
{
http_socket_output_result(SOC_HTTP_CON_ERROR);
return KAL_FALSE;
}
}
return KAL_FALSE;
}
void myapp_Socket_Send_Data(void)
{
int ret = 0;
if(g_socket_content.soc_state == SOC_HTTP_STATE_CREATED
|| g_socket_content.soc_state == SOC_HTTP_TCP_CON_CREATED
|| g_socket_content.soc_state == SOC_HTTP_REQ_CONNECTONED
|| g_socket_content.soc_state == SOC_HTTP_REQ_RETRY
|| g_socket_content.soc_state == SOC_HTTP_REQ_SENT
|| g_socket_content.soc_state == SOC_HTTP_RSP_RCVD)
{
if(g_socket_content.soc_state != SOC_HTTP_REQ_SENDING)
{
g_socket_content.snd_counter = 0;
}
g_socket_content.soc_state = SOC_HTTP_REQ_SENDING;
ret = soc_send(g_socket_content.soc_id, (U8*)(g_socket_content.snd_buffer +
g_socket_content.snd_counter),
(g_socket_content.snd_data_len - g_socket_content.snd_counter), 0);
}
else
{
http_socket_output_result(SOC_HTTP_CON_ERROR);
return ;
}
}
void myapp_Socket_HTTP_Receive(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint32 ret = 0;
kal_uint32 len = 0;
char *pdata = NULL;
char *pend = NULL;
int start_length = 0;
kal_uint32 datalength = 0;
U8 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
g_socket_content.soc_state = SOC_HTTP_RSP_RCVING;
memset(&g_socket_content.rcvd_buffer, 0, sizeof(g_socket_content.rcvd_buffer));
ret = soc_recv(g_socket_content.soc_id, g_socket_content.rcvd_buffer, sizeof(g_socket_content.rcvd_buffer) , 0);
}
BOOL myapp_Socket_HTTP_Create(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint8 val = 1;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if(g_socket_content.soc_state >= SOC_HTTP_STATE_CREATED)
{
return TRUE;
}
g_socket_content.soc_id = soc_create(SOC_PF_INET, SOC_SOCK_STREAM, 0, MOD_MMI, g_socket_content.nwt_account_id); if(g_socket_content.soc_id >= 0)
{
if(soc_setsockopt(g_socket_content.soc_id, SOC_NBIO, &val, sizeof(val)) < 0)
{
}
val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;
if(soc_setsockopt(g_socket_content.soc_id, SOC_ASYNC, &val, sizeof(val)) < 0)
{
}
g_socket_content.soc_state = SOC_HTTP_STATE_CREATED;
return TRUE;
}
else
{
return FALSE;
}
}
static void myapp_Socket_HTTP_Start(void)
{
if(myapp_Socket_Register_Id_Get_NetworkId() == TRUE)
{
g_myapp_socket_inital = KAL_TRUE;
}
else
{
g_myapp_socket_inital = KAL_FALSE;
}
}
mysocket. h :
#include "MMI_features.h"
#if !defined(__MTK_TARGET__) || defined(MMI_ON_WIN32)
#include <windows.h>
#endif
#include "MMI_include.h"
/* for socket */
#include "soc_api.h"
#include "app2soc_struct.h"
#include "cbm_api.h"
#include "mmi2abm_struct.h"
#include "mmi_l3_enums.h"
#include "DtcntSrvDb.h"
#include "DtcntSrvIntStruct.h"
//sim
#include "SimCtrlSrvGprot.h"
#define mmi_socket_dtcnt_acct_type_enum srv_dtcnt_prof_acc_type_enum
typedef enum
{
SOC_HTTP_INVALID,
SOC_HTTP_STATE_CREATING,
SOC_HTTP_STATE_CREATED,
SOC_HTTP_DNS_QUERY,
SOC_HTTP_TCP_CON_CREATING,
SOC_HTTP_TCP_CON_CREATED,
SOC_HTTP_REQ_CONNECTONED,
SOC_HTTP_REQ_RETRY,
SOC_HTTP_REQ_SENDING,
SOC_HTTP_REQ_SENT,
SOC_HTTP_RSP_RCVING,
SOC_HTTP_RSP_RCVD,
SOC_HTTP_SOC_CLOSING,
SOC_HTTP_SOC_CLOSED,
SOC_HTTP_SEND
} KKSAPP_SOC_STATE_ENUM;
typedef struct
{
kal_uint8 apn[30]; //APN asc code
kal_uint8 Net_ID; //0 For China Mobile
kal_uint8 ip[4]; //Decimal
kal_uint8 user_name[32];//User name (optional)
kal_uint8 password[32];//password (optional)
unsigned char
unsigned char
} myapp_apn_struct;
typedef enum
{
SOC_HTTP_CON_ERROR = - 8,
SOC_HTTP_PEER_CANNOT_CONNECT,
SOC_HTTP_PEER_CANNOT_GETHOST,
SOC_HTTP_PEER_NOT_REACHABLE,
SOC_HTTP_PEER_NO_RESPONSE,
SOC_HTTP_CNT_RESET_BY_PEER,
SOC_HTTP_NO_MEMORY,
SOC_HTTP_SUCCESS,
SOC_HTTP_FINISHED,
SOC_HTTP_CON_MAX
} mmi_soc_http_con_app_result;
/* Local global variables */
static myapp_apn_struct g_myapp_apn_param =
{
{"cmwap"},
};
static kal_bool g_myapp_socket_inital = KAL_FALSE; /* Network initialization*/ dns[4]; authentication_type;
static KKSAPP_SOC_HTTP_STRUCT g_socket_content = {0};
/* Static function declaration */
static void socket_set_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr, MMI_BOOL isMultiHandler); static void socket_clear_protocol_event_handler(U16 eventID, PsIntFuncPtr funcPtr);
static kal_bool myapp_Socket_HTTP_Connect(void);
static void myapp_send_http_timeout(void);
static void myapp_Socket_Send_Data(void);
static void myapp_Socket_HTTP_Receive(void);
static BOOL myapp_Socket_HTTP_Create(void);
static void myapp_http_socket_get_parsed_url(const char *in_str, myapp_http_url_struct * purl_parsed_info); static void myapp_http_socket_package_get_req(myapp_http_url_struct *purl_parsed_info);
static void http_socket_output_result(mmi_soc_http_con_app_result ret);
static void myapp_reset_soc_http_content(void);
static void myapp_socket_notify(void * inMsg);
static MMI_BOOL myapp_socket_get_host_by_name_ind(void *inMsg);
static void myapp_socket_get_host_by_name(const kal_uint8 *hostname);
/*******************************************************************/
0 0