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_table) {
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 alarm_request_data = NULL;
256 return alarm_request_data;
259 static gpointer __zblib_request_create_custom_request_data(guint request_type,
260 gpointer request_data, guint request_data_len)
262 gpointer custom_request_data = NULL;
265 NOT_USED(request_data_len);
268 ops_id = __zblib_request_get_ops_id(request_type);
270 case ZBLIB_CUSTOM_OPS_APS_SEND: {
271 ZigbeeCustomApsSend_t *in_req;
272 ZigbeeCustomApsSend_t *req = NULL;
274 in_req = (ZigbeeCustomApsSend_t *)request_data;
276 /* Allocate memory */
277 req = (ZigbeeCustomApsSend_t *)
278 g_malloc0(sizeof(ZigbeeCustomApsSend_t));
281 req->node_id = in_req->node_id;
282 req->aps_frame_ctrl = in_req->aps_frame_ctrl;
283 req->src_ep = in_req->src_ep;
284 req->dest_ep = in_req->dest_ep;
285 req->cluster_id = in_req->cluster_id;
286 req->profile_id = in_req->profile_id;
287 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
288 req->mfg_code = in_req->mfg_code;
290 in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
293 custom_request_data = (gpointer)req;
297 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
298 ZigbeeCustomZclSend_t *in_req;
299 ZigbeeCustomZclSend_t *req = NULL;
301 in_req = (ZigbeeCustomZclSend_t *)request_data;
303 /* Allocate memory */
304 req = (ZigbeeCustomZclSend_t *)
305 g_malloc0(sizeof(ZigbeeCustomZclSend_t));
308 req->node_id = in_req->node_id;
309 req->src_ep = in_req->src_ep;
310 req->dest_ep = in_req->dest_ep;
311 req->cluster_id = in_req->cluster_id;
312 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
313 req->cmd_id = in_req->cmd_id;
315 in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
318 custom_request_data = (gpointer)req;
322 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
323 ZigbeeCustomSendToLocal_t *in_req;
324 ZigbeeCustomSendToLocal_t *req = NULL;
326 in_req = (ZigbeeCustomSendToLocal_t *)request_data;
328 /* Allocate memory */
329 req = (ZigbeeCustomSendToLocal_t *)
330 g_malloc0(sizeof(ZigbeeCustomSendToLocal_t));
334 in_req->data, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
337 custom_request_data = (gpointer)req;
345 return custom_request_data;
348 static gpointer __zblib_request_create_zcl_door_lock_request_data(guint request_type,
349 gpointer request_data, guint request_data_len)
351 gpointer door_lock_request_data = NULL;
354 NOT_USED(request_data_len);
357 ops_id = __zblib_request_get_ops_id(request_type);
359 case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
360 ZigbeeZclDoorLockSubscriberLockEvent_t *in_req;
361 ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
363 in_req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request_data;
365 /* Allocate memory */
366 req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)
367 g_malloc0(sizeof(ZigbeeZclDoorLockSubscriberLockEvent_t));
371 in_req->eui64, ZIGBEE_EUI64_SIZE);
372 req->endpoint = in_req->endpoint;
375 door_lock_request_data = (gpointer)req;
379 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
380 ZigbeeZclDoorLockSetDoorLockPin_t *in_req;
381 ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
383 in_req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request_data;
385 /* Allocate memory */
386 req = (ZigbeeZclDoorLockSetDoorLockPin_t *)
387 g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLockPin_t));
390 req->uid = in_req->uid;
391 req->ustatus = in_req->ustatus;
392 req->utype = in_req->utype;
394 in_req->eui64, ZIGBEE_EUI64_SIZE);
395 req->endpoint = in_req->endpoint;
397 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
400 door_lock_request_data = (gpointer)req;
404 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
405 ZigbeeZclDoorLockSetDoorLock_t *in_req;
406 ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
408 in_req = (ZigbeeZclDoorLockSetDoorLock_t *)request_data;
410 /* Allocate memory */
411 req = (ZigbeeZclDoorLockSetDoorLock_t *)
412 g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLock_t));
416 in_req->eui64, ZIGBEE_EUI64_SIZE);
417 req->endpoint = in_req->endpoint;
419 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
420 req->lock_unlock_type = in_req->lock_unlock_type;
423 door_lock_request_data = (gpointer)req;
427 case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
428 ZigbeeZclDoorLockGetDoorLock_t *in_req;
429 ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
431 in_req = (ZigbeeZclDoorLockGetDoorLock_t *)request_data;
433 /* Allocate memory */
434 req = (ZigbeeZclDoorLockGetDoorLock_t *)
435 g_malloc0(sizeof(ZigbeeZclDoorLockGetDoorLock_t));
439 in_req->eui64, ZIGBEE_EUI64_SIZE);
440 req->endpoint = in_req->endpoint;
443 door_lock_request_data = (gpointer)req;
451 return door_lock_request_data;
454 static gpointer __zblib_request_create_zcl_fan_control_request_data(guint request_type,
455 gpointer request_data, guint request_data_len)
457 gpointer fan_control_request_data = NULL;
460 NOT_USED(request_data_len);
463 ops_id = __zblib_request_get_ops_id(request_type);
465 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
466 ZigbeeZclFanControlSetFanMode_t *in_req;
467 ZigbeeZclFanControlSetFanMode_t *req = NULL;
469 in_req = (ZigbeeZclFanControlSetFanMode_t *)request_data;
471 /* Allocate memory */
472 req = (ZigbeeZclFanControlSetFanMode_t *)
473 g_malloc0(sizeof(ZigbeeZclFanControlSetFanMode_t));
477 in_req->eui64, ZIGBEE_EUI64_SIZE);
478 req->endpoint = in_req->endpoint;
481 fan_control_request_data = (gpointer)req;
485 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
486 ZigbeeZclFanControlGetFanMode_t *in_req;
487 ZigbeeZclFanControlGetFanMode_t *req = NULL;
489 in_req = (ZigbeeZclFanControlGetFanMode_t *)request_data;
491 /* Allocate memory */
492 req = (ZigbeeZclFanControlGetFanMode_t *)
493 g_malloc0(sizeof(ZigbeeZclFanControlGetFanMode_t));
497 in_req->eui64, ZIGBEE_EUI64_SIZE);
498 req->endpoint = in_req->endpoint;
501 fan_control_request_data = (gpointer)req;
505 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
506 ZigbeeZclFanControlSetFanModeSequence_t *in_req;
507 ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
509 in_req = (ZigbeeZclFanControlSetFanModeSequence_t *)request_data;
511 /* Allocate memory */
512 req = (ZigbeeZclFanControlSetFanModeSequence_t *)
513 g_malloc0(sizeof(ZigbeeZclFanControlSetFanModeSequence_t));
517 in_req->eui64, ZIGBEE_EUI64_SIZE);
518 req->endpoint = in_req->endpoint;
521 fan_control_request_data = (gpointer)req;
525 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
526 ZigbeeZclFanControlGetFanModeSequence_t *in_req;
527 ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
529 in_req = (ZigbeeZclFanControlGetFanModeSequence_t *)request_data;
531 /* Allocate memory */
532 req = (ZigbeeZclFanControlGetFanModeSequence_t *)
533 g_malloc0(sizeof(ZigbeeZclFanControlGetFanModeSequence_t));
537 in_req->eui64, ZIGBEE_EUI64_SIZE);
538 req->endpoint = in_req->endpoint;
541 fan_control_request_data = (gpointer)req;
549 return fan_control_request_data;
552 static gpointer __zblib_request_create_zcl_level_control_request_data(guint request_type,
553 gpointer request_data, guint request_data_len)
555 gpointer level_control_request_data = NULL;
558 NOT_USED(request_data_len);
561 ops_id = __zblib_request_get_ops_id(request_type);
563 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
564 ZigbeeZclLevelControlMoveToLevel_t *in_req;
565 ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
567 in_req = (ZigbeeZclLevelControlMoveToLevel_t *)request_data;
569 /* Allocate memory */
570 req = (ZigbeeZclLevelControlMoveToLevel_t *)
571 g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevel_t));
574 req->node_id = in_req->node_id;
575 req->endpoint = in_req->endpoint;
576 req->level = in_req->level;
577 req->transition = in_req->transition;
580 level_control_request_data = (gpointer)req;
584 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
585 ZigbeeZclLevelControlMove_t *in_req;
586 ZigbeeZclLevelControlMove_t *req = NULL;
588 in_req = (ZigbeeZclLevelControlMove_t *)request_data;
590 /* Allocate memory */
591 req = (ZigbeeZclLevelControlMove_t *)
592 g_malloc0(sizeof(ZigbeeZclLevelControlMove_t));
595 req->node_id = in_req->node_id;
596 req->endpoint = in_req->endpoint;
597 req->move_mode = in_req->move_mode;
598 req->rate = in_req->rate;
601 level_control_request_data = (gpointer)req;
605 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
606 ZigbeeZclLevelControlStep_t *in_req;
607 ZigbeeZclLevelControlStep_t *req = NULL;
609 in_req = (ZigbeeZclLevelControlStep_t *)request_data;
611 /* Allocate memory */
612 req = (ZigbeeZclLevelControlStep_t *)
613 g_malloc0(sizeof(ZigbeeZclLevelControlStep_t));
616 req->node_id = in_req->node_id;
617 req->endpoint = in_req->endpoint;
618 req->step_mode = in_req->step_mode;
619 req->move_mode = in_req->move_mode;
620 req->transition_time = in_req->transition_time;
623 level_control_request_data = (gpointer)req;
627 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
628 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *in_req;
629 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
631 in_req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request_data;
633 /* Allocate memory */
634 req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)
635 g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevelWithOnOff_t));
638 req->node_id = in_req->node_id;
639 req->endpoint = in_req->endpoint;
640 req->level = in_req->level;
641 req->transition = in_req->transition;
644 level_control_request_data = (gpointer)req;
648 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
649 ZigbeeZclLevelControlMoveWithOnOff_t *in_req;
650 ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
652 in_req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request_data;
654 /* Allocate memory */
655 req = (ZigbeeZclLevelControlMoveWithOnOff_t *)
656 g_malloc0(sizeof(ZigbeeZclLevelControlMoveWithOnOff_t));
659 req->node_id = in_req->node_id;
660 req->endpoint = in_req->endpoint;
661 req->move_mode = in_req->move_mode;
662 req->rate = in_req->rate;
665 level_control_request_data = (gpointer)req;
669 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
670 ZigbeeZclLevelControlStepWithOnOff_t *in_req;
671 ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
673 in_req = (ZigbeeZclLevelControlStepWithOnOff_t *)request_data;
675 /* Allocate memory */
676 req = (ZigbeeZclLevelControlStepWithOnOff_t *)
677 g_malloc0(sizeof(ZigbeeZclLevelControlStepWithOnOff_t));
680 req->node_id = in_req->node_id;
681 req->endpoint = in_req->endpoint;
682 req->step_mode = in_req->step_mode;
683 req->move_mode = in_req->move_mode;
684 req->transition_time = in_req->transition_time;
687 level_control_request_data = (gpointer)req;
691 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
692 ZigbeeZclLevelControlStop_t *in_req;
693 ZigbeeZclLevelControlStop_t *req = NULL;
695 in_req = (ZigbeeZclLevelControlStop_t *)request_data;
697 /* Allocate memory */
698 req = (ZigbeeZclLevelControlStop_t *)
699 g_malloc0(sizeof(ZigbeeZclLevelControlStop_t));
702 req->node_id = in_req->node_id;
703 req->endpoint = in_req->endpoint;
706 level_control_request_data = (gpointer)req;
714 return level_control_request_data;
717 static gpointer __zblib_request_create_mfglib_control_request_data(guint request_type,
718 gpointer request_data, guint request_data_len)
720 gpointer mfglib_control_request_data = NULL;
723 NOT_USED(request_data_len);
726 ops_id = __zblib_request_get_ops_id(request_type);
728 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
729 ZigbeeMfglibControlStart_t *in_req;
730 ZigbeeMfglibControlStart_t *req = NULL;
732 in_req = (ZigbeeMfglibControlStart_t *)request_data;
733 if (NULL != in_req) {
734 /* Allocate memory */
735 req = (ZigbeeMfglibControlStart_t *)
736 g_malloc0(sizeof(ZigbeeMfglibControlStart_t));
739 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
740 req->mfglib_start = in_req->mfglib_start;
743 mfglib_control_request_data = (gpointer)req;
747 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
748 ZigbeeMfglibControlEnd_t *in_req;
749 ZigbeeMfglibControlEnd_t *req = NULL;
751 in_req = (ZigbeeMfglibControlEnd_t *)request_data;
752 if (NULL != in_req) {
753 /* Allocate memory */
754 req = (ZigbeeMfglibControlEnd_t *)
755 g_malloc0(sizeof(ZigbeeMfglibControlEnd_t));
758 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
761 mfglib_control_request_data = (gpointer)req;
765 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
766 ZigbeeMfglibControlStartTone_t *in_req;
767 ZigbeeMfglibControlStartTone_t *req = NULL;
769 in_req = (ZigbeeMfglibControlStartTone_t *)request_data;
770 if (NULL != in_req) {
771 /* Allocate memory */
772 req = (ZigbeeMfglibControlStartTone_t *)
773 g_malloc0(sizeof(ZigbeeMfglibControlStartTone_t));
776 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
779 mfglib_control_request_data = (gpointer)req;
783 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
784 ZigbeeMfglibControlStopTone_t *in_req;
785 ZigbeeMfglibControlStopTone_t *req = NULL;
787 in_req = (ZigbeeMfglibControlStopTone_t *)request_data;
788 if (NULL != in_req) {
789 /* Allocate memory */
790 req = (ZigbeeMfglibControlStopTone_t *)
791 g_malloc0(sizeof(ZigbeeMfglibControlStopTone_t));
794 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
797 mfglib_control_request_data = (gpointer)req;
801 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
802 ZigbeeMfglibControlStartStream_t *in_req;
803 ZigbeeMfglibControlStartStream_t *req = NULL;
805 in_req = (ZigbeeMfglibControlStartStream_t *)request_data;
806 if (NULL != in_req) {
807 /* Allocate memory */
808 req = (ZigbeeMfglibControlStartStream_t *)
809 g_malloc0(sizeof(ZigbeeMfglibControlStartStream_t));
812 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
815 mfglib_control_request_data = (gpointer)req;
819 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
820 ZigbeeMfglibControlStopStream_t *in_req;
821 ZigbeeMfglibControlStopStream_t *req = NULL;
823 in_req = (ZigbeeMfglibControlStopStream_t *)request_data;
824 if (NULL != in_req) {
825 /* Allocate memory */
826 req = (ZigbeeMfglibControlStopStream_t *)
827 g_malloc0(sizeof(ZigbeeMfglibControlStopStream_t));
830 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
833 mfglib_control_request_data = (gpointer)req;
837 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
838 ZigbeeMfglibControlSendPacket_t *in_req;
839 ZigbeeMfglibControlSendPacket_t *req = NULL;
841 in_req = (ZigbeeMfglibControlSendPacket_t *)request_data;
842 if (NULL != in_req) {
843 /* Allocate memory */
844 req = (ZigbeeMfglibControlSendPacket_t *)
845 g_malloc0(sizeof(ZigbeeMfglibControlSendPacket_t));
848 memcpy(req->packet_content,
849 in_req->packet_content,
850 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
851 req->packet_length = in_req->packet_length;
854 mfglib_control_request_data = (gpointer)req;
858 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
859 ZigbeeMfglibControlSetChannel_t *in_req;
860 ZigbeeMfglibControlSetChannel_t *req = NULL;
862 in_req = (ZigbeeMfglibControlSetChannel_t *)request_data;
863 if (NULL != in_req) {
864 /* Allocate memory */
865 req = (ZigbeeMfglibControlSetChannel_t *)
866 g_malloc0(sizeof(ZigbeeMfglibControlSetChannel_t));
869 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
870 req->channel = in_req->channel;
873 mfglib_control_request_data = (gpointer)req;
877 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
878 ZigbeeMfglibControlGetChannel_t *in_req;
879 ZigbeeMfglibControlGetChannel_t *req = NULL;
881 in_req = (ZigbeeMfglibControlGetChannel_t *)request_data;
882 if (NULL != in_req) {
883 /* Allocate memory */
884 req = (ZigbeeMfglibControlGetChannel_t *)
885 g_malloc0(sizeof(ZigbeeMfglibControlGetChannel_t));
888 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
891 mfglib_control_request_data = (gpointer)req;
895 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
896 ZigbeeMfglibControlSetPower_t *in_req;
897 ZigbeeMfglibControlSetPower_t *req = NULL;
899 in_req = (ZigbeeMfglibControlSetPower_t *)request_data;
900 if (NULL != in_req) {
901 /* Allocate memory */
902 req = (ZigbeeMfglibControlSetPower_t *)
903 g_malloc0(sizeof(ZigbeeMfglibControlSetPower_t));
906 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
907 req->tx_power_mode = in_req->tx_power_mode;
908 req->power = in_req->power;
911 mfglib_control_request_data = (gpointer)req;
915 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
916 ZigbeeMfglibControlGetPower_t *in_req;
917 ZigbeeMfglibControlGetPower_t *req = NULL;
919 in_req = (ZigbeeMfglibControlGetPower_t *)request_data;
920 if (NULL != in_req) {
921 /* Allocate memory */
922 req = (ZigbeeMfglibControlGetPower_t *)
923 g_malloc0(sizeof(ZigbeeMfglibControlGetPower_t));
926 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
929 mfglib_control_request_data = (gpointer)req;
933 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
934 ZigbeeMfglibControlSetSynOffset_t *in_req;
935 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
937 in_req = (ZigbeeMfglibControlSetSynOffset_t *)request_data;
938 if (NULL != in_req) {
939 /* Allocate memory */
940 req = (ZigbeeMfglibControlSetSynOffset_t *)
941 g_malloc0(sizeof(ZigbeeMfglibControlSetSynOffset_t));
944 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
945 req->channel = in_req->channel;
948 mfglib_control_request_data = (gpointer)req;
952 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
953 ZigbeeMfglibControlGetSynOffset_t *in_req;
954 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
956 in_req = (ZigbeeMfglibControlGetSynOffset_t *)request_data;
957 if (NULL != in_req) {
958 /* Allocate memory */
959 req = (ZigbeeMfglibControlGetSynOffset_t *)
960 g_malloc0(sizeof(ZigbeeMfglibControlGetSynOffset_t));
965 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
966 req->packet_length = in_req->packet_length;
967 req->link_quality = in_req->link_quality;
968 req->rssi = in_req->rssi;
971 mfglib_control_request_data = (gpointer)req;
975 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
976 ZigbeeMfglibControlRxStart_t *in_req;
977 ZigbeeMfglibControlRxStart_t *req = NULL;
979 in_req = (ZigbeeMfglibControlRxStart_t *)request_data;
980 if (NULL != in_req) {
981 /* Allocate memory */
982 req = (ZigbeeMfglibControlRxStart_t *)
983 g_malloc0(sizeof(ZigbeeMfglibControlRxStart_t));
986 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
989 mfglib_control_request_data = (gpointer)req;
993 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
994 ZigbeeMfglibControlRxStop_t *in_req;
995 ZigbeeMfglibControlRxStop_t *req = NULL;
997 in_req = (ZigbeeMfglibControlRxStop_t *)request_data;
998 if (NULL != in_req) {
999 /* Allocate memory */
1000 req = (ZigbeeMfglibControlRxStop_t *)
1001 g_malloc0(sizeof(ZigbeeMfglibControlRxStop_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_VERIFY: {
1012 ZigbeeMfglibControlRxVerify_t *in_req;
1013 ZigbeeMfglibControlRxVerify_t *req = NULL;
1015 in_req = (ZigbeeMfglibControlRxVerify_t *)request_data;
1016 if (NULL != in_req) {
1017 /* Allocate memory */
1018 req = (ZigbeeMfglibControlRxVerify_t *)
1019 g_malloc0(sizeof(ZigbeeMfglibControlRxVerify_t));
1022 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1025 mfglib_control_request_data = (gpointer)req;
1029 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
1030 ZigbeeMfglibControlGetRssi_t *in_req;
1031 ZigbeeMfglibControlGetRssi_t *req = NULL;
1033 in_req = (ZigbeeMfglibControlGetRssi_t *)request_data;
1034 if (NULL != in_req) {
1035 /* Allocate memory */
1036 req = (ZigbeeMfglibControlGetRssi_t *)
1037 g_malloc0(sizeof(ZigbeeMfglibControlGetRssi_t));
1040 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1043 mfglib_control_request_data = (gpointer)req;
1051 return mfglib_control_request_data;
1054 static gpointer __zblib_request_create_zcl_on_off_request_data(guint request_type,
1055 gpointer request_data, guint request_data_len)
1057 gpointer on_off_request_data = NULL;
1060 NOT_USED(request_data_len);
1063 ops_id = __zblib_request_get_ops_id(request_type);
1065 case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
1066 ZigbeeZclOnOffSetOnOff_t *in_req;
1067 ZigbeeZclOnOffSetOnOff_t *req = NULL;
1069 in_req = (ZigbeeZclOnOffSetOnOff_t *)request_data;
1070 if (NULL != in_req) {
1071 /* Allocate memory */
1072 req = (ZigbeeZclOnOffSetOnOff_t *)
1073 g_malloc0(sizeof(ZigbeeZclOnOffSetOnOff_t));
1076 req->node_id = in_req->node_id;
1077 req->endpoint = in_req->endpoint;
1078 req->on_off_type = in_req->on_off_type;
1081 on_off_request_data = (gpointer)req;
1085 case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
1086 ZigbeeZclOnOffGetOnOffState_t *in_req;
1087 ZigbeeZclOnOffGetOnOffState_t *req = NULL;
1089 in_req = (ZigbeeZclOnOffGetOnOffState_t *)request_data;
1090 if (NULL != in_req) {
1091 /* Allocate memory */
1092 req = (ZigbeeZclOnOffGetOnOffState_t *)
1093 g_malloc0(sizeof(ZigbeeZclOnOffGetOnOffState_t));
1096 req->node_id = in_req->node_id;
1097 req->endpoint = in_req->endpoint;
1100 on_off_request_data = (gpointer)req;
1108 return on_off_request_data;
1111 static gpointer __zblib_request_create_service_request_data(guint request_type,
1112 gpointer request_data, guint request_data_len)
1114 gpointer service_request_data = NULL;
1117 NOT_USED(request_data_len);
1120 ops_id = __zblib_request_get_ops_id(request_type);
1122 case ZBLIB_SERVICE_OPS_ENABLE: {
1123 service_request_data = NULL;
1127 case ZBLIB_SERVICE_OPS_DISABLE: {
1128 service_request_data = NULL;
1132 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
1133 service_request_data = NULL;
1137 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
1138 service_request_data = NULL;
1142 case ZBLIB_SERVICE_OPS_COEX_START: {
1143 ZigbeeServiceCoexStart_t *in_req;
1144 ZigbeeServiceCoexStart_t *req = NULL;
1146 in_req = (ZigbeeServiceCoexStart_t *)request_data;
1147 if (NULL != in_req) {
1148 /* Allocate memory */
1149 req = (ZigbeeServiceCoexStart_t *)
1150 g_malloc0(sizeof(ZigbeeServiceCoexStart_t));
1153 req->channel = in_req->channel;
1156 service_request_data = (gpointer)req;
1160 case ZBLIB_SERVICE_OPS_COEX_STOP: {
1161 service_request_data = NULL;
1165 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
1166 service_request_data = NULL;
1170 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
1171 service_request_data = NULL;
1175 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
1176 ZigbeeServicePermitJoin_t *in_req;
1177 ZigbeeServicePermitJoin_t *req = NULL;
1179 in_req = (ZigbeeServicePermitJoin_t *)request_data;
1180 if (NULL != in_req) {
1181 /* Allocate memory */
1182 req = (ZigbeeServicePermitJoin_t *)
1183 g_malloc0(sizeof(ZigbeeServicePermitJoin_t));
1186 req->permit_join = in_req->permit_join;
1187 req->duration = in_req->duration;
1190 service_request_data = (gpointer)req;
1194 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
1195 ZigbeeServiceLeaveRequest_t *in_req;
1196 ZigbeeServiceLeaveRequest_t *req = NULL;
1198 in_req = (ZigbeeServiceLeaveRequest_t *)request_data;
1199 if (NULL != in_req) {
1200 /* Allocate memory */
1201 req = (ZigbeeServiceLeaveRequest_t *)
1202 g_malloc0(sizeof(ZigbeeServiceLeaveRequest_t));
1205 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1206 req->remove_child = in_req->remove_child;
1207 req->rejoin = in_req->rejoin;
1210 service_request_data = (gpointer)req;
1214 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
1215 service_request_data = NULL;
1219 case ZBLIB_SERVICE_OPS_GET_MAC: {
1220 service_request_data = NULL;
1224 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
1225 service_request_data = NULL;
1229 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
1230 ZigbeeServiceGetEndpointList_t *in_req;
1231 ZigbeeServiceGetEndpointList_t *req = NULL;
1233 in_req = (ZigbeeServiceGetEndpointList_t *)request_data;
1234 if (NULL != in_req) {
1235 /* Allocate memory */
1236 req = (ZigbeeServiceGetEndpointList_t *)
1237 g_malloc0(sizeof(ZigbeeServiceGetEndpointList_t));
1240 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1243 service_request_data = (gpointer)req;
1247 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
1248 ZigbeeServiceGetClusterList_t *in_req;
1249 ZigbeeServiceGetClusterList_t *req = NULL;
1251 in_req = (ZigbeeServiceGetClusterList_t *)request_data;
1252 if (NULL != in_req) {
1253 /* Allocate memory */
1254 req = (ZigbeeServiceGetClusterList_t *)
1255 g_malloc0(sizeof(ZigbeeServiceGetClusterList_t));
1258 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1259 req->endpoint = in_req->endpoint;
1262 service_request_data = (gpointer)req;
1266 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
1267 ZigbeeServiceGetNodeType_t *in_req;
1268 ZigbeeServiceGetNodeType_t *req = NULL;
1270 in_req = (ZigbeeServiceGetNodeType_t *)request_data;
1271 if (NULL != in_req) {
1272 /* Allocate memory */
1273 req = (ZigbeeServiceGetNodeType_t *)
1274 g_malloc0(sizeof(ZigbeeServiceGetNodeType_t));
1277 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1280 service_request_data = (gpointer)req;
1285 Z_LOGE("Unexpected operation [%x]", ops_id);
1289 return service_request_data;
1292 static gpointer __zblib_request_create_zcl_thermostat_request_data(guint request_type,
1293 gpointer request_data, guint request_data_len)
1295 gpointer thermostat_request_data = NULL;
1298 NOT_USED(request_data_len);
1301 ops_id = __zblib_request_get_ops_id(request_type);
1303 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
1304 ZigbeeZclThermostatGetLocalTemp_t *in_req;
1305 ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
1307 in_req = (ZigbeeZclThermostatGetLocalTemp_t *)request_data;
1308 if (NULL != in_req) {
1309 /* Allocate memory */
1310 req = (ZigbeeZclThermostatGetLocalTemp_t *)
1311 g_malloc0(sizeof(ZigbeeZclThermostatGetLocalTemp_t));
1314 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1315 req->endpoint = in_req->endpoint;
1318 thermostat_request_data = (gpointer)req;
1322 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
1323 ZigbeeZclThermostatGetWeeklySchedule_t *in_req;
1324 ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
1326 in_req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request_data;
1327 if (NULL != in_req) {
1328 /* Allocate memory */
1329 req = (ZigbeeZclThermostatGetWeeklySchedule_t *)
1330 g_malloc0(sizeof(ZigbeeZclThermostatGetWeeklySchedule_t));
1333 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1334 req->endpoint = in_req->endpoint;
1335 req->num_of_days = in_req->num_of_days;
1336 req->mode = in_req->mode;
1339 thermostat_request_data = (gpointer)req;
1343 case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
1344 ZigbeeZclThermostatSetWeeklySchedule_t *in_req;
1345 ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
1347 in_req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request_data;
1348 if (NULL != in_req) {
1349 /* Allocate memory */
1350 req = (ZigbeeZclThermostatSetWeeklySchedule_t *)
1351 g_malloc0(sizeof(ZigbeeZclThermostatSetWeeklySchedule_t));
1354 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1355 req->endpoint = in_req->endpoint;
1356 req->no_of_transitions = in_req->no_of_transitions;
1357 req->num_of_days = in_req->num_of_days;
1358 req->mode = in_req->mode;
1359 memcpy(req->payload,
1360 in_req->payload, ZIGBEE_THERMSTAT_PAYLOAD_MAX_LEN);
1361 req->payload_len = in_req->payload_len;
1364 thermostat_request_data = (gpointer)req;
1368 case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
1369 ZigbeeZclThermostatClearWeeklySchedule_t *in_req;
1370 ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
1372 in_req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request_data;
1373 if (NULL != in_req) {
1374 /* Allocate memory */
1375 req = (ZigbeeZclThermostatClearWeeklySchedule_t *)
1376 g_malloc0(sizeof(ZigbeeZclThermostatClearWeeklySchedule_t));
1379 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1380 req->endpoint = in_req->endpoint;
1383 thermostat_request_data = (gpointer)req;
1387 case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
1388 ZigbeeZclThermostatSetpointRaiseLower_t *in_req;
1389 ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
1391 in_req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request_data;
1392 if (NULL != in_req) {
1393 /* Allocate memory */
1394 req = (ZigbeeZclThermostatSetpointRaiseLower_t *)
1395 g_malloc0(sizeof(ZigbeeZclThermostatSetpointRaiseLower_t));
1398 req->node_id = in_req->node_id;
1399 req->endpoint = in_req->endpoint;
1400 req->mode = in_req->mode;
1401 req->amount = in_req->amount;
1404 thermostat_request_data = (gpointer)req;
1412 return thermostat_request_data;
1415 static gpointer __zblib_request_create_zcl_basic_request_data(guint request_type,
1416 gpointer request_data, guint request_data_len)
1418 gpointer zclbasic_control_request_data = NULL;
1421 NOT_USED(request_data_len);
1424 ops_id = __zblib_request_get_ops_id(request_type);
1426 case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
1427 ZigbeeZclBasicResetFactoryDefault_t *in_req;
1428 ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
1430 in_req = (ZigbeeZclBasicResetFactoryDefault_t *)request_data;
1431 if (NULL != in_req) {
1432 /* Allocate memory */
1433 req = (ZigbeeZclBasicResetFactoryDefault_t *)
1434 g_malloc0(sizeof(ZigbeeZclBasicResetFactoryDefault_t));
1437 req->node_id = in_req->node_id;
1438 req->dest_ep = in_req->dest_ep;
1441 zclbasic_control_request_data = (gpointer)req;
1449 return zclbasic_control_request_data;
1452 static gpointer __zblib_request_create_zcl_global_control_request_data(guint request_type,
1453 gpointer request_data, guint request_data_len)
1455 gpointer zclglobal_control_request_data = NULL;
1458 NOT_USED(request_data_len);
1461 ops_id = __zblib_request_get_ops_id(request_type);
1463 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
1464 ZigbeeZclGlobalControlReadAttributesRequest_t *in_req;
1465 ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
1467 in_req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request_data;
1468 if (NULL != in_req) {
1469 /* Allocate memory */
1470 req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)
1471 g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesRequest_t));
1474 req->attribute_id = g_strdup(in_req->attribute_id);
1475 req->attribute_id_len = in_req->attribute_id_len;
1476 req->node_id = in_req->node_id;
1477 req->cluster_id = in_req->cluster_id;
1478 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1479 req->dest_ep = in_req->dest_ep;
1482 zclglobal_control_request_data = (gpointer)req;
1486 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
1487 ZigbeeZclGlobalControlWriteAttributesRequest_t *in_req;
1488 ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
1490 in_req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request_data;
1491 if (NULL != in_req) {
1492 /* Allocate memory */
1493 req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)
1494 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesRequest_t));
1497 req->write_records = g_strdup(in_req->write_records);
1498 req->records_len = in_req->records_len;
1499 req->node_id = in_req->node_id;
1500 req->cluster_id = in_req->cluster_id;
1501 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1502 req->src_ep = in_req->src_ep;
1503 req->dest_ep = in_req->dest_ep;
1506 zclglobal_control_request_data = (gpointer)req;
1510 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
1511 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *in_req;
1512 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
1514 in_req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request_data;
1515 if (NULL != in_req) {
1516 /* Allocate memory */
1517 req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)
1518 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t));
1521 req->write_records = g_strdup(in_req->write_records);
1522 req->records_len = in_req->records_len;
1523 req->node_id = in_req->node_id;
1524 req->cluster_id = in_req->cluster_id;
1525 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1526 req->src_ep = in_req->src_ep;
1527 req->dest_ep = in_req->dest_ep;
1530 zclglobal_control_request_data = (gpointer)req;
1534 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
1535 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *in_req;
1536 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
1538 in_req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request_data;
1539 if (NULL != in_req) {
1540 /* Allocate memory */
1541 req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)
1542 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesNoResponse_t));
1545 req->write_records = g_strdup(in_req->write_records);
1546 req->records_len = in_req->records_len;
1547 req->node_id = in_req->node_id;
1548 req->cluster_id = in_req->cluster_id;
1549 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1550 req->src_ep = in_req->src_ep;
1551 req->dest_ep = in_req->dest_ep;
1554 zclglobal_control_request_data = (gpointer)req;
1558 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
1559 ZigbeeZclGlobalControlWriteAttributesStructed_t *in_req;
1560 ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
1562 in_req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request_data;
1563 if (NULL != in_req) {
1564 /* Allocate memory */
1565 req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)
1566 g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesStructed_t));
1569 req->write_records = g_strdup(in_req->write_records);
1570 req->records_len = in_req->records_len;
1571 req->node_id = in_req->node_id;
1572 req->cluster_id = in_req->cluster_id;
1573 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1574 req->src_ep = in_req->src_ep;
1575 req->dest_ep = in_req->dest_ep;
1578 zclglobal_control_request_data = (gpointer)req;
1582 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
1583 ZigbeeZclGlobalControlReadAttributesStructed_t *in_req;
1584 ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
1586 in_req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request_data;
1587 if (NULL != in_req) {
1588 /* Allocate memory */
1589 req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)
1590 g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesStructed_t));
1593 req->read_records = g_strdup(in_req->read_records);
1594 req->records_len = in_req->records_len;
1595 req->node_id = in_req->node_id;
1596 req->cluster_id = in_req->cluster_id;
1597 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1598 req->src_ep = in_req->src_ep;
1599 req->dest_ep = in_req->dest_ep;
1602 zclglobal_control_request_data = (gpointer)req;
1606 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
1607 ZigbeeZclGlobalControlConfigureReportingReq_t *in_req;
1608 ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
1610 in_req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request_data;
1611 if (NULL != in_req) {
1612 /* Allocate memory */
1613 req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)
1614 g_malloc0(sizeof(ZigbeeZclGlobalControlConfigureReportingReq_t));
1617 req->read_records = g_strdup(in_req->read_records);
1618 req->records_len = in_req->records_len;
1619 req->node_id = in_req->node_id;
1620 req->cluster_id = in_req->cluster_id;
1621 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1622 req->src_ep = in_req->src_ep;
1623 req->dest_ep = in_req->dest_ep;
1626 zclglobal_control_request_data = (gpointer)req;
1630 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
1631 ZigbeeZclGlobalControlReadConfigureReporting_t *in_req;
1632 ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
1634 in_req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request_data;
1635 if (NULL != in_req) {
1636 /* Allocate memory */
1637 req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)
1638 g_malloc0(sizeof(ZigbeeZclGlobalControlReadConfigureReporting_t));
1641 req->read_records = g_strdup(in_req->read_records);
1642 req->records_len = in_req->records_len;
1643 req->node_id = in_req->node_id;
1644 req->cluster_id = in_req->cluster_id;
1645 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1646 req->src_ep = in_req->src_ep;
1647 req->dest_ep = in_req->dest_ep;
1650 zclglobal_control_request_data = (gpointer)req;
1654 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
1655 ZigbeeZclGlobalControlDiscoverAttributes_t *in_req;
1656 ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
1658 in_req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request_data;
1659 if (NULL != in_req) {
1660 /* Allocate memory */
1661 req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)
1662 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributes_t));
1665 req->node_id = in_req->node_id;
1666 req->dest_ep = in_req->dest_ep;
1667 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1668 req->cluster_id = in_req->cluster_id;
1669 req->start_attribute = in_req->start_attribute;
1670 req->max = in_req->max;
1673 zclglobal_control_request_data = (gpointer)req;
1677 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
1678 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *in_req;
1679 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
1681 in_req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request_data;
1682 if (NULL != in_req) {
1683 /* Allocate memory */
1684 req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)
1685 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributesExtended_t));
1688 req->node_id = in_req->node_id;
1689 req->dest_ep = in_req->dest_ep;
1690 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1691 req->cluster_id = in_req->cluster_id;
1692 req->start_attribute = in_req->start_attribute;
1693 req->max = in_req->max;
1696 zclglobal_control_request_data = (gpointer)req;
1700 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
1701 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *in_req;
1702 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
1704 in_req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request_data;
1705 if (NULL != in_req) {
1706 /* Allocate memory */
1707 req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)
1708 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsReceived_t));
1711 req->node_id = in_req->node_id;
1712 req->dest_ep = in_req->dest_ep;
1713 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1714 req->cluster_id = in_req->cluster_id;
1715 req->start_attribute = in_req->start_attribute;
1716 req->max = in_req->max;
1719 zclglobal_control_request_data = (gpointer)req;
1723 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
1724 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *in_req;
1725 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
1727 in_req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request_data;
1728 if (NULL != in_req) {
1729 /* Allocate memory */
1730 req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)
1731 g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsGenerated_t));
1734 req->node_id = in_req->node_id;
1735 req->dest_ep = in_req->dest_ep;
1736 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1737 req->cluster_id = in_req->cluster_id;
1738 req->start_attribute = in_req->start_attribute;
1739 req->max = in_req->max;
1742 zclglobal_control_request_data = (gpointer)req;
1750 return zclglobal_control_request_data;
1753 static gpointer __zblib_request_create_zcl_ias_zone_request_data(guint request_type,
1754 gpointer request_data, guint request_data_len)
1756 gpointer zclias_control_request_data = NULL;
1759 NOT_USED(request_data_len);
1762 ops_id = __zblib_request_get_ops_id(request_type);
1764 case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
1765 ZigbeeZclIasZoneEnrollResponse_t *in_req;
1766 ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
1768 in_req = (ZigbeeZclIasZoneEnrollResponse_t *)request_data;
1769 if (NULL != in_req) {
1770 /* Allocate memory */
1771 req = (ZigbeeZclIasZoneEnrollResponse_t *)
1772 g_malloc0(sizeof(ZigbeeZclIasZoneEnrollResponse_t));
1775 req->node_id = in_req->node_id;
1776 req->dest_ep = in_req->dest_ep;
1777 req->enroll_code = in_req->enroll_code;
1778 req->zone_id = in_req->zone_id;
1781 zclias_control_request_data = (gpointer)req;
1789 return zclias_control_request_data;
1792 static gpointer __zblib_request_create_zcl_identify_request_data(guint request_type,
1793 gpointer request_data, guint request_data_len)
1795 gpointer zclidentify_control_request_data = NULL;
1798 NOT_USED(request_data_len);
1801 ops_id = __zblib_request_get_ops_id(request_type);
1803 case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
1804 ZigbeeZclIdentifyIdentify_t *in_req;
1805 ZigbeeZclIdentifyIdentify_t *req = NULL;
1807 in_req = (ZigbeeZclIdentifyIdentify_t *)request_data;
1808 if (NULL != in_req) {
1809 /* Allocate memory */
1810 req = (ZigbeeZclIdentifyIdentify_t *)
1811 g_malloc0(sizeof(ZigbeeZclIdentifyIdentify_t));
1814 req->node_id = in_req->node_id;
1815 req->dest_ep = in_req->dest_ep;
1816 req->identify_time = in_req->identify_time;
1819 zclidentify_control_request_data = (gpointer)req;
1823 case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
1824 ZigbeeZclIdentifyQuery_t *in_req;
1825 ZigbeeZclIdentifyQuery_t *req = NULL;
1827 in_req = (ZigbeeZclIdentifyQuery_t *)request_data;
1828 if (NULL != in_req) {
1829 /* Allocate memory */
1830 req = (ZigbeeZclIdentifyQuery_t *)
1831 g_malloc0(sizeof(ZigbeeZclIdentifyQuery_t));
1834 req->node_id = in_req->node_id;
1837 zclidentify_control_request_data = (gpointer)req;
1845 return zclidentify_control_request_data;
1848 static gpointer __zblib_request_create_zcl_color_control_request_data(guint request_type,
1849 gpointer request_data, guint request_data_len)
1851 gpointer zcl_color_request_data = NULL;
1854 NOT_USED(request_data_len);
1857 ops_id = __zblib_request_get_ops_id(request_type);
1859 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
1860 ZigbeeZclColorControlMoveToHue_t *in_req;
1861 ZigbeeZclColorControlMoveToHue_t *req = NULL;
1863 in_req = (ZigbeeZclColorControlMoveToHue_t *)request_data;
1864 if (NULL != in_req) {
1865 /* Allocate memory */
1866 req = (ZigbeeZclColorControlMoveToHue_t *)
1867 g_malloc0(sizeof(ZigbeeZclColorControlMoveToHue_t));
1870 req->node_id = in_req->node_id;
1871 req->dest_ep = in_req->dest_ep;
1872 req->hue = in_req->hue;
1873 req->direction = in_req->direction;
1874 req->transition_time = in_req->transition_time;
1877 zcl_color_request_data = (gpointer)req;
1881 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
1882 ZigbeeZclColorControlMoveHue_t *in_req;
1883 ZigbeeZclColorControlMoveHue_t *req = NULL;
1885 in_req = (ZigbeeZclColorControlMoveHue_t *)request_data;
1886 if (NULL != in_req) {
1887 /* Allocate memory */
1888 req = (ZigbeeZclColorControlMoveHue_t *)
1889 g_malloc0(sizeof(ZigbeeZclColorControlMoveHue_t));
1892 req->node_id = in_req->node_id;
1893 req->dest_ep = in_req->dest_ep;
1894 req->move_mode = in_req->move_mode;
1895 req->rate = in_req->rate;
1898 zcl_color_request_data = (gpointer)req;
1902 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
1903 ZigbeeZclColorControlStepHue_t *in_req;
1904 ZigbeeZclColorControlStepHue_t *req = NULL;
1906 in_req = (ZigbeeZclColorControlStepHue_t *)request_data;
1907 if (NULL != in_req) {
1908 /* Allocate memory */
1909 req = (ZigbeeZclColorControlStepHue_t *)
1910 g_malloc0(sizeof(ZigbeeZclColorControlStepHue_t));
1913 req->node_id = in_req->node_id;
1914 req->dest_ep = in_req->dest_ep;
1915 req->step_mode = in_req->step_mode;
1916 req->step_size = in_req->step_size;
1917 req->transition_time = in_req->transition_time;
1920 zcl_color_request_data = (gpointer)req;
1924 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
1925 ZigbeeZclColorControlMoveToSaturation_t *in_req;
1926 ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
1928 in_req = (ZigbeeZclColorControlMoveToSaturation_t *)request_data;
1929 if (NULL != in_req) {
1930 /* Allocate memory */
1931 req = (ZigbeeZclColorControlMoveToSaturation_t *)
1932 g_malloc0(sizeof(ZigbeeZclColorControlMoveToSaturation_t));
1935 req->node_id = in_req->node_id;
1936 req->dest_ep = in_req->dest_ep;
1937 req->saturation = in_req->saturation;
1938 req->transition_time = in_req->transition_time;
1941 zcl_color_request_data = (gpointer)req;
1945 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
1946 ZigbeeZclColorControlMoveSaturation_t *in_req;
1947 ZigbeeZclColorControlMoveSaturation_t *req = NULL;
1949 in_req = (ZigbeeZclColorControlMoveSaturation_t *)request_data;
1950 if (NULL != in_req) {
1951 /* Allocate memory */
1952 req = (ZigbeeZclColorControlMoveSaturation_t *)
1953 g_malloc0(sizeof(ZigbeeZclColorControlMoveSaturation_t));
1956 req->node_id = in_req->node_id;
1957 req->dest_ep = in_req->dest_ep;
1958 req->move_mode = in_req->move_mode;
1959 req->rate = in_req->rate;
1962 zcl_color_request_data = (gpointer)req;
1966 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
1967 ZigbeeZclColorControlStepSaturation_t *in_req;
1968 ZigbeeZclColorControlStepSaturation_t *req = NULL;
1970 in_req = (ZigbeeZclColorControlStepSaturation_t *)request_data;
1971 if (NULL != in_req) {
1972 /* Allocate memory */
1973 req = (ZigbeeZclColorControlStepSaturation_t *)
1974 g_malloc0(sizeof(ZigbeeZclColorControlStepSaturation_t));
1977 req->node_id = in_req->node_id;
1978 req->dest_ep = in_req->dest_ep;
1979 req->step_mode = in_req->step_mode;
1980 req->step_size = in_req->step_size;
1981 req->transition_time = in_req->transition_time;
1984 zcl_color_request_data = (gpointer)req;
1988 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
1989 ZigbeeZclColorControlMoveToHueAndSaturation_t *in_req;
1990 ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
1992 in_req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request_data;
1993 if (NULL != in_req) {
1994 /* Allocate memory */
1995 req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)
1996 g_malloc0(sizeof(ZigbeeZclColorControlMoveToHueAndSaturation_t));
1999 req->node_id = in_req->node_id;
2000 req->dest_ep = in_req->dest_ep;
2001 req->hue = in_req->hue;
2002 req->saturation = in_req->saturation;
2003 req->transition_time = in_req->transition_time;
2006 zcl_color_request_data = (gpointer)req;
2010 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
2011 ZigbeeZclColorControlMoveToColor_t *in_req;
2012 ZigbeeZclColorControlMoveToColor_t *req = NULL;
2014 in_req = (ZigbeeZclColorControlMoveToColor_t *)request_data;
2015 if (NULL != in_req) {
2016 /* Allocate memory */
2017 req = (ZigbeeZclColorControlMoveToColor_t *)
2018 g_malloc0(sizeof(ZigbeeZclColorControlMoveToColor_t));
2021 req->node_id = in_req->node_id;
2022 req->dest_ep = in_req->dest_ep;
2023 req->color_x = in_req->color_x;
2024 req->color_y = in_req->color_y;
2025 req->transition_time = in_req->transition_time;
2028 zcl_color_request_data = (gpointer)req;
2032 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
2033 ZigbeeZclColorControlMoveColor_t *in_req;
2034 ZigbeeZclColorControlMoveColor_t *req = NULL;
2036 in_req = (ZigbeeZclColorControlMoveColor_t *)request_data;
2037 if (NULL != in_req) {
2038 /* Allocate memory */
2039 req = (ZigbeeZclColorControlMoveColor_t *)
2040 g_malloc0(sizeof(ZigbeeZclColorControlMoveColor_t));
2043 req->node_id = in_req->node_id;
2044 req->dest_ep = in_req->dest_ep;
2045 req->rate_x = in_req->rate_x;
2046 req->rate_y = in_req->rate_y;
2049 zcl_color_request_data = (gpointer)req;
2053 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
2054 ZigbeeZclColorControlStepColor_t *in_req;
2055 ZigbeeZclColorControlStepColor_t *req = NULL;
2057 in_req = (ZigbeeZclColorControlStepColor_t *)request_data;
2058 if (NULL != in_req) {
2059 /* Allocate memory */
2060 req = (ZigbeeZclColorControlStepColor_t *)
2061 g_malloc0(sizeof(ZigbeeZclColorControlStepColor_t));
2064 req->node_id = in_req->node_id;
2065 req->dest_ep = in_req->dest_ep;
2066 req->rate_x = in_req->rate_x;
2067 req->rate_y = in_req->rate_y;
2068 req->transition_time = in_req->transition_time;
2071 zcl_color_request_data = (gpointer)req;
2075 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
2076 ZigbeeZclColorControlMoveColorTemperature_t *in_req;
2077 ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
2079 in_req = (ZigbeeZclColorControlMoveColorTemperature_t *)request_data;
2080 if (NULL != in_req) {
2081 /* Allocate memory */
2082 req = (ZigbeeZclColorControlMoveColorTemperature_t *)
2083 g_malloc0(sizeof(ZigbeeZclColorControlMoveColorTemperature_t));
2086 req->node_id = in_req->node_id;
2087 req->dest_ep = in_req->dest_ep;
2088 req->color_temperature = in_req->color_temperature;
2089 req->transition_time = in_req->transition_time;
2092 zcl_color_request_data = (gpointer)req;
2100 return zcl_color_request_data;
2103 static gpointer __zblib_request_create_zcl_group_request_data(guint request_type,
2104 gpointer request_data, guint request_data_len)
2106 gpointer zcl_group_request_data = NULL;
2109 NOT_USED(request_data_len);
2112 ops_id = __zblib_request_get_ops_id(request_type);
2114 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
2115 ZigbeeZclGroupAddGroup_t *in_req;
2116 ZigbeeZclGroupAddGroup_t *req = NULL;
2118 in_req = (ZigbeeZclGroupAddGroup_t *)request_data;
2119 if (NULL != in_req) {
2120 /* Allocate memory */
2121 req = (ZigbeeZclGroupAddGroup_t *)
2122 g_malloc0(sizeof(ZigbeeZclGroupAddGroup_t));
2125 req->node_id = in_req->node_id;
2126 req->dest_ep = in_req->dest_ep;
2127 req->group_id = in_req->group_id;
2128 g_strlcpy(req->group_name,
2129 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2132 zcl_group_request_data = (gpointer)req;
2136 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
2137 ZigbeeZclGroupViewGroup_t *in_req;
2138 ZigbeeZclGroupViewGroup_t *req = NULL;
2140 in_req = (ZigbeeZclGroupViewGroup_t *)request_data;
2141 if (NULL != in_req) {
2142 /* Allocate memory */
2143 req = (ZigbeeZclGroupViewGroup_t *)
2144 g_malloc0(sizeof(ZigbeeZclGroupViewGroup_t));
2147 req->node_id = in_req->node_id;
2148 req->dest_ep = in_req->dest_ep;
2151 zcl_group_request_data = (gpointer)req;
2155 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
2156 ZigbeeZclGroupGetGroupMembership_t *in_req;
2157 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
2159 in_req = (ZigbeeZclGroupGetGroupMembership_t *)request_data;
2160 if (NULL != in_req) {
2161 /* Allocate memory */
2162 req = (ZigbeeZclGroupGetGroupMembership_t *)
2163 g_malloc0(sizeof(ZigbeeZclGroupGetGroupMembership_t));
2166 req->node_id = in_req->node_id;
2167 req->dest_ep = in_req->dest_ep;
2168 req->group_count = in_req->group_count;
2169 req->group_list = (gshort *)g_memdup(in_req->group_list,
2170 in_req->group_count);
2173 zcl_group_request_data = (gpointer)req;
2177 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
2178 ZigbeeZclGroupRemoveGroup_t *in_req;
2179 ZigbeeZclGroupRemoveGroup_t *req = NULL;
2181 in_req = (ZigbeeZclGroupRemoveGroup_t *)request_data;
2182 if (NULL != in_req) {
2183 /* Allocate memory */
2184 req = (ZigbeeZclGroupRemoveGroup_t *)
2185 g_malloc0(sizeof(ZigbeeZclGroupRemoveGroup_t));
2188 req->node_id = in_req->node_id;
2189 req->dest_ep = in_req->dest_ep;
2190 req->group_id = in_req->group_id;
2193 zcl_group_request_data = (gpointer)req;
2197 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
2198 ZigbeeZclGroupRemoveAllGroup_t *in_req;
2199 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
2201 in_req = (ZigbeeZclGroupRemoveAllGroup_t *)request_data;
2202 if (NULL != in_req) {
2203 /* Allocate memory */
2204 req = (ZigbeeZclGroupRemoveAllGroup_t *)
2205 g_malloc0(sizeof(ZigbeeZclGroupRemoveAllGroup_t));
2208 req->node_id = in_req->node_id;
2209 req->dest_ep = in_req->dest_ep;
2212 zcl_group_request_data = (gpointer)req;
2216 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
2217 ZigbeeZclGroupAddGroupIfIdentifying_t *in_req;
2218 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
2220 in_req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request_data;
2221 if (NULL != in_req) {
2222 /* Allocate memory */
2223 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)
2224 g_malloc0(sizeof(ZigbeeZclGroupAddGroupIfIdentifying_t));
2227 req->node_id = in_req->node_id;
2228 req->dest_ep = in_req->dest_ep;
2229 req->group_id = in_req->group_id;
2230 g_strlcpy(req->group_name,
2231 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2234 zcl_group_request_data = (gpointer)req;
2242 return zcl_group_request_data;
2245 static gpointer __zblib_request_create_zcl_poll_control_request_data(guint request_type,
2246 gpointer request_data, guint request_data_len)
2248 gpointer zcl_poll_control_request_data = NULL;
2251 NOT_USED(request_data_len);
2254 ops_id = __zblib_request_get_ops_id(request_type);
2256 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
2257 ZigbeeZclPollControlCheckInResponse_t *in_req;
2258 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
2260 in_req = (ZigbeeZclPollControlCheckInResponse_t *)request_data;
2261 if (NULL != in_req) {
2262 /* Allocate memory */
2263 req = (ZigbeeZclPollControlCheckInResponse_t *)
2264 g_malloc0(sizeof(ZigbeeZclPollControlCheckInResponse_t));
2267 req->node_id = in_req->node_id;
2268 req->dest_ep = in_req->dest_ep;
2269 req->start_fast_polling = in_req->start_fast_polling;
2270 req->fast_poll_timeout = in_req->fast_poll_timeout;
2273 zcl_poll_control_request_data = (gpointer)req;
2277 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
2278 ZigbeeZclPollControlFastPollStop_t *in_req;
2279 ZigbeeZclPollControlFastPollStop_t *req = NULL;
2281 in_req = (ZigbeeZclPollControlFastPollStop_t *)request_data;
2282 if (NULL != in_req) {
2283 /* Allocate memory */
2284 req = (ZigbeeZclPollControlFastPollStop_t *)
2285 g_malloc0(sizeof(ZigbeeZclPollControlFastPollStop_t));
2288 req->node_id = in_req->node_id;
2289 req->dest_ep = in_req->dest_ep;
2292 zcl_poll_control_request_data = (gpointer)req;
2296 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
2297 ZigbeeZclPollControlSetLongPollInterval_t *in_req;
2298 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
2300 in_req = (ZigbeeZclPollControlSetLongPollInterval_t *)request_data;
2301 if (NULL != in_req) {
2302 /* Allocate memory */
2303 req = (ZigbeeZclPollControlSetLongPollInterval_t *)
2304 g_malloc0(sizeof(ZigbeeZclPollControlSetLongPollInterval_t));
2307 req->node_id = in_req->node_id;
2308 req->dest_ep = in_req->dest_ep;
2309 req->new_long_poll_interval = in_req->new_long_poll_interval;
2312 zcl_poll_control_request_data = (gpointer)req;
2316 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
2317 ZigbeeZclPollControlSetShortPollInterval_t *in_req;
2318 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
2320 in_req = (ZigbeeZclPollControlSetShortPollInterval_t *)request_data;
2321 if (NULL != in_req) {
2322 /* Allocate memory */
2323 req = (ZigbeeZclPollControlSetShortPollInterval_t *)
2324 g_malloc0(sizeof(ZigbeeZclPollControlSetShortPollInterval_t));
2327 req->node_id = in_req->node_id;
2328 req->dest_ep = in_req->dest_ep;
2329 req->new_short_poll_interval = in_req->new_short_poll_interval;
2332 zcl_poll_control_request_data = (gpointer)req;
2340 return zcl_poll_control_request_data;
2343 static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type,
2344 gpointer request_data, guint request_data_len)
2346 gpointer zcl_scene_request_data = NULL;
2349 NOT_USED(request_data_len);
2352 ops_id = __zblib_request_get_ops_id(request_type);
2354 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
2355 ZigbeeZclSceneAddScene_t *in_req;
2356 ZigbeeZclSceneAddScene_t *req = NULL;
2358 in_req = (ZigbeeZclSceneAddScene_t *)request_data;
2359 if (NULL != in_req) {
2360 /* Allocate memory */
2361 req = (ZigbeeZclSceneAddScene_t *)
2362 g_malloc0(sizeof(ZigbeeZclSceneAddScene_t));
2365 req->node_id = in_req->node_id;
2366 req->dest_ep = in_req->dest_ep;
2367 req->group_id = in_req->group_id;
2368 req->scene_id = in_req->scene_id;
2369 req->transition_time = in_req->transition_time;
2370 g_strlcpy(req->scene_name,
2371 in_req->scene_name, ZIGBEE_ZCL_SCENE_NAME_MAX_LEN + 1);
2372 req->ext_field_set_len = in_req->ext_field_set_len;
2373 req->ext_field_set = (gshort *)g_memdup(in_req->ext_field_set,
2374 in_req->ext_field_set_len);
2377 zcl_scene_request_data = (gpointer)req;
2381 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
2382 ZigbeeZclSceneViewScene_t *in_req;
2383 ZigbeeZclSceneViewScene_t *req = NULL;
2385 in_req = (ZigbeeZclSceneViewScene_t *)request_data;
2386 if (NULL != in_req) {
2387 /* Allocate memory */
2388 req = (ZigbeeZclSceneViewScene_t *)
2389 g_malloc0(sizeof(ZigbeeZclSceneViewScene_t));
2392 req->node_id = in_req->node_id;
2393 req->dest_ep = in_req->dest_ep;
2394 req->group_id = in_req->group_id;
2395 req->scene_id = in_req->scene_id;
2398 zcl_scene_request_data = (gpointer)req;
2402 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
2403 ZigbeeZclSceneRemoveScene_t *in_req;
2404 ZigbeeZclSceneRemoveScene_t *req = NULL;
2406 in_req = (ZigbeeZclSceneRemoveScene_t *)request_data;
2407 if (NULL != in_req) {
2408 /* Allocate memory */
2409 req = (ZigbeeZclSceneRemoveScene_t *)
2410 g_malloc0(sizeof(ZigbeeZclSceneRemoveScene_t));
2413 req->node_id = in_req->node_id;
2414 req->dest_ep = in_req->dest_ep;
2415 req->group_id = in_req->group_id;
2416 req->scene_id = in_req->scene_id;
2419 zcl_scene_request_data = (gpointer)req;
2423 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
2424 ZigbeeZclSceneStoreScene_t *in_req;
2425 ZigbeeZclSceneStoreScene_t *req = NULL;
2427 in_req = (ZigbeeZclSceneStoreScene_t *)request_data;
2428 if (NULL != in_req) {
2429 /* Allocate memory */
2430 req = (ZigbeeZclSceneStoreScene_t *)
2431 g_malloc0(sizeof(ZigbeeZclSceneStoreScene_t));
2434 req->node_id = in_req->node_id;
2435 req->dest_ep = in_req->dest_ep;
2436 req->group_id = in_req->group_id;
2437 req->scene_id = in_req->scene_id;
2440 zcl_scene_request_data = (gpointer)req;
2444 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
2445 ZigbeeZclSceneRecallScene_t *in_req;
2446 ZigbeeZclSceneRecallScene_t *req = NULL;
2448 in_req = (ZigbeeZclSceneRecallScene_t *)request_data;
2449 if (NULL != in_req) {
2450 /* Allocate memory */
2451 req = (ZigbeeZclSceneRecallScene_t *)
2452 g_malloc0(sizeof(ZigbeeZclSceneRecallScene_t));
2455 req->node_id = in_req->node_id;
2456 req->dest_ep = in_req->dest_ep;
2457 req->group_id = in_req->group_id;
2458 req->scene_id = in_req->scene_id;
2461 zcl_scene_request_data = (gpointer)req;
2465 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
2466 ZigbeeZclSceneRemoveAllScene_t *in_req;
2467 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
2469 in_req = (ZigbeeZclSceneRemoveAllScene_t *)request_data;
2470 if (NULL != in_req) {
2471 /* Allocate memory */
2472 req = (ZigbeeZclSceneRemoveAllScene_t *)
2473 g_malloc0(sizeof(ZigbeeZclSceneRemoveAllScene_t));
2476 req->node_id = in_req->node_id;
2477 req->dest_ep = in_req->dest_ep;
2478 req->group_id = in_req->group_id;
2481 zcl_scene_request_data = (gpointer)req;
2485 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
2486 ZigbeeZclSceneGetSceneMembership_t *in_req;
2487 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
2489 in_req = (ZigbeeZclSceneGetSceneMembership_t *)request_data;
2490 if (NULL != in_req) {
2491 /* Allocate memory */
2492 req = (ZigbeeZclSceneGetSceneMembership_t *)
2493 g_malloc0(sizeof(ZigbeeZclSceneGetSceneMembership_t));
2496 req->node_id = in_req->node_id;
2497 req->dest_ep = in_req->dest_ep;
2498 req->group_id = in_req->group_id;
2501 zcl_scene_request_data = (gpointer)req;
2509 return zcl_scene_request_data;
2512 static gpointer __zblib_request_create_zdo_dev_control_request_data(guint request_type,
2513 gpointer request_data, guint request_data_len)
2515 gpointer zdodev_control_request_data = NULL;
2518 NOT_USED(request_data_len);
2521 ops_id = __zblib_request_get_ops_id(request_type);
2523 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
2524 ZigbeeZdoDevControlNwkAddrReq_t *in_req;
2525 ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
2527 in_req = (ZigbeeZdoDevControlNwkAddrReq_t *)request_data;
2528 if (NULL != in_req) {
2529 /* Allocate memory */
2530 req = (ZigbeeZdoDevControlNwkAddrReq_t *)
2531 g_malloc0(sizeof(ZigbeeZdoDevControlNwkAddrReq_t));
2534 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
2535 req->request_type = in_req->request_type;
2536 req->start_index = in_req->start_index;
2539 zdodev_control_request_data = (gpointer)req;
2543 case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
2544 ZigbeeZdoDevControlMatchedDescriptorReq_t *in_req;
2545 ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
2547 in_req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request_data;
2548 if (NULL != in_req) {
2549 /* Allocate memory */
2550 req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)
2551 g_malloc0(sizeof(ZigbeeZdoDevControlMatchedDescriptorReq_t));
2554 req->node_id = in_req->node_id;
2555 req->profile_id = in_req->profile_id;
2556 req->num_in_cl = in_req->num_in_cl;
2557 req->in_cl = g_strdup(in_req->in_cl);
2558 req->num_out_cl = in_req->num_out_cl;
2559 req->out_cl = g_strdup(in_req->out_cl);
2562 zdodev_control_request_data = (gpointer)req;
2566 case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
2567 ZigbeeZdoDevControlIeeeAddrReq_t *in_req;
2568 ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
2570 in_req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request_data;
2571 if (NULL != in_req) {
2572 /* Allocate memory */
2573 req = (ZigbeeZdoDevControlIeeeAddrReq_t *)
2574 g_malloc0(sizeof(ZigbeeZdoDevControlIeeeAddrReq_t));
2577 req->node_id = in_req->node_id;
2580 zdodev_control_request_data = (gpointer)req;
2584 case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
2585 ZigbeeZdoDevControlActiveEpReq_t *in_req;
2586 ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
2588 in_req = (ZigbeeZdoDevControlActiveEpReq_t *)request_data;
2589 if (NULL != in_req) {
2590 /* Allocate memory */
2591 req = (ZigbeeZdoDevControlActiveEpReq_t *)
2592 g_malloc0(sizeof(ZigbeeZdoDevControlActiveEpReq_t));
2595 req->node_id = in_req->node_id;
2598 zdodev_control_request_data = (gpointer)req;
2602 case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
2603 ZigbeeZdoDevControlNodeDescriptorReq_t *in_req;
2604 ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
2606 in_req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request_data;
2607 if (NULL != in_req) {
2608 /* Allocate memory */
2609 req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)
2610 g_malloc0(sizeof(ZigbeeZdoDevControlNodeDescriptorReq_t));
2613 req->node_id = in_req->node_id;
2616 zdodev_control_request_data = (gpointer)req;
2620 case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
2621 ZigbeeZdoDevControlPowerDescriptorReq_t *in_req;
2622 ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
2624 in_req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request_data;
2625 if (NULL != in_req) {
2626 /* Allocate memory */
2627 req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)
2628 g_malloc0(sizeof(ZigbeeZdoDevControlPowerDescriptorReq_t));
2631 req->node_id = in_req->node_id;
2634 zdodev_control_request_data = (gpointer)req;
2638 case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
2639 ZigbeeZdoDevControlComplexDescriptorReq_t *in_req;
2640 ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
2642 in_req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request_data;
2643 if (NULL != in_req) {
2644 /* Allocate memory */
2645 req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)
2646 g_malloc0(sizeof(ZigbeeZdoDevControlComplexDescriptorReq_t));
2649 req->node_id = in_req->node_id;
2652 zdodev_control_request_data = (gpointer)req;
2656 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
2657 ZigbeeZdoDevControlUserDescriptorReq_t *in_req;
2658 ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
2660 in_req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request_data;
2661 if (NULL != in_req) {
2662 /* Allocate memory */
2663 req = (ZigbeeZdoDevControlUserDescriptorReq_t *)
2664 g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorReq_t));
2667 req->node_id = in_req->node_id;
2670 zdodev_control_request_data = (gpointer)req;
2674 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
2675 ZigbeeZdoDevControlUserDescriptorSetReq_t *in_req;
2676 ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
2678 in_req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request_data;
2679 if (NULL != in_req) {
2680 /* Allocate memory */
2681 req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)
2682 g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorSetReq_t));
2685 req->node_id = in_req->node_id;
2686 req->user_descriptor_len = in_req->user_descriptor_len;
2687 memcpy(req->user_descriptor,
2688 in_req->user_descriptor, in_req->user_descriptor_len);
2691 zdodev_control_request_data = (gpointer)req;
2695 case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
2696 ZigbeeZdoDevControlDeviceAnnounce_t *in_req;
2697 ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
2699 in_req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request_data;
2700 if (NULL != in_req) {
2701 /* Allocate memory */
2702 req = (ZigbeeZdoDevControlDeviceAnnounce_t *)
2703 g_malloc0(sizeof(ZigbeeZdoDevControlDeviceAnnounce_t));
2706 req->node_id = in_req->node_id;
2707 memcpy(req->mac_addr, in_req->mac_addr, ZIGBEE_EUI64_SIZE);
2708 req->capability = in_req->capability;
2711 zdodev_control_request_data = (gpointer)req;
2715 case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
2716 ZigbeeZdoDevControlSimpleDescriptorReq_t *in_req;
2717 ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
2719 in_req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request_data;
2720 if (NULL != in_req) {
2721 /* Allocate memory */
2722 req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)
2723 g_malloc0(sizeof(ZigbeeZdoDevControlSimpleDescriptorReq_t));
2726 req->node_id = in_req->node_id;
2727 req->endpoint = in_req->endpoint;
2730 zdodev_control_request_data = (gpointer)req;
2734 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
2735 ZigbeeZdoDevControlMgmtLqiReq_t *in_req;
2736 ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
2738 in_req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request_data;
2739 if (NULL != in_req) {
2740 /* Allocate memory */
2741 req = (ZigbeeZdoDevControlMgmtLqiReq_t *)
2742 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtLqiReq_t));
2745 req->node_id = in_req->node_id;
2746 req->start_index = in_req->start_index;
2749 zdodev_control_request_data = (gpointer)req;
2753 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
2754 ZigbeeZdoDevControlMgmtRtgReq_t *in_req;
2755 ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
2757 in_req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request_data;
2758 if (NULL != in_req) {
2759 /* Allocate memory */
2760 req = (ZigbeeZdoDevControlMgmtRtgReq_t *)
2761 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtRtgReq_t));
2764 req->node_id = in_req->node_id;
2765 req->start_index = in_req->start_index;
2768 zdodev_control_request_data = (gpointer)req;
2772 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
2773 ZigbeeZdoDevControlMgmtBindReq_t *in_req;
2774 ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
2776 in_req = (ZigbeeZdoDevControlMgmtBindReq_t *)request_data;
2777 if (NULL != in_req) {
2778 /* Allocate memory */
2779 req = (ZigbeeZdoDevControlMgmtBindReq_t *)
2780 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtBindReq_t));
2783 req->node_id = in_req->node_id;
2784 req->start_index = in_req->start_index;
2787 zdodev_control_request_data = (gpointer)req;
2791 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
2792 ZigbeeZdoDevControlMgmtPermitJoinReq_t *in_req;
2793 ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
2795 in_req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request_data;
2796 if (NULL != in_req) {
2797 /* Allocate memory */
2798 req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)
2799 g_malloc0(sizeof(ZigbeeZdoDevControlMgmtPermitJoinReq_t));
2802 req->addr = in_req->addr;
2803 req->duration = in_req->duration;
2804 req->tc_significance = in_req->tc_significance;
2807 zdodev_control_request_data = (gpointer)req;
2811 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
2812 ZigbeeZdoDevControlNwkUpdateReq_t *in_req;
2813 ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
2815 in_req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request_data;
2816 if (NULL != in_req) {
2817 /* Allocate memory */
2818 req = (ZigbeeZdoDevControlNwkUpdateReq_t *)
2819 g_malloc0(sizeof(ZigbeeZdoDevControlNwkUpdateReq_t));
2822 req->node_id = in_req->node_id;
2823 req->scan_channel = in_req->scan_channel;
2824 req->scan_duration = in_req->scan_duration;
2825 req->scan_count = in_req->scan_count;
2826 req->network_update_id = in_req->network_update_id;
2829 zdodev_control_request_data = (gpointer)req;
2833 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
2834 ZigbeeZdoDevControlNwkDescriptorReq_t *in_req;
2835 ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
2837 in_req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request_data;
2838 if (NULL != in_req) {
2839 /* Allocate memory */
2840 req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)
2841 g_malloc0(sizeof(ZigbeeZdoDevControlNwkDescriptorReq_t));
2844 req->node_id = in_req->node_id;
2845 req->scan_channel = in_req->scan_channel;
2846 req->scan_duration = in_req->scan_duration;
2847 req->scan_count = in_req->scan_count;
2848 req->start_index = in_req->start_index;
2851 zdodev_control_request_data = (gpointer)req;
2859 return zdodev_control_request_data;
2862 static gpointer __zblib_request_create_zdo_bind_request_data(guint request_type,
2863 gpointer request_data, guint request_data_len)
2865 gpointer zdo_bind_request_data = NULL;
2868 NOT_USED(request_data_len);
2871 ops_id = __zblib_request_get_ops_id(request_type);
2873 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
2874 ZigbeeZdoBindBindReq_t *in_req;
2875 ZigbeeZdoBindBindReq_t *req = NULL;
2877 in_req = (ZigbeeZdoBindBindReq_t *)request_data;
2878 if (NULL != in_req) {
2879 /* Allocate memory */
2880 req = (ZigbeeZdoBindBindReq_t *)
2881 g_malloc0(sizeof(ZigbeeZdoBindBindReq_t));
2884 req->node_id = in_req->node_id;
2885 g_strlcpy(req->src_addr,
2886 in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2887 req->src_ep = in_req->src_ep;
2888 req->cluster_id = in_req->cluster_id;
2889 g_strlcpy(req->dst_addr,
2890 in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2891 req->bind_type = in_req->bind_type;
2892 req->group_addr = in_req->group_addr;
2893 req->dst_ep = in_req->dst_ep;
2896 zdo_bind_request_data = (gpointer)req;
2900 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
2901 ZigbeeZdoBindUnbindReq_t *in_req;
2902 ZigbeeZdoBindUnbindReq_t *req = NULL;
2904 in_req = (ZigbeeZdoBindUnbindReq_t *)request_data;
2905 if (NULL != in_req) {
2906 /* Allocate memory */
2907 req = (ZigbeeZdoBindUnbindReq_t *)
2908 g_malloc0(sizeof(ZigbeeZdoBindUnbindReq_t));
2911 req->node_id = in_req->node_id;
2912 g_strlcpy(req->src_addr,
2913 in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2914 req->src_ep = in_req->src_ep;
2915 req->cluster_id = in_req->cluster_id;
2916 g_strlcpy(req->dst_addr,
2917 in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2918 req->bind_type = in_req->bind_type;
2919 req->group_addr = in_req->group_addr;
2920 req->dst_ep = in_req->dst_ep;
2923 zdo_bind_request_data = (gpointer)req;
2931 return zdo_bind_request_data;
2935 static gpointer __zblib_request_create_request_data(guint request_type,
2936 gpointer request_data, guint request_data_len)
2938 gpointer _request_data = NULL;
2939 ZblibDriverType_e driver_type;
2941 /* Fetch driver type */
2942 driver_type = __zblib_request_get_driver_type(request_type);
2943 switch (driver_type) {
2944 case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
2945 _request_data = __zblib_request_create_zcl_alarm_request_data(request_type,
2946 request_data, request_data_len);
2950 case ZBLIB_DRIVER_TYPE_CUSTOM: {
2951 _request_data = __zblib_request_create_custom_request_data(request_type,
2952 request_data, request_data_len);
2956 case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
2957 _request_data = __zblib_request_create_zcl_door_lock_request_data(request_type,
2958 request_data, request_data_len);
2962 case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
2963 _request_data = __zblib_request_create_zcl_fan_control_request_data(request_type,
2964 request_data, request_data_len);
2968 case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
2969 _request_data = __zblib_request_create_zcl_level_control_request_data(request_type,
2970 request_data, request_data_len);
2974 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
2975 _request_data = __zblib_request_create_mfglib_control_request_data(request_type,
2976 request_data, request_data_len);
2980 case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
2981 _request_data = __zblib_request_create_zcl_on_off_request_data(request_type,
2982 request_data, request_data_len);
2986 case ZBLIB_DRIVER_TYPE_SERVICE: {
2987 _request_data = __zblib_request_create_service_request_data(request_type,
2988 request_data, request_data_len);
2992 case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
2993 _request_data = __zblib_request_create_zcl_thermostat_request_data(request_type,
2994 request_data, request_data_len);
2998 case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
2999 _request_data = __zblib_request_create_zcl_basic_request_data(request_type,
3000 request_data, request_data_len);
3004 case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
3005 _request_data = __zblib_request_create_zcl_global_control_request_data(request_type,
3006 request_data, request_data_len);
3010 case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
3011 _request_data = __zblib_request_create_zcl_ias_zone_request_data(request_type,
3012 request_data, request_data_len);
3016 case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
3017 _request_data = __zblib_request_create_zcl_identify_request_data(request_type,
3018 request_data, request_data_len);
3022 case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
3023 _request_data = __zblib_request_create_zcl_color_control_request_data(request_type,
3024 request_data, request_data_len);
3028 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
3029 _request_data = __zblib_request_create_zcl_group_request_data(request_type,
3030 request_data, request_data_len);
3034 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
3035 _request_data = __zblib_request_create_zcl_poll_control_request_data(request_type,
3036 request_data, request_data_len);
3040 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
3041 _request_data = __zblib_request_create_zcl_scene_request_data(request_type,
3042 request_data, request_data_len);
3046 case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
3047 _request_data = __zblib_request_create_zdo_dev_control_request_data(request_type,
3048 request_data, request_data_len);
3052 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
3053 _request_data = __zblib_request_create_zdo_bind_request_data(request_type,
3054 request_data, request_data_len);
3058 case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
3060 Z_LOGE("Unhandled driver type: [%d]", driver_type);
3065 return _request_data;
3068 static void __zblib_request_free_zcl_alarm_request_data(ZigBeeRequest *request,
3074 ops_id = __zblib_request_get_ops_id(request_type);
3076 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM_COUNT: {
3077 ZigbeeZclAlarmGetAlarmCount_t *req = NULL;
3079 req = (ZigbeeZclAlarmGetAlarmCount_t *)request->request_data;
3086 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM: {
3087 ZigbeeZclAlarmResetAlarm_t *req = NULL;
3089 req = (ZigbeeZclAlarmResetAlarm_t *)request->request_data;
3096 case ZBLIB_ZCL_ALARM_OPS_RESET_ALL_ALARM: {
3097 ZigbeeZclAlarmResetAllAlarm_t *req = NULL;
3099 req = (ZigbeeZclAlarmResetAllAlarm_t *)request->request_data;
3106 case ZBLIB_ZCL_ALARM_OPS_ALARM: {
3107 ZigbeeZclAlarmAlarm_t *req = NULL;
3109 req = (ZigbeeZclAlarmAlarm_t *)request->request_data;
3116 case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM_LOG: {
3117 ZigbeeZclAlarmResetAlarmLogs_t *req = NULL;
3119 req = (ZigbeeZclAlarmResetAlarmLogs_t *)request->request_data;
3126 case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
3135 static void __zblib_request_free_custom_request_data(ZigBeeRequest *request,
3141 ops_id = __zblib_request_get_ops_id(request_type);
3143 case ZBLIB_CUSTOM_OPS_APS_SEND: {
3144 ZigbeeCustomApsSend_t *req = NULL;
3146 req = (ZigbeeCustomApsSend_t *)request->request_data;
3153 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
3154 ZigbeeCustomZclSend_t *req = NULL;
3156 req = (ZigbeeCustomZclSend_t *)request->request_data;
3163 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
3164 ZigbeeCustomSendToLocal_t *req = NULL;
3166 req = (ZigbeeCustomSendToLocal_t *)request->request_data;
3178 static void __zblib_request_free_zcl_door_lock_request_data(ZigBeeRequest *request,
3184 ops_id = __zblib_request_get_ops_id(request_type);
3186 case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
3187 ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
3189 req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request->request_data;
3196 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
3197 ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
3199 req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request->request_data;
3206 case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
3207 ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
3209 req = (ZigbeeZclDoorLockSetDoorLock_t *)request->request_data;
3216 case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
3217 ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
3219 req = (ZigbeeZclDoorLockGetDoorLock_t *)request->request_data;
3231 static void __zblib_request_free_zcl_fan_control_request_data(ZigBeeRequest *request,
3237 ops_id = __zblib_request_get_ops_id(request_type);
3239 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
3240 ZigbeeZclFanControlSetFanMode_t *req = NULL;
3242 req = (ZigbeeZclFanControlSetFanMode_t *)request->request_data;
3249 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
3250 ZigbeeZclFanControlGetFanMode_t *req = NULL;
3252 req = (ZigbeeZclFanControlGetFanMode_t *)request->request_data;
3259 case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
3260 ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
3262 req = (ZigbeeZclFanControlSetFanModeSequence_t *)request->request_data;
3269 case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
3270 ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
3272 req = (ZigbeeZclFanControlGetFanModeSequence_t *)request->request_data;
3284 static void __zblib_request_free_zcl_level_control_request_data(ZigBeeRequest *request,
3290 ops_id = __zblib_request_get_ops_id(request_type);
3292 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
3293 ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
3295 req = (ZigbeeZclLevelControlMoveToLevel_t *)request->request_data;
3302 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
3303 ZigbeeZclLevelControlMove_t *req = NULL;
3305 req = (ZigbeeZclLevelControlMove_t *)request->request_data;
3312 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
3313 ZigbeeZclLevelControlStep_t *req = NULL;
3315 req = (ZigbeeZclLevelControlStep_t *)request->request_data;
3322 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
3323 ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
3325 req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request->request_data;
3332 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
3333 ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
3335 req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request->request_data;
3342 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
3343 ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
3345 req = (ZigbeeZclLevelControlStepWithOnOff_t *)request->request_data;
3352 case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
3353 ZigbeeZclLevelControlStop_t *req = NULL;
3355 req = (ZigbeeZclLevelControlStop_t *)request->request_data;
3367 static void __zblib_request_free_mfglib_control_request_data(ZigBeeRequest *request,
3373 ops_id = __zblib_request_get_ops_id(request_type);
3375 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
3376 ZigbeeMfglibControlStart_t *req = NULL;
3378 req = (ZigbeeMfglibControlStart_t *)request->request_data;
3385 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
3386 ZigbeeMfglibControlEnd_t *req = NULL;
3388 req = (ZigbeeMfglibControlEnd_t *)request->request_data;
3395 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
3396 ZigbeeMfglibControlStartTone_t *req = NULL;
3398 req = (ZigbeeMfglibControlStartTone_t *)request->request_data;
3405 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
3406 ZigbeeMfglibControlStopTone_t *req = NULL;
3408 req = (ZigbeeMfglibControlStopTone_t *)request->request_data;
3415 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
3416 ZigbeeMfglibControlStartStream_t *req = NULL;
3418 req = (ZigbeeMfglibControlStartStream_t *)request->request_data;
3425 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
3426 ZigbeeMfglibControlStopStream_t *req = NULL;
3428 req = (ZigbeeMfglibControlStopStream_t *)request->request_data;
3435 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
3436 ZigbeeMfglibControlSendPacket_t *req = NULL;
3438 req = (ZigbeeMfglibControlSendPacket_t *)request->request_data;
3445 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
3446 ZigbeeMfglibControlSetChannel_t *req = NULL;
3448 req = (ZigbeeMfglibControlSetChannel_t *)request->request_data;
3455 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
3456 ZigbeeMfglibControlGetChannel_t *req = NULL;
3458 req = (ZigbeeMfglibControlGetChannel_t *)request->request_data;
3465 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
3466 ZigbeeMfglibControlSetPower_t *req = NULL;
3468 req = (ZigbeeMfglibControlSetPower_t *)request->request_data;
3475 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
3476 ZigbeeMfglibControlGetPower_t *req = NULL;
3478 req = (ZigbeeMfglibControlGetPower_t *)request->request_data;
3485 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
3486 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
3488 req = (ZigbeeMfglibControlSetSynOffset_t *)request->request_data;
3495 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
3496 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
3498 req = (ZigbeeMfglibControlGetSynOffset_t *)request->request_data;
3505 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
3506 ZigbeeMfglibControlRxStart_t *req = NULL;
3508 req = (ZigbeeMfglibControlRxStart_t *)request->request_data;
3515 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
3516 ZigbeeMfglibControlRxStop_t *req = NULL;
3518 req = (ZigbeeMfglibControlRxStop_t *)request->request_data;
3525 case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
3526 ZigbeeMfglibControlRxVerify_t *req = NULL;
3528 req = (ZigbeeMfglibControlRxVerify_t *)request->request_data;
3535 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
3536 ZigbeeMfglibControlGetRssi_t *req = NULL;
3538 req = (ZigbeeMfglibControlGetRssi_t *)request->request_data;
3550 static void __zblib_request_free_zcl_on_off_request_data(ZigBeeRequest *request,
3556 ops_id = __zblib_request_get_ops_id(request_type);
3558 case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
3559 ZigbeeZclOnOffSetOnOff_t *req = NULL;
3561 req = (ZigbeeZclOnOffSetOnOff_t *)request->request_data;
3568 case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
3569 ZigbeeZclOnOffGetOnOffState_t *req = NULL;
3571 req = (ZigbeeZclOnOffGetOnOffState_t *)request->request_data;
3583 static void __zblib_request_free_service_request_data(ZigBeeRequest *request,
3589 ops_id = __zblib_request_get_ops_id(request_type);
3591 case ZBLIB_SERVICE_OPS_ENABLE: {
3595 case ZBLIB_SERVICE_OPS_DISABLE: {
3599 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
3603 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
3607 case ZBLIB_SERVICE_OPS_COEX_START: {
3608 ZigbeeServiceCoexStart_t *req = NULL;
3610 req = (ZigbeeServiceCoexStart_t *)request->request_data;
3617 case ZBLIB_SERVICE_OPS_COEX_STOP: {
3621 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
3625 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
3629 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
3630 ZigbeeServicePermitJoin_t *req = NULL;
3632 req = (ZigbeeServicePermitJoin_t *)request->request_data;
3639 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
3640 ZigbeeServiceLeaveRequest_t *req = NULL;
3642 req = (ZigbeeServiceLeaveRequest_t *)request->request_data;
3649 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
3653 case ZBLIB_SERVICE_OPS_GET_MAC: {
3657 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
3661 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
3662 ZigbeeServiceGetEndpointList_t *req = NULL;
3664 req = (ZigbeeServiceGetEndpointList_t *)request->request_data;
3671 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
3672 ZigbeeServiceGetClusterList_t *req = NULL;
3674 req = (ZigbeeServiceGetClusterList_t *)request->request_data;
3681 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
3682 ZigbeeServiceGetNodeType_t *req = NULL;
3684 req = (ZigbeeServiceGetNodeType_t *)request->request_data;
3696 static void __zblib_request_free_zcl_thermostat_request_data(ZigBeeRequest *request,
3702 ops_id = __zblib_request_get_ops_id(request_type);
3704 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
3705 ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
3707 req = (ZigbeeZclThermostatGetLocalTemp_t *)request->request_data;
3714 case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
3715 ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
3717 req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request->request_data;
3724 case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
3725 ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
3727 req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request->request_data;
3734 case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
3735 ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
3737 req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request->request_data;
3744 case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
3745 ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
3747 req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request->request_data;
3759 static void __zblib_request_free_zcl_basic_request_data(ZigBeeRequest *request,
3765 ops_id = __zblib_request_get_ops_id(request_type);
3767 case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
3768 ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
3770 req = (ZigbeeZclBasicResetFactoryDefault_t *)request->request_data;
3782 static void __zblib_request_free_zcl_global_control_request_data(ZigBeeRequest *request,
3788 ops_id = __zblib_request_get_ops_id(request_type);
3790 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
3791 ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
3793 req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request->request_data;
3795 g_free(req->attribute_id);
3801 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
3802 ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
3804 req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request->request_data;
3806 g_free(req->write_records);
3812 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
3813 ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
3815 req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request->request_data;
3817 g_free(req->write_records);
3823 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
3824 ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
3826 req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request->request_data;
3828 g_free(req->write_records);
3834 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
3835 ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
3837 req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request->request_data;
3839 g_free(req->write_records);
3845 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
3846 ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
3848 req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request->request_data;
3850 g_free(req->read_records);
3856 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
3857 ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
3859 req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request->request_data;
3861 g_free(req->read_records);
3867 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
3868 ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
3870 req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request->request_data;
3872 g_free(req->read_records);
3878 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
3879 ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
3881 req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request->request_data;
3888 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
3889 ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
3891 req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request->request_data;
3898 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
3899 ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
3901 req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request->request_data;
3908 case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
3909 ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
3911 req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request->request_data;
3923 static void __zblib_request_free_zcl_ias_zone_request_data(ZigBeeRequest *request,
3929 ops_id = __zblib_request_get_ops_id(request_type);
3931 case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
3932 ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
3934 req = (ZigbeeZclIasZoneEnrollResponse_t *)request->request_data;
3946 static void __zblib_request_free_zcl_identify_request_data(ZigBeeRequest *request,
3952 ops_id = __zblib_request_get_ops_id(request_type);
3954 case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
3955 ZigbeeZclIdentifyIdentify_t *req = NULL;
3957 req = (ZigbeeZclIdentifyIdentify_t *)request->request_data;
3964 case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
3965 ZigbeeZclIdentifyQuery_t *req = NULL;
3967 req = (ZigbeeZclIdentifyQuery_t *)request->request_data;
3979 static void __zblib_request_free_zcl_color_control_request_data(ZigBeeRequest *request,
3985 ops_id = __zblib_request_get_ops_id(request_type);
3987 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
3988 ZigbeeZclColorControlMoveToHue_t *req = NULL;
3990 req = (ZigbeeZclColorControlMoveToHue_t *)request->request_data;
3997 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
3998 ZigbeeZclColorControlMoveHue_t *req = NULL;
4000 req = (ZigbeeZclColorControlMoveHue_t *)request->request_data;
4007 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
4008 ZigbeeZclColorControlStepHue_t *req = NULL;
4010 req = (ZigbeeZclColorControlStepHue_t *)request->request_data;
4017 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
4018 ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
4020 req = (ZigbeeZclColorControlMoveToSaturation_t *)request->request_data;
4027 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
4028 ZigbeeZclColorControlMoveSaturation_t *req = NULL;
4030 req = (ZigbeeZclColorControlMoveSaturation_t *)request->request_data;
4037 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
4038 ZigbeeZclColorControlStepSaturation_t *req = NULL;
4040 req = (ZigbeeZclColorControlStepSaturation_t *)request->request_data;
4047 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
4048 ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
4050 req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request->request_data;
4057 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
4058 ZigbeeZclColorControlMoveToColor_t *req = NULL;
4060 req = (ZigbeeZclColorControlMoveToColor_t *)request->request_data;
4067 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
4068 ZigbeeZclColorControlMoveColor_t *req = NULL;
4070 req = (ZigbeeZclColorControlMoveColor_t *)request->request_data;
4077 case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
4078 ZigbeeZclColorControlStepColor_t *req = NULL;
4080 req = (ZigbeeZclColorControlStepColor_t *)request->request_data;
4087 case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
4088 ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
4090 req = (ZigbeeZclColorControlMoveColorTemperature_t *)request->request_data;
4102 static void __zblib_request_free_zcl_group_request_data(ZigBeeRequest *request,
4108 ops_id = __zblib_request_get_ops_id(request_type);
4110 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
4111 ZigbeeZclGroupAddGroup_t *req = NULL;
4113 req = (ZigbeeZclGroupAddGroup_t *)request->request_data;
4120 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
4121 ZigbeeZclGroupViewGroup_t *req = NULL;
4123 req = (ZigbeeZclGroupViewGroup_t *)request->request_data;
4130 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
4131 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
4133 req = (ZigbeeZclGroupGetGroupMembership_t *)request->request_data;
4135 g_free(req->group_list);
4141 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
4142 ZigbeeZclGroupRemoveGroup_t *req = NULL;
4144 req = (ZigbeeZclGroupRemoveGroup_t *)request->request_data;
4151 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
4152 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
4154 req = (ZigbeeZclGroupRemoveAllGroup_t *)request->request_data;
4161 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
4162 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
4164 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request->request_data;
4176 static void __zblib_request_free_zcl_poll_control_request_data(ZigBeeRequest *request,
4182 ops_id = __zblib_request_get_ops_id(request_type);
4184 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
4185 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
4187 req = (ZigbeeZclPollControlCheckInResponse_t *)request->request_data;
4194 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
4195 ZigbeeZclPollControlFastPollStop_t *req = NULL;
4197 req = (ZigbeeZclPollControlFastPollStop_t *)request->request_data;
4204 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
4205 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
4207 req = (ZigbeeZclPollControlSetLongPollInterval_t *)request->request_data;
4214 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
4215 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
4217 req = (ZigbeeZclPollControlSetShortPollInterval_t *)request->request_data;
4229 static void __zblib_request_free_zcl_scene_request_data(ZigBeeRequest *request,
4235 ops_id = __zblib_request_get_ops_id(request_type);
4237 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
4238 ZigbeeZclSceneAddScene_t *req = NULL;
4240 req = (ZigbeeZclSceneAddScene_t *)request->request_data;
4242 g_free(req->ext_field_set);
4248 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
4249 ZigbeeZclSceneViewScene_t *req = NULL;
4251 req = (ZigbeeZclSceneViewScene_t *)request->request_data;
4258 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
4259 ZigbeeZclSceneRemoveScene_t *req = NULL;
4261 req = (ZigbeeZclSceneRemoveScene_t *)request->request_data;
4268 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
4269 ZigbeeZclSceneStoreScene_t *req = NULL;
4271 req = (ZigbeeZclSceneStoreScene_t *)request->request_data;
4278 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
4279 ZigbeeZclSceneRecallScene_t *req = NULL;
4281 req = (ZigbeeZclSceneRecallScene_t *)request->request_data;
4288 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
4289 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
4291 req = (ZigbeeZclSceneRemoveAllScene_t *)request->request_data;
4298 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
4299 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
4301 req = (ZigbeeZclSceneGetSceneMembership_t *)request->request_data;
4313 static void __zblib_request_free_zdo_dev_control_request_data(ZigBeeRequest *request,
4319 ops_id = __zblib_request_get_ops_id(request_type);
4321 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
4322 ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
4324 req = (ZigbeeZdoDevControlNwkAddrReq_t *)request->request_data;
4331 case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
4332 ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
4334 req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request->request_data;
4337 g_free(req->out_cl);
4343 case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
4344 ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
4346 req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request->request_data;
4353 case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
4354 ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
4356 req = (ZigbeeZdoDevControlActiveEpReq_t *)request->request_data;
4363 case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
4364 ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
4366 req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request->request_data;
4373 case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
4374 ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
4376 req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request->request_data;
4383 case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
4384 ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
4386 req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request->request_data;
4393 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
4394 ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
4396 req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request->request_data;
4403 case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
4404 ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
4406 req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request->request_data;
4413 case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
4414 ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
4416 req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request->request_data;
4423 case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
4424 ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
4426 req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request->request_data;
4433 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
4434 ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
4436 req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request->request_data;
4443 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
4444 ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
4446 req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request->request_data;
4453 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
4454 ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
4456 req = (ZigbeeZdoDevControlMgmtBindReq_t *)request->request_data;
4463 case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
4464 ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
4466 req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request->request_data;
4473 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
4474 ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
4476 req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request->request_data;
4483 case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
4484 ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
4486 req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request->request_data;
4498 static void __zblib_request_free_zdo_bind_request_data(ZigBeeRequest *request,
4504 ops_id = __zblib_request_get_ops_id(request_type);
4506 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
4507 ZigbeeZdoBindBindReq_t *req = NULL;
4509 req = (ZigbeeZdoBindBindReq_t *)request->request_data;
4516 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
4517 ZigbeeZdoBindUnbindReq_t *req = NULL;
4519 req = (ZigbeeZdoBindUnbindReq_t *)request->request_data;
4531 static void __zblib_request_free_request_data(ZigBeeRequest *request)
4534 ZblibDriverType_e driver_type;
4536 zblib_check_null_ret("request", request);
4538 request_type = request->request_type;
4540 /* Fetch driver type */
4541 driver_type = __zblib_request_get_driver_type(request_type);
4542 switch (driver_type) {
4543 case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
4544 __zblib_request_free_zcl_alarm_request_data(request, request_type);
4548 case ZBLIB_DRIVER_TYPE_CUSTOM: {
4549 __zblib_request_free_custom_request_data(request, request_type);
4553 case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
4554 __zblib_request_free_zcl_door_lock_request_data(request, request_type);
4558 case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
4559 __zblib_request_free_zcl_fan_control_request_data(request, request_type);
4563 case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
4564 __zblib_request_free_zcl_level_control_request_data(request, request_type);
4568 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
4569 __zblib_request_free_mfglib_control_request_data(request, request_type);
4573 case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
4574 __zblib_request_free_zcl_on_off_request_data(request, request_type);
4578 case ZBLIB_DRIVER_TYPE_SERVICE: {
4579 __zblib_request_free_service_request_data(request, request_type);
4583 case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
4584 __zblib_request_free_zcl_thermostat_request_data(request, request_type);
4588 case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
4589 __zblib_request_free_zcl_basic_request_data(request, request_type);
4593 case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
4594 __zblib_request_free_zcl_global_control_request_data(request, request_type);
4598 case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
4599 __zblib_request_free_zcl_ias_zone_request_data(request, request_type);
4603 case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
4604 __zblib_request_free_zcl_identify_request_data(request, request_type);
4608 case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
4609 __zblib_request_free_zcl_color_control_request_data(request, request_type);
4613 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
4614 __zblib_request_free_zcl_group_request_data(request, request_type);
4618 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
4619 __zblib_request_free_zcl_poll_control_request_data(request, request_type);
4623 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
4624 __zblib_request_free_zcl_scene_request_data(request, request_type);
4628 case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
4629 __zblib_request_free_zdo_dev_control_request_data(request, request_type);
4633 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
4634 __zblib_request_free_zdo_bind_request_data(request, request_type);
4638 case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
4640 Z_LOGE("Unhandled driver type: [%d]", driver_type);
4646 gint zblib_request_new(ZigBeeServiceInterface *service_interface,
4647 guint request_type, gpointer request_data, guint request_data_len)
4649 ZigBeeService *service = NULL;
4650 ZigBeeRequest *request = NULL;
4651 GHashTable *request_table = NULL;
4653 zblib_check_null_ret_error("service_interface", service_interface, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4655 service = zblib_service_interface_ref_service(service_interface);
4656 zblib_check_null_ret_error("service", service, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4658 /* Allocate ZigBee request memory */
4659 request = g_malloc0(sizeof(ZigBeeRequest));
4661 /* Update request */
4662 request->service_interface = service_interface;
4663 request->ref_count = 1; /* Initialize reference count to '1' for new request */
4665 /* Update request data for specific request */
4666 request->request_data = __zblib_request_create_request_data(request_type,
4667 request_data, request_data_len);
4668 request->request_type = request_type;
4670 /* Generate request ID */
4671 request->request_id = zblib_service_generate_request_id(service);
4672 if (ZIGBEE_REQUEST_INVALID_REQUEST_ID == request->request_id) {
4673 Z_LOGE("zblib_service_genrate_request_id failed!");
4675 /* Free resources */
4676 __zblib_request_free_request_data(request);
4679 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4682 /* Fetch request table from service */
4683 request_table = zblib_service_ref_request_hash_table(service);
4684 if (NULL == request_table) {
4685 Z_LOGE("zblib_service_ref_request_hash_table failed!");
4687 /* Free resources */
4688 __zblib_request_free_request_data(request);
4691 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4694 /* Insert request to request table */
4695 g_hash_table_insert(request_table, (gpointer)(request->request_id), request);
4697 return request->request_id;
4700 void zblib_request_free(ZigBeeServiceInterface *service_interface,
4703 ZigBeeService *service = NULL;
4704 ZigBeeRequest *request = NULL;
4706 zblib_check_null_ret("service_interface", service_interface);
4709 service = zblib_service_interface_ref_service(service_interface);
4710 zblib_check_null_ret("service", service);
4712 /* Fetch request based on request_id */
4713 request = __zblib_request_ref_request_by_request_id(service, request_id);
4714 zblib_check_null_ret("request", request);
4716 /* Free resources */
4717 __zblib_request_free_request_data(request);
4721 gboolean zblib_request_set_response_cb(ZigBeeServiceInterface *service_interface,
4723 gpointer resp_cb, gpointer resp_cb_data)
4725 ZigBeeService *service = NULL;
4726 ZigBeeRequest *request = NULL;
4728 zblib_check_null_ret_error("service_interface", service_interface, FALSE);
4731 service = zblib_service_interface_ref_service(service_interface);
4732 zblib_check_null_ret_error("service", service, FALSE);
4734 /* Fetch request based on request_id */
4735 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4736 if (NULL == request) {
4737 Z_LOGE("No request available for request_id: [%d]", request_id);
4741 /* Update response callback and response callback data */
4742 request->resp_cb = resp_cb;
4743 request->resp_cb_data = resp_cb_data;
4748 gpointer zblib_request_ref_response_cb(ZigBeeServiceInterface *service_interface,
4749 guint request_id, gpointer *resp_cb_data)
4751 ZigBeeService *service = NULL;
4752 ZigBeeRequest *request = NULL;
4754 zblib_check_null_ret_error("service_interface", service_interface, NULL);
4757 service = zblib_service_interface_ref_service(service_interface);
4758 zblib_check_null_ret_error("service", service, NULL);
4760 /* Fetch request based on request_id */
4761 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4762 if (NULL == request) {
4763 Z_LOGE("No request available for request_id: [%d]", request_id);
4767 /* Response callback data */
4768 *resp_cb_data = request->resp_cb_data;
4770 /* Return response callback */
4771 return request->resp_cb;
4774 ZigBeeRequest *zblib_request_ref(ZigBeeRequest *request)
4776 zblib_check_null_ret_error("request", request, NULL);
4778 request->ref_count++;
4783 void zblib_request_unref(ZigBeeRequest *request)
4785 zblib_check_null_ret("request", request);
4787 request->ref_count--;
4788 if (0 == request->ref_count) {
4789 Z_LOGD("Reference count is ZERO!");
4791 /* Free 'request' */
4792 __zblib_request_free_request_data(request);
4797 guint zblib_request_ref_request_type(ZigBeeRequest *request)
4799 zblib_check_null_ret_error("request", request, 0);
4801 return request->request_type;
4804 ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeService *service,
4807 ZigBeeRequest *request = NULL;
4809 zblib_check_null_ret_error("service", service, NULL);
4811 /* Fetch request based on request_id */
4812 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4813 if (NULL == request) {
4814 Z_LOGE("No request available for request_id: [%d]", request_id);
4818 return request->service_interface;
4821 gpointer zblib_request_ref_request_data(ZigBeeRequest *request)
4823 zblib_check_null_ret_error("request", request, NULL);
4825 return request->request_data;
4828 gpointer zblib_request_ref_request_data_by_id(ZigBeeService *service,
4831 ZigBeeRequest *request = NULL;
4833 /* Fetch request based on request_id */
4834 request = __zblib_request_ref_request_by_by_request_id(service, request_id);
4835 if (NULL == request) {
4836 Z_LOGE("No request available for request_id: [%d]", request_id);
4840 return request->request_data;
4843 guint zblib_request_generate_request_type(ZblibDriverType_e driver_type,
4849 * request_type consists of driver_type and ops_id
4850 * request_type = driver_type | 0x00 | 0x00 | ops_id
4852 request_type = (driver_type << 24) | (ops_id);
4854 return request_type;
4857 gint zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
4860 return __zblib_request_ref_request_type_by_request_id(service, request_id);
4863 ZblibDriverType_e zblib_request_get_driver_type(guint request_type)
4865 return __zblib_request_get_driver_type(request_type);
4868 guint zblib_request_get_ops_id(guint request_type)
4870 return __zblib_request_get_ops_id(request_type);