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;
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;
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);
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
_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);
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
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);
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";
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;
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);
};
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) {
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,
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);
}
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 },