From 7edcd3d78a45e73fac6896e164a1f2800842f537 Mon Sep 17 00:00:00 2001 From: Jiwan Kim Date: Tue, 7 Feb 2017 20:56:03 +0900 Subject: [PATCH] Adjust dbus parameter with ZCL Global control Change-Id: Ic368683ea66a7f0459a6e408bdb8960cc0ad537b Signed-off-by: Jiwan Kim --- lib/zbl-dbus.c | 87 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/lib/zbl-dbus.c b/lib/zbl-dbus.c index b3c3adb..6ea1fd4 100644 --- a/lib/zbl-dbus.c +++ b/lib/zbl-dbus.c @@ -2138,10 +2138,10 @@ MGMT_NWK_DISC_REQ_OUT: goto GLOBAL_READ_ATTRIBUTE_REQ_OUT; } - g_variant_get(parameters, "(qyayqqyyqi)", + g_variant_get(parameters, "(qya(y)qqyyqi)", &addr16, &ep, &iter, &attr_id, &cluster_id, &status, &type, &records_len, &isString); if (!isString) { - while (g_variant_iter_loop(iter, "y", &value)) { + while (g_variant_iter_loop(iter, "(y)", &value)) { attr_value[j] = value; DBG("attr_value[%d] = 0x%02X", j, value); j++; @@ -2149,7 +2149,7 @@ MGMT_NWK_DISC_REQ_OUT: if (NULL != iter) g_variant_iter_free(iter); } else { - while (g_variant_iter_loop(iter, "y", &value)) { + while (g_variant_iter_loop(iter, "(y)", &value)) { if (j == 0) records_len = value; attr_value[j] = value; @@ -2193,7 +2193,7 @@ GLOBAL_READ_ATTRIBUTE_REQ_OUT: write_attr_status_record_h records; zb_global_record_data_s *data; - g_variant_get(parameters, "(qyayaqqi)", + g_variant_get(parameters, "(qya(y)aqqi)", &addr16, &ep, &stat_iter, &attr_iter, &cluster_id, &records_len); records = calloc(records_len, sizeof(struct write_attribute_status_record_s)); @@ -2207,7 +2207,7 @@ GLOBAL_READ_ATTRIBUTE_REQ_OUT: goto GLOBAL_WRITE_ATTRIBUTE_REQ_OUT; } - while (g_variant_iter_loop(stat_iter, "y", &value)) { + while (g_variant_iter_loop(stat_iter, "(y)", &value)) { records[i].status = value; i++; } @@ -2248,7 +2248,7 @@ GLOBAL_WRITE_ATTRIBUTE_REQ_OUT: report_config_response_record_h records; zb_global_record_data_s *data; - g_variant_get(parameters, "(ayaqayqiqy)", + g_variant_get(parameters, "(a(y)aqa(y)qiqy)", &stat_iter, &attr_iter, &dir_iter, &cluster_id, &rec_len, &addr16, &ep); records = calloc(rec_len, sizeof(struct reporting_configuration_response_record_s)); @@ -2264,7 +2264,7 @@ GLOBAL_WRITE_ATTRIBUTE_REQ_OUT: goto GLOBAL_CONFIGURE_REPORTING_REQ_OUT; } - while (g_variant_iter_loop(stat_iter, "y", &value)) { + while (g_variant_iter_loop(stat_iter, "(y)", &value)) { DBG("Value 0x%02X", value); records[j].status = value; j++; @@ -2280,7 +2280,7 @@ GLOBAL_WRITE_ATTRIBUTE_REQ_OUT: if (NULL != attr_iter) g_variant_iter_free(attr_iter); - while (g_variant_iter_loop(dir_iter, "y", &value)) { + while (g_variant_iter_loop(dir_iter, "(y)", &value)) { if (records[k].status != ZB_ZCL_SUCCESS) records[k].dir = value; k++; @@ -2314,7 +2314,7 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: GVariantIter *stat_iter = NULL; GVariantIter *attr_iter = NULL; - g_variant_get(parameters, "(qyayaqqii)", &addr16, &ep, &stat_iter, + g_variant_get(parameters, "(qya(y)aqqii)", &addr16, &ep, &stat_iter, &attr_iter, &cluster_id, &records_len, &discovery_complete); records = calloc(records_len, sizeof(discover_attr_info_record_h)); RETM_IF(NULL == records, "calloc() Fail(%d)", errno); @@ -2334,7 +2334,7 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: } j = 0; - while (g_variant_iter_loop(stat_iter, "y", &value)) { + while (g_variant_iter_loop(stat_iter, "(y)", &value)) { records[j]->type = value; DBG("Attribute Type 0x%02X", value); j++; @@ -2377,7 +2377,7 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: unsigned char discoveryComplete; GVariantIter *cmd_iter = NULL; - g_variant_get(parameters, "(ayqqqyy)", &cmd_iter, &cluster_id, &cmd_len, + g_variant_get(parameters, "(a(y)qqqyy)", &cmd_iter, &cluster_id, &cmd_len, &addr16, &ep, &discoveryComplete); cmd_data = calloc(cmd_len+1, sizeof(char)); @@ -2388,7 +2388,7 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: return; } - while (g_variant_iter_loop(cmd_iter, "y", &value)) { + while (g_variant_iter_loop(cmd_iter, "(y)", &value)) { DBG("Value 0x%02X", value); cmd_data[j] = value; j++; @@ -2426,7 +2426,7 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: DBG("Will get the value now"); - g_variant_get(parameters, "(aqayayqqqyy)", &attr_iter, &type_iter, &ac_iter, + g_variant_get(parameters, "(aqa(y)a(y)qqqyy)", &attr_iter, &type_iter, &ac_iter, &cluster_id, &rec_len, &addr16, &ep, &discoveryComplete); DBG("records length 0x%04X", rec_len); @@ -2453,8 +2453,8 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: j = 0; while (g_variant_iter_loop(attr_iter, "q", &attr_data) - && g_variant_iter_loop(type_iter, "y", &t_value) - && g_variant_iter_loop(ac_iter, "y", &ac_value)) { + && g_variant_iter_loop(type_iter, "(y)", &t_value) + && g_variant_iter_loop(ac_iter, "(y)", &ac_value)) { DBG("attrData 0x%04X", attr_data); DBG("t_value 0x%02X", t_value); DBG("ac_value 0x%02X", ac_value); @@ -5120,14 +5120,14 @@ int zbl_read_attr_req(zigbee_h handle, unsigned short addr16, unsigned char dest #endif t = (unsigned char *)attribute_ids; - attr_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + attr_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); for (i = 0; i < attribute_ids_len*sizeof(unsigned short); i++) - g_variant_builder_add(attr_builder, "y", t[i]); + g_variant_builder_add(attr_builder, "(y)", t[i]); attr_variant = g_variant_builder_end(attr_builder); g_variant_builder_unref(attr_builder); variant = g_dbus_proxy_call_sync(zcl_global_proxy, "read_attributes_req", - g_variant_new("(@ayiqqyy)", attr_variant, attribute_ids_len, addr16, cluster_id, + g_variant_new("(@a(y)iqqyy)", attr_variant, attribute_ids_len, addr16, cluster_id, zcl_frame_ctl, dest_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); @@ -5247,11 +5247,11 @@ int zbl_write_attr_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, u j++; } - rec_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + rec_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); DBG(" "); for (i = 0; i < writeAttributeIndex ; i++) { DBG("0x%02X", writeAttribute[i]); - g_variant_builder_add(rec_builder, "y", writeAttribute[i]); + g_variant_builder_add(rec_builder, "(y)", writeAttribute[i]); } rec_variant = g_variant_builder_end(rec_builder); @@ -5311,7 +5311,7 @@ int zbl_write_attr_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, u #endif variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_req", - g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, + g_variant_new("(@a(y)iqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); @@ -5436,11 +5436,11 @@ int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ j++; } - rec_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + rec_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); DBG(" "); for (i = 0; i < writeAttributeIndex ; i++) { DBG("0x%02X", writeAttribute[i]); - g_variant_builder_add(rec_builder, "y", writeAttribute[i]); + g_variant_builder_add(rec_builder, "(y)", writeAttribute[i]); } rec_variant = g_variant_builder_end(rec_builder); @@ -5500,7 +5500,7 @@ int zbl_wattr_undivided_req(zigbee_h handle, nwk_addr addr16, unsigned char src_ #endif variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_undivided_req", - g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, + g_variant_new("(@a(y)iqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); @@ -5617,18 +5617,18 @@ int zbl_wattr_req_no_rsp(zigbee_h handle, nwk_addr addr16, unsigned char src_ep, j++; } - rec_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + rec_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); DBG(" "); for (i = 0; i < writeAttributeIndex ; i++) { DBG("0x%02X", writeAttribute[i]); - g_variant_builder_add(rec_builder, "y", writeAttribute[i]); + g_variant_builder_add(rec_builder, "(y)", writeAttribute[i]); } rec_variant = g_variant_builder_end(rec_builder); g_variant_builder_unref(rec_builder); - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_no_rep", - g_variant_new("(@ayiqqyyy)", rec_variant, writeAttributeIndex, addr16, + variant = g_dbus_proxy_call_sync(zcl_global_proxy, "write_attributes_no_resp", + g_variant_new("(@a(y)iqqyyy)", rec_variant, writeAttributeIndex, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err); @@ -5720,24 +5720,24 @@ int zbl_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char src_ _zbl_register_global_req(handle, container); #endif - rec_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + rec_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); for (i = 0; i < records_len; i++) { - g_variant_builder_add(rec_builder, "y", (*records)[i].dir); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].dir); DBG("dir = 0x%02X", (*records)[i].dir); count += sizeof((*records)[i].dir); - g_variant_builder_add(rec_builder, "y", (*records)[i].id & 0xff); - g_variant_builder_add(rec_builder, "y", ((*records)[i].id >> 8) & 0xff); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].id & 0xff); + g_variant_builder_add(rec_builder, "(y)", ((*records)[i].id >> 8) & 0xff); DBG("id = 0x%04X", (*records)[i].id); count += sizeof((*records)[i].id); - g_variant_builder_add(rec_builder, "y", (*records)[i].type); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].type); count += sizeof((*records)[i].type); DBG("type = 0x%04X", (*records)[i].type); - g_variant_builder_add(rec_builder, "y", (*records)[i].min_i & 0xff); - g_variant_builder_add(rec_builder, "y", ((*records)[i].min_i >> 8) & 0xff); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].min_i & 0xff); + g_variant_builder_add(rec_builder, "(y)", ((*records)[i].min_i >> 8) & 0xff); DBG("min_i = 0x%04X", (*records)[i].min_i); count += sizeof((*records)[i].min_i); - g_variant_builder_add(rec_builder, "y", (*records)[i].max_i & 0xff); - g_variant_builder_add(rec_builder, "y", ((*records)[i].max_i >> 8) & 0xff); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].max_i & 0xff); + g_variant_builder_add(rec_builder, "(y)", ((*records)[i].max_i >> 8) & 0xff); DBG("max_i = 0x%04X", (*records)[i].max_i); count += sizeof((*records)[i].max_i); @@ -5748,7 +5748,7 @@ int zbl_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char src_ for (j = 0; j < len && (*records)[i].change+j; j++) { DBG("records[%d]->value[%d] = %d", i, j, (*records)[i].change[j]); - g_variant_builder_add(rec_builder, "y", (*records)[i].change[j]); + g_variant_builder_add(rec_builder, "(y)", (*records)[i].change[j]); } } @@ -5756,7 +5756,7 @@ int zbl_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char src_ g_variant_builder_unref(rec_builder); variant = g_dbus_proxy_call_sync(zcl_global_proxy, "configure_reporting_req", - g_variant_new("(@ayqqqyyy)", rec_variant, count, addr16, cluster_id, + g_variant_new("(@a(y)qqqyyy)", rec_variant, count, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); if (!variant) { @@ -5881,18 +5881,18 @@ int zbl_read_configure_reporting(zigbee_h handle, nwk_addr addr16, unsigned char j++; } - rec_builder = g_variant_builder_new(G_VARIANT_TYPE("ay")); + rec_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)")); for (i = 0; i < idx ; i++) { DBG("0x%02X", read_attributes[i]); - g_variant_builder_add(rec_builder, "y", read_attributes[i]); + g_variant_builder_add(rec_builder, "(y)", read_attributes[i]); } rec_variant = g_variant_builder_end(rec_builder); g_variant_builder_unref(rec_builder); variant = g_dbus_proxy_call_sync(zcl_global_proxy, "read_configure_reporting", - g_variant_new("(@ayqqqyyy)", rec_variant, idx, addr16, cluster_id, zcl_frame_ctl, + g_variant_new("(@a(y)qqqyyy)", rec_variant, idx, addr16, cluster_id, zcl_frame_ctl, src_ep, dst_ep), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); free(read_attributes); @@ -5981,7 +5981,8 @@ int zbl_discover_attr_req(zigbee_h handle, unsigned short addr16, unsigned char _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_attributes", g_variant_new("(qyyqqy)", + variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_attributes", + g_variant_new("(qyyqqy)", addr16, dest_ep, zcl_frame_ctl, cluster_id, start_id, max_attribute_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); -- 2.7.4