--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmmanagerext.cpp Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,862 @@
+/*
+* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Implementation of RCmManagerExt.
+*
+*/
+
+
+#include <cmmanagerext.h>
+#include <cmconnectionmethodext.h>
+#include <cmdestinationext.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmconnectionmethodwrapper.h"
+#include "cmdestinationwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerextTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::OpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::OpenL()
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_OPENL_ENTRY );
+
+ OpenLC();
+ CleanupStack::Pop( this );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_OPENL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::OpenLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::OpenLC()
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_OPENLC_ENTRY );
+
+ if ( iCmManagerApi )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ CleanupClosePushL( *this );
+ iCmManagerApi = new (ELeave) RCmManagerApi();
+ User::LeaveIfError( iCmManagerApi->Connect() );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_OPENLC_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::Close()
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CLOSE_ENTRY );
+
+ if ( iCmManagerApi )
+ {
+ iCmManagerApi->Close();
+ delete iCmManagerApi;
+ iCmManagerApi = NULL;
+ }
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_CLOSE_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CreateTablesAndOpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::CreateTablesAndOpenL()
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CREATETABLESANDOPENL_ENTRY );
+ OpenL();
+ OstTraceFunctionExit0( RCMMANAGEREXT_CREATETABLESANDOPENL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::ConnectionMethodL(
+ TUint32 aConnectionMethodId )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( !( ( aConnectionMethodId > KCmmConnMethodIdIntervalMin ) &&
+ ( aConnectionMethodId < KCmmConnMethodIdIntervalMax ) ) )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ // If client already has a handle open to this connection method, give a
+ // reference to it.
+ CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+ TInt existingHandle( 0 );
+ cmWrapper->GetConnMethodWithIdL( iCmManagerApi, aConnectionMethodId, existingHandle );
+ if ( existingHandle )
+ {
+ CleanupStack::PopAndDestroy( cmWrapper );
+ cmWrapper = iCmManagerApi->GetConnMethodWrapperL( existingHandle );
+ cmWrapper->IncreaseReferenceCounter();
+ }
+ else
+ {
+ CleanupStack::Pop( cmWrapper );
+ }
+
+ RCmConnectionMethodExt cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_CONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetBearerInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::GetBearerInfoIntL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOINTL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetBearerInfoInt( aBearerType, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOINTL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetBearerInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManagerExt::GetBearerInfoBoolL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOBOOLL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TBool value( 0 );
+ TInt err = iCmManagerApi->GetBearerInfoBool( aBearerType, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOBOOLL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetBearerInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManagerExt::GetBearerInfoStringL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOSTRINGL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+ TInt err = iCmManagerApi->GetBearerInfoString( aBearerType, aAttribute, buffer );
+ User::LeaveIfError( err );
+
+ if ( buffer->Length() > 0 )
+ {
+ CleanupStack::Pop( buffer );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( buffer );
+ buffer = NULL;
+ buffer = KNullDesC().AllocL();
+ }
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOSTRINGL_EXIT );
+ return buffer;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetBearerInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManagerExt::GetBearerInfoString8L(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETBEARERINFOSTRING8L_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+ TInt err = iCmManagerApi->GetBearerInfoString8( aBearerType, aAttribute, buffer8 );
+ User::LeaveIfError( err );
+
+ if ( buffer8->Length() > 0 )
+ {
+ CleanupStack::Pop( buffer8 );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( buffer8 );
+ buffer8 = NULL;
+ buffer8 = KNullDesC8().AllocL();
+ }
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETBEARERINFOSTRING8L_EXIT );
+ return buffer8;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetConnectionMethodInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::GetConnectionMethodInfoIntL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoInt( aIapId, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOINTL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetConnectionMethodInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManagerExt::GetConnectionMethodInfoBoolL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TBool value( 0 );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoBool( aIapId, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOBOOLL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetConnectionMethodInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManagerExt::GetConnectionMethodInfoStringL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ HBufC* buffer = HBufC::NewLC( KCmmStringLengthMax );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoString( aIapId, aAttribute, buffer );
+ User::LeaveIfError( err );
+
+ if ( buffer->Length() > 0 )
+ {
+ CleanupStack::Pop( buffer );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( buffer );
+ buffer = NULL;
+ buffer = KNullDesC().AllocL();
+ }
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRINGL_EXIT );
+ return buffer;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::GetConnectionMethodInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManagerExt::GetConnectionMethodInfoString8L(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ HBufC8* buffer8 = HBufC8::NewLC( KCmmStringLengthMax );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoString8( aIapId, aAttribute, buffer8 );
+ User::LeaveIfError( err );
+
+ if ( buffer8->Length() > 0 )
+ {
+ CleanupStack::Pop( buffer8 );
+ }
+ else
+ {
+ CleanupStack::PopAndDestroy( buffer8 );
+ buffer8 = NULL;
+ buffer8 = KNullDesC8().AllocL();
+ }
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_GETCONNECTIONMETHODINFOSTRING8L_EXIT );
+ return buffer8;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::CreateDestinationL(
+ const TDesC& aName )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( aName.Length() == 0 )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+ destWrap->CreateDestByNameL( iCmManagerApi, aName );
+ CleanupStack::Pop( destWrap );
+
+ RCmDestinationExt dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_CREATEDESTINATIONL_EXIT );
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(
+ TUint32 aBearerType )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+ cmWrapper->CreateConnMethodL( iCmManagerApi, aBearerType );
+ CleanupStack::Pop( cmWrapper );
+
+ RCmConnectionMethodExt cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CopyConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManagerExt::CopyConnectionMethodL(
+ RCmDestinationExt& aTargetDestination,
+ RCmConnectionMethodExt& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_COPYCONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( !aTargetDestination.iCmDestinationWrapper ||
+ !aConnectionMethod.iCmConnectionMethodWrapper )
+ {
+ User::Leave( KErrArgument );
+ }
+ if ( !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+ !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt index( 0 );
+ TInt targetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+ TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+ TInt err = iCmManagerApi->CopyConnectionMethod( targetDestHandle, connMethodHandle, index );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_COPYCONNECTIONMETHODL_EXIT );
+ return index;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::MoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManagerExt::MoveConnectionMethodL(
+ RCmDestinationExt& aSourceDestination,
+ RCmDestinationExt& aTargetDestination,
+ RCmConnectionMethodExt& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_MOVECONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( !aSourceDestination.iCmDestinationWrapper ||
+ !aTargetDestination.iCmDestinationWrapper ||
+ !aConnectionMethod.iCmConnectionMethodWrapper )
+ {
+ User::Leave( KErrArgument );
+ }
+ if ( !aSourceDestination.iCmDestinationWrapper->SessionConnected() ||
+ !aTargetDestination.iCmDestinationWrapper->SessionConnected() ||
+ !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TCmmIpcStructMoveConnMethod pkgData;
+ pkgData.iSourceDestHandle = aSourceDestination.iCmDestinationWrapper->GetHandle();
+ pkgData.iTargetDestHandle = aTargetDestination.iCmDestinationWrapper->GetHandle();
+ pkgData.iConnMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+ pkgData.iIndex = 0;
+
+ TInt err = iCmManagerApi->MoveConnectionMethod( pkgData );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_MOVECONNECTIONMETHODL_EXIT );
+ return pkgData.iIndex;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::RemoveConnectionMethodL(
+ RCmDestinationExt& aDestination,
+ RCmConnectionMethodExt& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_REMOVECONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( !aDestination.iCmDestinationWrapper ||
+ !aConnectionMethod.iCmConnectionMethodWrapper )
+ {
+ User::Leave( KErrArgument );
+ }
+ if ( !aDestination.iCmDestinationWrapper->SessionConnected() ||
+ !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt targetDestHandle = aDestination.iCmDestinationWrapper->GetHandle();
+ TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+ TInt err = iCmManagerApi->RemoveConnectionMethod( targetDestHandle, connMethodHandle );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_REMOVECONNECTIONMETHODL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::RemoveAllReferencesL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::RemoveAllReferencesL(
+ RCmConnectionMethodExt& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_REMOVEALLREFERENCESL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( !aConnectionMethod.iCmConnectionMethodWrapper ||
+ !aConnectionMethod.iCmConnectionMethodWrapper->SessionConnected() )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt connMethodHandle = aConnectionMethod.iCmConnectionMethodWrapper->GetHandle();
+ TInt err = iCmManagerApi->RemoveAllReferences( connMethodHandle );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_REMOVEALLREFERENCESL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::ConnectionMethodL(
+ RArray<TUint32>& aCmArray,
+ TBool aCheckBearerType,
+ TBool aLegacyOnly,
+ TBool aEasyWlan )
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TCmmIpcStructGetConnMethods parameters;
+ parameters.iCheckBearerType = aCheckBearerType;
+ parameters.iLegacyOnly = aLegacyOnly;
+ parameters.iEasyWlan = aEasyWlan;
+
+ iCmManagerApi->GetConnMethodsL( parameters, aCmArray );
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CONNECTIONMETHODL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::AllDestinationsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::AllDestinationsL( RArray<TUint32>& aDestArray )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_ALLDESTINATIONSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->GetAllDestinationsL( aDestArray );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_ALLDESTINATIONSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::DestinationL( TUint32 aDestinationId )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_DESTINATIONL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ // If client already has a handle open to this destination, give a
+ // reference to it.
+ CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+ TInt existingHandle( 0 );
+ destWrap->GetDestWithIdL( iCmManagerApi, aDestinationId, existingHandle );
+ if ( existingHandle )
+ {
+ CleanupStack::PopAndDestroy( destWrap );
+ destWrap = iCmManagerApi->GetDestinationWrapperL( existingHandle );
+ destWrap->IncreaseReferenceCounter();
+ }
+ else
+ {
+ CleanupStack::Pop( destWrap );
+ }
+
+ RCmDestinationExt dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_DESTINATIONL_EXIT );
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::BearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::BearerPriorityArrayL(
+ RArray<TBearerPriority>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_BEARERPRIORITYARRAYL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->GetBearerPriorityArrayL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_BEARERPRIORITYARRAYL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::UpdateBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::UpdateBearerPriorityArrayL(
+ const RArray<TBearerPriority>& aArray )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->SetBearerPriorityArrayL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_UPDATEBEARERPRIORITYARRAYL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CleanupGlobalPriorityArray()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::CleanupGlobalPriorityArray(
+ RArray<TBearerPriority>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_ENTRY );
+
+ for ( TInt i = 0; i < aArray.Count(); i++ )
+ {
+ delete aArray[i].iServiceType;
+ }
+ aArray.Reset();
+ aArray.Close();
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_CLEANUPGLOBALPRIORITYARRAY_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::SupportedBearersL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::SupportedBearersL( RArray<TUint32>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_SUPPORTEDBEARERSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+ iCmManagerApi->GetSupportedBearersL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_SUPPORTEDBEARERSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::EasyWlanIdL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManagerExt::EasyWlanIdL()
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_EASYWLANIDL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetEasyWlanId( value );
+ User::LeaveIfError( err );
+ OstTraceFunctionExit0( RCMMANAGEREXT_EASYWLANIDL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::ReadDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::ReadDefConnL( TCmDefConnValue& aDefConnSetting )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_READDEFCONNL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->ReadDefaultConnection( aDefConnSetting );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_READDEFCONNL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::WriteDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManagerExt::WriteDefConnL( const TCmDefConnValue& aDefConnSetting )
+ {
+ OstTraceFunctionEntry0( RCMMANAGEREXT_WRITEDEFCONNL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->WriteDefaultConnection( aDefConnSetting );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGEREXT_WRITEDEFCONNL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestinationExt RCmManagerExt::CreateDestinationL(
+ const TDesC& aName,
+ TUint32 aDestId )
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_ENTRY );
+
+ if ( aDestId == 0 )
+ {
+ return CreateDestinationL( aName );
+ }
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ if ( aName.Length() == 0 )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TUint32 adjustedDestId( 0 );
+ if ( aDestId > KCmmDestIdIntervalLegacyMin && aDestId < KCmmDestIdIntervalLegacyMax )
+ {
+ adjustedDestId = aDestId + KCmDefaultDestinationAPTagId;
+ }
+ else if ( aDestId > KCmmDestIdIntervalMin && aDestId < KCmmDestIdIntervalMax )
+ {
+ adjustedDestId = aDestId;
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+
+ CCmDestinationWrapper* destWrap = CCmDestinationWrapper::NewLC();
+ destWrap->CreateDestByNameAndIdL( iCmManagerApi, aName, adjustedDestId );
+ CleanupStack::Pop( destWrap );
+
+ RCmDestinationExt dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CREATEDESTINATIONL_EXIT );
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManagerExt::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethodExt RCmManagerExt::CreateConnectionMethodL(
+ TUint32 aBearerType,
+ TUint32 aConnMethodId )
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_ENTRY );
+
+ if ( aConnMethodId == 0 )
+ {
+ return CreateConnectionMethodL( aBearerType );
+ }
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+ if ( !( aConnMethodId > KCmmConnMethodIdIntervalMin &&
+ aConnMethodId < KCmmConnMethodIdIntervalMax ) )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+ cmWrapper->CreateConnMethodWithIdL( iCmManagerApi, aBearerType, aConnMethodId );
+ CleanupStack::Pop( cmWrapper );
+
+ RCmConnectionMethodExt cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGEREXT_CREATECONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+// End of file