Esempio n. 1
0
/* Handles the response to QUERY_MSG messages */
static void replyHandler (MSG_INSTANCE msgRef,
			  BYTE_ARRAY callData, void *clientData)
{
  printf("replyHandler: Receiving message %s (%s) [%s]\n", 
	 IPC_msgInstanceName(msgRef), (char *)callData, (char *)clientData);
  IPC_freeByteArray(callData);
}
Esempio n. 2
0
JNIEXPORT jstring JNICALL
Java_ipc_java_IPC_IPC_1msgInstanceName (JNIEnv *env, jclass theClass,
			       jlong msgInstance)
{
  const char *cmsgName;

  cmsgName = IPC_msgInstanceName((MSG_INSTANCE)(size_t)msgInstance);
  return (*env)->NewStringUTF(env, cmsgName);
}
Esempio n. 3
0
static void queryReplyHandler (MSG_INSTANCE msgRef, BYTE_ARRAY callData,
			       void *clientData)
{
  QUERY_REPLY_PTR queryReplyData = (QUERY_REPLY_PTR)clientData;

  queryReplyData->handled = TRUE;
  queryReplyData->data = callData;
  queryReplyData->formatter = IPC_msgInstanceFormatter(msgRef);
  queryReplyData->msgName = IPC_msgInstanceName(msgRef);
}
Esempio n. 4
0
static void ipcDisconnectHandler (MSG_INSTANCE ref, char **moduleNamePtr)
{
  CONNECT_DATA_PTR disconnectData;
  LIST_PTR list;

  LOCK_CM_MUTEX;
  list = GET_C_GLOBAL(disconnectNotifyList);
  UNLOCK_CM_MUTEX;

  for (disconnectData = (CONNECT_DATA_PTR)x_ipc_listFirst(list); disconnectData;
       disconnectData = (CONNECT_DATA_PTR)x_ipc_listNext(list)) {
    (disconnectData->handler)(*moduleNamePtr, disconnectData->clientData);
  }

  x_ipcFreeData(IPC_msgInstanceName(ref), moduleNamePtr); /* ??? */
}
Esempio n. 5
0
/* Unmarshall the byte array and print it out. */
static void msg3Handler (MSG_INSTANCE msgRef,
			 BYTE_ARRAY callData, void *clientData)
{
#ifdef UNUSED_PRAGMA
#pragma unused(clientData)
#endif
  FORMATTER_PTR formatter;
  void *dataptr;

  printf("msg3Handler: Receiving message %s: ", IPC_msgInstanceName(msgRef));
  /* Get the formatter for this message instance */
  formatter = IPC_msgInstanceFormatter(msgRef);
  IPC_unmarshall(formatter, callData, &dataptr);
  IPC_printData(formatter, stdout, dataptr);
  /* Free up malloc'd data */
  IPC_freeByteArray(callData);
  IPC_freeData(formatter, dataptr);
}
Esempio n. 6
0
static void queryHandler (MSG_INSTANCE msgRef,
			  BYTE_ARRAY callData, void *clientData)
{
  char *publishStr = "Published";
  char *responseStr = "Responded";

  printf("queryHandler: Receiving message %s of %d bytes (%s) [%s]\n", 
	  IPC_msgInstanceName(msgRef), IPC_dataLength(msgRef),
	 (char *)callData, (char *)clientData);
  /* Publish this message -- all subscribers get it */
  printf("\n  IPC_publish(%s, %d, %s)\n", 
	 MSG2, (int)strlen(publishStr)+1, publishStr);
  IPC_publish(MSG2, strlen(publishStr)+1, publishStr);
  /* Respond with this message -- only the query handler gets it */
  printf("\n  IPC_respond(msgRef, %s, %d, %s)\n", 
	 MSG2, (int)strlen(responseStr)+1, responseStr);
  IPC_respond(msgRef, MSG2, strlen(responseStr)+1, responseStr);
  IPC_freeByteArray(callData);
}
Esempio n. 7
0
static void query2Handler (MSG_INSTANCE msgRef,
			   void *callData, void *clientData)
{
  MATRIX_LIST_TYPE *matrixList = (MATRIX_LIST_TYPE *)callData;
  FORMATTER_PTR formatter;
  int i, j;

  printf("query2Handler: Receiving message %s [%s]\n", 
	 IPC_msgInstanceName(msgRef),
	 (clientData ? (char *)clientData : "NULL"));

  formatter = IPC_msgInstanceFormatter(msgRef);
  IPC_printData(formatter, stdout, matrixList);

  for (i=0; i<2; i++) for (j=0; j<2; j++) matrixList->matrix[i][j] += 1;

  printf("\n  IPC_respondData(msgRef, %s, matrixList->matrix)\n",
	 RESPONSE2_MSG);
  IPC_respondData(msgRef, RESPONSE2_MSG, &(matrixList->matrix));
  /* Free up malloc'd data */
  IPC_freeData(formatter, matrixList);
}
Esempio n. 8
0
static void 
velocity_handler(MSG_INSTANCE msgRef, BYTE_ARRAY callData,
		 void *clientData __attribute__ ((unused)))
{
  carmen_robot_velocity_message v;
  FORMATTER_PTR formatter;
  IPC_RETURN_TYPE err;

  formatter = IPC_msgInstanceFormatter(msgRef);
  err = IPC_unmarshallData(formatter, callData, &v,
			   sizeof(carmen_robot_velocity_message));  
  IPC_freeByteArray(callData);

  carmen_test_ipc_return(err, "Could not unmarshall", 
			 IPC_msgInstanceName(msgRef));

  time_of_last_command = carmen_get_time_ms();

  command_rv = v.rv;
  command_tv = v.tv;

  if (collision_avoidance) 
    {
      if (use_laser)
	command_tv = carmen_clamp(carmen_robot_laser_min_rear_velocity(), 
				  command_tv,
				  carmen_robot_laser_max_front_velocity());
      if (use_sonar)
	command_tv = carmen_clamp(carmen_robot_sonar_min_rear_velocity(), 
				  command_tv,