int main(int argc, char **argv) { if(argc < 3) { std::cout << "Usage: " << argv[0] << " <vicon_server> <calib_files_dir>" << std::endl; return 1; } const std::string vicon_hostname = std::string(argv[1]); calib_files_dir = std::string(argv[2]); if(IPC_connect("vicon") != IPC_OK) { std::cerr << "Error connecting to IPC" << std::endl; return 1; } ViconDriver vd; if(vd.init(vicon_hostname)) { vd.setSubjectPubCallback(subject_publish_callback); vd.setUnlabeledMarkersPubCallback(unlabeled_markers_publish_callback); vd.enableUnlabeledMarkerData(true); running = vd.start(); } else { std::cerr << "Error connecting to vicon server" << std::endl; } if(running) { struct sigaction sigIntHandler; sigIntHandler.sa_handler = sigint_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); } while(running) { std::cout << "Running: " << running << std::endl; if(pthread_mutex_trylock(&ipc_mutex) == 0) { IPC_handleMessage(0); pthread_mutex_unlock(&ipc_mutex); } sleep(1); } std::cout << "Shutting down ViconDriver" << std::endl; vd.shutdown(); std::cout << "Disconnecting from IPC server" << std::endl; IPC_disconnect(); return 0; }
JNIEXPORT jint JNICALL Java_ipc_java_IPC_IPC_1handleMessage (JNIEnv *env, jclass theClass, jlong timeoutMSecs) { return (jint)IPC_handleMessage(timeoutMSecs); }