anybody could help me on creating IAP?

Login to reply to this topic.
Fri, 2006-02-17 03:50
Joined: 2005-04-18
Forum posts: 7
i have watched quite a number of topics abt the creating the IAP. Iam also facing the same problem for a long time. i m using the method below to create IAP same as some of the topics used.

//1)Add record to OUTGOING_GPRS
view = cdb->OpenTableLC(TPtrC(OUTGOING_GPRS));
view->InsertRecord(gprsId);
view->WriteTextL(TPtrC(COMMDB_NAME), _L("internet"));
view->WriteBoolL(TPtrC(GPRS_IF_PROMPT_FOR_AUTH), ETrue);
view->WriteBoolL(TPtrC(GPRS_IP_ADDR_FROM_SERVER), ETrue);
view->WriteBoolL(TPtrC(GPRS_IP_DNS_ADDR_FROM_SERVER), ETrue);
view->WriteTextL(TPtrC(GPRS_IP_GATEWAY), _L("0.0.0.0"));
view->WriteTextL(TPtrC(GPRS_IF_AUTH_NAME), _L(""));
view->WriteTextL(TPtrC(GPRS_IF_AUTH_PASS),_L(""));
view->WriteTextL(TPtrC(GPRS_APN), _L("internet"));
.........
........
etc...  Afro

//2)Add record to NETWORK
TUint32 networkId;
CCommsDatabase* cdb2=CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(cdb2);
CCommsDbTableView* view2 = cdb2->OpenTableLC(TPtrC(NETWORK));
view2->InsertRecord(networkId);
view2->WriteTextL(TPtrC(COMMDB_NAME), _L("internet"));
error = view2->PutRecordChanges(EFalse, EFalse);
CleanupStack::PopAndDestroy(view2);
CleanupStack::PopAndDestroy(cdb2);
view2=NULL;
//3)SEARCH FOR Mobile LOCATION id
TInt result;
......
//4)Create IAP
.....
//5) CREATE WAP_ACCESS_POINT
.....
//6) Create WAP_IP_BEARER
....
so has anybody sloved the problem ? this IAP is a WAP AP , not a GPRS AP , how can I make it as a real GPRS IAP?

Thanks for advices

Fri, 2007-03-16 06:50
Joined: 2007-01-14
Forum posts: 19
Re: anybody could help me on creating IAP?
Hi,

I am able to create access point in uiq 2 through code , but I am not able to delete the access point manualy from the list of access point, while other access point  for example mobile office is deleting. So I want to which API can be used to delete the access point. My code is below.

or suggest me what changes should i made so that I can able to delete access point .


_LIT(KSettingAPN, "internet");
   _LIT(KIAPName,  "MYAccessPoint");

   //_LIT(KSettingAPN, "airtelgprs.com");
   //_LIT(KIAPName,  "MOffice");

   TUint32 gprsId;
   ////CCommsDatabase* db=CCommsDatabase::NewL();         ///////////////////////////////////////////
   CCommsDatabase* db=CCommsDatabase::NewL();
   if(db == NULL)
   User::Exit(KErrNoMemory);

   CleanupStack::PushL(db);

   #ifdef __LOGME__
   LogText.Copy(_L("AddNewAccesspoint 1\n"));
   WriteLogFile(LogText);
   #endif

   CCommsDbTableView* view = db->OpenTableLC(TPtrC(OUTGOING_GPRS));
   if(view == NULL){
      CleanupStack::PopAndDestroy(); // db
      User::Exit(KErrNoMemory);
   }

   User::LeaveIfError(view->InsertRecord(gprsId));

#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 2\n"));
  WriteLogFile(LogText);
#endif

   view->WriteTextL(TPtrC(COMMDB_NAME), KIAPName);
   view->WriteBoolL(TPtrC(GPRS_IF_PROMPT_FOR_AUTH), ETrue);
   view->WriteBoolL(TPtrC(GPRS_IP_ADDR_FROM_SERVER), EFalse);
   view->WriteBoolL(TPtrC(GPRS_IP_DNS_ADDR_FROM_SERVER), EFalse);
   view->WriteTextL(TPtrC(GPRS_IP_GATEWAY), _L("10.10.1.100"));
   view->WriteTextL(TPtrC(GPRS_IF_AUTH_NAME), _L(""));
   view->WriteTextL(TPtrC(GPRS_IF_AUTH_PASS), _L(""));
   view->WriteTextL(TPtrC(GPRS_APN), KSettingAPN);

#ifdef __LOGME__
   LogText.Copy(_L("AddNewAccesspoint 3\n"));
   WriteLogFile(LogText);
#endif

   view->WriteUintL(TPtrC(GPRS_PDP_TYPE), 0);
   view->WriteBoolL(TPtrC(GPRS_IF_PROMPT_FOR_AUTH), EFalse);
   view->WriteTextL(TPtrC(GPRS_IF_NETWORKS), _L("ip"));
   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_USE_EDGE), EFalse);
   view->WriteBoolL(TPtrC(GPRS_ENABLE_LCP_EXTENSIONS), EFalse);
   view->WriteBoolL(TPtrC(GPRS_DISABLE_PLAIN_TEXT_AUTH), EFalse);

