Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

This page was last modified 09:37, 26 November 2007.

Create new internet access point

From Forum Nokia Wiki

Creating the GPRS Internet Access Point (IAP) OS version independent

In order to create the IAP, CCommsDatabase is used. The following code example creates all the table entries manually. It actually duplicates the emulator's "Winsock" IAP initial settings. CreateNewIAP() is the main function.

#include <commdbconnpref.h>
#include <commdb.h>
#include <cdbpreftable.h>
 
TUint32 CreateWapApL(CCommsDatabase* db)
{
	_LIT(KWapApName, "MyAP WAP");
	TUint32 WapId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(WAP_ACCESS_POINT)); 
	User::LeaveIfError(view->InsertRecord(WapId));
	view->WriteTextL(TPtrC(COMMDB_NAME), KWapApName);
	view->WriteTextL(TPtrC(WAP_CURRENT_BEARER), TPtrC(WAP_IP_BEARER)); 
	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return WapId;
}
 
TUint32 CreateGprsServiceL(CCommsDatabase* db)
{
	_LIT(KGprsName,  "MyAP Gprs");
	_LIT(KSettingAPN, "Winsock");
	
	TUint32 gprsId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(OUTGOING_GPRS)); 
	User::LeaveIfError(view->InsertRecord(gprsId));
	
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KGprsName); 
	view->WriteTextL(TPtrC(GPRS_APN), KSettingAPN);
	view->WriteUintL(TPtrC(GPRS_PDP_TYPE), 0);
   	view->WriteBoolL(TPtrC(GPRS_IP_ADDR_FROM_SERVER), EFalse); 
   	view->WriteBoolL(TPtrC(GPRS_IP_DNS_ADDR_FROM_SERVER), EFalse);
   	view->WriteBoolL(TPtrC(GPRS_IP6_DNS_ADDR_FROM_SERVER), EFalse);
   	view->WriteTextL(TPtrC(GPRS_IF_AUTH_NAME), _L(""));
   	view->WriteTextL(TPtrC(GPRS_IF_AUTH_PASS), _L(""));
   	view->WriteBoolL(TPtrC(GPRS_IF_PROMPT_FOR_AUTH), EFalse);
   	view->WriteUintL(TPtrC(SERVICE_IF_AUTH_RETRIES), 0);
   	view->WriteTextL(TPtrC(GPRS_IF_NETWORKS), _L("tcp,udp,icmp,icmp6"));
   	view->WriteBoolL(TPtrC(GPRS_HEADER_COMPRESSION), EFalse);
   	view->WriteBoolL(TPtrC(GPRS_DATA_COMPRESSION), EFalse);
   	view->WriteUintL(TPtrC(GPRS_REQ_PRECEDENCE), 0);
   	view->WriteUintL(TPtrC(GPRS_REQ_DELAY), 0);
   	view->WriteUintL(TPtrC(GPRS_REQ_RELIABILITY), 0);
   	view->WriteUintL(TPtrC(GPRS_REQ_PEAK_THROUGHPUT), 0);
   	view->WriteUintL(TPtrC(GPRS_REQ_MEAN_THROUGHPUT), 0); 
   	view->WriteUintL(TPtrC(GPRS_MIN_PRECEDENCE), 0);
   	view->WriteUintL(TPtrC(GPRS_MIN_DELAY), 0);
   	view->WriteUintL(TPtrC(GPRS_MIN_RELIABILITY), 0);
   	view->WriteUintL(TPtrC(GPRS_MIN_PEAK_THROUGHPUT), 0);
   	view->WriteUintL(TPtrC(GPRS_MIN_MEAN_THROUGHPUT), 0); 
   	view->WriteBoolL(TPtrC(GPRS_ANONYMOUS_ACCESS), EFalse); 
   	view->WriteBoolL(TPtrC(GPRS_ENABLE_LCP_EXTENSIONS), EFalse); 
   	view->WriteBoolL(TPtrC(GPRS_DISABLE_PLAIN_TEXT_AUTH), EFalse);
   	view->WriteUintL(TPtrC(GPRS_AP_TYPE), 2);
   	view->WriteUintL(TPtrC(GPRS_QOS_WARNING_TIMEOUT), -1);
   	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return gprsId;
}
 
TUint32 CreateLocationL(CCommsDatabase* db)
{
	_LIT(KLocName, "MyAP Location");
	TUint32 LocId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(LOCATION)); 
	User::LeaveIfError(view->InsertRecord(LocId));
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KLocName); 
	view->WriteTextL(TPtrC(LOCATION_INTL_PREFIX_CODE),_L("+"));
	view->WriteTextL(TPtrC(LOCATION_NAT_PREFIX_CODE),_L("0"));
	view->WriteTextL(TPtrC(LOCATION_NAT_CODE),_L("44"));
	view->WriteUintL(TPtrC(LOCATION_PAUSE_AFTER_DIAL_OUT), 0);
	view->WriteBoolL(TPtrC(LOCATION_MOBILE), ETrue);
	view->WriteBoolL(TPtrC(LOCATION_USE_PULSE_DIAL), EFalse); 
	view->WriteBoolL(TPtrC(LOCATION_WAIT_FOR_DIAL_TONE), EFalse); 
 
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return LocId;
}
 
