--- a/connectivitymodules/SeCon/servers/pcconn/src/sconbtengine.cpp Thu Aug 19 10:44:03 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,415 +0,0 @@
-/*
-* 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: CSconBtEngine implementation
-*
-*/
-
-
-
-#include <centralrepository.h>
-#include <btengdomaincrkeys.h>
-
-#include <e32property.h>
-#include <bttypes.h>
-#include <bt_subscribe.h>
-
-#include "sconbtengine.h"
-#include "debug.h"
-
-CSconBtEngine* CSconBtEngine::NewL()
- {
- TRACE_FUNC;
- CSconBtEngine* self = new (ELeave) CSconBtEngine();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-CSconBtEngine::~CSconBtEngine()
- {
- TRACE_FUNC;
- if ( iBtEng )
- {
- iBtEng->Cancel();
- delete iBtEng;
- }
-
- delete iBtSettings;
- }
-
-CSconBtEngine::CSconBtEngine()
- {
- }
-
-void CSconBtEngine::ConstructL()
- {
- iBtEng = CBTEngDevMan::NewL( this );
- iBtSettings = CBTEngSettings::NewL( this );
- iState = EIdle;
- }
-
-void CSconBtEngine::ReadBTInfoL( RBufWriteStream& aStream )
- {
- TRACE_FUNC_ENTRY;
- if ( iState != EIdle )
- {
- User::Leave( KErrInUse );
- }
- iStream = &aStream;
- iOperationError = KErrNone;
-
- // Write local name (8 bit name length + unicode name)
- TBuf<100> localName;
- TInt err = iBtSettings->GetLocalName( localName );
- User::LeaveIfError( err );
- LOGGER_WRITE_1("localName: %S", &localName);
- iStream->WriteUint8L( localName.Length() );
- iStream->WriteL( localName, localName.Length() );
-
- if ( iBtAddress.Length() == 0 )
- {
- LOGGER_WRITE("Try to read bt address");
-
- CRepository* cenRep = NULL;
- // Use TRAP to catch a leave if the CenRep key does not exist.
- TRAP( err, cenRep = CRepository::NewL( KCRUidBluetoothLocalDeviceAddress ) );
- CleanupStack::PushL( cenRep );
- if( !err )
- {
- err = cenRep->Get( KBTLocalDeviceAddress, iBtAddress );
- LOGGER_WRITE_1("cenRep->Get err: %d", err);
- }
- CleanupStack::PopAndDestroy( cenRep );
-
- if ( err )
- {
- iBtAddress.Zero();
- }
- }
-
- // Write bt address (8 bit addr length + unicode address)
- if ( iBtAddress.Length() > 0 )
- {
- LOGGER_WRITE_1("btAddr: %S", &iBtAddress);
- iStream->WriteUint8L( iBtAddress.Length() );
- iStream->WriteL( iBtAddress, iBtAddress.Length() );
- }
- else
- {
- iStream->WriteUint8L( 0 );
- }
-
- // Write BT Power State (8-bit, 0=Off, 1=On)
- TBTPowerStateValue state;
- err = iBtSettings->GetPowerState( state );
- User::LeaveIfError( err );
- LOGGER_WRITE_1("PowerState: %d", state);
- iStream->WriteUint8L( state );
-
- // Get device info
- TBTRegistrySearch crit;
- crit.FindAll();
- if ( !iBtDevArray )
- {
- LOGGER_WRITE("create arr");
- iBtDevArray = new (ELeave) CBTDeviceArray(5);
- LOGGER_WRITE("create arr -ok");
- }
- else
- {
- iBtDevArray->ResetAndDestroy();
- }
- err = iBtEng->GetDevices( crit, iBtDevArray );
- LOGGER_WRITE_1("GetDevices err: %d", err);
- User::LeaveIfError( err );
- iState = ERequestBtInfo;
-
- // Wait until completed
- iWait.Start();
- iState = EIdle;
- if ( iOperationError )
- {
- LOGGER_WRITE_1("Operation failed, leave %d", iOperationError);
- User::Leave( iOperationError );
- }
- TRACE_FUNC_EXIT;
- }
-
-void CSconBtEngine::SetBtAuthorizedL( const TDesC& aBtDevAddress, TBool aAuthorized )
- {
- TRACE_FUNC_ENTRY;
- if ( iState != EIdle )
- {
- User::Leave( KErrInUse );
- }
-
- TBTRegistrySearch crit;
- TBTDevAddr addr;
- addr.SetReadable( aBtDevAddress );
- crit.FindAddress( addr );
-
- if ( !iBtDevArray )
- {
- LOGGER_WRITE("create arr");
- iBtDevArray = new (ELeave) CBTDeviceArray(5);
- LOGGER_WRITE("create arr -ok");
- }
- else
- {
- iBtDevArray->ResetAndDestroy();
- }
- TInt err = iBtEng->GetDevices( crit, iBtDevArray );
- LOGGER_WRITE_1("GetDevices err: %d", err);
- User::LeaveIfError( err );
- iState = EChangeAuthorized;
- iOperationError = KErrNone;
- iAuthorizedValue = aAuthorized;
-
- // Wait until completed
- iWait.Start();
- iState = EIdle;
- if ( iOperationError )
- {
- LOGGER_WRITE_1("Operation failed, leave %d", iOperationError);
- User::Leave( iOperationError );
-
- }
-
- TRACE_FUNC_EXIT;
- }
-
-TInt CSconBtEngine::SetBtPowerState( TBool aPower )
- {
- TRACE_FUNC_ENTRY;
- if ( iState != EIdle )
- {
- return KErrInUse;
- }
-
- TBTPowerStateValue state;
- iOperationError = iBtSettings->GetPowerState( state );
- if ( iOperationError )
- {
- return iOperationError;
- }
- else if ( ( aPower && state == EBTPowerOn )
- || ( !aPower && state == EBTPowerOff ) )
- {
- // No need to change state
- return KErrNone;
- }
-
- state = EBTPowerOff;
- if ( aPower )
- {
- state = EBTPowerOn;
- }
- iOperationError = iBtSettings->SetPowerState( state );
- if ( iOperationError )
- {
- return iOperationError;
- }
- iState = EChangeBtState;
-
- // Wait until completed
- iWait.Start();
-
- iState = EIdle;
- TRACE_FUNC_RET( iOperationError );
- return iOperationError;
- }
-
-TInt CSconBtEngine::SetBtName( const TDesC& aBtName )
- {
- LOGGER_WRITE_1("SetBtName aBtName: %S", &aBtName);
- TInt err = iBtSettings->SetLocalName( static_cast<const TDes&>( aBtName ) );
- TRACE_FUNC_RET( err );
- return err;
- }
-
-// From MBTEngDevManObserver
-void CSconBtEngine::HandleDevManComplete( TInt aErr )
- {
- TRACE_FUNC;
- LOGGER_WRITE_1("aErr: %d", aErr );
- if ( iState == EChangeAuthorized )
- {
- if ( iWait.IsStarted() )
- {
- iOperationError = aErr;
- iWait.AsyncStop();
- }
- }
-
- }
-
-void CSconBtEngine::HandleGetDevicesComplete( TInt aErr,
- CBTDeviceArray* aDeviceArray )
- {
- TRACE_FUNC_ENTRY;
- LOGGER_WRITE_1("aErr: %d", aErr);
- //iBtReqOngoing = EFalse;
- if ( iState == ERequestBtInfo )
- {
- // Continue to write devices info
- TRAP( iOperationError, PrintDevicesL() );
- LOGGER_WRITE_1("PrintDevicesL err: %d", iOperationError);
-
- if ( iWait.IsStarted() )
- {
- iWait.AsyncStop();
- }
- }
- else if ( iState == EChangeAuthorized )
- {
- iOperationError = aErr;
- if ( !aErr && aDeviceArray->Count() == 1 )
- {
- CBTDevice* btRef = aDeviceArray->At(0);
- TBTDeviceSecurity devSec = btRef->GlobalSecurity();
- if ( btRef->IsPaired() && !devSec.Banned() )
- {
- LOGGER_WRITE8_1("btAdrr: %S", &btRef->BDAddr().Des() );
- CBTDevice* btDevice = CBTDevice::NewLC( btRef->BDAddr() );
-
- btDevice->SetPaired( ETrue );
-
- btDevice->SetDeviceNameL( btRef->DeviceName() );
- btDevice->SetFriendlyNameL( btRef->FriendlyName() );
- LOGGER_WRITE8_1("name: %S", &btRef->DeviceName());
- LOGGER_WRITE8_1("FriendlyName: %S", &btRef->FriendlyName());
-
- LOGGER_WRITE_1("iAuthorizedValue: %d", iAuthorizedValue);
- // Set as authorized and store the device
- TBTDeviceSecurity security;
- security.SetNoAuthenticate( EFalse );
- security.SetNoAuthorise( iAuthorizedValue );
- security.SetBanned( EFalse );
-
- btDevice->SetGlobalSecurity (security );
-
- //iOperationError = iBtEng->ModifyDevice(*aDeviceArray->At(0));
- iOperationError = iBtEng->ModifyDevice( *btDevice );
- LOGGER_WRITE_1( "ModifyDevice err: %d", iOperationError );
- CleanupStack::PopAndDestroy( btDevice );
- }
- else
- {
- LOGGER_WRITE("Device was not paired or it's banned")
- iOperationError = KErrAccessDenied;
- }
- }
-
- // If error occured stop waiting, otherwise continue waiting until
- // HandleDevManComplete has been called
- if ( iOperationError && iWait.IsStarted() )
- {
- iWait.AsyncStop();
- }
- }
- TRACE_FUNC_EXIT;
- }
-
-void CSconBtEngine::PrintDevicesL()
- {
- TRACE_FUNC_ENTRY;
- // calculate devices count
- TInt devCount(0);
-
- for ( TInt i=0 ; i<iBtDevArray->Count(); i++ )
- {
- CBTDevice* device = iBtDevArray->At(i);
- // show only paired and banned devices
- if ( device->IsPaired() || device->GlobalSecurity().Banned() )
- {
- devCount++;
- }
- }
-
- // Print info
- iStream->WriteUint8L( devCount );
-
- for ( TInt i=0 ; i<iBtDevArray->Count(); i++ )
- {
- CBTDevice* device = iBtDevArray->At(i);
-
- const TBTDeviceSecurity btSec = device->GlobalSecurity();
-
- // show only paired and banned devices
- if ( device->IsPaired() || btSec.Banned() )
- {
- LOGGER_WRITE_1("IsValidDeviceName: %d", device->IsValidDeviceName());
- const TDesC8& deviceName = device->DeviceName();
- LOGGER_WRITE8_1("DeviceName: %S", &deviceName );
- iStream->WriteUint8L( deviceName.Length() );
- iStream->WriteL( deviceName, deviceName.Length() );
-
- LOGGER_WRITE_1("IsValidFriendlyName: %d", device->IsValidFriendlyName());
- LOGGER_WRITE_1("FriendlyName: %S", &device->FriendlyName() );
-
- const TBTDevAddr& addr = device->BDAddr();
-
- TBuf<100> readable;
- addr.GetReadable( readable );
- LOGGER_WRITE_1("readable addr: %S", &readable);
- iStream->WriteUint8L( readable.Length() );
- iStream->WriteL( readable, readable.Length() );
-
- LOGGER_WRITE_1("paired: %d", device->IsPaired() );
- LOGGER_WRITE_1("IsValidPaired: %d", device->IsValidPaired() );
- TUint8 paired(0);
- if ( device->IsPaired() && device->IsValidPaired() )
- {
- paired = 1;
- }
- iStream->WriteUint8L( paired );
-
- TUint8 noAuthorise(0);
- if ( btSec.NoAuthorise() )
- {
- noAuthorise = 1;
- }
- iStream->WriteUint8L( noAuthorise );
-
- TUint8 banned(0);
- if ( btSec.Banned() )
- {
- banned = 1;
- }
- iStream->WriteUint8L( banned );
-
- LOGGER_WRITE("");
- }
- }
- iStream->CommitL();
- iStream = NULL; //delete reference only
- TRACE_FUNC_EXIT;
- }
-
-// From MBTEngSettingsObserver
-void CSconBtEngine::PowerStateChanged( TBTPowerStateValue /*aState*/ )
- {
- TRACE_FUNC;
- if ( iState == EChangeBtState && iWait.IsStarted() )
- {
- iWait.AsyncStop();
- }
-
- }
-
-void CSconBtEngine::VisibilityModeChanged( TBTVisibilityMode /*aState*/ )
- {
- TRACE_FUNC;
- }