Russell Taylor edited this page May 26, 2016 · 3 revisions

Compiling and using VRPN on PDAs

Android-based PDAs

An android application running a VRPN server is in the vrpn_android directory in the main source-code tree; thanks to Eric Boren, Duncan Lewis, Ted Driggs, and Kristen Janick from UNC's Comp 523 class for writing this. (Evan Suma reports that as of September 2012 this version no longer compiles right out of the box, presumably due to changes in the Android build platform since it was developed.) This was used as the basis for a native Java port of the VRPN server by Alexander Mosow, who placed the resulting code at https://github.com/worosom/java_vrpn.

Philippe Crassous added Android support that uses a JSON interface (which he also wrote) to talk with VPRN. It can be found in the android_widgets subdirectory in the main source tree.

Evan Suma has a new, much simpler build system using the cross-platform Android support in Visual Studio 2015. It includes a VS project for the VRPN client library. There are a couple minor code changes to vrpn_Connection.cpp (changing some legacy unix functions that aren’t supported by the compiler to the posix equivalents). They are marked with a comment: “changed by EAS for Android compatibility”. Binaries for ARM are also included in the project. Download link: https://webdisk.ict.usc.edu/index.php/s/YCb5I6zf1St4Yn2

Andrew Montag provided instructions and patches for how to build a client-side library for the Android. These instructions are in java_vrpn/README_Android.txt. His patches have since been pulled into the main source tree.

Linux-based PDAs

Thorsten Scheuermann wrote the port for Linux-based PDAs. He writes:

If you want to experiment with VRPN on a PDA I would suggest using a Sharp Zaurus 5500, as it comes with Linux installed, and avoids the hassle of getting the iPaq to work under Linux. Developing for either of these PDAs is simple, as it uses a standard gcc cross-compiler and Qt/Embedded (free for non-commercial use) for the GUI. In fact, both the Zaurus and the iPaq can execute the same unmodified executable.

Getting VRPN to work on the PDA only required changes to the Makefile, not the source code itself. One thing to keep in mind is that these PDAs have standard serial ports, so theoretically it should be possible to hook them up to a serial tracker supported by VRPN and use them as a miniature tracker server.

Sharif Razzaque writes: The PDA talks to our network using a compact flash 802.11b card. We have been using the pda to control our VE system and it works very well, except that the batteries only last 60-90 minutes.

Russ says: To compile it, uncomment the line "#HW_OS := pc_linux_arm" in the Makefile and then use gmake to compile it.

Windows CE-based PDAs

There is a vrpn_embedded folder in the VRPN main folder that contains the workspace file to enable compiling VRPN on Windows CE-based machines (vrpn_embedded.vcw). This file was used to compile the library, but I was not able to get it to link any of the applications, so it is only a partial port at best. Hopefully it will be a start for someone who actually has a PDA running Windows CE to try it on.

The version of the Windows CE development environment I had did not support some of the network features (the TCP Nodelay for instance). Various source files have areas guarded by "#ifdef _WIN32_WCE" lines to enable the code to compile in this environment.