TUint32 CreateBearerL(CCommsDatabase* db)
{
	_LIT(KAgentName, "wsocka.agt");
	_LIT(KIfName, "wsocki");
	_LIT(KLddName, "foo");
	_LIT(KBearerName, "MyAP Bearer");
 
	TUint32 BearerId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(LAN_BEARER)); 
	User::LeaveIfError(view->InsertRecord(BearerId));
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KBearerName); 
	view->WriteTextL(TPtrC(IF_NAME), KIfName); 
	view->WriteTextL(TPtrC(LAN_BEARER_LDD_NAME), KIfName); 
	view->WriteTextL(TPtrC(LAN_BEARER_PDD_NAME), KIfName); 
	view->WriteTextL(TPtrC(AGENT_NAME), KAgentName); 
	
	view->WriteUintL(TPtrC(LAST_SOCKET_ACTIVITY_TIMEOUT), -1);
	view->WriteUintL(TPtrC(LAST_SESSION_CLOSED_TIMEOUT), -1);
	view->WriteUintL(TPtrC(LAST_SOCKET_CLOSED_TIMEOUT), -1);
	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return BearerId;
}
 
TUint32 CreateNetworkL(CCommsDatabase* db)
{
	_LIT(KNetName, "MyAP Network");
	TUint32 NetId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(NETWORK)); 
	User::LeaveIfError(view->InsertRecord(NetId));
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KNetName); 
	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return NetId;
}
 
void CreateConnectionPreferencesL(CCommsDatabase* db, TUint32 Iap)
{
	CCommsDbConnectionPrefTableView * view = 
	db->OpenConnectionPrefTableLC(ECommDbConnectionDirectionOutgoing); 
	
	CCommsDbConnectionPrefTableView::TCommDbIapBearer bearerinfo;
	bearerinfo.iBearerSet=-1;		
	bearerinfo.iIapId=Iap;
	
	CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref pref;
	pref.iRanking=0;
	pref.iDirection=ECommDbConnectionDirectionOutgoing;
	pref.iDialogPref =ECommDbDialogPrefDoNotPrompt; 
	pref.iBearer=bearerinfo;
	
	view->InsertConnectionPreferenceL(pref);
	delete view;
	
}
 
 
 
TUint32 CreateIAPL(CCommsDatabase* db, TUint32 Bearer, TUint32 Network, 
                       TUint32 Service, TUint32 Location)
{
	_LIT(KIAPName,  "MyAP");
	TUint32 IapId;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(IAP)); 
	User::LeaveIfError(view->InsertRecord(IapId));
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KIAPName); 
	view->WriteTextL(TPtrC(IAP_SERVICE_TYPE), TPtrC(OUTGOING_GPRS));
	view->WriteTextL(TPtrC(IAP_BEARER_TYPE), TPtrC(LAN_BEARER));
	view->WriteUintL(TPtrC(IAP_BEARER), Bearer);
	view->WriteUintL(TPtrC(IAP_NETWORK), Network);
	view->WriteUintL(TPtrC(IAP_SERVICE), Service);
	view->WriteUintL(TPtrC(LOCATION), Location);
	view->WriteUintL(TPtrC(IAP_NETWORK_WEIGHTING), 0);
	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
	
	return IapId;
}
 
void CreateWapIPBearerL(CCommsDatabase* db, TUint32 Iap, TUint32 WapIap)
{
	_LIT(KWapBearer, "MyAP Wap Bearer");
	TUint32 Id;
	CCommsDbTableView* view = db->OpenTableLC(TPtrC(WAP_IP_BEARER)); 
	User::LeaveIfError(view->InsertRecord(Id));
	
	view->WriteTextL(TPtrC(COMMDB_NAME), KWapBearer); 
	view->WriteUintL(TPtrC(IAP), Iap);
	view->WriteUintL(TPtrC(WAP_ACCESS_POINT_ID), WapIap);
	view->WriteUintL(TPtrC(WAP_WSP_OPTION), EWapWspOptionConnectionless);
	view->WriteBoolL(TPtrC(WAP_SECURITY), EFalse); \
	view->WriteTextL(TPtrC(WAP_GATEWAY_ADDRESS), _L("0.0.0.0")); 
	view->WriteUintL(TPtrC(WAP_PROXY_PORT), 0);
	
	User::LeaveIfError(view->PutRecordChanges());
	delete view;
}
 
void CreateNewIAP()
{
	CCommsDatabase* db=CCommsDatabase::NewL();
	
	TUint32 Bearer=CreateBearerL(db);
	TUint32 Network=CreateNetworkL(db);
	TUint32 Service=CreateGprsServiceL(db);
	TUint32 Location=CreateLocationL(db);
	TUint32 Iap=CreateIAPL(db, Bearer, Network, Service, Location);
	
	CreateConnectionPreferencesL(db, Iap);
	
	TUint32 WapAp=CreateWapApL(db);
	CreateWapIPBearerL(db,Iap,WapAp);
	
	delete db;
}


Need to link with commdb.lib in the .mmp file.

LIBRARY commdb.lib

The code requires WriteDeviceData capability to run on devices based on Symbian OS v9.

Related Link

 
Powered by MediaWiki
     
     RDF Facets:
     
     
     qfnZtypeQUqfnTypeZCommunityContentQ
     qfnZtypeQUqfnTypeZWebpageQ
     qfnZtypeQUqfnTypeZWikiContentQ
     qmarsZlanguageQUxhttpE3aE2fE2fswE2enokiaE2ecomE2flanguageE2d1E2fenX