--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cmmanager/cmmgr/cmmapi/src/cmmanager.cpp Mon May 03 12:53:07 2010 +0300
@@ -0,0 +1,918 @@
+/*
+* 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 RCmManager.
+*
+*/
+
+
+#include <cmmanager.h>
+#include <cmconnectionmethod.h>
+#include <cmdestination.h>
+
+#include "cmmserverdefs.h"
+#include "cmmanagerapi.h"
+#include "cmconnectionmethodwrapper.h"
+#include "cmdestinationwrapper.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cmmanagerTraces.h"
+#endif
+
+
+//-----------------------------------------------------------------------------
+// RCmManager::OpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::OpenL()
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_OPENL_ENTRY );
+
+ OpenLC();
+ CleanupStack::Pop( this );
+
+ OstTraceFunctionExit0( RCMMANAGER_OPENL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::OpenLC()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::OpenLC()
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_OPENLC_ENTRY );
+
+ if ( iCmManagerApi )
+ {
+ User::Leave( KErrAlreadyExists );
+ }
+
+ CleanupClosePushL( *this );
+ iCmManagerApi = new (ELeave) RCmManagerApi();
+ User::LeaveIfError( iCmManagerApi->Connect() );
+
+ OstTraceFunctionExit0( RCMMANAGER_OPENLC_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::Close()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::Close()
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_CLOSE_ENTRY );
+
+ if ( iCmManagerApi )
+ {
+ iCmManagerApi->Close();
+ delete iCmManagerApi;
+ iCmManagerApi = NULL;
+ }
+
+ OstTraceFunctionExit0( RCMMANAGER_CLOSE_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CreateTablesAndOpenL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::CreateTablesAndOpenL()
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_CREATETABLESANDOPENL_ENTRY );
+ OpenL();
+ OstTraceFunctionExit0( RCMMANAGER_CREATETABLESANDOPENL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::ConnectionMethodL(
+ TUint32 aConnectionMethodId ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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 );
+ }
+
+ RCmConnectionMethod cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGER_CONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::GetBearerInfoIntL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOINTL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetBearerInfoInt( aBearerType, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOINTL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManager::GetBearerInfoBoolL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_GETBEARERINFOBOOLL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TBool value( 0 );
+ TInt err = iCmManagerApi->GetBearerInfoBool( aBearerType, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_GETBEARERINFOBOOLL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetBearerInfoStringL(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_GETBEARERINFOSTRINGL_EXIT );
+ return buffer;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetBearerInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManager::GetBearerInfoString8L(
+ TUint32 aBearerType,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_GETBEARERINFOSTRING8L_EXIT );
+ return buffer8;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoIntL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::GetConnectionMethodInfoIntL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOINTL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoInt( aIapId, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOINTL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoBoolL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TBool RCmManager::GetConnectionMethodInfoBoolL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_GETCONNECTIONMETHODINFOBOOLL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TBool value( 0 );
+ TInt err = iCmManagerApi->GetConnectionMethodInfoBool( aIapId, aAttribute, value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_GETCONNECTIONMETHODINFOBOOLL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoStringL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetConnectionMethodInfoStringL(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_GETCONNECTIONMETHODINFOSTRINGL_EXIT );
+ return buffer;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetConnectionMethodInfoString8L()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* RCmManager::GetConnectionMethodInfoString8L(
+ TUint32 aIapId,
+ TUint32 aAttribute ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_GETCONNECTIONMETHODINFOSTRING8L_EXIT );
+ return buffer8;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::CreateDestinationL(
+ const TDesC& aName )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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 );
+
+ RCmDestination dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ OstTraceFunctionExit0( RCMMANAGER_CREATEDESTINATIONL_EXIT );
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
+ TUint32 aBearerType )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_CREATECONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ CCmConnectionMethodWrapper* cmWrapper = CCmConnectionMethodWrapper::NewLC();
+ cmWrapper->CreateConnMethodL( iCmManagerApi, aBearerType );
+ CleanupStack::Pop( cmWrapper );
+
+ RCmConnectionMethod cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( RCMMANAGER_CREATECONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CopyConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManager::CopyConnectionMethodL(
+ RCmDestination& aTargetDestination,
+ RCmConnectionMethod& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_COPYCONNECTIONMETHODL_EXIT );
+ return index;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::MoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TInt RCmManager::MoveConnectionMethodL(
+ RCmDestination& aSourceDestination,
+ RCmDestination& aTargetDestination,
+ RCmConnectionMethod& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_MOVECONNECTIONMETHODL_EXIT );
+ return pkgData.iIndex;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::RemoveConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::RemoveConnectionMethodL(
+ RCmDestination& aDestination,
+ RCmConnectionMethod& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_REMOVECONNECTIONMETHODL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::RemoveAllReferencesL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::RemoveAllReferencesL(
+ RCmConnectionMethod& aConnectionMethod )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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( RCMMANAGER_REMOVEALLREFERENCESL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::ConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ConnectionMethodL(
+ RArray<TUint32>& aCmArray,
+ TBool aCheckBearerType,
+ TBool aLegacyOnly,
+ TBool aEasyWlan ) const
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGER_CONNECTIONMETHODL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TCmmIpcStructGetConnMethods parameters;
+ parameters.iCheckBearerType = aCheckBearerType;
+ parameters.iLegacyOnly = aLegacyOnly;
+ parameters.iEasyWlan = aEasyWlan;
+
+ iCmManagerApi->GetConnMethodsL( parameters, aCmArray );
+
+ OstTraceFunctionExit0( RCMMANAGER_CONNECTIONMETHODL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::AllDestinationsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::AllDestinationsL( RArray<TUint32>& aDestArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_ALLDESTINATIONSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->GetAllDestinationsL( aDestArray );
+
+ OstTraceFunctionExit0( RCMMANAGER_ALLDESTINATIONSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::DestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::DestinationL( TUint32 aDestinationId ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_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 );
+ }
+
+ RCmDestination dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::BearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::BearerPriorityArrayL(
+ RArray<TBearerPriority>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_BEARERPRIORITYARRAYL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->GetBearerPriorityArrayL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGER_BEARERPRIORITYARRAYL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::UpdateBearerPriorityArrayL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::UpdateBearerPriorityArrayL(
+ const RArray<TBearerPriority>& aArray )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ iCmManagerApi->SetBearerPriorityArrayL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGER_UPDATEBEARERPRIORITYARRAYL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CleanupGlobalPriorityArray()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::CleanupGlobalPriorityArray(
+ RArray<TBearerPriority>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_ENTRY );
+
+ for ( TInt i = 0; i < aArray.Count(); i++ )
+ {
+ delete aArray[i].iServiceType;
+ }
+ aArray.Reset();
+ aArray.Close();
+
+ OstTraceFunctionExit0( RCMMANAGER_CLEANUPGLOBALPRIORITYARRAY_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::SupportedBearersL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::SupportedBearersL( RArray<TUint32>& aArray ) const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_SUPPORTEDBEARERSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+ iCmManagerApi->GetSupportedBearersL( aArray );
+
+ OstTraceFunctionExit0( RCMMANAGER_SUPPORTEDBEARERSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::EasyWlanIdL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 RCmManager::EasyWlanIdL() const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_EASYWLANIDL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TUint32 value( 0 );
+ TInt err = iCmManagerApi->GetEasyWlanId( value );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_EASYWLANIDL_EXIT );
+ return value;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::ReadDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ReadDefConnL(
+ TCmDefConnValue& aDefConnSetting )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_READDEFCONNL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->ReadDefaultConnection( aDefConnSetting );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_READDEFCONNL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::WriteDefConnL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::WriteDefConnL(
+ const TCmDefConnValue& aDefConnSetting )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_WRITEDEFCONNL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->WriteDefaultConnection( aDefConnSetting );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_WRITEDEFCONNL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::ReadGenConnSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::ReadGenConnSettingsL(
+ TCmGenConnSettings& aGenConnSettings )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_READGENCONNSETTINGSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->ReadGeneralConnectionSettings( aGenConnSettings );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_READGENCONNSETTINGSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::WriteGenConnSettingsL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C void RCmManager::WriteGenConnSettingsL(
+ const TCmGenConnSettings& aGenConnSettings )
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_WRITEGENCONNSETTINGSL_ENTRY );
+
+ if ( !iCmManagerApi )
+ {
+ User::Leave( KErrBadHandle );
+ }
+
+ TInt err = iCmManagerApi->WriteGeneralConnectionSettings( aGenConnSettings );
+ User::LeaveIfError( err );
+
+ OstTraceFunctionExit0( RCMMANAGER_WRITEGENCONNSETTINGSL_EXIT );
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CreateDestinationL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmDestination RCmManager::CreateDestinationL(
+ const TDesC& aName,
+ TUint32 aDestId )
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGER_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 );
+
+ RCmDestination dest;
+ dest.iCmDestinationWrapper = destWrap;
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGER_CREATEDESTINATIONL_EXIT );
+ return dest;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::CreateConnectionMethodL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C RCmConnectionMethod RCmManager::CreateConnectionMethodL(
+ TUint32 aBearerType,
+ TUint32 aConnMethodId )
+ {
+ OstTraceFunctionEntry0( DUP1_RCMMANAGER_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 );
+
+ RCmConnectionMethod cm;
+ cm.iCmConnectionMethodWrapper = cmWrapper;
+
+ OstTraceFunctionExit0( DUP1_RCMMANAGER_CREATECONNECTIONMETHODL_EXIT );
+ return cm;
+ }
+
+//-----------------------------------------------------------------------------
+// RCmManager::GetUncategorizedIconL()
+//-----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* RCmManager::GetUncategorizedIconL() const
+ {
+ OstTraceFunctionEntry0( RCMMANAGER_GETUNCATEGORIZEDICONL_ENTRY );
+
+ User::Leave( KErrNotSupported );
+
+ OstTraceFunctionExit0( RCMMANAGER_GETUNCATEGORIZEDICONL_EXIT );
+ return NULL;
+ }
+
+// End of file