int main(int argc, char *argv[]) { 
  
  int i,j;
  IPC_RETURN_TYPE ret;

  if (argc < 3 || carmen_find_param("-help") || 
      carmen_find_param("--help") || carmen_find_param("-h")) {

    fprintf(stderr,"\n%s is used to connect serveral carmen-simulators\n", argv[0]);
    fprintf(stderr,"so that the individual robots can see each other.\n\n");
    fprintf(stderr,"Usage: %s [centralhost of 1st simulator] [...] [n-th simulator]\n", argv[0]);
    fprintf(stderr,"(e.g. %s localhost localhost:1382 locahost:1383)\n", argv[0]);
    exit(0);
  }

  for (i=1; i<argc; i++) {
    for (j=1; j<argc; j++) {
      if (i != j) {
	ret = IPC_connectModule(argv[0], argv[j]); 
	
	if (ret != IPC_OK) {
	  carmen_die("Error: could not connect to central on: %s\n", argv[j]);
	}
	
	carmen_simulator_connect_robots(argv[i]); 
      }
    }
  }
  fprintf(stderr,"simulators are now successly connected!\n");
  return 0; 
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
  num_contexts = argc-1;
  context = (IPC_CONTEXT_PTR *)calloc(num_contexts, sizeof(IPC_CONTEXT_PTR));
  /* check_alloc checked */

  IPC_setVerbosity(IPC_Print_Warnings);
  
  for (cur_context = 0; cur_context < num_contexts; cur_context++) {
    IPC_connectModule(argv[0], argv[cur_context+1]);
    context[cur_context] = IPC_getContext();
#if (defined(__x86_64__))
    IPC_subscribe(CARMEN_TEST_IPC_NAME, msgHandler, (void *)(long)cur_context);
#else
    IPC_subscribe(CARMEN_TEST_IPC_NAME, msgHandler, (void *)cur_context);
#endif
    IPC_setMsgQueueLength(CARMEN_TEST_IPC_NAME, 1);
  }

  x_ipcRegisterExitProc(handle_exit);

  while (1) {
    for (cur_context = 0; cur_context < num_contexts; cur_context++) {
      fprintf(stderr, "chunk %d\n", cur_context);
      if (context[cur_context] != NULL) {
	IPC_setContext(context[cur_context]);
	IPC_listenClear(0);
	sleep(1);
      }
    } 
  }
   
  return 0;
}
int main(int argc, char* argv[])
{
	gpsHeading = 0;
	compassHeading = 0;
	compassYawRate = 0;
	yawRate = 0;
	gpsSpeed = 0;
	leftWheelSpeed = 0;
	rightWheelSpeed = 0;

	QueryPerformanceFrequency(&frequency);
	QueryPerformanceCounter(&currentTick);

	//Connect to IPC
	IPC_connectModule("StateEstimationTest","localhost");

	time_t theTime;
	time(&theTime);
	tm *localTime = localtime(&theTime);
	char filename[1000];
	sprintf(filename, LOGGING_ROOT);
	sprintf(filename + strlen(LOGGING_ROOT), "%04d-%02d-%02d-%02d-%02d-%02d-SEtest.csv", localTime->tm_year + 1900, localTime->tm_mon + 1, localTime->tm_mday, localTime->tm_hour, localTime->tm_min, localTime->tm_sec);	
	file.open(filename);
	file << "GPS Speed,GPS Heading,Compass Heading,Compass Yaw Rate,Gyro Yaw Rate,LeftWheel,RightWheel" << endl;

	try
	{
		//Subscribe to GPS and wheel speed

		Messages::StateEstimation.subscribe(StateEstHandler,true,false);
		Messages::GPSUpdate.subscribe(GPSHandler,true,false);
		Messages::CompassUpdate.subscribe(CompassHandler,true,false);
		Messages::GyroUpdate.subscribe(GyroHandler,true,false);
		Messages::GetWheelSpeed.subscribe(WheelSpeedHandler,true,false);

		Timer::addTimer(tick, INPUT_TICK);

		IPC_dispatch();
	}
	catch( exception &e)
	{
		cout << e.what() << endl;
	}
	catch(...)
	{
		cout << "non-exception error" << endl;
	}

	// teardown
	IPC_disconnect();
	return 0;
}
Exemplo n.º 4
0
JNIEXPORT jint JNICALL 
Java_ipc_java_IPC_IPC_1connectModule (JNIEnv *env, jclass theClass,
			     jstring moduleName, jstring serverName)
{
  const char *cmoduleName, *cserverName;
  int retVal;

  cmoduleName = (*env)->GetStringUTFChars(env, moduleName, 0);
  cserverName = (*env)->GetStringUTFChars(env, serverName, 0);
  retVal = IPC_connectModule(cmoduleName, cserverName);
  (*env)->ReleaseStringUTFChars(env, moduleName, cmoduleName);
  (*env)->ReleaseStringUTFChars(env, serverName, cserverName);

  return (jint)retVal;
}
Exemplo n.º 5
0
int carmen_multicentral_ipc_connect(char *ipc_module_name, char *central_name)
{
  IPC_RETURN_TYPE err;

  /* connect to the central server */
  err = IPC_connectModule(ipc_module_name, central_name);
  if(err == IPC_Error)
    return -1;
  /* Set local message queue capacity */
  err = IPC_setCapacity(4);
  carmen_test_ipc_exit(err,
		       "I had problems setting the IPC capacity. This is a "
		       "very strange error and should never happen.\n",
		       "IPC_setCapacity");
  return 0;
}
Exemplo n.º 6
0
/**
 * Start up IPC. TODO: status messages
 *
 * @param char *module_name displayed by Central when messages received/sent
 * @param char *host_name of valid host running Central to connect to
 *
 * @return int 0 on successful connect
 */
int init_ipc(char* module_name, char* host_name) {

  if(host_name == NULL) {
    if( IPC_connect(module_name) != IPC_OK ) {
      // print Unable to connect to central.
      return(-1);
    }
  }
  else {
    if(IPC_connectModule(module_name, host_name) != IPC_OK) {
      // print Unable to connect to central.
      return(-1);
    }
  }
  //sprintf(buffer,"Connected to IPC as module %s", module_name);
  printf("%s IPC connect to %s success\n",module_name,host_name);  

  IPC_initialize();
  define_command_ipc_types();

  return(0);
}// end init_ipc
Exemplo n.º 7
0
int initIPC(char * moduleName, char * server, GCM_Common_RobotState *curState) {
  GCM_Module_IPC_Data mid;

  //  gethostname(central,255);
  if(IPC_connectModule(moduleName,server)!=IPC_OK){
    printf("Unable to connect to IPC server on %s! D'oh. Make sure central has been started on the IPC host.\n",server);
    return(-1);
  }

  printf("Connected to IPC server on %s as %s\n", server, moduleName);

  IPC_initialize();
  GCM_defineCommonIPCTypes();

  mid.threadID=getpid();
  strcpy(mid.moduleName,moduleName);
  IPC_publishData(GCM_COMMON_STARTUP,&mid);

  //  IPC_subscribeData( GCM_COMMON_ROBOTSTATE, robotStateHandler, curState );
  
  return 0;

}