2 * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
4 * Contact: Suresh Kumar N (suresh.n@samsung.com)
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include <zblib_request.h>
21 #include <zblib_service.h>
22 #include <zblib_service_interface.h>
24 #include <zblib_driver.h>
25 #include <zblib_driver_custom.h>
26 #include <zblib_driver_mfglib_control.h>
27 #include <zblib_driver_service.h>
28 #include <zblib_driver_zcl_alarm.h>
29 #include <zblib_driver_zcl_basic.h>
30 #include <zblib_driver_zcl_color_control.h>
31 #include <zblib_driver_zcl_door_lock.h>
32 #include <zblib_driver_zcl_fan_control.h>
33 #include <zblib_driver_zcl_global_control.h>
34 #include <zblib_driver_zcl_group.h>
35 #include <zblib_driver_zcl_ias_zone.h>
36 #include <zblib_driver_zcl_identify.h>
37 #include <zblib_driver_zcl_level_control.h>
38 #include <zblib_driver_zcl_on_off.h>
39 #include <zblib_driver_zcl_poll_control.h>
40 #include <zblib_driver_zcl_scene.h>
41 #include <zblib_driver_zcl_thermostat.h>
42 #include <zblib_driver_zdo_bind.h>
43 #include <zblib_driver_zdo_dev_control.h>
45 /**< ZigBee Request object */
46 struct zblib_request_type {
47 gint request_id; /**< Request ID */
48 guint request_type; /**< Request type */
49 guint ref_count; /* Reference count */
51 gpointer request_data; /**< Request data */
52 gpointer resp_cb; /**< Response callback */
53 gpointer resp_cb_data; /**< Response callback data */
55 ZigBeeServiceInterface *service_interface; /* Service interface */
58 static ZblibDriverType_e __zblib_request_get_driver_type(guint request_type)
60 ZblibDriverType_e driver_type;
62 driver_type = ((request_type & 0xFF000000) >> 24);
67 static ZblibDriverType_e __zblib_request_get_ops_id(guint request_type)
71 ops_id = (request_type & 0x000000FF);
76 static ZigBeeRequest *__zblib_request_ref_request_by_by_request_id(ZigBeeService *service,
79 ZigBeeRequest *request = NULL;
80 GHashTable *request_table = NULL;
82 /* Fetch request table from service */
83 request_table = zblib_service_ref_request_hash_table(service);
84 if (NULL == request_table) {
85 Z_LOGE("zblib_service_ref_request_hash_table failed!");
89 /* Look-up requets_id in request hash table */
90 request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
91 if (NULL == request) {
92 Z_LOGE("No request available for request_id: [%d]", request_id);
99 static gint __zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
102 ZigBeeRequest *request = NULL;
104 /* Fetch request based on request_id */
105 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
106 if (NULL == request) {
107 Z_LOGE("No request available for request_id: [%d]", request_id);
111 return (gint)(request->request_type);
114 static ZigBeeRequest *__zblib_request_ref_request_by_request_id(ZigBeeService *service,
117 ZigBeeRequest *request = NULL;
118 GHashTable *request_table = NULL;
120 /* Fetch request table from service */
121 request_table = zblib_service_ref_request_hash_table(service);
122 if (NULL == request_table) {
123 Z_LOGE("zblib_service_ref_request_hash_table failed!");
127 /* Look-up requets_id in request hash table */
128 request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
129 if (NULL == request) {
130 Z_LOGE("No request available for request_id: [%d]", request_id);
137 static gpointer __zblib_request_create_zcl_alarm_request_data(guint request_type,
138 gpointer request_data, guint request_data_len)
140 gpointer alarm_request_data = NULL;
143 NOT_USED(request_data_len);
146 ops_id = __zblib_request_get_ops_id(request_type);
148 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM_COUNT: {
149 ZigbeeZclAlarmGetAlarmCount_t *in_req;
150 ZigbeeZclAlarmGetAlarmCount_t *req = NULL;
152 in_req = (ZigbeeZclAlarmGetAlarmCount_t *)request_data;
153 if (NULL != in_req) {
154 /* Allocate memory */
155 req = (ZigbeeZclAlarmGetAlarmCount_t *)
156 g_malloc0(sizeof(ZigbeeZclAlarmGetAlarmCount_t));
159 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
160 req->endpoint = in_req->endpoint;
163 alarm_request_data = (gpointer)req;
167 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM: {
168 ZigbeeZclAlarmResetAlarm_t *in_req;
169 ZigbeeZclAlarmResetAlarm_t *req = NULL;
171 in_req = (ZigbeeZclAlarmResetAlarm_t *)request_data;
172 if (NULL != in_req) {
173 /* Allocate memory */
174 req = (ZigbeeZclAlarmResetAlarm_t *)
175 g_malloc0(sizeof(ZigbeeZclAlarmResetAlarm_t));
178 req->node_id = in_req->node_id;
179 req->endpoint = in_req->endpoint;
180 req->alarm_code = in_req->alarm_code;
181 req->cluster_id = in_req->cluster_id;
184 alarm_request_data = (gpointer)req;
188 case ZBLIB_ZCL_ALARM_OPS_RESET_ALL_ALARM: {
189 ZigbeeZclAlarmResetAllAlarm_t *in_req;
190 ZigbeeZclAlarmResetAllAlarm_t *req = NULL;
192 in_req = (ZigbeeZclAlarmResetAllAlarm_t *)request_data;
194 /* Allocate memory */
195 req = (ZigbeeZclAlarmResetAllAlarm_t *)
196 g_malloc0(sizeof(ZigbeeZclAlarmResetAllAlarm_t));
199 req->node_id = in_req->node_id;
200 req->endpoint = in_req->endpoint;
203 alarm_request_data = (gpointer)req;
207 case ZBLIB_ZCL_ALARM_OPS_ALARM: {
208 ZigbeeZclAlarmAlarm_t *in_req;
209 ZigbeeZclAlarmAlarm_t *req = NULL;
211 in_req = (ZigbeeZclAlarmAlarm_t *)request_data;
213 /* Allocate memory */
214 req = (ZigbeeZclAlarmAlarm_t *)
215 g_malloc0(sizeof(ZigbeeZclAlarmAlarm_t));
218 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
219 req->endpoint = in_req->endpoint;
220 req->alarm_code = in_req->alarm_code;
221 req->cluster_id = in_req->cluster_id;
224 alarm_request_data = (gpointer)req;
228 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM_LOG: {
229 ZigbeeZclAlarmResetAlarmLogs_t *in_req;
230 ZigbeeZclAlarmResetAlarmLogs_t *req = NULL;
232 in_req = (ZigbeeZclAlarmResetAlarmLogs_t *)request_data;
234 /* Allocate memory */
235 req = (ZigbeeZclAlarmResetAlarmLogs_t *)
236 g_malloc0(sizeof(ZigbeeZclAlarmResetAlarmLogs_t));
239 req->node_id = in_req->node_id;
240 req->endpoint = in_req->endpoint;
243 alarm_request_data = (gpointer)req;
247 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
248 ZigbeeZclAlarmGetAlarm_t *in_req;
249 ZigbeeZclAlarmGetAlarm_t *req = NULL;
251 in_req = (ZigbeeZclAlarmGetAlarm_t *)request_data;
253 /* Allocate memory */
254 req = (ZigbeeZclAlarmGetAlarm_t *)
255 g_malloc0(sizeof(ZigbeeZclAlarmGetAlarm_t));
258 req->node_id = in_req->node_id;
259 req->endpoint = in_req->endpoint;
262 alarm_request_data = (gpointer)req;
270 return alarm_request_data;
273 static gpointer __zblib_request_create_custom_request_data(guint request_type,
274 gpointer request_data, guint request_data_len)
276 gpointer custom_request_data = NULL;
279 NOT_USED(request_data_len);
282 ops_id = __zblib_request_get_ops_id(request_type);
284 case ZBLIB_CUSTOM_OPS_APS_SEND: {
285 ZigbeeCustomApsSend_t *in_req;
286 ZigbeeCustomApsSend_t *req = NULL;
288 in_req = (ZigbeeCustomApsSend_t *)request_data;
290 /* Allocate memory */
291 req = (ZigbeeCustomApsSend_t *)
292 g_malloc0(sizeof(ZigbeeCustomApsSend_t));
295 req->node_id = in_req->node_id;
296 req->aps_frame_ctrl = in_req->aps_frame_ctrl;
297 req->src_ep = in_req->src_ep;
298 req->dest_ep = in_req->dest_ep;
299 req->cluster_id = in_req->cluster_id;
300 req->profile_id = in_req->profile_id;
301 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
302 req->mfg_code = in_req->mfg_code;
303 req->cmd_id = in_req->cmd_id;
304 req->payload_len = in_req->payload_len;
306 in_req->payload, req->payload_len);
309 custom_request_data = (gpointer)req;
313 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
314 ZigbeeCustomZclSend_t *in_req;
315 ZigbeeCustomZclSend_t *req = NULL;
317 in_req = (ZigbeeCustomZclSend_t *)request_data;
319 /* Allocate memory */
320 req = (ZigbeeCustomZclSend_t *)
321 g_malloc0(sizeof(ZigbeeCustomZclSend_t));
324 req->node_id = in_req->node_id;
325 req->src_ep = in_req->src_ep;
326 req->dest_ep = in_req->dest_ep;
327 req->cluster_id = in_req->cluster_id;
328 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
329 req->cmd_id = in_req->cmd_id;
330 req->payload_len = in_req->payload_len;
332 in_req->payload, req->payload_len);
335 custom_request_data = (gpointer)req;
339 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
340 ZigbeeCustomSendToLocal_t *in_req;
341 ZigbeeCustomSendToLocal_t *req = NULL;
343 in_req = (ZigbeeCustomSendToLocal_t *)request_data;
345 /* Allocate memory */
346 req = (ZigbeeCustomSendToLocal_t *)
347 g_malloc0(sizeof(ZigbeeCustomSendToLocal_t));
350 req->length = in_req->length;
352 in_req->data, req->length);
355 custom_request_data = (gpointer)req;
363 return custom_request_data;
366 static gpointer __zblib_request_create_zcl_door_lock_request_data(guint request_type,
367 gpointer request_data, guint request_data_len)
369 gpointer door_lock_request_data = NULL;
372 NOT_USED(request_data_len);
375 ops_id = __zblib_request_get_ops_id(request_type);
377 case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
378 ZigbeeZclDoorLockSubscriberLockEvent_t *in_req;
379 ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
381 in_req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request_data;
383 /* Allocate memory */
384 req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)
385 g_malloc0(sizeof(ZigbeeZclDoorLockSubscriberLockEvent_t));
389 in_req->eui64, ZIGBEE_EUI64_SIZE);
390 req->endpoint = in_req->endpoint;
393 door_lock_request_data = (gpointer)req;
397 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
398 ZigbeeZclDoorLockSetDoorLockPin_t *in_req;
399 ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
401 in_req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request_data;
403 /* Allocate memory */
404 req = (ZigbeeZclDoorLockSetDoorLockPin_t *)
405 g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLockPin_t));
408 req->uid = in_req->uid;
409 req->ustatus = in_req->ustatus;
410 req->utype = in_req->utype;
412 in_req->eui64, ZIGBEE_EUI64_SIZE);
413 req->endpoint = in_req->endpoint;
415 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
418 door_lock_request_data = (gpointer)req;
422 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
423 ZigbeeZclDoorLockSetDoorLock_t *in_req;
424 ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
426 in_req = (ZigbeeZclDoorLockSetDoorLock_t *)request_data;
428 /* Allocate memory */
429 req = (ZigbeeZclDoorLockSetDoorLock_t *)
430 g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLock_t));
434 in_req->eui64, ZIGBEE_EUI64_SIZE);
435 req->endpoint = in_req->endpoint;
437 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
438 req->lock_unlock_type = in_req->lock_unlock_type;
441 door_lock_request_data = (gpointer)req;
445 case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
446 ZigbeeZclDoorLockGetDoorLock_t *in_req;
447 ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
449 in_req = (ZigbeeZclDoorLockGetDoorLock_t *)request_data;
451 /* Allocate memory */
452 req = (ZigbeeZclDoorLockGetDoorLock_t *)
453 g_malloc0(sizeof(ZigbeeZclDoorLockGetDoorLock_t));
457 in_req->eui64, ZIGBEE_EUI64_SIZE);
458 req->endpoint = in_req->endpoint;
461 door_lock_request_data = (gpointer)req;
469 return door_lock_request_data;
472 static gpointer __zblib_request_create_zcl_fan_control_request_data(guint request_type,
473 gpointer request_data, guint request_data_len)
475 gpointer fan_control_request_data = NULL;
478 NOT_USED(request_data_len);
481 ops_id = __zblib_request_get_ops_id(request_type);
483 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
484 ZigbeeZclFanControlSetFanMode_t *in_req;
485 ZigbeeZclFanControlSetFanMode_t *req = NULL;
487 in_req = (ZigbeeZclFanControlSetFanMode_t *)request_data;
489 /* Allocate memory */
490 req = (ZigbeeZclFanControlSetFanMode_t *)
491 g_malloc0(sizeof(ZigbeeZclFanControlSetFanMode_t));
495 in_req->eui64, ZIGBEE_EUI64_SIZE);
496 req->endpoint = in_req->endpoint;
499 fan_control_request_data = (gpointer)req;
503 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
504 ZigbeeZclFanControlGetFanMode_t *in_req;
505 ZigbeeZclFanControlGetFanMode_t *req = NULL;
507 in_req = (ZigbeeZclFanControlGetFanMode_t *)request_data;
509 /* Allocate memory */
510 req = (ZigbeeZclFanControlGetFanMode_t *)
511 g_malloc0(sizeof(ZigbeeZclFanControlGetFanMode_t));
515 in_req->eui64, ZIGBEE_EUI64_SIZE);
516 req->endpoint = in_req->endpoint;
519 fan_control_request_data = (gpointer)req;
523 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
524 ZigbeeZclFanControlSetFanModeSequence_t *in_req;
525 ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
527 in_req = (ZigbeeZclFanControlSetFanModeSequence_t *)request_data;
529 /* Allocate memory */
530 req = (ZigbeeZclFanControlSetFanModeSequence_t *)
531 g_malloc0(sizeof(ZigbeeZclFanControlSetFanModeSequence_t));
535 in_req->eui64, ZIGBEE_EUI64_SIZE);
536 req->endpoint = in_req->endpoint;
539 fan_control_request_data = (gpointer)req;
543 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
544 ZigbeeZclFanControlGetFanModeSequence_t *in_req;
545 ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
547 in_req = (ZigbeeZclFanControlGetFanModeSequence_t *)request_data;
549 /* Allocate memory */
550 req = (ZigbeeZclFanControlGetFanModeSequence_t *)
551 g_malloc0(sizeof(ZigbeeZclFanControlGetFanModeSequence_t));
555 in_req->eui64, ZIGBEE_EUI64_SIZE);
556 req->endpoint = in_req->endpoint;
559 fan_control_request_data = (gpointer)req;
567 return fan_control_request_data;
570 static gpointer __zblib_request_create_zcl_level_control_request_data(guint request_type,
571 gpointer request_data, guint request_data_len)
573 gpointer level_control_request_data = NULL;
576 NOT_USED(request_data_len);
579 ops_id = __zblib_request_get_ops_id(request_type);
581 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
582 ZigbeeZclLevelControlMoveToLevel_t *in_req;
583 ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
585 in_req = (ZigbeeZclLevelControlMoveToLevel_t *)request_data;
587 /* Allocate memory */
588 req = (ZigbeeZclLevelControlMoveToLevel_t *)
589 g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevel_t));
592 req->node_id = in_req->node_id;
593 req->endpoint = in_req->endpoint;
594 req->level = in_req->level;
595 req->transition = in_req->transition;
598 level_control_request_data = (gpointer)req;
602 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
603 ZigbeeZclLevelControlMove_t *in_req;
604 ZigbeeZclLevelControlMove_t *req = NULL;
606 in_req = (ZigbeeZclLevelControlMove_t *)request_data;
608 /* Allocate memory */
609 req = (ZigbeeZclLevelControlMove_t *)
610 g_malloc0(sizeof(ZigbeeZclLevelControlMove_t));
613 req->node_id = in_req->node_id;
614 req->endpoint = in_req->endpoint;
615 req->move_mode = in_req->move_mode;
616 req->rate = in_req->rate;
619 level_control_request_data = (gpointer)req;
623 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
624 ZigbeeZclLevelControlStep_t *in_req;
625 ZigbeeZclLevelControlStep_t *req = NULL;
627 in_req = (ZigbeeZclLevelControlStep_t *)request_data;
629 /* Allocate memory */
630 req = (ZigbeeZclLevelControlStep_t *)
631 g_malloc0(sizeof(ZigbeeZclLevelControlStep_t));
634 req->node_id = in_req->node_id;
635 req->endpoint = in_req->endpoint;
636 req->step_mode = in_req->step_mode;
637 req->step_size = in_req->step_size;
638 req->transition_time = in_req->transition_time;
641 level_control_request_data = (gpointer)req;
645 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
646 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *in_req;
647 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
649 in_req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request_data;
651 /* Allocate memory */
652 req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)
653 g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevelWithOnOff_t));
656 req->node_id = in_req->node_id;
657 req->endpoint = in_req->endpoint;
658 req->level = in_req->level;
659 req->transition = in_req->transition;
662 level_control_request_data = (gpointer)req;
666 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
667 ZigbeeZclLevelControlMoveWithOnOff_t *in_req;
668 ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
670 in_req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request_data;
672 /* Allocate memory */
673 req = (ZigbeeZclLevelControlMoveWithOnOff_t *)
674 g_malloc0(sizeof(ZigbeeZclLevelControlMoveWithOnOff_t));
677 req->node_id = in_req->node_id;
678 req->endpoint = in_req->endpoint;
679 req->move_mode = in_req->move_mode;
680 req->rate = in_req->rate;
683 level_control_request_data = (gpointer)req;
687 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
688 ZigbeeZclLevelControlStepWithOnOff_t *in_req;
689 ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
691 in_req = (ZigbeeZclLevelControlStepWithOnOff_t *)request_data;
693 /* Allocate memory */
694 req = (ZigbeeZclLevelControlStepWithOnOff_t *)
695 g_malloc0(sizeof(ZigbeeZclLevelControlStepWithOnOff_t));
698 req->node_id = in_req->node_id;
699 req->endpoint = in_req->endpoint;
700 req->step_mode = in_req->step_mode;
701 req->step_size = in_req->step_size;
702 req->transition_time = in_req->transition_time;
705 level_control_request_data = (gpointer)req;
709 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
710 ZigbeeZclLevelControlStop_t *in_req;
711 ZigbeeZclLevelControlStop_t *req = NULL;
713 in_req = (ZigbeeZclLevelControlStop_t *)request_data;
715 /* Allocate memory */
716 req = (ZigbeeZclLevelControlStop_t *)
717 g_malloc0(sizeof(ZigbeeZclLevelControlStop_t));
720 req->node_id = in_req->node_id;
721 req->endpoint = in_req->endpoint;
724 level_control_request_data = (gpointer)req;
732 return level_control_request_data;
735 static gpointer __zblib_request_create_mfglib_control_request_data(guint request_type,
736 gpointer request_data, guint request_data_len)
738 gpointer mfglib_control_request_data = NULL;
741 NOT_USED(request_data_len);
744 ops_id = __zblib_request_get_ops_id(request_type);
746 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
747 ZigbeeMfglibControlStart_t *in_req;
748 ZigbeeMfglibControlStart_t *req = NULL;
750 in_req = (ZigbeeMfglibControlStart_t *)request_data;
751 if (NULL != in_req) {
752 /* Allocate memory */
753 req = (ZigbeeMfglibControlStart_t *)
754 g_malloc0(sizeof(ZigbeeMfglibControlStart_t));
757 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
758 req->mfglib_start = in_req->mfglib_start;
761 mfglib_control_request_data = (gpointer)req;
765 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
766 ZigbeeMfglibControlEnd_t *in_req;
767 ZigbeeMfglibControlEnd_t *req = NULL;
769 in_req = (ZigbeeMfglibControlEnd_t *)request_data;
770 if (NULL != in_req) {
771 /* Allocate memory */
772 req = (ZigbeeMfglibControlEnd_t *)
773 g_malloc0(sizeof(ZigbeeMfglibControlEnd_t));
776 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
779 mfglib_control_request_data = (gpointer)req;
783 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
784 ZigbeeMfglibControlStartTone_t *in_req;
785 ZigbeeMfglibControlStartTone_t *req = NULL;
787 in_req = (ZigbeeMfglibControlStartTone_t *)request_data;
788 if (NULL != in_req) {
789 /* Allocate memory */
790 req = (ZigbeeMfglibControlStartTone_t *)
791 g_malloc0(sizeof(ZigbeeMfglibControlStartTone_t));
794 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
797 mfglib_control_request_data = (gpointer)req;
801 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
802 ZigbeeMfglibControlStopTone_t *in_req;
803 ZigbeeMfglibControlStopTone_t *req = NULL;
805 in_req = (ZigbeeMfglibControlStopTone_t *)request_data;
806 if (NULL != in_req) {
807 /* Allocate memory */
808 req = (ZigbeeMfglibControlStopTone_t *)
809 g_malloc0(sizeof(ZigbeeMfglibControlStopTone_t));
812 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
815 mfglib_control_request_data = (gpointer)req;
819 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
820 ZigbeeMfglibControlStartStream_t *in_req;
821 ZigbeeMfglibControlStartStream_t *req = NULL;
823 in_req = (ZigbeeMfglibControlStartStream_t *)request_data;
824 if (NULL != in_req) {
825 /* Allocate memory */
826 req = (ZigbeeMfglibControlStartStream_t *)
827 g_malloc0(sizeof(ZigbeeMfglibControlStartStream_t));
830 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
833 mfglib_control_request_data = (gpointer)req;
837 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
838 ZigbeeMfglibControlStopStream_t *in_req;
839 ZigbeeMfglibControlStopStream_t *req = NULL;
841 in_req = (ZigbeeMfglibControlStopStream_t *)request_data;
842 if (NULL != in_req) {
843 /* Allocate memory */
844 req = (ZigbeeMfglibControlStopStream_t *)
845 g_malloc0(sizeof(ZigbeeMfglibControlStopStream_t));
848 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
851 mfglib_control_request_data = (gpointer)req;
855 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
856 ZigbeeMfglibControlSendPacket_t *in_req;
857 ZigbeeMfglibControlSendPacket_t *req = NULL;
859 in_req = (ZigbeeMfglibControlSendPacket_t *)request_data;
860 if (NULL != in_req) {
861 /* Allocate memory */
862 req = (ZigbeeMfglibControlSendPacket_t *)
863 g_malloc0(sizeof(ZigbeeMfglibControlSendPacket_t));
866 memcpy(req->packet_content,
867 in_req->packet_content,
868 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
869 req->packet_length = in_req->packet_length;
872 mfglib_control_request_data = (gpointer)req;
876 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
877 ZigbeeMfglibControlSetChannel_t *in_req;
878 ZigbeeMfglibControlSetChannel_t *req = NULL;
880 in_req = (ZigbeeMfglibControlSetChannel_t *)request_data;
881 if (NULL != in_req) {
882 /* Allocate memory */
883 req = (ZigbeeMfglibControlSetChannel_t *)
884 g_malloc0(sizeof(ZigbeeMfglibControlSetChannel_t));
887 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
888 req->channel = in_req->channel;
891 mfglib_control_request_data = (gpointer)req;
895 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
896 ZigbeeMfglibControlGetChannel_t *in_req;
897 ZigbeeMfglibControlGetChannel_t *req = NULL;
899 in_req = (ZigbeeMfglibControlGetChannel_t *)request_data;
900 if (NULL != in_req) {
901 /* Allocate memory */
902 req = (ZigbeeMfglibControlGetChannel_t *)
903 g_malloc0(sizeof(ZigbeeMfglibControlGetChannel_t));
906 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
909 mfglib_control_request_data = (gpointer)req;
913 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
914 ZigbeeMfglibControlSetPower_t *in_req;
915 ZigbeeMfglibControlSetPower_t *req = NULL;
917 in_req = (ZigbeeMfglibControlSetPower_t *)request_data;
918 if (NULL != in_req) {
919 /* Allocate memory */
920 req = (ZigbeeMfglibControlSetPower_t *)
921 g_malloc0(sizeof(ZigbeeMfglibControlSetPower_t));
924 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
925 req->tx_power_mode = in_req->tx_power_mode;
926 req->power = in_req->power;
929 mfglib_control_request_data = (gpointer)req;
933 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
934 ZigbeeMfglibControlGetPower_t *in_req;
935 ZigbeeMfglibControlGetPower_t *req = NULL;
937 in_req = (ZigbeeMfglibControlGetPower_t *)request_data;
938 if (NULL != in_req) {
939 /* Allocate memory */
940 req = (ZigbeeMfglibControlGetPower_t *)
941 g_malloc0(sizeof(ZigbeeMfglibControlGetPower_t));
944 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
947 mfglib_control_request_data = (gpointer)req;
951 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
952 ZigbeeMfglibControlSetSynOffset_t *in_req;
953 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
955 in_req = (ZigbeeMfglibControlSetSynOffset_t *)request_data;
956 if (NULL != in_req) {
957 /* Allocate memory */
958 req = (ZigbeeMfglibControlSetSynOffset_t *)
959 g_malloc0(sizeof(ZigbeeMfglibControlSetSynOffset_t));
962 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
963 req->channel = in_req->channel;
966 mfglib_control_request_data = (gpointer)req;
970 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
971 ZigbeeMfglibControlGetSynOffset_t *in_req;
972 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
974 in_req = (ZigbeeMfglibControlGetSynOffset_t *)request_data;
975 if (NULL != in_req) {
976 /* Allocate memory */
977 req = (ZigbeeMfglibControlGetSynOffset_t *)
978 g_malloc0(sizeof(ZigbeeMfglibControlGetSynOffset_t));
983 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
984 req->packet_length = in_req->packet_length;
985 req->link_quality = in_req->link_quality;
986 req->rssi = in_req->rssi;
989 mfglib_control_request_data = (gpointer)req;
993 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
994 ZigbeeMfglibControlRxStart_t *in_req;
995 ZigbeeMfglibControlRxStart_t *req = NULL;
997 in_req = (ZigbeeMfglibControlRxStart_t *)request_data;
998 if (NULL != in_req) {
999 /* Allocate memory */
1000 req = (ZigbeeMfglibControlRxStart_t *)
1001 g_malloc0(sizeof(ZigbeeMfglibControlRxStart_t));
1004 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1007 mfglib_control_request_data = (gpointer)req;
1011 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
1012 ZigbeeMfglibControlRxStop_t *in_req;
1013 ZigbeeMfglibControlRxStop_t *req = NULL;
1015 in_req = (ZigbeeMfglibControlRxStop_t *)request_data;
1016 if (NULL != in_req) {
1017 /* Allocate memory */
1018 req = (ZigbeeMfglibControlRxStop_t *)
1019 g_malloc0(sizeof(ZigbeeMfglibControlRxStop_t));
1022 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1025 mfglib_control_request_data = (gpointer)req;
1029 case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
1030 ZigbeeMfglibControlRxVerify_t *in_req;
1031 ZigbeeMfglibControlRxVerify_t *req = NULL;
1033 in_req = (ZigbeeMfglibControlRxVerify_t *)request_data;
1034 if (NULL != in_req) {
1035 /* Allocate memory */
1036 req = (ZigbeeMfglibControlRxVerify_t *)
1037 g_malloc0(sizeof(ZigbeeMfglibControlRxVerify_t));
1040 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1043 mfglib_control_request_data = (gpointer)req;
1047 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
1048 ZigbeeMfglibControlGetRssi_t *in_req;
1049 ZigbeeMfglibControlGetRssi_t *req = NULL;
1051 in_req = (ZigbeeMfglibControlGetRssi_t *)request_data;
1052 if (NULL != in_req) {
1053 /* Allocate memory */
1054 req = (ZigbeeMfglibControlGetRssi_t *)
1055 g_malloc0(sizeof(ZigbeeMfglibControlGetRssi_t));
1058 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1061 mfglib_control_request_data = (gpointer)req;
1069 return mfglib_control_request_data;
1072 static gpointer __zblib_request_create_zcl_on_off_request_data(guint request_type,
1073 gpointer request_data, guint request_data_len)
1075 gpointer on_off_request_data = NULL;
1078 NOT_USED(request_data_len);
1081 ops_id = __zblib_request_get_ops_id(request_type);
1083 case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
1084 ZigbeeZclOnOffSetOnOff_t *in_req;
1085 ZigbeeZclOnOffSetOnOff_t *req = NULL;
1087 in_req = (ZigbeeZclOnOffSetOnOff_t *)request_data;
1088 if (NULL != in_req) {
1089 /* Allocate memory */
1090 req = (ZigbeeZclOnOffSetOnOff_t *)
1091 g_malloc0(sizeof(ZigbeeZclOnOffSetOnOff_t));
1094 req->node_id = in_req->node_id;
1095 req->endpoint = in_req->endpoint;
1096 req->on_off_type = in_req->on_off_type;
1099 on_off_request_data = (gpointer)req;
1103 case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
1104 ZigbeeZclOnOffGetOnOffState_t *in_req;
1105 ZigbeeZclOnOffGetOnOffState_t *req = NULL;
1107 in_req = (ZigbeeZclOnOffGetOnOffState_t *)request_data;
1108 if (NULL != in_req) {
1109 /* Allocate memory */
1110 req = (ZigbeeZclOnOffGetOnOffState_t *)
1111 g_malloc0(sizeof(ZigbeeZclOnOffGetOnOffState_t));
1114 req->node_id = in_req->node_id;
1115 req->endpoint = in_req->endpoint;
1118 on_off_request_data = (gpointer)req;
1126 return on_off_request_data;
1129 static gpointer __zblib_request_create_service_request_data(guint request_type,
1130 gpointer request_data, guint request_data_len)
1132 gpointer service_request_data = NULL;
1135 NOT_USED(request_data_len);
1138 ops_id = __zblib_request_get_ops_id(request_type);
1140 case ZBLIB_SERVICE_OPS_ENABLE: {
1141 service_request_data = NULL;
1145 case ZBLIB_SERVICE_OPS_DISABLE: {
1146 service_request_data = NULL;
1150 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
1151 service_request_data = NULL;
1155 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
1156 service_request_data = NULL;
1160 case ZBLIB_SERVICE_OPS_COEX_START: {
1161 ZigbeeServiceCoexStart_t *in_req;
1162 ZigbeeServiceCoexStart_t *req = NULL;
1164 in_req = (ZigbeeServiceCoexStart_t *)request_data;
1165 if (NULL != in_req) {
1166 /* Allocate memory */
1167 req = (ZigbeeServiceCoexStart_t *)
1168 g_malloc0(sizeof(ZigbeeServiceCoexStart_t));
1171 req->channel = in_req->channel;
1174 service_request_data = (gpointer)req;
1178 case ZBLIB_SERVICE_OPS_COEX_STOP: {
1179 service_request_data = NULL;
1183 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
1184 service_request_data = NULL;
1188 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
1189 service_request_data = NULL;
1193 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
1194 ZigbeeServicePermitJoin_t *in_req;
1195 ZigbeeServicePermitJoin_t *req = NULL;
1197 in_req = (ZigbeeServicePermitJoin_t *)request_data;
1198 if (NULL != in_req) {
1199 /* Allocate memory */
1200 req = (ZigbeeServicePermitJoin_t *)
1201 g_malloc0(sizeof(ZigbeeServicePermitJoin_t));
1204 req->permit_join = in_req->permit_join;
1205 req->duration = in_req->duration;
1208 service_request_data = (gpointer)req;
1212 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
1213 ZigbeeServiceLeaveRequest_t *in_req;
1214 ZigbeeServiceLeaveRequest_t *req = NULL;
1216 in_req = (ZigbeeServiceLeaveRequest_t *)request_data;
1217 if (NULL != in_req) {
1218 /* Allocate memory */
1219 req = (ZigbeeServiceLeaveRequest_t *)
1220 g_malloc0(sizeof(ZigbeeServiceLeaveRequest_t));
1223 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1224 req->remove_child = in_req->remove_child;
1225 req->rejoin = in_req->rejoin;
1228 service_request_data = (gpointer)req;
1232 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
1233 service_request_data = NULL;
1237 case ZBLIB_SERVICE_OPS_GET_MAC: {
1238 service_request_data = NULL;
1242 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
1243 service_request_data = NULL;
1247 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
1248 ZigbeeServiceGetEndpointList_t *in_req;
1249 ZigbeeServiceGetEndpointList_t *req = NULL;
1251 in_req = (ZigbeeServiceGetEndpointList_t *)request_data;
1252 if (NULL != in_req) {
1253 /* Allocate memory */
1254 req = (ZigbeeServiceGetEndpointList_t *)
1255 g_malloc0(sizeof(ZigbeeServiceGetEndpointList_t));
1258 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1261 service_request_data = (gpointer)req;
1265 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
1266 ZigbeeServiceGetClusterList_t *in_req;
1267 ZigbeeServiceGetClusterList_t *req = NULL;
1269 in_req = (ZigbeeServiceGetClusterList_t *)request_data;
1270 if (NULL != in_req) {
1271 /* Allocate memory */
1272 req = (ZigbeeServiceGetClusterList_t *)
1273 g_malloc0(sizeof(ZigbeeServiceGetClusterList_t));
1276 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1277 req->endpoint = in_req->endpoint;
1280 service_request_data = (gpointer)req;
1284 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
1285 ZigbeeServiceGetNodeType_t *in_req;
1286 ZigbeeServiceGetNodeType_t *req = NULL;
1288 in_req = (ZigbeeServiceGetNodeType_t *)request_data;
1289 if (NULL != in_req) {
1290 /* Allocate memory */
1291 req = (ZigbeeServiceGetNodeType_t *)
1292 g_malloc0(sizeof(ZigbeeServiceGetNodeType_t));
1295 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1298 service_request_data = (gpointer)req;
1303 Z_LOGE("Unexpected operation [%x]", ops_id);
1307 return service_request_data;
1310 static gpointer __zblib_request_create_zcl_thermostat_request_data(guint request_type,
1311 gpointer request_data, guint request_data_len)
1313 gpointer thermostat_request_data = NULL;
1316 NOT_USED(request_data_len);
1319 ops_id = __zblib_request_get_ops_id(request_type);
1321 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
1322 ZigbeeZclThermostatGetLocalTemp_t *in_req;
1323 ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
1325 in_req = (ZigbeeZclThermostatGetLocalTemp_t *)request_data;
1326 if (NULL != in_req) {
1327 /* Allocate memory */
1328 req = (ZigbeeZclThermostatGetLocalTemp_t *)
1329 g_malloc0(sizeof(ZigbeeZclThermostatGetLocalTemp_t));
1332 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1333 req->endpoint = in_req->endpoint;
1336 thermostat_request_data = (gpointer)req;
1340 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
1341 ZigbeeZclThermostatGetWeeklySchedule_t *in_req;
1342 ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
1344 in_req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request_data;
1345 if (NULL != in_req) {
1346 /* Allocate memory */
1347 req = (ZigbeeZclThermostatGetWeeklySchedule_t *)
1348 g_malloc0(sizeof(ZigbeeZclThermostatGetWeeklySchedule_t));
1351 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1352 req->endpoint = in_req->endpoint;
1353 req->num_of_days = in_req->num_of_days;
1354 req->mode = in_req->mode;
1357 thermostat_request_data = (gpointer)req;
1361 case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
1362 ZigbeeZclThermostatSetWeeklySchedule_t *in_req;
1363 ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
1365 in_req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request_data;
1366 if (NULL != in_req) {
1367 /* Allocate memory */
1368 req = (ZigbeeZclThermostatSetWeeklySchedule_t *)
1369 g_malloc0(sizeof(ZigbeeZclThermostatSetWeeklySchedule_t));
1372 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1373 req->endpoint = in_req->endpoint;
1374 req->no_of_transitions = in_req->no_of_transitions;
1375 req->num_of_days = in_req->num_of_days;
1376 req->mode = in_req->mode;
1377 memcpy(req->payload,
1378 in_req->payload, ZIGBEE_THERMSTAT_PAYLOAD_MAX_LEN);
1379 req->payload_len = in_req->payload_len;
1382 thermostat_request_data = (gpointer)req;
1386 case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
1387 ZigbeeZclThermostatClearWeeklySchedule_t *in_req;
1388 ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
1390 in_req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request_data;
1391 if (NULL != in_req) {
1392 /* Allocate memory */
1393 req = (ZigbeeZclThermostatClearWeeklySchedule_t *)
1394 g_malloc0(sizeof(ZigbeeZclThermostatClearWeeklySchedule_t));
1397 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1398 req->endpoint = in_req->endpoint;
1401 thermostat_request_data = (gpointer)req;
1405 case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
1406 ZigbeeZclThermostatSetpointRaiseLower_t *in_req;
1407 ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
1409 in_req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request_data;
1410 if (NULL != in_req) {
1411 /* Allocate memory */
1412 req = (ZigbeeZclThermostatSetpointRaiseLower_t *)
1413 g_malloc0(sizeof(ZigbeeZclThermostatSetpointRaiseLower_t));
1416 req->node_id = in_req->node_id;
1417 req->endpoint = in_req->endpoint;
1418 req->mode = in_req->mode;
1419 req->amount = in_req->amount;
1422 thermostat_request_data = (gpointer)req;
1430 return thermostat_request_data;
1433 static gpointer __zblib_request_create_zcl_basic_request_data(guint request_type,
1434 gpointer request_data, guint request_data_len)
1436 gpointer zclbasic_control_request_data = NULL;
1439 NOT_USED(request_data_len);
1442 ops_id = __zblib_request_get_ops_id(request_type);
1444 case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
1445 ZigbeeZclBasicResetFactoryDefault_t *in_req;
1446 ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
1448 in_req = (ZigbeeZclBasicResetFactoryDefault_t *)request_data;
1449 if (NULL != in_req) {
1450 /* Allocate memory */
1451 req = (ZigbeeZclBasicResetFactoryDefault_t *)
1452 g_malloc0(sizeof(ZigbeeZclBasicResetFactoryDefault_t));
1455 req->node_id = in_req->node_id;
1456 req->dest_ep = in_req->dest_ep;
1459 zclbasic_control_request_data = (gpointer)req;
1467 return zclbasic_control_request_data;
1470 static gpointer __zblib_request_create_zcl_global_control_request_data(guint request_type,
1471 gpointer request_data, guint request_data_len)
1473 gpointer zclglobal_control_request_data = NULL;
1476 NOT_USED(request_data_len);
1479 ops_id = __zblib_request_get_ops_id(request_type);
1481 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
1482 ZigbeeZclGlobalControlReadAttributesRequest_t *in_req;
1483 ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
1485 in_req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request_data;
1486 if (NULL != in_req) {
1488 /* Allocate memory */
1489 req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)
1490 g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesRequest_t));
1493 for (i = 0; i < (in_req->attribute_id_len * sizeof(short)); i++)
1494 Z_LOGE("in_req->attribute_id[%d] = 0x%X", i, in_req->attribute_id[i]);
1495 req->attribute_id = g_memdup(in_req->attribute_id,
1496 in_req->attribute_id_len * sizeof(short));
1497 req->attribute_id_len = in_req->attribute_id_len;
1498 req->node_id = in_req->node_id;
1499 req->cluster_id = in_req->cluster_id;
1500 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1501 req->dest_ep = in_req->dest_ep;
1504 zclglobal_control_request_data = (gpointer)req;
1508 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
1509 ZigbeeZclGlobalControlWriteAttributesRequest_t *in_req;
1510 ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
1512 in_req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request_data;
1513 if (NULL != in_req) {
1514 /* Allocate memory */
1515 req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)
1516 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesRequest_t));
1519 req->write_records = g_memdup(in_req->write_records, in_req->records_len);
1520 req->records_len = in_req->records_len;
1521 req->node_id = in_req->node_id;
1522 req->cluster_id = in_req->cluster_id;
1523 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1524 req->src_ep = in_req->src_ep;
1525 req->dest_ep = in_req->dest_ep;
1528 zclglobal_control_request_data = (gpointer)req;
1532 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
1533 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *in_req;
1534 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
1536 in_req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request_data;
1537 if (NULL != in_req) {
1538 /* Allocate memory */
1539 req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)
1540 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t));
1543 req->write_records = g_memdup(in_req->write_records, in_req->records_len);
1544 req->records_len = in_req->records_len;
1545 req->node_id = in_req->node_id;
1546 req->cluster_id = in_req->cluster_id;
1547 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1548 req->src_ep = in_req->src_ep;
1549 req->dest_ep = in_req->dest_ep;
1552 zclglobal_control_request_data = (gpointer)req;
1556 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
1557 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *in_req;
1558 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
1560 in_req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request_data;
1561 if (NULL != in_req) {
1562 /* Allocate memory */
1563 req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)
1564 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesNoResponse_t));
1567 req->write_records = g_memdup(in_req->write_records, in_req->records_len);
1568 req->records_len = in_req->records_len;
1569 req->node_id = in_req->node_id;
1570 req->cluster_id = in_req->cluster_id;
1571 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1572 req->src_ep = in_req->src_ep;
1573 req->dest_ep = in_req->dest_ep;
1576 zclglobal_control_request_data = (gpointer)req;
1580 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
1581 ZigbeeZclGlobalControlWriteAttributesStructed_t *in_req;
1582 ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
1584 in_req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request_data;
1585 if (NULL != in_req) {
1586 /* Allocate memory */
1587 req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)
1588 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesStructed_t));
1591 req->write_records = g_memdup(in_req->write_records, in_req->records_len);
1592 req->records_len = in_req->records_len;
1593 req->node_id = in_req->node_id;
1594 req->cluster_id = in_req->cluster_id;
1595 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1596 req->src_ep = in_req->src_ep;
1597 req->dest_ep = in_req->dest_ep;
1600 zclglobal_control_request_data = (gpointer)req;
1604 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
1605 ZigbeeZclGlobalControlReadAttributesStructed_t *in_req;
1606 ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
1608 in_req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request_data;
1609 if (NULL != in_req) {
1610 /* Allocate memory */
1611 req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)
1612 g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesStructed_t));
1615 req->read_records = g_memdup(in_req->read_records, in_req->records_len);
1616 req->records_len = in_req->records_len;
1617 req->node_id = in_req->node_id;
1618 req->cluster_id = in_req->cluster_id;
1619 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1620 req->src_ep = in_req->src_ep;
1621 req->dest_ep = in_req->dest_ep;
1624 zclglobal_control_request_data = (gpointer)req;
1628 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
1629 ZigbeeZclGlobalControlConfigureReportingReq_t *in_req;
1630 ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
1632 in_req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request_data;
1633 if (NULL != in_req) {
1634 /* Allocate memory */
1635 req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)
1636 g_malloc0(sizeof(ZigbeeZclGlobalControlConfigureReportingReq_t));
1639 req->read_records = g_memdup(in_req->read_records, in_req->records_len);
1640 req->records_len = in_req->records_len;
1641 req->node_id = in_req->node_id;
1642 req->cluster_id = in_req->cluster_id;
1643 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1644 req->src_ep = in_req->src_ep;
1645 req->dest_ep = in_req->dest_ep;
1648 zclglobal_control_request_data = (gpointer)req;
1652 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
1653 ZigbeeZclGlobalControlReadConfigureReporting_t *in_req;
1654 ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
1656 in_req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request_data;
1657 if (NULL != in_req) {
1658 /* Allocate memory */
1659 req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)
1660 g_malloc0(sizeof(ZigbeeZclGlobalControlReadConfigureReporting_t));
1663 req->read_records = g_memdup(in_req->read_records, in_req->records_len);
1664 req->records_len = in_req->records_len;
1665 req->node_id = in_req->node_id;
1666 req->cluster_id = in_req->cluster_id;
1667 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1668 req->src_ep = in_req->src_ep;
1669 req->dest_ep = in_req->dest_ep;
1672 zclglobal_control_request_data = (gpointer)req;
1676 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
1677 ZigbeeZclGlobalControlDiscoverAttributes_t *in_req;
1678 ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
1680 in_req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request_data;
1681 if (NULL != in_req) {
1682 /* Allocate memory */
1683 req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)
1684 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributes_t));
1687 req->node_id = in_req->node_id;
1688 req->dest_ep = in_req->dest_ep;
1689 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1690 req->cluster_id = in_req->cluster_id;
1691 req->start_attribute = in_req->start_attribute;
1692 req->max_attribute_count = in_req->max_attribute_count;
1695 zclglobal_control_request_data = (gpointer)req;
1699 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
1700 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *in_req;
1701 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
1703 in_req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request_data;
1704 if (NULL != in_req) {
1705 /* Allocate memory */
1706 req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)
1707 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributesExtended_t));
1710 req->node_id = in_req->node_id;
1711 req->dest_ep = in_req->dest_ep;
1712 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1713 req->cluster_id = in_req->cluster_id;
1714 req->start_attribute = in_req->start_attribute;
1715 req->max_attribute_count = in_req->max_attribute_count;
1718 zclglobal_control_request_data = (gpointer)req;
1722 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
1723 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *in_req;
1724 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
1726 in_req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request_data;
1727 if (NULL != in_req) {
1728 /* Allocate memory */
1729 req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)
1730 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsReceived_t));
1733 req->node_id = in_req->node_id;
1734 req->dest_ep = in_req->dest_ep;
1735 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1736 req->cluster_id = in_req->cluster_id;
1737 req->start_command = in_req->start_command;
1738 req->max_command_count = in_req->max_command_count;
1741 zclglobal_control_request_data = (gpointer)req;
1745 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
1746 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *in_req;
1747 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
1749 in_req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request_data;
1750 if (NULL != in_req) {
1751 /* Allocate memory */
1752 req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)
1753 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsGenerated_t));
1756 req->node_id = in_req->node_id;
1757 req->dest_ep = in_req->dest_ep;
1758 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1759 req->cluster_id = in_req->cluster_id;
1760 req->start_command = in_req->start_command;
1761 req->max_command_count = in_req->max_command_count;
1764 zclglobal_control_request_data = (gpointer)req;
1772 return zclglobal_control_request_data;
1775 static gpointer __zblib_request_create_zcl_ias_zone_request_data(guint request_type,
1776 gpointer request_data, guint request_data_len)
1778 gpointer zclias_control_request_data = NULL;
1781 NOT_USED(request_data_len);
1784 ops_id = __zblib_request_get_ops_id(request_type);
1786 case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
1787 ZigbeeZclIasZoneEnrollResponse_t *in_req;
1788 ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
1790 in_req = (ZigbeeZclIasZoneEnrollResponse_t *)request_data;
1791 if (NULL != in_req) {
1792 /* Allocate memory */
1793 req = (ZigbeeZclIasZoneEnrollResponse_t *)
1794 g_malloc0(sizeof(ZigbeeZclIasZoneEnrollResponse_t));
1797 req->node_id = in_req->node_id;
1798 req->dest_ep = in_req->dest_ep;
1799 req->enroll_code = in_req->enroll_code;
1800 req->zone_id = in_req->zone_id;
1803 zclias_control_request_data = (gpointer)req;
1811 return zclias_control_request_data;
1814 static gpointer __zblib_request_create_zcl_identify_request_data(guint request_type,
1815 gpointer request_data, guint request_data_len)
1817 gpointer zclidentify_control_request_data = NULL;
1820 NOT_USED(request_data_len);
1823 ops_id = __zblib_request_get_ops_id(request_type);
1825 case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
1826 ZigbeeZclIdentifyIdentify_t *in_req;
1827 ZigbeeZclIdentifyIdentify_t *req = NULL;
1829 in_req = (ZigbeeZclIdentifyIdentify_t *)request_data;
1830 if (NULL != in_req) {
1831 /* Allocate memory */
1832 req = (ZigbeeZclIdentifyIdentify_t *)
1833 g_malloc0(sizeof(ZigbeeZclIdentifyIdentify_t));
1836 req->node_id = in_req->node_id;
1837 req->dest_ep = in_req->dest_ep;
1838 req->identify_time = in_req->identify_time;
1841 zclidentify_control_request_data = (gpointer)req;
1845 case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
1846 ZigbeeZclIdentifyQuery_t *in_req;
1847 ZigbeeZclIdentifyQuery_t *req = NULL;
1849 in_req = (ZigbeeZclIdentifyQuery_t *)request_data;
1850 if (NULL != in_req) {
1851 /* Allocate memory */
1852 req = (ZigbeeZclIdentifyQuery_t *)
1853 g_malloc0(sizeof(ZigbeeZclIdentifyQuery_t));
1856 req->node_id = in_req->node_id;
1859 zclidentify_control_request_data = (gpointer)req;
1867 return zclidentify_control_request_data;
1870 static gpointer __zblib_request_create_zcl_color_control_request_data(guint request_type,
1871 gpointer request_data, guint request_data_len)
1873 gpointer zcl_color_request_data = NULL;
1876 NOT_USED(request_data_len);
1879 ops_id = __zblib_request_get_ops_id(request_type);
1881 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
1882 ZigbeeZclColorControlMoveToHue_t *in_req;
1883 ZigbeeZclColorControlMoveToHue_t *req = NULL;
1885 in_req = (ZigbeeZclColorControlMoveToHue_t *)request_data;
1886 if (NULL != in_req) {
1887 /* Allocate memory */
1888 req = (ZigbeeZclColorControlMoveToHue_t *)
1889 g_malloc0(sizeof(ZigbeeZclColorControlMoveToHue_t));
1892 req->node_id = in_req->node_id;
1893 req->dest_ep = in_req->dest_ep;
1894 req->hue = in_req->hue;
1895 req->direction = in_req->direction;
1896 req->transition_time = in_req->transition_time;
1899 zcl_color_request_data = (gpointer)req;
1903 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
1904 ZigbeeZclColorControlMoveHue_t *in_req;
1905 ZigbeeZclColorControlMoveHue_t *req = NULL;
1907 in_req = (ZigbeeZclColorControlMoveHue_t *)request_data;
1908 if (NULL != in_req) {
1909 /* Allocate memory */
1910 req = (ZigbeeZclColorControlMoveHue_t *)
1911 g_malloc0(sizeof(ZigbeeZclColorControlMoveHue_t));
1914 req->node_id = in_req->node_id;
1915 req->dest_ep = in_req->dest_ep;
1916 req->move_mode = in_req->move_mode;
1917 req->rate = in_req->rate;
1920 zcl_color_request_data = (gpointer)req;
1924 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
1925 ZigbeeZclColorControlStepHue_t *in_req;
1926 ZigbeeZclColorControlStepHue_t *req = NULL;
1928 in_req = (ZigbeeZclColorControlStepHue_t *)request_data;
1929 if (NULL != in_req) {
1930 /* Allocate memory */
1931 req = (ZigbeeZclColorControlStepHue_t *)
1932 g_malloc0(sizeof(ZigbeeZclColorControlStepHue_t));
1935 req->node_id = in_req->node_id;
1936 req->dest_ep = in_req->dest_ep;
1937 req->step_mode = in_req->step_mode;
1938 req->step_size = in_req->step_size;
1939 req->transition_time = in_req->transition_time;
1942 zcl_color_request_data = (gpointer)req;
1946 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
1947 ZigbeeZclColorControlMoveToSaturation_t *in_req;
1948 ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
1950 in_req = (ZigbeeZclColorControlMoveToSaturation_t *)request_data;
1951 if (NULL != in_req) {
1952 /* Allocate memory */
1953 req = (ZigbeeZclColorControlMoveToSaturation_t *)
1954 g_malloc0(sizeof(ZigbeeZclColorControlMoveToSaturation_t));
1957 req->node_id = in_req->node_id;
1958 req->dest_ep = in_req->dest_ep;
1959 req->saturation = in_req->saturation;
1960 req->transition_time = in_req->transition_time;
1963 zcl_color_request_data = (gpointer)req;
1967 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
1968 ZigbeeZclColorControlMoveSaturation_t *in_req;
1969 ZigbeeZclColorControlMoveSaturation_t *req = NULL;
1971 in_req = (ZigbeeZclColorControlMoveSaturation_t *)request_data;
1972 if (NULL != in_req) {
1973 /* Allocate memory */
1974 req = (ZigbeeZclColorControlMoveSaturation_t *)
1975 g_malloc0(sizeof(ZigbeeZclColorControlMoveSaturation_t));
1978 req->node_id = in_req->node_id;
1979 req->dest_ep = in_req->dest_ep;
1980 req->move_mode = in_req->move_mode;
1981 req->rate = in_req->rate;
1984 zcl_color_request_data = (gpointer)req;
1988 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
1989 ZigbeeZclColorControlStepSaturation_t *in_req;
1990 ZigbeeZclColorControlStepSaturation_t *req = NULL;
1992 in_req = (ZigbeeZclColorControlStepSaturation_t *)request_data;
1993 if (NULL != in_req) {
1994 /* Allocate memory */
1995 req = (ZigbeeZclColorControlStepSaturation_t *)
1996 g_malloc0(sizeof(ZigbeeZclColorControlStepSaturation_t));
1999 req->node_id = in_req->node_id;
2000 req->dest_ep = in_req->dest_ep;
2001 req->step_mode = in_req->step_mode;
2002 req->step_size = in_req->step_size;
2003 req->transition_time = in_req->transition_time;
2006 zcl_color_request_data = (gpointer)req;
2010 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
2011 ZigbeeZclColorControlMoveToHueAndSaturation_t *in_req;
2012 ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
2014 in_req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request_data;
2015 if (NULL != in_req) {
2016 /* Allocate memory */
2017 req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)
2018 g_malloc0(sizeof(ZigbeeZclColorControlMoveToHueAndSaturation_t));
2021 req->node_id = in_req->node_id;
2022 req->dest_ep = in_req->dest_ep;
2023 req->hue = in_req->hue;
2024 req->saturation = in_req->saturation;
2025 req->transition_time = in_req->transition_time;
2028 zcl_color_request_data = (gpointer)req;
2032 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
2033 ZigbeeZclColorControlMoveToColor_t *in_req;
2034 ZigbeeZclColorControlMoveToColor_t *req = NULL;
2036 in_req = (ZigbeeZclColorControlMoveToColor_t *)request_data;
2037 if (NULL != in_req) {
2038 /* Allocate memory */
2039 req = (ZigbeeZclColorControlMoveToColor_t *)
2040 g_malloc0(sizeof(ZigbeeZclColorControlMoveToColor_t));
2043 req->node_id = in_req->node_id;
2044 req->dest_ep = in_req->dest_ep;
2045 req->color_x = in_req->color_x;
2046 req->color_y = in_req->color_y;
2047 req->transition_time = in_req->transition_time;
2050 zcl_color_request_data = (gpointer)req;
2054 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
2055 ZigbeeZclColorControlMoveColor_t *in_req;
2056 ZigbeeZclColorControlMoveColor_t *req = NULL;
2058 in_req = (ZigbeeZclColorControlMoveColor_t *)request_data;
2059 if (NULL != in_req) {
2060 /* Allocate memory */
2061 req = (ZigbeeZclColorControlMoveColor_t *)
2062 g_malloc0(sizeof(ZigbeeZclColorControlMoveColor_t));
2065 req->node_id = in_req->node_id;
2066 req->dest_ep = in_req->dest_ep;
2067 req->rate_x = in_req->rate_x;
2068 req->rate_y = in_req->rate_y;
2071 zcl_color_request_data = (gpointer)req;
2075 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
2076 ZigbeeZclColorControlStepColor_t *in_req;
2077 ZigbeeZclColorControlStepColor_t *req = NULL;
2079 in_req = (ZigbeeZclColorControlStepColor_t *)request_data;
2080 if (NULL != in_req) {
2081 /* Allocate memory */
2082 req = (ZigbeeZclColorControlStepColor_t *)
2083 g_malloc0(sizeof(ZigbeeZclColorControlStepColor_t));
2086 req->node_id = in_req->node_id;
2087 req->dest_ep = in_req->dest_ep;
2088 req->step_x = in_req->step_x;
2089 req->step_y = in_req->step_y;
2090 req->transition_time = in_req->transition_time;
2093 zcl_color_request_data = (gpointer)req;
2097 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
2098 ZigbeeZclColorControlMoveColorTemperature_t *in_req;
2099 ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
2101 in_req = (ZigbeeZclColorControlMoveColorTemperature_t *)request_data;
2102 if (NULL != in_req) {
2103 /* Allocate memory */
2104 req = (ZigbeeZclColorControlMoveColorTemperature_t *)
2105 g_malloc0(sizeof(ZigbeeZclColorControlMoveColorTemperature_t));
2108 req->node_id = in_req->node_id;
2109 req->dest_ep = in_req->dest_ep;
2110 req->color_temperature = in_req->color_temperature;
2111 req->transition_time = in_req->transition_time;
2114 zcl_color_request_data = (gpointer)req;
2122 return zcl_color_request_data;
2125 static gpointer __zblib_request_create_zcl_group_request_data(guint request_type,
2126 gpointer request_data, guint request_data_len)
2128 gpointer zcl_group_request_data = NULL;
2131 NOT_USED(request_data_len);
2134 ops_id = __zblib_request_get_ops_id(request_type);
2136 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
2137 ZigbeeZclGroupAddGroup_t *in_req;
2138 ZigbeeZclGroupAddGroup_t *req = NULL;
2140 in_req = (ZigbeeZclGroupAddGroup_t *)request_data;
2141 if (NULL != in_req) {
2142 /* Allocate memory */
2143 req = (ZigbeeZclGroupAddGroup_t *)
2144 g_malloc0(sizeof(ZigbeeZclGroupAddGroup_t));
2147 req->node_id = in_req->node_id;
2148 req->dest_ep = in_req->dest_ep;
2149 req->group_id = in_req->group_id;
2150 g_strlcpy(req->group_name,
2151 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2154 zcl_group_request_data = (gpointer)req;
2158 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
2159 ZigbeeZclGroupViewGroup_t *in_req;
2160 ZigbeeZclGroupViewGroup_t *req = NULL;
2162 in_req = (ZigbeeZclGroupViewGroup_t *)request_data;
2163 if (NULL != in_req) {
2164 /* Allocate memory */
2165 req = (ZigbeeZclGroupViewGroup_t *)
2166 g_malloc0(sizeof(ZigbeeZclGroupViewGroup_t));
2169 req->node_id = in_req->node_id;
2170 req->dest_ep = in_req->dest_ep;
2171 req->group_id = in_req->group_id;
2174 zcl_group_request_data = (gpointer)req;
2178 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
2179 ZigbeeZclGroupGetGroupMembership_t *in_req;
2180 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
2182 in_req = (ZigbeeZclGroupGetGroupMembership_t *)request_data;
2183 if (NULL != in_req) {
2184 /* Allocate memory */
2185 req = (ZigbeeZclGroupGetGroupMembership_t *)
2186 g_malloc0(sizeof(ZigbeeZclGroupGetGroupMembership_t));
2189 req->node_id = in_req->node_id;
2190 req->dest_ep = in_req->dest_ep;
2191 req->group_count = in_req->group_count;
2192 req->group_list = (gushort *)g_memdup(in_req->group_list,
2193 sizeof(gushort) * in_req->group_count);
2196 zcl_group_request_data = (gpointer)req;
2200 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
2201 ZigbeeZclGroupRemoveGroup_t *in_req;
2202 ZigbeeZclGroupRemoveGroup_t *req = NULL;
2204 in_req = (ZigbeeZclGroupRemoveGroup_t *)request_data;
2205 if (NULL != in_req) {
2206 /* Allocate memory */
2207 req = (ZigbeeZclGroupRemoveGroup_t *)
2208 g_malloc0(sizeof(ZigbeeZclGroupRemoveGroup_t));
2211 req->node_id = in_req->node_id;
2212 req->dest_ep = in_req->dest_ep;
2213 req->group_id = in_req->group_id;
2216 zcl_group_request_data = (gpointer)req;
2220 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
2221 ZigbeeZclGroupRemoveAllGroup_t *in_req;
2222 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
2224 in_req = (ZigbeeZclGroupRemoveAllGroup_t *)request_data;
2225 if (NULL != in_req) {
2226 /* Allocate memory */
2227 req = (ZigbeeZclGroupRemoveAllGroup_t *)
2228 g_malloc0(sizeof(ZigbeeZclGroupRemoveAllGroup_t));
2231 req->node_id = in_req->node_id;
2232 req->dest_ep = in_req->dest_ep;
2235 zcl_group_request_data = (gpointer)req;
2239 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
2240 ZigbeeZclGroupAddGroupIfIdentifying_t *in_req;
2241 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
2243 in_req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request_data;
2244 if (NULL != in_req) {
2245 /* Allocate memory */
2246 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)
2247 g_malloc0(sizeof(ZigbeeZclGroupAddGroupIfIdentifying_t));
2250 req->node_id = in_req->node_id;
2251 req->dest_ep = in_req->dest_ep;
2252 req->group_id = in_req->group_id;
2253 g_strlcpy(req->group_name,
2254 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2257 zcl_group_request_data = (gpointer)req;
2265 return zcl_group_request_data;
2268 static gpointer __zblib_request_create_zcl_poll_control_request_data(guint request_type,
2269 gpointer request_data, guint request_data_len)
2271 gpointer zcl_poll_control_request_data = NULL;
2274 NOT_USED(request_data_len);
2277 ops_id = __zblib_request_get_ops_id(request_type);
2279 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
2280 ZigbeeZclPollControlCheckInResponse_t *in_req;
2281 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
2283 in_req = (ZigbeeZclPollControlCheckInResponse_t *)request_data;
2284 if (NULL != in_req) {
2285 /* Allocate memory */
2286 req = (ZigbeeZclPollControlCheckInResponse_t *)
2287 g_malloc0(sizeof(ZigbeeZclPollControlCheckInResponse_t));
2290 req->node_id = in_req->node_id;
2291 req->dest_ep = in_req->dest_ep;
2292 req->start_fast_polling = in_req->start_fast_polling;
2293 req->fast_poll_timeout = in_req->fast_poll_timeout;
2296 zcl_poll_control_request_data = (gpointer)req;
2300 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
2301 ZigbeeZclPollControlFastPollStop_t *in_req;
2302 ZigbeeZclPollControlFastPollStop_t *req = NULL;
2304 in_req = (ZigbeeZclPollControlFastPollStop_t *)request_data;
2305 if (NULL != in_req) {
2306 /* Allocate memory */
2307 req = (ZigbeeZclPollControlFastPollStop_t *)
2308 g_malloc0(sizeof(ZigbeeZclPollControlFastPollStop_t));
2311 req->node_id = in_req->node_id;
2312 req->dest_ep = in_req->dest_ep;
2315 zcl_poll_control_request_data = (gpointer)req;
2319 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
2320 ZigbeeZclPollControlSetLongPollInterval_t *in_req;
2321 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
2323 in_req = (ZigbeeZclPollControlSetLongPollInterval_t *)request_data;
2324 if (NULL != in_req) {
2325 /* Allocate memory */
2326 req = (ZigbeeZclPollControlSetLongPollInterval_t *)
2327 g_malloc0(sizeof(ZigbeeZclPollControlSetLongPollInterval_t));
2330 req->node_id = in_req->node_id;
2331 req->dest_ep = in_req->dest_ep;
2332 req->new_long_poll_interval = in_req->new_long_poll_interval;
2335 zcl_poll_control_request_data = (gpointer)req;
2339 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
2340 ZigbeeZclPollControlSetShortPollInterval_t *in_req;
2341 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
2343 in_req = (ZigbeeZclPollControlSetShortPollInterval_t *)request_data;
2344 if (NULL != in_req) {
2345 /* Allocate memory */
2346 req = (ZigbeeZclPollControlSetShortPollInterval_t *)
2347 g_malloc0(sizeof(ZigbeeZclPollControlSetShortPollInterval_t));
2350 req->node_id = in_req->node_id;
2351 req->dest_ep = in_req->dest_ep;
2352 req->new_short_poll_interval = in_req->new_short_poll_interval;
2355 zcl_poll_control_request_data = (gpointer)req;
2363 return zcl_poll_control_request_data;
2366 static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type,
2367 gpointer request_data, guint request_data_len)
2369 gpointer zcl_scene_request_data = NULL;
2372 NOT_USED(request_data_len);
2375 ops_id = __zblib_request_get_ops_id(request_type);
2377 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
2378 ZigbeeZclSceneAddScene_t *in_req;
2379 ZigbeeZclSceneAddScene_t *req = NULL;
2381 in_req = (ZigbeeZclSceneAddScene_t *)request_data;
2382 if (NULL != in_req) {
2383 /* Allocate memory */
2384 req = (ZigbeeZclSceneAddScene_t *)
2385 g_malloc0(sizeof(ZigbeeZclSceneAddScene_t));
2388 req->node_id = in_req->node_id;
2389 req->dest_ep = in_req->dest_ep;
2390 req->group_id = in_req->group_id;
2391 req->scene_id = in_req->scene_id;
2392 req->transition_time = in_req->transition_time;
2393 g_strlcpy(req->scene_name,
2394 in_req->scene_name, ZIGBEE_ZCL_SCENE_NAME_MAX_LEN + 1);
2395 req->ext_field_set_len = in_req->ext_field_set_len;
2396 req->ext_field_set = (guchar *)g_memdup(in_req->ext_field_set,
2397 in_req->ext_field_set_len);
2400 zcl_scene_request_data = (gpointer)req;
2404 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
2405 ZigbeeZclSceneViewScene_t *in_req;
2406 ZigbeeZclSceneViewScene_t *req = NULL;
2408 in_req = (ZigbeeZclSceneViewScene_t *)request_data;
2409 if (NULL != in_req) {
2410 /* Allocate memory */
2411 req = (ZigbeeZclSceneViewScene_t *)
2412 g_malloc0(sizeof(ZigbeeZclSceneViewScene_t));
2415 req->node_id = in_req->node_id;
2416 req->dest_ep = in_req->dest_ep;
2417 req->group_id = in_req->group_id;
2418 req->scene_id = in_req->scene_id;
2421 zcl_scene_request_data = (gpointer)req;
2425 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
2426 ZigbeeZclSceneRemoveScene_t *in_req;
2427 ZigbeeZclSceneRemoveScene_t *req = NULL;
2429 in_req = (ZigbeeZclSceneRemoveScene_t *)request_data;
2430 if (NULL != in_req) {
2431 /* Allocate memory */
2432 req = (ZigbeeZclSceneRemoveScene_t *)
2433 g_malloc0(sizeof(ZigbeeZclSceneRemoveScene_t));
2436 req->node_id = in_req->node_id;
2437 req->dest_ep = in_req->dest_ep;
2438 req->group_id = in_req->group_id;
2439 req->scene_id = in_req->scene_id;
2442 zcl_scene_request_data = (gpointer)req;
2446 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
2447 ZigbeeZclSceneStoreScene_t *in_req;
2448 ZigbeeZclSceneStoreScene_t *req = NULL;
2450 in_req = (ZigbeeZclSceneStoreScene_t *)request_data;
2451 if (NULL != in_req) {
2452 /* Allocate memory */
2453 req = (ZigbeeZclSceneStoreScene_t *)
2454 g_malloc0(sizeof(ZigbeeZclSceneStoreScene_t));
2457 req->node_id = in_req->node_id;
2458 req->dest_ep = in_req->dest_ep;
2459 req->group_id = in_req->group_id;
2460 req->scene_id = in_req->scene_id;
2463 zcl_scene_request_data = (gpointer)req;
2467 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
2468 ZigbeeZclSceneRecallScene_t *in_req;
2469 ZigbeeZclSceneRecallScene_t *req = NULL;
2471 in_req = (ZigbeeZclSceneRecallScene_t *)request_data;
2472 if (NULL != in_req) {
2473 /* Allocate memory */
2474 req = (ZigbeeZclSceneRecallScene_t *)
2475 g_malloc0(sizeof(ZigbeeZclSceneRecallScene_t));
2478 req->node_id = in_req->node_id;
2479 req->dest_ep = in_req->dest_ep;
2480 req->group_id = in_req->group_id;
2481 req->scene_id = in_req->scene_id;
2484 zcl_scene_request_data = (gpointer)req;
2488 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
2489 ZigbeeZclSceneRemoveAllScene_t *in_req;
2490 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
2492 in_req = (ZigbeeZclSceneRemoveAllScene_t *)request_data;
2493 if (NULL != in_req) {
2494 /* Allocate memory */
2495 req = (ZigbeeZclSceneRemoveAllScene_t *)
2496 g_malloc0(sizeof(ZigbeeZclSceneRemoveAllScene_t));
2499 req->node_id = in_req->node_id;
2500 req->dest_ep = in_req->dest_ep;
2501 req->group_id = in_req->group_id;
2504 zcl_scene_request_data = (gpointer)req;
2508 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
2509 ZigbeeZclSceneGetSceneMembership_t *in_req;
2510 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
2512 in_req = (ZigbeeZclSceneGetSceneMembership_t *)request_data;
2513 if (NULL != in_req) {
2514 /* Allocate memory */
2515 req = (ZigbeeZclSceneGetSceneMembership_t *)
2516 g_malloc0(sizeof(ZigbeeZclSceneGetSceneMembership_t));
2519 req->node_id = in_req->node_id;
2520 req->dest_ep = in_req->dest_ep;
2521 req->group_id = in_req->group_id;
2524 zcl_scene_request_data = (gpointer)req;
2532 return zcl_scene_request_data;
2535 static gpointer __zblib_request_create_zdo_dev_control_request_data(guint request_type,
2536 gpointer request_data, guint request_data_len)
2538 gpointer zdodev_control_request_data = NULL;
2541 NOT_USED(request_data_len);
2544 ops_id = __zblib_request_get_ops_id(request_type);
2546 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
2547 ZigbeeZdoDevControlNwkAddrReq_t *in_req;
2548 ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
2550 in_req = (ZigbeeZdoDevControlNwkAddrReq_t *)request_data;
2551 if (NULL != in_req) {
2552 /* Allocate memory */
2553 req = (ZigbeeZdoDevControlNwkAddrReq_t *)
2554 g_malloc0(sizeof(ZigbeeZdoDevControlNwkAddrReq_t));
2557 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
2558 req->request_type = in_req->request_type;
2559 req->start_index = in_req->start_index;
2562 zdodev_control_request_data = (gpointer)req;
2566 case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
2567 ZigbeeZdoDevControlMatchedDescriptorReq_t *in_req;
2568 ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
2570 in_req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request_data;
2571 if (NULL != in_req) {
2572 /* Allocate memory */
2573 req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)
2574 g_malloc0(sizeof(ZigbeeZdoDevControlMatchedDescriptorReq_t));
2577 req->node_id = in_req->node_id;
2578 req->profile_id = in_req->profile_id;
2579 req->num_in_cl = in_req->num_in_cl;
2580 if (in_req->num_in_cl > 0) {
2581 req->in_cl = g_malloc0_n(in_req->num_in_cl, sizeof(unsigned short));
2582 memcpy(req->in_cl, in_req->in_cl,
2583 in_req->num_in_cl * sizeof(unsigned short));
2585 req->num_out_cl = in_req->num_out_cl;
2586 if (in_req->num_out_cl > 0) {
2587 req->out_cl = g_malloc0_n(in_req->num_out_cl, sizeof(unsigned short));
2588 memcpy(req->out_cl, in_req->out_cl,
2589 in_req->num_out_cl * sizeof(unsigned short));
2593 zdodev_control_request_data = (gpointer)req;
2597 case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
2598 ZigbeeZdoDevControlIeeeAddrReq_t *in_req;
2599 ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
2601 in_req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request_data;
2602 if (NULL != in_req) {
2603 /* Allocate memory */
2604 req = (ZigbeeZdoDevControlIeeeAddrReq_t *)
2605 g_malloc0(sizeof(ZigbeeZdoDevControlIeeeAddrReq_t));
2608 req->node_id = in_req->node_id;
2611 zdodev_control_request_data = (gpointer)req;
2615 case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
2616 ZigbeeZdoDevControlActiveEpReq_t *in_req;
2617 ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
2619 in_req = (ZigbeeZdoDevControlActiveEpReq_t *)request_data;
2620 if (NULL != in_req) {
2621 /* Allocate memory */
2622 req = (ZigbeeZdoDevControlActiveEpReq_t *)
2623 g_malloc0(sizeof(ZigbeeZdoDevControlActiveEpReq_t));
2626 req->node_id = in_req->node_id;
2629 zdodev_control_request_data = (gpointer)req;
2633 case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
2634 ZigbeeZdoDevControlNodeDescriptorReq_t *in_req;
2635 ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
2637 in_req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request_data;
2638 if (NULL != in_req) {
2639 /* Allocate memory */
2640 req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)
2641 g_malloc0(sizeof(ZigbeeZdoDevControlNodeDescriptorReq_t));
2644 req->node_id = in_req->node_id;
2647 zdodev_control_request_data = (gpointer)req;
2651 case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
2652 ZigbeeZdoDevControlPowerDescriptorReq_t *in_req;
2653 ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
2655 in_req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request_data;
2656 if (NULL != in_req) {
2657 /* Allocate memory */
2658 req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)
2659 g_malloc0(sizeof(ZigbeeZdoDevControlPowerDescriptorReq_t));
2662 req->node_id = in_req->node_id;
2665 zdodev_control_request_data = (gpointer)req;
2669 case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
2670 ZigbeeZdoDevControlComplexDescriptorReq_t *in_req;
2671 ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
2673 in_req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request_data;
2674 if (NULL != in_req) {
2675 /* Allocate memory */
2676 req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)
2677 g_malloc0(sizeof(ZigbeeZdoDevControlComplexDescriptorReq_t));
2680 req->node_id = in_req->node_id;
2683 zdodev_control_request_data = (gpointer)req;
2687 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
2688 ZigbeeZdoDevControlUserDescriptorReq_t *in_req;
2689 ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
2691 in_req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request_data;
2692 if (NULL != in_req) {
2693 /* Allocate memory */
2694 req = (ZigbeeZdoDevControlUserDescriptorReq_t *)
2695 g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorReq_t));
2698 req->node_id = in_req->node_id;
2701 zdodev_control_request_data = (gpointer)req;
2705 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
2706 ZigbeeZdoDevControlUserDescriptorSetReq_t *in_req;
2707 ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
2709 in_req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request_data;
2710 if (NULL != in_req) {
2711 /* Allocate memory */
2712 req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)
2713 g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorSetReq_t));
2716 req->node_id = in_req->node_id;
2717 req->user_descriptor_len = in_req->user_descriptor_len;
2718 memcpy(req->user_descriptor,
2719 in_req->user_descriptor, in_req->user_descriptor_len);
2722 zdodev_control_request_data = (gpointer)req;
2726 case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
2727 ZigbeeZdoDevControlDeviceAnnounce_t *in_req;
2728 ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
2730 in_req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request_data;
2731 if (NULL != in_req) {
2732 /* Allocate memory */
2733 req = (ZigbeeZdoDevControlDeviceAnnounce_t *)
2734 g_malloc0(sizeof(ZigbeeZdoDevControlDeviceAnnounce_t));
2737 req->node_id = in_req->node_id;
2738 memcpy(req->mac_addr, in_req->mac_addr, ZIGBEE_EUI64_SIZE);
2739 req->capability = in_req->capability;
2742 zdodev_control_request_data = (gpointer)req;
2746 case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
2747 ZigbeeZdoDevControlSimpleDescriptorReq_t *in_req;
2748 ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
2750 in_req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request_data;
2751 if (NULL != in_req) {
2752 /* Allocate memory */
2753 req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)
2754 g_malloc0(sizeof(ZigbeeZdoDevControlSimpleDescriptorReq_t));
2757 req->node_id = in_req->node_id;
2758 req->endpoint = in_req->endpoint;
2761 zdodev_control_request_data = (gpointer)req;
2765 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
2766 ZigbeeZdoDevControlMgmtLqiReq_t *in_req;
2767 ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
2769 in_req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request_data;
2770 if (NULL != in_req) {
2771 /* Allocate memory */
2772 req = (ZigbeeZdoDevControlMgmtLqiReq_t *)
2773 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtLqiReq_t));
2776 req->node_id = in_req->node_id;
2777 req->start_index = in_req->start_index;
2780 zdodev_control_request_data = (gpointer)req;
2784 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
2785 ZigbeeZdoDevControlMgmtRtgReq_t *in_req;
2786 ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
2788 in_req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request_data;
2789 if (NULL != in_req) {
2790 /* Allocate memory */
2791 req = (ZigbeeZdoDevControlMgmtRtgReq_t *)
2792 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtRtgReq_t));
2795 req->node_id = in_req->node_id;
2796 req->start_index = in_req->start_index;
2799 zdodev_control_request_data = (gpointer)req;
2803 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
2804 ZigbeeZdoDevControlMgmtBindReq_t *in_req;
2805 ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
2807 in_req = (ZigbeeZdoDevControlMgmtBindReq_t *)request_data;
2808 if (NULL != in_req) {
2809 /* Allocate memory */
2810 req = (ZigbeeZdoDevControlMgmtBindReq_t *)
2811 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtBindReq_t));
2814 req->node_id = in_req->node_id;
2815 req->start_index = in_req->start_index;
2818 zdodev_control_request_data = (gpointer)req;
2822 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
2823 ZigbeeZdoDevControlMgmtPermitJoinReq_t *in_req;
2824 ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
2826 in_req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request_data;
2827 if (NULL != in_req) {
2828 /* Allocate memory */
2829 req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)
2830 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtPermitJoinReq_t));
2833 req->node_id = in_req->node_id;
2834 req->duration = in_req->duration;
2835 req->tc_significance = in_req->tc_significance;
2838 zdodev_control_request_data = (gpointer)req;
2842 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_UPDATE_REQ: {
2843 ZigbeeZdoDevControlMgmtNwkUpdateReq_t *in_req;
2844 ZigbeeZdoDevControlMgmtNwkUpdateReq_t *req = NULL;
2846 in_req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)request_data;
2847 if (NULL != in_req) {
2848 /* Allocate memory */
2849 req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)
2850 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtNwkUpdateReq_t));
2853 req->node_id = in_req->node_id;
2854 req->scan_channel = in_req->scan_channel;
2855 req->scan_duration = in_req->scan_duration;
2856 req->scan_count = in_req->scan_count;
2857 req->network_update_id = in_req->network_update_id;
2860 zdodev_control_request_data = (gpointer)req;
2864 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_DISC_REQ: {
2865 ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *in_req;
2866 ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *req = NULL;
2868 in_req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)request_data;
2869 if (NULL != in_req) {
2870 /* Allocate memory */
2871 req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)
2872 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t));
2875 req->node_id = in_req->node_id;
2876 req->scan_channel = in_req->scan_channel;
2877 req->scan_duration = in_req->scan_duration;
2878 req->scan_count = in_req->scan_count;
2879 req->start_index = in_req->start_index;
2882 zdodev_control_request_data = (gpointer)req;
2890 return zdodev_control_request_data;
2893 static gpointer __zblib_request_create_zdo_bind_request_data(guint request_type,
2894 gpointer request_data, guint request_data_len)
2896 gpointer zdo_bind_request_data = NULL;
2899 NOT_USED(request_data_len);
2902 ops_id = __zblib_request_get_ops_id(request_type);
2904 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
2905 ZigbeeZdoBindBindReq_t *in_req;
2906 ZigbeeZdoBindBindReq_t *req = NULL;
2908 in_req = (ZigbeeZdoBindBindReq_t *)request_data;
2909 if (NULL != in_req) {
2910 /* Allocate memory */
2911 req = (ZigbeeZdoBindBindReq_t *)
2912 g_malloc0(sizeof(ZigbeeZdoBindBindReq_t));
2915 req->node_id = in_req->node_id;
2916 memcpy(req->src_addr, in_req->src_addr, ZIGBEE_EUI64_SIZE);
2917 req->src_ep = in_req->src_ep;
2918 req->cluster_id = in_req->cluster_id;
2919 memcpy(req->dst_addr, in_req->dst_addr, ZIGBEE_EUI64_SIZE);
2920 req->bind_type = in_req->bind_type;
2921 req->group_addr = in_req->group_addr;
2922 req->dst_ep = in_req->dst_ep;
2925 zdo_bind_request_data = (gpointer)req;
2929 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
2930 ZigbeeZdoBindUnbindReq_t *in_req;
2931 ZigbeeZdoBindUnbindReq_t *req = NULL;
2933 in_req = (ZigbeeZdoBindUnbindReq_t *)request_data;
2934 if (NULL != in_req) {
2935 /* Allocate memory */
2936 req = (ZigbeeZdoBindUnbindReq_t *)
2937 g_malloc0(sizeof(ZigbeeZdoBindUnbindReq_t));
2940 req->node_id = in_req->node_id;
2941 memcpy(req->src_addr, in_req->src_addr, ZIGBEE_EUI64_SIZE);
2942 req->src_ep = in_req->src_ep;
2943 req->cluster_id = in_req->cluster_id;
2944 memcpy(req->dst_addr, in_req->dst_addr, ZIGBEE_EUI64_SIZE);
2945 req->bind_type = in_req->bind_type;
2946 req->group_addr = in_req->group_addr;
2947 req->dst_ep = in_req->dst_ep;
2950 zdo_bind_request_data = (gpointer)req;
2958 return zdo_bind_request_data;
2962 static gpointer __zblib_request_create_request_data(guint request_type,
2963 gpointer request_data, guint request_data_len)
2965 gpointer _request_data = NULL;
2966 ZblibDriverType_e driver_type;
2968 /* Fetch driver type */
2969 driver_type = __zblib_request_get_driver_type(request_type);
2970 switch (driver_type) {
2971 case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
2972 _request_data = __zblib_request_create_zcl_alarm_request_data(request_type,
2973 request_data, request_data_len);
2977 case ZBLIB_DRIVER_TYPE_CUSTOM: {
2978 _request_data = __zblib_request_create_custom_request_data(request_type,
2979 request_data, request_data_len);
2983 case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
2984 _request_data = __zblib_request_create_zcl_door_lock_request_data(request_type,
2985 request_data, request_data_len);
2989 case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
2990 _request_data = __zblib_request_create_zcl_fan_control_request_data(request_type,
2991 request_data, request_data_len);
2995 case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
2996 _request_data = __zblib_request_create_zcl_level_control_request_data(request_type,
2997 request_data, request_data_len);
3001 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
3002 _request_data = __zblib_request_create_mfglib_control_request_data(request_type,
3003 request_data, request_data_len);
3007 case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
3008 _request_data = __zblib_request_create_zcl_on_off_request_data(request_type,
3009 request_data, request_data_len);
3013 case ZBLIB_DRIVER_TYPE_SERVICE: {
3014 _request_data = __zblib_request_create_service_request_data(request_type,
3015 request_data, request_data_len);
3019 case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
3020 _request_data = __zblib_request_create_zcl_thermostat_request_data(request_type,
3021 request_data, request_data_len);
3025 case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
3026 _request_data = __zblib_request_create_zcl_basic_request_data(request_type,
3027 request_data, request_data_len);
3031 case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
3032 _request_data = __zblib_request_create_zcl_global_control_request_data(request_type,
3033 request_data, request_data_len);
3037 case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
3038 _request_data = __zblib_request_create_zcl_ias_zone_request_data(request_type,
3039 request_data, request_data_len);
3043 case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
3044 _request_data = __zblib_request_create_zcl_identify_request_data(request_type,
3045 request_data, request_data_len);
3049 case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
3050 _request_data = __zblib_request_create_zcl_color_control_request_data(request_type,
3051 request_data, request_data_len);
3055 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
3056 _request_data = __zblib_request_create_zcl_group_request_data(request_type,
3057 request_data, request_data_len);
3061 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
3062 _request_data = __zblib_request_create_zcl_poll_control_request_data(request_type,
3063 request_data, request_data_len);
3067 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
3068 _request_data = __zblib_request_create_zcl_scene_request_data(request_type,
3069 request_data, request_data_len);
3073 case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
3074 _request_data = __zblib_request_create_zdo_dev_control_request_data(request_type,
3075 request_data, request_data_len);
3079 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
3080 _request_data = __zblib_request_create_zdo_bind_request_data(request_type,
3081 request_data, request_data_len);
3085 case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
3087 Z_LOGE("Unhandled driver type: [%d]", driver_type);
3092 return _request_data;
3095 static void __zblib_request_free_zcl_alarm_request_data(ZigBeeRequest *request,
3101 ops_id = __zblib_request_get_ops_id(request_type);
3103 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM_COUNT: {
3104 ZigbeeZclAlarmGetAlarmCount_t *req = NULL;
3106 req = (ZigbeeZclAlarmGetAlarmCount_t *)request->request_data;
3113 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM: {
3114 ZigbeeZclAlarmResetAlarm_t *req = NULL;
3116 req = (ZigbeeZclAlarmResetAlarm_t *)request->request_data;
3123 case ZBLIB_ZCL_ALARM_OPS_RESET_ALL_ALARM: {
3124 ZigbeeZclAlarmResetAllAlarm_t *req = NULL;
3126 req = (ZigbeeZclAlarmResetAllAlarm_t *)request->request_data;
3133 case ZBLIB_ZCL_ALARM_OPS_ALARM: {
3134 ZigbeeZclAlarmAlarm_t *req = NULL;
3136 req = (ZigbeeZclAlarmAlarm_t *)request->request_data;
3143 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM_LOG: {
3144 ZigbeeZclAlarmResetAlarmLogs_t *req = NULL;
3146 req = (ZigbeeZclAlarmResetAlarmLogs_t *)request->request_data;
3153 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
3162 static void __zblib_request_free_custom_request_data(ZigBeeRequest *request,
3168 ops_id = __zblib_request_get_ops_id(request_type);
3170 case ZBLIB_CUSTOM_OPS_APS_SEND: {
3171 ZigbeeCustomApsSend_t *req = NULL;
3173 req = (ZigbeeCustomApsSend_t *)request->request_data;
3180 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
3181 ZigbeeCustomZclSend_t *req = NULL;
3183 req = (ZigbeeCustomZclSend_t *)request->request_data;
3190 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
3191 ZigbeeCustomSendToLocal_t *req = NULL;
3193 req = (ZigbeeCustomSendToLocal_t *)request->request_data;
3205 static void __zblib_request_free_zcl_door_lock_request_data(ZigBeeRequest *request,
3211 ops_id = __zblib_request_get_ops_id(request_type);
3213 case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
3214 ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
3216 req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request->request_data;
3223 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
3224 ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
3226 req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request->request_data;
3233 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
3234 ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
3236 req = (ZigbeeZclDoorLockSetDoorLock_t *)request->request_data;
3243 case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
3244 ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
3246 req = (ZigbeeZclDoorLockGetDoorLock_t *)request->request_data;
3258 static void __zblib_request_free_zcl_fan_control_request_data(ZigBeeRequest *request,
3264 ops_id = __zblib_request_get_ops_id(request_type);
3266 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
3267 ZigbeeZclFanControlSetFanMode_t *req = NULL;
3269 req = (ZigbeeZclFanControlSetFanMode_t *)request->request_data;
3276 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
3277 ZigbeeZclFanControlGetFanMode_t *req = NULL;
3279 req = (ZigbeeZclFanControlGetFanMode_t *)request->request_data;
3286 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
3287 ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
3289 req = (ZigbeeZclFanControlSetFanModeSequence_t *)request->request_data;
3296 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
3297 ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
3299 req = (ZigbeeZclFanControlGetFanModeSequence_t *)request->request_data;
3311 static void __zblib_request_free_zcl_level_control_request_data(ZigBeeRequest *request,
3317 ops_id = __zblib_request_get_ops_id(request_type);
3319 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
3320 ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
3322 req = (ZigbeeZclLevelControlMoveToLevel_t *)request->request_data;
3329 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
3330 ZigbeeZclLevelControlMove_t *req = NULL;
3332 req = (ZigbeeZclLevelControlMove_t *)request->request_data;
3339 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
3340 ZigbeeZclLevelControlStep_t *req = NULL;
3342 req = (ZigbeeZclLevelControlStep_t *)request->request_data;
3349 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
3350 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
3352 req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request->request_data;
3359 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
3360 ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
3362 req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request->request_data;
3369 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
3370 ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
3372 req = (ZigbeeZclLevelControlStepWithOnOff_t *)request->request_data;
3379 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
3380 ZigbeeZclLevelControlStop_t *req = NULL;
3382 req = (ZigbeeZclLevelControlStop_t *)request->request_data;
3394 static void __zblib_request_free_mfglib_control_request_data(ZigBeeRequest *request,
3400 ops_id = __zblib_request_get_ops_id(request_type);
3402 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
3403 ZigbeeMfglibControlStart_t *req = NULL;
3405 req = (ZigbeeMfglibControlStart_t *)request->request_data;
3412 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
3413 ZigbeeMfglibControlEnd_t *req = NULL;
3415 req = (ZigbeeMfglibControlEnd_t *)request->request_data;
3422 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
3423 ZigbeeMfglibControlStartTone_t *req = NULL;
3425 req = (ZigbeeMfglibControlStartTone_t *)request->request_data;
3432 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
3433 ZigbeeMfglibControlStopTone_t *req = NULL;
3435 req = (ZigbeeMfglibControlStopTone_t *)request->request_data;
3442 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
3443 ZigbeeMfglibControlStartStream_t *req = NULL;
3445 req = (ZigbeeMfglibControlStartStream_t *)request->request_data;
3452 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
3453 ZigbeeMfglibControlStopStream_t *req = NULL;
3455 req = (ZigbeeMfglibControlStopStream_t *)request->request_data;
3462 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
3463 ZigbeeMfglibControlSendPacket_t *req = NULL;
3465 req = (ZigbeeMfglibControlSendPacket_t *)request->request_data;
3472 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
3473 ZigbeeMfglibControlSetChannel_t *req = NULL;
3475 req = (ZigbeeMfglibControlSetChannel_t *)request->request_data;
3482 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
3483 ZigbeeMfglibControlGetChannel_t *req = NULL;
3485 req = (ZigbeeMfglibControlGetChannel_t *)request->request_data;
3492 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
3493 ZigbeeMfglibControlSetPower_t *req = NULL;
3495 req = (ZigbeeMfglibControlSetPower_t *)request->request_data;
3502 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
3503 ZigbeeMfglibControlGetPower_t *req = NULL;
3505 req = (ZigbeeMfglibControlGetPower_t *)request->request_data;
3512 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
3513 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
3515 req = (ZigbeeMfglibControlSetSynOffset_t *)request->request_data;
3522 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
3523 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
3525 req = (ZigbeeMfglibControlGetSynOffset_t *)request->request_data;
3532 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
3533 ZigbeeMfglibControlRxStart_t *req = NULL;
3535 req = (ZigbeeMfglibControlRxStart_t *)request->request_data;
3542 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
3543 ZigbeeMfglibControlRxStop_t *req = NULL;
3545 req = (ZigbeeMfglibControlRxStop_t *)request->request_data;
3552 case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
3553 ZigbeeMfglibControlRxVerify_t *req = NULL;
3555 req = (ZigbeeMfglibControlRxVerify_t *)request->request_data;
3562 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
3563 ZigbeeMfglibControlGetRssi_t *req = NULL;
3565 req = (ZigbeeMfglibControlGetRssi_t *)request->request_data;
3577 static void __zblib_request_free_zcl_on_off_request_data(ZigBeeRequest *request,
3583 ops_id = __zblib_request_get_ops_id(request_type);
3585 case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
3586 ZigbeeZclOnOffSetOnOff_t *req = NULL;
3588 req = (ZigbeeZclOnOffSetOnOff_t *)request->request_data;
3595 case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
3596 ZigbeeZclOnOffGetOnOffState_t *req = NULL;
3598 req = (ZigbeeZclOnOffGetOnOffState_t *)request->request_data;
3610 static void __zblib_request_free_service_request_data(ZigBeeRequest *request,
3616 ops_id = __zblib_request_get_ops_id(request_type);
3618 case ZBLIB_SERVICE_OPS_ENABLE: {
3622 case ZBLIB_SERVICE_OPS_DISABLE: {
3626 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
3630 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
3634 case ZBLIB_SERVICE_OPS_COEX_START: {
3635 ZigbeeServiceCoexStart_t *req = NULL;
3637 req = (ZigbeeServiceCoexStart_t *)request->request_data;
3644 case ZBLIB_SERVICE_OPS_COEX_STOP: {
3648 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
3652 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
3656 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
3657 ZigbeeServicePermitJoin_t *req = NULL;
3659 req = (ZigbeeServicePermitJoin_t *)request->request_data;
3666 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
3667 ZigbeeServiceLeaveRequest_t *req = NULL;
3669 req = (ZigbeeServiceLeaveRequest_t *)request->request_data;
3676 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
3680 case ZBLIB_SERVICE_OPS_GET_MAC: {
3684 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
3688 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
3689 ZigbeeServiceGetEndpointList_t *req = NULL;
3691 req = (ZigbeeServiceGetEndpointList_t *)request->request_data;
3698 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
3699 ZigbeeServiceGetClusterList_t *req = NULL;
3701 req = (ZigbeeServiceGetClusterList_t *)request->request_data;
3708 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
3709 ZigbeeServiceGetNodeType_t *req = NULL;
3711 req = (ZigbeeServiceGetNodeType_t *)request->request_data;
3723 static void __zblib_request_free_zcl_thermostat_request_data(ZigBeeRequest *request,
3729 ops_id = __zblib_request_get_ops_id(request_type);
3731 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
3732 ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
3734 req = (ZigbeeZclThermostatGetLocalTemp_t *)request->request_data;
3741 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
3742 ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
3744 req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request->request_data;
3751 case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
3752 ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
3754 req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request->request_data;
3761 case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
3762 ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
3764 req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request->request_data;
3771 case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
3772 ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
3774 req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request->request_data;
3786 static void __zblib_request_free_zcl_basic_request_data(ZigBeeRequest *request,
3792 ops_id = __zblib_request_get_ops_id(request_type);
3794 case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
3795 ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
3797 req = (ZigbeeZclBasicResetFactoryDefault_t *)request->request_data;
3809 static void __zblib_request_free_zcl_global_control_request_data(ZigBeeRequest *request,
3815 ops_id = __zblib_request_get_ops_id(request_type);
3817 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
3818 ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
3820 req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request->request_data;
3822 g_free(req->attribute_id);
3828 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
3829 ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
3831 req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request->request_data;
3833 g_free(req->write_records);
3839 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
3840 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
3842 req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request->request_data;
3844 g_free(req->write_records);
3850 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
3851 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
3853 req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request->request_data;
3855 g_free(req->write_records);
3861 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
3862 ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
3864 req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request->request_data;
3866 g_free(req->write_records);
3872 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
3873 ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
3875 req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request->request_data;
3877 g_free(req->read_records);
3883 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
3884 ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
3886 req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request->request_data;
3888 g_free(req->read_records);
3894 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
3895 ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
3897 req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request->request_data;
3899 g_free(req->read_records);
3905 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
3906 ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
3908 req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request->request_data;
3915 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
3916 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
3918 req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request->request_data;
3925 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
3926 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
3928 req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request->request_data;
3935 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
3936 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
3938 req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request->request_data;
3950 static void __zblib_request_free_zcl_ias_zone_request_data(ZigBeeRequest *request,
3956 ops_id = __zblib_request_get_ops_id(request_type);
3958 case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
3959 ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
3961 req = (ZigbeeZclIasZoneEnrollResponse_t *)request->request_data;
3973 static void __zblib_request_free_zcl_identify_request_data(ZigBeeRequest *request,
3979 ops_id = __zblib_request_get_ops_id(request_type);
3981 case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
3982 ZigbeeZclIdentifyIdentify_t *req = NULL;
3984 req = (ZigbeeZclIdentifyIdentify_t *)request->request_data;
3991 case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
3992 ZigbeeZclIdentifyQuery_t *req = NULL;
3994 req = (ZigbeeZclIdentifyQuery_t *)request->request_data;
4006 static void __zblib_request_free_zcl_color_control_request_data(ZigBeeRequest *request,
4012 ops_id = __zblib_request_get_ops_id(request_type);
4014 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
4015 ZigbeeZclColorControlMoveToHue_t *req = NULL;
4017 req = (ZigbeeZclColorControlMoveToHue_t *)request->request_data;
4024 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
4025 ZigbeeZclColorControlMoveHue_t *req = NULL;
4027 req = (ZigbeeZclColorControlMoveHue_t *)request->request_data;
4034 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
4035 ZigbeeZclColorControlStepHue_t *req = NULL;
4037 req = (ZigbeeZclColorControlStepHue_t *)request->request_data;
4044 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
4045 ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
4047 req = (ZigbeeZclColorControlMoveToSaturation_t *)request->request_data;
4054 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
4055 ZigbeeZclColorControlMoveSaturation_t *req = NULL;
4057 req = (ZigbeeZclColorControlMoveSaturation_t *)request->request_data;
4064 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
4065 ZigbeeZclColorControlStepSaturation_t *req = NULL;
4067 req = (ZigbeeZclColorControlStepSaturation_t *)request->request_data;
4074 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
4075 ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
4077 req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request->request_data;
4084 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
4085 ZigbeeZclColorControlMoveToColor_t *req = NULL;
4087 req = (ZigbeeZclColorControlMoveToColor_t *)request->request_data;
4094 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
4095 ZigbeeZclColorControlMoveColor_t *req = NULL;
4097 req = (ZigbeeZclColorControlMoveColor_t *)request->request_data;
4104 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
4105 ZigbeeZclColorControlStepColor_t *req = NULL;
4107 req = (ZigbeeZclColorControlStepColor_t *)request->request_data;
4114 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
4115 ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
4117 req = (ZigbeeZclColorControlMoveColorTemperature_t *)request->request_data;
4129 static void __zblib_request_free_zcl_group_request_data(ZigBeeRequest *request,
4135 ops_id = __zblib_request_get_ops_id(request_type);
4137 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
4138 ZigbeeZclGroupAddGroup_t *req = NULL;
4140 req = (ZigbeeZclGroupAddGroup_t *)request->request_data;
4147 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
4148 ZigbeeZclGroupViewGroup_t *req = NULL;
4150 req = (ZigbeeZclGroupViewGroup_t *)request->request_data;
4157 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
4158 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
4160 req = (ZigbeeZclGroupGetGroupMembership_t *)request->request_data;
4162 g_free(req->group_list);
4168 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
4169 ZigbeeZclGroupRemoveGroup_t *req = NULL;
4171 req = (ZigbeeZclGroupRemoveGroup_t *)request->request_data;
4178 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
4179 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
4181 req = (ZigbeeZclGroupRemoveAllGroup_t *)request->request_data;
4188 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
4189 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
4191 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request->request_data;
4203 static void __zblib_request_free_zcl_poll_control_request_data(ZigBeeRequest *request,
4209 ops_id = __zblib_request_get_ops_id(request_type);
4211 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
4212 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
4214 req = (ZigbeeZclPollControlCheckInResponse_t *)request->request_data;
4221 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
4222 ZigbeeZclPollControlFastPollStop_t *req = NULL;
4224 req = (ZigbeeZclPollControlFastPollStop_t *)request->request_data;
4231 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
4232 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
4234 req = (ZigbeeZclPollControlSetLongPollInterval_t *)request->request_data;
4241 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
4242 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
4244 req = (ZigbeeZclPollControlSetShortPollInterval_t *)request->request_data;
4256 static void __zblib_request_free_zcl_scene_request_data(ZigBeeRequest *request,
4262 ops_id = __zblib_request_get_ops_id(request_type);
4264 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
4265 ZigbeeZclSceneAddScene_t *req = NULL;
4267 req = (ZigbeeZclSceneAddScene_t *)request->request_data;
4269 g_free(req->ext_field_set);
4275 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
4276 ZigbeeZclSceneViewScene_t *req = NULL;
4278 req = (ZigbeeZclSceneViewScene_t *)request->request_data;
4285 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
4286 ZigbeeZclSceneRemoveScene_t *req = NULL;
4288 req = (ZigbeeZclSceneRemoveScene_t *)request->request_data;
4295 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
4296 ZigbeeZclSceneStoreScene_t *req = NULL;
4298 req = (ZigbeeZclSceneStoreScene_t *)request->request_data;
4305 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
4306 ZigbeeZclSceneRecallScene_t *req = NULL;
4308 req = (ZigbeeZclSceneRecallScene_t *)request->request_data;
4315 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
4316 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
4318 req = (ZigbeeZclSceneRemoveAllScene_t *)request->request_data;
4325 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
4326 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
4328 req = (ZigbeeZclSceneGetSceneMembership_t *)request->request_data;
4340 static void __zblib_request_free_zdo_dev_control_request_data(ZigBeeRequest *request,
4346 ops_id = __zblib_request_get_ops_id(request_type);
4348 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
4349 ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
4351 req = (ZigbeeZdoDevControlNwkAddrReq_t *)request->request_data;
4358 case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
4359 ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
4361 req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request->request_data;
4364 g_free(req->out_cl);
4370 case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
4371 ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
4373 req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request->request_data;
4380 case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
4381 ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
4383 req = (ZigbeeZdoDevControlActiveEpReq_t *)request->request_data;
4390 case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
4391 ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
4393 req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request->request_data;
4400 case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
4401 ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
4403 req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request->request_data;
4410 case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
4411 ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
4413 req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request->request_data;
4420 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
4421 ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
4423 req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request->request_data;
4430 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
4431 ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
4433 req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request->request_data;
4440 case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
4441 ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
4443 req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request->request_data;
4450 case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
4451 ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
4453 req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request->request_data;
4460 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
4461 ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
4463 req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request->request_data;
4470 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
4471 ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
4473 req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request->request_data;
4480 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
4481 ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
4483 req = (ZigbeeZdoDevControlMgmtBindReq_t *)request->request_data;
4490 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
4491 ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
4493 req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request->request_data;
4500 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_UPDATE_REQ: {
4501 ZigbeeZdoDevControlMgmtNwkUpdateReq_t *req = NULL;
4503 req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)request->request_data;
4510 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_DISC_REQ: {
4511 ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *req = NULL;
4513 req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)request->request_data;
4525 static void __zblib_request_free_zdo_bind_request_data(ZigBeeRequest *request,
4531 ops_id = __zblib_request_get_ops_id(request_type);
4533 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
4534 ZigbeeZdoBindBindReq_t *req = NULL;
4536 req = (ZigbeeZdoBindBindReq_t *)request->request_data;
4543 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
4544 ZigbeeZdoBindUnbindReq_t *req = NULL;
4546 req = (ZigbeeZdoBindUnbindReq_t *)request->request_data;
4558 static void __zblib_request_free_request_data(ZigBeeRequest *request)
4561 ZblibDriverType_e driver_type;
4563 zblib_check_null_ret("request", request);
4565 request_type = request->request_type;
4567 /* Fetch driver type */
4568 driver_type = __zblib_request_get_driver_type(request_type);
4569 switch (driver_type) {
4570 case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
4571 __zblib_request_free_zcl_alarm_request_data(request, request_type);
4575 case ZBLIB_DRIVER_TYPE_CUSTOM: {
4576 __zblib_request_free_custom_request_data(request, request_type);
4580 case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
4581 __zblib_request_free_zcl_door_lock_request_data(request, request_type);
4585 case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
4586 __zblib_request_free_zcl_fan_control_request_data(request, request_type);
4590 case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
4591 __zblib_request_free_zcl_level_control_request_data(request, request_type);
4595 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
4596 __zblib_request_free_mfglib_control_request_data(request, request_type);
4600 case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
4601 __zblib_request_free_zcl_on_off_request_data(request, request_type);
4605 case ZBLIB_DRIVER_TYPE_SERVICE: {
4606 __zblib_request_free_service_request_data(request, request_type);
4610 case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
4611 __zblib_request_free_zcl_thermostat_request_data(request, request_type);
4615 case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
4616 __zblib_request_free_zcl_basic_request_data(request, request_type);
4620 case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
4621 __zblib_request_free_zcl_global_control_request_data(request, request_type);
4625 case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
4626 __zblib_request_free_zcl_ias_zone_request_data(request, request_type);
4630 case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
4631 __zblib_request_free_zcl_identify_request_data(request, request_type);
4635 case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
4636 __zblib_request_free_zcl_color_control_request_data(request, request_type);
4640 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
4641 __zblib_request_free_zcl_group_request_data(request, request_type);
4645 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
4646 __zblib_request_free_zcl_poll_control_request_data(request, request_type);
4650 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
4651 __zblib_request_free_zcl_scene_request_data(request, request_type);
4655 case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
4656 __zblib_request_free_zdo_dev_control_request_data(request, request_type);
4660 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
4661 __zblib_request_free_zdo_bind_request_data(request, request_type);
4665 case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
4667 Z_LOGE("Unhandled driver type: [%d]", driver_type);
4673 gint zblib_request_new(ZigBeeServiceInterface *service_interface,
4674 guint request_type, gpointer request_data, guint request_data_len)
4676 ZigBeeService *service = NULL;
4677 ZigBeeRequest *request = NULL;
4678 GHashTable *request_table = NULL;
4680 zblib_check_null_ret_error("service_interface", service_interface, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4682 service = zblib_service_interface_ref_service(service_interface);
4683 zblib_check_null_ret_error("service", service, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4685 /* Allocate ZigBee request memory */
4686 request = g_malloc0(sizeof(ZigBeeRequest));
4688 /* Update request */
4689 request->service_interface = service_interface;
4690 request->ref_count = 1; /* Initialize reference count to '1' for new request */
4692 /* Update request data for specific request */
4693 request->request_data = __zblib_request_create_request_data(request_type,
4694 request_data, request_data_len);
4695 request->request_type = request_type;
4697 /* Generate request ID */
4698 request->request_id = zblib_service_generate_request_id(service);
4699 if (ZIGBEE_REQUEST_INVALID_REQUEST_ID == request->request_id) {
4700 Z_LOGE("zblib_service_genrate_request_id failed!");
4702 /* Free resources */
4703 __zblib_request_free_request_data(request);
4706 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4709 /* Fetch request table from service */
4710 request_table = zblib_service_ref_request_hash_table(service);
4711 if (NULL == request_table) {
4712 Z_LOGE("zblib_service_ref_request_hash_table failed!");
4714 /* Free resources */
4715 __zblib_request_free_request_data(request);
4718 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4721 /* Insert request to request table */
4722 g_hash_table_insert(request_table, (gpointer)(request->request_id), request);
4724 return request->request_id;
4727 void zblib_request_free(ZigBeeServiceInterface *service_interface,
4730 ZigBeeService *service = NULL;
4731 ZigBeeRequest *request = NULL;
4733 zblib_check_null_ret("service_interface", service_interface);
4736 service = zblib_service_interface_ref_service(service_interface);
4737 zblib_check_null_ret("service", service);
4739 /* Fetch request based on request_id */
4740 request = __zblib_request_ref_request_by_request_id(service, request_id);
4741 zblib_check_null_ret("request", request);
4743 /* Free resources */
4744 __zblib_request_free_request_data(request);
4748 gboolean zblib_request_set_response_cb(ZigBeeServiceInterface *service_interface,
4750 gpointer resp_cb, gpointer resp_cb_data)
4752 ZigBeeService *service = NULL;
4753 ZigBeeRequest *request = NULL;
4755 zblib_check_null_ret_error("service_interface", service_interface, FALSE);
4758 service = zblib_service_interface_ref_service(service_interface);
4759 zblib_check_null_ret_error("service", service, FALSE);
4761 /* Fetch request based on request_id */
4762 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4763 if (NULL == request) {
4764 Z_LOGE("No request available for request_id: [%d]", request_id);
4768 /* Update response callback and response callback data */
4769 request->resp_cb = resp_cb;
4770 request->resp_cb_data = resp_cb_data;
4775 gpointer zblib_request_ref_response_cb(ZigBeeServiceInterface *service_interface,
4776 guint request_id, gpointer *resp_cb_data)
4778 ZigBeeService *service = NULL;
4779 ZigBeeRequest *request = NULL;
4781 zblib_check_null_ret_error("service_interface", service_interface, NULL);
4784 service = zblib_service_interface_ref_service(service_interface);
4785 zblib_check_null_ret_error("service", service, NULL);
4787 /* Fetch request based on request_id */
4788 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4789 if (NULL == request) {
4790 Z_LOGE("No request available for request_id: [%d]", request_id);
4794 /* Response callback data */
4795 *resp_cb_data = request->resp_cb_data;
4797 /* Return response callback */
4798 return request->resp_cb;
4801 ZigBeeRequest *zblib_request_ref(ZigBeeRequest *request)
4803 zblib_check_null_ret_error("request", request, NULL);
4805 request->ref_count++;
4810 void zblib_request_unref(ZigBeeRequest *request)
4812 zblib_check_null_ret("request", request);
4814 request->ref_count--;
4815 if (0 == request->ref_count) {
4816 Z_LOGD("Reference count is ZERO!");
4818 /* Free 'request' */
4819 __zblib_request_free_request_data(request);
4824 guint zblib_request_ref_request_type(ZigBeeRequest *request)
4826 zblib_check_null_ret_error("request", request, 0);
4828 return request->request_type;
4831 ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeService *service,
4834 ZigBeeRequest *request = NULL;
4836 zblib_check_null_ret_error("service", service, NULL);
4838 /* Fetch request based on request_id */
4839 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4840 if (NULL == request) {
4841 Z_LOGE("No request available for request_id: [%d]", request_id);
4845 return request->service_interface;
4848 gpointer zblib_request_ref_request_data(ZigBeeRequest *request)
4850 zblib_check_null_ret_error("request", request, NULL);
4852 return request->request_data;
4855 gpointer zblib_request_ref_request_data_by_id(ZigBeeService *service,
4858 ZigBeeRequest *request = NULL;
4860 /* Fetch request based on request_id */
4861 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4862 if (NULL == request) {
4863 Z_LOGE("No request available for request_id: [%d]", request_id);
4867 return request->request_data;
4870 guint zblib_request_generate_request_type(ZblibDriverType_e driver_type,
4876 * request_type consists of driver_type and ops_id
4877 * request_type = driver_type | 0x00 | 0x00 | ops_id
4879 request_type = (driver_type << 24) | (ops_id);
4881 return request_type;
4884 gint zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
4887 return __zblib_request_ref_request_type_by_request_id(service, request_id);
4890 ZblibDriverType_e zblib_request_get_driver_type(guint request_type)
4892 return __zblib_request_get_driver_type(request_type);
4895 guint zblib_request_get_ops_id(guint request_type)
4897 return __zblib_request_get_ops_id(request_type);