New Wii Remote Driver

From LinuxMCE
Jump to: navigation, search

The New Wii Remote Driver represents a major undertaking to properly integrate the Nintendo WiiMote into LinuxMCE, by folding it into the Bluetooth_Dongle DCE device.

Goals

  • Be able to pair the Wii Remote at any time.
  • Be able to pair the Wii Remote to any media director with a Bluetooth Dongle
  • Be able to move the Wii Remote from room to room to use with any media director.
  • Be able to use Follow Me by pairing a Wii Remote.

Discussion Thread

A discussion thread in the forums talking about initial design concepts and challenges can be found here:

http://forum.linuxmce.org/index.php?topic=10702.msg73670#msg73670

Basic Systems Level Interaction

The Bluetooth Dongle device now has a Wii Remote discovery phase integrated into its Scanning Loop. Wii Remotes that are found here, are added to the Ignore MAC Address map, and the Plug and Play subsystem stays away from them (this may change, but for now, the Plug-and-Play PlugIn will have no knowledge of these devices.)

Once remotes are found, an event is emitted "Wii Remote Detected", which is then intercepted by the Orbiter Plugin. The Orbiter Plugin will have logic to determine which media director to pair the Wii Remote to. Once this has been determined, the Orbiter will send a Wii Remote Connect command to the (hopefully) correct media director's Bluetooth Dongle device.

Once this is done, a new thread from Bluetooth Dongle will be spawned, which (if needed) loads the kernel uinput device, spawns a uinput device for the wii remote, and interprets the data from the Wii Remote, and makes it appear as a joystick/mouse/whatever to the system as needed.

This driver will also accept Set Screen Type commands to dynamically change how signals from the Wii Remote are interpreted. For example, most screens will see the wii remote buttons interpreted as keypresses, with IR cursor events becoming mouse cursor position, while a game player might change the D-Pad and buttons to act like joystick buttons. This will allow for a more seamless integration with the system, with buttons/etc appearing to "do the right things."

As with all things free software, this driver will be folded in when it is testable.

Currently working on

No longer trying to integrate it into existing Bluetooth support, as the original code was intended just to support mobile phones. Currently writing the base driver. --Tschak909 16:25, 26 September 2011 (CEST)