20 vrpn_Poser(
const char* name, vrpn_Connection* c = NULL);
22 virtual ~vrpn_Poser(
void);
33 vrpn_int32 req_position_m_id;
34 vrpn_int32 req_position_relative_m_id;
35 vrpn_int32 req_velocity_m_id;
36 vrpn_int32 req_velocity_relative_m_id;
39 vrpn_float64 p_pos[3], p_quat[4];
40 vrpn_float64 p_vel[3],
42 vrpn_float64 p_vel_quat_dt;
43 struct timeval p_timestamp;
47 vrpn_float64 p_pos_min[3], p_pos_max[3], p_pos_rot_min[3], p_pos_rot_max[3],
48 p_vel_min[3], p_vel_max[3], p_vel_rot_min[3], p_vel_rot_max[3];
52 virtual int encode_to(
char* buf);
53 virtual int encode_vel_to(
char* buf);
55 virtual void set_pose(
const struct timeval t,
56 const vrpn_float64 position[3],
57 const vrpn_float64 quaternion[4]);
58 virtual void set_pose_relative(
59 const struct timeval t,
62 const vrpn_float64 quaternion[4]);
64 set_pose_velocity(
const struct timeval t,
65 const vrpn_float64 position[3],
66 const vrpn_float64 quaternion[4],
67 const vrpn_float64 interval);
68 virtual void set_pose_velocity_relative(
69 const struct timeval t,
72 const vrpn_float64 quaternion[4],
102class VRPN_API vrpn_Poser_Server :
public vrpn_Poser {
104 vrpn_Poser_Server(
const char* name, vrpn_Connection* c);
109 int register_change_handler(
void* userdata, vrpn_POSERHANDLER handler)
111 return d_callback_list.register_handler(userdata, handler);
113 int unregister_change_handler(
void* userdata, vrpn_POSERHANDLER handler)
115 return d_callback_list.unregister_handler(userdata, handler);
118 int register_relative_change_handler(
void* userdata,
119 vrpn_POSERHANDLER handler)
121 return d_relative_callback_list.register_handler(userdata, handler);
123 int unregister_relative_change_handler(
void* userdata,
124 vrpn_POSERHANDLER handler)
126 return d_relative_callback_list.unregister_handler(userdata, handler);
130 static int VRPN_CALLBACK
131 handle_change_message(
void* userdata, vrpn_HANDLERPARAM p);
132 static int VRPN_CALLBACK
133 handle_relative_change_message(
void* userdata, vrpn_HANDLERPARAM p);
134 static int VRPN_CALLBACK
135 handle_vel_change_message(
void* userdata, vrpn_HANDLERPARAM p);
136 static int VRPN_CALLBACK
137 handle_relative_vel_change_message(
void* userdata, vrpn_HANDLERPARAM p);
138 vrpn_Callback_List<vrpn_POSERCB> d_callback_list;
139 vrpn_Callback_List<vrpn_POSERCB> d_relative_callback_list;
147class VRPN_API vrpn_Poser_Remote :
public vrpn_Poser {
155 vrpn_Poser_Remote(
const char* name, vrpn_Connection* c = NULL);
158 virtual ~vrpn_Poser_Remote(
void);
164 int request_pose(
const struct timeval t,
const vrpn_float64 position[3],
165 const vrpn_float64 quaternion[4]);
166 int request_pose_relative(
const struct timeval t,
167 const vrpn_float64 position_delta[3],
168 const vrpn_float64 quaternion[4]);
169 int request_pose_velocity(
const struct timeval t,
170 const vrpn_float64 velocity[3],
171 const vrpn_float64 quaternion[4],
172 const vrpn_float64 interval);
173 int request_pose_velocity_relative(
const struct timeval t,
174 const vrpn_float64 velocity_delta[3],
175 const vrpn_float64 quaternion[4],
176 const vrpn_float64 interval_delta);
181 virtual int client_send_pose_relative();
183 virtual int client_send_pose_velocity();
186 client_send_pose_velocity_relative();