diff -r 43e37759235e -r 51a74ef9ed63 Symbian3/SDK/Source/GUID-3101392C-A9FF-5F56-8872-5A03D053565E.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/SDK/Source/GUID-3101392C-A9FF-5F56-8872-5A03D053565E.dita Wed Mar 31 11:11:55 2010 +0100 @@ -0,0 +1,70 @@ + + + + + + Using a Management Plane session to query all Access Points: Tutorial

The RConnectionServ API has to be accessed through the Sockets Server client API, so you need to ensure that esock.lib is included in the MMP file.

Querying the status of an Access Point

The RConnectionServ::AccessPointStatusQuery() function retrieves information about the properties of one or more Access Points from the attached Tier specified earlier using the previous Connect() function.

RConnectionServ::AccessPointStatusQuery(const + CConnectionServParameterBundle& aQuery, CConnectionServParameterBundle& + aResult, TRequestStatus& aStatus)

The parameter aQuery is an ‘In’ parameter. It is created and deleted by the caller, CConnectionServParameterBundle, of this function. The parameter will be deleted after completing the Access Point status query. The parameter contains structured data types in CConnectionServParameterSetContainers and XParameterSet -derived types. These data types specify the group of Access Points to be returned and the information about the Access Points to be queried.

The parameter aResult is an ‘Out’ parameter. It is created and deleted by the caller, CConnectionServParameterBundle, of this function. The parameter will be deleted after completing the Access Point status query.

The time taken to complete the query depends on the implementation of the Tiers Manager stack plug-in that serves the request. It is an asynchronous request. There can only be one outstanding query at a time. Further queries before completion of an outstanding query result in KErrInUse.

Cancelling an Access Point status query

RConnectionServ::CancelAccessPointStatusQuery()

This function cancels the current Access Point status query.

Example Code

The following example shows how to find information about all the Access Points that are known to the device.

+// Start the session as mentioned in starting a session + +// Create bundle (This bundle is owned by this class so the destructor of this class +// must delete the bundle) +iQueryBundle = CConnectionServParameterBundle::NewL(); + + +// Set up the filter for our query +TAccessPointStatusFilter availFilter; + +// a) We want to match against this attribute +availFilter.Configured(EAccessPointFlagMatchTrue); + +// b) Don’t even try to find these things out as we’re not interested at present +availFilter.Restricted(EAccessPointFlagIgnore); +availFilter.Available(EAccessPointFlagIgnore); +availFilter.Started(EAccessPointFlagIgnore); + +// Call helper function to create query structure +iQueryBundle->AddMatchConditionL(availFilter); + +// Call helper function to specify what we want to get for each Access Point +iQueryBundle->AddParameterSetToReturnL(XAccessPointGenericParameterSet::TypeId()); + +// Create container for result +iStatusBundle = CConnectionServParameterBundle::NewL(); + +// Make call- the iStatus is a TRequestStatus owned by your active object +iConnServ.AccessPointStatusQuery(*iQueryBundle, *iStatusBundle, iStatus); +

At this point, a return to the Active Scheduler is necessary because the query uses active objects. So the passed in TRequestStatus functions are not completed until those active objects have run.

The RunL() of the active object runs on completion of the AccessPointStatusQuery() call, as shown below:

+/*virtual*/ +void CMyActiveObjectClass::RunL() + { + // Some function to handle errors + MyErrorHandler(iStatus.Int()); + + // Process results + CConnectionServParameterSetContainer* parSetCtr; + TInt i=0; + while(parSetCtr = iStatusBundle->GetParamSetContainer(i++)) + { +XAccessPointGenericParameterSet* genParamSet = + XAccessPointGenericParameterSet::FindInParamSetContainer(parSetCtr); + + if(!genParamSet) continue; + TUint apId = genParamSet->AccessPointInfo().AccessPoint(); + TAccessPointStatus apStatus = genParamSet->AccessPointStatus(); + + // Your function to process result + ProcessResult(apId,apStatus); + } +} + +// Later, in the destructor of this class, the bundles must be deleted +delete iQueryBundle; +delete iStatusBundle;
\ No newline at end of file