vrpn 07.35
Virtual Reality Peripheral Network
Loading...
Searching...
No Matches
vrpn_CHProducts_Controller_Raw.h
Go to the documentation of this file.
1#pragma once
2
3#include <stddef.h> // for size_t
4
5#include "vrpn_Analog.h" // for vrpn_Analog
6#include "vrpn_BaseClass.h" // for vrpn_BaseClass
7#include "vrpn_Button.h" // for vrpn_Button_Filter
8#include "vrpn_Configure.h" // for VRPN_CALLBACK, VRPN_USE_HID
9#include "vrpn_Connection.h" // for vrpn_CONNECTION_LOW_LATENCY, etc
10#include "vrpn_Dial.h" // for vrpn_Dial
11#include "vrpn_HumanInterface.h" // for vrpn_HidAcceptor (ptr only), etc
12#include "vrpn_Shared.h" // for timeval
13#include "vrpn_Types.h" // for vrpn_uint8, vrpn_uint32
14
15#if defined(VRPN_USE_HID)
16
17// Device drivers for the CHProducts Controller Raw USB line of products
18// Currently supported: Fighterstick USB
19//
20// Exposes three major VRPN device classes: Button, Analog, Dial (as appropriate).
21// All models expose Buttons for the keys on the device.
22// Button 0 is the programming switch; it is set if the switch is in the "red" position.
23//
24
26public:
27 vrpn_CHProducts_Controller_Raw(vrpn_HidAcceptor *filter, const char *name, vrpn_Connection *c = 0,
28 vrpn_uint16 vendor = 0, vrpn_uint16 product = 0);
30
31 virtual void mainloop(void) = 0;
32protected:
33 // Set up message handlers, etc.
34 void init_hid(void);
35 void on_data_received(size_t bytes, vrpn_uint8 *buffer);
36
37 static int VRPN_CALLBACK on_connect(void *thisPtr, vrpn_HANDLERPARAM p);
38 static int VRPN_CALLBACK on_last_disconnect(void *thisPtr, vrpn_HANDLERPARAM p);
39
40 virtual void decodePacket(size_t bytes, vrpn_uint8 *buffer) = 0;
41 struct timeval _timestamp;
43
44 // No actual types to register, derived classes will be buttons, analogs, and/or dials
45 int register_types(void) { return (0); }
46};
47
49{
50public:
51 vrpn_CHProducts_Fighterstick_USB(const char *name, vrpn_Connection *c = 0);
53
54 virtual void mainloop(void);
55protected:
56 // Send report iff changed
57 void report_changes (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
58 // Send report whether or not changed
59 void report (vrpn_uint32 class_of_service = vrpn_CONNECTION_LOW_LATENCY);
60
61 void decodePacket(size_t bytes, vrpn_uint8 *buffer);
62};
63
64// end of VRPN_USE_HID
65#else
67#endif
Class from which all user-level (and other) classes that communicate with vrpn_Connections should der...
All button servers should derive from this class, which provides the ability to turn any of the butto...
Definition vrpn_Button.h:66
virtual void report_changes(void)
int register_types(void)
Register the types of messages this device sends/receives. Return 0 on success, -1 on fail.
static int VRPN_CALLBACK on_last_disconnect(void *thisPtr, vrpn_HANDLERPARAM p)
virtual void decodePacket(size_t bytes, vrpn_uint8 *buffer)=0
void on_data_received(size_t bytes, vrpn_uint8 *buffer)
Derived class reimplements this callback.
static int VRPN_CALLBACK on_connect(void *thisPtr, vrpn_HANDLERPARAM p)
virtual void mainloop(void)=0
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
void decodePacket(size_t bytes, vrpn_uint8 *buffer)
virtual void mainloop(void)
Called once through each main loop iteration to handle updates. Remote object mainloop() should call ...
Generic connection class not specific to the transport mechanism.
virtual void report(void)
Definition vrpn_Dial.C:82
vrpn_uint16 product() const
Returns USB product ID of connected device May not contain valid if an already-open device was provid...
vrpn_uint16 vendor() const
Returns USB vendor ID of connected device May not contain valid if an already-open device was provide...
This structure is what is passed to a vrpn_Connection message callback.
All types of client/server/peer objects in VRPN should be derived from the vrpn_BaseClass type descri...
#define VRPN_API
#define VRPN_CALLBACK
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY