Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

74 lines (60 sloc) 2.6 kB
// -*- c++ -*-
// This file provides an interface to a Novint Falcon.
// It uses libnifalcon to communicate with the device.
// file: vrpn_Tracker_NovintFalcon.h
// author: Axel Kohlmeyer 2010-04-14
// copyright: (C) 2010 Axel Kohlmeyer
// license: Released to the Public Domain.
// depends: libnifalcon-1.0.1, libusb-1.0, VRPN 07_26
// tested on: Linux x86_64 w/ gcc 4.4.1
#include "vrpn_Configure.h"
#include "vrpn_Tracker.h"
#include "vrpn_Button.h"
#include "vrpn_ForceDevice.h"
// Forward declaration for proxy class that wraps
// the device management of the falcon.
class vrpn_NovintFalcon_Device;
// Forward declaration for proxy class that maintains
// the list of objects that contribute to the force.
class vrpn_NovintFalcon_ForceObjects;
class VRPN_API vrpn_Tracker_NovintFalcon
: public vrpn_Tracker, public vrpn_Button, public vrpn_ForceDevice {
/// custom constructor
vrpn_Tracker_NovintFalcon(const char *name,
vrpn_Connection *c = NULL,
const int devidx = 0,
const char *grip = NULL,
const char *kine = NULL,
const char *damp = NULL);
/// destructor
/// Called once through each main loop iteration to handle updates.
virtual void mainloop();
protected: // methods for tracker and button functionality
virtual void reset();
virtual int get_report(void);
virtual void send_report(void);
virtual void clear_values(void);
protected: // methods for force feedback functionality
/// apply forces from known objects
virtual void handle_forces(void);
/// apply received information about force field effects.
virtual int update_forcefield_effect(vrpn_HANDLERPARAM p);
int m_devflags; //< device configuration flags
vrpn_float64 m_update_rate; //< update rate of device
vrpn_float64 m_damp; //< damping factor for force updates
struct timeval m_timestamp; //< last update of device status
vrpn_NovintFalcon_Device *m_dev; //< device handle
vrpn_NovintFalcon_ForceObjects *m_obj; //< handle to force generating objects
#endif /* defined(VRPN_USE_LIBNIFALCON) */
Jump to Line
Something went wrong with that request. Please try again.