Changeset 20172

Show
Ignore:
Timestamp:
05/08/07 09:03:17 (2 years ago)
Author:
patrick
Message:

Merges from the trunk:

r19966: Added a driver for the noDNA X-IST device. This was originally

submitted by Damien Touraine, and I modified the code to conform to
the Juggler coding standard and to use exception handling to
determine if the sampling thread spawns correctly.

r19968: Added the config definintion for the noDNA X-IST hardware. This was

submitted by Damien Touraine.

r19976: Fixed compile errors that I caused.

r19977: Get this [X-ISTStandalone.cpp] to compile on Linux.

r19978: The ftd2xx library for Linux requires libusb.

r20154: Connect the noDNA X-IST data glove driver to the Windows build.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/branches/2.2/README-WINDOWS.html

    r19259 r20172  
    291291    <tt>&lt;trackdAPI_CC.h&gt;</tt>. 
    292292  </dd> 
     293  <dt><tt>FTD2XX_ROOT</tt></dt> 
     294  <dd> 
     295    The root directory of an 
     296    <a href="http://www.ftdichip.com/Drivers/D2XX.htm">FTD2XX SDK</a> 
     297    installation. This is required to build the driver for the 
     298    <a href="http://www.x-ist.de/noDNA_X-IST.394.0.html?&L=1">noDNA X-IST</a> 
     299    data glove. 
     300  </dd> 
     301  <dt><tt>DOOZER_ROOT</tt></dt> 
     302  <dd> 
     303    The root directory of a <a href="http://">Doozer 2.1</a> installation. 
     304  </dd> 
    293305</dl> 
    294306 
  • juggler/branches/2.2/build_windows.py

    r19807 r20172  
    273273   optional.append(BuildOption('TRACKD_API_ROOT', 
    274274                               'TrackdAPI installation directory', '', 
     275                               required = False)) 
     276   optional.append(BuildOption('FTD2XX_ROOT', 
     277                               'FTD2XX SDK installation directory', '', 
    275278                               required = False)) 
    276279   optional.append(BuildOption('DOOZER_ROOT', 
     
    14251428              'Fastrak', 'Flock', 'IBox', 'IntersenseAPI', 'IS900', 
    14261429              'MotionStar', 'MSFTSpeechRecognition', 'PinchGlove', 
    1427               'SerialEncoder', 'SpaceBall', 'TrackdAPI', 'VRPN', 'Wanda'] 
     1430              'SerialEncoder', 'SpaceBall', 'TrackdAPI', 'VRPN', 'Wanda', 
     1431              'X-IST'] 
    14281432 
    14291433   for d in drivers: 
    14301434      srcdir = os.path.join(srcroot, d) 
    14311435      installLibs(srcdir, destdir, extensions = ['.dll']) 
     1436 
     1437   srcdir = os.environ['FTD2XX_ROOT'] 
     1438   if srcdir != "": 
     1439      printStatus("Installing FTD2XX DLL") 
     1440      destdir = os.path.join(prefix, 'bin') 
     1441 
     1442      ftd2xx_dll = os.path.join(srcdir, 'FTD2XX.dll') 
     1443      if os.path.exists(ftd2xx_dll): 
     1444         smartCopy(ftd2xx_dll, destdir) 
    14321445 
    14331446def installGadgeteerPlugins(prefix, buildDir): 
  • juggler/branches/2.2/modules/gadgeteer/drivers/Makefile.in

    r20088 r20172  
    149149        USDigital/SerialEncoder         \ 
    150150        VRCO/TrackdAPI                  \ 
    151         VirtualTechnologies/CyberGlove 
     151        VirtualTechnologies/CyberGlove  \ 
     152        noDNA/X-IST 
    152153 
    153154# ============================================================================= 
  • juggler/branches/2.2/modules/gadgeteer/drivers/configure.ac

    r20088 r20172  
    7979            _with_vrpn="$withval", _with_vrpn='no') 
    8080 
     81# Build with ftd2xx path. Then, include the X-IST drivers ... 
     82# There is default path. 
     83AC_ARG_WITH(ftd2xx, [  --with-ftd2xx=<PATH>    ftd2xx installation], 
     84            _with_ftd2xx="$withval", _with_ftd2xx='no') 
     85 
    8186# Build with libusb path. Then, include the P5Gove drivers ... 
    8287# There is default path. 
     
    292297        _vjsave_LIBS="$LIBS" 
    293298 
    294         # Based on the default ABI, tell $DTK_CONFIG  
     299        # Based on the default ABI, tell $DTK_CONFIG 
    295300        if test "x$ABI" = "xN32" ; then 
    296301            bits='n32' 
     
    341346 
    342347# ----------------------------------------------------------------------------- 
    343 # VRPN  
     348# VRPN 
    344349# ----------------------------------------------------------------------------- 
    345350 
     
    358363 
    359364   VRPN_INCLUDES="-I$VRPNROOT/quat -I$VRPNROOT/vrpn" 
    360 #   VRPN_INCLUDES="-I$VRPNROOT/vrpn"   
     365#   VRPN_INCLUDES="-I$VRPNROOT/vrpn" 
    361366 
    362367   if test "x$OS_TYPE" = "xWin32" ; then 
     
    396401      VRPNLIBDIR='sgi_irix' 
    397402      if test "x$ABI" = "xN32" ; then 
    398          VRPNLIBDIR="$VRPNLIBDIR.n32"   
     403         VRPNLIBDIR="$VRPNLIBDIR.n32" 
    399404      elif test "x$ABI" = "x64" ; then 
    400          VRPNLIBDIR="$VRPNLIBDIR.64"    
     405         VRPNLIBDIR="$VRPNLIBDIR.64" 
    401406      fi 
    402407 
    403408      if test "x$ISA" = "xmips3" ; then 
    404          VRPNLIBDIR="$VRPNLIBDIR.mips3"         
     409         VRPNLIBDIR="$VRPNLIBDIR.mips3" 
    405410      elif test "x$ISA" = "xmips4" ; then 
    406          VRPNLIBDIR="$VRPNLIBDIR.mips4"         
     411         VRPNLIBDIR="$VRPNLIBDIR.mips4" 
    407412      fi 
    408413   fi 
     
    444449# include <vrpn_Button.h> 
    445450# ], 
    446 # [vrpn_Button_Remote * b = new vrpn_Button_Remote("");],  
     451# [vrpn_Button_Remote * b = new vrpn_Button_Remote("");], 
    447452#                        [ vj_have_vrpn='yes' 
    448453#                          rm -rf ./ii_files ], 
     
    468473    LDFLAGS="${_vjsave_LDFLAGS}" 
    469474    LIBS="${_vjsave_LIBS}" 
     475fi 
     476 
     477# ----------------------------------------------------------------------------- 
     478# FTD2XX 
     479# ----------------------------------------------------------------------------- 
     480 
     481# Test for the ftd2xx library 
     482if test "x${_with_ftd2xx}" != "xno" ; then 
     483   if test "x${_with_ftd2xx}" = "xyes" ; then 
     484      FTD2XX_ROOT="/usr/local" 
     485   else 
     486      FTD2XX_ROOT="${_with_ftd2xx}" 
     487   fi 
     488 
     489   _gadget_save_CFLAGS="$CFLAGS" 
     490   _gadget_save_CPPFLAGS="$CPPFLAGS" 
     491   _gadget_save_LDFLAGS="$LDFLAGS" 
     492   _gadget_save_LIBS="$LIBS" 
     493 
     494   FTD2XX_LIBDIR="$FTD2XX_ROOT/lib" 
     495 
     496   FTD2XX_INCLUDES="-I$FTD2XX_ROOT/include" 
     497   FTD2XX_LDFLAGS="-L$FTD2XX_LIBDIR" 
     498   FTD2XX_LIBS="-lftd2xx -lusb" 
     499 
     500   CPPFLAGS="$FTD2XX_INCLUDES $CPPFLAGS" 
     501   LDFLAGS="$FTD2XX_LDFLAGS $LDFLAGS" 
     502 
     503   gadget_have_ftd2xx='no' 
     504 
     505   DPP_LANG_SAVE 
     506   DPP_LANG_C 
     507 
     508   CPPFLAGS="$CPPFLAGS $STDFLAGS" 
     509 
     510   AC_CHECK_LIB([ftd2xx], [FT_ListDevices], 
     511                [AC_CHECK_HEADER([ftd2xx.h], [gadget_have_ftd2xx='yes'], 
     512                                 [gadget_have_ftd2xx='no'])], 
     513                [gadget_have_ftd2xx='no'], [-lusb]) 
     514 
     515   DPP_LANG_RESTORE 
     516 
     517   if test "x$gadget_have_ftd2xx" = "xyes" ; then 
     518      HAVE_FTD2XX='Y' 
     519   else 
     520      HAVE_FTD2XX='N' 
     521      AC_MSG_WARN([*** Did not find FTD2XX in $FTD2XX_ROOT ***]) 
     522   fi 
     523 
     524   CFLAGS="${_gadget_save_CFLAGS}" 
     525   CPPFLAGS="${_gadget_save_CPPFLAGS}" 
     526   LDFLAGS="${_gadget_save_LDFLAGS}" 
     527   LIBS="${_gadget_save_LIBS}" 
    470528fi 
    471529 
     
    666724AC_SUBST(VRPNROOT) 
    667725AC_SUBST(VRPN_LDFLAGS) 
     726 
     727AC_SUBST(HAVE_FTD2XX) 
     728AC_SUBST(FTD2XX_ROOT) 
     729AC_SUBST(FTD2XX_INCLUDES) 
     730AC_SUBST(FTD2XX_LDFLAGS) 
     731AC_SUBST(FTD2XX_LIBS) 
    668732 
    669733AC_SUBST(HAVE_LIBUSB) 
     
    724788   VirtualTechnologies/Makefile 
    725789   VirtualTechnologies/CyberGlove/Makefile 
     790   noDNA/Makefile 
     791   noDNA/X-IST/Makefile 
    726792   VARS.pl 
    727793   ]) 
  • juggler/branches/2.2/modules/gadgeteer/drivers/noDNA/X-IST/X-IST.cpp

    r19966 r20172  
    3232#include <gadget/Type/DeviceConstructor.h> 
    3333#include <gadget/gadgetParam.h> 
     34#include <gadget/Util/Debug.h> 
    3435 
    3536#include <drivers/noDNA/X-IST/X-ISTStandalone.h> /* standalone X-IST driver */ 
     
    170171{ 
    171172   WORD values[24]; 
    172    if ( mGlove->ReadRecordsFromHardware(values) ) 
     173   if ( mGlove->readRecordsFromHardware(values) ) 
    173174   { 
    174175      for ( unsigned int i = 0; i < mGlove->getNumberSensors(); ++i ) 
  • juggler/branches/2.2/modules/gadgeteer/drivers/noDNA/X-IST/X-ISTStandalone.cpp

    r19966 r20172  
    2929#include <string.h> 
    3030 
     31#include <vpr/vpr.h> 
     32 
    3133#include <drivers/noDNA/X-IST/X-ISTStandalone.h> 
    3234 
     
    3941#ifndef OPEN_EXISTING 
    4042#  define OPEN_EXISTING 0 
     43#endif 
     44 
     45#if ! defined(VPR_OS_Windows) 
     46#  define PURGE_TXCLEAR 0x0004 
     47#  define PURGE_RXCLEAR 0x0008 
    4148#endif 
    4249 
     
    8693                             OPEN_EXISTING, FT_OPEN_BY_SERIAL_NUMBER, 0); 
    8794 
     95#if defined(VPR_OS_Windows) 
    8896   if ( mComm == (void*) INVALID_HANDLE_VALUE ) 
     97#else 
     98   if ( mComm == (void*) NULL ) 
     99#endif 
    89100   { 
    90101      closeGlove(); 
     
    120131   read(buffer, 40); 
    121132   FT_W32_PurgeComm(mComm, PURGE_TXCLEAR | PURGE_RXCLEAR); 
    122    firmwareVersion = WORD (((buffer[0] - 48) * 100) + ((buffer[2] - 48) * 10) + (buffer[4] - 48)); 
     133   mFirmwareVersion = WORD (((buffer[0] - 48) * 100) + ((buffer[2] - 48) * 10) + (buffer[4] - 48)); 
    123134//   vprDEBUG(gadgetDBG_INPUT_MGR, vprDBG_CONFIG_LVL) 
    124 //      << "[X-IST] firmware version : " << firmwareVersion << std::endl 
     135//      << "[X-IST] firmware version : " << mFirmwareVersion << std::endl 
    125136//      << vprDEBUG_FLUSH; 
    126137 
     
    159170      return false; 
    160171   } 
    161    if ( ! read((char*) buffer, (firmwareVersion < 27 ? 31 : 38)) ) 
     172   if ( ! read((char*) buffer, (mFirmwareVersion < 27 ? 31 : 38)) ) 
    162173   { 
    163174      return false; 
     
    187198   values[19] = WORD (buffer[29] + (short (buffer[28] % 16) * 256)); 
    188199 
    189    if ( firmwareVersion > 26 ) 
     200   if ( mFirmwareVersion > 26 ) 
    190201   { 
    191202      values[20] = WORD (buffer[30] + (short (buffer[31] / 16) * 256)); 
  • juggler/branches/2.2/modules/gadgeteer/drivers/noDNA/X-IST/X-ISTStandalone.h

    r19966 r20172  
    5050   unsigned int getNumberSensors() const 
    5151   { 
    52       return (firmwareVersion > 26 ? 24 : 20); 
     52      return (mFirmwareVersion > 26 ? 24 : 20); 
    5353   } 
    5454 
  • juggler/branches/2.2/vc7/Juggler.sln

    r19793 r20172  
    283283Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VR Juggler CORBA Performance Monitoring Plug-in IDL to C++", "VRJugglerPlugins\Perf_Plugin_CXX_IDL\Perf_Plugin_CXX_IDL.vcproj", "{C2C59AA2-CD5B-49EF-B1B0-858AC44B1FD9}" 
    284284        ProjectSection(ProjectDependencies) = postProject 
     285        EndProjectSection 
     286EndProject 
     287Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Driver - noDNA X-IST Data Glove", "Gadgeteer\X-IST\X-IST.vcproj", "{D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}" 
     288        ProjectSection(ProjectDependencies) = postProject 
     289                {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} = {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} 
     290                {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} = {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} 
     291                {5A96B2F8-7000-4988-AFD5-E85181B52BCF} = {5A96B2F8-7000-4988-AFD5-E85181B52BCF} 
    285292        EndProjectSection 
    286293EndProject 
     
    635642                {C2C59AA2-CD5B-49EF-B1B0-858AC44B1FD9}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 
    636643                {C2C59AA2-CD5B-49EF-B1B0-858AC44B1FD9}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 
     644                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Debug.ActiveCfg = DebugDLL|Win32 
     645                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Debug.Build.0 = DebugDLL|Win32 
     646                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.DebugDLL.ActiveCfg = DebugDLL|Win32 
     647                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.DebugDLL.Build.0 = DebugDLL|Win32 
     648                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Release.ActiveCfg = ReleaseDLL|Win32 
     649                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Release.Build.0 = ReleaseDLL|Win32 
     650                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 
     651                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 
    637652        EndGlobalSection 
    638653        GlobalSection(SolutionItems) = postSolution 
  • juggler/branches/2.2/vc8/Juggler.sln

    r19691 r20172  
    267267Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VR Juggler Direct3D Draw Manager", "VRJuggler\Direct3D_Draw_Manager\Direct3D_Draw_Manager.vcproj", "{927ADA64-5D2E-4066-ABDA-3D65A9CF524B}" 
    268268        ProjectSection(ProjectDependencies) = postProject 
     269                {5A96B2F8-7000-4988-AFD5-E85181B52BCF} = {5A96B2F8-7000-4988-AFD5-E85181B52BCF} 
     270                {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} = {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} 
     271                {8CD85B68-8E87-4289-9CD3-0C0012781BF2} = {8CD85B68-8E87-4289-9CD3-0C0012781BF2} 
     272                {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} = {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} 
    269273                {BE8A6412-F142-493F-B1BB-363F4EDAC230} = {BE8A6412-F142-493F-B1BB-363F4EDAC230} 
    270                 {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} = {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} 
    271                 {5A96B2F8-7000-4988-AFD5-E85181B52BCF} = {5A96B2F8-7000-4988-AFD5-E85181B52BCF} 
    272                 {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} = {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} 
    273                 {8CD85B68-8E87-4289-9CD3-0C0012781BF2} = {8CD85B68-8E87-4289-9CD3-0C0012781BF2} 
     274        EndProjectSection 
     275EndProject 
     276Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Driver - noDNA X-IST Data Glove", "Gadgeteer\X-IST\X-IST.vcproj", "{D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}" 
     277        ProjectSection(ProjectDependencies) = postProject 
     278                {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} = {1AAD8712-09DC-4957-8594-AF5A49BAB4E1} 
     279                {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} = {00C860E8-6CC8-4638-B5D1-8E5C5A34C425} 
     280                {5A96B2F8-7000-4988-AFD5-E85181B52BCF} = {5A96B2F8-7000-4988-AFD5-E85181B52BCF} 
    274281        EndProjectSection 
    275282EndProject 
     
    961968                {927ADA64-5D2E-4066-ABDA-3D65A9CF524B}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 
    962969                {927ADA64-5D2E-4066-ABDA-3D65A9CF524B}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 
     970                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Debug|Win32.ActiveCfg = DebugDLL|Win32 
     971                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Debug|Win32.Build.0 = DebugDLL|Win32 
     972                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Debug|x64.ActiveCfg = DebugDLL|Win32 
     973                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 
     974                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 
     975                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.DebugDLL|x64.ActiveCfg = DebugDLL|Win32 
     976                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Release|Win32.ActiveCfg = ReleaseDLL|Win32 
     977                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Release|Win32.Build.0 = ReleaseDLL|Win32 
     978                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.Release|x64.ActiveCfg = ReleaseDLL|Win32 
     979                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 
     980                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 
     981                {D5860FFA-8786-41CF-9DA1-D5E87D8DECEE}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|Win32 
    963982        EndGlobalSection 
    964983        GlobalSection(SolutionProperties) = preSolution