I8320 手机网络连接建立方法

没有找到头文件,根据文档拼凑出来的gprs连接方法。

连接成功后需要把pdp0的dns信息加入/etc/resolv.conf里面,删除默认网关,把pdp0的地址作为默认网关


typedef struct {
 int BPrimaryPmpProfile;
 int PrimaryPmpProfileID;
 char Apn[255];
 int BStaticIpAddr;
// NetAddr_t IpAddr;
 int BStaticDnsAddr;
 int DnsCount;
// NetAddr_t DnsAddr[255];
 int pad[1024];
}NetPMProfileInfo_t;

typedef struct {
 int Event;
 int ProfileId;
 int Error;
 void * Data;
}NetEventInfo_t;

int PdpConnected=0;

void _network_services_cm_cb(NetEventInfo_t * event_cb)
{
 printf("event_cb->Error=%d event_cb->Event=%d/n",event_cb->Error,event_cb->Event);
 
 if(event_cb->Error==0) {
  if(event_cb->Event==0) {
   PdpConnected=1;
   unsigned char * ip_addr=(unsigned char *) event_cb->Data;
   char command[1024];
   system("route delete default"); 
                 sprintf(command,"route add default gw %u.%u.%u.%u/n",ip_addr[0x54],ip_addr[0x55],ip_addr[0x56],ip_addr[0x57]);
   printf("%s/n",command);
   system(command);
                 sprintf(command,"echo /"nameserver %u.%u.%u.%u/" > /etc/resolv.conf",ip_addr[0x9c],ip_addr[0x9d],ip_addr[0x9e],ip_addr[0x9f]);
   printf("%s/n",command);
   system(command); 
                 sprintf(command,"echo /"nameserver %u.%u.%u.%u/" >> /etc/resolv.conf",ip_addr[0xb0],ip_addr[0xb1],ip_addr[0xb2],ip_addr[0xb3]);
   printf("%s/n",command);
   system(command); 
   
//        FILE * file=fopen("/mnt/ums/netinfo","w+");
//        fwrite((void *)event_cb->Data,1,1024,file);
//        fclose(file);

   printf("pdp connected/n");
  }
  if(event_cb->Event==1) {
   PdpConnected=0;
   printf("pdp closed/n");
  }
 }
}

int cm_context_close (void);

static int register_rc=0;
static int profileid=-1;
int cm_context_open (void)
{
 NetPMProfileInfo_t profinfo;
 int profileid_list[20];
 int profile_count=1;
 if(register_rc)
  cm_context_close();
 register_rc=0;
 memset(&profinfo,0,sizeof(NetPMProfileInfo_t));
 int rc=NetCMClientRegister(_network_services_cm_cb);
 printf("register rc=%d/n",rc);
 if(rc!=0) {
  return 0; 
 }
 
 
 rc=NetPMGetDefaultProfileId(&profileid);
 printf("get profile id rc=%d profileid=%d/n",rc,profileid);
 if(rc!=0) {
  NetCMClientDeRegister();
  return 0;
 }

 
 profileid_list[0]=profileid;
 
 rc=NetCMConnectionOpen(profileid_list,profile_count);
 printf("connection rc=%d/n",rc);
 if(rc!=0) {
  NetCMClientDeRegister();
  return 0;
 }

 PdpConnected=0;
 int i=0;
 for(i=0;i<10;i++) { 
  if(PdpConnected==1) break;
    sleep(1);
 }

        rc=NetPMGetDefaultProfileInfo(&profinfo);
        printf("profinfo rc=%d/n",rc);

//        FILE * file=fopen("/mnt/ums/netinfo","w+");
//        fwrite((void *)&profinfo,1,1024,file);
//        fclose(file);

#if 0 
 struct hostent *hostinfo=NetDNSGetHostByName(profileid,"www.szonline.com");
 if(hostinfo==NULL) {
  printf("could not get host information/n");
 }
 else {
  printf("address=%u.%u.%u.%u/n",hostinfo->h_addr_list[0][0],
  hostinfo->h_addr_list[0][1],hostinfo->h_addr_list[0][2],
  hostinfo->h_addr_list[0][3]);
 }
#endif 
 
 register_rc=1; 
 return 1;
}

int cm_context_close (void)
{
 int rc=0;
 if(register_rc==0) {
  printf("no connection close/n");
  return 0;
 }
        if(PdpConnected) {
                rc=NetCMConnectionClose(profileid);
                printf("close rc=%d/n",rc);
        }
        int i=0;
        for(i=0;i<10;i++) {
                if(PdpConnected==0) break;
                        sleep(1);
        }

        rc=NetCMClientDeRegister();
        printf("deregister =%d/n",rc);
 return 1;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值