diff --git a/USBHost.h b/USBHost.h index b40aabd..250ecf6 100644 --- a/USBHost.h +++ b/USBHost.h @@ -382,6 +382,7 @@ public: void attachRelease(void (*keyReleased)()); protected: virtual bool claim(Device_t *device, int type, const uint8_t *descriptors, uint32_t len); + virtual void control(const Transfer_t *transfer); virtual void disconnect(); static void callback(const Transfer_t *transfer); void new_data(const Transfer_t *transfer); @@ -389,6 +390,7 @@ private: void (*keyPressedFunction)(); void (*keyReleasedFunction)(); Pipe_t *datapipe; + setup_t setup; uint8_t report[8]; }; diff --git a/keyboard.cpp b/keyboard.cpp index 63688ef..0aa04bd 100644 --- a/keyboard.cpp +++ b/keyboard.cpp @@ -62,9 +62,15 @@ bool KeyboardController::claim(Device_t *dev, int type, const uint8_t *descripto datapipe = new_Pipe(dev, 3, endpoint, 1, 8, interval); datapipe->callback_function = callback; queue_Data_Transfer(datapipe, report, 8, this); + mk_setup(setup, 0x21, 10, 0, 0, 0); // 10=SET_IDLE + queue_Control_Transfer(dev, &setup, NULL, this); return true; } +void KeyboardController::control(const Transfer_t *transfer) +{ +} + void KeyboardController::callback(const Transfer_t *transfer) { println("KeyboardController Callback (static)");