2 * Copyright (c) 2016 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.
18 #include "zb-common.h"
21 #define ZIGBEE_SUPPORT_ORDERED_SEQUENCE_DATA 0
23 API int zb_zcl_global_attr_read(zb_zigbee_h handle, zb_nwk_addr addr16,
24 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
25 unsigned short clusterid, unsigned short *attribute_ids, int attribute_ids_len,
26 zb_zcl_global_attr_read_cb cb, void *user_data)
29 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
30 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
31 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
32 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
33 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
34 RETV_IF(NULL == attribute_ids, ZIGBEE_ERROR_INVALID_PARAMETER);
35 RETV_IF(0 == attribute_ids_len, ZIGBEE_ERROR_INVALID_PARAMETER);
36 ret = zbl_read_attr_req(handle, addr16, dst_ep, zcl_fc, clusterid,
37 attribute_ids, attribute_ids_len, cb, user_data);
41 API int zb_zcl_global_attr_read_structured(zb_zigbee_h handle, zb_nwk_addr addr16,
42 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
43 unsigned short clusterid, zb_zcl_read_structured_attr_record_h *records,
44 int count, zb_zcl_global_attr_read_cb cb, void *user_data)
46 #if (0 == ZIGBEE_SUPPORT_ORDERED_SEQUENCE_DATA)
47 return ZIGBEE_ERROR_NOT_SUPPORTED;
49 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
50 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
51 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
52 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
53 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
54 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
55 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
57 return ZIGBEE_ERROR_NONE;
60 API int zb_zcl_global_attr_write(zb_zigbee_h handle, zb_nwk_addr addr16,
61 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
62 unsigned short clusterid, zb_zcl_write_attr_record_h *records, int count,
63 zb_zcl_global_attr_write_cb cb, void *user_data)
66 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
67 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
68 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
69 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
70 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
71 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
72 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
73 ret = zbl_write_attr_req(handle, addr16, src_ep, dst_ep, zcl_fc,
74 clusterid, records, count, cb, user_data);
78 API int zb_zcl_global_attr_write_undivided(zb_zigbee_h handle,
79 zb_nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
80 unsigned char zcl_fc, unsigned short clusterid,
81 zb_zcl_write_attr_record_h *records, int count,
82 zb_zcl_global_attr_write_cb cb, void *user_data)
85 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
86 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
87 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
88 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
89 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
90 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
91 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
92 ret = zbl_wattr_undivided_req(handle, addr16, src_ep, dst_ep, zcl_fc,
93 clusterid, records, count, cb, user_data);
97 API int zb_zcl_global_attr_write_structured(zb_zigbee_h handle, zb_nwk_addr addr16,
98 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
99 unsigned short clusterid, zb_zcl_write_attr_structured_record_h *records,
100 int count, zb_zcl_global_attr_write_cb cb, void *user_data)
102 #if (0 == ZIGBEE_SUPPORT_ORDERED_SEQUENCE_DATA)
103 return ZIGBEE_ERROR_NOT_SUPPORTED;
105 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
106 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
107 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
108 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
109 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
110 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
111 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
113 return ZIGBEE_ERROR_NONE;
116 API int zb_zcl_global_attr_write_no_rsp(zb_zigbee_h handle, zb_nwk_addr addr16,
117 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
118 unsigned short clusterid, zb_zcl_write_attr_record_h *records, int count)
121 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
122 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
123 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
124 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
125 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
126 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
127 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
128 ret = zbl_wattr_req_no_cb(handle, addr16, src_ep, dst_ep, zcl_fc,
129 clusterid, records, count);
133 API int zb_zcl_global_config_report_write(zb_zigbee_h handle, zb_nwk_addr addr16,
134 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
135 unsigned short clusterid, zb_zcl_reporting_config_record_h *records, int count,
136 zb_zcl_global_config_report_write_cb cb, void *user_data)
139 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
140 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
141 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
142 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
143 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
144 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
145 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
146 ret = zbl_write_config_report(handle, addr16, src_ep, dst_ep, zcl_fc,
147 clusterid, records, count, cb, user_data);
151 API int zb_zcl_global_config_report_read(zb_zigbee_h handle, zb_nwk_addr addr16,
152 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
153 unsigned short clusterid, zb_zcl_read_report_config_record_h *records,
154 int count, zb_zcl_global_config_report_read_cb cb, void *user_data)
157 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
158 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
159 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
160 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
161 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
162 RETV_IF(NULL == records, ZIGBEE_ERROR_INVALID_PARAMETER);
163 RETV_IF(0 == count, ZIGBEE_ERROR_INVALID_PARAMETER);
164 ret = zbl_read_config_report(handle, addr16, src_ep, dst_ep, zcl_fc,
165 clusterid, records, count, cb, user_data);
169 API int zb_zcl_global_attr_discover(zb_zigbee_h handle, zb_nwk_addr addr16,
170 unsigned char src_ep, unsigned char dst_ep, unsigned char zcl_fc,
171 unsigned short clusterid, unsigned short start_id, unsigned char max_attribute_ids,
172 zb_zcl_global_attr_discover_cb cb, void *user_data)
175 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
176 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
177 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
178 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
179 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
180 ret = zbl_discover_attr_req(handle, addr16, src_ep, dst_ep, zcl_fc,
181 clusterid, start_id, max_attribute_ids, cb, user_data);
185 API int zb_zcl_global_discover_cmds_received(zb_zigbee_h handle,
186 zb_nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
187 unsigned char zcl_fc, unsigned short clusterid, unsigned char start_command_id,
188 unsigned char max_command_ids, zb_zcl_global_discover_cmds_cb cb, void *user_data)
191 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
192 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
193 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
194 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
195 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
196 ret = zbl_discover_cmds_recv(handle, addr16, src_ep, dst_ep, zcl_fc,
197 clusterid, start_command_id, max_command_ids, cb, user_data);
201 API int zb_zcl_global_discover_cmds_generated(zb_zigbee_h handle,
202 zb_nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
203 unsigned char zcl_fc, unsigned short clusterid, unsigned char start_command_id,
204 unsigned char max_command_ids, zb_zcl_global_discover_cmds_cb cb, void *user_data)
207 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
208 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
209 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
210 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
211 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
212 ret = zbl_discover_cmds_gen(handle, addr16, src_ep, dst_ep, zcl_fc,
213 clusterid, start_command_id, max_command_ids, cb, user_data);
217 API int zb_zcl_global_attr_extended_discover(zb_zigbee_h handle,
218 zb_nwk_addr addr16, unsigned char src_ep, unsigned char dst_ep,
219 unsigned char zcl_fc, unsigned short clusterid, unsigned short start_id,
220 unsigned char max_attribute_ids, zb_zcl_global_attr_extended_discover_cb cb,
224 CHECK_FEATURE_SUPPORTED(ZIGBEE_FEATURE);
225 RETV_IF(NULL == handle, ZIGBEE_ERROR_INVALID_PARAMETER);
226 RETV_IF(NULL == zbl_dbus_get_object(), ZIGBEE_ERROR_IO_ERROR);
227 RETV_IF(0 == addr16, ZIGBEE_ERROR_INVALID_ADDRESS);
228 RETV_IF(0 == src_ep || 0 == dst_ep, ZIGBEE_ERROR_INVALID_ENDPOINT);
229 ret = zbl_discover_attr_ext(handle, addr16, src_ep, dst_ep, zcl_fc,
230 clusterid, start_id, max_attribute_ids, cb, user_data);