diff -r 000000000000 -r f63038272f30 bluetoothengine/bteng/btfeatures/btfeatures.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/bteng/btfeatures/btfeatures.cpp Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,93 @@ +/* +* Copyright (c) 2009 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: +* +*/ + + +#include +#include +#include + +/** + Device supports bluetooth data profiles disabled. +*/ +const TInt KFeatureIdTempFfBluetoothDataProfilesDisabled = 0x1000001; + +/** + Device supports bluetooth disabled. +*/ +const TInt KFeatureIdTempFfBluetoothDisabled = 0x1000002; + + +EXPORT_C void BluetoothFeatures::SetEnterpriseEnablementL(BluetoothFeatures::TEnterpriseEnablementMode aMode) + { + // This method is only provided for use by the Bluetooth DCMO plugin. + // Hence we should be running in the DCMO server process. + _LIT_SECURE_ID(KDcmoServerSecureUid, 0x2001FE47); + RProcess proc; + if ( proc.SecureId() != KDcmoServerSecureUid ) + { + User::Leave(KErrPermissionDenied); + } + + const TUid KBtDisabledUid = {KFeatureIdTempFfBluetoothDisabled}; + const TUid KBtDataProfilesDisabledUid = {KFeatureIdTempFfBluetoothDataProfilesDisabled}; + + RFeatureControl featureControl; + User::LeaveIfError(featureControl.Connect()); + CleanupClosePushL(featureControl); + switch ( aMode ) + { + case EDisabled: + User::LeaveIfError(featureControl.EnableFeature(KBtDisabledUid)); + User::LeaveIfError(featureControl.DisableFeature(KBtDataProfilesDisabledUid)); + break; + case EDataProfilesDisabled: + User::LeaveIfError(featureControl.DisableFeature(KBtDisabledUid)); + User::LeaveIfError(featureControl.EnableFeature(KBtDataProfilesDisabledUid)); + break; + case EEnabled: + User::LeaveIfError(featureControl.DisableFeature(KBtDisabledUid)); + User::LeaveIfError(featureControl.DisableFeature(KBtDataProfilesDisabledUid)); + break; + default: + User::Leave(KErrArgument); + break; + } + CleanupStack::PopAndDestroy(&featureControl); + } + +EXPORT_C BluetoothFeatures::TEnterpriseEnablementMode BluetoothFeatures::EnterpriseEnablementL() + { + TEnterpriseEnablementMode mode = EDisabled; + + FeatureManager::InitializeLibL(); + const TBool bluetoothDisabled = FeatureManager::FeatureSupported(KFeatureIdTempFfBluetoothDisabled); + if ( !bluetoothDisabled ) + { + const TBool dataProfilesDisabled = FeatureManager::FeatureSupported(KFeatureIdTempFfBluetoothDataProfilesDisabled); + if ( dataProfilesDisabled ) + { + mode = EDataProfilesDisabled; + } + else + { + mode = EEnabled; + } + } + FeatureManager::UnInitializeLib(); + + return mode; + }