# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1264500402 -7200 # Node ID 6a1fe72036e33a028196aab23efd8c90072a74ef # Parent f63038272f30b8fbbc2f9d606c95bdfd406b9edc Revision: 201001 Kit: 201004 diff -r f63038272f30 -r 6a1fe72036e3 bluetoothappprofiles/avrcp/bluetooth_avrcp.mrp --- a/bluetoothappprofiles/avrcp/bluetooth_avrcp.mrp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothappprofiles/avrcp/bluetooth_avrcp.mrp Tue Jan 26 12:06:42 2010 +0200 @@ -1,9 +1,9 @@ -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of the License "Symbian Foundation License v1.0" +# under the terms of "Eclipse Public License v1.0" # which accompanies this distribution, and is available -# at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +# at the URL "http://www.eclipse.org/legal/epl-v10.html". # # Initial Contributors: # Nokia Corporation - initial contribution. diff -r f63038272f30 -r 6a1fe72036e3 bluetoothappprofiles/avrcp/mediabrowseapi/src/remconmediabrowsetargetbase.cpp --- a/bluetoothappprofiles/avrcp/mediabrowseapi/src/remconmediabrowsetargetbase.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothappprofiles/avrcp/mediabrowseapi/src/remconmediabrowsetargetbase.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -660,13 +660,13 @@ SendGetFolderItemsResponse(KErrAvrcpAirInvalidParameter, KNullDesC8); return; } - + if(request.iScope == AvrcpBrowsing::KSearchScope && !iSearchSupported) - { - request.Close(); - SendGetFolderItemsResponse(KErrAvrcpAirSearchNotSupported, KNullDesC8); - return; - } + { + request.Close(); + SendGetFolderItemsResponse(KErrAvrcpAirSearchNotSupported, KNullDesC8); + return; + } if (request.CopyAttributes(iMediaAttributeIds) != KErrNone) { @@ -685,9 +685,9 @@ iScope = ENowPlayingFolder; } else if(request.iScope == AvrcpBrowsing::KSearchScope) - { - iScope = ESearchResultFolder; - } + { + iScope = ESearchResultFolder; + } else { request.Close(); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpMetadataTransfer.cpp --- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpMetadataTransfer.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpMetadataTransfer.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -871,26 +871,30 @@ TInt CControlCommand::GenerateMetadataGetCapabilitiesResponsePayloadL(MRemConBearerObserver& /* aObserver */, RBuf8& aFramePayload, const RBuf8& aResponseData) { LOG_FUNC - __ASSERT_DEBUG( iPlayerInfoManager != NULL, AvrcpUtils::Panic(EAvrcpNotFullyConstructed)); + __ASSERT_DEBUG(iPlayerInfoManager, AVRCP_PANIC(EAvrcpNotFullyConstructed)); TPtr8 responseData = aResponseData.RightTPtr(aResponseData.Length() - KLengthErrorResponse); if(responseData[KCapabilityIdOffset] == ECapabilityIdEventsSupported) { + // Add supported events not handled in the player info API. RBuf8 eventsBuf; eventsBuf.CreateL(KNumberEventsNotInPlayerInfoApi); CleanupClosePushL(eventsBuf); TInt count = 0; - // if ClientId has been set it means that we've told the remote that - // commands are being addressed to a particular player, so return - // player specific info. Otherwise return generic support. - if(ClientId() == KNullClientId || iPlayerInfoManager->AbsoluteVolumeSupportedL(ClientId())) + // If a specific player (i.e. a specific client ID) has been indicated then + // we add support for the event if supported by the specific player. + // If no specific player has been indicated (i.e. an invalid client ID), then + // general support for the event is added if supported by any player. + // The player info manager APIs handles these different "support" semantics. + + if(iPlayerInfoManager->AbsoluteVolumeSupportedL(ClientId())) { count++; eventsBuf.Append(ERegisterNotificationVolumeChanged ); } - if(ClientId() == KNullClientId || iPlayerInfoManager->BrowsingSupportedL(ClientId())) + if(iPlayerInfoManager->BrowsingSupportedL(ClientId())) { count += 2; eventsBuf.Append(ERegisterNotificationNowPlayingContentChanged ); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpplayerinfomanager.cpp --- a/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpplayerinfomanager.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothappprofiles/avrcp/remconbeareravrcp/src/avrcpplayerinfomanager.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -48,6 +48,20 @@ return (aId && *aId == aItem.iId); } +enum TFirstAbsVolSupport { EFirstAbsVolSupport }; +static TBool FirstAbsVolSupport(const TFirstAbsVolSupport*, const TAvrcpMediaPlayerItem& aItem) + { + LOG_STATIC_FUNC + return aItem.iId != KNullClientId && aItem.iAbsoluteVolumeSupport; + } + +enum TFirstBrowsingSupport { EFirstBrowsingSupport }; +static TBool FirstBrowsingSupport(const TFirstBrowsingSupport*, const TAvrcpMediaPlayerItem& aItem) + { + LOG_STATIC_FUNC + return aItem.iId != KNullClientId && (aItem.iSdpFeatures & AvrcpSdp::EBrowsing); + } + CAvrcpPlayerInfoManager* CAvrcpPlayerInfoManager::NewL(MRemConBearerObserver& aObserver, MRemConCommandInterface& aCommandInterface) { LOG_STATIC_FUNC @@ -176,8 +190,6 @@ } } - - if(!err) { for(TInt i = 0; i= 0); } - TBool supported = iPlayers[index].iAbsoluteVolumeSupport; + else + { + // The abs vol support for a specific player is required, so return that. + TInt index = iPlayers.Find(aClientId, PlayerCompare); + if(index < 0) + { + LEAVEL(KErrNotFound); + } + supported = iPlayers[index].iAbsoluteVolumeSupport; + } CleanupStack::PopAndDestroy(&iLock); @@ -760,12 +794,25 @@ iLock.Wait(); CleanupSignalPushL(iLock); - TInt index = iPlayers.Find(aClientId, PlayerCompare); - if(index < 0) + TBool supported = EFalse; + // If we receive a "NULL" client ID then it means that we should + // return whether browsing is generically supported by the device. + if(aClientId == KNullClientId) { - LEAVEL(KErrNotFound); + // Try to find the first player supporting browsing, if there is one then it is supported + TInt index = iPlayers.Find(EFirstBrowsingSupport, FirstBrowsingSupport); + supported = (index >= 0); } - TBool supported = iPlayers[index].iSdpFeatures & AvrcpSdp::EBrowsing; + else + { + // The browsing support for a specific player is required, so return that. + TInt index = iPlayers.Find(aClientId, PlayerCompare); + if(index < 0) + { + LEAVEL(KErrNotFound); + } + supported = iPlayers[index].iSdpFeatures & AvrcpSdp::EBrowsing; + } CleanupStack::PopAndDestroy(&iLock); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btaudioman/src/BTAccServer.cpp --- a/bluetoothengine/btaudioman/src/BTAccServer.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btaudioman/src/BTAccServer.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -58,9 +58,8 @@ delete iAccMan; delete iTimer; iSessions.Close(); - - RProperty::Delete( KPSUidBluetoothEnginePrivateCategory, KBTATCodec ); - + RProperty::Delete( KPSUidBluetoothEnginePrivateCategory, KBTHfpATCommand ); + RProperty::Delete( KPSUidBluetoothEnginePrivateCategory, KBTHfpATResponse ); TRACE_FUNC } @@ -152,7 +151,11 @@ iAccMan->LoadServicesL(); User::LeaveIfError(RProperty::Define(KPSUidBluetoothEnginePrivateCategory, - KBTATCodec, RProperty::EByteArray, + KBTHfpATCommand, RProperty::EByteArray, + KBTEngPSKeyReadPolicy, + KBTEngPSKeyWritePolicy)); + User::LeaveIfError(RProperty::Define(KPSUidBluetoothEnginePrivateCategory, + KBTHfpATResponse, RProperty::EByteArray, KBTEngPSKeyReadPolicy, KBTEngPSKeyWritePolicy)); } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/bteng/bttoggle/src/bttoggle.cpp --- a/bluetoothengine/bteng/bttoggle/src/bttoggle.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/bteng/bttoggle/src/bttoggle.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -361,6 +361,5 @@ { TRACE_INFO((_L("[BTENG][BTTOGGLE]RunL error %d"), aError )) CActiveScheduler::Stop(); - - return aError; + return KErrNone; } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/bteng/inc/btengprivatepskeys.h --- a/bluetoothengine/bteng/inc/btengprivatepskeys.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/bteng/inc/btengprivatepskeys.h Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -28,12 +28,12 @@ /** - * Publish and Subscribe key for passing serialized BT AT Codec - * between HFP RemCon Bearer and Command Handler. + * Publish and Subscribe key for passing BT HFP AT commands + * from btmonocmdhandler to HFP RemCon Bearer. * * Default value (in binary format): "" */ -const TUint KBTATCodec = 0x01; +const TUint KBTHfpATCommand = 0x01; /** @@ -157,4 +157,12 @@ */ const TUint KBTNotifierLocks = 0x08; +/** + * Publish and Subscribe key for the responses of BT HFP AT commands + * from HFP RemCon Bearer to btmonocmdhandler. + * + * Default value (in binary format): "" + */ +const TUint KBTHfpATResponse = 0x09; + #endif // BTENG_PRIVATE_PS_KEYS_H diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/bteng/src/btengincpair.cpp --- a/bluetoothengine/bteng/src/btengincpair.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/bteng/src/btengincpair.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -80,8 +80,11 @@ iPla.Close(); iPairingOkTimer.Cancel(); iPairingOkTimer.Close(); - iActivePairingOk->CancelRequest(); - delete iActivePairingOk; + if(iActivePairingOk) + { + iActivePairingOk->CancelRequest(); + delete iActivePairingOk; + } TRACE_FUNC_EXIT } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/bthid/bthidserver/src/bthidserver.cpp --- a/bluetoothengine/bthid/bthidserver/src/bthidserver.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/bthid/bthidserver/src/bthidserver.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -781,7 +781,10 @@ // Get it to disconnect if its connected. connection->Disconnect(); - + + InformClientsOfStatusChange(connection->DeviceDetails(), + EBTDeviceDisconnected); + // Delete the connection object. iBTConnIndex->Remove(connection->ConnID()); @@ -818,7 +821,10 @@ // Get it to disconnect if its connected. connection->Disconnect(); - + + InformClientsOfStatusChange(connection->DeviceDetails(), + EBTDeviceDisconnected); + // Delete the connection object. iBTConnIndex->Remove(connection->ConnID()); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/bthid/mouse/Sesame_client/data/cursormask.bmp Binary file bluetoothengine/bthid/mouse/Sesame_client/data/cursormask.bmp has changed diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/inc/btmonobearer/bmbcmdlistener.h --- a/bluetoothengine/btmac/inc/btmonobearer/bmbcmdlistener.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/inc/btmonobearer/bmbcmdlistener.h Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -83,8 +83,11 @@ CBmbPlugin& iParent; - // for receiving AT commands from btmonocmdhandler and sending the responses - RProperty iProperty; + // for receiving AT commands from btmonocmdhandler + RProperty iATCmdProperty; + + // for sending AT responses to btmonocmdhandler + RProperty iATRespProperty; // At command buffer TBuf8 iAtCmdBuf; diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/inc/btmonocmdhandler/btmcactive.h --- a/bluetoothengine/btmac/inc/btmonocmdhandler/btmcactive.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/inc/btmonocmdhandler/btmcactive.h Tue Jan 26 12:06:42 2010 +0200 @@ -73,6 +73,8 @@ virtual void RunL(); virtual void DoCancel(); + + virtual TInt RunError(TInt aError); protected: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/inc/btmonocmdhandler/btmccallinghandler.h --- a/bluetoothengine/btmac/inc/btmonocmdhandler/btmccallinghandler.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/inc/btmonocmdhandler/btmccallinghandler.h Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -81,9 +81,11 @@ CBtmcActive* iActive; + // for sending AT commands to btmonobearer RProperty iCmdProperty; - - TBool iBusy; + + // for receiving AT responses from btmonobearer + RProperty iRespProperty; TInt iCmdId; }; diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/src/BTMonoCmdHandler/btmcactive.cpp --- a/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcactive.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcactive.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -81,7 +81,19 @@ iObserver.RequestCompletedL(*this, iStatus.Int()); TRACE_FUNC_EXIT } - + +// ------------------------------------------------------------------------------- +// CBtmcActive::RunError +// This is really bad as we are just 'eating' the error not doing anything with it +// This needs to re-evaluated and done better as later date. +// ------------------------------------------------------------------------------- +TInt CBtmcActive::RunError(TInt aError) + { + TRACE_INFO((_L("Service %d RunError with %d"), iServiceId, aError)) + (void) aError; + return KErrNone; + } + // ------------------------------------------------------------------------------- // CBtmcActive::DoCancel // ------------------------------------------------------------------------------- diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/src/BTMonoCmdHandler/btmccallinghandler.cpp --- a/bluetoothengine/btmac/src/BTMonoCmdHandler/btmccallinghandler.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/src/BTMonoCmdHandler/btmccallinghandler.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -45,6 +45,7 @@ { TRACE_FUNC_ENTRY delete iActive; + iRespProperty.Close(); iCmdProperty.Close(); TRACE_FUNC_EXIT } @@ -53,7 +54,8 @@ void CBtmcCallingHandler::HandleCallingCmdL(const CATCommand& aCmd) { TRACE_FUNC_ENTRY - TRACE_ASSERT(!iBusy, KErrInUse) + TRACE_ASSERT(!iActive->IsActive(), KErrInUse) + // Delegate the command to btmonobearer for processing TInt err = iCmdProperty.Set(aCmd.Des()); if (err) { @@ -65,10 +67,9 @@ } else { - iBusy = ETrue; + // wait for the response from btmonobearer iCmdId = aCmd.Id(); - iActive = CBtmcActive::NewL(*this, CActive::EPriorityStandard, KCallingResponse); - iCmdProperty.Subscribe(iActive->iStatus); + iRespProperty.Subscribe(iActive->iStatus); iActive->GoActive(); } TRACE_FUNC_EXIT @@ -76,12 +77,12 @@ TBool CBtmcCallingHandler::ActiveCmdHandling() const { - return iBusy; + return iActive->IsActive(); } TBool CBtmcCallingHandler::ActiveChldHandling() const { - return iBusy && ( iCmdId == EATCHLD ); + return ActiveCmdHandling() && ( iCmdId == EATCHLD ); } void CBtmcCallingHandler::RequestCompletedL(CBtmcActive& aActive, TInt aErr) @@ -90,18 +91,11 @@ { case KCallingResponse: { - delete iActive; - iActive = NULL; - if (!iBusy) - { - break; - } - iBusy = EFalse; TInt result = KErrNone; if (!aErr) { TBuf8 buf; - aErr = iCmdProperty.Get(buf); + aErr = iRespProperty.Get(buf); if (!aErr && buf.Length() >= sizeof(TInt)) { const TUint8* ptr = buf.Ptr(); @@ -118,7 +112,6 @@ iProtocol.VoiceRecognitionError(); } } - CATResult* nok = CATResult::NewLC(atid); iProtocol.SendResponseL(*nok); CleanupStack::PopAndDestroy(nok); @@ -136,7 +129,7 @@ { case KCallingResponse: { - iCmdProperty.Cancel(); + iRespProperty.Cancel(); break; } default: @@ -158,7 +151,9 @@ void CBtmcCallingHandler::ConstructL() { TRACE_FUNC - iCmdProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTATCodec); + LEAVE_IF_ERROR( iCmdProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTHfpATCommand) ); + LEAVE_IF_ERROR( iRespProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTHfpATResponse) ); + iActive = CBtmcActive::NewL(*this, CActive::EPriorityStandard, KCallingResponse); TRACE_FUNC_EXIT } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/src/BTMonoCmdHandler/btmcprotocol.cpp --- a/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcprotocol.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/src/BTMonoCmdHandler/btmcprotocol.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -838,8 +838,8 @@ if (response) { RATResultPtrArray resarr; + CleanupStack::PushL(code); ATObjArrayCleanupResetAndDestroyPushL(resarr); - CleanupStack::PushL(code); resarr.AppendL(code); CleanupStack::Pop(code); CATResult* ok = CATResult::NewL(EATOK); @@ -1077,9 +1077,9 @@ LEAVE_IF_ERROR(params.Append(TATParam(buf))) code = CATResult::NewL(EATCGSN, EATActionResult, ¶ms); CleanupStack::PopAndDestroy(¶ms); + CleanupStack::PushL(code); RATResultPtrArray resarr; ATObjArrayCleanupResetAndDestroyPushL(resarr); - CleanupStack::PushL(code); resarr.AppendL(code); CleanupStack::Pop(code); CATResult* ok = CATResult::NewL(EATOK); @@ -1116,7 +1116,7 @@ { TRACE_FUNC_ENTRY iTimerActive = CBtmcActive::NewL(*this, CActive::EPriorityStandard, aService); - iTimer.CreateLocal(); + LEAVE_IF_ERROR(iTimer.CreateLocal()); iTimer.After(iTimerActive->iStatus, aTimeout); iTimerActive->GoActive(); TRACE_FUNC_EXIT diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/src/btmac/btmsconnect.cpp --- a/bluetoothengine/btmac/src/btmac/btmsconnect.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/src/btmac/btmsconnect.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -121,7 +121,7 @@ CompleteStateRequest(aErr); Parent().ChangeStateL(CBtmsCtrl::NewL(Parent(), SwapRfcommSock(iRfcomm), NULL)); } - else if (iRequestCat == ERequestConnect) + else if (iRequestCat == ERequestOpenAudio) { Parent().ChangeStateL(CBtmsOpenAudio::NewL(Parent(),SwapStateRequest(), SwapRfcommSock(iRfcomm), NULL)); } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btmac/src/btmonobearer/bmbcmdlistener.cpp --- a/bluetoothengine/btmac/src/btmonobearer/bmbcmdlistener.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btmac/src/btmonobearer/bmbcmdlistener.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-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" @@ -33,7 +33,8 @@ CBmbCmdListener::~CBmbCmdListener() { Cancel(); - iProperty.Close(); + iATCmdProperty.Close(); + iATRespProperty.Close(); } // --------------------------------------------------------------------------- @@ -44,11 +45,7 @@ void CBmbCmdListener::HandlingDataCompleted( const TDesC8& aResp ) { // No better error handling than ignoring it. - (void) iProperty.Set( aResp ); - // Handling previous received command has completed, this object - // is ready for picking up the next one, regardless of - // response sent successfully or not. - Subscribe(); + (void) iATRespProperty.Set( aResp ); TRACE_FUNC } @@ -61,7 +58,8 @@ void CBmbCmdListener::ConstructL() { TRACE_FUNC - LEAVE_IF_ERROR(iProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTATCodec)); + LEAVE_IF_ERROR(iATCmdProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTHfpATCommand)); + LEAVE_IF_ERROR(iATRespProperty.Attach(KPSUidBluetoothEnginePrivateCategory, KBTHfpATResponse)); Subscribe(); } @@ -69,48 +67,34 @@ { TRACE_FUNC TInt err = iStatus.Int(); + Subscribe(); // Error could be received from Subscribe when the PS // key is deleted due to powering BT off. In // this case, we just re-subscribe. if(err == KErrNone) { iAtCmdBuf.Zero(); - err = iProperty.Get(iAtCmdBuf); + err = iATCmdProperty.Get(iAtCmdBuf); if ( !err && iAtCmdBuf.Length() > 0 ) { // An AT command to be processed by iParent. // At command handling completion, iParent will call this object - // to send out response via HandlingDataCompleted() - // which will subscribe to PS key update after the response has been - // sent. + // to send out response via HandlingDataCompleted(). iParent.DataFromRemote(iAtCmdBuf); } - else - { - // No valid command in the PS key, re-subscribe. - err = KErrArgument; - } } TRACE_ERROR((_L8("listener Status %d"), err)) - // If err is 0, this object shall not immediately listen to new commands via - // Subscribe() function while a command is under processing by iParent. - // Btmonocmdhandler ensures not to deliver - // the next command to this bearer while a command is being processed. - if(err != KErrNone) - { - Subscribe(); - } } void CBmbCmdListener::DoCancel() { - iProperty.Cancel(); + iATCmdProperty.Cancel(); } void CBmbCmdListener::Subscribe() { __ASSERT_ALWAYS( !IsActive(), Panic(EBmbPanicCmdListenerBadState) ); - iProperty.Subscribe(iStatus); + iATCmdProperty.Subscribe(iStatus); SetActive(); TRACE_FUNC } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateConfigured.h --- a/bluetoothengine/btsac/inc/btsacStateConfigured.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateConfigured.h Tue Jan 26 12:06:42 2010 +0200 @@ -103,7 +103,7 @@ void StartTimer(TTimeIntervalMicroSeconds32 aTimeout); void StopTimer(); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); private: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateConfiguring.h --- a/bluetoothengine/btsac/inc/btsacStateConfiguring.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateConfiguring.h Tue Jan 26 12:06:42 2010 +0200 @@ -81,7 +81,7 @@ TInt GAVDP_ConfigurationEndIndication(); TInt GAVDP_StartIndication(TSEID aLocalSEID); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); private: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateConnected.h --- a/bluetoothengine/btsac/inc/btsacStateConnected.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateConnected.h Tue Jan 26 12:06:42 2010 +0200 @@ -108,7 +108,7 @@ void StartTimer(TTimeIntervalMicroSeconds32 aTimeout, TInt aRequestId); void StopTimer(); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); void StartConfigurationL(); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateConnecting.h --- a/bluetoothengine/btsac/inc/btsacStateConnecting.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateConnecting.h Tue Jan 26 12:06:42 2010 +0200 @@ -70,7 +70,7 @@ void GAVDP_ConnectConfirm(const TBTDevAddr& aDeviceAddr); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateListening.h --- a/bluetoothengine/btsac/inc/btsacStateListening.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateListening.h Tue Jan 26 12:06:42 2010 +0200 @@ -111,7 +111,7 @@ */ virtual void CancelRequest(CBtsacActive& aActive); - TInt ResetGavdp(TBTSACGavdpResetReason aReason); + TInt ResetGavdp(); void GoListen(); void DeleyedOpenAudioAndConnectL(); diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateStreaming.h --- a/bluetoothengine/btsac/inc/btsacStateStreaming.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateStreaming.h Tue Jan 26 12:06:42 2010 +0200 @@ -91,7 +91,7 @@ void GAVDP_SuspendStreamsConfirm(); void StartRecording(); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); private: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStateSuspended.h --- a/bluetoothengine/btsac/inc/btsacStateSuspended.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStateSuspended.h Tue Jan 26 12:06:42 2010 +0200 @@ -80,7 +80,7 @@ TInt GAVDP_StartIndication(TSEID aSEID); void GAVDP_ReleaseIndication(TSEID aSEID); - void CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset); + void CancelActionL(TInt aError); void HandleGavdpErrorL(TInt aError); private: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacStreamerController.h --- a/bluetoothengine/btsac/inc/btsacStreamerController.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacStreamerController.h Tue Jan 26 12:06:42 2010 +0200 @@ -55,7 +55,6 @@ public: TInt iMaxBitpoolValue; TInt iMaxDeviation; - //TInt iUpgradeDelay; TInt iIndex; TInt iDownBitpoolIndex; TInt iUpBitpoolIndex; diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/inc/btsacdefs.h --- a/bluetoothengine/btsac/inc/btsacdefs.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/inc/btsacdefs.h Tue Jan 26 12:06:42 2010 +0200 @@ -60,9 +60,7 @@ enum TBTSACGavdpResetReason { EGavdpResetReasonNone, - EGavdpResetReasonGeneral, - EGavdpResetReasonCancelOpenAudio, - EGavdpResetReasonDisconnect + EGavdpResetReasonGeneral }; //Panic codes diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacState.cpp --- a/bluetoothengine/btsac/src/btsacState.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacState.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -221,7 +221,7 @@ { TRACE_INFO((_L("CBtsacState::GAVDP_AbortStreamConfirm(), state %d"), GetStateIndex())) Parent().CompletePendingRequests(KCompleteAllReqs, KErrAbort); - TRAPD(err, Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonNone, KErrDisconnected))); + TRAPD(err, Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, KErrDisconnected))); if (err) { TRACE_INFO((_L("CBtsacState::GAVDP_AbortStreamConfirm() Couldn't change state."))) @@ -333,7 +333,7 @@ TRACE_INFO((_L("CBtsacState::GAVDP_AbortIndication(), state %d, SEID:%d"), GetStateIndex(), aSEID.SEID())) (void)aSEID; Parent().CompletePendingRequests(KCompleteAllReqs, KErrDisconnected); - TRAPD(err, Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonNone, KErrDisconnected))) + TRAPD(err, Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, KErrDisconnected))) if(err) { TRACE_INFO((_L("CBtsacState::GAVDP_AbortIndication(), error! Couldn't change state"))) diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateConfigured.cpp --- a/bluetoothengine/btsac/src/btsacStateConfigured.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateConfigured.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -169,11 +169,11 @@ // CBtsacConfigured::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacConfigured::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacConfigured::CancelActionL(TInt aError) { TRACE_FUNC Parent().CompletePendingRequests(KOpenAudioReq, aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -183,7 +183,7 @@ void CBtsacConfigured::CancelConnectL() { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -224,7 +224,7 @@ void CBtsacConfigured::CancelOpenAudioLinkL() { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -255,7 +255,7 @@ { TRACE_INFO((_L("CBtsacConfigured::GAVDP_StartStreamsConfirm() [ERR] Couldn't abort stream."))) } - TRAP_IGNORE(CancelActionL(KErrNotReady, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrNotReady)); } else { @@ -366,7 +366,7 @@ } else { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } break; } @@ -374,12 +374,12 @@ case KErrDisconnected: // -36 { TRACE_INFO((_L("CBtsacConfigured::HandleGavdpErrorL() Signalling disconnected."))) - CancelActionL(aError, EGavdpResetReasonNone); + CancelActionL(aError); break; } default: { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); break; } } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateConfiguring.cpp --- a/bluetoothengine/btsac/src/btsacStateConfiguring.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateConfiguring.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -98,7 +98,7 @@ } else // internal problem { - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } } @@ -106,11 +106,11 @@ // CBtsacConfiguring::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacConfiguring::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacConfiguring::CancelActionL(TInt aError) { TRACE_FUNC Parent().CompletePendingRequests((KConnectReq | KOpenAudioReq), aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -120,7 +120,7 @@ void CBtsacConfiguring::CancelConnectL() { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); // do no cancel till gavdp_error call back recieved + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -142,7 +142,7 @@ { TRACE_FUNC Parent().CompletePendingRequests(KDisconnectReq, KErrNone); - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -198,7 +198,7 @@ { TRACE_INFO((_L("CBtsacConfiguring::GAVDP_ConfigurationEndIndication() Couldn't retrieve Capabilities !"))) SEPCapabilities.Close(); - TRAPD(err, CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAPD(err, CancelActionL(KErrCancel)); if(err) { return KErrNoMemory; @@ -224,9 +224,7 @@ TRACE_INFO((_L("CBtsacConfiguring::GAVDP_ConfigurationEndIndication() Media Transport Caps retrieved."))) } } - SEPCapabilities.Close(); - - //Parent().StoreAccInfo(); // stores iRemoteSEPs (SEPManager) into database + SEPCapabilities.Close(); // Check if headset's capabilities suits us TRACE_INFO((_L("CBtsacConfiguring::GAVDP_ConfigurationEndIndication() Accessory Sampling Frequencies: %d"), SBCCaps.SamplingFrequencies())) @@ -239,7 +237,7 @@ if (Parent().iStreamer->ConfigureSEP(SBCCaps) ) { TRACE_INFO((_L("CBtsacConfiguring::GAVDP_ConfigurationEndIndication() Streamer couldn't configure SEP !"))) - TRAPD(err, CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAPD(err, CancelActionL(KErrCancel)); if(err) { return KErrNoMemory; @@ -292,7 +290,7 @@ { TRACE_INFO((_L("CBtsacConfiguring::HandleGavdpErrorL() Request TIMEOUT"))) // Go to listening state, gavdp will be shutdown in listening state - CancelActionL(KErrDisconnected, EGavdpResetReasonNone); + CancelActionL(KErrDisconnected); break; } @@ -302,7 +300,7 @@ TRACE_INFO((_L("CBtsacConfiguring::HandleGavdpErrorL() Signalling disconnected."))) // for both outgoing or incoming connection, if we have an error, // this means there is disconnection - CancelActionL(aError, EGavdpResetReasonNone); + CancelActionL(aError); break; } @@ -310,7 +308,7 @@ //case KErrNotReady: // -18 //case KErrInUse: // -14 { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); break; } } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateConnected.cpp --- a/bluetoothengine/btsac/src/btsacStateConnected.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateConnected.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -179,12 +179,12 @@ // CBtsacConnected::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacConnected::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacConnected::CancelActionL(TInt aError) { TRACE_FUNC StopTimer(); Parent().CompletePendingRequests((KConnectReq | KOpenAudioReq), aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -198,7 +198,7 @@ if (Parent().GetRemoteAddr() != aAddr) { TRACE_INFO((_L("CBtsacConnected::OpenAudio, Error!"))) - CancelActionL(KErrNotFound, EGavdpResetReasonGeneral); + CancelActionL(KErrNotFound); return; } iAudioOpenedBy = EAudioOpenedByAFW; @@ -224,7 +224,7 @@ void CBtsacConnected::CancelOpenAudioLinkL() { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -235,7 +235,7 @@ { TRACE_FUNC Parent().CompletePendingRequests(KDisconnectReq, KErrNone); - CancelActionL(KErrCancel, EGavdpResetReasonDisconnect); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -247,7 +247,7 @@ TRACE_FUNC if(!iBearersQuery) { - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } else { @@ -289,7 +289,7 @@ if ((Parent().iRemoteSEPs->GetCaps(Parent().GetSEPIndex(), SEPCapabilities)) ) { TRACE_INFO((_L("CBtsacConnected::Configure() Couldn't retrieve Capabilities !"))) - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); SEPCapabilities.Close(); return; } @@ -327,7 +327,7 @@ if (Parent().iStreamer->ConfigureSEP(SBCCaps) ) { TRACE_INFO((_L("CBtsacConnected::Configure() Streamer couldn't configure SEP !"))) - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); return; // capabilites doesn't suit us } @@ -335,7 +335,7 @@ if (Parent().iRemoteSEPs->GetInfo(Parent().GetSEPIndex(), SEPInfo)) { TRACE_INFO((_L("CBtsacConnected::Configure() Couldn't retrieve SEP Info !"))) - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); return; // capabilites doesn't suit us } TSEID remoteSEPid = SEPInfo.SEID(); @@ -346,7 +346,7 @@ if ( Parent().iGavdp->ConfigureSEP(localSEPid, remoteSEPid , SBCCaps, MedTransCaps ) ) { TRACE_INFO((_L("CBtsacConnected::Configure() ConfigureSEP returned Error !!!"))) - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } } @@ -371,8 +371,6 @@ else // we have covered all SEPs { StopTimer(); - // store all info in our db - //Parent().StoreAccInfo(); // stores iRemoteSEPs (SEPManager) into database iSuitableSEPFoundAlready = EFalse; if ( iSEPFound == ESEPConfigure ) @@ -393,7 +391,7 @@ } else // no audio sbc sink sep found { - TRAP_IGNORE(CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrCancel)); } } } @@ -417,7 +415,7 @@ } else // internal problem { - TRAP_IGNORE(CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrCancel)); } } } @@ -438,7 +436,7 @@ else // remote A2DP has no 'audio' 'sink' SEPs ! naughty remote { TRACE_INFO((_L("CBtsacConnected::GAVDP_SEPDiscoveryComplete() Remote A2dP has no 'audio' 'sink' SEPs !"))) - TRAP_IGNORE(CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrCancel)); } } @@ -511,7 +509,7 @@ if (Parent().iRemoteSEPs->GetInfo(Parent().GetSEPIndex(), SEPInfo)) { TRACE_INFO((_L("CBtsacConnected::GAVDP_ConfigurationConfirm Couldn't retrieve SEP Info !"))) - TRAP_IGNORE(CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrCancel)); return; // cannot get remote SEP capabilites } TSEID remoteSEPid = SEPInfo.SEID(); @@ -566,7 +564,7 @@ { TRACE_INFO((_L("CBtsacConnected::GAVDP_AbortIndication() SEID:%d"), aSEID.SEID())) (void)aSEID; - TRAP_IGNORE(CancelActionL(KErrDisconnected, EGavdpResetReasonNone)); + TRAP_IGNORE(CancelActionL(KErrDisconnected)); } // ----------------------------------------------------------------------------- @@ -594,8 +592,8 @@ { if(!iBearersQuery) { - // Go to listening state, gavdp will be shutdown in listening state - CancelActionL(KErrCancel, EGavdpResetReasonNone); + // Go to listening state, gavdp will be shutdown in listening state + CancelActionL(KErrDisconnected); } else { @@ -608,7 +606,7 @@ } else { - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } } break; @@ -653,7 +651,7 @@ { TRACE_INFO((_L("CBtsacConnected::HandleGavdpErrorL() Request TIMEOUT"))) // Go to listening state, gavdp will be shutdown in listening state - CancelActionL(KErrDisconnected, EGavdpResetReasonNone); + CancelActionL(KErrDisconnected); break; } @@ -663,7 +661,7 @@ TRACE_INFO((_L("CBtsacConnected::HandleGavdpErrorL() Signalling disconnected."))) // for both outgoing or incoming connection, if we have an error, // this means there is disconnection - CancelActionL(aError, EGavdpResetReasonGeneral); + CancelActionL(aError); break; } @@ -682,7 +680,7 @@ // KErrCorrupt -20 // (KErrAvdtpSignallingErrorBase - EAvdtpBadState) -18094 { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } } } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateConnecting.cpp --- a/bluetoothengine/btsac/src/btsacStateConnecting.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateConnecting.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -77,11 +77,11 @@ // CBtsacConnecting::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacConnecting::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacConnecting::CancelActionL(TInt aError) { TRACE_FUNC Parent().CompletePendingRequests((KConnectReq | KOpenAudioReq), aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -91,7 +91,7 @@ void CBtsacConnecting::CancelOpenAudioL(const TBTDevAddr& /*aAddr*/) { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -101,7 +101,7 @@ void CBtsacConnecting::CancelConnectL() { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -121,7 +121,7 @@ // only possibility is that another accessory has made incoming connection, after we have sent a connect request // what a coincidence ! { - TRAP_IGNORE(CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrDisconnected)); } } @@ -137,7 +137,7 @@ // KErrInUse -14 // KErrCouldNotConnect -34 // KErrL2CAPRequestTimeout -6312 - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } // End of File diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateListening.cpp --- a/bluetoothengine/btsac/src/btsacStateListening.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateListening.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -203,7 +203,7 @@ if (err) { TRACE_INFO((_L("CBtsacListening::GAVDP_ConfigurationConfirm() Listen returned error:%d."), err)) - ResetGavdp(EGavdpResetReasonGeneral); + ResetGavdp(); return; } if(iInitializationProcedure == EInitProcedureWaitingConfConfirmed) @@ -269,13 +269,14 @@ } if(iGavdpResetReason != EGavdpResetReasonNone) { - ResetGavdp(iGavdpResetReason); + ResetGavdp(); } else { GoListen(); } - if(iDisconnectReason == KErrDisconnected || iDisconnectReason == KErrHCILinkDisconnection) + if((iDisconnectReason == KErrDisconnected || iDisconnectReason == KErrHCILinkDisconnection) && + iPendingRequests == KRequestNone) { if(remoteAddr != TBTDevAddr()) { @@ -325,7 +326,7 @@ { // Shutdown failed, reset gavdp TRACE_INFO((_L("CBtsacListening::GoListen(), error = %d."), err)) - ResetGavdp(EGavdpResetReasonGeneral); + ResetGavdp(); } } @@ -333,21 +334,18 @@ // CBtsacListening::ResetGavdp // ----------------------------------------------------------------------------- // -TInt CBtsacListening::ResetGavdp(TBTSACGavdpResetReason aReason) +TInt CBtsacListening::ResetGavdp() { TRACE_FUNC Parent().iGavdp->Close(); if( Parent().iGavdp->Open() == KErrNone ) { iInitializationProcedure = EInitProcedureWaitingConfConfirmed; - if(aReason != EGavdpResetReasonCancelOpenAudio) - { - if(iPendingRequests == KRequestNone) - { - TRACE_INFO((_L("CBtsacListening::ResetGavdp() Remote Addr reseted."))) - Parent().SetRemoteAddr(TBTDevAddr()); - } - } + if(iPendingRequests == KRequestNone) + { + TRACE_INFO((_L("CBtsacListening::ResetGavdp() Remote Addr reseted."))) + Parent().SetRemoteAddr(TBTDevAddr()); + } return Parent().iGavdp->RegisterSEPs(*Parent().iLocalSEPs, Parent().iStreamer->GetCaps()); } else @@ -432,7 +430,7 @@ // KErrDied -13 // KErrInUse -14 { - ResetGavdp(EGavdpResetReasonGeneral); + ResetGavdp(); break; } } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateStreaming.cpp --- a/bluetoothengine/btsac/src/btsacStateStreaming.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateStreaming.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -90,7 +90,7 @@ // CBtsacStreaming::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacStreaming::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacStreaming::CancelActionL(TInt aError) { TRACE_FUNC TInt ret = Parent().iStreamer->StopStream(); @@ -99,7 +99,7 @@ TRACE_INFO((_L("CBtsacStreaming::Cancel() iStreamer.StopStream() returned error(%d) !!!"), ret)) } Parent().CompletePendingRequests(KCompleteAllReqs, aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -132,7 +132,7 @@ if ( ret ) { TRACE_INFO((_L("CBtsacStreaming::CloseAudio() Couldn't retrieve SEP Info !"))) - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); return; } // Suspend audio @@ -171,7 +171,7 @@ { TRACE_INFO((_L("CBtsacStreaming::StartRecording() Couldn't abort stream."))) } - TRAP_IGNORE(Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonNone, KErrDisconnected))); + TRAP_IGNORE(Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, KErrDisconnected))); } } @@ -188,7 +188,7 @@ TRACE_INFO((_L("CBtsacStreaming::DisconnectL() StopStream() returned error: %d"), ret)) } Parent().CompletePendingRequests(KDisconnectReq, ret); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonDisconnect, KErrNone)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, KErrNone)); } // ----------------------------------------------------------------------------- @@ -220,7 +220,7 @@ // It is possible the remote disconnected while we have active close audio request. Parent().CompletePendingRequests(KCompleteAllReqs, KErrNone); - TRAP_IGNORE(Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonNone, KErrDisconnected))); + TRAP_IGNORE(Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, KErrDisconnected))); } // ----------------------------------------------------------------------------- @@ -347,7 +347,7 @@ case KErrDisconnected: // -36 { Parent().CompletePendingRequests(KCompleteAllReqs, aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonNone, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); break; } default: diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStateSuspended.cpp --- a/bluetoothengine/btsac/src/btsacStateSuspended.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStateSuspended.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -83,11 +83,11 @@ // CBtsacSuspended::CancelActionL // ----------------------------------------------------------------------------- // -void CBtsacSuspended::CancelActionL(TInt aError, TBTSACGavdpResetReason aGavdpReset) +void CBtsacSuspended::CancelActionL(TInt aError) { TRACE_FUNC Parent().CompletePendingRequests(KOpenAudioReq, aError); - Parent().ChangeStateL(CBtsacListening::NewL(Parent(), aGavdpReset, aError)); + Parent().ChangeStateL(CBtsacListening::NewL(Parent(), EGavdpResetReasonGeneral, aError)); } // ----------------------------------------------------------------------------- @@ -117,7 +117,7 @@ void CBtsacSuspended::CancelOpenAudioL(const TBTDevAddr& /*aAddr*/) { TRACE_FUNC - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -128,7 +128,7 @@ { TRACE_FUNC Parent().CompletePendingRequests(KDisconnectReq, KErrNone); - CancelActionL(KErrCancel, EGavdpResetReasonGeneral); + CancelActionL(KErrCancel); } // ----------------------------------------------------------------------------- @@ -146,7 +146,7 @@ { TRACE_INFO((_L("CBtsacSuspended::GAVDP_StartStreamsConfirm() Couldn't abort stream."))) } - TRAP_IGNORE(CancelActionL(KErrCancel, EGavdpResetReasonGeneral)); + TRAP_IGNORE(CancelActionL(KErrDisconnected)); } else { @@ -210,7 +210,7 @@ } else { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } break; } @@ -226,7 +226,7 @@ } else { - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); } } else @@ -243,14 +243,14 @@ case KErrDisconnected: // -36 { TRACE_INFO((_L("CBtsacSuspended::HandleGavdpErrorL() Signalling disconnected."))) - CancelActionL(aError, EGavdpResetReasonNone); + CancelActionL(aError); break; } default: { // Unknown error. For safety's sake let's disconnect a2dp link and inform btaudioman TRACE_INFO((_L("CBtsacSuspended::HandleGavdpErrorL() Unknown error, goes to listening"))) - CancelActionL(KErrDisconnected, EGavdpResetReasonGeneral); + CancelActionL(KErrDisconnected); break; } } diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btsac/src/btsacStreamerController.cpp --- a/bluetoothengine/btsac/src/btsacStreamerController.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btsac/src/btsacStreamerController.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -28,8 +28,7 @@ // CONSTANTS _LIT(KBTAADLL, "btaudioadaptation.dll"); - -//const TInt KUpgradeTimerDelay = 120000000; // 2 minutes. How often we sill try to upgrade back to a better quality audio. + const TInt KRetryTimerDelay = 2000000; // 2 seconds. If something fails, how soon should we retry. const TInt KStabilizationDelay = 2000000; // 2 seconds. Wait this long after bitpool change then start mononitor packet drops again const TInt KDataCollectDelay = 600000; // Time (600ms) to collect packet drop data @@ -1270,7 +1269,6 @@ { data.iMaxBitpoolValue = KMaxBitpoolValues[i]; data.iMaxDeviation = KDeviationValues[i]; - //data.iUpgradeDelay = KUpgradeDelays[i]; data.iUpBitpoolIndex = (i == 0) ? i : i - 1; data.iIndex = i; data.iDownBitpoolIndex = (i == KNumOfBitpoolValues - 1) ? i : i + 1; diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btui/Ecom/data/BtuiViewResources.rss --- a/bluetoothengine/btui/Ecom/data/BtuiViewResources.rss Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btui/Ecom/data/BtuiViewResources.rss Tue Jan 26 12:06:42 2010 +0200 @@ -766,7 +766,7 @@ RESOURCE DIALOG r_bt_waiting { flags = EAknWaitNoteFlags; - buttons = R_AVKON_SOFTKEYS_CANCEL; + buttons = R_AVKON_SOFTKEYS_EMPTY; items = { DLG_LINE diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btui/Ecom/inc/BTUIPairedDevicesView.h --- a/bluetoothengine/btui/Ecom/inc/BTUIPairedDevicesView.h Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btui/Ecom/inc/BTUIPairedDevicesView.h Tue Jan 26 12:06:42 2010 +0200 @@ -228,7 +228,7 @@ * @param None. * @return None. */ - void CancelDisconnectQueryDlgL(); + void CancelDisconnectQueryDlg(); /** * Disconnects from the selected BT Accessory without query. diff -r f63038272f30 -r 6a1fe72036e3 bluetoothengine/btui/Ecom/src/BTUIPairedDevicesView.cpp --- a/bluetoothengine/btui/Ecom/src/BTUIPairedDevicesView.cpp Mon Jan 18 20:28:57 2010 +0200 +++ b/bluetoothengine/btui/Ecom/src/BTUIPairedDevicesView.cpp Tue Jan 26 12:06:42 2010 +0200 @@ -181,6 +181,8 @@ if(iConstructAsGsPlugin) delete iTabHelper; + CancelDisconnectQueryDlg(); + TRACE_FUNC_EXIT } @@ -1067,13 +1069,14 @@ // Create confirmation query HBufC* stringholder = StringLoader::LoadLC(R_BT_DISCONNECT_FROM, device.iName); - iDisconnectQueryDlg = CAknQueryDialog::NewL(); + if (!iDisconnectQueryDlg) + { + iDisconnectQueryDlg = CAknQueryDialog::NewL(); + } if(iCoverDisplayEnabled) { - CleanupStack::PushL(iDisconnectQueryDlg); iDisconnectQueryDlg->PublishDialogL(ECmdShowDisconnectQuery, KUidCoverUiCategoryBtui); // initializes cover support - CleanupStack::Pop(iDisconnectQueryDlg); CAknMediatorFacade* covercl = AknMediatorFacade(iDisconnectQueryDlg); // uses MOP, so control provided if (covercl) // returns null if __COVER_DISPLAY is not defined @@ -1100,7 +1103,7 @@ // CBTUIPairedDevicesView::CancelDisconnectQueryDlgL // ---------------------------------------------------------- // -void CBTUIPairedDevicesView::CancelDisconnectQueryDlgL() +void CBTUIPairedDevicesView::CancelDisconnectQueryDlg() { TRACE_FUNC_ENTRY @@ -1854,7 +1857,7 @@ if(aErr == KErrDisconnected) { if(iDisconnectQueryDlg && aDevice.iAddr == iDisconnectQueryDevice.iAddr) - CancelDisconnectQueryDlgL(); + CancelDisconnectQueryDlg(); TRACE_FUNC_EXIT return;