bluetoothengine/bteng/inc/btengsdpdbhandler.h
changeset 0 f63038272f30
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/bteng/inc/btengsdpdbhandler.h	Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* 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 SDP database management.
+*
+*/
+
+
+#ifndef BTENGSDPDBHANDLER_H
+#define BTENGSDPDBHANDLER_H
+
+#include <btsdp.h>
+
+class TResourceReader;
+
+
+/**
+ *  ?one_line_short_description
+ *
+ *  ?more_complete_description
+ *
+ *  @lib btengdiscovery.lib
+ *  @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CBTEngSdpDbHandler ) : public CBase
+    {
+
+public:
+
+    /**
+     * Two-phase constructor
+     *
+     * @since S60 v3.2
+     * @return Pointer to the constructed CBTEngSdpDbHandler object.
+     */
+    static CBTEngSdpDbHandler* NewL();
+
+    /**
+     * Destructor
+     */
+    virtual ~CBTEngSdpDbHandler();
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aChannel RFCOMM channel to be filled in into the record.
+     * @param aHandle ?description
+     */
+    void RegisterSdpRecordL( const TUUID& aService, TInt aChannel, 
+                              TSdpServRecordHandle& aHandle );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aVendorId Vendor ID to be filled in into the DI record.
+     * @param aProductId Product ID to be filled in into the DI record.
+     * @param aHandle ?description
+     */
+    void RegisterSdpRecordL( const TUUID& aService, TInt aVendorId, 
+                              TInt aProductId, TSdpServRecordHandle& aHandle );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aHandle ?description
+     */
+    void RegisterSdpRecordL( const TUUID& aService, 
+                              TSdpServRecordHandle& aHandle );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aHandle Handle to the SDP record to be deleted. Note that 
+     *        this has to be a valid (existing) SDP record.
+     */
+    void DeleteSdpRecordL( const TSdpServRecordHandle aHandle );
+
+private:
+
+    /**
+     * C++ default constructor
+     *
+     * @since S60 v3.2
+     */
+    CBTEngSdpDbHandler();
+
+    /**
+     * Symbian 2nd-phase constructor
+     *
+     * @since S60 v3.2
+     */
+    void ConstructL();
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aChannel ?description
+     * @return ?description
+     */
+    void BuildAttributeLC( CSdpAttrValue*& aAttrVal, TResourceReader& aReader, 
+                            TInt aAttrId );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aChannel ?description
+     * @return ?description
+     */
+    void BuildAttrValueLC( CSdpAttrValue*& aAttrVal, TResourceReader& aReader, 
+                            TUint aAttrType, TInt aAttrId );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aChannel ?description
+     * @return ?description
+     */
+    void BuildAttrDesLC( CSdpAttrValue*& aAttrVal, TResourceReader& aReader, 
+                          TInt aAttrId );
+
+    /**
+     * ?description
+     *
+     * @since S60 v3.2
+     * @param aService ?description
+     * @param aChannel ?description
+     * @return ?description
+     */
+    void ReadRecordResourceL( const TDesC8& aService, TResourceReader& aReader, 
+                               HBufC8*& aRecordBuf );
+
+private: // data
+
+    /**
+     * RFComm channel number.
+     * (to be replaced with a more flexible structure 
+     * so that e.g. DI profile values can be set too).
+     */
+    TUint iChannel;
+
+    /**
+     * DI profile vendor ID.
+     */
+    TUint iVendorId;
+
+    /**
+     * DI profile product ID.
+     */
+    TUint iProductId;
+
+    /**
+     * Session to SDP database.
+     */
+    RSdp iSdp;
+
+    /**
+     * Subsession to SDP database for managing SDP records.
+     */
+    RSdpDatabase iDb;
+
+    };
+
+#endif // BTENGSDPDBHANDLER