Beispiel #1
0
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;
}
Beispiel #2
0
JNIEXPORT jint JNICALL 
Java_ipc_java_IPC_IPC_1handleMessage (JNIEnv *env, jclass theClass, jlong timeoutMSecs)
{
  return (jint)IPC_handleMessage(timeoutMSecs);
}