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 #define MSG_SIZE 3 * 1024 * 1024
26 dbus_connection_close (dbus_conn);
30 DBusHandlerResult handler(DBusConnection *conn, DBusMessage *msg, void *user_data)
34 const char *dbus_data;
38 if (dbus_message_get_reply_serial (msg) != message_serial) {
39 return DBUS_HANDLER_RESULT_HANDLED;
42 dbus_error_init (&error);
43 if(!dbus_message_get_args (msg,&error,DBUS_TYPE_STRING,&dbus_data,DBUS_TYPE_INVALID)) {
44 fprintf (stderr,"error: %s\n",error.message);
47 gettimeofday (&tv_end, NULL);
48 delta = (1000000*tv_end.tv_sec + tv_end.tv_usec) - (1000000*tv_start.tv_sec + tv_start.tv_usec);
49 //printf ("delta: %ld us\n", delta);
52 if(iterations == 120) {
53 avg = sum / iterations;
54 printf ("avg RTT: %ld us\n", avg);
57 gettimeofday (&tv_start, NULL);
58 message = dbus_message_new_method_call (DBUS_NAME, DBUS_PATH, DBUS_IFACE, "PING");
59 dbus_message_append_args (message, DBUS_TYPE_STRING, &ping, DBUS_TYPE_INVALID);
60 dbus_connection_send (dbus_conn, message, &message_serial);
61 dbus_message_unref (message);
63 return DBUS_HANDLER_RESULT_HANDLED;
70 dbus_error_init (&error);
72 dbus_conn = dbus_bus_get_private(DBUS_BUS_SESSION, &error);
74 if (dbus_error_is_set (&error)) {
75 fprintf (stderr, "Couldn't initialize DBus: %s\n", error.message);
84 main (int argc, char **argv)
89 if (init_dbus () < 0) {
90 fprintf (stderr, "Cannot initialize DBus\n");
94 dbus_connection_add_filter (dbus_conn, handler, NULL, NULL);
96 //ping = malloc(MSG_SIZE);
97 //for(i = 0; i < MSG_SIZE; i++) ping[i] = 'v';
98 //ping[MSG_SIZE] = '\0';
100 message = dbus_message_new_method_call (DBUS_NAME, DBUS_PATH, DBUS_IFACE, "PING");
101 dbus_message_append_args (message, DBUS_TYPE_STRING, &ping, DBUS_TYPE_INVALID);
102 dbus_connection_send (dbus_conn, message, &message_serial);
104 gettimeofday (&tv_start, NULL);
106 dbus_message_unref (message);
107 while (dbus_connection_read_write (dbus_conn, -1)) {
108 while (dbus_connection_dispatch (dbus_conn) != DBUS_DISPATCH_COMPLETE) {