* Copyright 2009-2011, Michael Lotz, mmlr@mlotz.ch.
* Distributed under the terms of the MIT License.
*/
#ifndef HID_REPORT_ITEM_H
#define HID_REPORT_ITEM_H
#include <SupportDefs.h>
class HIDReport;
class HIDReportItem {
public:
HIDReportItem(HIDReport *report,
uint32 bitOffset, uint8 bitLength,
bool hasData, bool isArray, bool isRelative,
uint32 minimum, uint32 maximum,
uint32 usage);
HIDReport * Report() { return fReport; };
bool HasData() { return fHasData; };
bool Relative() { return fRelative; };
bool Array() { return fArray; };
bool Signed() { return fMinimum > fMaximum; };
uint32 Minimum() { return fMinimum; }
uint16 UsagePage();
uint16 UsageID();
uint32 Usage() { return fUsage; };
status_t Extract();
status_t Insert();
status_t SetData(uint32 data);
uint32 Data() { return fData; };
uint32 ScaledData(uint8 scaleToBits, bool toBeSigned);
uint32 ScaledRangeData(uint32 minimum, uint32 maximum);
float ScaledFloatData();
bool Valid() { return fValid; };
void PrintToStream(uint32 indentLevel = 0);
private:
HIDReport * fReport;
uint32 fByteOffset;
uint8 fShift;
uint32 fMask;
uint8 fBitCount;
uint8 fByteCount;
bool fHasData;
bool fArray;
bool fRelative;
uint32 fMinimum;
uint32 fMaximum;
uint32 fUsage;
uint32 fData;
bool fValid;
};
#endif