release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Wiki > Main > UsbStackEnhancements (compare)

Difference: UsbStackEnhancements (r8 vs. r7)

USB stack enhancements

This project is part of the Google Summer of Code 2009 project.

Project nameStudentMentorCode
Allow USB class drivers to be implemented as plugins + Implement Human Interface Device (HID) Tomer Shalev (tomers)Frank Gevaerts (gevaerts)Git repository at github.com

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).

Roadmap

Phase 1 (50%):

  • Implement a working HID class driver, replacing the charging-only driver
  • Write a HID test application (control volume of the host)

Phase 2 (50%):

  • Separate class driver from main binary, and implement infrastructure to dynamically load them

Currently working on: Phase 1

Remaining work for completing phase 1:

  • Remove the charging-only USB class-driver in favour of the HID driver
  • 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

Resources:

r8 - 23 May 2009 - 16:22:39 - TomerShalev

Revision r8 - 23 May 2009 - 16:22 - TomerShalev
Revision r7 - 22 May 2009 - 21:34 - TomerShalev
Copyright by the contributing authors.