/* * Copyright 2011, Michael Lotz, mmlr@mlotz.ch. * Distributed under the terms of the MIT License. */ #ifndef HID_WRITER_H #define HID_WRITER_H #include "HIDDataTypes.h" class HIDWriter { public: HIDWriter(size_t blockSize = 20); ~HIDWriter(); // High Level status_t DefineInputPadding(uint8 count, uint8 bitLength); status_t DefineInputData(uint8 count, uint8 bitLength, main_item_data data, uint32 logicalMinimum, uint32 logicalMaximum, uint16 usagePage, uint16 usageMinimum, uint16 usageMaximum = 0xffff); status_t BeginCollection(uint8 collectionType, uint16 usagePage, uint16 usageID); status_t EndCollection(); // Low Level status_t SetUsagePage(uint16 usagePage); status_t SetLogicalMinimum(uint32 logicalMinimum); status_t SetLogicalMaximum(uint32 logicalMaximum); status_t SetReportSize(uint8 reportSize); status_t SetReportID(uint8 reportID); status_t SetReportCount(uint8 reportCount); status_t LocalSetUsageID(uint16 usageID); status_t LocalSetUsageMinimum(uint16 usageMinimum); status_t LocalSetUsageMaximum(uint16 usageMaximum); status_t BeginCollection(uint8 collectionType); status_t Input(main_item_data data); status_t Output(main_item_data data); status_t Feature(main_item_data data); // Generic status_t WriteShortItem(uint8 type, uint8 tag, uint32 value); status_t Write(const void *data, size_t length); size_t BufferLength() { return fBufferUsed; }; const uint8 * Buffer() { return fBuffer; }; void Reset(); private: size_t fBlockSize; size_t fBufferAllocated; size_t fBufferUsed; uint8 * fBuffer; status_t fStatus; }; #endif // HID_WRITER_H