9 #define DBUS_NAME "com.samsung.pingpong"
10 #define DBUS_PATH "/com/samsung/pingpong"
11 #define DBUS_IFACE "com.samsung.pingpong"
13 DBusConnection *dbus_conn;
14 struct timeval tv_start, tv_end;
15 unsigned int message_serial;
16 long int iterations = 0;
19 static char* ping = "pingping";
20 int MSG_SIZE = 1024*1024;
21 //#define MSG_SIZE 3 * 1024 * 1024
27 dbus_connection_close (dbus_conn);
31 DBusHandlerResult handler(DBusConnection *conn, DBusMessage *msg, void *user_data)
35 const char *dbus_data;
39 if (dbus_message_get_reply_serial (msg) != message_serial) {
40 return DBUS_HANDLER_RESULT_HANDLED;
43 dbus_error_init (&error);
44 if(!dbus_message_get_args (msg,&error,DBUS_TYPE_STRING,&dbus_data,DBUS_TYPE_INVALID)) {
45 fprintf (stderr,"error: %s\n",error.message);
48 if(dbus_data[5] != 'v') {
49 fprintf (stderr,"error: string content not right! \n");
53 gettimeofday (&tv_end, NULL);
54 delta = (1000000*tv_end.tv_sec + tv_end.tv_usec) - (1000000*tv_start.tv_sec + tv_start.tv_usec);
55 //printf ("delta: %ld us\n", delta);
58 //if(iterations == 10) {
59 avg = sum / iterations;
60 printf ("avg RTT: %ld us\n", avg);
63 gettimeofday (&tv_start, NULL);
64 message = dbus_message_new_method_call (DBUS_NAME, DBUS_PATH, DBUS_IFACE, "PING");
65 dbus_message_append_args (message, DBUS_TYPE_STRING, &ping, DBUS_TYPE_INVALID);
66 dbus_connection_send (dbus_conn, message, &message_serial);
67 dbus_message_unref (message);
69 return DBUS_HANDLER_RESULT_HANDLED;
76 dbus_error_init (&error);
78 dbus_conn = dbus_bus_get_private(DBUS_BUS_SESSION, &error);
80 if (dbus_error_is_set (&error)) {
81 fprintf (stderr, "Couldn't initialize DBus: %s\n", error.message);
90 main (int argc, char **argv)
97 MSG_SIZE = atoi(argv[1]);
99 if (init_dbus () < 0) {
100 fprintf (stderr, "Cannot initialize DBus\n");
104 dbus_connection_add_filter (dbus_conn, handler, NULL, NULL);
106 ping = malloc(MSG_SIZE);
107 for(i = 0; i < MSG_SIZE; i++) ping[i] = 'v';
108 ping[MSG_SIZE-1] = '\0';
109 //printf("MSG_SIZE: %i\n", MSG_SIZE);
111 message = dbus_message_new_method_call (DBUS_NAME, DBUS_PATH, DBUS_IFACE, "PING");
112 dbus_message_append_args (message, DBUS_TYPE_STRING, &ping, DBUS_TYPE_INVALID);
113 dbus_connection_send (dbus_conn, message, &message_serial);
115 gettimeofday (&tv_start, NULL);
117 dbus_message_unref (message);
118 while (dbus_connection_read_write (dbus_conn, -1)) {
119 while (dbus_connection_dispatch (dbus_conn) != DBUS_DISPATCH_COMPLETE) {