--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/remoteconn_plat/generic_hid_api/inc/hidcollection.h Fri Jun 11 14:27:06 2010 +0300
@@ -0,0 +1,272 @@
+/*
+* Copyright (c) 2005-2007 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 C_COLLECTION_H
+#define C_COLLECTION_H
+
+#include <e32std.h>
+
+class CField;
+
+
+/**
+ * Collection of HID report descriptor
+ * A CCollection represents an individual collection within a HID
+ * report descriptor. Each collection may have a number of associated
+ * report fields (CField objects) and a number of child collection
+ * objects. The collections within a HID report descriptor form a tree
+ * structure, with a CReportRoot collection at the root. The tree is
+ * generated by CParser.
+ *
+ *
+ * @lib generichid.lib
+ * @since S60 v5.0
+ */
+class CCollection : public CBase
+ {
+
+public:
+
+ /**
+ * An enumerations giving the possible types of collection, as
+ * given in "USB Device Class Definition for Human Interface
+ * Devices (HID)", Firmware Specification, Version 1.11, USB
+ * Implementers' Forum, June 2001.
+ *
+ * Note that a TUint32 is used for CCollection::iType, as it is
+ * possible to have a vendor defined collection type that isn't
+ * included in this list.
+ */
+ enum TType
+ {
+ EPhysical = 0x00, //!< Physical (group of axes)
+ EApplication = 0x01, //!< Application (mouse,keyboard)
+ ELogical = 0x02, //!< Logical (interrelated data)
+ EReport = 0x03, //!< Report
+ ENamedArray = 0x04, //!< NamedArray
+ EUsageSwitch = 0x05, //!< UsageSwitch
+ EUsageModifier = 0x06 //!< UsageModifier
+ };
+
+ static CCollection* NewL();
+ static CCollection* NewLC();
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCollection();
+
+ /**
+ * Get collection type
+ *
+ * @since S60 v5.0
+ * @return The type for this collection item
+ */
+ IMPORT_C TUint32 Type() const;
+
+ /**
+ * Get usagepage
+ *
+ * @since S60 v5.0
+ * @return The usage page for this collection
+ */
+ IMPORT_C TInt UsagePage() const;
+
+ /**
+ * Get usagepage
+ *
+ * @since S60 v5.0
+ * @return The usage page for this collection
+ */
+ IMPORT_C TInt Usage() const;
+
+ /**
+ * Get number of collections
+ *
+ * @since S60 v5.0
+ * @return The number of collections that have been created so far
+ */
+ IMPORT_C TInt CollectionCount() const;
+
+ /**
+ * Gets numbers of field stored in collection
+ *
+ * @since S60 v5.0
+ * @return The number of fields stored in for the current collection
+ */
+ IMPORT_C TInt FieldCount() const;
+
+ /**
+ * Returns a pointer to a specific collection from the list of collections
+ *
+ * @since S60 v5.0
+ * @param aIndex The index of the required collection
+ * @return The number of fields stored in for the current collection.
+ * NULL if there are no collection object at the secified index
+ */
+ IMPORT_C const CCollection* CollectionByIndex(TInt aIndex) const;
+
+ /**
+ * Returns a pointer to the field object at the given index within the field
+ * list
+ *
+ * @since S60 v5.0
+ * @param aIndex The offset within the current field list
+ * @return A pointer to the specified field object
+ * NULL if there is no field object at the specified index
+ */
+ IMPORT_C const CField* FieldByIndex(TInt aIndex) const;
+
+ /**
+ * Check if collection type is physical
+ *
+ * @since S60 v5.0
+ * @return true if physical
+ */
+ IMPORT_C TBool IsPhysical() const;
+
+ /**
+ * Check if collection type is application
+ *
+ * @since S60 v5.0
+ * @return true if application
+ */
+ IMPORT_C TBool IsApplication() const;
+
+ /**
+ * Check if collection type is logical
+ *
+ * @since S60 v5.0
+ * @return true if logical
+ */
+ IMPORT_C TBool IsLogical() const;
+
+ /**
+ * Check if collection type is report
+ *
+ * @since S60 v5.0
+ * @return true if report
+ */
+ IMPORT_C TBool IsReport() const;
+
+ /**
+ * Check if collection type is name array
+ *
+ * @since S60 v5.0
+ * @return true if named array
+ */
+ IMPORT_C TBool IsNamedArray() const;
+
+ /**
+ * Check if collection type is usage switch
+ *
+ * @since S60 v5.0
+ * @return true if is usage switch
+ */
+ IMPORT_C TBool IsUsageSwitch() const;
+
+ /**
+ * Check if collection type is usage modifier
+ *
+ * @since S60 v5.0
+ * @return true if usage modifier
+ */
+ IMPORT_C TBool IsUsageModifier() const;
+
+public:
+
+ /**
+ * Set Collection type
+ *
+ * @since S60 v5.0
+ * @return None
+ */
+ void SetType(TUint32 aType);
+
+ /**
+ * Set usage page
+ *
+ * @since S60 v5.0
+ * @return None
+ */
+ void SetUsagePage(TInt aUsagePage);
+
+ /**
+ * Set usage
+ *
+ * @since S60 v5.0
+ * @return None
+ */
+ void SetUsage(TInt aUsage);
+
+ /**
+ * Called when a new collection object has been encountered in
+ * the report descriptor. This creates a new CCollection object
+ * and adds it to the current list
+ *
+ * @since S60 v5.0
+ * @return None
+ */
+ CCollection* AddCollectionL();
+
+ /**
+ * Called when a new field object has been encountered in the
+ * report descriptor. This creates a new field object and adds it
+ * the the current list
+ *
+ * @since S60 v5.0
+ * @return A pointer to the new field object
+ */
+ CField* AddFieldL();
+
+protected:
+
+ CCollection();
+ void ConstructL();
+
+private:
+
+ /**
+ * Collection type
+ */
+ TUint32 iType;
+
+ /**
+ * Usage page
+ */
+ TInt iUsagePage;
+
+ /**
+ * Usage
+ */
+ TInt iUsage;
+
+ /**
+ * List of collections for the report descriptor
+ */
+ RPointerArray<CCollection> iCollections;
+
+ /**
+ * List of fields in the current collection
+ */
+ RPointerArray<CField> iFields;
+
+ };
+
+#endif // C_COLLECTION_H
+