Fix connection to accessibility bus
authorZbigniew Kosinski <z.kosinski@samsung.com>
Tue, 30 Sep 2014 13:24:49 +0000 (15:24 +0200)
committerZbigniew Kosinski <z.kosinski@samsung.com>
Tue, 30 Sep 2014 13:27:38 +0000 (15:27 +0200)
packaging/org.tizen.etest.spec
src/etest.c

index 1bdc233..a1f25d9 100755 (executable)
@@ -42,6 +42,7 @@ rm -rf %{buildroot}
 %postun -p /sbin/ldconfig
 
 %files
+%manifest org.tizen.etest.manifest
 %{AppInstallPath}/bin/etest
 %{AppInstallPath}/res/icons/etest.png
 /opt/share/packages/%{name}.xml
index 0971ad5..82f69b4 100755 (executable)
 #define GESTURE_DETECTED "GestureDetected"
 #define FOCUS_EVENT "object:state-changed:focused"
 
-#define BUS "com.samsung.e17"
-#define INTERFACE "com.samsung.e17"
-#define PATH "/com/samsung/e17"
+#define BUS "com.samsung.EModule"
+#define INTERFACE "com.samsung.GestureNavigation"
+#define PATH "/com/samsung/GestureNavigation"
+
+#define A11Y_BUS "org.a11y.Bus"
+#define A11Y_INTERFACE "org.a11y.Bus"
+#define A11Y_PATH "/org/a11y/bus"
+#define A11Y_GET_ADDRESS "GetAddress"
+
 
 #define N_ELEMS(x)  (sizeof(x) / sizeof(x[0]))
 
@@ -40,8 +46,11 @@ static const char *supported_gestures[] =
 };
 
 static Eldbus_Connection *connection = NULL;
+static Eldbus_Connection *a11y_connection = NULL;
+static Eldbus_Object *a11y_obj = NULL;
 static Eldbus_Object *obj = NULL;
 static Eldbus_Proxy *proxy = NULL;
+static Eldbus_Proxy *a11y_proxy = NULL;
 
 static void _unpack_gestures(const Eldbus_Message *msg);
 static bool check_gestures(const char* a[], const char* value);
