2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
34 int Zigbee::zbl_enable(void)
36 int error = ZIGBEE_ERROR_NONE;
39 GLOGD("zbl_enable()");
41 message = InvokeMethod(ZIGBEE_MANAGER_INTERFACE,
43 ZIGBEE_MANAGER_INTERFACE,
44 "enable", NULL, &error);
47 g_variant_unref(message);
52 int Zigbee::zbl_disable(void)
54 int error = ZIGBEE_ERROR_NONE;
55 GVariant *message = NULL;
57 GLOGD("zbl_disable()");
59 message = InvokeMethod(ZIGBEE_MANAGER_INTERFACE,
61 ZIGBEE_MANAGER_INTERFACE,
62 "disable", NULL, &error);
65 g_variant_get(message, "(i)", &error);
66 GLOGD("ret = 0x%x", error);
67 g_variant_unref(message);
73 int Zigbee::zbl_is_enable(bool* state)
75 int error = ZIGBEE_ERROR_NONE;
76 GVariant *message = NULL;
78 GLOGD("zbl_is_enable()");
80 message = InvokeMethod(ZIGBEE_MANAGER_INTERFACE,
82 ZIGBEE_MANAGER_INTERFACE,
83 "get_zigbee_state", NULL, &error);
86 g_variant_get(message, "(ib)", &error, state);
87 GLOGD("enable = %s", state ? "TRUE" : "FALSE");
88 g_variant_unref(message);
94 int Zigbee::zbl_hw_reset(void)
96 int error = ZIGBEE_ERROR_NONE;
97 GVariant *message = NULL;
99 GLOGD("zbl_hw_reset()");
101 message = invoke_proxy_method(SERVICE_GPROXY, "zb_hw_reset",
106 g_variant_get(message, "(i)", &error);
107 GLOGD("ret = [0x%x]", error);
108 g_variant_unref(message);
114 int Zigbee::zbl_get_network_info(void)
116 GVariant *message = NULL;
117 GVariantIter *iter = NULL;
118 int error = ZIGBEE_ERROR_NONE;
122 unsigned char _radio_channel;
123 unsigned char _radio_tx_power;
125 GLOGD("zbl_get_network_info()");
127 message = invoke_proxy_method(SERVICE_GPROXY, "get_network_info",
132 g_variant_get(message, "(ia(y)qqyy)", &error, &iter,
133 &_nodeid, &_panid, &_radio_channel, &_radio_tx_power);
134 GLOGD("ret = [0x%x]", error);
135 g_variant_iter_free(iter);
136 g_variant_unref(message);
142 int Zigbee::zbl_get_controller_mac_address(ieee_addr mac)
144 GVariant *message = NULL;
145 GVariantIter *iter = NULL;
146 int error = ZIGBEE_ERROR_NONE;
150 GLOGD("zbl_get_controller_mac_address()");
152 message = invoke_proxy_method(SERVICE_GPROXY, "get_mac",
157 g_variant_get(message, "(ia(y))", &error, &iter);
158 GLOGD("ret = [0x%x]", error);
160 while (g_variant_iter_loop(iter, "(y)", &value))
163 g_variant_iter_free(iter);
164 g_variant_unref(message);
170 int Zigbee::zbl_get_cluster_list(ieee_addr eui64, unsigned char endpoint,
171 unsigned char *in_cluster_count, unsigned short in_cluster_list[],
172 unsigned char *out_cluster_count, unsigned short out_cluster_list[])
174 GVariant *message = NULL;
175 GVariantBuilder *mac_builder = NULL;
176 GVariant *mac_variant = NULL;
177 GVariantIter *in_cluster_iter = NULL;
178 GVariantIter *out_cluster_iter = NULL;
179 int error = ZIGBEE_ERROR_NONE;
181 unsigned short cluster = 0;
184 GLOGD("zbl_get_cluster_list()");
186 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
187 g_variant_builder_add(mac_builder, "(y)", eui64[7]);
188 g_variant_builder_add(mac_builder, "(y)", eui64[6]);
189 g_variant_builder_add(mac_builder, "(y)", eui64[5]);
190 g_variant_builder_add(mac_builder, "(y)", eui64[4]);
191 g_variant_builder_add(mac_builder, "(y)", eui64[3]);
192 g_variant_builder_add(mac_builder, "(y)", eui64[2]);
193 g_variant_builder_add(mac_builder, "(y)", eui64[1]);
194 g_variant_builder_add(mac_builder, "(y)", eui64[0]);
195 mac_variant = g_variant_builder_end(mac_builder);
196 g_variant_builder_unref(mac_builder);
198 message = invoke_proxy_method(SERVICE_GPROXY, "get_cluster_list",
199 g_variant_new("(@a(y)y)", mac_variant, endpoint),
203 g_variant_get(message, "(iaqaq)", &error, &in_cluster_iter, &out_cluster_iter);
204 GLOGD("ret = [0x%x]", error);
207 while (g_variant_iter_loop(in_cluster_iter, "q", &cluster))
208 in_cluster_list[i++] = cluster;
210 *in_cluster_count = i;
211 g_variant_iter_free(in_cluster_iter);
215 while (g_variant_iter_loop(out_cluster_iter, "q", &cluster))
216 out_cluster_list[i++] = cluster;
218 *out_cluster_count = i;
219 g_variant_iter_free(out_cluster_iter);
220 g_variant_unref(message);
226 int Zigbee::zbl_get_endpoint_list(ieee_addr eui64, unsigned char *count,
227 unsigned char list[])
229 GVariant *message = NULL;
230 GVariantBuilder *mac_builder = NULL;
231 GVariant *mac_variant = NULL;
232 GVariantIter *iter = NULL;
233 int error = ZIGBEE_ERROR_NONE;
235 unsigned char endpoint;
238 GLOGD("zbl_get_endpoint_list()");
240 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
241 g_variant_builder_add(mac_builder, "(y)", eui64[7]);
242 g_variant_builder_add(mac_builder, "(y)", eui64[6]);
243 g_variant_builder_add(mac_builder, "(y)", eui64[5]);
244 g_variant_builder_add(mac_builder, "(y)", eui64[4]);
245 g_variant_builder_add(mac_builder, "(y)", eui64[3]);
246 g_variant_builder_add(mac_builder, "(y)", eui64[2]);
247 g_variant_builder_add(mac_builder, "(y)", eui64[1]);
248 g_variant_builder_add(mac_builder, "(y)", eui64[0]);
249 mac_variant = g_variant_builder_end(mac_builder);
250 g_variant_builder_unref(mac_builder);
252 message = invoke_proxy_method(SERVICE_GPROXY, "get_endpoint_list",
253 g_variant_new("(@a(y))", mac_variant),
257 g_variant_get(message, "(ia(y))", &error, &iter);
258 GLOGD("ret = [0x%x]", error);
260 while (g_variant_iter_loop(iter, "(y)", &endpoint))
261 list[i++] = endpoint;
264 g_variant_iter_free(iter);
265 g_variant_unref(message);
271 int Zigbee::zbl_api_get_node_type(ieee_addr eui64)
273 GVariant *message = NULL;
274 GVariantBuilder *mac_builder = NULL;
275 GVariant *mac_variant = NULL;
276 int error = ZIGBEE_ERROR_NONE;
277 unsigned char node_type;
279 GLOGD("zbl_api_get_node_type()");
281 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
282 g_variant_builder_add(mac_builder, "(y)", eui64[7]);
283 g_variant_builder_add(mac_builder, "(y)", eui64[6]);
284 g_variant_builder_add(mac_builder, "(y)", eui64[5]);
285 g_variant_builder_add(mac_builder, "(y)", eui64[4]);
286 g_variant_builder_add(mac_builder, "(y)", eui64[3]);
287 g_variant_builder_add(mac_builder, "(y)", eui64[2]);
288 g_variant_builder_add(mac_builder, "(y)", eui64[1]);
289 g_variant_builder_add(mac_builder, "(y)", eui64[0]);
290 mac_variant = g_variant_builder_end(mac_builder);
291 g_variant_builder_unref(mac_builder);
293 message = invoke_proxy_method(SERVICE_GPROXY, "get_node_type",
294 g_variant_new("(@a(y))", mac_variant),
298 g_variant_get(message, "(iy)", &error, &node_type);
299 GLOGD("ret = [0x%x]", error);
300 g_variant_unref(message);
306 int Zigbee::zbl_get_all_device_info(void)
308 GVariant *message = NULL;
309 GVariantIter *iter = NULL;
310 int error = ZIGBEE_ERROR_NONE;
312 GLOGD("zbl_get_all_device_info()");
314 message = invoke_proxy_method(SERVICE_GPROXY, "get_device_info", NULL, &error);
317 g_variant_get(message, "(ia(qyayyay))", &error, &iter);
318 GLOGD("ret = [0x%x]", error);
319 g_variant_iter_free(iter);
320 g_variant_unref(message);
326 int Zigbee::zbl_coex_start(unsigned char channel)
328 int error = ZIGBEE_ERROR_NONE;
329 GVariant *message = NULL;
331 GLOGD("zbl_coex_start()");
333 message = invoke_proxy_method(SERVICE_GPROXY, "coex_start", g_variant_new("(y)", channel),
337 g_variant_get(message, "(i)", &error);
338 GLOGD("ret = [0x%x]", error);
339 g_variant_unref(message);
345 int Zigbee::zbl_coex_stop(void)
347 int error = ZIGBEE_ERROR_NONE;
348 GVariant *message = NULL;
350 GLOGD("zbl_coex_stop()");
352 message = invoke_proxy_method(SERVICE_GPROXY, "coex_stop", NULL, &error);
355 g_variant_get(message, "(i)", &error);
356 GLOGD("ret = [0x%x]", error);
357 g_variant_unref(message);
363 int Zigbee::zbl_form_network(void)
365 int error = ZIGBEE_ERROR_NONE;
366 GVariant *message = NULL;
368 GLOGD("zbl_form_network()");
370 message = invoke_proxy_method(SERVICE_GPROXY, "form_network", NULL, &error);
373 g_variant_get(message, "(i)", &error);
374 GLOGD("ret = [0x%x]", error);
375 g_variant_unref(message);
381 int Zigbee::zbl_disable_network(void)
383 int error = ZIGBEE_ERROR_NONE;
384 GVariant *message = NULL;
386 GLOGD("zbl_disable_network()");
388 message = invoke_proxy_method(SERVICE_GPROXY, "leave_network", NULL, &error);
391 g_variant_get(message, "(i)", &error);
392 GLOGD("ret = [0x%x]", error);
393 g_variant_unref(message);
399 int Zigbee::zbl_leave_device(ieee_addr addr64, bool remove_children, bool rejoin)
401 int error = ZIGBEE_ERROR_NONE;
402 GVariant *message = NULL;
404 GVariantBuilder *mac_builder = NULL;
405 GVariant* mac_variant = NULL;
406 unsigned char _remove_children = (remove_children) ? 1 : 0;
407 unsigned char _rejoin = (rejoin) ? 1 : 0;
409 GLOGD("zbl_leave_device()");
411 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
412 g_variant_builder_add(mac_builder, "(y)", addr64[7]);
413 g_variant_builder_add(mac_builder, "(y)", addr64[6]);
414 g_variant_builder_add(mac_builder, "(y)", addr64[5]);
415 g_variant_builder_add(mac_builder, "(y)", addr64[4]);
416 g_variant_builder_add(mac_builder, "(y)", addr64[3]);
417 g_variant_builder_add(mac_builder, "(y)", addr64[2]);
418 g_variant_builder_add(mac_builder, "(y)", addr64[1]);
419 g_variant_builder_add(mac_builder, "(y)", addr64[0]);
420 mac_variant = g_variant_builder_end(mac_builder);
421 g_variant_builder_unref(mac_builder);
423 message = invoke_proxy_method(SERVICE_GPROXY, "leave_request",
424 g_variant_new("(@a(y)yy)", mac_variant, _remove_children, _rejoin),
428 g_variant_get(message, "(i)", &error);
429 GLOGD("ret = [0x%x]", error);
430 g_variant_unref(message);
436 int Zigbee::zbl_permit_join(unsigned char duration, bool broadcast)
438 int error = ZIGBEE_ERROR_NONE;
439 GVariant *message = NULL;
441 GLOGD("zbl_permit_join()");
443 message = invoke_proxy_method(SERVICE_GPROXY, "permit_join",
444 g_variant_new("(ib)", duration, broadcast),
448 g_variant_get(message, "(i)", &error);
449 GLOGD("ret = [0x%x]", error);
450 g_variant_unref(message);
456 int Zigbee::zbl_nwk_addr_req(ieee_addr addr64, unsigned char request_type,
457 unsigned char start_idx)
459 GVariantBuilder *mac_builder = NULL;
460 GVariant* mac_variant = NULL;
462 int error = ZIGBEE_ERROR_NONE;
463 GVariant *message = NULL;
465 GLOGD(" zbl_nwk_addr_req()");
467 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
468 g_variant_builder_add(mac_builder, "(y)", addr64[7]);
469 g_variant_builder_add(mac_builder, "(y)", addr64[6]);
470 g_variant_builder_add(mac_builder, "(y)", addr64[5]);
471 g_variant_builder_add(mac_builder, "(y)", addr64[4]);
472 g_variant_builder_add(mac_builder, "(y)", addr64[3]);
473 g_variant_builder_add(mac_builder, "(y)", addr64[2]);
474 g_variant_builder_add(mac_builder, "(y)", addr64[1]);
475 g_variant_builder_add(mac_builder, "(y)", addr64[0]);
476 mac_variant = g_variant_builder_end(mac_builder);
477 g_variant_builder_unref(mac_builder);
479 message = invoke_proxy_method(ZDO_DEV_PROXY, "nwk_addr_req",
480 g_variant_new("(@a(y)yy)", mac_variant, request_type, start_idx),
484 g_variant_get(message, "(i)", &error);
485 GLOGD("ret = [0x%x]", error);
486 g_variant_unref(message);
492 int Zigbee::zbl_ieee_addr_req(nwk_addr addr16)
494 int error = ZIGBEE_ERROR_NONE;
495 GVariant *message = NULL;
497 GLOGD("zbl_ieee_addr_req()");
499 message = invoke_proxy_method(ZDO_DEV_PROXY, "ieee_addr_req",
500 g_variant_new("(q)", addr16), &error);
503 g_variant_get(message, "(i)", &error);
504 GLOGD("ret = [0x%x]", error);
505 g_variant_unref(message);
511 int Zigbee::zbl_active_ep(nwk_addr addr16)
513 int error = ZIGBEE_ERROR_NONE;
514 GVariant *message = NULL;
516 GLOGD("zbl_active_ep()");
518 message = invoke_proxy_method(ZDO_DEV_PROXY, "active_ep_req",
519 g_variant_new("(q)", addr16), &error);
522 g_variant_get(message, "(i)", &error);
523 GLOGD("ret = [0x%x]", error);
524 g_variant_unref(message);
530 int Zigbee::zbl_simple_desc_req(nwk_addr addr16, unsigned char ep)
532 int error = ZIGBEE_ERROR_NONE;
533 GVariant *message = NULL;
535 GLOGD("zbl_simple_desc_req() : [%X]", addr16);
537 message = invoke_proxy_method(ZDO_DEV_PROXY, "simple_desc_req",
538 g_variant_new("(qy)", addr16, ep), &error);
541 g_variant_get(message, "(i)", &error);
542 GLOGD("ret = [0x%x]", error);
543 g_variant_unref(message);
549 int Zigbee::zbl_match_desc_req(nwk_addr addr16,
550 unsigned short profile_id, unsigned char num_in_clusters,
551 unsigned short *in_clusters, unsigned char num_out_clusters,
552 unsigned short *out_clusters)
554 int error = ZIGBEE_ERROR_NONE;
555 GVariant *message = NULL;
558 GVariantBuilder *incl_builder = NULL;
559 GVariant* incl_variant = NULL;
560 GVariantBuilder *outcl_builder = NULL;
561 GVariant* outcl_variant = NULL;
563 GLOGD("zbl_match_desc_req()");
565 incl_builder = g_variant_builder_new(G_VARIANT_TYPE("aq"));
566 for (i = 0; i < num_in_clusters; i++)
567 g_variant_builder_add(incl_builder, "q", in_clusters[i]);
569 outcl_builder = g_variant_builder_new(G_VARIANT_TYPE("aq"));
570 for (i = 0; i < num_out_clusters; i++)
571 g_variant_builder_add(outcl_builder, "q", out_clusters[i]);
573 incl_variant = g_variant_builder_end(incl_builder);
574 outcl_variant = g_variant_builder_end(outcl_builder);
575 g_variant_builder_unref(incl_builder);
576 g_variant_builder_unref(outcl_builder);
578 message = invoke_proxy_method(ZDO_DEV_PROXY, "matched_descriptor_req",
579 g_variant_new("(qqy@aqy@aq)", addr16, profile_id, num_in_clusters,
580 incl_variant, num_out_clusters, outcl_variant),
584 g_variant_get(message, "(i)", &error);
585 GLOGD("ret = [0x%x]", error);
586 g_variant_unref(message);
592 int Zigbee::zbl_node_desc_req(nwk_addr addr16)
594 int error = ZIGBEE_ERROR_NONE;
595 GVariant *message = NULL;
597 GLOGD("zbl_node_desc_req()");
599 message = invoke_proxy_method(ZDO_DEV_PROXY, "node_desc_req",
600 g_variant_new("(q)", addr16),
604 g_variant_get(message, "(i)", &error);
605 GLOGD("ret = [0x%x]", error);
606 g_variant_unref(message);
612 int Zigbee::zbl_power_desc_req(nwk_addr addr16)
614 int error = ZIGBEE_ERROR_NONE;
615 GVariant *message = NULL;
617 GLOGD("zbl_power_desc_req()");
619 message = invoke_proxy_method(ZDO_DEV_PROXY, "power_desc_req",
620 g_variant_new("(q)", addr16),
624 g_variant_get(message, "(i)", &error);
625 GLOGD("ret = [0x%x]", error);
626 g_variant_unref(message);
632 int Zigbee::zbl_complex_desc_req(nwk_addr addr16)
634 int error = ZIGBEE_ERROR_NONE;
635 GVariant *message = NULL;
637 GLOGD("zbl_complex_desc_req()");
639 message = invoke_proxy_method(ZDO_DEV_PROXY, "complex_desc_req",
640 g_variant_new("(q)", addr16),
644 g_variant_get(message, "(i)", &error);
645 GLOGD("ret = [0x%x]", error);
646 g_variant_unref(message);
652 int Zigbee::zbl_user_desc_req(nwk_addr addr16)
654 int error = ZIGBEE_ERROR_NONE;
655 GVariant *message = NULL;
657 GLOGD("zbl_user_desc_req()");
659 message = invoke_proxy_method(ZDO_DEV_PROXY, "user_desc_req",
660 g_variant_new("(q)", addr16),
664 g_variant_get(message, "(i)", &error);
665 GLOGD("ret = [0x%x]", error);
666 g_variant_unref(message);
672 int Zigbee::zbl_user_desc_set(nwk_addr addr16, unsigned char len,
673 unsigned char *user_desc)
675 int error = ZIGBEE_ERROR_NONE;
676 GVariant *message = NULL;
678 unsigned char j = 0x00;
679 GVariantBuilder *user_desc_builder = NULL;
680 GVariant *user_desc_variant = NULL;
682 GLOGD("zbl_user_desc_set()");
684 user_desc_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
685 for (j = 0; j < len; j++)
686 g_variant_builder_add(user_desc_builder, "(y)", user_desc[j]);
688 user_desc_variant = g_variant_builder_end(user_desc_builder);
689 g_variant_builder_unref(user_desc_builder);
691 message = invoke_proxy_method(ZDO_DEV_PROXY, "user_desc_set_req",
692 g_variant_new("(qy@a(y))", addr16, len, user_desc_variant),
696 g_variant_get(message, "(i)", &error);
697 GLOGD("ret = [0x%x]", error);
698 g_variant_unref(message);
704 int Zigbee::zbl_device_annce(nwk_addr addr16, ieee_addr addr64,
705 unsigned char capability)
707 int error = ZIGBEE_ERROR_NONE;
708 GVariant *message = NULL;
710 GVariantBuilder *mac_builder = NULL;
711 GVariant* mac_variant = NULL;
713 GLOGD("zbl_device_annce()");
715 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
716 g_variant_builder_add(mac_builder, "(y)", addr64[7]);
717 g_variant_builder_add(mac_builder, "(y)", addr64[6]);
718 g_variant_builder_add(mac_builder, "(y)", addr64[5]);
719 g_variant_builder_add(mac_builder, "(y)", addr64[4]);
720 g_variant_builder_add(mac_builder, "(y)", addr64[3]);
721 g_variant_builder_add(mac_builder, "(y)", addr64[2]);
722 g_variant_builder_add(mac_builder, "(y)", addr64[1]);
723 g_variant_builder_add(mac_builder, "(y)", addr64[0]);
724 mac_variant = g_variant_builder_end(mac_builder);
725 g_variant_builder_unref(mac_builder);
727 message = invoke_proxy_method(ZDO_DEV_PROXY, "device_announce",
728 g_variant_new("(q@a(y)y)", addr16, mac_variant, capability),
732 g_variant_get(message, "(i)", &error);
733 GLOGD("ret = [0x%x]", error);
734 g_variant_unref(message);
740 int Zigbee::zbl_bind_req(nwk_addr dst_addr16, ieee_addr src_addr64,
741 unsigned char src_ep, unsigned short cluster_id, ieee_addr dst_addr64,
742 unsigned char type, nwk_addr group_addr, unsigned char dst_ep)
744 int error = ZIGBEE_ERROR_NONE;
745 GVariant *message = NULL;
748 GVariantBuilder *src_addr64_builder = NULL;
749 GVariant* src_addr64_variant = NULL;
750 GVariantBuilder *dst_addr64_builder = NULL;
751 GVariant* dst_addr64_variant = NULL;
753 GLOGD("zbl_bind_req()");
755 src_addr64_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
758 for (i = sizeof(ieee_addr) - 1 ; i >= 0; i--)
759 g_variant_builder_add(src_addr64_builder, "(y)", src_addr64[i]);
761 src_addr64_variant = g_variant_builder_end(src_addr64_builder);
762 g_variant_builder_unref(src_addr64_builder);
764 dst_addr64_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
766 for (i = sizeof(ieee_addr) - 1 ; i >= 0; i--)
767 g_variant_builder_add(dst_addr64_builder, "(y)", dst_addr64[i]);
769 dst_addr64_variant = g_variant_builder_end(dst_addr64_builder);
770 g_variant_builder_unref(dst_addr64_builder);
772 message = invoke_proxy_method(ZDO_BIND_PROXY, "bind_req",
773 g_variant_new("(q@a(y)yq@a(y)yqy)", dst_addr16, src_addr64_variant, src_ep,
774 cluster_id, dst_addr64_variant, type, group_addr, dst_ep),
778 g_variant_get(message, "(i)", &error);
779 GLOGD("ret = [0x%x]", error);
780 g_variant_unref(message);
786 int Zigbee::zbl_unbind_req(nwk_addr dst_addr16,
787 ieee_addr src_addr64, unsigned char src_ep, unsigned short cluster_id,
788 ieee_addr dst_addr64, unsigned char type, nwk_addr group_addr,
789 unsigned char dst_ep)
792 int error = ZIGBEE_ERROR_NONE;
793 GVariant *message = NULL;
795 GVariantBuilder *src_addr64_builder = NULL;
796 GVariant* src_addr64_variant = NULL;
797 GVariantBuilder *dst_addr64_builder = NULL;
798 GVariant* dst_addr64_variant = NULL;
800 GLOGD("zbl_zdo_unbind_req()");
802 src_addr64_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
804 for (i = sizeof(ieee_addr) - 1 ; i >= 0; i--)
805 g_variant_builder_add(src_addr64_builder, "(y)", src_addr64[i]);
808 src_addr64_variant = g_variant_builder_end(src_addr64_builder);
809 g_variant_builder_unref(src_addr64_builder);
811 dst_addr64_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
813 for (i = sizeof(ieee_addr) - 1 ; i >= 0; i--)
814 g_variant_builder_add(dst_addr64_builder, "(y)", dst_addr64[i]);
817 dst_addr64_variant = g_variant_builder_end(dst_addr64_builder);
818 g_variant_builder_unref(dst_addr64_builder);
820 message = invoke_proxy_method(ZDO_BIND_PROXY, "unbind_req",
821 g_variant_new("(q@a(y)yq@a(y)yqy)",
822 dst_addr16, src_addr64_variant, src_ep,
823 cluster_id, dst_addr64_variant, type, group_addr, dst_ep),
827 g_variant_get(message, "(i)", &error);
828 GLOGD("ret = [0x%x]", error);
829 g_variant_unref(message);
835 int Zigbee::zbl_mgmt_nwk_disc_req(nwk_addr addr16, unsigned int scan_channels,
836 unsigned char scan_duration, unsigned char scan_count, unsigned char start_idx)
838 int error = ZIGBEE_ERROR_NONE;
839 GVariant *message = NULL;
841 GLOGD("zbl_mgmt_nwk_disc_req()");
843 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_nwk_disc_req",
844 g_variant_new("(quyqy)",
853 g_variant_get(message, "(i)", &error);
854 GLOGD("ret = [0x%x]", error);
855 g_variant_unref(message);
861 int Zigbee::zbl_mgmt_nwk_update_req(unsigned int scan_channels, unsigned char scan_duration,
862 unsigned char scan_count, unsigned char nwk_update_id, nwk_addr nwk_manager_addr)
864 int error = ZIGBEE_ERROR_NONE;
865 GVariant *message = NULL;
867 GLOGD("zbl_mgmt_nwk_update_req()");
869 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_nwk_update_req",
870 g_variant_new("(quyyy)", nwk_manager_addr,
871 scan_channels, scan_duration,
872 scan_count, nwk_update_id),
876 g_variant_get(message, "(i)", &error);
877 GLOGD("ret = [0x%x]", error);
878 g_variant_unref(message);
884 int Zigbee::zbl_mgmt_lqi_req(nwk_addr addr16, unsigned char start_idx)
886 int error = ZIGBEE_ERROR_NONE;
887 GVariant *message = NULL;
889 GLOGD("zbl_mgmt_lqi_req()");
891 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_lqi_req",
892 g_variant_new("(qy)", addr16, start_idx),
896 g_variant_get(message, "(i)", &error);
897 GLOGD("ret = [0x%x]", error);
898 g_variant_unref(message);
904 int Zigbee::zbl_mgmt_rtg_req(nwk_addr addr16, unsigned char start_idx)
906 int error = ZIGBEE_ERROR_NONE;
907 GVariant *message = NULL;
909 GLOGD("zbl_mgmt_rtg_req()");
911 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_rtg_req",
912 g_variant_new("(qy)", addr16, start_idx),
916 g_variant_get(message, "(i)", &error);
917 GLOGD("ret = [0x%x]", error);
918 g_variant_unref(message);
924 int Zigbee::zbl_mgmt_bind_req(nwk_addr addr16, unsigned char start_idx)
926 int error = ZIGBEE_ERROR_NONE;
927 GVariant *message = NULL;
929 GLOGD("zbl_mgmt_bind_req()");
931 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_bind_req",
932 g_variant_new("(qy)", addr16, start_idx),
936 g_variant_get(message, "(i)", &error);
937 GLOGD("ret = [0x%x]", error);
938 g_variant_unref(message);
944 int Zigbee::zbl_mgmt_leave_device(ieee_addr addr64, unsigned char remove_children,
947 int error = ZIGBEE_ERROR_NONE;
948 GVariant *message = NULL;
950 GVariantBuilder *mac_builder = NULL;
951 GVariant* mac_variant = NULL;
953 mac_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
954 g_variant_builder_add(mac_builder, "(y)", addr64[7]);
955 g_variant_builder_add(mac_builder, "(y)", addr64[6]);
956 g_variant_builder_add(mac_builder, "(y)", addr64[5]);
957 g_variant_builder_add(mac_builder, "(y)", addr64[4]);
958 g_variant_builder_add(mac_builder, "(y)", addr64[3]);
959 g_variant_builder_add(mac_builder, "(y)", addr64[2]);
960 g_variant_builder_add(mac_builder, "(y)", addr64[1]);
961 g_variant_builder_add(mac_builder, "(y)", addr64[0]);
962 mac_variant = g_variant_builder_end(mac_builder);
963 g_variant_builder_unref(mac_builder);
965 GLOGD("zbl_mgmt_leave_device()");
967 message = invoke_proxy_method(SERVICE_GPROXY, "leave_request",
968 g_variant_new("(@a(y)yy)", mac_variant, remove_children, rejoin),
972 g_variant_get(message, "(i)", &error);
973 GLOGD("ret = [0x%x]", error);
974 g_variant_unref(message);
980 int Zigbee::zbl_mgmt_permit_joining_req(nwk_addr addr16, unsigned char duration,
981 unsigned char tc_significance)
983 int error = ZIGBEE_ERROR_NONE;
984 GVariant *message = NULL;
986 GLOGD("zbl_mgmt_permit_joining_req()");
988 message = invoke_proxy_method(ZDO_DEV_PROXY, "mgmt_permit_join_req",
989 g_variant_new("(qyy)", addr16, duration, tc_significance),
993 g_variant_get(message, "(i)", &error);
994 GLOGD("ret = [0x%x]", error);
995 g_variant_unref(message);
1001 int Zigbee::zbl_aps_send(nwk_addr addr16, unsigned char aps_frame_ctl, unsigned char src_ep,
1002 unsigned char dst_ep, unsigned short cluster_id, unsigned short profile_id,
1003 unsigned char zcl_frame_ctl, unsigned short mfg_code, unsigned char cmd_id,
1004 unsigned short payload_len, unsigned char *payload)
1007 int error = ZIGBEE_ERROR_NONE;
1008 GVariant *message = NULL;
1010 GVariantBuilder *payload_builder = NULL;
1011 GVariant *payload_variant = NULL;
1013 payload_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1014 if (payload_len > 0) {
1015 for (i = payload_len - 1; i >= 0 ; i--)
1016 g_variant_builder_add(payload_builder, "(y)", payload[i]);
1018 payload_variant = g_variant_builder_end(payload_builder);
1019 g_variant_builder_unref(payload_builder);
1021 GLOGD("zbl_aps_send()");
1023 message = invoke_proxy_method(CUSTOM_GPROXY, "aps_send",
1024 g_variant_new("(qyyyqqyqyq@a(y))", addr16,
1025 aps_frame_ctl, src_ep, dst_ep, cluster_id,
1026 profile_id, zcl_frame_ctl, mfg_code,
1027 cmd_id, payload_len, payload_variant),
1031 g_variant_get(message, "(i)", &error);
1032 GLOGD("ret = [0x%x]", error);
1033 g_variant_unref(message);
1039 int Zigbee::zbl_zcl_send(nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
1040 unsigned short cluster_id, unsigned char zcl_frame_ctl, unsigned char cmd,
1041 unsigned short payload_len, unsigned char *payload)
1045 int error = ZIGBEE_ERROR_NONE;
1046 GVariant *message = NULL;
1048 GVariantBuilder *payload_builder = NULL;
1049 GVariant *payload_variant = NULL;
1051 GLOGD("zbl_zcl_send()");
1053 payload_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1054 if (payload_len > 0) {
1055 for (i = payload_len - 1; i >= 0 ; i--)
1056 g_variant_builder_add(payload_builder, "(y)", payload[i]);
1058 payload_variant = g_variant_builder_end(payload_builder);
1059 g_variant_builder_unref(payload_builder);
1061 message = invoke_proxy_method(CUSTOM_GPROXY, "zcl_send",
1062 g_variant_new("(qyyqyyq@a(y))", addr16, src_ep, dst_ep, cluster_id, zcl_frame_ctl,
1063 cmd, payload_len, payload_variant), &error);
1066 g_variant_get(message, "(i)", &error);
1067 GLOGD("ret = [0x%x]", error);
1068 g_variant_unref(message);
1074 int Zigbee::zbl_send_to_local(unsigned short length, unsigned char *data)
1078 int error = ZIGBEE_ERROR_NONE;
1079 GVariant *message = NULL;
1081 GLOGD("zbl_send_to_local()");
1083 GVariantBuilder *payload_builder = NULL;
1084 GVariant *payload_variant = NULL;
1086 payload_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1088 for (i = length - 1; i >= 0 ; i--)
1089 g_variant_builder_add(payload_builder, "(y)", data[i]);
1091 payload_variant = g_variant_builder_end(payload_builder);
1092 g_variant_builder_unref(payload_builder);
1094 message = invoke_proxy_method(CUSTOM_GPROXY, "send_to_local",
1095 g_variant_new("(q@a(y))", length, payload_variant),
1099 g_variant_get(message, "(i)", &error);
1100 GLOGD("ret = [0x%x]", error);
1101 g_variant_unref(message);
1107 int Zigbee::zbl_read_attr_req(unsigned short addr16, unsigned char dest_ep,
1108 unsigned char zcl_frame_ctl, unsigned short cluster_id, unsigned short *attribute_ids,
1109 int attribute_ids_len)
1111 int error = ZIGBEE_ERROR_NONE;
1112 GVariant *message = NULL;
1116 GVariant *attr_variant = NULL;
1117 GVariantBuilder *attr_builder = NULL;
1119 GLOGD("zbl_read_attr_req()");
1121 t = (unsigned char *)attribute_ids;
1122 attr_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1123 for (i = 0; i < attribute_ids_len*sizeof(unsigned short); i++)
1124 g_variant_builder_add(attr_builder, "(y)", t[i]);
1125 attr_variant = g_variant_builder_end(attr_builder);
1126 g_variant_builder_unref(attr_builder);
1128 message = invoke_proxy_method(ZCL_GLOBAL_PROXY, "read_attributes_req",
1129 g_variant_new("(@a(y)iqqyy)", attr_variant, attribute_ids_len,
1130 addr16, cluster_id, zcl_frame_ctl, dest_ep), &error);
1133 g_variant_get(message, "(i)", &error);
1134 GLOGD("ret = [0x%x]", error);
1135 g_variant_unref(message);
1141 int Zigbee::zbl_discover_attr_req(unsigned short addr16, unsigned char src_ep,
1142 unsigned char dest_ep, unsigned char zcl_frame_ctl, unsigned short cluster_id,
1143 unsigned short start_id, unsigned char max_attribute_ids)
1145 int error = ZIGBEE_ERROR_NONE;
1146 GVariant *message = NULL;
1148 GLOGD("zbl_discover_attr_req()");
1150 message = invoke_proxy_method(ZCL_GLOBAL_PROXY, "discover_attributes",
1151 g_variant_new("(qyyqqy)", addr16, dest_ep, zcl_frame_ctl,
1152 cluster_id, start_id, max_attribute_ids),
1156 g_variant_get(message, "(i)", &error);
1157 GLOGD("ret = [0x%x]", error);
1158 g_variant_unref(message);
1164 int Zigbee::zbl_discover_cmds_gen(nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
1165 unsigned char zcl_frame_ctl, unsigned short cluster_id, unsigned char start_command_id,
1166 unsigned char max_command_ids)
1168 int error = ZIGBEE_ERROR_NONE;
1169 GVariant *message = NULL;
1171 GLOGD("zbl_discover_attr_gen()");
1173 message = invoke_proxy_method(ZCL_GLOBAL_PROXY, "discover_commands_generated",
1174 g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl,
1175 cluster_id, start_command_id, max_command_ids),
1179 g_variant_get(message, "(i)", &error);
1180 GLOGD("ret = [0x%x]", error);
1181 g_variant_unref(message);
1187 int Zigbee::zbl_discover_cmds_recv(nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
1188 unsigned char zcl_frame_ctl, unsigned short cluster_id, unsigned char start_command_id,
1189 unsigned char max_command_ids)
1191 int error = ZIGBEE_ERROR_NONE;
1192 GVariant *message = NULL;
1194 GLOGD("zbl_discover_cmds_recv()");
1196 message = invoke_proxy_method(ZCL_GLOBAL_PROXY, "discover_commands_received",
1197 g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl,
1198 cluster_id, start_command_id, max_command_ids),
1202 g_variant_get(message, "(i)", &error);
1203 GLOGD("ret = [0x%x]", error);
1204 g_variant_unref(message);
1210 int Zigbee::zbl_discover_attr_ext(nwk_addr addr16, unsigned char src_ep,
1211 unsigned char dst_ep, unsigned char zcl_frame_ctl, unsigned short cluster_id,
1212 unsigned short start_id, unsigned char max_attribute_ids)
1214 int error = ZIGBEE_ERROR_NONE;
1215 GVariant *message = NULL;
1217 GLOGD("zbl_discover_attr_ext()");
1219 message = invoke_proxy_method(ZCL_GLOBAL_PROXY, "discover_attributes_extended",
1220 g_variant_new("(qyyqqy)", addr16, dst_ep, zcl_frame_ctl, cluster_id, start_id,
1225 g_variant_get(message, "(i)", &error);
1226 GLOGD("ret = [0x%x]", error);
1227 g_variant_unref(message);
1233 int Zigbee::zbl_reset_alarm(nwk_addr addr16, unsigned char ep, unsigned char alarm_code,
1234 unsigned short cluster_id)
1236 int error = ZIGBEE_ERROR_NONE;
1237 GVariant *message = NULL;
1239 GLOGD("zbl_reset_alarm()");
1241 message = invoke_proxy_method(ALARM_GPROXY, "reset_alarm",
1242 g_variant_new("(qyyq)", addr16, ep, alarm_code, cluster_id),
1246 g_variant_get(message, "(i)", &error);
1247 GLOGD("ret = [0x%x]", error);
1248 g_variant_unref(message);
1254 int Zigbee::zbl_get_alarm(nwk_addr addr16, unsigned char ep)
1256 int error = ZIGBEE_ERROR_NONE;
1257 GVariant *message = NULL;
1259 GLOGD("zbl_get_alarm()");
1261 message = invoke_proxy_method(ALARM_GPROXY, "get_alarm",
1262 g_variant_new("(qy)", addr16, ep),
1266 g_variant_get(message, "(i)", &error);
1267 GLOGD("ret = [0x%x]", error);
1268 g_variant_unref(message);
1274 int Zigbee::zbl_reset_all_alarm_log(nwk_addr addr16, unsigned char ep)
1276 int error = ZIGBEE_ERROR_NONE;
1277 GVariant *message = NULL;
1279 message = invoke_proxy_method(ALARM_GPROXY, "reset_alarm_log",
1280 g_variant_new("(qy)", addr16, ep), &error);
1283 g_variant_get(message, "(i)", &error);
1284 GLOGD("ret = [0x%x]", error);
1285 g_variant_unref(message);
1291 int Zigbee::zbl_ccontrol_move_to_hue(nwk_addr addr16, unsigned char ep,
1292 unsigned char hue, unsigned char direction,
1293 unsigned short transition_time)
1295 int error = ZIGBEE_ERROR_NONE;
1296 GVariant *message = NULL;
1298 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_to_hue",
1299 g_variant_new("(qyyyq)", addr16, ep, hue, direction, transition_time),
1303 g_variant_get(message, "(i)", &error);
1304 GLOGD("ret = [0x%x]", error);
1305 g_variant_unref(message);
1311 int Zigbee::zbl_ccontrol_move_hue(nwk_addr addr16, unsigned char ep,
1312 unsigned char move_mode, unsigned char rate)
1314 int error = ZIGBEE_ERROR_NONE;
1315 GVariant *message = NULL;
1317 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_hue",
1318 g_variant_new("(qyyy)", addr16, ep, move_mode, rate),
1322 g_variant_get(message, "(i)", &error);
1323 GLOGD("ret = [0x%x]", error);
1324 g_variant_unref(message);
1330 int Zigbee::zbl_ccontrol_step_hue(nwk_addr addr16, unsigned char ep,
1331 unsigned char step_mode, unsigned char step_size,
1332 unsigned char transition_time)
1334 int error = ZIGBEE_ERROR_NONE;
1335 GVariant *message = NULL;
1337 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "step_hue",
1338 g_variant_new("(qyyyy)", addr16, ep, step_mode, step_size, transition_time),
1342 g_variant_get(message, "(i)", &error);
1343 GLOGD("ret = [0x%x]", error);
1344 g_variant_unref(message);
1350 int Zigbee::zbl_ccontrol_move_to_saturation(nwk_addr addr16, unsigned char ep,
1351 unsigned char saturation, unsigned short transition_time)
1353 int error = ZIGBEE_ERROR_NONE;
1354 GVariant *message = NULL;
1356 GLOGD("zbl_ccontrol_move_to_saturation()");
1358 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_to_saturation",
1359 g_variant_new("(qyyq)", addr16, ep, saturation, transition_time),
1363 g_variant_get(message, "(i)", &error);
1364 GLOGD("ret = [0x%x]", error);
1365 g_variant_unref(message);
1371 int Zigbee::zbl_ccontrol_move_saturation(nwk_addr addr16, unsigned char ep,
1372 unsigned char move_mode, unsigned char rate)
1374 int error = ZIGBEE_ERROR_NONE;
1375 GVariant *message = NULL;
1377 GLOGD("zbl_ccontrol_move_saturation()");
1379 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_saturation",
1380 g_variant_new("(qyyy)", addr16, ep, move_mode, rate),
1384 g_variant_get(message, "(i)", &error);
1385 GLOGD("ret = [0x%x]", error);
1386 g_variant_unref(message);
1392 int Zigbee::zbl_ccontrol_step_saturation(nwk_addr addr16, unsigned char ep,
1393 unsigned char step_mode, unsigned char step_size,
1394 unsigned char transition_time)
1396 int error = ZIGBEE_ERROR_NONE;
1397 GVariant *message = NULL;
1399 GLOGD("zbl_ccontrol_step_saturation()");
1401 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "step_saturation",
1402 g_variant_new("(qyyyy)", addr16, ep, step_mode, step_size, transition_time),
1406 g_variant_get(message, "(i)", &error);
1407 GLOGD("ret = [0x%x]", error);
1408 g_variant_unref(message);
1414 int Zigbee::zbl_ccontrol_move_to_hue_and_saturation(nwk_addr addr16, unsigned char ep,
1415 unsigned char hue, unsigned char saturation,
1416 unsigned short transition_time)
1418 int error = ZIGBEE_ERROR_NONE;
1419 GVariant *message = NULL;
1421 GLOGD("zbl_ccontrol_move_to_hue_and_saturation()");
1423 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_to_hue_and_saturation",
1424 g_variant_new("(qyyyq)", addr16, ep, hue, saturation, transition_time),
1428 g_variant_get(message, "(i)", &error);
1429 GLOGD("ret = [0x%x]", error);
1430 g_variant_unref(message);
1436 int Zigbee::zbl_ccontrol_move_to_color(nwk_addr addr16, unsigned char ep,
1437 unsigned short color_x, unsigned short color_y,
1438 unsigned short transition_time)
1440 int error = ZIGBEE_ERROR_NONE;
1441 GVariant *message = NULL;
1443 GLOGD("zbl_ccontrol_move_to_color()");
1445 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_to_color",
1446 g_variant_new("(qyqqq)", addr16, ep, color_x, color_y, transition_time),
1450 g_variant_get(message, "(i)", &error);
1451 GLOGD("ret = [0x%x]", error);
1452 g_variant_unref(message);
1458 int Zigbee::zbl_ccontrol_move_color(nwk_addr addr16, unsigned char ep,
1459 unsigned short rate_x, unsigned short rate_y)
1461 int error = ZIGBEE_ERROR_NONE;
1462 GVariant *message = NULL;
1464 GLOGD("zbl_ccontrol_move_color()");
1466 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_color",
1467 g_variant_new("(qyqq)", addr16, ep, rate_x, rate_y),
1471 g_variant_get(message, "(i)", &error);
1472 GLOGD("ret = [0x%x]", error);
1473 g_variant_unref(message);
1479 int Zigbee::zbl_ccontrol_step_color(nwk_addr addr16, unsigned char ep,
1480 unsigned short step_x, unsigned short step_y,
1481 unsigned short transition_time)
1483 int error = ZIGBEE_ERROR_NONE;
1484 GVariant *message = NULL;
1486 GLOGD("zbl_ccontrol_step_color()");
1488 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "step_color",
1489 g_variant_new("(qyqqq)", addr16, ep, step_x, step_y, transition_time),
1493 g_variant_get(message, "(i)", &error);
1494 GLOGD("ret = [0x%x]", error);
1495 g_variant_unref(message);
1501 int Zigbee::zbl_ccontrol_move_to_color_temperature(nwk_addr addr16, unsigned char ep,
1502 unsigned short color_temperature,
1503 unsigned short transition_time)
1505 int error = ZIGBEE_ERROR_NONE;
1506 GVariant *message = NULL;
1508 GLOGD("zbl_ccontrol_move_to_color_temperature()");
1510 message = invoke_proxy_method(ZCL_COLOR_CONTROL_PROXY, "move_color_temperature",
1511 g_variant_new("(qyqq)", addr16, ep, color_temperature, transition_time),
1515 g_variant_get(message, "(i)", &error);
1516 GLOGD("ret = [0x%x]", error);
1517 g_variant_unref(message);
1523 int Zigbee::zbl_reset_factory_default(nwk_addr addr16, unsigned char ep)
1525 int error = ZIGBEE_ERROR_NONE;
1526 GVariant *message = NULL;
1528 GLOGD("zbl_reset_factory_default()");
1530 message = invoke_proxy_method(ZCL_BASIC_PROXY, "reset_factory_default",
1531 g_variant_new("(qy)", addr16, ep), &error);
1534 g_variant_get(message, "(i)", &error);
1535 GLOGD("ret = [0x%x]", error);
1536 g_variant_unref(message);
1542 int Zigbee::zbl_identify(nwk_addr addr16, unsigned char dst_ep, unsigned short identify_time)
1544 int error = ZIGBEE_ERROR_NONE;
1545 GVariant *message = NULL;
1547 GLOGD("zbl_identify()");
1549 message = invoke_proxy_method(ZCL_IDENTIFY_PROXY, "identify",
1550 g_variant_new("(qyq)", addr16, dst_ep, identify_time),
1554 g_variant_get(message, "(i)", &error);
1555 GLOGD("ret = [0x%x]", error);
1556 g_variant_unref(message);
1562 int Zigbee::zbl_identify_query(nwk_addr addr16, unsigned char dst_ep)
1564 int error = ZIGBEE_ERROR_NONE;
1565 GVariant *message = NULL;
1567 GLOGD("zbl_identify_query()");
1569 message = invoke_proxy_method(ZCL_IDENTIFY_PROXY, "query",
1570 g_variant_new("(qy)", addr16, dst_ep), &error);
1573 g_variant_get(message, "(i)", &error);
1574 GLOGD("ret = [0x%x]", error);
1575 g_variant_unref(message);
1581 int Zigbee::zbl_add_group(nwk_addr addr16, unsigned char ep, unsigned short group_id,
1582 const char *group_name)
1584 int error = ZIGBEE_ERROR_NONE;
1585 GVariant *message = NULL;
1588 GVariant *groupname_variant = NULL;
1589 GVariantBuilder *groupname_builder = NULL;
1591 GLOGD("zbl_add_group()");
1593 groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1594 while (group_name[j] != '\0') {
1595 g_variant_builder_add(groupname_builder, "(y)", (group_name[j]));
1598 groupname_variant = g_variant_builder_end(groupname_builder);
1599 g_variant_builder_unref(groupname_builder);
1601 message = invoke_proxy_method(ZCL_GROUP_PROXY, "add_group",
1602 g_variant_new("(qyq@a(y))", addr16, ep, group_id, groupname_variant),
1606 g_variant_get(message, "(i)", &error);
1607 GLOGD("ret = [0x%x]", error);
1608 g_variant_unref(message);
1614 int Zigbee::zbl_view_group(nwk_addr addr16, unsigned char ep, unsigned short group_id)
1616 int error = ZIGBEE_ERROR_NONE;
1617 GVariant *message = NULL;
1619 GLOGD("zbl_view_group()");
1621 message = invoke_proxy_method(ZCL_GROUP_PROXY, "view_group",
1622 g_variant_new("(qyq)", addr16, ep, group_id), &error);
1625 g_variant_get(message, "(i)", &error);
1626 GLOGD("ret = [0x%x]", error);
1627 g_variant_unref(message);
1633 int Zigbee::zbl_group_get_group_membership(nwk_addr addr16, unsigned char ep,
1634 unsigned char group_count, unsigned short *group_list)
1636 int error = ZIGBEE_ERROR_NONE;
1637 GVariant *message = NULL;
1640 GVariant *grouplist_variant = NULL;
1641 GVariantBuilder *grouplist_builder = NULL;
1643 GLOGD("zbl_group_get_group_membership()");
1645 grouplist_builder = g_variant_builder_new(G_VARIANT_TYPE("aq"));
1646 while (j < group_count) {
1647 g_variant_builder_add(grouplist_builder, "q", group_list[j]);
1650 grouplist_variant = g_variant_builder_end(grouplist_builder);
1651 g_variant_builder_unref(grouplist_builder);
1653 message = invoke_proxy_method(ZCL_GROUP_PROXY, "get_group_membership",
1654 g_variant_new("(qyy@aq)", addr16, ep, group_count, grouplist_variant),
1658 g_variant_get(message, "(i)", &error);
1659 GLOGD("ret = [0x%x]", error);
1660 g_variant_unref(message);
1666 int Zigbee::zbl_remove_group(nwk_addr addr16, unsigned char ep, unsigned short group_id)
1668 int error = ZIGBEE_ERROR_NONE;
1669 GVariant *message = NULL;
1671 GLOGD("zbl_group_remove_group()");
1673 message = invoke_proxy_method(ZCL_GROUP_PROXY, "remove_group", g_variant_new("(qyq)",
1674 addr16, ep, group_id), &error);
1677 g_variant_get(message, "(i)", &error);
1678 GLOGD("ret = [0x%x]", error);
1679 g_variant_unref(message);
1685 int Zigbee::zbl_remove_all_group(nwk_addr addr16, unsigned char ep)
1687 int error = ZIGBEE_ERROR_NONE;
1688 GVariant *message = NULL;
1690 GLOGD("zbl_group_remove_all_group()");
1692 message = invoke_proxy_method(ZCL_GROUP_PROXY, "remove_all_group",
1693 g_variant_new("(qy)", addr16, ep), &error);
1696 g_variant_get(message, "(i)", &error);
1697 GLOGD("ret = [0x%x]", error);
1698 g_variant_unref(message);
1704 int Zigbee::zbl_add_group_if_identifying(nwk_addr addr16, unsigned char ep,
1705 unsigned short group_id, const char *group_name)
1707 int error = ZIGBEE_ERROR_NONE;
1708 GVariant *message = NULL;
1710 GLOGD("zbl_add_group_if_identifying()");
1713 GVariant *groupname_variant = NULL;
1714 GVariantBuilder *groupname_builder = NULL;
1716 groupname_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
1717 while (group_name[j] != '\0') {
1718 g_variant_builder_add(groupname_builder, "(y)", group_name[j]);
1721 groupname_variant = g_variant_builder_end(groupname_builder);
1722 g_variant_builder_unref(groupname_builder);
1724 message = invoke_proxy_method(ZCL_GROUP_PROXY, "add_group_if_identifying",
1725 g_variant_new("(qyq@a(y))", addr16, ep, group_id, groupname_variant),
1729 g_variant_get(message, "(i)", &error);
1730 GLOGD("ret = [0x%x]", error);
1731 g_variant_unref(message);
1737 int Zigbee::zbl_level_control_move_to_level(nwk_addr addr16, unsigned char ep,
1738 unsigned char level, unsigned short transition_time)
1740 int error = ZIGBEE_ERROR_NONE;
1741 GVariant *message = NULL;
1743 GLOGD("zbl_level_control_move_to_level()");
1745 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "move_to_level",
1746 g_variant_new("(qyyq)", addr16, ep, level, transition_time),
1750 g_variant_get(message, "(i)", &error);
1751 GLOGD("ret = [0x%x]", error);
1752 g_variant_unref(message);
1758 int Zigbee::zbl_level_control_move(nwk_addr addr16, unsigned char ep,
1759 unsigned char move_mode, unsigned char rate)
1761 int error = ZIGBEE_ERROR_NONE;
1762 GVariant *message = NULL;
1764 GLOGD("zbl_level_control_move()");
1766 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "move",
1767 g_variant_new("(qyyy)", addr16, ep, move_mode, rate),
1771 g_variant_get(message, "(i)", &error);
1772 GLOGD("ret = [0x%x]", error);
1773 g_variant_unref(message);
1779 int Zigbee::zbl_level_control_step(nwk_addr addr16, unsigned char ep,
1780 unsigned char step_mode, unsigned char step_size,
1781 unsigned short transition_time)
1783 int error = ZIGBEE_ERROR_NONE;
1784 GVariant *message = NULL;
1786 GLOGD("zbl_level_control_step()");
1788 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "step",
1789 g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time),
1793 g_variant_get(message, "(i)", &error);
1794 GLOGD("ret = [0x%x]", error);
1795 g_variant_unref(message);
1801 int Zigbee::zbl_level_control_stop(nwk_addr addr16, unsigned char ep)
1803 int error = ZIGBEE_ERROR_NONE;
1804 GVariant *message = NULL;
1806 GLOGD("zbl_level_control_stop()");
1808 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "stop",
1809 g_variant_new("(qy)", addr16, ep), &error);
1812 g_variant_get(message, "(i)", &error);
1813 GLOGD("ret = [0x%x]", error);
1814 g_variant_unref(message);
1820 int Zigbee::zbl_level_control_move_to_level_with_on_off(nwk_addr addr16,
1821 unsigned char ep, unsigned char level, unsigned short transition_time)
1823 int error = ZIGBEE_ERROR_NONE;
1824 GVariant *message = NULL;
1826 GLOGD("zbl_level_control_move_to_level_with_on_off()");
1828 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "move_to_level_with_on_off",
1829 g_variant_new("(qyyq)", addr16, ep, level, transition_time),
1833 g_variant_get(message, "(i)", &error);
1834 GLOGD("ret = [0x%x]", error);
1835 g_variant_unref(message);
1841 int Zigbee::zbl_level_control_move_with_on_off(nwk_addr addr16, unsigned char ep,
1842 unsigned char move_mode, unsigned char rate)
1844 int error = ZIGBEE_ERROR_NONE;
1845 GVariant *message = NULL;
1847 GLOGD("zbl_level_control_move_with_on_off()");
1849 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "move_with_on_off",
1850 g_variant_new("(qyyy)", addr16, ep, move_mode, rate),
1854 g_variant_get(message, "(i)", &error);
1855 GLOGD("ret = [0x%x]", error);
1856 g_variant_unref(message);
1862 int Zigbee::zbl_level_control_step_with_on_off(nwk_addr addr16, unsigned char ep,
1863 unsigned char step_mode, unsigned char step_size,
1864 unsigned short transition_time)
1866 int error = ZIGBEE_ERROR_NONE;
1867 GVariant *message = NULL;
1869 GLOGD("zbl_level_control_step_with_on_off()");
1871 message = invoke_proxy_method(LEVEL_CONTROL_GPROXY, "step_with_on_off",
1872 g_variant_new("(qyyyq)", addr16, ep, step_mode, step_size, transition_time),
1876 g_variant_get(message, "(i)", &error);
1877 GLOGD("ret = [0x%x]", error);
1878 g_variant_unref(message);
1884 int Zigbee::zbl_onoff_set(nwk_addr addr16, unsigned char ep, unsigned char on_off_type)
1886 int error = ZIGBEE_ERROR_NONE;
1887 GVariant *message = NULL;
1889 GLOGD("zbl_onoff_set()");
1891 message = invoke_proxy_method(ON_OFF_GPROXY, "set_on_off",
1892 g_variant_new("(qyy)", addr16, ep, on_off_type), &error);
1895 g_variant_get(message, "(i)", &error);
1896 GLOGD("ret = [0x%x]", error);
1897 g_variant_unref(message);
1903 int Zigbee::zbl_zone_enroll_response(nwk_addr addr16, unsigned char dst_ep,
1904 unsigned char enroll_response_code, unsigned char zone_id)
1906 int error = ZIGBEE_ERROR_NONE;
1907 GVariant *message = NULL;
1909 GLOGD("zbl_zone_enroll_response()");
1911 message = invoke_proxy_method(ZCL_IAS_ZONE_PROXY, "enroll_response",
1912 g_variant_new("(qyyy)", addr16, dst_ep, enroll_response_code, zone_id),
1916 g_variant_get(message, "(i)", &error);
1917 GLOGD("ret = [0x%x]", error);
1918 g_variant_unref(message);
1924 int Zigbee::zbl_pollcontrol_check_in_response(nwk_addr addr16, unsigned char ep,
1925 unsigned char start_fast_polling, unsigned short fast_poll_timeout)
1927 int error = ZIGBEE_ERROR_NONE;
1928 GVariant *message = NULL;
1930 GLOGD("zbl_pollcontrol_check_in_response()");
1932 message = invoke_proxy_method(ZCL_POLL_CONTROL_PROXY, "check_in_response",
1933 g_variant_new("(qyyq)", addr16, ep, start_fast_polling, fast_poll_timeout),
1937 g_variant_get(message, "(i)", &error);
1938 GLOGD("ret = [0x%x]", error);
1939 g_variant_unref(message);
1945 int Zigbee::zbl_pollcontrol_fast_poll_stop(nwk_addr addr16, unsigned char ep)
1947 int error = ZIGBEE_ERROR_NONE;
1948 GVariant *message = NULL;
1950 GLOGD("zbl_pollcontrol_fast_poll_stop()");
1952 message = invoke_proxy_method(ZCL_POLL_CONTROL_PROXY, "fast_poll_stop",
1953 g_variant_new("(qy)", addr16, ep), &error);
1956 g_variant_get(message, "(i)", &error);
1957 GLOGD("ret = [0x%x]", error);
1958 g_variant_unref(message);
1964 int Zigbee::zbl_pollcontrol_set_long_poll_interval(nwk_addr addr16, unsigned char ep,
1965 unsigned int new_long_poll_interval)
1967 int error = ZIGBEE_ERROR_NONE;
1968 GVariant *message = NULL;
1970 GLOGD("zbl_pollcontrol_set_long_poll_interval()");
1972 message = invoke_proxy_method(ZCL_POLL_CONTROL_PROXY, "set_long_poll_interval",
1973 g_variant_new("(qyu)", addr16, ep, new_long_poll_interval),
1977 g_variant_get(message, "(i)", &error);
1978 GLOGD("ret = [0x%x]", error);
1979 g_variant_unref(message);
1985 int Zigbee::zbl_pollcontrol_set_short_poll_interval(nwk_addr addr16, unsigned char ep,
1986 unsigned int new_short_poll_interval)
1988 int error = ZIGBEE_ERROR_NONE;
1989 GVariant *message = NULL;
1991 GLOGD("zbl_pollcontrol_set_short_poll_interval()");
1993 message = invoke_proxy_method(ZCL_POLL_CONTROL_PROXY, "set_short_poll_interval",
1994 g_variant_new("(qyu)", addr16, ep, new_short_poll_interval),
1998 g_variant_get(message, "(i)", &error);
1999 GLOGD("ret = [0x%x]", error);
2000 g_variant_unref(message);
2006 int Zigbee::zbl_add_scene(nwk_addr addr16, unsigned char ep, unsigned short group_id,
2007 unsigned char scene_id, unsigned short transition_time, const char *scene_name,
2008 unsigned short ext_field_len, const char *extension_field_sets)
2011 int error = ZIGBEE_ERROR_NONE;
2012 GVariant *message = NULL;
2016 GVariant *scenename_variant = NULL;
2017 GVariantBuilder *scenename_builder = NULL;
2018 GVariant *extensionfieldSet_variant = NULL;
2019 GVariantBuilder *extensionfieldSet_builder = NULL;
2021 GLOGD("zbl_add_scene()");
2023 scenename_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
2024 while ('\0' != scene_name[j]) {
2025 g_variant_builder_add(scenename_builder, "(y)", scene_name[j]);
2028 scenename_variant = g_variant_builder_end(scenename_builder);
2029 g_variant_builder_unref(scenename_builder);
2031 extensionfieldSet_builder = g_variant_builder_new(G_VARIANT_TYPE("a(y)"));
2033 while (index < ext_field_len) {
2034 GLOGD("Ext contents 0x%02X", extension_field_sets[index]);
2035 g_variant_builder_add(extensionfieldSet_builder, "(y)", extension_field_sets[index]);
2038 extensionfieldSet_variant = g_variant_builder_end(extensionfieldSet_builder);
2039 g_variant_builder_unref(extensionfieldSet_builder);
2041 message = invoke_proxy_method(ZCL_SCENE_PROXY, "add_scene",
2042 g_variant_new("(qyqyqq@a(y)@a(y))", addr16, ep, group_id, scene_id, transition_time,
2043 ext_field_len, scenename_variant, extensionfieldSet_variant), &error);
2046 g_variant_get(message, "(i)", &error);
2047 GLOGD("ret = [0x%x]", error);
2048 g_variant_unref(message);
2054 int Zigbee::zbl_view_scene(nwk_addr addr16, unsigned char ep,
2055 unsigned short group_id, unsigned char scene_id)
2057 int error = ZIGBEE_ERROR_NONE;
2058 GVariant *message = NULL;
2060 GLOGD("zbl_scene_view_scene()");
2062 message = invoke_proxy_method(ZCL_SCENE_PROXY, "view_scene",
2063 g_variant_new("(qyqy)", addr16, ep, group_id, scene_id),
2067 g_variant_get(message, "(i)", &error);
2068 GLOGD("ret = [0x%x]", error);
2069 g_variant_unref(message);
2075 int Zigbee::zbl_remove_scene(nwk_addr addr16, unsigned char ep,
2076 unsigned short group_id, unsigned char scene_id)
2078 int error = ZIGBEE_ERROR_NONE;
2079 GVariant *message = NULL;
2081 GLOGD("zbl_scene_remove_scene()");
2083 message = invoke_proxy_method(ZCL_SCENE_PROXY, "remove_scene",
2084 g_variant_new("(qyqy)", addr16, ep, group_id, scene_id),
2088 g_variant_get(message, "(i)", &error);
2089 GLOGD("ret = [0x%x]", error);
2090 g_variant_unref(message);
2096 int Zigbee::zbl_remove_all_scene(nwk_addr addr16, unsigned char ep,
2097 unsigned short group_id)
2099 int error = ZIGBEE_ERROR_NONE;
2100 GVariant *message = NULL;
2102 GLOGD("zbl_scene_remove_all_scene()");
2104 message = invoke_proxy_method(ZCL_SCENE_PROXY, "remove_all_scene",
2105 g_variant_new("(qyq)", addr16, ep, group_id),
2109 g_variant_get(message, "(i)", &error);
2110 GLOGD("ret = [0x%x]", error);
2111 g_variant_unref(message);
2117 int Zigbee::zbl_store_scene(nwk_addr addr16, unsigned char ep,
2118 unsigned short group_id, unsigned char scene_id)
2120 int error = ZIGBEE_ERROR_NONE;
2121 GVariant *message = NULL;
2123 GLOGD("zbl_scene_store_scene()");
2125 message = invoke_proxy_method(ZCL_SCENE_PROXY, "store_scene",
2126 g_variant_new("(qyqy)", addr16, ep, group_id, scene_id),
2130 g_variant_get(message, "(i)", &error);
2131 GLOGD("ret = [0x%x]", error);
2132 g_variant_unref(message);
2138 int Zigbee::zbl_recall_scene(nwk_addr addr16, unsigned char ep,
2139 unsigned short group_id, unsigned char scene_id)
2141 int error = ZIGBEE_ERROR_NONE;
2142 GVariant *message = NULL;
2144 GLOGD("zbl_recall_scene()");
2146 message = invoke_proxy_method(ZCL_SCENE_PROXY, "recall_scene",
2147 g_variant_new("(qyqy)", addr16, ep, group_id, scene_id),
2151 g_variant_get(message, "(i)", &error);
2152 GLOGD("ret = [0x%x]", error);
2153 g_variant_unref(message);
2159 int Zigbee::zbl_get_scene_membership(nwk_addr addr16, unsigned char ep,
2160 unsigned short group_id)
2162 int error = ZIGBEE_ERROR_NONE;
2163 GVariant *message = NULL;
2165 GLOGD("zbl_scene_get_scene_membership()");
2167 message = invoke_proxy_method(ZCL_SCENE_PROXY, "get_scene_membership",
2168 g_variant_new("(qyq)", addr16, ep, group_id),
2172 g_variant_get(message, "(i)", &error);
2173 GLOGD("ret = [0x%x]", error);
2174 g_variant_unref(message);
2180 int Zigbee::zbl_thermostat_adjust_setpoint(nwk_addr addr16, unsigned char ep,
2181 unsigned char mode, unsigned char amount)
2183 int error = ZIGBEE_ERROR_NONE;
2184 GVariant *message = NULL;
2186 GLOGD("zbl_thermostat_adjust_setpoint()");
2188 message = invoke_proxy_method(THERMOSTAT_GPROXY, "setpoint_raise_lower",
2189 g_variant_new("(qyyy)", addr16, ep, mode, amount),
2193 g_variant_get(message, "(i)", &error);
2194 GLOGD("ret = [0x%x]", error);
2195 g_variant_unref(message);