Fix GVariant match on service method
authorJiwan Kim <ji-wan.kim@samsung.com>
Wed, 1 Feb 2017 04:46:57 +0000 (13:46 +0900)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 11 May 2017 09:07:20 +0000 (18:07 +0900)
- Fix unchanged 'ay' into 'a(y)'
- Update logic for zb_leave_device on test app

Change-Id: I69828faecd8fcdf4833a0b262df5dea01ad67134
Signed-off-by: Jiwan Kim <ji-wan.kim@samsung.com>
lib/zbl-dbus.c
test/main.c

index 9ee7022d4f0b39b901f9387c0225e7619163e1b8..b12bd94ee330d57cb58b69cb9c3f7b991eadc75a 100644 (file)
@@ -624,8 +624,8 @@ static void _zbl_signal_handler(GDBusConnection *connection,
                int j = 0;
                GVariantIter *iter = NULL;
 
-               g_variant_get(parameters, "(ay)", &iter);
-               while (g_variant_iter_loop(iter, "y", &value)) {
+               g_variant_get(parameters, "(a(y))", &iter);
+               while (g_variant_iter_loop(iter, "(y)", &value)) {
                        addr64[j] = value;
                        j++;
                }
@@ -641,8 +641,8 @@ static void _zbl_signal_handler(GDBusConnection *connection,
                GVariantIter *iter = NULL;
                unsigned char value, status;
 
-               g_variant_get(parameters, "(ayy)", &iter, &status);
-               while (g_variant_iter_loop(iter, "y", &value)) {
+               g_variant_get(parameters, "(a(y)y)", &iter, &status);
+               while (g_variant_iter_loop(iter, "(y)", &value)) {
                        addr64[j] = value;
                        j++;
                }
@@ -3127,15 +3127,15 @@ int zbl_get_cluster_list(ieee_addr eui64, unsigned char endpoint, unsigned short
        RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
        RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR);
 
-       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
-       g_variant_builder_add(mac_builder, "y", eui64[7]);
-       g_variant_builder_add(mac_builder, "y", eui64[6]);
-       g_variant_builder_add(mac_builder, "y", eui64[5]);
-       g_variant_builder_add(mac_builder, "y", eui64[4]);
-       g_variant_builder_add(mac_builder, "y", eui64[3]);
-       g_variant_builder_add(mac_builder, "y", eui64[2]);
-       g_variant_builder_add(mac_builder, "y", eui64[1]);
-       g_variant_builder_add(mac_builder, "y", eui64[0]);
+       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
+       g_variant_builder_add(mac_builder, "(y)", eui64[7]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[6]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[5]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[4]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[3]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[2]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[1]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[0]);
        mac_variant = g_variant_builder_end(mac_builder);
        g_variant_builder_unref(mac_builder);
 
@@ -3181,27 +3181,27 @@ int zbl_get_endpoint_list(ieee_addr eui64, unsigned char list[], unsigned char *
        RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
        RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR);
 
-       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
-       g_variant_builder_add(mac_builder, "y", eui64[7]);
-       g_variant_builder_add(mac_builder, "y", eui64[6]);
-       g_variant_builder_add(mac_builder, "y", eui64[5]);
-       g_variant_builder_add(mac_builder, "y", eui64[4]);
-       g_variant_builder_add(mac_builder, "y", eui64[3]);
-       g_variant_builder_add(mac_builder, "y", eui64[2]);
-       g_variant_builder_add(mac_builder, "y", eui64[1]);
-       g_variant_builder_add(mac_builder, "y", eui64[0]);
+       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
+       g_variant_builder_add(mac_builder, "(y)", eui64[7]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[6]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[5]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[4]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[3]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[2]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[1]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[0]);
        mac_variant = g_variant_builder_end(mac_builder);
        g_variant_builder_unref(mac_builder);
 
        variant = g_dbus_proxy_call_sync(service_gproxy, "get_endpoint_list",
-               g_variant_new("(@ay)", mac_variant),
+               g_variant_new("(@a(y))", mac_variant),
                G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
 
        if (variant) {
-               g_variant_get(variant, "(iay)", &result, &iter);
+               g_variant_get(variant, "(ia(y))", &result, &iter);
                DBG("ret = [0x%x]", result);
 
-               while (g_variant_iter_loop(iter, "y", &endpoint)) {
+               while (g_variant_iter_loop(iter, "(y)", &endpoint)) {
                        DBG("Endpoint 0x%X", endpoint);
                        list[i++] = endpoint;
                }
@@ -3238,20 +3238,20 @@ int zbl_api_get_node_type(ieee_addr eui64, unsigned char *node_type)
        RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
        RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR);
 
-       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
-       g_variant_builder_add(mac_builder, "y", eui64[7]);
-       g_variant_builder_add(mac_builder, "y", eui64[6]);
-       g_variant_builder_add(mac_builder, "y", eui64[5]);
-       g_variant_builder_add(mac_builder, "y", eui64[4]);
-       g_variant_builder_add(mac_builder, "y", eui64[3]);
-       g_variant_builder_add(mac_builder, "y", eui64[2]);
-       g_variant_builder_add(mac_builder, "y", eui64[1]);
-       g_variant_builder_add(mac_builder, "y", eui64[0]);
+       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
+       g_variant_builder_add(mac_builder, "(y)", eui64[7]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[6]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[5]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[4]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[3]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[2]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[1]);
+       g_variant_builder_add(mac_builder, "(y)", eui64[0]);
        mac_variant = g_variant_builder_end(mac_builder);
        g_variant_builder_unref(mac_builder);
 
        variant = g_dbus_proxy_call_sync(service_gproxy, "get_node_type",
-               g_variant_new("(@ay)", mac_variant),
+               g_variant_new("(@a(y))", mac_variant),
                G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
 
        if (variant) {
@@ -3498,20 +3498,24 @@ int zbl_leave_device(ieee_addr addr64, bool remove_children, bool rejoin)
        RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
        RETV_IF(NULL == service_gproxy, ZIGBEE_ERROR_IO_ERROR);
 
-       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
-       g_variant_builder_add(mac_builder, "y", addr64[7]);
-       g_variant_builder_add(mac_builder, "y", addr64[6]);
-       g_variant_builder_add(mac_builder, "y", addr64[5]);
-       g_variant_builder_add(mac_builder, "y", addr64[4]);
-       g_variant_builder_add(mac_builder, "y", addr64[3]);
-       g_variant_builder_add(mac_builder, "y", addr64[2]);
-       g_variant_builder_add(mac_builder, "y", addr64[1]);
-       g_variant_builder_add(mac_builder, "y", addr64[0]);
+       DBG("IEEE Address = %X:%X:%X:%X:%X:%X:%X:%X",
+               addr64[0], addr64[1], addr64[2], addr64[3],
+               addr64[4], addr64[5], addr64[6], addr64[7]);
+
+       mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
+       g_variant_builder_add(mac_builder, "(y)", addr64[7]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[6]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[5]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[4]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[3]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[2]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[1]);
+       g_variant_builder_add(mac_builder, "(y)", addr64[0]);
        mac_variant = g_variant_builder_end(mac_builder);
        g_variant_builder_unref(mac_builder);
 
        variant = g_dbus_proxy_call_sync(service_gproxy, "leave_request",
-               g_variant_new("(@ayyy)", mac_variant, _remove_children, _rejoin),
+               g_variant_new("(@a(y)yy)", mac_variant, _remove_children, _rejoin),
                G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
        if (variant) {
                g_variant_get(variant, "(i)", &result);
index 31add938f1182c2852c2d81ed2cc4b80992d51d0..acfd4c23288ba5118c57c2fb273b2d734c326ae5 100644 (file)
@@ -701,6 +701,7 @@ static int run_select_device(MManager *mm, struct menu_data *menu)
        int i;
        int selected = (int)strtol(data_choose_target, NULL, 10);
        nwk_addr addr16;
+       ieee_addr addr64;
 
        /* Apply manual address first */
        if (data_dest_addr16 && strlen(data_dest_addr16) > 0) {
@@ -723,8 +724,12 @@ static int run_select_device(MManager *mm, struct menu_data *menu)
        for (i = 0; i < target_list_count && target_list; i++) {
                if (selected == (i+1)) {
                        zb_get_network_address(target_list[i], &addr16);
+                       zb_get_ieee_address((target_list)[i], dest_addr64);
                        dest_addr16 = addr16;
                        msg("  network addr [0x%04X] selected.", dest_addr16);
+                       msg("  ieee address = %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
+                               dest_addr64[0], dest_addr64[1], dest_addr64[2], dest_addr64[3],
+                               dest_addr64[4], dest_addr64[5], dest_addr64[6], dest_addr64[7]);
                        return RET_SUCCESS;
                }
        }
@@ -766,8 +771,7 @@ static int run_disable_network(MManager *mm, struct menu_data *menu)
 
 static int run_leave_device(MManager *mm, struct menu_data *menu)
 {
-       int ret1 = ZIGBEE_ERROR_NONE;
-       int ret2 = ZIGBEE_ERROR_NONE;
+       int ret = ZIGBEE_ERROR_NONE;
        bool remove_children = true;
        bool rejoin = false;
        unsigned char var = 0;
@@ -781,16 +785,13 @@ static int run_leave_device(MManager *mm, struct menu_data *menu)
                rejoin = (var == 0) ? false : true;
        }
 
-       ret1 = zb_leave_device(handle, st_addr64, remove_children, rejoin);
-       ret2 = zb_leave_device(handle, sj_addr64, remove_children, rejoin);
-       if (ret1 != ZIGBEE_ERROR_NONE || ret2 != ZIGBEE_ERROR_NONE) {
-               msg("zb_leave_device(0x%X) - FAILED!!!", ret1);
-               msg("zb_leave_device(0x%X) - FAILED!!!", ret2);
+       ret = zb_leave_device(handle, dest_addr64, remove_children, rejoin);
+       if (ret != ZIGBEE_ERROR_NONE) {
+               msg("zb_leave_device(0x%X) - FAILED!!!", ret);
                return RET_FAILURE;
        }
 
-       msg(" - zb_leave_device() ret: [0x%X]", ret1);
-       msg(" - zb_leave_device() ret: [0x%X]", ret2);
+       msg(" - zb_leave_device() ret: [0x%X]", ret);
 
        return RET_SUCCESS;
 }