#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 4\n"));
  WriteLogFile(LogText);
#endif

   TInt error = view->PutRecordChanges();

#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 5\n"));
  WriteLogFile(LogText);
#endif

   CleanupStack::PopAndDestroy(2); // view, db
   delete view;
   view = NULL;
   delete db;
   db = NULL;
 
#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 6\n"));
  WriteLogFile(LogText);
#endif

  TUint32 iapId;

CCommsDatabase* db2=CCommsDatabase::NewL();
if(db2 == NULL)
   User::Exit(KErrNoMemory);

    CleanupStack::PushL(db2);
    CCommsDbTableView* iapTable = db2->OpenTableLC(TPtrC(IAP));
   if(iapTable == NULL){
      CleanupStack::PopAndDestroy(); // db2
      User::Exit(KErrNoMemory);
   }

    User::LeaveIfError(iapTable->InsertRecord(iapId));  //Start transaction

#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 7\n"));
  WriteLogFile(LogText);
#endif

    iapTable->WriteTextL(TPtrC(COMMDB_NAME),KIAPName);
   //iapTable->WriteTextL(TPtrC(COMMDB_NAME),KSettingAPN);
    iapTable->WriteTextL(TPtrC(IAP_SERVICE_TYPE), TPtrC(OUTGOING_GPRS));
    //iapTable->WriteUintL(TPtrC(IAP_SERVICE), iServiceId);
   iapTable->WriteUintL(TPtrC(IAP_SERVICE), gprsId);
   

#ifdef __LOGME__
  LogText.Copy(_L("AddNewAccesspoint 8\n"));
  WriteLogFile(LogText);
#endif

    User::LeaveIfError(iapTable->PutRecordChanges());  //Submit transaction
    CleanupStack::PopAndDestroy(2); // iapTable, db2
Mon, 2007-03-26 16:21
Joined: 2004-05-21
Forum posts: 42
Re: anybody could help me on creating IAP?
Hi,
that's the way I have done it (2 years ago Wink ).
Maybe the code helps you.

Code:
//TODO Read/Fill all aApItem.Members!!!
void CApDataHandler::AccessPointDataL( TUint32 aUid, CApAccessPointItem& aApItem )
{
CCommsDbTableView* tableIAP = iDb->OpenViewMatchingUintLC(TPtrC(IAP),TPtrC(COMMDB_ID),aUid);

User::LeaveIfError(tableIAP->GotoFirstRecord());

HBufC* CommDBName = HBufC::NewLC(KCommsDbSvrMaxFieldLength);
TPtr CommDBNamePtr(CommDBName->Des());
tableIAP->ReadTextL(TPtrC(COMMDB_NAME), CommDBNamePtr);
aApItem.SetNamesL(*CommDBName);
CleanupStack::PopAndDestroy(CommDBName);

HBufC* IapServiceType = HBufC::NewLC(KCommsDbSvrMaxFieldLength);
TPtr IapServiceTypePtr(IapServiceType->Des());
tableIAP->ReadTextL(TPtrC(IAP_SERVICE_TYPE),IapServiceTypePtr);
aApItem.WriteTextL(EApIapServiceType,*IapServiceType);
//Set BearerType
if (*IapServiceType==TPtrC(OUTGOING_GPRS))
{
aApItem.SetBearerTypeL(EApBearerTypeGPRS);
}
else
{//TODO make a choise if CSD or HSCSD
aApItem.SetBearerTypeL(EApBearerTypeCSD);
}
TUint32 IapServiceId(0);
tableIAP->ReadUintL(TPtrC(IAP_SERVICE),IapServiceId);
aApItem.WriteUint(EApIapServiceId,IapServiceId);

CleanupStack::PopAndDestroy(IapServiceType);

#ifdef __PROXY_SETTINGS
//TODO Nach readProxyData auslagern!
//Proxysetting check
HBufC* SqlQuery = HBufC::NewLC(100); //Max 100 unicode chars
TPtr SqlQueryPtr(SqlQuery->Des());
SqlQueryPtr.AppendFormat(_L("select * from %S "),&TPtrC(PROXIES));
SqlQueryPtr.AppendFormat(_L("where %S=%u "),&TPtrC(PROXY_ISP),IapServiceId);
if (aApItem.BearerTypeL()==EApBearerTypeGPRS)
{
SqlQueryPtr.AppendFormat(_L("and %S='%S' "),&TPtrC(PROXY_SERVICE_TYPE),&TPtrC(OUTGOING_GPRS));
}
else
{
SqlQueryPtr.AppendFormat(_L("and %S='%S' "),&TPtrC(PROXY_SERVICE_TYPE),&TPtrC(DIAL_OUT_ISP));
}
CCommsDbTableView* tablePROXIES = iDb->OpenViewLC(TPtrC(PROXIES),*SqlQuery);
if (tablePROXIES->GotoFirstRecord()==KErrNone)
{
aApItem.SetProxyFlag();
//TODO Felder in ApItem füllen
}
CleanupStack::PopAndDestroy(tablePROXIES);
CleanupStack::PopAndDestroy(SqlQuery);
#endif

//Check if there's a WapAccessPoint referenz to the IAP
//Table: WAP_IP_BEARER
CCommsDbTableView* tableWapIpBearer = iDb->OpenViewMatchingUintLC(TPtrC(WAP_IP_BEARER),TPtrC(WAP_IAP),aUid);
if (tableWapIpBearer->GotoFirstRecord()==KErrNone)
{
TUint32 WapAccessPointId(0);
tableWapIpBearer->ReadUintL(TPtrC(WAP_ACCESS_POINT_ID),WapAccessPointId);
aApItem.WriteUint(EApWapAccessPointID,WapAccessPointId);
//TODO Felder in ApItem füllen
}
CleanupStack::PopAndDestroy(tableWapIpBearer);

CleanupStack::PopAndDestroy(tableIAP);
}