@@ -50,7 +59,7 @@ static void gesture_detected_signal_handler(void *context EINA_UNUSED, const Eld
 
 static void gesture_detected_signal_handler(void *context EINA_UNUSED, const Eldbus_Message *msg)
 {
-    printf("GESTURE DETECTED!!!");
+    fprintf(stderr, "GESTURE DETECTED!!!");
     const char *error_name, *error_msg;
     const char *target_bus;
     const char *gesture_name;
@@ -64,11 +73,11 @@ static void gesture_detected_signal_handler(void *context EINA_UNUSED, const Eld
 
     if (!eldbus_message_arguments_get(msg, "ssv", &target_bus, &gesture_name, &data))
     {
-        printf("Error on eldbus_message_arguments_get()\n");
+        fprintf(stderr, "Error on eldbus_message_arguments_get()\n");
         return;
     }
 
-    printf("Detected signal on %s bus, gesture name: %s", target_bus, gesture_name);
+    fprintf(stderr, "Detected signal on %s bus, gesture name: %s", target_bus, gesture_name);
 }
 
 static bool check_gestures(const char* a[], const char* value)
@@ -86,47 +95,113 @@ static void _unpack_gestures(const Eldbus_Message *msg)
 {
     Eldbus_Message_Iter *array;
     const char *txt;
-    printf("Received Gestures");
+    fprintf(stderr, "unpack gestures");
     if (!eldbus_message_arguments_get(msg, "as", &array))
     {
-        printf("Error on eldbus_message_arguments_get()\n");
+        fprintf(stderr, "Error on eldbus_message_arguments_get()\n");
         return;
     }
+    int i = 0;
     while (eldbus_message_iter_get_and_next(array, 's', &txt))
     {
-        if(!check_gestures(supported_gestures, txt))
-            return;
+        fprintf(stderr, "gest%d:%s", ++i, txt);
+//      if(!check_gestures(supported_gestures, txt))
+//          return;
     }
 
-    printf("Supported gestures matched!");
+    fprintf(stderr, "Supported gestures matched!");
 }
 
 static void _get_gestures(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
 {
-    printf("Gesture detected!");
+    fprintf(stderr, "get_gestures cb!");
 
     const char *error_name, *error_msg;
 
     if (eldbus_message_error_get(msg, &error_name, &error_msg))
     {
-        printf("%s - %s", error_name, error_msg);
+        fprintf(stderr, "%s - %s\n", error_name, error_msg);
         return;
     }
     _unpack_gestures(msg);
 }
 
+static void _get_address(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED)
+{
+    fprintf(stderr, "Address bus!");
+    Eldbus_Message *msg1 = NULL;    
+    const char *error_name, *error_msg;
+    const char *a11y_bus_address = NULL;
+
+    if (eldbus_message_error_get(msg, &error_name, &error_msg))
+    {
+        printf("%s - %s", error_name, error_msg);
+        return;
+    }
+     if (!eldbus_message_arguments_get(msg, "s", &a11y_bus_address))
+    {
+        fprintf(stderr, "Error on eldbus_message_arguments_get()\n");
+        return;
+    }
+    fprintf(stderr, "BUS_ADDRESS:%s\n", a11y_bus_address);
+
+    connection = eldbus_address_connection_get(a11y_bus_address);
+
+    if (!connection)
+    {
+        fprintf(stderr, "Error: could not get system a11y bus\n");
+        return ;
+    }
+    else
+        fprintf(stderr, "a11y: Connection established!");
+
+    obj = eldbus_object_get(connection, BUS, PATH);
+
+    // get atspi bus address//
+
+    if (!obj)
+    {
+        fprintf(stderr, "Error: could not get object\n");
+        return;
+    }
+    else
+        fprintf(stderr, "Object received!\n");
+
+    proxy = eldbus_proxy_get(obj, INTERFACE);
+    if (!proxy)
+    {
+        fprintf(stderr, "Error: could not get proxy\n");
+        return;
+    }
+    else
+        fprintf(stderr, "Proxy received!");
+
+
+    msg1 = eldbus_message_method_call_new(BUS, PATH, INTERFACE, GESTURES_GET);
+    if(!msg1)
+    {
+        fprintf(stderr, "Dbus method call GetAddress failed!");
+        return;
+    }
+
+    eldbus_connection_send(connection, msg1, _get_gestures, NULL, -1);
+
+    eldbus_proxy_signal_handler_add(proxy, GESTURE_DETECTED, gesture_detected_signal_handler, NULL);
+
+}
+
 static bool create_dbus_connection(void *data)
 {
-/**
+
     Eldbus_Message *msg = NULL;
 
     eldbus_init();
 
     printf("Eldbus initialized!");
 
-    connection = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
+    a11y_connection = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION);
 
-    if (!connection)
+    if (!a11y_connection)
     {
         printf("Error: could not get system bus\n");
         return 0;
@@ -134,9 +209,11 @@ static bool create_dbus_connection(void *data)
     else
         printf("Connection established!");
 
-    obj = eldbus_object_get(connection, BUS, PATH);
+    a11y_obj = eldbus_object_get(a11y_connection, A11Y_BUS, A11Y_PATH);
 
-    if (!obj)
+    // get atspi bus address//
+
+    if (!a11y_obj)
     {
         printf("Error: could not get object\n");
         return 0;
@@ -144,8 +221,8 @@ static bool create_dbus_connection(void *data)
     else
         printf("Object received!");
 
-    proxy = eldbus_proxy_get(obj, INTERFACE);
-    if (!proxy)
+    a11y_proxy = eldbus_proxy_get(a11y_obj, A11Y_INTERFACE);
+    if (!a11y_proxy)
     {
         printf("Error: could not get proxy\n");
         return 0;
@@ -154,19 +231,17 @@ static bool create_dbus_connection(void *data)
         printf("Proxy received!");
 
 
-    msg = eldbus_message_method_call_new(BUS, PATH, INTERFACE, GESTURES_GET);
+    msg = eldbus_message_method_call_new(A11Y_BUS, A11Y_PATH, A11Y_INTERFACE, A11Y_GET_ADDRESS);
     if(!msg)
     {
-        printf("Dbus method call GetSupportedGestures failed!");
+        printf("Dbus method call GetAddress failed!");
         return 0;
     }
-
-    eldbus_connection_send(connection, msg, _get_gestures, NULL, -1);
-
-    eldbus_proxy_signal_handler_add(proxy, GESTURE_DETECTED, gesture_detected_signal_handler, NULL);
+    eldbus_connection_send(a11y_connection, msg, _get_address, NULL, -1);
+    // end
 
     _detector_initialize();
-**/
+
     border_init();
     border_set_on_event(FOCUS_EVENT);
     return 1;