1/* 2 * Copyright 2009-2011, Michael Lotz, mmlr@mlotz.ch. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef HID_REPORT_ITEM_H 6#define HID_REPORT_ITEM_H 7 8#include <SupportDefs.h> 9 10class HIDReport; 11 12class HIDReportItem { 13public: 14 HIDReportItem(HIDReport *report, 15 uint32 bitOffset, uint8 bitLength, 16 bool hasData, bool isArray, bool isRelative, 17 uint32 minimum, uint32 maximum, 18 uint32 usage); 19 20 HIDReport * Report() { return fReport; }; 21 22 bool HasData() { return fHasData; }; 23 bool Relative() { return fRelative; }; 24 bool Array() { return fArray; }; 25 bool Signed() { return fMinimum > fMaximum; }; 26 uint32 Minimum() { return fMinimum; } 27 28 uint16 UsagePage(); 29 uint16 UsageID(); 30 31 uint32 Usage() { return fUsage; }; 32 33 status_t Extract(); 34 status_t Insert(); 35 36 status_t SetData(uint32 data); 37 uint32 Data() { return fData; }; 38 39 uint32 ScaledData(uint8 scaleToBits, bool toBeSigned); 40 uint32 ScaledRangeData(uint32 minimum, uint32 maximum); 41 float ScaledFloatData(); 42 43 bool Valid() { return fValid; }; 44 45 void PrintToStream(uint32 indentLevel = 0); 46private: 47 HIDReport * fReport; 48 uint32 fByteOffset; 49 uint8 fShift; 50 uint32 fMask; 51 uint8 fBitCount; 52 uint8 fByteCount; 53 bool fHasData; 54 bool fArray; 55 bool fRelative; 56 uint32 fMinimum; 57 uint32 fMaximum; 58 uint32 fUsage; 59 60 uint32 fData; 61 bool fValid; 62}; 63 64#endif // HID_REPORT_ITEM_H 65