unsigned char value;
GVariantIter *mac_iter = NULL;
- g_variant_get(parameters, "(yayqyy)", &status, &mac_iter, &addr16, &num, &start_idx);
- while (g_variant_iter_loop(mac_iter, "y", &value)) {
+ g_variant_get(parameters, "(ya(y)qyy)", &status, &mac_iter, &addr16, &num, &start_idx);
+ while (g_variant_iter_loop(mac_iter, "(y)", &value)) {
addr64[j] = value;
j++;
}
unsigned char start_idx;
unsigned char value;
GVariantIter *mac_iter = NULL;
+ GVariantIter *assoc_iter = NULL;
- g_variant_get(parameters, "(yayqyy)", &status, &mac_iter, &addr16, &num, &start_idx);
- while (g_variant_iter_loop(mac_iter, "y", &value)) {
+ g_variant_get(parameters, "(ya(y)qyyaq)", &status, &mac_iter,
+ &addr16, &num, &start_idx, &assoc_iter);
+ while (g_variant_iter_loop(mac_iter, "(y)", &value)) {
addr64[j] = value;
j++;
}
if (NULL != mac_iter)
g_variant_iter_free(mac_iter);
+ if (NULL != assoc_iter)
+ g_variant_iter_free(assoc_iter);
cb(status, addr64, addr16, num, start_idx, NULL, container->userdata);
}
GVariantIter *ep_iter = NULL;
unsigned char *ep_list;
- g_variant_get(parameters, "(qyayy)", &addr16, &status, &ep_iter, &count);
+ g_variant_get(parameters, "(yqa(y)y)", &status, &addr16, &ep_iter, &count);
ep_list = calloc(count+1, sizeof(unsigned char));
RETM_IF(NULL == ep_list, "calloc() Fail(%d)", errno);
- while (g_variant_iter_loop(ep_iter, "y", &value)) {
+ while (g_variant_iter_loop(ep_iter, "(y)", &value)) {
ep_list[j] = value;
j++;
}
unsigned char status;
GVariantIter *ml_iter = NULL;
unsigned char *match_list = NULL;
- g_variant_get(parameters, "(yqyay)", &status, &addr16, &match_len, &ml_iter);
+ g_variant_get(parameters, "(yqya(y))", &status, &addr16, &value, &ml_iter);
+ match_len = value;
if (match_len > 0) {
match_list = calloc(match_len+1, sizeof(unsigned char));
RETM_IF(NULL == match_list, "calloc() Fail(%d)", errno);
- while (g_variant_iter_loop(ml_iter, "y", &value)) {
+ while (g_variant_iter_loop(ml_iter, "(y)", &value)) {
match_list[j] = value;
DBG("match_list[i]=%d", j, match_list[j]);
j++;
g_variant_iter_free(ml_iter);
}
+ DBG("Match count : [%d]", match_len);
+ DBG("Match list : [%p]", match_list);
+
cb(status, addr16, match_len, match_list, container->userdata);
- free(match_list);
+ if (match_list)
+ free(match_list);
}
break;
case ZBL_ZDO_NODE_DESC_REQ: {
GVariantIter *comp_iter = NULL;
unsigned char *complex_desc = NULL;
- g_variant_get(parameters, "(yqyay)", &status, &addr16, &length, &comp_iter);
+ g_variant_get(parameters, "(yqya(y))", &status, &addr16, &length, &comp_iter);
if (length > 0) {
complex_desc = calloc(length, sizeof(char));
if (NULL == complex_desc) {
return;
}
- while (g_variant_iter_loop(comp_iter, "y", &value)) {
+ while (g_variant_iter_loop(comp_iter, "(y)", &value)) {
complex_desc[j] = value;
j++;
}
GVariantIter *comp_iter = NULL;
unsigned char *complex_desc = NULL;
- g_variant_get(parameters, "(yqyay)", &status, &addr16, &length, &comp_iter);
+ g_variant_get(parameters, "(yqya(y))", &status, &addr16, &length, &comp_iter);
if (length > 0) {
complex_desc = calloc(length, sizeof(char));
if (NULL == complex_desc) {
ERR("calloc() Fail(%d)", errno);
return;
}
- while (g_variant_iter_loop(comp_iter, "y", &value)) {
+ while (g_variant_iter_loop(comp_iter, "(y)", &value)) {
complex_desc[j] = value;
j++;
}
}
break;
case ZBL_ZDO_MGMT_BIND_REQ: {
- zb_zdo_mgmt_bind_rsp cb = NULL;
+ zb_zdo_mgmt_bind_rsp cb = container->cb;
unsigned char status;
unsigned char value;
unsigned char binding_table_enteries;
unsigned char binding_table_list_count;
unsigned char start_index;
+ unsigned short dst_addr16 = 0;
+ unsigned char dst_ep = 0;
GVariantIter *mac_iter = NULL;
GVariantIter *rsp_iter = NULL;
GVariantIter *destep_iter = NULL;
zb_zdo_binding_table_h *records = NULL;
- g_variant_get(parameters, "(yyyya(ayyqyay))", &status, &binding_table_enteries,
- &start_index, &binding_table_list_count, &rsp_iter);
+ g_variant_get(parameters, "(yyyya(ayyqyqayy))", &status,
+ &binding_table_enteries, &start_index,
+ &binding_table_list_count, &rsp_iter);
if (binding_table_list_count > 0) {
records = calloc(binding_table_list_count, sizeof(zb_zdo_binding_table_h));
}
}
for (i = 0; i < binding_table_list_count; i++) {
- g_variant_iter_loop(rsp_iter, "(ayyqyay)", &mac_iter, &records[i]->src_ep,
- &records[i]->cluster_id, &records[i]->dst_addr_mode, &destep_iter);
+ g_variant_iter_loop(rsp_iter, "(ayyqyqayy)", &mac_iter,
+ &records[i]->src_ep, &records[i]->cluster_id,
+ &records[i]->dst_addr_mode, &dst_addr16,
+ &destep_iter, &dst_ep);
for (j = 0; j < 8; j++) {
g_variant_iter_loop(mac_iter, "y", &value);
records[i]->src_addr64[j] = value;
g_variant_iter_loop(destep_iter, "y", &value);
records[i]->dst_addr64[j] = value;
}
- g_variant_iter_loop(destep_iter, "y", &value);
- records[i]->dst_ep = value;
+ records[i]->dst_ep = dst_ep;
DBG("Destination MAC Addr : %02X:%02X:%02X:%02X:%02X:%02X:%02X:%02X",
records[i]->dst_addr64[7], records[i]->dst_addr64[6],
records[i]->dst_addr64[5], records[i]->dst_addr64[4],
records[i]->dst_addr64[1], records[i]->dst_addr64[0]);
} else if (0x01 == records[i]->dst_addr_mode) {
- g_variant_iter_loop(destep_iter, "y", &value);
- records[i]->dst_addr16 = value;
- g_variant_iter_loop(destep_iter, "y", &value);
- records[i]->dst_addr16 += (value << 8);
+ records[i]->dst_addr16 = dst_addr16;
}
if (NULL != destep_iter)
g_variant_iter_free(destep_iter);
}
}
for (i = 0; i < neighbor_table_list_count; i++) {
- g_variant_iter_loop(resp_iter, "(ayayyqyyyyy)", &mac_iter, &mac_iter1,
- &records[i]->device_type, &records[i]->addr16, &records[i]->rx_on_when_idle,
- &records[i]->relationship, &records[i]->permit_joining, &records[i]->depth,
+ g_variant_iter_loop(resp_iter, "(ayayyqyyyyy)",
+ &mac_iter, &mac_iter1,
+ &records[i]->device_type, &records[i]->addr16,
+ &records[i]->rx_on_when_idle, &records[i]->relationship,
+ &records[i]->permit_joining, &records[i]->depth,
&records[i]->lqi);
for (j = 0; j < 8; j++) {
g_variant_iter_loop(mac_iter, "y", &value);
}
break;
case ZBL_ZDO_MGMT_RTG_REQ: {
- zb_zdo_mgmt_rtg_rsp cb = NULL;
+ zb_zdo_mgmt_rtg_rsp cb = container->cb;
int i;
unsigned char status;
}
for (i = 0; i < routing_table_list_count; i++) {
- g_variant_iter_loop(rsp_iter, "(qyyyyq)", &records[i]->dst_addr, &records[i]->status,
- &records[i]->memory_constrained, &records[i]->route_record_required,
+ g_variant_iter_loop(rsp_iter, "(qyyyyq)", &records[i]->dst_addr,
+ &records[i]->status, &records[i]->memory_constrained,
+ &records[i]->route_record_required,
&records[i]->many_to_one, &records[i]->next_hop_addr);
}
if (NULL != rsp_iter)
DBG("_zbl_mgmt_nwk_disc_req_cb()");
- g_variant_get(parameters, "(yyyya(ayayyqyyyyy))", &status, &nwk_count,
+ g_variant_get(parameters, "(yyyya(ayyyyyyy))", &status, &nwk_count,
&start_index, &nwk_list_count, &resp_iter);
zb_zdo_network_list_record_h *records = NULL;
}
}
for (i = 0; i < nwk_list_count; i++) {
- g_variant_iter_loop(resp_iter, "(ayayyqyyyyy)", &mac_iter, &records[i]->logical_channel,
+ g_variant_iter_loop(resp_iter, "(ayyyyyyy)", &mac_iter, &records[i]->logical_channel,
&records[i]->stack_profile, &records[i]->zigbee_version, &records[i]->beacon_order,
&records[i]->superframe_order, &records[i]->permit_joining);
for (j = 0; j < 8; j++) {
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
- 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]);
+ 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);
g_dbus_proxy_call(zdo_dev_proxy, "nwk_addr_req",
- g_variant_new("(@ayyy)", mac_variant, request_type, start_idx),
+ g_variant_new("(@a(y)yy)", mac_variant, request_type, start_idx),
G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
return ZIGBEE_ERROR_NONE;
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
- user_desc_builder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
+ user_desc_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
for (j = 0; j < len; j++)
- g_variant_builder_add(user_desc_builder, "y", user_desc[j]);
+ g_variant_builder_add(user_desc_builder, "(y)", user_desc[j]);
user_desc_variant = g_variant_builder_end(user_desc_builder);
g_variant_builder_unref(user_desc_builder);
g_dbus_proxy_call(zdo_dev_proxy, "user_desc_set_req",
- g_variant_new("(qy@ay)", addr16, len, user_desc_variant),
+ g_variant_new("(qy@a(y))", addr16, len, user_desc_variant),
G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
return ZIGBEE_ERROR_NONE;
RETV_IF(NULL == gdbus_conn, ZIGBEE_ERROR_IO_ERROR);
RETV_IF(NULL == zdo_dev_proxy, 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]);
+ 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(zdo_dev_proxy, "device_annce",
- g_variant_new("(q@ayy)", addr16, mac_variant, capability),
+ variant = g_dbus_proxy_call_sync(zdo_dev_proxy, "device_announce",
+ g_variant_new("(q@a(y)y)", addr16, mac_variant, capability),
G_DBUS_CALL_FLAGS_NONE, -1, NULL, &dbus_err);
if (variant) {
g_variant_get(variant, "(i)", &result);
container->tid = g_timeout_add_seconds(to, _zbl_timeout_cb, container);
container->userdata = user_data;
- 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]);
+ 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);
- g_dbus_proxy_call(service_gproxy, "leave_req",
- g_variant_new("(@ayyy)", mac_variant, remove_children, rejoin),
+ g_dbus_proxy_call(service_gproxy, "leave_request",
+ g_variant_new("(@a(y)yy)", mac_variant, remove_children, rejoin),
G_DBUS_CALL_FLAGS_NONE, to, NULL, NULL, container);
return ZIGBEE_ERROR_NONE;