Panda3D

vrpnClient.h
Go to the documentation of this file.
1 /**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file vrpnClient.h
10 * @author jason
11 * @date 2000-08-04
12 */
13
14 #ifndef VRPNCLIENT_H
15 #define VRPNCLIENT_H
16
17 #include "pandabase.h"
18 #include "clientBase.h"
19
20 #include "vrpn_interface.h"
21
22 class VrpnTracker;
23 class VrpnTrackerDevice;
24 class VrpnButton;
25 class VrpnButtonDevice;
26 class VrpnAnalog;
27 class VrpnAnalogDevice;
28 class VrpnDial;
29 class VrpnDialDevice;
30
31 /**
32 * A specific ClientBase that connects to a VRPN server and records
33 * information on the connected VRPN devices.
34 */
35 class EXPCL_VRPN VrpnClient : public ClientBase {
36 PUBLISHED:
37 explicit VrpnClient(const std::string &server_name);
38 ~VrpnClient();
39
40 INLINE const std::string &get_server_name() const;
41 bool is_valid() const;
42 bool is_connected() const;
43
44 void write(std::ostream &out, int indent_level = 0) const;
45
46 public:
47 INLINE static double convert_to_secs(struct timeval msg_time);
48
49 protected:
50 virtual PT(ClientDevice) make_device(TypeHandle device_type,
51 const std::string &device_name);
52
53 virtual bool disconnect_device(TypeHandle device_type,
54 const std::string &device_name,
55 ClientDevice *device);
56
57 virtual void do_poll();
58
59 private:
60 PT(ClientDevice) make_tracker_device(const std::string &device_name);
61 PT(ClientDevice) make_button_device(const std::string &device_name);
62 PT(ClientDevice) make_analog_device(const std::string &device_name);
63 PT(ClientDevice) make_dial_device(const std::string &device_name);
64 void disconnect_tracker_device(VrpnTrackerDevice *device);
65 void disconnect_button_device(VrpnButtonDevice *device);
66 void disconnect_analog_device(VrpnAnalogDevice *device);
67 void disconnect_dial_device(VrpnDialDevice *device);
68
69 VrpnTracker *get_tracker(const std::string &tracker_name);
70 void free_tracker(VrpnTracker *vrpn_tracker);
71
72 VrpnButton *get_button(const std::string &button_name);
73 void free_button(VrpnButton *vrpn_button);
74
75 VrpnAnalog *get_analog(const std::string &analog_name);
76 void free_analog(VrpnAnalog *vrpn_analog);
77
78 VrpnDial *get_dial(const std::string &dial_name);
79 void free_dial(VrpnDial *vrpn_dial);
80
81 private:
82 std::string _server_name;
83 vrpn_Connection *_connection;
84
85 typedef pmap<std::string, VrpnTracker *> Trackers;
86 typedef pmap<std::string, VrpnButton *> Buttons;
87 typedef pmap<std::string, VrpnAnalog *> Analogs;
88 typedef pmap<std::string, VrpnDial *> Dials;
89
90 Trackers _trackers;
91 Buttons _buttons;
92 Analogs _analogs;
93 Dials _dials;
94
95
96 public:
97 static TypeHandle get_class_type() {
98 return _type_handle;
99 }
100 static void init_type() {
101 ClientBase::init_type();
102 register_type(_type_handle, "VrpnClient",
103 ClientBase::get_class_type());
104 }
105 virtual TypeHandle get_type() const {
106 return get_class_type();
107 }
108 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
109
110 private:
111 static TypeHandle _type_handle;
112 };
113
114 #include "vrpnClient.I"
115
116 #endif
ClientBase
An abstract base class for a family of client device interfaces–including trackers,...
Definition: clientBase.h:43
ClientDevice
Any of a number of different devices that might be attached to a ClientBase, including trackers,...
Definition: clientDevice.h:27
TypeHandle
TypeHandle is the identifier used to differentiate C++ class types.
Definition: typeHandle.h:81
VrpnAnalogDevice
The Panda interface to a VRPN analog device.
Definition: vrpnAnalogDevice.h:30
VrpnAnalog
This is the actual interface to a particular VRPN analog device, and all of its numbered controls.
Definition: vrpnAnalog.h:38
VrpnButtonDevice
The Panda interface to a VRPN button.
Definition: vrpnButtonDevice.h:30
VrpnButton
This is the actual interface to a particular VRPN button device, and all of its numbered buttons.
Definition: vrpnButton.h:37
VrpnClient
A specific ClientBase that connects to a VRPN server and records information on the connected VRPN de...
Definition: vrpnClient.h:35
VrpnDialDevice
The Panda interface to a VRPN dial device.
Definition: vrpnDialDevice.h:30
VrpnDial
This is the actual interface to a particular VRPN dial device, and all of its numbered dials.
Definition: vrpnDial.h:37
VrpnTrackerDevice
The Panda interface to a VRPN tracker.
Definition: vrpnTrackerDevice.h:34
VrpnTracker
This is the actual interface to a particular VRPN tracker object, and all of its sensors.
Definition: vrpnTracker.h:37
pmap< std::string, VrpnTracker * >
clientBase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
is_connected
bool is_connected(MObject &node, const string &attribute_name)
Returns true if the named connection exists on the node and is connected to anything,...
Definition: maya_funcs.cxx:72
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
register_type
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition: register_type.I:22
vrpnClient.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
vrpn_interface.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.