diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btstack/inc/RegistryHelpers.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/inc/RegistryHelpers.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,189 @@ +// Copyright (c) 2005-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 + + +#ifndef _REGISTRY_HELPERS_H +#define _REGISTRY_HELPERS_H + +// +// Classes apertaining to MBTRegistryTaskNotifier // +// + +class CBTInquiryMgr; +class CRegistrySession; +class CBTRegistryHelperBase; + +enum TRegistryUpdateStatus + { + ENoChange, + EModification, + EAddition + }; + +class MBTRegistryTaskNotifier + { +public: + virtual void RegistryTaskComplete(CBTRegistryHelperBase* /*aHelper*/, + TInt /*aResult*/) {}; + virtual void RegistryTaskComplete(CBTRegistryHelperBase* /*aHelper*/, + const TBTNamelessDevice& /*aDevice*/, + TInt /*aResult*/)=0; + virtual void RegistryTaskComplete(CBTRegistryHelperBase* /*aHelper*/, + TRegistryUpdateStatus /*aModified*/, + TInt /*aResult*/)=0; + }; + +NONSHARABLE_CLASS(CBTRegistryHelperBase) : public CActive + { +public: + ~CBTRegistryHelperBase(); + void DetachParent(); + +protected: + virtual void DoCancel(); + virtual void RunL(); + virtual TInt RunError(TInt aError); + CBTRegistryHelperBase(MBTRegistryTaskNotifier& aParent, CRegistrySession& aRegSess); + virtual void ConstructL(); + + virtual TBool IsRegistryTaskCompleteL(); + virtual void Notify(TInt aError); + +public: + TSglQueLink iLink; +protected: + CRegistrySession& iRegSess; + TBTNamelessDevice iDevice; + MBTRegistryTaskNotifier* iParent; + RBTRegistry iRegistry; + }; + + + +NONSHARABLE_CLASS(CBTDeviceGetter): public CBTRegistryHelperBase + { +public: + static CBTDeviceGetter* NewL(CRegistrySession& aRegSess, + MBTRegistryTaskNotifier& aParent); + void Start(const TBTDevAddr& aAddress); +private: + CBTDeviceGetter(MBTRegistryTaskNotifier& aParent, CRegistrySession& aRegSess); + + void Notify(TInt aError); + }; + +NONSHARABLE_CLASS(CBTLinkKeyDeleter): public CBTRegistryHelperBase + { +public: + static CBTLinkKeyDeleter* NewL(CRegistrySession& aRegSess, + MBTRegistryTaskNotifier& aParent); + void Start(const TBTDevAddr& aAddr); +private: + CBTLinkKeyDeleter(MBTRegistryTaskNotifier& aParent, CRegistrySession& aRegSess); + }; + +NONSHARABLE_CLASS(CBTDeviceModifier): public CBTRegistryHelperBase + { +public: + static CBTDeviceModifier* NewL(CRegistrySession& aRegSess, MBTRegistryTaskNotifier& aParent, CBTInquiryMgr& aInquiryMgr); + void Start(const TBTNamelessDevice& aDevice, TBool aCanAddDevice); + ~CBTDeviceModifier(); + +private: + CBTDeviceModifier(MBTRegistryTaskNotifier& aParent, CBTInquiryMgr& aInquiryMgr, CRegistrySession& aRegSess); + void Notify(TInt aError); + +private: // from CBTRegistryHelperBase + TBool IsRegistryTaskCompleteL(); + +private: + enum TModifierState + { + EFindingDevice, + EAddingDevice, + EModifyingDevice, + EModifyingName, + }; + +private: + CBTInquiryMgr& iInquiryMgr; // for updating of device name + TModifierState iState; + CBTDevice* iDeviceWithName; + TBool iCanAddDevice; + TBTRegistrySearch iRegistrySearch; // Used for checking if an entry exists for a specified address. + TRegistryUpdateStatus iRegistryUpdateStatus; //indicate the registry modification + }; + +NONSHARABLE_CLASS(CBTDeviceNameChanger): public CBTRegistryHelperBase + { +public: + static CBTDeviceNameChanger* NewL(CRegistrySession& aRegSess, + MBTRegistryTaskNotifier& aParent); + void Start(const TBTDevAddr& aAddress, const TBTDeviceName8& aName); +private: + CBTDeviceNameChanger(MBTRegistryTaskNotifier& aParent, CRegistrySession& aRegSess); + TBTDevAddr iAddr; + TBTDeviceName8 iName; + }; + + +// +// Classes apertaining to MBtPairedDeviceNotifier // +// + +class MBTPairedDeviceNotifier + { +public: + virtual void MbpdnAddPairedDevices(const RBTDeviceArray& aAddrs) = 0; + virtual void MbpdnErrorInGettingPairedDevices(TInt aError) = 0; + }; + + +NONSHARABLE_CLASS(CBTPairedBDAddrGetter): public CActive + { +public: + ~CBTPairedBDAddrGetter(); + static CBTPairedBDAddrGetter* NewL(MBTPairedDeviceNotifier& aNotifier, RBTRegServ& aRegServ); + + void Retrieve(); + +private: + CBTPairedBDAddrGetter(MBTPairedDeviceNotifier& aNotifier, RBTRegServ& aRegServ); + void DoCancel(); + void RunL(); + TInt RunError(TInt aError); + void ConstructL(); + +private: + enum TBTPairedBDAddrGetterState + { + EReady, + ECreatingView, + EUsingResponse, + }; +private: + MBTPairedDeviceNotifier& iNotifier; + RBTRegistry iView; + RBTRegServ& iRegistryServer; + CBTRegistryResponse* iResponseHandler; + TBTRegistrySearch iRegistrySearch; + TBTPairedBDAddrGetterState iState; + }; + + +#endif // _REGISTRY_HELPERS_H