Logitech Wingman USB Joystick Client for QNX RTP


Logitech Wingman

Introduction

This is a C++ class library for the following three HID compliant USB joysticks:

  • Logitech Wingman Extreme Digital 3D (Prod. ID: 0xC212)
  • Logitech Extreme 3D Pro (Prod. ID: 0xC215)
  • Logitech Wingman Force 3D (Prod. ID: 0xC283)
    (The force feedback feature does not work yet.)

The HID interface is available but not documented in QNX 6.2.1. This driver was made possible thanks to the helpful engineers at QNX and people who hang out in QNX newsgroups. This is not a full fledged driver, but works as a client to the QNX HID manager io-hid.

About this version

It will work great if you are using only upto two devices at a time. The source code is provided without any restrictions. If you were able to extend it or improve it in any way, I would be grateful if you would let me know about it (email: cvilas at ces dot clemson dot edu).

Documentation

The main driver interface is Wingman3D.hpp. Here is the user interface documentation:

Installation

QRTS users:

  • The BaseQRTS and the qrtsutility packages must be installed first.
  • Download the distribution binary package for QNX 6.2.1: Wingman-qnx6.2.1.tar.gz.
  • Install the software as follows:

    installpkg Wingman-qnx6.2.1.tar.gz

  • The above steps will install WingmanServer in $(QRTS)/bin, the header files Wingman3D.hpp and WingmanClient.hpp in $(QRTS)/include, and the corresponding static and dynamic libraries in $(QRTS)/lib. Examples are installed in $(QRTS)/examples/Wingman3D and $(QRTS)/examples/WingmanClient. Documentation will be available in the QNX Helpviewer.
  • To use the driver the USB manager (devu-uhci or devu-ohci) and manager for HID devices (io-hid) must be running. In order to do this automatically during bootup, add the following lines to /etc/rc.d/rc.local:
    /sbin/devu-uhci & (or /sbin/devu-ohci &, whichever works)
    /sbin/io-hid &
    mount -Tio-hid devh-usb.so &
  • The Wingman server and client are used in QMotor programs just like any other IO Board client and server. The WingmanServer can be started from your startservers script by adding the following lines to the script
    WingmanServer -n qrts/usbjs &
  • You can also type use WingmanServer on the command line to get a brief usage message.

Non-QRTS users:

  • Download the source package: Wingman3D.tgz
  • Expand the package and install as follows:
    tar zxvf Wingman3D.tgz
    cd Wingman3D
    make
    make install
    (Note: Should be root to do this.)
    The default install location is /usr/local
  • Try the example programs in the examples directory. Just run make in the example directory to create the executables. If any example fails to run, please let me know.

NOTE: The user programs must be linked with the QNX HID library libhiddi.so, in addition to the libraries from this package.

Applications

I wrote this software for a teleoperation system for industrial robots in my lab. This software is being made public with the hope that if the reader is looking to get any HID device working under the QNX Real Time OS, this could be used as a reference.

Suggestions or comments? Mail me.