Symbianではcmwap接続点を自動的に探し,uiq 2 nd 3 ndとs 60 2 nd 3 nd 5 ndを殺す
6812 ワード
全テストしましたが、携帯電話の型番が多すぎて、一つ一つのテストがありません.接続ポイントが見つからないので、自動的に作成するべきですが、これは証明書が必要で、書いていません.
今日、ブラシをかけた5800がつながっていないことに気づきました.2級検索では、名前を比較する必要があります.
//利用可能な接続点を探し、UIQはSymbianとは異なる
TBool NewCClientEngine::FindIapId(TUint32& iapId)
{
iapId = 0;
#ifdef __WINS__
iapId = 1;
#elif UIQ30
jstring cmwapname;
// APN
CCommsDatabase* const comm_db = CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(comm_db);
CCommsDbTableView *iap_table_view = comm_db->OpenTableLC(TPtrC(OUTGOING_WCDMA));
TBuf<50> iap_name_buf;
TBuf<50> cmwap_str;
TBuf<32> apn;
TUint32 iap_id = -1;
TBuf<100> log;
// switch pointer to the first iap record
if(iap_table_view->GotoFirstRecord() == KErrNone)
{
// search comm_db for cmnet iap
do
{
// get the iap name from comm_db
iap_name_buf.SetLength(0);
iap_table_view->ReadTextL(TPtrC(COMMDB_NAME), iap_name_buf);
iap_table_view->ReadTextL(TPtrC(GPRS_APN), apn);
// test the cmnet iap name
DEBUGING(iap_name_buf);
DEBUGING(apn);
if( apn == _L("cmwap") )
{
cmwapname = iap_name_buf;
iap_table_view->ReadUintL(TPtrC(COMMDB_ID), iap_id);
log.Format(_L("id = %d"),iap_id);
DEBUGING(log);
break;
}
}while (KErrNone == iap_table_view->GotoNextRecord());
}
CleanupStack::PopAndDestroy(2, comm_db); // iap_table_view, comm_db
if(cmwapname != _L(""))
{
CCommsDatabase* database = CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(database );
CCommsDbTableView* view = database->OpenTableLC(TPtrC(IAP));
if( view->GotoFirstRecord() == KErrNone )
{
do
{
TBuf<50> accessPointName;
view->ReadTextL(TPtrC(COMMDB_NAME),accessPointName);
DEBUGING(accessPointName);
if(cmwapname == accessPointName)
{
TUint32 id;
view->ReadUintL(TPtrC(COMMDB_ID),id);
log.Format(_L("iapid = %d"),id);
iapId = id;
DEBUGING(log);
break;
}
}while(view->GotoNextRecord()==KErrNone);
}
CleanupStack::PopAndDestroy(view);
CleanupStack::PopAndDestroy(database );
}
#else
CCommsDatabase* const comm_db = CCommsDatabase::NewL(EDatabaseTypeIAP);
CleanupStack::PushL(comm_db);
CCommsDbTableView *iap_table_view = comm_db->OpenTableLC(TPtrC(OUTGOING_WCDMA));
TBuf<20> iap_name_buf;
TBuf<20> iap_name_buf1;
TBuf<20> cmwap_str;
TBuf<100> cmwap_username;
TBuf<100> cmwap_userpass;
TBuf<32> apn;
TUint32 iap_id = -1;
TBuf<100> log;
// switch pointer to the first iap record
if(iap_table_view->GotoFirstRecord() == KErrNone)
{
// search comm_db for cmnet iap
do
{
// get the iap name from comm_db
iap_name_buf.SetLength(0);
iap_table_view->ReadTextL(TPtrC(COMMDB_NAME), iap_name_buf);
iap_table_view->ReadTextL(TPtrC(GPRS_APN), apn);
iap_table_view->ReadTextL(TPtrC(GPRS_IF_AUTH_PASS), cmwap_userpass);
iap_table_view->ReadTextL(TPtrC(GPRS_IF_AUTH_NAME), cmwap_username);
// test the cmnet iap name
DEBUGING(iap_name_buf);
DEBUGING(cmwap_userpass);
DEBUGING(cmwap_username);
DEBUGING(apn);
if( apn == _L("cmwap") && cmwap_userpass.Length()==0 && cmwap_username.Length()==0 )
{
iap_table_view->ReadUintL(TPtrC(COMMDB_ID), iap_id);
CCommsDbTableView* pIAPView = comm_db->OpenViewMatchingUintLC(TPtrC(IAP), TPtrC(IAP_SERVICE), iap_id);
TInt nErr = pIAPView->GotoFirstRecord();
while(nErr == KErrNone)
{
pIAPView->ReadTextL(TPtrC(COMMDB_NAME), iap_name_buf1);
DEBUGING(iap_name_buf1);
if(iap_name_buf1 == iap_name_buf)
{
pIAPView->ReadUintL(TPtrC(COMMDB_ID), iap_id);
iapId= iap_id;
DEBUGING(_L("find iap..."));
}
nErr = pIAPView->GotoNextRecord();
}
CleanupStack::PopAndDestroy(); //pIAPView
}
}while (KErrNone == iap_table_view->GotoNextRecord());
}
CleanupStack::PopAndDestroy(2, comm_db); // iap_table_view, comm_db
if( iap_id < 0)
{
ERRORING(_L("can't find iap"));
}
#endif
return (iapId > 0);
}