43 #define STATUS_MSG_SECS 600 51 char *slavePortArray[],
52 bool invertQuaternion) :
56 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel: must ask for pos num " 61 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel: starting up ...");
63 if (!slavePortArray) {
64 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel: null slave port array.");
70 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel: initing slave %d ...", i);
71 if (!slavePortArray[i]) {
72 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel:slave %d: null port array" 77 sprintf(rgch,
"flockSlave%d", i);
161 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel: problems resetting ... check that: a) all cables are attached, b) all units have FLY/STANDBY switches in FLY mode, and c) no receiver is laying too close to the transmitter. When done checking, power cycle the flock.\nWill attempt to reset in 15 seconds.\n");
166 "\nvrpn_Tracker_Flock_Parallel: tracker failed, trying to reset ...");
193 char *port,
long baud,
200 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: starting up ...",
213 unsigned char rgch [2];
219 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: shutting down ...",
d_sensor);
225 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: " 226 "failed writing sleep cmd to tracker",
d_sensor);
232 fprintf(stderr,
" done.\n");
237 fprintf(stderr,"."); \ 238 if (vrpn_write_characters(serial_fd, (const unsigned char *) &chPoint, 1 )!=1) {\ 239 fprintf(stderr,"\nvrpn_Tracker_Flock_Parallel_Slave %d: failed writing set mode cmds to tracker", d_sensor);\ 240 status = vrpn_TRACKER_FAIL;\ 243 vrpn_gettimeofday(×tamp, NULL);\ 267 unsigned char reset[3];
268 reset[resetLen++]=
'B';
272 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: " 273 "failed writing poll cmd to tracker",
d_sensor);
294 reset[resetLen++] =
'@';
297 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: " 298 "failed writing set mode cmds to tracker",
d_sensor);
309 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: " 310 "done with reset ... running.\n",
d_sensor);
320 #define MAX_TIME_INTERVAL (VRPN_FLOCK_MAX_SENSORS*1000000) 343 struct timeval current_time;
346 fprintf(stderr,
"Tracker failed to read... current_time=%ld:%ld, timestamp=%ld:%ld\n",
347 current_time.tv_sec, static_cast<long>(current_time.tv_usec),
360 fprintf(stderr,
"\nvrpn_Tracker_Flock_Parallel_Slave %d: tracker " 361 "failed, trying to reset ...",
d_sensor);
void server_mainloop(void)
Handles functions that all servers should provide in their mainloop() (ping/pong, for example) Should...
int vrpn_write_characters(int comm, const unsigned char *buffer, size_t bytes)
Write the buffer to the serial port.
int vrpn_close_commport(int comm)
virtual ~vrpn_Tracker_Flock_Parallel_Slave()
void vrpn_SleepMsecs(double dMsecs)
int vrpn_open_commport(const char *portname, long baud, int charsize, vrpn_SER_PARITY parity, bool rts_flow)
Open a serial port, given its name and baud rate.
int vrpn_flush_input_buffer(int comm)
Throw out any characters within the input buffer.
virtual void reset()
Reset the tracker.
vrpn_Serial: Pulls all the serial port routines into one file to make porting to new operating system...
virtual void mainloop()
Uses the get_report, send_report, and reset routines to implement a server.
#define MAX_TIME_INTERVAL
Generic connection class not specific to the transport mechanism.
int vrpn_drain_output_buffer(int comm)
Wait until all of the characters in the output buffer are sent, then return.
const int vrpn_TRACKER_FAIL
virtual void reset()
Reset the tracker.
All types of client/server/peer objects in VRPN should be derived from the vrpn_BaseClass type descri...
const int vrpn_TRACKER_RESETTING
const int vrpn_TRACKER_PARTIAL
vrpn_Tracker_Flock_Parallel_Slave * rgSlaves[VRPN_FLOCK_MAX_SENSORS]
vrpn_Connection * d_connection
Connection that this object talks to.
char portname[VRPN_TRACKER_BUF_SIZE]
const int vrpn_TRACKER_SYNCING
vrpn_Tracker_Flock_Parallel_Slave(char *name, vrpn_Connection *c, char *port, long baud, vrpn_int32 vrpnMasterID, int iSensorID)
int send_text_message(const char *msg, struct timeval timestamp, vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL, vrpn_uint32 level=0)
Sends a NULL-terminated text message from the device d_sender_id.
virtual void reset()
Reset the tracker.
int vrpn_flush_output_buffer(int comm)
Throw out any characters (do not send) within the output buffer.
virtual int get_report(void)
Gets a report if one is available, returns 0 if not, 1 if complete report.
virtual int get_report(void)
Gets a report if one is available, returns 0 if not, 1 if complete report.
virtual ~vrpn_Tracker_Flock_Parallel()
#define vrpn_gettimeofday
virtual void mainloop()
Uses the get_report, send_report, and reset routines to implement a server.
vrpn_int32 d_sender_id
Sender ID registered with the connection.
vrpn_Tracker_Flock_Parallel(char *name, vrpn_Connection *c, int cSensors, char *port, long baud, char *slavePortArray[], bool invertQuaternion=false)
virtual void send_report(void)
unsigned long vrpn_TimevalDuration(struct timeval endT, struct timeval startT)
Return number of microseconds between startT and endT.
class VRPN_API vrpn_Tracker_Flock_Parallel_Slave