--- /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 <btmanclient.h>
+#include <btdevice.h>
+
+
+#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