From: saerome.kim Date: Thu, 9 Feb 2017 06:01:54 +0000 (+0900) Subject: Fix problems related to global commands X-Git-Tag: submit/tizen/20170512.045637~40 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b3b489a7c97c1dc26016f6e81d66af1b3c484de;p=platform%2Fcore%2Fapi%2Fzigbee.git Fix problems related to global commands - discover_genereated / discover_received - read attributes Change-Id: Id885df5778d567f96f791df91a50238188b6113b Signed-off-by: saerome.kim --- diff --git a/lib/zbl-dbus.c b/lib/zbl-dbus.c index 0b8edcf..c8e3b94 100644 --- a/lib/zbl-dbus.c +++ b/lib/zbl-dbus.c @@ -2361,7 +2361,9 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: cb(0, 0, 0, NULL, 0, container->userdata); } break; - case ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_RECEIVED_REQ: { + /* GLOBAL_DISCOVER_COMMAND_RECEIVED and GLOBAL_DISCOVER_COMMAND_GENERATED should be handled as same way */ + case ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_RECEIVED_REQ: + case ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_GENERATED_REQ: { zb_zcl_global_discover_cmds_rsp cb = container->cb; nwk_addr addr16; @@ -2398,11 +2400,6 @@ GLOBAL_CONFIGURE_REPORTING_REQ_OUT: free(cmd_data); } break; - case ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_GENERATED_REQ: { - zb_zcl_global_discover_cmds_rsp cb = container->cb; - cb(0, 0, 0, 0, NULL, 0, container->userdata); - } - break; case ZBL_ZCL_GLOBAL_DISCOVER_ATTRIBUTE_EXTENDED_REQ: { zb_zcl_global_discover_attr_extended_rsp cb = container->cb; nwk_addr addr16; @@ -5851,7 +5848,7 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep to = zbl_dbus_get_timeout(zcl_global_proxy); sub_id = g_dbus_connection_signal_subscribe(gdbus_conn, NULL, - ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, "discover_commands_received_rsp", + ZIGBEE_ZCL_GLOBAL_CONTROL_INTERFACE, "discover_commands_generated_rsp", ZIGBEE_CONTROL_OBJECT_PATH, NULL, 0, _zbl_response_cb, container, _zbl_request_cleanup); @@ -5863,7 +5860,7 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep container->cb = cb; container->sid = sub_id; - container->cid = ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_RECEIVED_REQ; + container->cid = ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_GENERATED_REQ; container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container); container->userdata = user_data; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC @@ -5887,7 +5884,7 @@ int zbl_discover_cmds_gen(zigbee_h handle, nwk_addr addr16, unsigned char src_ep _zbl_register_global_req(handle, container); #endif - variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_commands_received", + variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_commands_generated", g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, cluster_id, start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); @@ -5941,7 +5938,7 @@ int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_e container->cb = cb; container->sid = sub_id; - container->cid = ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_GENERATED_REQ; + container->cid = ZBL_ZCL_GLOBAL_DISCOVER_COMMAND_RECEIVED_REQ; container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container); container->userdata = user_data; #ifdef ZB_FEATURE_GLOBAL_RSP_SYNC @@ -5967,7 +5964,7 @@ int zbl_discover_cmds_recv(zigbee_h handle, nwk_addr addr16, unsigned char src_e variant = g_dbus_proxy_call_sync(zcl_global_proxy, "discover_commands_received", g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, cluster_id, - start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err); + start_command_id, max_command_ids), G_DBUS_CALL_FLAGS_NONE, to, NULL, &dbus_err); if (!variant) { ERR("Failed to get 'discover_commands_received' [%s]", dbus_err->message); diff --git a/test/zcl-global-cmd.c b/test/zcl-global-cmd.c index eb0f214..f86ff1a 100644 --- a/test/zcl-global-cmd.c +++ b/test/zcl-global-cmd.c @@ -53,8 +53,11 @@ extern ieee_addr dest_addr64; extern simple_desc_s st_ep1, st_ep2, st_ep3, st_ep4, sj_ep1, simul_ep1; -static char data_cluster_id[MENU_DATA_SIZE + 1] = "6"; -static char data_attr_id[MENU_DATA_SIZE + 1] = "0"; +static char r_data_cluster_id[MENU_DATA_SIZE + 1] = "6"; +static char r_data_attr_id[MENU_DATA_SIZE + 1] = "0"; +static char w_data_cluster_id[MENU_DATA_SIZE + 1] = "3"; +static char w_data_attr_id[MENU_DATA_SIZE + 1] = "0"; +static char w_data_attr_value[MENU_DATA_SIZE + 1] = "180"; static char data_min_i[MENU_DATA_SIZE + 1] = "A"; static char data_max_i[MENU_DATA_SIZE + 1] = "3C"; static char data_timeout[MENU_DATA_SIZE + 1] = "10"; @@ -121,7 +124,7 @@ static void zigbee_zcl_global_write_attributes_rsp(nwk_addr addr16, unsigned char ep, unsigned short cluster_id, zb_global_record_data_s *records_info, int records_len, void *user_data) { - unsigned short id; + unsigned short id = 0; unsigned char status; zb_value_h value = NULL; write_attr_status_record_h *records; @@ -143,8 +146,8 @@ static void zigbee_zcl_global_write_attributes_rsp(nwk_addr addr16, msg(" Msg length %d", records_len); if (records) { - zb_get_id_from_write_attr_status(*records, &id); - msg(" AttributeId : 0x%04X", id); + if (ZIGBEE_ERROR_NONE == zb_get_id_from_write_attr_status(*records, &id)) + msg(" AttributeId : 0x%04X", id); } if (records) { zb_get_status_from_write_attr_status(*records, &status); @@ -365,13 +368,13 @@ static int run_global_read_attr(MManager *mm, struct menu_data *menu) }; int len_of_attr = sizeof(attribute_id) / sizeof(attribute_id[0]); - if (strlen(data_cluster_id)) - cluster_id = (unsigned short)strtol(data_cluster_id, NULL, 16); - if (strlen(data_attr_id)) - attribute_id[0] = (unsigned short)strtol(data_attr_id, NULL, 16); + if (strlen(r_data_cluster_id)) + cluster_id = (unsigned short)strtol(r_data_cluster_id, NULL, 16); + if (strlen(r_data_attr_id)) + attribute_id[0] = (unsigned short)strtol(r_data_attr_id, NULL, 16); ret = zb_zcl_global_read_attr(handle, dest_addr16, 1, 1, - -1, cluster_id, attribute_id, len_of_attr, + ZB_ZCL_FC_DEFAULT, cluster_id, attribute_id, len_of_attr, zigbee_zcl_global_read_attributes_rsp, NULL); if (ZIGBEE_ERROR_NONE != ret) { @@ -388,23 +391,28 @@ static int run_global_read_attr(MManager *mm, struct menu_data *menu) static int run_global_write_attr(MManager *mm, struct menu_data *menu) { int ret = ZIGBEE_ERROR_NONE; - unsigned char value[] = { 0x02, 0x01}; /* Samjin Power Outlet */ write_attr_record_h attr; - unsigned short cluster_id = ZB_ZCL_ON_OFF_CLUSTER_ID; - unsigned short attribute_id = ZB_ZCL_ON_OFF_ATTRIBUTE_ID; - - if (strlen(data_cluster_id)) - cluster_id = (unsigned short)strtol(data_cluster_id, NULL, 16); - if (strlen(data_attr_id)) - attribute_id = (unsigned short)strtol(data_attr_id, NULL, 16); + unsigned short cluster_id = ZB_ZCL_IDENTIFY_CLUSTER_ID; + unsigned short attribute_id = ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID; + unsigned short temp; + unsigned char attribute_value[] = {0,}; + + if (strlen(w_data_cluster_id)) + cluster_id = (unsigned short)strtol(w_data_cluster_id, NULL, 16); + if (strlen(w_data_attr_id)) + attribute_id = (unsigned short)strtol(w_data_attr_id, NULL, 16); + if (strlen(w_data_attr_value)) { + temp = (unsigned short)strtol(w_data_attr_value, NULL, 16); + memcpy(attribute_value, &temp, sizeof(unsigned short)); + } zb_create_write_attr_record(&attr); //zb_set_id_to_write_attr_record(attr, ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID); zb_set_id_to_write_attr_record(attr, attribute_id); zb_set_type_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER); - zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, + zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, attribute_value, zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER)); ret = zb_zcl_global_write_attr(handle, dest_addr16, 1, sj_ep1.ep, @@ -488,10 +496,10 @@ static int run_global_config_report(MManager *mm, struct menu_data *menu) unsigned short max_i; unsigned short timeout; - if (strlen(data_cluster_id)) - cluster_id = (unsigned short)strtol(data_cluster_id, NULL, 16); - if (strlen(data_attr_id)) - attribute_id = (unsigned short)strtol(data_attr_id, NULL, 16); + if (strlen(r_data_cluster_id)) + cluster_id = (unsigned short)strtol(r_data_cluster_id, NULL, 16); + if (strlen(r_data_attr_id)) + attribute_id = (unsigned short)strtol(r_data_attr_id, NULL, 16); if (strlen(data_min_i)) min_i = (unsigned short)strtol(data_min_i, NULL, 16); @@ -648,22 +656,23 @@ static int run_global_discover_attr_extended(MManager *mm, struct menu_data *men } struct menu_data menu_zcl_global_read_attr[] = { - { "1", "Cluster ID (Hex)", NULL, NULL, data_cluster_id }, - { "2", "Attribute ID (Hex)", NULL, NULL, data_attr_id }, + { "1", "Cluster ID (Hex)", NULL, NULL, r_data_cluster_id }, + { "2", "Attribute ID (Hex)", NULL, NULL, r_data_attr_id }, { "3", "run", NULL, run_global_read_attr, NULL }, { NULL, NULL, }, }; struct menu_data menu_zcl_global_write_attr[] = { - { "1", "Cluster ID (Hex)", NULL, NULL, data_cluster_id }, - { "2", "Attribute ID (Hex)", NULL, NULL, data_attr_id }, - { "3", "run", NULL, run_global_write_attr, NULL }, + { "1", "Cluster ID (Hex)", NULL, NULL, w_data_cluster_id }, + { "2", "Attribute ID (Hex)", NULL, NULL, w_data_attr_id }, + { "3", "Attribute Value (Hex)", NULL, NULL, w_data_attr_value }, + { "4", "run", NULL, run_global_write_attr, NULL }, { NULL, NULL, }, }; struct menu_data menu_zcl_global_config_report[] = { - { "1", "Cluster ID (Hex)", NULL, NULL, data_cluster_id }, - { "2", "Attribute ID (Hex)", NULL, NULL, data_attr_id }, + { "1", "Cluster ID (Hex)", NULL, NULL, r_data_cluster_id }, + { "2", "Attribute ID (Hex)", NULL, NULL, r_data_attr_id }, { "3", "Min interval (Hex)", NULL, NULL, data_min_i }, { "4", "Max interval (Hex)", NULL, NULL, data_max_i }, { "5", "Timeout", NULL, NULL, data_timeout },