//////////////////////////
void CApDataHandler::RemoveAPL( TUint32 aUid )
{
CCommsDbTableView* tableIAP = iDb->OpenViewMatchingUintLC(TPtrC(IAP),TPtrC(COMMDB_ID),aUid);

CApAccessPointItem* ApItem = new(ELeave)CApAccessPointItem();
CleanupStack::PushL(ApItem);

AccessPointDataL(aUid,*ApItem);

//Now we start with our remove logic
iDb->BeginTransaction();

User::LeaveIfError(tableIAP->GotoFirstRecord());
User::LeaveIfError(tableIAP->DeleteRecord());

// IAP-Table auslesen ob DIAL_OUT oder GPRS
TUint32 IapServiceId(0);
ApItem->ReadUint(EApIapServiceId,IapServiceId);

CCommsDbTableView* tableIapService;
if (ApItem->BearerTypeL()==EApBearerTypeGPRS)
{
tableIapService = iDb->OpenViewMatchingUintLC(TPtrC(OUTGOING_GPRS),TPtrC(COMMDB_ID),IapServiceId);
}
else
{
tableIapService = iDb->OpenViewMatchingUintLC(TPtrC(DIAL_OUT_ISP),TPtrC(COMMDB_ID),IapServiceId);
}
User::LeaveIfError(tableIapService->GotoFirstRecord());
User::LeaveIfError(tableIapService->DeleteRecord());

CleanupStack::PopAndDestroy(tableIapService);

#ifdef __PROXY_SETTINGS
// Prüfen, ob zu COMMDB_ID ein Eintrag in PROXIES ist

if (ApItem->HasProxy())
{
HBufC* SqlQuery = HBufC::NewLC(100); //Max 100 unicode chars
TPtr SqlQueryPtr(SqlQuery->Des());
SqlQueryPtr.AppendFormat(_L("select * from %S "),&TPtrC(PROXIES));
SqlQueryPtr.AppendFormat(_L("where %S=%u "),&TPtrC(PROXY_ISP),IapServiceId);
if (ApItem->BearerTypeL()==EApBearerTypeGPRS)
{
SqlQueryPtr.AppendFormat(_L("and %S='%S' "),&TPtrC(PROXY_SERVICE_TYPE),&TPtrC(OUTGOING_GPRS));
}
else
{
SqlQueryPtr.AppendFormat(_L("and %S='%S' "),&TPtrC(PROXY_SERVICE_TYPE),&TPtrC(DIAL_OUT_ISP));
}
CCommsDbTableView* tablePROXIES = iDb->OpenViewLC(TPtrC(PROXIES),*SqlQuery);
TInt err(0);
err = tablePROXIES->GotoFirstRecord();
err = tablePROXIES->DeleteRecord();
    CleanupStack::PopAndDestroy(tablePROXIES);
CleanupStack::PopAndDestroy(SqlQuery);
}
#endif

//Check if there's a WapAccessPoint referenz to the IAP
if (ApItem->WapUid()>0)
{
//Table: WAP_IP_BEARER
CCommsDbTableView* tableWapIpBearer = iDb->OpenViewMatchingUintLC(TPtrC(WAP_IP_BEARER),TPtrC(WAP_ACCESS_POINT_ID),ApItem->WapUid());
User::LeaveIfError(tableWapIpBearer->GotoFirstRecord());
User::LeaveIfError(tableWapIpBearer->DeleteRecord());
    CleanupStack::PopAndDestroy(tableWapIpBearer);

    //Table: WAP_ACCESS_POINT
CCommsDbTableView* tableWapAccessPoint = iDb->OpenViewMatchingUintLC(TPtrC(WAP_ACCESS_POINT),TPtrC(COMMDB_ID),ApItem->WapUid());
User::LeaveIfError(tableWapAccessPoint->GotoFirstRecord());
User::LeaveIfError(tableWapAccessPoint->DeleteRecord());
    CleanupStack::PopAndDestroy(tableWapAccessPoint);
}


iDb->CommitTransaction();

CleanupStack::PopAndDestroy(ApItem);
CleanupStack::PopAndDestroy(tableIAP);
}
--
Tobias
www.OutBank.de

Tobias.Stoeger

  • Login to reply to this topic.