VRPN 06.04

VRPN main page

Obtaining VRPN

VRPN Support

Installing and Testing

Compiling and Modifying

Client code

Server code



Logging and Playback

Shared Objects


Clock Synchronization

Text Messages

Doxygen documentation


Coming attractions & suggestions

UNC-specific information

VRPN from the library/server point of view

The VRPN library is compiled both on the client side and the server side. The library includes the entire communication class (vrpn_Connection) and the base classes for the various devices (trackers, buttons, sound devices, force devices, etc).

If you are writting code that is part of the library, please see these coding rules.

There are separate #include files for each of the device types in the library. Currently, these include vrpn_Connection.h and vrpn_Clock.h (not normally used directly by an application), vrpn_Tracker.h, vrpn_Button.h, vrpn_ForceDevice.h and vrpn_Sound.h. These files are used both on the client and server side, although both may derive specialized classes from the base device classes, or may even define their own device classes.

All device classes rely on the vrpn_Synchronized_Connection class to pass messages between the server and application. A vrpn_Device base class will know how to encode and decode its state or state updates in messages that are passed between a vrpn_Device_Remote class instance that the application creates and a vrpn_Device_Specific class that is written to handle the control of a specific device. For example, when an application communicates with a Polhemus 3Space tracker server, it creates a vrpn_Tracker_Remote instance and talks to a server that is using a vrpn_Tracker_3Space instance (both of which are derived from vrpn_Tracker).

Topics for those extending the library or writing servers

Server programs (existing ones and writing your own)

Creating a new server for an existing device class

Creating a new class of device

vrpn_Connection class

Shared Objects

Using Magellans, Joysticks, etc. as Trackers