remoteconn_plat/generic_hid_api/inc/hidfield.h
branchRCL_3
changeset 19 0aa8cc770c8a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remoteconn_plat/generic_hid_api/inc/hidfield.h	Tue Aug 31 16:03:15 2010 +0300
@@ -0,0 +1,732 @@
+/*
+* Copyright (c) 2004-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:  HID field descriptor definition
+*
+*/
+
+#ifndef C_FIELD_H
+#define C_FIELD_H
+
+
+#include <e32base.h>
+
+
+const TInt   KFieldAttributeConstant      = 1<<0;  //!< Data (0) or Constant (1)
+const TInt   KFieldAttributeVariable      = 1<<1;  //!< Array (0) or Variable (1)
+const TInt   KFieldAttributeRelative      = 1<<2;  //!< Absolute (0) or Relative (1)
+const TInt   KFieldAttributeWrap          = 1<<3;  //!< No wrap (0) or Wrap (1)
+const TInt   KFieldAttributeNonLinear     = 1<<4;  //!< Linear (0) or Non-linear (1)
+const TInt   KFieldAttributeNoPreferred   = 1<<5;  //!< Preferred state (0) or not (1)
+const TInt   KFieldAttributeNullState     = 1<<6;  //!< No null position (0) or null state (1)
+const TInt   KFieldAttributeVolatile      = 1<<7;  //!< Non-volatile (0) or volatile (1)
+const TInt   KFieldAttributeBufferedBytes = 1<<8;  //!< Bit field (0) or buffered bytes (1)
+    
+const TInt KSizeOfByte      = 8;
+/**
+ *  HID report field presentation
+ *  Represents an individual field in a HID report, ie. the attributes
+ *  of an input, output or feature Main item defined in the HID report
+ *  descriptor.
+ *
+ *  The CField contains information such as the usage IDs sent in the
+ *  the report, the type of the report (input, output or feature) and
+ *  the logical range.
+ *
+ *
+ *  @lib generichid.lib
+ *  @since S60 v5.0
+ */
+class CField : public CBase
+  {
+public:
+    enum TType
+        {
+        EInput,    //!< Input report
+        EOutput,   //!< Output report
+        EFeature   //!< Feature report
+        };
+
+    
+
+public:
+  static CField* NewL();
+  static CField* NewLC();
+
+  /**
+   * Destructor.
+   */
+  virtual ~CField();
+
+public:
+  // Accessors:
+
+  /**
+   * Set Report root
+   *
+   * @since S60 v5.0
+   * @return None
+   */
+  IMPORT_C TInt UsagePage() const;
+
+  /**
+   * Return report id
+   *
+   * @since S60 v5.0
+   * @return report id
+   */
+  IMPORT_C TInt ReportId() const;
+
+  /**
+   * Return offset
+   *
+   * @since S60 v5.0
+   * @return offset
+   */
+  IMPORT_C TInt Offset() const;
+
+  /**
+   * Return size
+   *
+   * @since S60 v5.0   
+   * @return None
+   */
+  IMPORT_C TInt Size() const;
+
+  /**
+   * Return count
+   *
+   * @since S60 v5.0
+   * @return count
+   */
+  IMPORT_C TInt Count() const;
+
+  /**
+   * Return logical minimium
+   *
+   * @since S60 v5.0
+   * @return Logical minimium
+   */
+  IMPORT_C TInt LogicalMin() const;
+
+  /**
+   * Return logical maximum
+   *
+   * @since S60 v5.0   
+   * @return logical maximum
+   */
+  IMPORT_C TInt LogicalMax() const;
+
+  /**
+   * Return usage min
+   *
+   * @since S60 v5.0
+   * @return None
+   */
+  IMPORT_C TInt UsageMin() const;
+
+  /**
+   * Return usage max
+   *
+   * @since S60 v5.0   
+   * @return usage max
+   */
+  IMPORT_C TInt UsageMax() const;
+
+  /**
+   * Return Physical minimum
+   *
+   * @since S60 v5.0
+   * @return physical minimum
+   */
+  IMPORT_C TInt PhysicalMin() const;
+
+  /**
+   * Return Physical max
+   *
+   * @since S60 v5.0
+   * @return return physical max
+   */
+  IMPORT_C TInt PhysicalMax() const;
+
+  /**
+   * Return unit
+   *
+   * @since S60 v5.0
+   * @return Unit
+   */
+  IMPORT_C TInt Unit() const;
+
+  /**
+   * Return unit exponent
+   *
+   * @since S60 v5.0
+   * @return unit exponent
+   */
+  IMPORT_C TInt UnitExponent() const;
+
+  /**
+   * Return Designator index
+   *
+   * @since S60 v5.0
+   * @return Designator Index
+   */
+  IMPORT_C TInt DesignatorIndex() const;
+
+  /**
+   * Return designator minimium
+   *
+   * @since S60 v5.0
+   * @return return designator index minimium
+   */
+  IMPORT_C TInt DesignatorMin() const;
+
+  /**
+   * Return designator maximium
+   *
+   * @since S60 v5.0
+   * @return designator maximium
+   */
+  IMPORT_C TInt DesignatorMax() const;
+
+  /**
+   * Return string minimum
+   *
+   * @since S60 v5.0
+   * @return None
+   */
+  IMPORT_C TInt StringMin() const;
+
+  /**
+   * Return string maximum
+   *
+   * @since S60 v5.0
+   * @return string maximum
+   */
+  IMPORT_C TInt StringMax() const;
+
+  /**
+   * Return string index
+   *
+   * @since S60 v5.0
+   * @return string index
+   */
+  IMPORT_C TInt StringIndex() const;
+
+  /**
+   * Return attributes
+   *
+   * @since S60 v5.0
+   * @return attributes
+   */
+  IMPORT_C TUint32 Attributes() const;
+
+  /**
+   * Return type
+   *
+   * @since S60 v5.0
+   * @return type
+   */
+  IMPORT_C TType Type() const;
+
+  /**
+   * Return variable status
+   *
+   * @since S60 v5.0
+   * @return variable status
+   */
+  IMPORT_C TBool IsVariable() const;
+
+  /**
+   * Return array status
+   *
+   * @since S60 v5.0
+   * @return arrau status
+   */
+  IMPORT_C TBool IsArray() const;
+
+  /**
+   * Return data status
+   *
+   * @since S60 v5.0
+   * @return data status
+   */
+  IMPORT_C TBool IsData() const;
+
+  /**
+   * Return constant status
+   *
+   * @since S60 v5.0
+   * @return constant status
+   */
+  IMPORT_C TBool IsConstant() const;
+
+  /**
+   * Return input status
+   *
+   * @since S60 v5.0
+   * @return input status
+   */
+  IMPORT_C TBool IsInput() const;
+
+  /**
+   * Return output status
+   *
+   * @since S60 v5.0
+   * @return None
+   */
+  IMPORT_C TBool IsOutput() const;
+
+  /**
+   * Return feature status
+   *
+   * @since S60 v5.0
+   * @return feature status
+   */
+  IMPORT_C TBool IsFeature() const;
+
+  /**
+   * Check if reportid is in report
+   *
+   * @since S60 v5.0
+   * @param aReportId report id
+   * @return true if reportid is in report
+   */
+  IMPORT_C TBool IsInReport(TInt aReportId) const;
+
+  /**
+   * Check if usage exsist
+   *
+   * @since S60 v5.0
+   * @param aUsage Usage id
+   * @return None
+   */
+  IMPORT_C TBool HasUsage(TInt aUsage) const;
+
+  /**
+   * Return usage array
+   *
+   * @since S60 v5.0
+   * @return usage array
+   */
+  IMPORT_C TArray<TInt> UsageArray() const;
+
+  /**
+   * Return usage
+   *
+   * @since S60 v5.0
+   * @param aIndex usage array index
+   * @return usage
+   */
+  IMPORT_C TInt Usage(TInt aIndex) const;
+
+  /**
+   * Return usage count
+   *
+   * @since S60 v5.0
+   * @return usage count
+   */
+  IMPORT_C TInt UsageCount() const;
+
+  /**
+   * Return last usage
+   *
+   * @since S60 v5.0
+   * @return last usage
+   */
+  IMPORT_C TInt LastUsage() const;
+
+  /**
+   * Set type
+   *
+   * @since S60 v5.0
+   * @param aType type of field
+   * @return None
+   */
+  IMPORT_C void SetType(const TType& aType);
+
+  /**
+   * Add usage
+   *
+   * @since S60 v5.0
+   * @param aUsage usage to be added
+   * @return None
+   */
+  IMPORT_C void AddUsageL(TInt aUsage);
+
+  /**
+   * Clear usage list
+   *
+   * @since S60 v5.0
+   * @return None
+   */
+  IMPORT_C void ClearUsageList();
+
+  /**
+   * Set usage page
+   *
+   * @since S60 v5.0
+   * @param aUsagePage usagepage to be set
+   * @return None
+   */
+  IMPORT_C void SetUsagePage(TInt aUsagePage);
+
+  /**
+   * Set offset
+   *
+   * @since S60 v5.0
+   * @param aOffset offset to be set
+   * @return None
+   */
+  IMPORT_C void SetOffset(TInt aOffset);
+
+  /**
+   * Set size
+   *
+   * @since S60 v5.0
+   * @param aSize size to be set
+   * @return None
+   */
+  IMPORT_C void SetSize(TInt aSize);
+
+  /**
+   * Set count
+   *
+   * @since S60 v5.0
+   * @param aCount Count to be set
+   * @return None
+   */
+  IMPORT_C void SetCount(TInt aCount);
+
+  /**
+   * Set logical minimium
+   *
+   * @since S60 v5.0
+   * @param aMin Logical minimium to be set
+   * @return None
+   */
+  IMPORT_C void SetLogicalMin(TInt aMin);
+
+  /**
+   * Set logical maximum
+   *
+   * @since S60 v5.0
+   * @param aMax logical maximum to be used
+   * @return None
+   */
+  IMPORT_C void SetLogicalMax(TInt aMax);
+
+  /**
+   * Set usage min
+   *
+   * @since S60 v5.0
+   * @param aMin  usage minimium to be set.
+   * @return None
+   */
+  IMPORT_C void SetUsageMin(TInt aMin);
+
+  /**
+   * Set usage maximum
+   *
+   * @since S60 v5.0
+   * @param aMax usage max to be set
+   * @return None
+   */
+  IMPORT_C void SetUsageMax(TInt aMax);
+
+  /**
+   * Set Report ID
+   *
+   * @since S60 v5.0
+   * @param aReportId report id to be set
+   * @return None
+   */
+  IMPORT_C void SetReportId(TInt aReportId);
+
+  /**
+   * Set attributes
+   *
+   * @since S60 v5.0
+   * @param aAttributes attributes to be set
+   * @return None
+   */
+  IMPORT_C void SetAttributes(TUint32 aAttributes);
+
+  /**
+   * Set physical minimium
+   *
+   * @since S60 v5.0
+   * @param aValue physical minimium value
+   * @return None
+   */
+  IMPORT_C void SetPhysicalMin(TInt aValue);
+
+  /**
+   * Set Physical maximum
+   *
+   * @since S60 v5.0
+   * @param aValue physical maximum value
+   * @return None
+   */
+  IMPORT_C void SetPhysicalMax(TInt aValue);
+
+  /**
+   * Set unit value
+   *
+   * @since S60 v5.0
+   * @param aValue unit value
+   * @return None
+   */
+  IMPORT_C void SetUnit(TInt aValue);
+
+  /**
+   * Set unit exponent
+   *
+   * @since S60 v5.0
+   * @param aValue unit exponent valut to be set
+   * @return None
+   */
+  IMPORT_C void SetUnitExponent(TInt aValue);
+
+  /**
+   * Set Designator index
+   *
+   * @since S60 v5.0
+   * @param aValue Designator index value
+   * @return None
+   */
+  IMPORT_C void SetDesignatorIndex(TInt aValue);
+
+  /**
+   * Set designator minimium
+   *
+   * @since S60 v5.0
+   * @param aValue designator minimum value
+   * @return None
+   */
+  IMPORT_C void SetDesignatorMin(TInt aValue);
+
+  /**
+   * Set designator maximium value
+   *
+   * @since S60 v5.0
+   * @param aValue designator maximium value
+   * @return None
+   */
+  IMPORT_C void SetDesignatorMax(TInt aValue);
+
+  /**
+   * Set string minimium value
+   *
+   * @since S60 v5.0
+   * @param aValue string minimium value
+   * @return None
+   */
+  IMPORT_C void SetStringMin(TInt aValue);
+
+  /**
+   * Set string maximum value
+   *
+   * @since S60 v5.0
+   * @param aValue string maximum value to be set
+   * @return None
+   */
+  IMPORT_C void SetStringMax(TInt aValue);
+
+  /**
+   * Set string index
+   *
+   * @since S60 v5.0
+   * @param aValue string index
+   * @return None
+   */
+  IMPORT_C void SetStringIndex(TInt aValue);
+
+  /**
+   * Set Logical range
+   *
+   * @since S60 v5.0
+   * @param aMin logical range minimium value
+   * @param aMax logical range maximum value
+   * @return None
+   */
+  IMPORT_C void SetLogicalRange(TInt aMin, TInt aMax);
+
+  /**
+   * Set Usage range
+   *
+   * @since S60 v5.0
+   * @param aMin usage range minimium value
+   * @param aMax usage range maximum value
+   * @return None
+   */
+  IMPORT_C void SetUsageRange(TInt aMin, TInt aMax);
+
+  /**
+   * Set Physical range
+   *
+   * @since S60 v5.0
+   * @param aMin physical range minimium value
+   * @param aMax physical range maximum value
+   * @return None
+   */
+  IMPORT_C void SetPhysicalRange(TInt aMin, TInt aMax);
+
+  /**
+   * Set string range
+   *
+   * @since S60 v5.0
+   * @param aMin string range minimium value
+   * @param aMax string range maximum value
+   * @return None
+   */
+  IMPORT_C void SetStringRange(TInt aMin, TInt aMax);
+
+  /**
+   * Set designator range
+   *
+   * @since S60 v5.0
+   * @param aMin designator range minimium value
+   * @param aMax designator range maximum value
+   * @return None
+   */
+  IMPORT_C void SetDesignatorRange(TInt aMin, TInt aMax);
+
+private:
+  CField();
+
+  
+
+private:
+
+  /**
+   * Input, output or feature report
+   */
+  TType iType;
+
+  // For a detailed description of the use of the following members,
+  // see "USB Device Class Definition for Human Interface Devices
+  // (HID)", Firmware Specification, Version 1.11, USB Implementers'
+  // Forum, June 2001.
+
+  /**
+   * The usage page this field is associated with (G)
+   */
+  TInt iUsagePage;
+
+  /**
+   * ID for the HID report containing this field (G)
+   */
+  TInt iReportId;
+
+  /**
+   * Field offset (in bits) from start of report
+   */
+  TInt iPos;
+
+  /**
+   * Bit size of each item in the current field (G)
+   */
+  TInt iSize;
+
+  /**
+   * Number of items in the report field (G)
+   */
+  TInt iCount;
+
+  /**
+   * Minimum extent value in logical units (G)
+   */
+  TInt iLogicalMin;
+
+  /**
+   * Maximum extent value in logical units (G)
+   */
+  TInt iLogicalMax;
+
+  /**
+   * Starting usage associated with array / bitmap (L)
+   */
+  TInt iUsageMin;
+
+  /**
+   * Ending usage associated with array / bitmap (L)L)
+   */
+  TInt iUsageMax;
+
+  /**
+   * Unit value (G)
+   */
+  TInt iUnit;
+
+  /**
+   * Value of the unit exponent in base 10 (G)
+   */
+  TInt iUnitExponent;
+
+  /**
+   * Body part used for a control (L)
+   */
+  TInt iDesignatorIndex;
+
+  /**
+   * String associated with a control (L)
+   */
+  TInt iStringIndex;
+
+  /**
+   * Minimum physical extent for a variable item (G)
+   */
+  TInt iPhysicalMin;
+
+  /**
+   * Maximum physical extent for a variable item (G)
+   */
+  TInt iPhysicalMax;
+
+  /**
+   * First string index for a group of strings (L)
+   */
+  TInt iStringMin;
+
+  /**
+   * Last string index for a group of strings (L)
+   */
+  TInt iStringMax;
+
+  /**
+   * Starting designator index (L)
+   */
+  TInt iDesignatorMin;
+
+  /**
+   * Ending designator index (L)
+   */
+  TInt iDesignatorMax;
+
+  /**
+   * Flags associated with a main item (e.g. "array")
+   */
+  TUint32 iAttributes;
+
+  /**
+   * The usage indexes associated with this field (G)
+   */
+  RArray<TInt> iUsageList;
+
+  // (G) = Global item
+  // (L) = Local item
+  };
+
+#endif
+