diff -r 453dfc402455 -r 0aa8cc770c8a remoteconn_plat/generic_hid_api/inc/hidcollection.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remoteconn_plat/generic_hid_api/inc/hidcollection.h Tue Aug 31 16:03:15 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 + +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 iCollections; + + /** + * List of fields in the current collection + */ + RPointerArray iFields; + + }; + +#endif // C_COLLECTION_H +