--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/bthid/bthidserver/inc/hidsdpclient.h Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,170 @@
+/*
+* Copyright (c) 2008 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: Declares main application class.
+ *
+*/
+
+
+#ifndef __HIDSDPCLIENT_H__
+#define __HIDSDPCLIENT_H__
+
+#include <e32base.h>
+#include <btsdp.h>
+
+class CBTHidDevice;
+class MHidSdpObserver;
+
+/*!
+ This class queries the SDP database of a HID device in order to populate an
+ instance of the CBTHidDevice class
+ */
+class CHidSdpClient : public CActive, public MSdpAgentNotifier
+ {
+public:
+
+ /*!
+ Create a CHidSdpClient object
+ @param aDevice device details object to populate
+ @param aObserver observer to report to.
+ @result A pointer to the created instance of CHidSdpClient
+ */
+ static CHidSdpClient* NewL(CBTHidDevice& aDevice,
+ MHidSdpObserver& aObserver);
+
+ /*!
+ Create a CHidSdpClient object
+ @param aDevice device details object to populate
+ @param aObserver observer to report to.
+ @result A pointer to the created instance of CHidSdpClient
+ */
+ static CHidSdpClient* NewLC(CBTHidDevice& aDevice,
+ MHidSdpObserver& aObserver);
+
+ /*!
+ Destroy the object and release all memory objects
+ */
+ ~CHidSdpClient();
+
+ /*!
+ Start the SDP inquiry.
+ */
+ void StartL();
+
+ /*!
+ Ask the object to destroy itself when its conventient.
+ */
+ void Kill();
+
+public:
+ // From CActive
+ void RunL()
+ {
+ delete this;
+ }
+ ;
+ void DoCancel()
+ {
+ }
+ ;
+
+public:
+ // From MSdpAgentNotifier
+ /*!
+ Called when an service record request
+ (CSdpAgent::NextRecordRequestComplete()) operation completes.
+ @param aError KErrNone, or an SDP error
+ @param aHandle Service record for which the query was made
+ @param aTotalRecordsCount Total number of matching records
+ */
+
+ void NextRecordRequestComplete(TInt aError, TSdpServRecordHandle aHandle,
+ TInt aTotalRecordsCount);
+ /*!
+ Called by the attribute request function
+ (CSdpAgent::AttributeRequestL()) to pass the results of a successful
+ attribute request.
+ @param aHandle Service record for which the query was made
+ @param aAttrID ID of the attribute obtained
+ @param aAttrValue Attribute value obtained
+ */
+
+ void AttributeRequestResult(TSdpServRecordHandle aHandle,
+ TSdpAttributeID aAttrID, CSdpAttrValue* aAttrValue);
+
+ /*!
+ Called when an service record request
+ (CSdpAgent::NextRecordRequestComplete()) operation completes.
+ @param aHandle Service record for which the query was made
+ @param aError KErrNone, or an SDP error
+ */
+
+ void AttributeRequestComplete(TSdpServRecordHandle aHandle, TInt aError);
+
+private:
+
+ /*!
+ Constructs this object
+ @param aDevice device details object to populate
+ @param aObserver observer to report to.
+ */
+ CHidSdpClient(CBTHidDevice& aDevice, MHidSdpObserver& aObserver);
+
+ /*!
+ Performs second phase construction of this object
+ */
+ void ConstructL();
+
+ /*
+ Reset the object and inform the observer of the result
+ @param aError KErrNone if successful, or an SDP error
+ */
+ void Finish(TInt aError);
+
+private:
+ // Member variables
+ /*! Current Parser State */
+ enum TParserState
+ {
+ EIdle, /*!< Parser is idle */
+ EHIDService, /*!< Parser is retrieving the HID Service Record */
+ EBTPnPService
+ /*!< Parser is retrieving the PnP Service Record */
+ };
+
+ /*! Device details object to fill from sdp query */
+ CBTHidDevice& iDevice;
+
+ /*! Observer to inform of results */
+ MHidSdpObserver& iObserver;
+
+ /*! Current state of the parser */
+ TParserState iParserState;
+
+ /*! SDP Agent used to search the SDP database */
+ CSdpAgent* iAgent;
+
+ /*! UUID pattern to filter the SDP database search */
+ CSdpSearchPattern* iSdpSearchPattern;
+
+ /*! HID Service record attribute filter */
+ CSdpAttrIdMatchList* iHIDMatchList;
+
+ /*! BT PnP Service record attribute filter */
+ CSdpAttrIdMatchList* iPNPMatchList;
+
+ /*! A bitmask of the mandatory attributes found */
+ TUint iMandAttrValue;
+ };
+
+#endif // __HIDSDPCLIENT_H__