void vrpn_Analog_USDigital_A2::mainloop() { server_mainloop(); // let the server do its stuff #ifdef VRPN_USE_USDIGITAL long readErr, readVal ; // Read the data from the available channels for (vrpn_uint32 c=0 ; c<(vrpn_uint32) num_channel ; c++) { // see if there's really a readable device there. if (c<_numDevices && _devAddr[c]>=0) { readErr = A2GetPosition(_devAddr[c], &readVal) ; if (readErr) { fprintf(stderr, "vrpn_Analog_USDigital_A2: Error code %d received while reading channel %d.\n", readErr, c) ; fprintf(stderr, "vrpn_Analog_USDigital_A2: Attempting to reinitialize SEI bus...") ; readErr = ResetSEI() ; if (readErr) fprintf(stderr, "failed.") ; fprintf(stderr, "failed.") ; // don't flood the log, and give the reset time to work vrpn_SleepMsecs(1000) ; } else channel[c] = (vrpn_float64) readVal ; } else channel[c] = 0 ; // default to 0 for unreadable/unavailable. } // for #endif // Finally, the point of all this, deliver the data if (_reportChange) report_changes() ; else report() ; } // mainloop
//--------------- long A2Device::getPosiiton() { long position; A2GetPosition(address, &position); return position; }