30 for (i = 0; i < params->
num_axes; i++) {
46 d_vel_scale_channel = params->vel_scale_channel;
47 d_vel_scale_offset = params->vel_scale_offset;
48 d_vel_scale_scale = params->vel_scale_scale;
49 d_vel_scale_power = params->vel_scale_power;
54 if (params->vel_scale_name[0] ==
'*') {
56 d_vel_scale = new vrpn_Analog_Remote
57 (&(params->vel_scale_name[1]), d_connection);
58 } catch (...) { d_vel_scale = NULL; }
61 d_vel_scale = new vrpn_Analog_Remote(params->vel_scale_name);
66 if (d_vel_scale == NULL) {
67 fprintf(stderr,
"vrpn_Tracker_ButtonFly: "
68 "Can't open Analog %s\n",params->vel_scale_name);
71 d_vel_scale->register_change_handler(
this, handle_velocity_update);
75 if (params->rot_scale_name[0] !=
'\0') {
78 d_rot_scale_channel = params->rot_scale_channel;
79 d_rot_scale_offset = params->rot_scale_offset;
80 d_rot_scale_scale = params->rot_scale_scale;
81 d_rot_scale_power = params->rot_scale_power;
86 if (params->rot_scale_name[0] ==
'*') {
88 d_rot_scale = new vrpn_Analog_Remote
89 (&(params->rot_scale_name[1]), d_connection);
90 } catch (...) { d_rot_scale = NULL; }
93 d_rot_scale = new vrpn_Analog_Remote(params->rot_scale_name);
94 } catch (...) { d_rot_scale = NULL; }
98 if (d_rot_scale == NULL) {
99 fprintf(stderr,
"vrpn_Tracker_ButtonFly: "
100 "Can't open Analog %s\n",params->rot_scale_name);
103 d_rot_scale->register_change_handler(
this, handle_rotation_update);
111 register_autodeleted_handler(d_connection->register_message_type
113 handle_newConnection,
this);
118 for ( i =0; i< 4; i++)
119 for (
int j=0; j< 4; j++)
120 d_initMatrix[i][j] = 0;
122 d_initMatrix[0][0] = d_initMatrix[1][1] = d_initMatrix[2][2] =
123 d_initMatrix[3][3] = 1.0;
143 fprintf(stderr,
"vrpn_Tracker_ButtonFly::~vrpn_Tracker_ButtonFly(): delete failed\n");
152 fprintf(stderr,
"vrpn_Tracker_ButtonFly::~vrpn_Tracker_ButtonFly(): delete failed\n");
171 }
catch (...) { full->
btn = NULL; }
173 printf(
"vrpn_Tracker_ButtonFly: Adding local button %s\n",
179 }
catch (...) { full->
btn = NULL; }
181 printf(
"vrpn_Tracker_ButtonFly: Adding remote button %s\n",
185 if (full->
btn == NULL) {
186 fprintf(stderr,
"vrpn_Tracker_ButtonFly: "
187 "Can't open Button %s\n",full->
axis.
name);
203 if (full->
btn == NULL) {
return 0; }
212 fprintf(stderr,
"vrpn_Tracker_ButtonFly::teardown_channel(): delete failed\n");
231 double value_abs = fabs(value_scaled);
232 double value_powered;
235 if (value_offset >=0) {
257 double value_abs = fabs(value_scaled);
258 double value_powered;
261 if (value_offset >=0) {
290 if (info.
state == 1) {
291 double tx,ty,tz, rx,ry,rz;
292 q_matrix_type newMatrix;
304 q_euler_to_col_matrix(newMatrix, rz, ry, rx);
305 newMatrix[3][0] = tx; newMatrix[3][1] = ty; newMatrix[3][2] = tz;
334 printf(
"Get a new connection, reset virtual_Tracker\n");
371 d_axes[i].btn->mainloop();
397 fprintf(stderr,
"Tracker ButtonFly: cannot write message: tossing\n");
400 fprintf(stderr,
"Tracker ButtonFly: No valid connection\n");
428 (
double time_interval)
430 double tx,ty,tz, rx,ry,rz;
437 tx = ty = tz = rx = ry = rz = 0.0;
452 q_euler_to_col_matrix(diffM, rz, ry, rx);
453 diffM[3][0] = tx; diffM[3][1] = ty; diffM[3][2] = tz;
471 for (i=0; i< 3; i++) {
474 for (i=0; i< 4; i++) {
480 (
double elapsedInterval) {
vrpn_Connection * d_connection
Connection that this object talks to.
vrpn_int32 d_sender_id
Sender ID registered with the connection.
void server_mainloop(void)
Handles functions that all servers should provide in their mainloop() (ping/pong, for example) Should...
vrpn_Tracker_ButtonFly * bf
virtual int encode_to(char *buf)
vrpn_Tracker(const char *name, vrpn_Connection *c=NULL, const char *tracker_cfg_file_name=NULL)
vrpn_float64 channel[vrpn_CHANNEL_MAX]
This structure is what is passed to a vrpn_Connection message callback.
const char * vrpn_got_first_connection
These are the strings that define the system-generated message types that tell when connections are r...
const vrpn_uint32 vrpn_CONNECTION_LOW_LATENCY
double vrpn_TimevalDurationSeconds(struct timeval endT, struct timeval startT)
Return the number of seconds between startT and endT as a floating-point value.
#define vrpn_gettimeofday