hti/HtiCommPlugins/HtiBtCommPlugin/BtEngine/inc/btservicesearcher.h
branchRCL_3
changeset 59 8ad140f3dd41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/HtiCommPlugins/HtiBtCommPlugin/BtEngine/inc/btservicesearcher.h	Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,264 @@
+/*
+* 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:  Bluetooth service searcher.
+*
+*/
+
+
+#ifndef __BTSERVICESEARCHER_H__
+#define __BTSERVICESEARCHER_H__
+
+// INCLUDES
+#include <e32base.h>
+#include <bttypes.h>
+#include <btextnotifiers.h>
+
+#include "sdpattributeparser.h"
+#include "sdpattributenotifier.h"
+
+// CONSTANTS
+#include "messageprotocolconstants.h"
+
+// CLASS DECLARATIONS
+/**
+* CBTServiceSearcher
+* Searches for a service on a remote machine
+*/
+
+class CBTServiceSearcher : public CBase,
+                           public MSdpAgentNotifier,
+                           public MSdpAttributeNotifier
+    {
+    public: // Destructor
+
+        /**
+        * ~CBTServiceSearcher()
+        * Destroy the object and release all memory objects
+        */
+        virtual ~CBTServiceSearcher();
+
+    public: // New functions
+
+        /**
+        * SelectDeviceByDiscoveryL()
+        * Select a device
+        * @param aObserverRequestStatus the observer that is to
+        * be notified when the device selection is complete.
+        */
+        void SelectDeviceByDiscoveryL( TRequestStatus&
+                                       aObserverRequestStatus );
+
+       /**
+        * SelectDeviceByNameL()
+        * Select a device by BT device name.
+        * @param aDeviceName the name of the device to search and select.
+        * @param aObserverRequestStatus the observer that is to
+        * be notified when the device selection is complete.
+        */
+        void SelectDeviceByNameL( const TDesC& aDeviceName,
+                                  TRequestStatus& aObserverRequestStatus );
+
+        /**
+        * FindServiceL()
+        * Find a service on the specified device
+        * @param aDeviceAddress the BT address of the device to search for
+        * the service
+        * @param aObserverRequestStatus the observer that is to be notified
+        * when the service search is complete
+        */
+        void FindServiceL( const TBTDevAddr& aDeviceAddress,
+            TRequestStatus& aObserverRequestStatus );
+
+        /**
+        * BTDevAddr()
+        * @return the bluetooth device address
+        */
+        const TBTDevAddr& BTDevAddr();
+
+        /**
+        * ResponseParams()
+        * @return Information about the device selected by the user
+        */
+        const TBTDeviceResponseParams& ResponseParams();
+
+    protected:  // New functions
+
+        /**
+        * CBTServiceSearcher()
+        * Constructs this object
+        */
+        CBTServiceSearcher();
+
+        /**
+        * Finished()
+        * The search has finished. Notify the observer
+        * that the process is complete.
+        */
+        virtual void Finished( TInt aError = KErrNone );
+
+        /**
+        * HasFinishedSearching()
+        * Is the instance still wanting to search.
+        * @return EFalse if the instance wants searching to continue.
+        */
+        virtual TBool HasFinishedSearching() const;
+
+        /**
+        * HasFoundService()
+        * @return ETrue if a service has been found
+        */
+        TBool HasFoundService() const;
+
+    protected: // abstract methods
+
+        /**
+        * ProtocolList()
+        * The list of Protocols required by the service.
+        */
+        virtual const TSdpAttributeParser::TSdpAttributeList&
+                                           ProtocolList() const = 0;
+
+        /**
+        * ServiceClass()
+        * The service class to search for
+        * @return the service class UUID
+        */
+        virtual const TUUID& ServiceClass() const = 0;
+
+        /**
+        * FoundElementL()
+        * Read the data element
+        * @param aKey a key that identifies the element
+        * @param aValue the data element
+        */
+        virtual void FoundElementL( TInt aKey, CSdpAttrValue& aValue ) = 0;
+
+    public: // from MSdpAgentNotifier
+
+        /**
+        * NextRecordRequestComplete()
+        * Process the result of the next record request
+        * @param aError the error code
+        * @param aHandle the handle of the service record
+        * @param aTotalRecordsCount the total number of matching
+        * service records
+        */
+        void NextRecordRequestComplete( TInt aError,
+                                        TSdpServRecordHandle aHandle,
+                                        TInt aTotalRecordsCount );
+
+        /**
+        * AttributeRequestResult()
+        * Process the next attribute requested
+        * @param aHandle the handle of the service record
+        * @param aAttrID the id of the attribute
+        * @param aAttrValue the value of the attribute
+        */
+        void AttributeRequestResult( TSdpServRecordHandle aHandle,
+                                     TSdpAttributeID aAttrID,
+                                     CSdpAttrValue* aAttrValue );
+
+        /**
+        * AttributeRequestComplete()
+        * Process the arrtibute request completion
+        * @param aHandle the handle of the service record
+        * @param aError the error code
+        */
+        void AttributeRequestComplete( TSdpServRecordHandle aHandle,
+                                       TInt aError );
+
+    private:    // Functions from base classes
+
+        /**
+        * NextRecordRequestCompleteL()
+        * Process the result of the next record request
+        * @param aError the error code
+        * @param aHandle the handle of the service record
+        * @param aTotalRecordsCount the total number of
+        * matching service records
+        */
+        void NextRecordRequestCompleteL( TInt aError,
+                                         TSdpServRecordHandle aHandle,
+                                         TInt aTotalRecordsCount );
+
+        /**
+        * AttributeRequestResultL()
+        * Process the next attribute requested
+        * @param aHandle the handle of the service record
+        * @param aAttrID the id of the attribute
+        * @param aAttrValue the value of the attribute
+        */
+        void AttributeRequestResultL( TSdpServRecordHandle aHandle,
+                                      TSdpAttributeID aAttrID,
+                                      CSdpAttrValue* aAttrValue );
+
+        /**
+        * AttributeRequestCompleteL()
+        * Process the arrtibute request completion
+        * @param aHandle the handle of the service record
+        * @param aError the error code
+        */
+        void AttributeRequestCompleteL( TSdpServRecordHandle,
+                                        TInt aError );
+
+    private:    // data
+
+        /**
+        * iStatusObserver pointer to the request status observer
+        * Not owned by CBTServiceSearcher
+        */
+        TRequestStatus* iStatusObserver;
+
+        /**
+        * iIsDeviceSelectorConnected is the device
+        * selector connected?
+        */
+        TBool iIsDeviceSelectorConnected;
+
+        /**
+        * iDeviceSelector
+        * a handle to the bluetooth device selector notifier
+        */
+        RNotifier iDeviceSelector;
+
+        /**
+        * iResponse
+        * the response of the device selection.
+        */
+        TBTDeviceResponseParamsPckg iResponse;
+
+        /**
+        * iSelectionFilter
+        * Request a device selection
+        */
+        TBTDeviceSelectionParamsPckg iSelectionFilter;
+        /**
+        * iAgent a connetction to the SDP client
+        * Owned by CBTServiceSearcher
+        */
+        CSdpAgent* iAgent;
+
+        /**
+        * iSdpSearchPattern a search pattern
+        * Owned by CBTServiceSearcher
+        */
+        CSdpSearchPattern* iSdpSearchPattern;
+
+        /** iHasFoundService has the service been found ? */
+        TBool iHasFoundService;
+    };
+
+#endif // __BTSERVICESEARCHER_H__
+
+// End of File