#include #include #include #include #include "pgmstrings.h" // Satisfy the IDE, which needs to see the include statment in the ino too. #ifdef dobogusinclude #include #endif #include class HIDUniversal2 : public HIDUniversal { public: HIDUniversal2(USB *usb) : HIDUniversal(usb) {}; protected: uint8_t OnInitSuccessful(); }; uint8_t HIDUniversal2::OnInitSuccessful() { uint8_t rcode; HexDumper Hex; ReportDescParser Rpt; if ((rcode = GetReportDescr(0, &Hex))) goto FailGetReportDescr1; if ((rcode = GetReportDescr(0, &Rpt))) goto FailGetReportDescr2; return 0; FailGetReportDescr1: USBTRACE("GetReportDescr1:"); goto Fail; FailGetReportDescr2: USBTRACE("GetReportDescr2:"); goto Fail; Fail: Serial.println(rcode, HEX); Release(); return rcode; } USB Usb; //USBHub Hub(&Usb); HIDUniversal2 Hid(&Usb); UniversalReportParser Uni; void setup() { Serial.begin( 115200 ); #if !defined(__MIPSEL__) while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection #endif Serial.println("Start"); if (Usb.Init() == -1) Serial.println("OSC did not start."); delay( 200 ); if (!Hid.SetReportParser(0, &Uni)) ErrorMessage(PSTR("SetReportParser"), 1 ); } void loop() { Usb.Task(); }