USB stack enhancements
Rockbox has an integrated USB stack for some targets, with mainly the Mass-Storage Class Driver being used. The main aim of the project, is to add support for an additional class-driver, the Human-Interface-Device (HID) class driver, and to overhaul the USB stack to dynamically load class drivers as modules (aka plugins), therefore reduce binary size, and gain further benefits, such as ease development of additional class drivers (e.g. MTP).
Public Roadmap git repository
Type the following command in order to clone the git repository: - Implement a working HID class driver
- Write a HID test application (control volume of the host)
$ git clone git://github.com/tomers/Rockbox-USB-stack-enhancement.git Phase 2 (50%):
Project Plan - Separate class driver from main binary, and implement infrastructure to dynamically load them
- Implement a working HID class driver
- Write a HID test application (control volume of the host)
- Separate class driver from main binary, and implement infrastructure to dynamically load them
Currently working on: Phase 1
Currently working on: Implement HID class driverRemaining work for completing phase 1:
- Configure keymaps for all platforms that uses the Rockbox USB stack (FS#10218)
- Implement a sample application that sends various key codes to the host, e.g. use Rockbox as a PowerPoint Presenter (but not cordless, of course)
Completed (and committed) tasks:
- Switch to git repository management, to ease development process
- Valid enumeration of the DAP as a Human-Interface Device
- Implement support for Interrupt transfers in Sansa e200
- Add debug menu items to control volume (VolUp/VolDown/Mute) on the host using HID messages
- Successfully send HID messages to host.
Other ideas for leveraging this work, which will not be implemented as part of this GSoC project:
- Implement Interrupt type endpoints in all other drivers
- Implement context menu to control the class driver, e.g. key-mappings (code pages), etc.
- Implement 'code-page' to configure key-mapping for controlling Power-Point presentations
- Make touch-screen enabled platforms identify as a tablet device, enabling the player to act as a touch-pad
- Use touchscreen platforms as a LCD keyboard
- Contol what is displayed on the DAP's LCD via a driver run on the host OS
- Valid enumeration of the DAP as a Human-Interface Device (Committed).
- Implement support for Interrupt transfers in Sansa e200 (Committed).
- Add debug menu items to control volume (VolUp/VolDown/Mute) on the host using HID messages (Done. Not yet committed).
Remaining work for current phase:
- Switch to git repository management, to ease development process (done).
- Successfully send HID messages to host (done).
- Implement sample plugin application that sends various key-strokes to host: Volume control, Mouse control, System control (reboot, shutdown), etc.
Future enhancements (not part of this project):
- Make touch-screen enabled platforms identify as a tablet device, enabling the player to act as a touch-pad.
- Implement context menu to control the class driver, e.g. key-mappings (code pages), etc.
- Implement 'code-page' to configure key-mapping for controlling Power-Point presentations.
- Implement Interrupt type endpoints in all other drivers.
Revision r6 - 22 May 2009 - 20:15 - TomerShalev
Revision r5 - 16 May 2009 - 18:17 - TomerShalev
Copyright © by the contributing authors.
|