--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/bteng/btengdiscovery/inc/btengsdpquery.h Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,227 @@
+/*
+* Copyright (c) 2006 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: Helper class for performing SDP queries.
+*
+*/
+
+
+#ifndef BTENGSDPQUERY_H
+#define BTENGSDPQUERY_H
+
+#include "btengdiscovery.h"
+
+class CBTEngSdpAttrParser;
+
+/** Array definition for storing SDP record handles */
+typedef RPointerArray<CSdpAttrValue> RSdpAttrValueArray;
+
+
+/**
+ * Class CBTEngSdpQuery
+ *
+ * ?more_complete_description
+ *
+ * @lib btengdiscovery.lib
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CBTEngSdpQuery ) : public CBase, public MSdpAgentNotifier
+ {
+
+public:
+
+ /** ?description */
+ enum TSdpQueryType
+ {
+ EQueryIdle,
+ EServiceQuery,
+ EAttrQuery,
+ EServiceAttrQuery
+ };
+
+ /**
+ * Two-phase constructor
+ */
+ static CBTEngSdpQuery* NewL( MBTEngSdpResultReceiver* aNotifier );
+
+ /**
+ * Destructor
+ */
+ virtual ~CBTEngSdpQuery();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ */
+ void Cancel();
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param aAddr ?description
+ * @param aService ?description
+ */
+ void RemoteSdpQueryL( const TBTDevAddr& aAddr, const TUUID& aService );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param aAddr ?description
+ * @param aHandle ?description
+ * @param aAttrId ?description
+ */
+ void RemoteSdpQueryL( const TBTDevAddr& aAddr,
+ const TSdpServRecordHandle aHandle,
+ const TSdpAttributeID aAttrId );
+
+ /**
+ * ?description
+ *
+ * @since S60 v3.2
+ * @param aAddr ?description
+ * @param aService ?description
+ * @param aAttrId ?description
+ */
+ void RemoteSdpQueryL( const TBTDevAddr& aAddr, const TUUID& aService,
+ const TSdpAttributeID aAttrId );
+
+// from base class MSdpAgentNotifier
+
+ /**
+ * From MSdpAgentNotifier.
+ * Called when an service record request operation completes.
+ *
+ * @since S60 v3.2
+ * @param aError KErrNone if successful; KErrEof if there are no more
+ * SDP records left to be read; or an SDP error.
+ * @param aHandle Service record for which the query was made.
+ * @param aTotalRecordsCount Total number of matching records.
+ */
+ virtual void NextRecordRequestComplete( TInt aError,
+ TSdpServRecordHandle aHandle,
+ TInt aTotalRecordsCount );
+
+ /**
+ * From MSdpAgentNotifier.
+ * Called when an attribute request wants to pass up a result.
+ *
+ * @since S60 v3.2
+ * @param aHandle Service record for which the query was made.
+ * @param aAttrID ID of the attribute obtained.
+ * @param @param aAttrValue Attribute value obtained.
+ */
+ virtual void AttributeRequestResult( TSdpServRecordHandle aHandle,
+ TSdpAttributeID aAttrID,
+ CSdpAttrValue* aAttrValue );
+
+ /**
+ * From MSdpAgentNotifier.
+ * Called when an attribute request wants to signal the completion
+ * of a attribute request.
+ *
+ * @since S60 v3.2
+ * @param aHandle Service record for which the query was made.
+ * @param aError An error.
+ */
+ virtual void AttributeRequestComplete( TSdpServRecordHandle aHandle,
+ TInt aError );
+
+private:
+
+ /**
+ * C++ default constructor
+ */
+ CBTEngSdpQuery( MBTEngSdpResultReceiver* aNotifier );
+
+ /**
+ * Symbian 2nd-phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * Helper function to pass back an error to our client.
+ *
+ * @since S60 v3.2
+ * @param aError The error to return to the result observer.
+ */
+ void NotifyError( TInt aError );
+
+ /**
+ * Helper function to check that
+ *
+ * @since S60 v3.2
+ * @param aAddr ?description
+ * @return KErrNone if sucessful,
+ * KErrNotReady if no SDP result notifier has been set,
+ * otherwise the error code indicating the error situation.
+ */
+ void CheckSdpAgentL( const TBTDevAddr& aAddr );
+
+private: // data
+
+ /**
+ * Flag to check if an SDP query is ongoing.
+ */
+ TSdpQueryType iQueryType;
+
+ /**
+ * Flag to check if an SDP query is ongoing.
+ */
+ TBTDevAddr iBDAddr;
+
+ /**
+ * Attribute ID for second step of ServiceAttributeSearch
+ * operation; otherwise NULL.
+ */
+ TSdpAttributeID iRequestedAttrId;
+
+ /**
+ * Result array of discovered service record handles.
+ */
+ RSdpRecHandleArray iRecHandleArray;
+
+ /**
+ * Result array of discovered service record attributes.
+ */
+ RSdpResultArray iAttrResArray;
+
+ /**
+ * Array for temporarily storing CSdpAttrValue objects. The actual
+ * value is used through the RSdpResultArray member.
+ */
+ RSdpAttrValueArray iAttrValArray;
+
+ /**
+ * ?description_of_pointer_member
+ * Own.
+ */
+ CSdpAgent* iSdpAgent;
+
+ /**
+ * Parser for decoding SDP attribute values.
+ * Own.
+ */
+ CBTEngSdpAttrParser* iParser;
+
+ /**
+ * Reference to receiver of remote SDP query results.
+ * Not own.
+ */
+ MBTEngSdpResultReceiver* iResultNotifier;
+
+ };
+
+#endif // BTENGSDPQUERY_H