/* * Class: visad_java3d_TrackdJNI * Method: init_trackd_c * Signature: (II[I)V */ JNIEXPORT void JNICALL Java_visad_java3d_TrackdJNI_init_1trackd_1c (JNIEnv *env, jobject obj, jint tracker_shmkey, jint controller_shmkey, jintArray status_j) { jint *status = (*env)->GetIntArrayElements(env, status_j, 0); tracker = (void *) trackdInitTrackerReader(tracker_shmkey); controller = (void *) trackdInitControllerReader(controller_shmkey); status[0] = 0; if (tracker == NULL) status[0] += 1; if (controller == NULL) status[0] += 2; (*env)->ReleaseIntArrayElements(env, status_j, status, 0); }
TrackDClient::TrackDClient( int trackerShMemKey, int wandShMemKey, const Array<std::string> &trackerEventsToGenerate, const double &trackerUnitsToRoomUnitsScale, const CoordinateFrame &deviceToRoom, const Array<CoordinateFrame> &propToTracker, const Array<CoordinateFrame> &finalOffset, const Array<std::string> &buttonEventsToGenerate, const Array<std::string> &valuatorEventsToGenerate) { _tEventNames = trackerEventsToGenerate; _trackerUnitsToRoomUnitsScale = trackerUnitsToRoomUnitsScale; _deviceToRoom = deviceToRoom; _propToTracker = propToTracker; _finalOffset = finalOffset; _bEventNames = buttonEventsToGenerate; _vEventNames = valuatorEventsToGenerate; _trackerMemory = trackdInitTrackerReader(trackerShMemKey); if (_trackerMemory == NULL) { cerr << "TrackDClient:: Could not initialize tracker reader." << endl; exit(1); } _wandMemory = trackdInitControllerReader(wandShMemKey); if (_wandMemory == NULL) { cerr << "TrackDClient:: Could not initialize wand reader." << endl; exit(1); } _numSensors = trackdGetNumberOfSensors(_trackerMemory); _numButtons = trackdGetNumberOfButtons(_wandMemory); for (int i=0;i<_numButtons;i++) { _buttonStates.append(0); } _numValuators = trackdGetNumberOfValuators(_wandMemory); for (int i=0;i<_numValuators;i++) { _valuatorStates.append(0.0); } }