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_alarm.h>
26 #include <zblib_driver_custom.h>
27 #include <zblib_driver_door_lock.h>
28 #include <zblib_driver_fan_control.h>
29 #include <zblib_driver_level_control.h>
30 #include <zblib_driver_mfglib_control.h>
31 #include <zblib_driver_on_off.h>
32 #include <zblib_driver_service.h>
33 #include <zblib_driver_thermostat.h>
34 #include <zblib_driver_zclbasic_control.h>
35 #include <zblib_driver_zclglobal_control.h>
36 #include <zblib_driver_zclias_control.h>
37 #include <zblib_driver_zclidentify_control.h>
38 #include <zblib_driver_zcl_color.h>
39 #include <zblib_driver_zcl_group.h>
40 #include <zblib_driver_zcl_poll_control.h>
41 #include <zblib_driver_zcl_scene.h>
42 #include <zblib_driver_zdodev_control.h>
43 #include <zblib_driver_zdo_bind.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 */
53 ZigBeeServiceInterface *service_interface; /* Service interface */
56 static ZblibDriverType_e __zblib_request_get_driver_type(guint request_type)
58 ZblibDriverType_e driver_type;
60 driver_type = ((request_type && 0xFF000000) >> 24);
65 static ZblibDriverType_e __zblib_request_get_ops_id(guint request_type)
69 ops_id = (request_type && 0x000000FF);
74 static gint __zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
77 ZigBeeRequest *request = NULL;
78 GHashTable *request_table = NULL;
80 /* Fetch request table from service */
81 request_table = zblib_service_ref_request_hash_table(service);
82 if (NULL == request_table) {
83 Z_LOGE("zblib_service_ref_request_hash_table failed!");
87 /* Look-up requets_id in request hash table */
88 request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
89 if (NULL == request_table) {
90 Z_LOGE("No request availabel for request_id: [%d]", request_id);
94 return (gint)(request->request_type);
97 static ZigBeeRequest *__zblib_request_ref_request_by_request_id(ZigBeeService *service,
100 ZigBeeRequest *request = NULL;
101 GHashTable *request_table = NULL;
103 /* Fetch request table from service */
104 request_table = zblib_service_ref_request_hash_table(service);
105 if (NULL == request_table) {
106 Z_LOGE("zblib_service_ref_request_hash_table failed!");
110 /* Look-up requets_id in request hash table */
111 request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
112 if (NULL == request_table) {
113 Z_LOGE("No request availabel for request_id: [%d]", request_id);
120 static gpointer __zblib_request_create_alarm_request_data(guint request_type,
121 gpointer request_data, guint request_data_len)
123 gpointer alarm_request_data = NULL;
126 NOT_USED(request_data_len);
129 ops_id = __zblib_request_get_ops_id(request_type);
131 case ZBLIB_ALARM_OPS_GET_ALARM_COUNT: {
132 ZigbeeAlarmGetAlarmCount_t *in_req;
133 ZigbeeAlarmGetAlarmCount_t *req = NULL;
135 in_req = (ZigbeeAlarmGetAlarmCount_t *)request_data;
136 if (NULL != in_req) {
137 /* Allocate memory */
138 req = (ZigbeeAlarmGetAlarmCount_t *)
139 g_malloc0(sizeof(ZigbeeAlarmGetAlarmCount_t));
142 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
143 req->endpoint = in_req->endpoint;
146 alarm_request_data = (gpointer)req;
150 case ZBLIB_ALARM_OPS_RESET_ALARM: {
151 ZigbeeAlarmResetAlarm_t *in_req;
152 ZigbeeAlarmResetAlarm_t *req = NULL;
154 in_req = (ZigbeeAlarmResetAlarm_t *)request_data;
155 if (NULL != in_req) {
156 /* Allocate memory */
157 req = (ZigbeeAlarmResetAlarm_t *)
158 g_malloc0(sizeof(ZigbeeAlarmResetAlarm_t));
161 req->node_id = in_req->node_id;
162 req->endpoint = in_req->endpoint;
163 req->alarm_code = in_req->alarm_code;
164 req->cluster_id = in_req->cluster_id;
167 alarm_request_data = (gpointer)req;
171 case ZBLIB_ALARM_OPS_RESET_ALL_ALARM: {
172 ZigbeeAlarmResetAllAlarm_t *in_req;
173 ZigbeeAlarmResetAllAlarm_t *req = NULL;
175 in_req = (ZigbeeAlarmResetAllAlarm_t *)request_data;
177 /* Allocate memory */
178 req = (ZigbeeAlarmResetAllAlarm_t *)
179 g_malloc0(sizeof(ZigbeeAlarmResetAllAlarm_t));
182 req->node_id = in_req->node_id;
183 req->endpoint = in_req->endpoint;
186 alarm_request_data = (gpointer)req;
190 case ZBLIB_ALARM_OPS_ALARM: {
191 ZigbeeAlarmAlarm_t *in_req;
192 ZigbeeAlarmAlarm_t *req = NULL;
194 in_req = (ZigbeeAlarmAlarm_t *)request_data;
196 /* Allocate memory */
197 req = (ZigbeeAlarmAlarm_t *)
198 g_malloc0(sizeof(ZigbeeAlarmAlarm_t));
201 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
202 req->node_id = in_req->node_id;
203 req->endpoint = in_req->endpoint;
204 req->alarm_code = in_req->alarm_code;
205 req->cluster_id = in_req->cluster_id;
208 alarm_request_data = (gpointer)req;
212 case ZBLIB_ALARM_OPS_RESET_ALARM_LOG: {
213 ZigbeeAlarmResetAlarmLogs_t *in_req;
214 ZigbeeAlarmResetAlarmLogs_t *req = NULL;
216 in_req = (ZigbeeAlarmResetAlarmLogs_t *)request_data;
218 /* Allocate memory */
219 req = (ZigbeeAlarmResetAlarmLogs_t *)
220 g_malloc0(sizeof(ZigbeeAlarmResetAlarmLogs_t));
223 req->node_id = in_req->node_id;
224 req->endpoint = in_req->endpoint;
227 alarm_request_data = (gpointer)req;
231 case ZBLIB_ALARM_OPS_GET_ALARM: {
232 alarm_request_data = NULL;
240 return alarm_request_data;
243 static gpointer __zblib_request_create_custom_request_data(guint request_type,
244 gpointer request_data, guint request_data_len)
246 gpointer custom_request_data = NULL;
249 NOT_USED(request_data_len);
252 ops_id = __zblib_request_get_ops_id(request_type);
254 case ZBLIB_CUSTOM_OPS_APS_SEND: {
255 ZigbeeCustomApsSend_t *in_req;
256 ZigbeeCustomApsSend_t *req = NULL;
258 in_req = (ZigbeeCustomApsSend_t *)request_data;
260 /* Allocate memory */
261 req = (ZigbeeCustomApsSend_t *)
262 g_malloc0(sizeof(ZigbeeCustomApsSend_t));
265 req->node_id = in_req->node_id;
266 req->aps_frame_ctl = in_req->aps_frame_ctl;
267 req->src_ep = in_req->src_ep;
268 req->dest_ep = in_req->dest_ep;
269 req->cluster_id = in_req->cluster_id;
270 req->profile_id = in_req->profile_id;
271 req->zcl_frame_ctl = in_req->zcl_frame_ctl;
272 req->mfg_code = in_req->mfg_code;
274 in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
277 custom_request_data = (gpointer)req;
281 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
282 ZigbeeCustomZclSend_t *in_req;
283 ZigbeeCustomZclSend_t *req = NULL;
285 in_req = (ZigbeeCustomZclSend_t *)request_data;
287 /* Allocate memory */
288 req = (ZigbeeCustomZclSend_t *)
289 g_malloc0(sizeof(ZigbeeCustomZclSend_t));
292 req->node_id = in_req->node_id;
293 req->src_ep = in_req->src_ep;
294 req->dest_ep = in_req->dest_ep;
295 req->cluster_id = in_req->cluster_id;
296 req->zcl_frame_ctl = in_req->zcl_frame_ctl;
297 req->cmd_id = in_req->cmd_id;
299 in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
302 custom_request_data = (gpointer)req;
306 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
307 ZigbeeCustomSendToLocal_t *in_req;
308 ZigbeeCustomSendToLocal_t *req = NULL;
310 in_req = (ZigbeeCustomSendToLocal_t *)request_data;
312 /* Allocate memory */
313 req = (ZigbeeCustomSendToLocal_t *)
314 g_malloc0(sizeof(ZigbeeCustomSendToLocal_t));
318 in_req->data, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
321 custom_request_data = (gpointer)req;
329 return custom_request_data;
332 static gpointer __zblib_request_create_door_lock_request_data(guint request_type,
333 gpointer request_data, guint request_data_len)
335 gpointer door_lock_request_data = NULL;
338 NOT_USED(request_data_len);
341 ops_id = __zblib_request_get_ops_id(request_type);
343 case ZBLIB_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
344 ZigbeeDoorLockSubscriberLockEvent_t *in_req;
345 ZigbeeDoorLockSubscriberLockEvent_t *req = NULL;
347 in_req = (ZigbeeDoorLockSubscriberLockEvent_t *)request_data;
349 /* Allocate memory */
350 req = (ZigbeeDoorLockSubscriberLockEvent_t *)
351 g_malloc0(sizeof(ZigbeeDoorLockSubscriberLockEvent_t));
355 in_req->eui64, ZIGBEE_EUI64_SIZE);
356 req->endpoint = in_req->endpoint;
359 door_lock_request_data = (gpointer)req;
363 case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
364 ZigbeeDoorLockSetDoorLockPin_t *in_req;
365 ZigbeeDoorLockSetDoorLockPin_t *req = NULL;
367 in_req = (ZigbeeDoorLockSetDoorLockPin_t *)request_data;
369 /* Allocate memory */
370 req = (ZigbeeDoorLockSetDoorLockPin_t *)
371 g_malloc0(sizeof(ZigbeeDoorLockSetDoorLockPin_t));
374 req->uid = in_req->uid;
375 req->ustatus = in_req->ustatus;
376 req->utype = in_req->utype;
378 in_req->eui64, ZIGBEE_EUI64_SIZE);
379 req->endpoint = in_req->endpoint;
381 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
384 door_lock_request_data = (gpointer)req;
388 case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
389 ZigbeeDoorLockSetDoorLock_t *in_req;
390 ZigbeeDoorLockSetDoorLock_t *req = NULL;
392 in_req = (ZigbeeDoorLockSetDoorLock_t *)request_data;
394 /* Allocate memory */
395 req = (ZigbeeDoorLockSetDoorLock_t *)
396 g_malloc0(sizeof(ZigbeeDoorLockSetDoorLock_t));
400 in_req->eui64, ZIGBEE_EUI64_SIZE);
401 req->endpoint = in_req->endpoint;
403 in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
404 req->lock_unlock_type = in_req->lock_unlock_type;
407 door_lock_request_data = (gpointer)req;
411 case ZBLIB_DOOR_LOCK_OPS_GET_LOCK_STATE: {
412 ZigbeeDoorLockGetDoorLock_t *in_req;
413 ZigbeeDoorLockGetDoorLock_t *req = NULL;
415 in_req = (ZigbeeDoorLockGetDoorLock_t *)request_data;
417 /* Allocate memory */
418 req = (ZigbeeDoorLockGetDoorLock_t *)
419 g_malloc0(sizeof(ZigbeeDoorLockGetDoorLock_t));
423 in_req->eui64, ZIGBEE_EUI64_SIZE);
424 req->endpoint = in_req->endpoint;
427 door_lock_request_data = (gpointer)req;
435 return door_lock_request_data;
438 static gpointer __zblib_request_create_fan_control_request_data(guint request_type,
439 gpointer request_data, guint request_data_len)
441 gpointer fan_control_request_data = NULL;
444 NOT_USED(request_data_len);
447 ops_id = __zblib_request_get_ops_id(request_type);
449 case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE: {
450 ZigbeeFanControlSetFanMode_t *in_req;
451 ZigbeeFanControlSetFanMode_t *req = NULL;
453 in_req = (ZigbeeFanControlSetFanMode_t *)request_data;
455 /* Allocate memory */
456 req = (ZigbeeFanControlSetFanMode_t *)
457 g_malloc0(sizeof(ZigbeeFanControlSetFanMode_t));
461 in_req->eui64, ZIGBEE_EUI64_SIZE);
462 req->endpoint = in_req->endpoint;
465 fan_control_request_data = (gpointer)req;
469 case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE: {
470 ZigbeeFanControlGetFanMode_t *in_req;
471 ZigbeeFanControlGetFanMode_t *req = NULL;
473 in_req = (ZigbeeFanControlGetFanMode_t *)request_data;
475 /* Allocate memory */
476 req = (ZigbeeFanControlGetFanMode_t *)
477 g_malloc0(sizeof(ZigbeeFanControlGetFanMode_t));
481 in_req->eui64, ZIGBEE_EUI64_SIZE);
482 req->endpoint = in_req->endpoint;
485 fan_control_request_data = (gpointer)req;
489 case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
490 ZigbeeFanControlSetFanModeSequence_t *in_req;
491 ZigbeeFanControlSetFanModeSequence_t *req = NULL;
493 in_req = (ZigbeeFanControlSetFanModeSequence_t *)request_data;
495 /* Allocate memory */
496 req = (ZigbeeFanControlSetFanModeSequence_t *)
497 g_malloc0(sizeof(ZigbeeFanControlSetFanModeSequence_t));
501 in_req->eui64, ZIGBEE_EUI64_SIZE);
502 req->endpoint = in_req->endpoint;
505 fan_control_request_data = (gpointer)req;
509 case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
510 ZigbeeFanControlGetFanModeSequence_t *in_req;
511 ZigbeeFanControlGetFanModeSequence_t *req = NULL;
513 in_req = (ZigbeeFanControlGetFanModeSequence_t *)request_data;
515 /* Allocate memory */
516 req = (ZigbeeFanControlGetFanModeSequence_t *)
517 g_malloc0(sizeof(ZigbeeFanControlGetFanModeSequence_t));
521 in_req->eui64, ZIGBEE_EUI64_SIZE);
522 req->endpoint = in_req->endpoint;
525 fan_control_request_data = (gpointer)req;
533 return fan_control_request_data;
536 static gpointer __zblib_request_create_level_control_request_data(guint request_type,
537 gpointer request_data, guint request_data_len)
539 gpointer level_control_request_data = NULL;
542 NOT_USED(request_data_len);
545 ops_id = __zblib_request_get_ops_id(request_type);
547 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
548 ZigbeeLevelControlMoveToLevel_t *in_req;
549 ZigbeeLevelControlMoveToLevel_t *req = NULL;
551 in_req = (ZigbeeLevelControlMoveToLevel_t *)request_data;
553 /* Allocate memory */
554 req = (ZigbeeLevelControlMoveToLevel_t *)
555 g_malloc0(sizeof(ZigbeeLevelControlMoveToLevel_t));
558 req->node_id = in_req->node_id;
559 req->endpoint = in_req->endpoint;
560 req->level = in_req->level;
561 req->transition = in_req->transition;
564 level_control_request_data = (gpointer)req;
568 case ZBLIB_LEVEL_CONTROL_OPS_MOVE: {
569 ZigbeeLevelControlMove_t *in_req;
570 ZigbeeLevelControlMove_t *req = NULL;
572 in_req = (ZigbeeLevelControlMove_t *)request_data;
574 /* Allocate memory */
575 req = (ZigbeeLevelControlMove_t *)
576 g_malloc0(sizeof(ZigbeeLevelControlMove_t));
579 req->node_id = in_req->node_id;
580 req->endpoint = in_req->endpoint;
581 req->move_mode = in_req->move_mode;
582 req->rate = in_req->rate;
585 level_control_request_data = (gpointer)req;
589 case ZBLIB_LEVEL_CONTROL_OPS_STEP: {
590 ZigbeeLevelControlStep_t *in_req;
591 ZigbeeLevelControlStep_t *req = NULL;
593 in_req = (ZigbeeLevelControlStep_t *)request_data;
595 /* Allocate memory */
596 req = (ZigbeeLevelControlStep_t *)
597 g_malloc0(sizeof(ZigbeeLevelControlStep_t));
600 req->node_id = in_req->node_id;
601 req->endpoint = in_req->endpoint;
602 req->step_mode = in_req->step_mode;
603 req->move_mode = in_req->move_mode;
604 req->transition_time = in_req->transition_time;
607 level_control_request_data = (gpointer)req;
611 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
612 ZigbeeLevelControlMoveToLevelWithOnOff_t *in_req;
613 ZigbeeLevelControlMoveToLevelWithOnOff_t *req = NULL;
615 in_req = (ZigbeeLevelControlMoveToLevelWithOnOff_t *)request_data;
617 /* Allocate memory */
618 req = (ZigbeeLevelControlMoveToLevelWithOnOff_t *)
619 g_malloc0(sizeof(ZigbeeLevelControlMoveToLevelWithOnOff_t));
622 req->node_id = in_req->node_id;
623 req->endpoint = in_req->endpoint;
624 req->level = in_req->level;
625 req->transition = in_req->transition;
628 level_control_request_data = (gpointer)req;
632 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
633 ZigbeeLevelControlMoveOnOff_t *in_req;
634 ZigbeeLevelControlMoveOnOff_t *req = NULL;
636 in_req = (ZigbeeLevelControlMoveOnOff_t *)request_data;
638 /* Allocate memory */
639 req = (ZigbeeLevelControlMoveOnOff_t *)
640 g_malloc0(sizeof(ZigbeeLevelControlMoveOnOff_t));
643 req->node_id = in_req->node_id;
644 req->endpoint = in_req->endpoint;
645 req->move_mode = in_req->move_mode;
646 req->rate = in_req->rate;
649 level_control_request_data = (gpointer)req;
653 case ZBLIB_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
654 ZigbeeLevelControlStepWithOnOff_t *in_req;
655 ZigbeeLevelControlStepWithOnOff_t *req = NULL;
657 in_req = (ZigbeeLevelControlStepWithOnOff_t *)request_data;
659 /* Allocate memory */
660 req = (ZigbeeLevelControlStepWithOnOff_t *)
661 g_malloc0(sizeof(ZigbeeLevelControlStepWithOnOff_t));
664 req->node_id = in_req->node_id;
665 req->endpoint = in_req->endpoint;
666 req->step_mode = in_req->step_mode;
667 req->move_mode = in_req->move_mode;
668 req->transition_time = in_req->transition_time;
671 level_control_request_data = (gpointer)req;
675 case ZBLIB_LEVEL_CONTROL_OPS_STOP: {
676 ZigbeeLevelControlStop_t *in_req;
677 ZigbeeLevelControlStop_t *req = NULL;
679 in_req = (ZigbeeLevelControlStop_t *)request_data;
681 /* Allocate memory */
682 req = (ZigbeeLevelControlStop_t *)
683 g_malloc0(sizeof(ZigbeeLevelControlStop_t));
686 req->node_id = in_req->node_id;
687 req->endpoint = in_req->endpoint;
690 level_control_request_data = (gpointer)req;
698 return level_control_request_data;
701 static gpointer __zblib_request_create_mfglib_control_request_data(guint request_type,
702 gpointer request_data, guint request_data_len)
704 gpointer mfglib_control_request_data = NULL;
707 NOT_USED(request_data_len);
710 ops_id = __zblib_request_get_ops_id(request_type);
712 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
713 ZigbeeMfglibControlStart_t *in_req;
714 ZigbeeMfglibControlStart_t *req = NULL;
716 in_req = (ZigbeeMfglibControlStart_t *)request_data;
717 if (NULL != in_req) {
718 /* Allocate memory */
719 req = (ZigbeeMfglibControlStart_t *)
720 g_malloc0(sizeof(ZigbeeMfglibControlStart_t));
723 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
724 req->mfglib_start = in_req->mfglib_start;
727 mfglib_control_request_data = (gpointer)req;
731 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
732 ZigbeeMfglibControlEnd_t *in_req;
733 ZigbeeMfglibControlEnd_t *req = NULL;
735 in_req = (ZigbeeMfglibControlEnd_t *)request_data;
736 if (NULL != in_req) {
737 /* Allocate memory */
738 req = (ZigbeeMfglibControlEnd_t *)
739 g_malloc0(sizeof(ZigbeeMfglibControlEnd_t));
742 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
745 mfglib_control_request_data = (gpointer)req;
749 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
750 ZigbeeMfglibControlStartTone_t *in_req;
751 ZigbeeMfglibControlStartTone_t *req = NULL;
753 in_req = (ZigbeeMfglibControlStartTone_t *)request_data;
754 if (NULL != in_req) {
755 /* Allocate memory */
756 req = (ZigbeeMfglibControlStartTone_t *)
757 g_malloc0(sizeof(ZigbeeMfglibControlStartTone_t));
760 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
763 mfglib_control_request_data = (gpointer)req;
767 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
768 ZigbeeMfglibControlStopTone_t *in_req;
769 ZigbeeMfglibControlStopTone_t *req = NULL;
771 in_req = (ZigbeeMfglibControlStopTone_t *)request_data;
772 if (NULL != in_req) {
773 /* Allocate memory */
774 req = (ZigbeeMfglibControlStopTone_t *)
775 g_malloc0(sizeof(ZigbeeMfglibControlStopTone_t));
778 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
781 mfglib_control_request_data = (gpointer)req;
785 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
786 ZigbeeMfglibControlStartStream_t *in_req;
787 ZigbeeMfglibControlStartStream_t *req = NULL;
789 in_req = (ZigbeeMfglibControlStartStream_t *)request_data;
790 if (NULL != in_req) {
791 /* Allocate memory */
792 req = (ZigbeeMfglibControlStartStream_t *)
793 g_malloc0(sizeof(ZigbeeMfglibControlStartStream_t));
796 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
799 mfglib_control_request_data = (gpointer)req;
803 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
804 ZigbeeMfglibControlStopStream_t *in_req;
805 ZigbeeMfglibControlStopStream_t *req = NULL;
807 in_req = (ZigbeeMfglibControlStopStream_t *)request_data;
808 if (NULL != in_req) {
809 /* Allocate memory */
810 req = (ZigbeeMfglibControlStopStream_t *)
811 g_malloc0(sizeof(ZigbeeMfglibControlStopStream_t));
814 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
817 mfglib_control_request_data = (gpointer)req;
821 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
822 ZigbeeMfglibControlSendPacket_t *in_req;
823 ZigbeeMfglibControlSendPacket_t *req = NULL;
825 in_req = (ZigbeeMfglibControlSendPacket_t *)request_data;
826 if (NULL != in_req) {
827 /* Allocate memory */
828 req = (ZigbeeMfglibControlSendPacket_t *)
829 g_malloc0(sizeof(ZigbeeMfglibControlSendPacket_t));
832 memcpy(req->packet_content,
833 in_req->packet_content,
834 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
835 req->packet_length = in_req->packet_length;
838 mfglib_control_request_data = (gpointer)req;
842 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
843 ZigbeeMfglibControlSetChannel_t *in_req;
844 ZigbeeMfglibControlSetChannel_t *req = NULL;
846 in_req = (ZigbeeMfglibControlSetChannel_t *)request_data;
847 if (NULL != in_req) {
848 /* Allocate memory */
849 req = (ZigbeeMfglibControlSetChannel_t *)
850 g_malloc0(sizeof(ZigbeeMfglibControlSetChannel_t));
853 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
854 req->channel = in_req->channel;
857 mfglib_control_request_data = (gpointer)req;
861 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
862 ZigbeeMfglibControlGetChannel_t *in_req;
863 ZigbeeMfglibControlGetChannel_t *req = NULL;
865 in_req = (ZigbeeMfglibControlGetChannel_t *)request_data;
866 if (NULL != in_req) {
867 /* Allocate memory */
868 req = (ZigbeeMfglibControlGetChannel_t *)
869 g_malloc0(sizeof(ZigbeeMfglibControlGetChannel_t));
872 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
875 mfglib_control_request_data = (gpointer)req;
879 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
880 ZigbeeMfglibControlSetPower_t *in_req;
881 ZigbeeMfglibControlSetPower_t *req = NULL;
883 in_req = (ZigbeeMfglibControlSetPower_t *)request_data;
884 if (NULL != in_req) {
885 /* Allocate memory */
886 req = (ZigbeeMfglibControlSetPower_t *)
887 g_malloc0(sizeof(ZigbeeMfglibControlSetPower_t));
890 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
891 req->tx_power_mode = in_req->tx_power_mode;
892 req->power = in_req->power;
895 mfglib_control_request_data = (gpointer)req;
899 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
900 ZigbeeMfglibControlGetPower_t *in_req;
901 ZigbeeMfglibControlGetPower_t *req = NULL;
903 in_req = (ZigbeeMfglibControlGetPower_t *)request_data;
904 if (NULL != in_req) {
905 /* Allocate memory */
906 req = (ZigbeeMfglibControlGetPower_t *)
907 g_malloc0(sizeof(ZigbeeMfglibControlGetPower_t));
910 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
913 mfglib_control_request_data = (gpointer)req;
917 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
918 ZigbeeMfglibControlSetSynOffset_t *in_req;
919 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
921 in_req = (ZigbeeMfglibControlSetSynOffset_t *)request_data;
922 if (NULL != in_req) {
923 /* Allocate memory */
924 req = (ZigbeeMfglibControlSetSynOffset_t *)
925 g_malloc0(sizeof(ZigbeeMfglibControlSetSynOffset_t));
928 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
929 req->channel = in_req->channel;
932 mfglib_control_request_data = (gpointer)req;
936 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
937 ZigbeeMfglibControlGetSynOffset_t *in_req;
938 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
940 in_req = (ZigbeeMfglibControlGetSynOffset_t *)request_data;
941 if (NULL != in_req) {
942 /* Allocate memory */
943 req = (ZigbeeMfglibControlGetSynOffset_t *)
944 g_malloc0(sizeof(ZigbeeMfglibControlGetSynOffset_t));
949 ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
950 req->packet_length = in_req->packet_length;
951 req->link_quality = in_req->link_quality;
952 req->rssi = in_req->rssi;
955 mfglib_control_request_data = (gpointer)req;
959 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
960 ZigbeeMfglibControlRxStart_t *in_req;
961 ZigbeeMfglibControlRxStart_t *req = NULL;
963 in_req = (ZigbeeMfglibControlRxStart_t *)request_data;
964 if (NULL != in_req) {
965 /* Allocate memory */
966 req = (ZigbeeMfglibControlRxStart_t *)
967 g_malloc0(sizeof(ZigbeeMfglibControlRxStart_t));
970 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
973 mfglib_control_request_data = (gpointer)req;
977 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
978 ZigbeeMfglibControlRxStop_t *in_req;
979 ZigbeeMfglibControlRxStop_t *req = NULL;
981 in_req = (ZigbeeMfglibControlRxStop_t *)request_data;
982 if (NULL != in_req) {
983 /* Allocate memory */
984 req = (ZigbeeMfglibControlRxStop_t *)
985 g_malloc0(sizeof(ZigbeeMfglibControlRxStop_t));
988 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
991 mfglib_control_request_data = (gpointer)req;
995 case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
996 ZigbeeMfglibControlRxVerify_t *in_req;
997 ZigbeeMfglibControlRxVerify_t *req = NULL;
999 in_req = (ZigbeeMfglibControlRxVerify_t *)request_data;
1000 if (NULL != in_req) {
1001 /* Allocate memory */
1002 req = (ZigbeeMfglibControlRxVerify_t *)
1003 g_malloc0(sizeof(ZigbeeMfglibControlRxVerify_t));
1006 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1009 mfglib_control_request_data = (gpointer)req;
1013 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
1014 ZigbeeMfglibControlGetRssi_t *in_req;
1015 ZigbeeMfglibControlGetRssi_t *req = NULL;
1017 in_req = (ZigbeeMfglibControlGetRssi_t *)request_data;
1018 if (NULL != in_req) {
1019 /* Allocate memory */
1020 req = (ZigbeeMfglibControlGetRssi_t *)
1021 g_malloc0(sizeof(ZigbeeMfglibControlGetRssi_t));
1024 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1027 mfglib_control_request_data = (gpointer)req;
1035 return mfglib_control_request_data;
1038 static gpointer __zblib_request_create_on_off_request_data(guint request_type,
1039 gpointer request_data, guint request_data_len)
1041 gpointer on_off_request_data = NULL;
1044 NOT_USED(request_data_len);
1047 ops_id = __zblib_request_get_ops_id(request_type);
1049 case ZBLIB_ON_OFF_OPS_SET_ON_OFF: {
1050 ZigbeeOnOffSetOnOff_t *in_req;
1051 ZigbeeOnOffSetOnOff_t *req = NULL;
1053 in_req = (ZigbeeOnOffSetOnOff_t *)request_data;
1054 if (NULL != in_req) {
1055 /* Allocate memory */
1056 req = (ZigbeeOnOffSetOnOff_t *)
1057 g_malloc0(sizeof(ZigbeeOnOffSetOnOff_t));
1060 req->node_id = in_req->node_id;
1061 req->endpoint = in_req->endpoint;
1062 req->on_off_type = in_req->on_off_type;
1065 on_off_request_data = (gpointer)req;
1069 case ZBLIB_ON_OFF_OPS_GET_ON_OFF_STATE: {
1070 ZigbeeOnOffGetOnOffState_t *in_req;
1071 ZigbeeOnOffGetOnOffState_t *req = NULL;
1073 in_req = (ZigbeeOnOffGetOnOffState_t *)request_data;
1074 if (NULL != in_req) {
1075 /* Allocate memory */
1076 req = (ZigbeeOnOffGetOnOffState_t *)
1077 g_malloc0(sizeof(ZigbeeOnOffGetOnOffState_t));
1080 req->node_id = in_req->node_id;
1081 req->endpoint = in_req->endpoint;
1084 on_off_request_data = (gpointer)req;
1092 return on_off_request_data;
1095 static gpointer __zblib_request_create_service_request_data(guint request_type,
1096 gpointer request_data, guint request_data_len)
1098 gpointer service_request_data = NULL;
1101 NOT_USED(request_data_len);
1104 ops_id = __zblib_request_get_ops_id(request_type);
1106 case ZBLIB_SERVICE_OPS_ENABLE: {
1107 service_request_data = NULL;
1111 case ZBLIB_SERVICE_OPS_DISABLE: {
1112 service_request_data = NULL;
1116 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
1117 service_request_data = NULL;
1121 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
1122 service_request_data = NULL;
1126 case ZBLIB_SERVICE_OPS_COEX_START: {
1127 ZigbeeServiceCoexStart_t *in_req;
1128 ZigbeeServiceCoexStart_t *req = NULL;
1130 in_req = (ZigbeeServiceCoexStart_t *)request_data;
1131 if (NULL != in_req) {
1132 /* Allocate memory */
1133 req = (ZigbeeServiceCoexStart_t *)
1134 g_malloc0(sizeof(ZigbeeServiceCoexStart_t));
1137 req->channel = in_req->channel;
1140 service_request_data = (gpointer)req;
1144 case ZBLIB_SERVICE_OPS_COEX_STOP: {
1145 service_request_data = NULL;
1149 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
1150 service_request_data = NULL;
1154 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
1155 service_request_data = NULL;
1159 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
1160 ZigbeeServicePermitJoin_t *in_req;
1161 ZigbeeServicePermitJoin_t *req = NULL;
1163 in_req = (ZigbeeServicePermitJoin_t *)request_data;
1164 if (NULL != in_req) {
1165 /* Allocate memory */
1166 req = (ZigbeeServicePermitJoin_t *)
1167 g_malloc0(sizeof(ZigbeeServicePermitJoin_t));
1170 req->permit_join = in_req->permit_join;
1171 req->duration = in_req->duration;
1174 service_request_data = (gpointer)req;
1178 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
1179 ZigbeeServiceLeaveRequest_t *in_req;
1180 ZigbeeServiceLeaveRequest_t *req = NULL;
1182 in_req = (ZigbeeServiceLeaveRequest_t *)request_data;
1183 if (NULL != in_req) {
1184 /* Allocate memory */
1185 req = (ZigbeeServiceLeaveRequest_t *)
1186 g_malloc0(sizeof(ZigbeeServiceLeaveRequest_t));
1189 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1190 req->remove_child = in_req->remove_child;
1191 req->rejoin = in_req->rejoin;
1194 service_request_data = (gpointer)req;
1198 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
1199 service_request_data = NULL;
1203 case ZBLIB_SERVICE_OPS_GET_MAC: {
1204 service_request_data = NULL;
1208 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
1209 service_request_data = NULL;
1213 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
1214 ZigbeeServiceGetEndpointList_t *in_req;
1215 ZigbeeServiceGetEndpointList_t *req = NULL;
1217 in_req = (ZigbeeServiceGetEndpointList_t *)request_data;
1218 if (NULL != in_req) {
1219 /* Allocate memory */
1220 req = (ZigbeeServiceGetEndpointList_t *)
1221 g_malloc0(sizeof(ZigbeeServiceGetEndpointList_t));
1224 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1227 service_request_data = (gpointer)req;
1231 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
1232 ZigbeeServiceGetClusterList_t *in_req;
1233 ZigbeeServiceGetClusterList_t *req = NULL;
1235 in_req = (ZigbeeServiceGetClusterList_t *)request_data;
1236 if (NULL != in_req) {
1237 /* Allocate memory */
1238 req = (ZigbeeServiceGetClusterList_t *)
1239 g_malloc0(sizeof(ZigbeeServiceGetClusterList_t));
1242 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1243 req->endpoint = in_req->endpoint;
1246 service_request_data = (gpointer)req;
1250 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
1251 ZigbeeServiceGetNodeType_t *in_req;
1252 ZigbeeServiceGetNodeType_t *req = NULL;
1254 in_req = (ZigbeeServiceGetNodeType_t *)request_data;
1255 if (NULL != in_req) {
1256 /* Allocate memory */
1257 req = (ZigbeeServiceGetNodeType_t *)
1258 g_malloc0(sizeof(ZigbeeServiceGetNodeType_t));
1261 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1264 service_request_data = (gpointer)req;
1272 return service_request_data;
1275 static gpointer __zblib_request_create_thermostat_request_data(guint request_type,
1276 gpointer request_data, guint request_data_len)
1278 gpointer thermostat_request_data = NULL;
1281 NOT_USED(request_data_len);
1284 ops_id = __zblib_request_get_ops_id(request_type);
1286 case ZBLIB_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
1287 ZigbeeThermostatGetLocalTemp_t *in_req;
1288 ZigbeeThermostatGetLocalTemp_t *req = NULL;
1290 in_req = (ZigbeeThermostatGetLocalTemp_t *)request_data;
1291 if (NULL != in_req) {
1292 /* Allocate memory */
1293 req = (ZigbeeThermostatGetLocalTemp_t *)
1294 g_malloc0(sizeof(ZigbeeThermostatGetLocalTemp_t));
1297 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1298 req->endpoint = in_req->endpoint;
1301 thermostat_request_data = (gpointer)req;
1305 case ZBLIB_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
1306 ZigbeeThermostatGetWeeklySchedule_t *in_req;
1307 ZigbeeThermostatGetWeeklySchedule_t *req = NULL;
1309 in_req = (ZigbeeThermostatGetWeeklySchedule_t *)request_data;
1310 if (NULL != in_req) {
1311 /* Allocate memory */
1312 req = (ZigbeeThermostatGetWeeklySchedule_t *)
1313 g_malloc0(sizeof(ZigbeeThermostatGetWeeklySchedule_t));
1316 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1317 req->endpoint = in_req->endpoint;
1318 req->num_of_days = in_req->num_of_days;
1319 req->mode = in_req->mode;
1322 thermostat_request_data = (gpointer)req;
1326 case ZBLIB_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
1327 ZigbeeThermostatSetWeeklySchedule_t *in_req;
1328 ZigbeeThermostatSetWeeklySchedule_t *req = NULL;
1330 in_req = (ZigbeeThermostatSetWeeklySchedule_t *)request_data;
1331 if (NULL != in_req) {
1332 /* Allocate memory */
1333 req = (ZigbeeThermostatSetWeeklySchedule_t *)
1334 g_malloc0(sizeof(ZigbeeThermostatSetWeeklySchedule_t));
1337 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1338 req->endpoint = in_req->endpoint;
1339 req->no_of_transitions = in_req->no_of_transitions;
1340 req->num_of_days = in_req->num_of_days;
1341 req->mode = in_req->mode;
1342 memcpy(req->payload,
1343 in_req->payload, ZIGBEE_THERMSTAT_PAYLOAD_MAX_LEN);
1344 req->payload_len = in_req->payload_len;
1347 thermostat_request_data = (gpointer)req;
1351 case ZBLIB_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
1352 ZigbeeThermostatClearWeeklySchedule_t *in_req;
1353 ZigbeeThermostatClearWeeklySchedule_t *req = NULL;
1355 in_req = (ZigbeeThermostatClearWeeklySchedule_t *)request_data;
1356 if (NULL != in_req) {
1357 /* Allocate memory */
1358 req = (ZigbeeThermostatClearWeeklySchedule_t *)
1359 g_malloc0(sizeof(ZigbeeThermostatClearWeeklySchedule_t));
1362 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
1363 req->endpoint = in_req->endpoint;
1366 thermostat_request_data = (gpointer)req;
1370 case ZBLIB_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
1371 ZigbeeThermostatSetpointRaiseLower_t *in_req;
1372 ZigbeeThermostatSetpointRaiseLower_t *req = NULL;
1374 in_req = (ZigbeeThermostatSetpointRaiseLower_t *)request_data;
1375 if (NULL != in_req) {
1376 /* Allocate memory */
1377 req = (ZigbeeThermostatSetpointRaiseLower_t *)
1378 g_malloc0(sizeof(ZigbeeThermostatSetpointRaiseLower_t));
1381 req->node_id = in_req->node_id;
1382 req->endpoint = in_req->endpoint;
1383 req->mode = in_req->mode;
1384 req->amount = in_req->amount;
1387 thermostat_request_data = (gpointer)req;
1395 return thermostat_request_data;
1398 static gpointer __zblib_request_create_zclbasic_control_request_data(guint request_type,
1399 gpointer request_data, guint request_data_len)
1401 gpointer zclbasic_control_request_data = NULL;
1404 NOT_USED(request_data_len);
1407 ops_id = __zblib_request_get_ops_id(request_type);
1409 case ZBLIB_ZCLBASIC_CONTROL_OPS_RESET_FACTORY_DEFAULT: {
1410 ZigbeeZclbasicControlResetFactoryDefault_t *in_req;
1411 ZigbeeZclbasicControlResetFactoryDefault_t *req = NULL;
1413 in_req = (ZigbeeZclbasicControlResetFactoryDefault_t *)request_data;
1414 if (NULL != in_req) {
1415 /* Allocate memory */
1416 req = (ZigbeeZclbasicControlResetFactoryDefault_t *)
1417 g_malloc0(sizeof(ZigbeeZclbasicControlResetFactoryDefault_t));
1420 req->node_id = in_req->node_id;
1421 req->dest_ep = in_req->dest_ep;
1424 zclbasic_control_request_data = (gpointer)req;
1432 return zclbasic_control_request_data;
1435 static gpointer __zblib_request_create_zclglobal_control_request_data(guint request_type,
1436 gpointer request_data, guint request_data_len)
1438 gpointer zclglobal_control_request_data = NULL;
1441 NOT_USED(request_data_len);
1444 ops_id = __zblib_request_get_ops_id(request_type);
1446 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
1447 ZigbeeZclglobalControlReadAttributesRequest_t *in_req;
1448 ZigbeeZclglobalControlReadAttributesRequest_t *req = NULL;
1450 in_req = (ZigbeeZclglobalControlReadAttributesRequest_t *)request_data;
1451 if (NULL != in_req) {
1452 /* Allocate memory */
1453 req = (ZigbeeZclglobalControlReadAttributesRequest_t *)
1454 g_malloc0(sizeof(ZigbeeZclglobalControlReadAttributesRequest_t));
1457 req->attribute_id = g_strdup(in_req->attribute_id);
1458 req->attribute_id_len = in_req->attribute_id_len;
1459 req->node_id = in_req->node_id;
1460 req->cluster_id = in_req->cluster_id;
1461 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1462 req->dest_ep = in_req->dest_ep;
1465 zclglobal_control_request_data = (gpointer)req;
1469 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
1470 ZigbeeZclglobalControlWriteAttributesRequest_t *in_req;
1471 ZigbeeZclglobalControlWriteAttributesRequest_t *req = NULL;
1473 in_req = (ZigbeeZclglobalControlWriteAttributesRequest_t *)request_data;
1474 if (NULL != in_req) {
1475 /* Allocate memory */
1476 req = (ZigbeeZclglobalControlWriteAttributesRequest_t *)
1477 g_malloc0(sizeof(ZigbeeZclglobalControlWriteAttributesRequest_t));
1480 req->write_records = g_strdup(in_req->write_records);
1481 req->records_len = in_req->records_len;
1482 req->node_id = in_req->node_id;
1483 req->cluster_id = in_req->cluster_id;
1484 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1485 req->src_ep = in_req->src_ep;
1486 req->dest_ep = in_req->dest_ep;
1489 zclglobal_control_request_data = (gpointer)req;
1493 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
1494 ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *in_req;
1495 ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *req = NULL;
1497 in_req = (ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *)request_data;
1498 if (NULL != in_req) {
1499 /* Allocate memory */
1500 req = (ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *)
1501 g_malloc0(sizeof(ZigbeeZclglobalControlWriteAttributesUndividedRequest_t));
1504 req->write_records = g_strdup(in_req->write_records);
1505 req->records_len = in_req->records_len;
1506 req->node_id = in_req->node_id;
1507 req->cluster_id = in_req->cluster_id;
1508 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1509 req->src_ep = in_req->src_ep;
1510 req->dest_ep = in_req->dest_ep;
1513 zclglobal_control_request_data = (gpointer)req;
1517 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
1518 ZigbeeZclglobalControlWriteAttributesNoResponse_t *in_req;
1519 ZigbeeZclglobalControlWriteAttributesNoResponse_t *req = NULL;
1521 in_req = (ZigbeeZclglobalControlWriteAttributesNoResponse_t *)request_data;
1522 if (NULL != in_req) {
1523 /* Allocate memory */
1524 req = (ZigbeeZclglobalControlWriteAttributesNoResponse_t *)
1525 g_malloc0(sizeof(ZigbeeZclglobalControlWriteAttributesNoResponse_t));
1528 req->write_records = g_strdup(in_req->write_records);
1529 req->records_len = in_req->records_len;
1530 req->node_id = in_req->node_id;
1531 req->cluster_id = in_req->cluster_id;
1532 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1533 req->src_ep = in_req->src_ep;
1534 req->dest_ep = in_req->dest_ep;
1537 zclglobal_control_request_data = (gpointer)req;
1541 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
1542 ZigbeeZclglobalControlWriteAttributesStructed_t *in_req;
1543 ZigbeeZclglobalControlWriteAttributesStructed_t *req = NULL;
1545 in_req = (ZigbeeZclglobalControlWriteAttributesStructed_t *)request_data;
1546 if (NULL != in_req) {
1547 /* Allocate memory */
1548 req = (ZigbeeZclglobalControlWriteAttributesStructed_t *)
1549 g_malloc0(sizeof(ZigbeeZclglobalControlWriteAttributesStructed_t));
1552 req->write_records = g_strdup(in_req->write_records);
1553 req->records_len = in_req->records_len;
1554 req->node_id = in_req->node_id;
1555 req->cluster_id = in_req->cluster_id;
1556 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1557 req->src_ep = in_req->src_ep;
1558 req->dest_ep = in_req->dest_ep;
1561 zclglobal_control_request_data = (gpointer)req;
1565 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
1566 ZigbeeZclglobalControlReadAttributesStructed_t *in_req;
1567 ZigbeeZclglobalControlReadAttributesStructed_t *req = NULL;
1569 in_req = (ZigbeeZclglobalControlReadAttributesStructed_t *)request_data;
1570 if (NULL != in_req) {
1571 /* Allocate memory */
1572 req = (ZigbeeZclglobalControlReadAttributesStructed_t *)
1573 g_malloc0(sizeof(ZigbeeZclglobalControlReadAttributesStructed_t));
1576 req->read_records = g_strdup(in_req->read_records);
1577 req->records_len = in_req->records_len;
1578 req->node_id = in_req->node_id;
1579 req->cluster_id = in_req->cluster_id;
1580 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1581 req->src_ep = in_req->src_ep;
1582 req->dest_ep = in_req->dest_ep;
1585 zclglobal_control_request_data = (gpointer)req;
1589 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
1590 ZigbeeZclglobalControlConfigureReportingReq_t *in_req;
1591 ZigbeeZclglobalControlConfigureReportingReq_t *req = NULL;
1593 in_req = (ZigbeeZclglobalControlConfigureReportingReq_t *)request_data;
1594 if (NULL != in_req) {
1595 /* Allocate memory */
1596 req = (ZigbeeZclglobalControlConfigureReportingReq_t *)
1597 g_malloc0(sizeof(ZigbeeZclglobalControlConfigureReportingReq_t));
1600 req->read_records = g_strdup(in_req->read_records);
1601 req->records_len = in_req->records_len;
1602 req->node_id = in_req->node_id;
1603 req->cluster_id = in_req->cluster_id;
1604 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1605 req->src_ep = in_req->src_ep;
1606 req->dest_ep = in_req->dest_ep;
1609 zclglobal_control_request_data = (gpointer)req;
1613 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
1614 ZigbeeZclglobalControlReadConfigureReporting_t *in_req;
1615 ZigbeeZclglobalControlReadConfigureReporting_t *req = NULL;
1617 in_req = (ZigbeeZclglobalControlReadConfigureReporting_t *)request_data;
1618 if (NULL != in_req) {
1619 /* Allocate memory */
1620 req = (ZigbeeZclglobalControlReadConfigureReporting_t *)
1621 g_malloc0(sizeof(ZigbeeZclglobalControlReadConfigureReporting_t));
1624 req->read_records = g_strdup(in_req->read_records);
1625 req->records_len = in_req->records_len;
1626 req->node_id = in_req->node_id;
1627 req->cluster_id = in_req->cluster_id;
1628 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1629 req->src_ep = in_req->src_ep;
1630 req->dest_ep = in_req->dest_ep;
1633 zclglobal_control_request_data = (gpointer)req;
1637 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
1638 ZigbeeZclglobalControlDiscoverAttributes_t *in_req;
1639 ZigbeeZclglobalControlDiscoverAttributes_t *req = NULL;
1641 in_req = (ZigbeeZclglobalControlDiscoverAttributes_t *)request_data;
1642 if (NULL != in_req) {
1643 /* Allocate memory */
1644 req = (ZigbeeZclglobalControlDiscoverAttributes_t *)
1645 g_malloc0(sizeof(ZigbeeZclglobalControlDiscoverAttributes_t));
1648 req->node_id = in_req->node_id;
1649 req->dest_ep = in_req->dest_ep;
1650 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1651 req->cluster_id = in_req->cluster_id;
1652 req->start_attribute = in_req->start_attribute;
1653 req->max = in_req->max;
1656 zclglobal_control_request_data = (gpointer)req;
1660 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
1661 ZigbeeZclglobalControlDiscoverAttributesExtended_t *in_req;
1662 ZigbeeZclglobalControlDiscoverAttributesExtended_t *req = NULL;
1664 in_req = (ZigbeeZclglobalControlDiscoverAttributesExtended_t *)request_data;
1665 if (NULL != in_req) {
1666 /* Allocate memory */
1667 req = (ZigbeeZclglobalControlDiscoverAttributesExtended_t *)
1668 g_malloc0(sizeof(ZigbeeZclglobalControlDiscoverAttributesExtended_t));
1671 req->node_id = in_req->node_id;
1672 req->dest_ep = in_req->dest_ep;
1673 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1674 req->cluster_id = in_req->cluster_id;
1675 req->start_attribute = in_req->start_attribute;
1676 req->max = in_req->max;
1679 zclglobal_control_request_data = (gpointer)req;
1683 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
1684 ZigbeeZclglobalControlDiscoverCommandsReceived_t *in_req;
1685 ZigbeeZclglobalControlDiscoverCommandsReceived_t *req = NULL;
1687 in_req = (ZigbeeZclglobalControlDiscoverCommandsReceived_t *)request_data;
1688 if (NULL != in_req) {
1689 /* Allocate memory */
1690 req = (ZigbeeZclglobalControlDiscoverCommandsReceived_t *)
1691 g_malloc0(sizeof(ZigbeeZclglobalControlDiscoverCommandsReceived_t));
1694 req->node_id = in_req->node_id;
1695 req->dest_ep = in_req->dest_ep;
1696 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1697 req->cluster_id = in_req->cluster_id;
1698 req->start_attribute = in_req->start_attribute;
1699 req->max = in_req->max;
1702 zclglobal_control_request_data = (gpointer)req;
1706 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
1707 ZigbeeZclglobalControlDiscoverCommandsGenerated_t *in_req;
1708 ZigbeeZclglobalControlDiscoverCommandsGenerated_t *req = NULL;
1710 in_req = (ZigbeeZclglobalControlDiscoverCommandsGenerated_t *)request_data;
1711 if (NULL != in_req) {
1712 /* Allocate memory */
1713 req = (ZigbeeZclglobalControlDiscoverCommandsGenerated_t *)
1714 g_malloc0(sizeof(ZigbeeZclglobalControlDiscoverCommandsGenerated_t));
1717 req->node_id = in_req->node_id;
1718 req->dest_ep = in_req->dest_ep;
1719 req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
1720 req->cluster_id = in_req->cluster_id;
1721 req->start_attribute = in_req->start_attribute;
1722 req->max = in_req->max;
1725 zclglobal_control_request_data = (gpointer)req;
1733 return zclglobal_control_request_data;
1736 static gpointer __zblib_request_create_zclias_control_request_data(guint request_type,
1737 gpointer request_data, guint request_data_len)
1739 gpointer zclias_control_request_data = NULL;
1742 NOT_USED(request_data_len);
1745 ops_id = __zblib_request_get_ops_id(request_type);
1747 case ZBLIB_ZCLIAS_CONTROL_OPS_ENROLL_RESPONSE: {
1748 ZigbeeZcliasControlEnrolResponse_t *in_req;
1749 ZigbeeZcliasControlEnrolResponse_t *req = NULL;
1751 in_req = (ZigbeeZcliasControlEnrolResponse_t *)request_data;
1752 if (NULL != in_req) {
1753 /* Allocate memory */
1754 req = (ZigbeeZcliasControlEnrolResponse_t *)
1755 g_malloc0(sizeof(ZigbeeZcliasControlEnrolResponse_t));
1758 req->node_id = in_req->node_id;
1759 req->dest_ep = in_req->dest_ep;
1760 req->enroll_code = in_req->enroll_code;
1761 req->zone_id = in_req->zone_id;
1764 zclias_control_request_data = (gpointer)req;
1772 return zclias_control_request_data;
1775 static gpointer __zblib_request_create_zclidentify_control_request_data(guint request_type,
1776 gpointer request_data, guint request_data_len)
1778 gpointer zclidentify_control_request_data = NULL;
1781 NOT_USED(request_data_len);
1784 ops_id = __zblib_request_get_ops_id(request_type);
1786 case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_IDENTIFY: {
1787 ZigbeeZclidentifyControlIdentify_t *in_req;
1788 ZigbeeZclidentifyControlIdentify_t *req = NULL;
1790 in_req = (ZigbeeZclidentifyControlIdentify_t *)request_data;
1791 if (NULL != in_req) {
1792 /* Allocate memory */
1793 req = (ZigbeeZclidentifyControlIdentify_t *)
1794 g_malloc0(sizeof(ZigbeeZclidentifyControlIdentify_t));
1797 req->node_id = in_req->node_id;
1798 req->dest_ep = in_req->dest_ep;
1799 req->identify_time = in_req->identify_time;
1802 zclidentify_control_request_data = (gpointer)req;
1806 case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_QUERY: {
1807 ZigbeeZclidentifyControlQuery_t *in_req;
1808 ZigbeeZclidentifyControlQuery_t *req = NULL;
1810 in_req = (ZigbeeZclidentifyControlQuery_t *)request_data;
1811 if (NULL != in_req) {
1812 /* Allocate memory */
1813 req = (ZigbeeZclidentifyControlQuery_t *)
1814 g_malloc0(sizeof(ZigbeeZclidentifyControlQuery_t));
1817 req->node_id = in_req->node_id;
1820 zclidentify_control_request_data = (gpointer)req;
1828 return zclidentify_control_request_data;
1831 static gpointer __zblib_request_create_zcl_color_request_data(guint request_type,
1832 gpointer request_data, guint request_data_len)
1834 gpointer zcl_color_request_data = NULL;
1837 NOT_USED(request_data_len);
1840 ops_id = __zblib_request_get_ops_id(request_type);
1842 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE: {
1843 ZigbeeZclColorMoveToHue_t *in_req;
1844 ZigbeeZclColorMoveToHue_t *req = NULL;
1846 in_req = (ZigbeeZclColorMoveToHue_t *)request_data;
1847 if (NULL != in_req) {
1848 /* Allocate memory */
1849 req = (ZigbeeZclColorMoveToHue_t *)
1850 g_malloc0(sizeof(ZigbeeZclColorMoveToHue_t));
1853 req->node_id = in_req->node_id;
1854 req->dest_ep = in_req->dest_ep;
1855 req->hue = in_req->hue;
1856 req->direction = in_req->direction;
1857 req->transition_time = in_req->transition_time;
1860 zcl_color_request_data = (gpointer)req;
1864 case ZBLIB_ZCL_COLOR_OPS_MOVE_HUE: {
1865 ZigbeeZclColorMoveHue_t *in_req;
1866 ZigbeeZclColorMoveHue_t *req = NULL;
1868 in_req = (ZigbeeZclColorMoveHue_t *)request_data;
1869 if (NULL != in_req) {
1870 /* Allocate memory */
1871 req = (ZigbeeZclColorMoveHue_t *)
1872 g_malloc0(sizeof(ZigbeeZclColorMoveHue_t));
1875 req->node_id = in_req->node_id;
1876 req->dest_ep = in_req->dest_ep;
1877 req->move_mode = in_req->move_mode;
1878 req->rate = in_req->rate;
1881 zcl_color_request_data = (gpointer)req;
1885 case ZBLIB_ZCL_COLOR_OPS_STEP_HUE: {
1886 ZigbeeZclColorStepHue_t *in_req;
1887 ZigbeeZclColorStepHue_t *req = NULL;
1889 in_req = (ZigbeeZclColorStepHue_t *)request_data;
1890 if (NULL != in_req) {
1891 /* Allocate memory */
1892 req = (ZigbeeZclColorStepHue_t *)
1893 g_malloc0(sizeof(ZigbeeZclColorStepHue_t));
1896 req->node_id = in_req->node_id;
1897 req->dest_ep = in_req->dest_ep;
1898 req->step_mode = in_req->step_mode;
1899 req->step_size = in_req->step_size;
1900 req->transition_time = in_req->transition_time;
1903 zcl_color_request_data = (gpointer)req;
1907 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_STAURATION: {
1908 ZigbeeZclColorMoveToSaturation_t *in_req;
1909 ZigbeeZclColorMoveToSaturation_t *req = NULL;
1911 in_req = (ZigbeeZclColorMoveToSaturation_t *)request_data;
1912 if (NULL != in_req) {
1913 /* Allocate memory */
1914 req = (ZigbeeZclColorMoveToSaturation_t *)
1915 g_malloc0(sizeof(ZigbeeZclColorMoveToSaturation_t));
1918 req->node_id = in_req->node_id;
1919 req->dest_ep = in_req->dest_ep;
1920 req->saturation = in_req->saturation;
1921 req->transition_time = in_req->transition_time;
1924 zcl_color_request_data = (gpointer)req;
1928 case ZBLIB_ZCL_COLOR_OPS_MOVE_STAURATION: {
1929 ZigbeeZclColorMoveSaturation_t *in_req;
1930 ZigbeeZclColorMoveSaturation_t *req = NULL;
1932 in_req = (ZigbeeZclColorMoveSaturation_t *)request_data;
1933 if (NULL != in_req) {
1934 /* Allocate memory */
1935 req = (ZigbeeZclColorMoveSaturation_t *)
1936 g_malloc0(sizeof(ZigbeeZclColorMoveSaturation_t));
1939 req->node_id = in_req->node_id;
1940 req->dest_ep = in_req->dest_ep;
1941 req->move_mode = in_req->move_mode;
1942 req->rate = in_req->rate;
1945 zcl_color_request_data = (gpointer)req;
1949 case ZBLIB_ZCL_COLOR_OPS_STEP_STAURATION: {
1950 ZigbeeZclColorStepSaturation_t *in_req;
1951 ZigbeeZclColorStepSaturation_t *req = NULL;
1953 in_req = (ZigbeeZclColorStepSaturation_t *)request_data;
1954 if (NULL != in_req) {
1955 /* Allocate memory */
1956 req = (ZigbeeZclColorStepSaturation_t *)
1957 g_malloc0(sizeof(ZigbeeZclColorStepSaturation_t));
1960 req->node_id = in_req->node_id;
1961 req->dest_ep = in_req->dest_ep;
1962 req->step_mode = in_req->step_mode;
1963 req->step_size = in_req->step_size;
1964 req->transition_time = in_req->transition_time;
1967 zcl_color_request_data = (gpointer)req;
1971 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE_AND_SATURATION: {
1972 ZigbeeZclColorMoveToHueAndSaturation_t *in_req;
1973 ZigbeeZclColorMoveToHueAndSaturation_t *req = NULL;
1975 in_req = (ZigbeeZclColorMoveToHueAndSaturation_t *)request_data;
1976 if (NULL != in_req) {
1977 /* Allocate memory */
1978 req = (ZigbeeZclColorMoveToHueAndSaturation_t *)
1979 g_malloc0(sizeof(ZigbeeZclColorMoveToHueAndSaturation_t));
1982 req->node_id = in_req->node_id;
1983 req->dest_ep = in_req->dest_ep;
1984 req->hue = in_req->hue;
1985 req->saturation = in_req->saturation;
1986 req->transition_time = in_req->transition_time;
1989 zcl_color_request_data = (gpointer)req;
1993 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_COLOR: {
1994 ZigbeeZclColorMoveToColor_t *in_req;
1995 ZigbeeZclColorMoveToColor_t *req = NULL;
1997 in_req = (ZigbeeZclColorMoveToColor_t *)request_data;
1998 if (NULL != in_req) {
1999 /* Allocate memory */
2000 req = (ZigbeeZclColorMoveToColor_t *)
2001 g_malloc0(sizeof(ZigbeeZclColorMoveToColor_t));
2004 req->node_id = in_req->node_id;
2005 req->dest_ep = in_req->dest_ep;
2006 req->color_x = in_req->color_x;
2007 req->color_y = in_req->color_y;
2008 req->transition_time = in_req->transition_time;
2011 zcl_color_request_data = (gpointer)req;
2015 case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR: {
2016 ZigbeeZclColorMoveColor_t *in_req;
2017 ZigbeeZclColorMoveColor_t *req = NULL;
2019 in_req = (ZigbeeZclColorMoveColor_t *)request_data;
2020 if (NULL != in_req) {
2021 /* Allocate memory */
2022 req = (ZigbeeZclColorMoveColor_t *)
2023 g_malloc0(sizeof(ZigbeeZclColorMoveColor_t));
2026 req->node_id = in_req->node_id;
2027 req->dest_ep = in_req->dest_ep;
2028 req->rate_x = in_req->rate_x;
2029 req->rate_y = in_req->rate_y;
2032 zcl_color_request_data = (gpointer)req;
2036 case ZBLIB_ZCL_COLOR_OPS_STEP_COLOR: {
2037 ZigbeeZclColorStepColor_t *in_req;
2038 ZigbeeZclColorStepColor_t *req = NULL;
2040 in_req = (ZigbeeZclColorStepColor_t *)request_data;
2041 if (NULL != in_req) {
2042 /* Allocate memory */
2043 req = (ZigbeeZclColorStepColor_t *)
2044 g_malloc0(sizeof(ZigbeeZclColorStepColor_t));
2047 req->node_id = in_req->node_id;
2048 req->dest_ep = in_req->dest_ep;
2049 req->rate_x = in_req->rate_x;
2050 req->rate_y = in_req->rate_y;
2051 req->transition_time = in_req->transition_time;
2054 zcl_color_request_data = (gpointer)req;
2058 case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR_TEMPERATURE: {
2059 ZigbeeZclColorMoveColorTemperature_t *in_req;
2060 ZigbeeZclColorMoveColorTemperature_t *req = NULL;
2062 in_req = (ZigbeeZclColorMoveColorTemperature_t *)request_data;
2063 if (NULL != in_req) {
2064 /* Allocate memory */
2065 req = (ZigbeeZclColorMoveColorTemperature_t *)
2066 g_malloc0(sizeof(ZigbeeZclColorMoveColorTemperature_t));
2069 req->node_id = in_req->node_id;
2070 req->dest_ep = in_req->dest_ep;
2071 req->color_temperature = in_req->color_temperature;
2072 req->transition_time = in_req->transition_time;
2075 zcl_color_request_data = (gpointer)req;
2083 return zcl_color_request_data;
2086 static gpointer __zblib_request_create_zcl_group_request_data(guint request_type,
2087 gpointer request_data, guint request_data_len)
2089 gpointer zcl_group_request_data = NULL;
2092 NOT_USED(request_data_len);
2095 ops_id = __zblib_request_get_ops_id(request_type);
2097 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
2098 ZigbeeZclGroupAddGroup_t *in_req;
2099 ZigbeeZclGroupAddGroup_t *req = NULL;
2101 in_req = (ZigbeeZclGroupAddGroup_t *)request_data;
2102 if (NULL != in_req) {
2103 /* Allocate memory */
2104 req = (ZigbeeZclGroupAddGroup_t *)
2105 g_malloc0(sizeof(ZigbeeZclGroupAddGroup_t));
2108 req->node_id = in_req->node_id;
2109 req->dest_ep = in_req->dest_ep;
2110 req->group_id = in_req->group_id;
2111 g_strlcpy(req->group_name,
2112 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2115 zcl_group_request_data = (gpointer)req;
2119 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
2120 ZigbeeZclGroupViewGroup_t *in_req;
2121 ZigbeeZclGroupViewGroup_t *req = NULL;
2123 in_req = (ZigbeeZclGroupViewGroup_t *)request_data;
2124 if (NULL != in_req) {
2125 /* Allocate memory */
2126 req = (ZigbeeZclGroupViewGroup_t *)
2127 g_malloc0(sizeof(ZigbeeZclGroupViewGroup_t));
2130 req->node_id = in_req->node_id;
2131 req->dest_ep = in_req->dest_ep;
2134 zcl_group_request_data = (gpointer)req;
2138 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
2139 ZigbeeZclGroupGetGroupMembership_t *in_req;
2140 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
2142 in_req = (ZigbeeZclGroupGetGroupMembership_t *)request_data;
2143 if (NULL != in_req) {
2144 /* Allocate memory */
2145 req = (ZigbeeZclGroupGetGroupMembership_t *)
2146 g_malloc0(sizeof(ZigbeeZclGroupGetGroupMembership_t));
2149 req->node_id = in_req->node_id;
2150 req->dest_ep = in_req->dest_ep;
2151 req->group_count = in_req->group_count;
2152 req->group_list = (gshort *)g_memdup(in_req->group_list,
2153 in_req->group_count);
2156 zcl_group_request_data = (gpointer)req;
2160 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
2161 ZigbeeZclGroupRemoveGroup_t *in_req;
2162 ZigbeeZclGroupRemoveGroup_t *req = NULL;
2164 in_req = (ZigbeeZclGroupRemoveGroup_t *)request_data;
2165 if (NULL != in_req) {
2166 /* Allocate memory */
2167 req = (ZigbeeZclGroupRemoveGroup_t *)
2168 g_malloc0(sizeof(ZigbeeZclGroupRemoveGroup_t));
2171 req->node_id = in_req->node_id;
2172 req->dest_ep = in_req->dest_ep;
2173 req->group_id = in_req->group_id;
2176 zcl_group_request_data = (gpointer)req;
2180 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
2181 ZigbeeZclGroupRemoveAllGroup_t *in_req;
2182 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
2184 in_req = (ZigbeeZclGroupRemoveAllGroup_t *)request_data;
2185 if (NULL != in_req) {
2186 /* Allocate memory */
2187 req = (ZigbeeZclGroupRemoveAllGroup_t *)
2188 g_malloc0(sizeof(ZigbeeZclGroupRemoveAllGroup_t));
2191 req->node_id = in_req->node_id;
2192 req->dest_ep = in_req->dest_ep;
2195 zcl_group_request_data = (gpointer)req;
2199 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
2200 ZigbeeZclGroupAddGroupIfIdentifying_t *in_req;
2201 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
2203 in_req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request_data;
2204 if (NULL != in_req) {
2205 /* Allocate memory */
2206 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)
2207 g_malloc0(sizeof(ZigbeeZclGroupAddGroupIfIdentifying_t));
2210 req->node_id = in_req->node_id;
2211 req->dest_ep = in_req->dest_ep;
2212 req->group_id = in_req->group_id;
2213 g_strlcpy(req->group_name,
2214 in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
2217 zcl_group_request_data = (gpointer)req;
2225 return zcl_group_request_data;
2228 static gpointer __zblib_request_create_zcl_poll_control_request_data(guint request_type,
2229 gpointer request_data, guint request_data_len)
2231 gpointer zcl_poll_control_request_data = NULL;
2234 NOT_USED(request_data_len);
2237 ops_id = __zblib_request_get_ops_id(request_type);
2239 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
2240 ZigbeeZclPollControlCheckInResponse_t *in_req;
2241 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
2243 in_req = (ZigbeeZclPollControlCheckInResponse_t *)request_data;
2244 if (NULL != in_req) {
2245 /* Allocate memory */
2246 req = (ZigbeeZclPollControlCheckInResponse_t *)
2247 g_malloc0(sizeof(ZigbeeZclPollControlCheckInResponse_t));
2250 req->node_id = in_req->node_id;
2251 req->dest_ep = in_req->dest_ep;
2252 req->start_fast_polling = in_req->start_fast_polling;
2253 req->fast_poll_timeout = in_req->fast_poll_timeout;
2256 zcl_poll_control_request_data = (gpointer)req;
2260 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
2261 ZigbeeZclPollControlFastPollStop_t *in_req;
2262 ZigbeeZclPollControlFastPollStop_t *req = NULL;
2264 in_req = (ZigbeeZclPollControlFastPollStop_t *)request_data;
2265 if (NULL != in_req) {
2266 /* Allocate memory */
2267 req = (ZigbeeZclPollControlFastPollStop_t *)
2268 g_malloc0(sizeof(ZigbeeZclPollControlFastPollStop_t));
2271 req->node_id = in_req->node_id;
2272 req->dest_ep = in_req->dest_ep;
2275 zcl_poll_control_request_data = (gpointer)req;
2279 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
2280 ZigbeeZclPollControlSetLongPollInterval_t *in_req;
2281 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
2283 in_req = (ZigbeeZclPollControlSetLongPollInterval_t *)request_data;
2284 if (NULL != in_req) {
2285 /* Allocate memory */
2286 req = (ZigbeeZclPollControlSetLongPollInterval_t *)
2287 g_malloc0(sizeof(ZigbeeZclPollControlSetLongPollInterval_t));
2290 req->node_id = in_req->node_id;
2291 req->dest_ep = in_req->dest_ep;
2292 req->new_long_poll_interval = in_req->new_long_poll_interval;
2295 zcl_poll_control_request_data = (gpointer)req;
2299 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
2300 ZigbeeZclPollControlSetShortPollInterval_t *in_req;
2301 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
2303 in_req = (ZigbeeZclPollControlSetShortPollInterval_t *)request_data;
2304 if (NULL != in_req) {
2305 /* Allocate memory */
2306 req = (ZigbeeZclPollControlSetShortPollInterval_t *)
2307 g_malloc0(sizeof(ZigbeeZclPollControlSetShortPollInterval_t));
2310 req->node_id = in_req->node_id;
2311 req->dest_ep = in_req->dest_ep;
2312 req->new_short_poll_interval = in_req->new_short_poll_interval;
2315 zcl_poll_control_request_data = (gpointer)req;
2323 return zcl_poll_control_request_data;
2326 static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type,
2327 gpointer request_data, guint request_data_len)
2329 gpointer zcl_scene_request_data = NULL;
2332 NOT_USED(request_data_len);
2335 ops_id = __zblib_request_get_ops_id(request_type);
2337 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
2338 ZigbeeZclSceneAddScene_t *in_req;
2339 ZigbeeZclSceneAddScene_t *req = NULL;
2341 in_req = (ZigbeeZclSceneAddScene_t *)request_data;
2342 if (NULL != in_req) {
2343 /* Allocate memory */
2344 req = (ZigbeeZclSceneAddScene_t *)
2345 g_malloc0(sizeof(ZigbeeZclSceneAddScene_t));
2348 req->node_id = in_req->node_id;
2349 req->dest_ep = in_req->dest_ep;
2350 req->group_id = in_req->group_id;
2351 req->scene_id = in_req->scene_id;
2352 req->transition_time = in_req->transition_time;
2353 g_strlcpy(req->scene_name,
2354 in_req->scene_name, ZIGBEE_ZCL_SCENE_NAME_MAX_LEN + 1);
2355 req->ext_field_set_len = in_req->ext_field_set_len;
2356 req->ext_field_set = (gshort *)g_memdup(in_req->ext_field_set,
2357 in_req->ext_field_set_len);
2360 zcl_scene_request_data = (gpointer)req;
2364 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
2365 ZigbeeZclSceneViewScene_t *in_req;
2366 ZigbeeZclSceneViewScene_t *req = NULL;
2368 in_req = (ZigbeeZclSceneViewScene_t *)request_data;
2369 if (NULL != in_req) {
2370 /* Allocate memory */
2371 req = (ZigbeeZclSceneViewScene_t *)
2372 g_malloc0(sizeof(ZigbeeZclSceneViewScene_t));
2375 req->node_id = in_req->node_id;
2376 req->dest_ep = in_req->dest_ep;
2377 req->group_id = in_req->group_id;
2378 req->scene_id = in_req->scene_id;
2381 zcl_scene_request_data = (gpointer)req;
2385 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
2386 ZigbeeZclSceneRemoveScene_t *in_req;
2387 ZigbeeZclSceneRemoveScene_t *req = NULL;
2389 in_req = (ZigbeeZclSceneRemoveScene_t *)request_data;
2390 if (NULL != in_req) {
2391 /* Allocate memory */
2392 req = (ZigbeeZclSceneRemoveScene_t *)
2393 g_malloc0(sizeof(ZigbeeZclSceneRemoveScene_t));
2396 req->node_id = in_req->node_id;
2397 req->dest_ep = in_req->dest_ep;
2398 req->group_id = in_req->group_id;
2399 req->scene_id = in_req->scene_id;
2402 zcl_scene_request_data = (gpointer)req;
2406 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
2407 ZigbeeZclSceneStoreScene_t *in_req;
2408 ZigbeeZclSceneStoreScene_t *req = NULL;
2410 in_req = (ZigbeeZclSceneStoreScene_t *)request_data;
2411 if (NULL != in_req) {
2412 /* Allocate memory */
2413 req = (ZigbeeZclSceneStoreScene_t *)
2414 g_malloc0(sizeof(ZigbeeZclSceneStoreScene_t));
2417 req->node_id = in_req->node_id;
2418 req->dest_ep = in_req->dest_ep;
2419 req->group_id = in_req->group_id;
2420 req->scene_id = in_req->scene_id;
2423 zcl_scene_request_data = (gpointer)req;
2427 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
2428 ZigbeeZclSceneRecallScene_t *in_req;
2429 ZigbeeZclSceneRecallScene_t *req = NULL;
2431 in_req = (ZigbeeZclSceneRecallScene_t *)request_data;
2432 if (NULL != in_req) {
2433 /* Allocate memory */
2434 req = (ZigbeeZclSceneRecallScene_t *)
2435 g_malloc0(sizeof(ZigbeeZclSceneRecallScene_t));
2438 req->node_id = in_req->node_id;
2439 req->dest_ep = in_req->dest_ep;
2440 req->group_id = in_req->group_id;
2441 req->scene_id = in_req->scene_id;
2444 zcl_scene_request_data = (gpointer)req;
2448 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
2449 ZigbeeZclSceneRemoveAllScene_t *in_req;
2450 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
2452 in_req = (ZigbeeZclSceneRemoveAllScene_t *)request_data;
2453 if (NULL != in_req) {
2454 /* Allocate memory */
2455 req = (ZigbeeZclSceneRemoveAllScene_t *)
2456 g_malloc0(sizeof(ZigbeeZclSceneRemoveAllScene_t));
2459 req->node_id = in_req->node_id;
2460 req->dest_ep = in_req->dest_ep;
2461 req->group_id = in_req->group_id;
2464 zcl_scene_request_data = (gpointer)req;
2468 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
2469 ZigbeeZclSceneGetSceneMembership_t *in_req;
2470 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
2472 in_req = (ZigbeeZclSceneGetSceneMembership_t *)request_data;
2473 if (NULL != in_req) {
2474 /* Allocate memory */
2475 req = (ZigbeeZclSceneGetSceneMembership_t *)
2476 g_malloc0(sizeof(ZigbeeZclSceneGetSceneMembership_t));
2479 req->node_id = in_req->node_id;
2480 req->dest_ep = in_req->dest_ep;
2481 req->group_id = in_req->group_id;
2484 zcl_scene_request_data = (gpointer)req;
2492 return zcl_scene_request_data;
2495 static gpointer __zblib_request_create_zdodev_control_request_data(guint request_type,
2496 gpointer request_data, guint request_data_len)
2498 gpointer zdodev_control_request_data = NULL;
2501 NOT_USED(request_data_len);
2504 ops_id = __zblib_request_get_ops_id(request_type);
2506 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_ADDR_REQ: {
2507 ZigbeeZdodevControlNwkAddrReq_t *in_req;
2508 ZigbeeZdodevControlNwkAddrReq_t *req = NULL;
2510 in_req = (ZigbeeZdodevControlNwkAddrReq_t *)request_data;
2511 if (NULL != in_req) {
2512 /* Allocate memory */
2513 req = (ZigbeeZdodevControlNwkAddrReq_t *)
2514 g_malloc0(sizeof(ZigbeeZdodevControlNwkAddrReq_t));
2517 memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
2518 req->request_type = in_req->request_type;
2519 req->start_index = in_req->start_index;
2522 zdodev_control_request_data = (gpointer)req;
2526 case ZBLIB_ZDODEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
2527 ZigbeeZdodevControlMatchedDescriptorReq_t *in_req;
2528 ZigbeeZdodevControlMatchedDescriptorReq_t *req = NULL;
2530 in_req = (ZigbeeZdodevControlMatchedDescriptorReq_t *)request_data;
2531 if (NULL != in_req) {
2532 /* Allocate memory */
2533 req = (ZigbeeZdodevControlMatchedDescriptorReq_t *)
2534 g_malloc0(sizeof(ZigbeeZdodevControlMatchedDescriptorReq_t));
2537 req->node_id = in_req->node_id;
2538 req->profile_id = in_req->profile_id;
2539 req->num_in_cl = in_req->num_in_cl;
2540 req->in_cl = g_strdup(in_req->in_cl);
2541 req->num_out_cl = in_req->num_out_cl;
2542 req->out_cl = g_strdup(in_req->out_cl);
2545 zdodev_control_request_data = (gpointer)req;
2549 case ZBLIB_ZDODEV_CONTROL_OPS_IEEE_ADDR_REQ: {
2550 ZigbeeZdodevControlIeeeAddrReq_t *in_req;
2551 ZigbeeZdodevControlIeeeAddrReq_t *req = NULL;
2553 in_req = (ZigbeeZdodevControlIeeeAddrReq_t *)request_data;
2554 if (NULL != in_req) {
2555 /* Allocate memory */
2556 req = (ZigbeeZdodevControlIeeeAddrReq_t *)
2557 g_malloc0(sizeof(ZigbeeZdodevControlIeeeAddrReq_t));
2560 req->node_id = in_req->node_id;
2563 zdodev_control_request_data = (gpointer)req;
2567 case ZBLIB_ZDODEV_CONTROL_OPS_ACTIVE_EP_REQ: {
2568 ZigbeeZdodevControlActiveEpReq_t *in_req;
2569 ZigbeeZdodevControlActiveEpReq_t *req = NULL;
2571 in_req = (ZigbeeZdodevControlActiveEpReq_t *)request_data;
2572 if (NULL != in_req) {
2573 /* Allocate memory */
2574 req = (ZigbeeZdodevControlActiveEpReq_t *)
2575 g_malloc0(sizeof(ZigbeeZdodevControlActiveEpReq_t));
2578 req->node_id = in_req->node_id;
2581 zdodev_control_request_data = (gpointer)req;
2585 case ZBLIB_ZDODEV_CONTROL_OPS_NODE_DESC_REQ: {
2586 ZigbeeZdodevControlNodeDescriptorReq_t *in_req;
2587 ZigbeeZdodevControlNodeDescriptorReq_t *req = NULL;
2589 in_req = (ZigbeeZdodevControlNodeDescriptorReq_t *)request_data;
2590 if (NULL != in_req) {
2591 /* Allocate memory */
2592 req = (ZigbeeZdodevControlNodeDescriptorReq_t *)
2593 g_malloc0(sizeof(ZigbeeZdodevControlNodeDescriptorReq_t));
2596 req->node_id = in_req->node_id;
2599 zdodev_control_request_data = (gpointer)req;
2603 case ZBLIB_ZDODEV_CONTROL_OPS_POWER_DESC_REQ: {
2604 ZigbeeZdodevControlPowerDescriptorReq_t *in_req;
2605 ZigbeeZdodevControlPowerDescriptorReq_t *req = NULL;
2607 in_req = (ZigbeeZdodevControlPowerDescriptorReq_t *)request_data;
2608 if (NULL != in_req) {
2609 /* Allocate memory */
2610 req = (ZigbeeZdodevControlPowerDescriptorReq_t *)
2611 g_malloc0(sizeof(ZigbeeZdodevControlPowerDescriptorReq_t));
2614 req->node_id = in_req->node_id;
2617 zdodev_control_request_data = (gpointer)req;
2621 case ZBLIB_ZDODEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
2622 ZigbeeZdodevControlComplexDescriptorReq_t *in_req;
2623 ZigbeeZdodevControlComplexDescriptorReq_t *req = NULL;
2625 in_req = (ZigbeeZdodevControlComplexDescriptorReq_t *)request_data;
2626 if (NULL != in_req) {
2627 /* Allocate memory */
2628 req = (ZigbeeZdodevControlComplexDescriptorReq_t *)
2629 g_malloc0(sizeof(ZigbeeZdodevControlComplexDescriptorReq_t));
2632 req->node_id = in_req->node_id;
2635 zdodev_control_request_data = (gpointer)req;
2639 case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_REQ: {
2640 ZigbeeZdodevControlUserDescriptorReq_t *in_req;
2641 ZigbeeZdodevControlUserDescriptorReq_t *req = NULL;
2643 in_req = (ZigbeeZdodevControlUserDescriptorReq_t *)request_data;
2644 if (NULL != in_req) {
2645 /* Allocate memory */
2646 req = (ZigbeeZdodevControlUserDescriptorReq_t *)
2647 g_malloc0(sizeof(ZigbeeZdodevControlUserDescriptorReq_t));
2650 req->node_id = in_req->node_id;
2653 zdodev_control_request_data = (gpointer)req;
2657 case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_SET_REQ: {
2658 ZigbeeZdodevControlUserDescriptorSetReq_t *in_req;
2659 ZigbeeZdodevControlUserDescriptorSetReq_t *req = NULL;
2661 in_req = (ZigbeeZdodevControlUserDescriptorSetReq_t *)request_data;
2662 if (NULL != in_req) {
2663 /* Allocate memory */
2664 req = (ZigbeeZdodevControlUserDescriptorSetReq_t *)
2665 g_malloc0(sizeof(ZigbeeZdodevControlUserDescriptorSetReq_t));
2668 req->node_id = in_req->node_id;
2669 req->user_descriptor_len = in_req->user_descriptor_len;
2670 memcpy(req->user_descriptor,
2671 in_req->user_descriptor, in_req->user_descriptor_len);
2674 zdodev_control_request_data = (gpointer)req;
2678 case ZBLIB_ZDODEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
2679 ZigbeeZdodevControlDeviceAnnounce_t *in_req;
2680 ZigbeeZdodevControlDeviceAnnounce_t *req = NULL;
2682 in_req = (ZigbeeZdodevControlDeviceAnnounce_t *)request_data;
2683 if (NULL != in_req) {
2684 /* Allocate memory */
2685 req = (ZigbeeZdodevControlDeviceAnnounce_t *)
2686 g_malloc0(sizeof(ZigbeeZdodevControlDeviceAnnounce_t));
2689 req->node_id = in_req->node_id;
2690 memcpy(req->mac_addr, in_req->mac_addr, ZIGBEE_EUI64_SIZE);
2691 req->capability = in_req->capability;
2694 zdodev_control_request_data = (gpointer)req;
2698 case ZBLIB_ZDODEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
2699 ZigbeeZdodevControlSimpleDescriptorReq_t *in_req;
2700 ZigbeeZdodevControlSimpleDescriptorReq_t *req = NULL;
2702 in_req = (ZigbeeZdodevControlSimpleDescriptorReq_t *)request_data;
2703 if (NULL != in_req) {
2704 /* Allocate memory */
2705 req = (ZigbeeZdodevControlSimpleDescriptorReq_t *)
2706 g_malloc0(sizeof(ZigbeeZdodevControlSimpleDescriptorReq_t));
2709 req->node_id = in_req->node_id;
2710 req->endpoint = in_req->endpoint;
2713 zdodev_control_request_data = (gpointer)req;
2717 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_LQI_REQ: {
2718 ZigbeeZdodevControlMgmtLqiReq_t *in_req;
2719 ZigbeeZdodevControlMgmtLqiReq_t *req = NULL;
2721 in_req = (ZigbeeZdodevControlMgmtLqiReq_t *)request_data;
2722 if (NULL != in_req) {
2723 /* Allocate memory */
2724 req = (ZigbeeZdodevControlMgmtLqiReq_t *)
2725 g_malloc0(sizeof(ZigbeeZdodevControlMgmtLqiReq_t));
2728 req->node_id = in_req->node_id;
2729 req->start_index = in_req->start_index;
2732 zdodev_control_request_data = (gpointer)req;
2736 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_RTG_REQ: {
2737 ZigbeeZdodevControlMgmtRtgReq_t *in_req;
2738 ZigbeeZdodevControlMgmtRtgReq_t *req = NULL;
2740 in_req = (ZigbeeZdodevControlMgmtRtgReq_t *)request_data;
2741 if (NULL != in_req) {
2742 /* Allocate memory */
2743 req = (ZigbeeZdodevControlMgmtRtgReq_t *)
2744 g_malloc0(sizeof(ZigbeeZdodevControlMgmtRtgReq_t));
2747 req->node_id = in_req->node_id;
2748 req->start_index = in_req->start_index;
2751 zdodev_control_request_data = (gpointer)req;
2755 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_BIND_REQ: {
2756 ZigbeeZdodevControlMgmtBindReq_t *in_req;
2757 ZigbeeZdodevControlMgmtBindReq_t *req = NULL;
2759 in_req = (ZigbeeZdodevControlMgmtBindReq_t *)request_data;
2760 if (NULL != in_req) {
2761 /* Allocate memory */
2762 req = (ZigbeeZdodevControlMgmtBindReq_t *)
2763 g_malloc0(sizeof(ZigbeeZdodevControlMgmtBindReq_t));
2766 req->node_id = in_req->node_id;
2767 req->start_index = in_req->start_index;
2770 zdodev_control_request_data = (gpointer)req;
2774 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
2775 ZigbeeZdodevControlMgmtPermitJoinReq_t *in_req;
2776 ZigbeeZdodevControlMgmtPermitJoinReq_t *req = NULL;
2778 in_req = (ZigbeeZdodevControlMgmtPermitJoinReq_t *)request_data;
2779 if (NULL != in_req) {
2780 /* Allocate memory */
2781 req = (ZigbeeZdodevControlMgmtPermitJoinReq_t *)
2782 g_malloc0(sizeof(ZigbeeZdodevControlMgmtPermitJoinReq_t));
2785 req->addr = in_req->addr;
2786 req->duration = in_req->duration;
2787 req->tc_significance = in_req->tc_significance;
2790 zdodev_control_request_data = (gpointer)req;
2794 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_UPDATE_REQ: {
2795 ZigbeeZdodevControlNwkUpdateReq_t *in_req;
2796 ZigbeeZdodevControlNwkUpdateReq_t *req = NULL;
2798 in_req = (ZigbeeZdodevControlNwkUpdateReq_t *)request_data;
2799 if (NULL != in_req) {
2800 /* Allocate memory */
2801 req = (ZigbeeZdodevControlNwkUpdateReq_t *)
2802 g_malloc0(sizeof(ZigbeeZdodevControlNwkUpdateReq_t));
2805 req->node_id = in_req->node_id;
2806 req->scan_channel = in_req->scan_channel;
2807 req->scan_duration = in_req->scan_duration;
2808 req->scan_count = in_req->scan_count;
2809 req->network_update_id = in_req->network_update_id;
2812 zdodev_control_request_data = (gpointer)req;
2816 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_DISC_REQ: {
2817 ZigbeeZdodevControlNwkDescriptorReq_t *in_req;
2818 ZigbeeZdodevControlNwkDescriptorReq_t *req = NULL;
2820 in_req = (ZigbeeZdodevControlNwkDescriptorReq_t *)request_data;
2821 if (NULL != in_req) {
2822 /* Allocate memory */
2823 req = (ZigbeeZdodevControlNwkDescriptorReq_t *)
2824 g_malloc0(sizeof(ZigbeeZdodevControlNwkDescriptorReq_t));
2827 req->node_id = in_req->node_id;
2828 req->scan_channel = in_req->scan_channel;
2829 req->scan_duration = in_req->scan_duration;
2830 req->scan_count = in_req->scan_count;
2831 req->start_index = in_req->start_index;
2834 zdodev_control_request_data = (gpointer)req;
2842 return zdodev_control_request_data;
2845 static gpointer __zblib_request_create_zdo_bind_request_data(guint request_type,
2846 gpointer request_data, guint request_data_len)
2848 gpointer zdo_bind_request_data = NULL;
2851 NOT_USED(request_data_len);
2854 ops_id = __zblib_request_get_ops_id(request_type);
2856 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
2857 ZigbeeZdoBindBindReq_t *in_req;
2858 ZigbeeZdoBindBindReq_t *req = NULL;
2860 in_req = (ZigbeeZdoBindBindReq_t *)request_data;
2861 if (NULL != in_req) {
2862 /* Allocate memory */
2863 req = (ZigbeeZdoBindBindReq_t *)
2864 g_malloc0(sizeof(ZigbeeZdoBindBindReq_t));
2867 req->node_id = in_req->node_id;
2868 g_strlcpy(req->src_addr,
2869 in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2870 req->src_ep = in_req->src_ep;
2871 req->cluster_id = in_req->cluster_id;
2872 g_strlcpy(req->dst_addr,
2873 in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2874 req->bind_type = in_req->bind_type;
2875 req->group_addr = in_req->group_addr;
2876 req->dst_ep = in_req->dst_ep;
2879 zdo_bind_request_data = (gpointer)req;
2883 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
2884 ZigbeeZdoBindUnbindReq_t *in_req;
2885 ZigbeeZdoBindUnbindReq_t *req = NULL;
2887 in_req = (ZigbeeZdoBindUnbindReq_t *)request_data;
2888 if (NULL != in_req) {
2889 /* Allocate memory */
2890 req = (ZigbeeZdoBindUnbindReq_t *)
2891 g_malloc0(sizeof(ZigbeeZdoBindUnbindReq_t));
2894 req->node_id = in_req->node_id;
2895 g_strlcpy(req->src_addr,
2896 in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2897 req->src_ep = in_req->src_ep;
2898 req->cluster_id = in_req->cluster_id;
2899 g_strlcpy(req->dst_addr,
2900 in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
2901 req->bind_type = in_req->bind_type;
2902 req->group_addr = in_req->group_addr;
2903 req->dst_ep = in_req->dst_ep;
2906 zdo_bind_request_data = (gpointer)req;
2914 return zdo_bind_request_data;
2918 static gpointer __zblib_request_create_request_data(guint request_type,
2919 gpointer request_data, guint request_data_len)
2921 gpointer _request_data = NULL;
2922 ZblibDriverType_e driver_type;
2924 /* Fetch driver type */
2925 driver_type = __zblib_request_get_driver_type(request_type);
2926 switch (driver_type) {
2927 case ZBLIB_DRIVER_TYPE_ALARM: {
2928 _request_data = __zblib_request_create_alarm_request_data(request_type,
2929 request_data, request_data_len);
2933 case ZBLIB_DRIVER_TYPE_CUSTOM: {
2934 _request_data = __zblib_request_create_custom_request_data(request_type,
2935 request_data, request_data_len);
2939 case ZBLIB_DRIVER_TYPE_DOOR_LOCK: {
2940 _request_data = __zblib_request_create_door_lock_request_data(request_type,
2941 request_data, request_data_len);
2945 case ZBLIB_DRIVER_TYPE_FAN_CONTROL: {
2946 _request_data = __zblib_request_create_fan_control_request_data(request_type,
2947 request_data, request_data_len);
2951 case ZBLIB_DRIVER_TYPE_LEVEL_CONTROL: {
2952 _request_data = __zblib_request_create_level_control_request_data(request_type,
2953 request_data, request_data_len);
2957 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
2958 _request_data = __zblib_request_create_mfglib_control_request_data(request_type,
2959 request_data, request_data_len);
2963 case ZBLIB_DRIVER_TYPE_ON_OFF: {
2964 _request_data = __zblib_request_create_on_off_request_data(request_type,
2965 request_data, request_data_len);
2969 case ZBLIB_DRIVER_TYPE_SERVICE: {
2970 _request_data = __zblib_request_create_service_request_data(request_type,
2971 request_data, request_data_len);
2975 case ZBLIB_DRIVER_TYPE_THERMOSTAT: {
2976 _request_data = __zblib_request_create_thermostat_request_data(request_type,
2977 request_data, request_data_len);
2981 case ZBLIB_DRIVER_TYPE_ZCLBASIC_CONTROL: {
2982 _request_data = __zblib_request_create_zclbasic_control_request_data(request_type,
2983 request_data, request_data_len);
2987 case ZBLIB_DRIVER_TYPE_ZCLGLOBAL_CONTROL: {
2988 _request_data = __zblib_request_create_zclglobal_control_request_data(request_type,
2989 request_data, request_data_len);
2993 case ZBLIB_DRIVER_TYPE_ZCLIAS_CONTROL: {
2994 _request_data = __zblib_request_create_zclias_control_request_data(request_type,
2995 request_data, request_data_len);
2999 case ZBLIB_DRIVER_TYPE_ZCLIDENTIFY_CONTROL: {
3000 _request_data = __zblib_request_create_zclidentify_control_request_data(request_type,
3001 request_data, request_data_len);
3005 case ZBLIB_DRIVER_TYPE_ZCL_COLOR: {
3006 _request_data = __zblib_request_create_zcl_color_request_data(request_type,
3007 request_data, request_data_len);
3011 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
3012 _request_data = __zblib_request_create_zcl_group_request_data(request_type,
3013 request_data, request_data_len);
3017 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
3018 _request_data = __zblib_request_create_zcl_poll_control_request_data(request_type,
3019 request_data, request_data_len);
3023 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
3024 _request_data = __zblib_request_create_zcl_scene_request_data(request_type,
3025 request_data, request_data_len);
3029 case ZBLIB_DRIVER_TYPE_ZDODEV_CONTROL: {
3030 _request_data = __zblib_request_create_zdodev_control_request_data(request_type,
3031 request_data, request_data_len);
3035 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
3036 _request_data = __zblib_request_create_zdo_bind_request_data(request_type,
3037 request_data, request_data_len);
3041 case ZBLIB_DRIVER_TYPE_NONE: /* Fallthrough */
3043 Z_LOGE("Unhandled driver type: [%d]", driver_type);
3048 return _request_data;
3051 static void __zblib_request_free_alarm_request_data(ZigBeeRequest *request,
3057 ops_id = __zblib_request_get_ops_id(request_type);
3059 case ZBLIB_ALARM_OPS_GET_ALARM_COUNT: {
3060 ZigbeeAlarmGetAlarmCount_t *req = NULL;
3062 req = (ZigbeeAlarmGetAlarmCount_t *)request->request_data;
3069 case ZBLIB_ALARM_OPS_RESET_ALARM: {
3070 ZigbeeAlarmResetAlarm_t *req = NULL;
3072 req = (ZigbeeAlarmResetAlarm_t *)request->request_data;
3079 case ZBLIB_ALARM_OPS_RESET_ALL_ALARM: {
3080 ZigbeeAlarmResetAllAlarm_t *req = NULL;
3082 req = (ZigbeeAlarmResetAllAlarm_t *)request->request_data;
3089 case ZBLIB_ALARM_OPS_ALARM: {
3090 ZigbeeAlarmAlarm_t *req = NULL;
3092 req = (ZigbeeAlarmAlarm_t *)request->request_data;
3099 case ZBLIB_ALARM_OPS_RESET_ALARM_LOG: {
3100 ZigbeeAlarmResetAlarmLogs_t *req = NULL;
3102 req = (ZigbeeAlarmResetAlarmLogs_t *)request->request_data;
3109 case ZBLIB_ALARM_OPS_GET_ALARM: {
3118 static void __zblib_request_free_custom_request_data(ZigBeeRequest *request,
3124 ops_id = __zblib_request_get_ops_id(request_type);
3126 case ZBLIB_CUSTOM_OPS_APS_SEND: {
3127 ZigbeeCustomApsSend_t *req = NULL;
3129 req = (ZigbeeCustomApsSend_t *)request->request_data;
3136 case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
3137 ZigbeeCustomZclSend_t *req = NULL;
3139 req = (ZigbeeCustomZclSend_t *)request->request_data;
3146 case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
3147 ZigbeeCustomSendToLocal_t *req = NULL;
3149 req = (ZigbeeCustomSendToLocal_t *)request->request_data;
3161 static void __zblib_request_free_door_lock_request_data(ZigBeeRequest *request,
3167 ops_id = __zblib_request_get_ops_id(request_type);
3169 case ZBLIB_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
3170 ZigbeeDoorLockSubscriberLockEvent_t *req = NULL;
3172 req = (ZigbeeDoorLockSubscriberLockEvent_t *)request->request_data;
3179 case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
3180 ZigbeeDoorLockSetDoorLockPin_t *req = NULL;
3182 req = (ZigbeeDoorLockSetDoorLockPin_t *)request->request_data;
3189 case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
3190 ZigbeeDoorLockSetDoorLock_t *req = NULL;
3192 req = (ZigbeeDoorLockSetDoorLock_t *)request->request_data;
3199 case ZBLIB_DOOR_LOCK_OPS_GET_LOCK_STATE: {
3200 ZigbeeDoorLockGetDoorLock_t *req = NULL;
3202 req = (ZigbeeDoorLockGetDoorLock_t *)request->request_data;
3214 static void __zblib_request_free_fan_control_request_data(ZigBeeRequest *request,
3220 ops_id = __zblib_request_get_ops_id(request_type);
3222 case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE: {
3223 ZigbeeFanControlSetFanMode_t *req = NULL;
3225 req = (ZigbeeFanControlSetFanMode_t *)request->request_data;
3232 case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE: {
3233 ZigbeeFanControlGetFanMode_t *req = NULL;
3235 req = (ZigbeeFanControlGetFanMode_t *)request->request_data;
3242 case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
3243 ZigbeeFanControlSetFanModeSequence_t *req = NULL;
3245 req = (ZigbeeFanControlSetFanModeSequence_t *)request->request_data;
3252 case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
3253 ZigbeeFanControlGetFanModeSequence_t *req = NULL;
3255 req = (ZigbeeFanControlGetFanModeSequence_t *)request->request_data;
3267 static void __zblib_request_free_level_control_request_data(ZigBeeRequest *request,
3273 ops_id = __zblib_request_get_ops_id(request_type);
3275 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
3276 ZigbeeLevelControlMoveToLevel_t *req = NULL;
3278 req = (ZigbeeLevelControlMoveToLevel_t *)request->request_data;
3285 case ZBLIB_LEVEL_CONTROL_OPS_MOVE: {
3286 ZigbeeLevelControlMove_t *req = NULL;
3288 req = (ZigbeeLevelControlMove_t *)request->request_data;
3295 case ZBLIB_LEVEL_CONTROL_OPS_STEP: {
3296 ZigbeeLevelControlStep_t *req = NULL;
3298 req = (ZigbeeLevelControlStep_t *)request->request_data;
3305 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
3306 ZigbeeLevelControlMoveToLevelWithOnOff_t *req = NULL;
3308 req = (ZigbeeLevelControlMoveToLevelWithOnOff_t *)request->request_data;
3315 case ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
3316 ZigbeeLevelControlMoveOnOff_t *req = NULL;
3318 req = (ZigbeeLevelControlMoveOnOff_t *)request->request_data;
3325 case ZBLIB_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
3326 ZigbeeLevelControlStepWithOnOff_t *req = NULL;
3328 req = (ZigbeeLevelControlStepWithOnOff_t *)request->request_data;
3335 case ZBLIB_LEVEL_CONTROL_OPS_STOP: {
3336 ZigbeeLevelControlStop_t *req = NULL;
3338 req = (ZigbeeLevelControlStop_t *)request->request_data;
3350 static void __zblib_request_free_mfglib_control_request_data(ZigBeeRequest *request,
3356 ops_id = __zblib_request_get_ops_id(request_type);
3358 case ZBLIB_MFGLIB_CONTROL_OPS_START: {
3359 ZigbeeMfglibControlStart_t *req = NULL;
3361 req = (ZigbeeMfglibControlStart_t *)request->request_data;
3368 case ZBLIB_MFGLIB_CONTROL_OPS_END: {
3369 ZigbeeMfglibControlEnd_t *req = NULL;
3371 req = (ZigbeeMfglibControlEnd_t *)request->request_data;
3378 case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
3379 ZigbeeMfglibControlStartTone_t *req = NULL;
3381 req = (ZigbeeMfglibControlStartTone_t *)request->request_data;
3388 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
3389 ZigbeeMfglibControlStopTone_t *req = NULL;
3391 req = (ZigbeeMfglibControlStopTone_t *)request->request_data;
3398 case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
3399 ZigbeeMfglibControlStartStream_t *req = NULL;
3401 req = (ZigbeeMfglibControlStartStream_t *)request->request_data;
3408 case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
3409 ZigbeeMfglibControlStopStream_t *req = NULL;
3411 req = (ZigbeeMfglibControlStopStream_t *)request->request_data;
3418 case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
3419 ZigbeeMfglibControlSendPacket_t *req = NULL;
3421 req = (ZigbeeMfglibControlSendPacket_t *)request->request_data;
3428 case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
3429 ZigbeeMfglibControlSetChannel_t *req = NULL;
3431 req = (ZigbeeMfglibControlSetChannel_t *)request->request_data;
3438 case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
3439 ZigbeeMfglibControlGetChannel_t *req = NULL;
3441 req = (ZigbeeMfglibControlGetChannel_t *)request->request_data;
3448 case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
3449 ZigbeeMfglibControlSetPower_t *req = NULL;
3451 req = (ZigbeeMfglibControlSetPower_t *)request->request_data;
3458 case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
3459 ZigbeeMfglibControlGetPower_t *req = NULL;
3461 req = (ZigbeeMfglibControlGetPower_t *)request->request_data;
3468 case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
3469 ZigbeeMfglibControlSetSynOffset_t *req = NULL;
3471 req = (ZigbeeMfglibControlSetSynOffset_t *)request->request_data;
3478 case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
3479 ZigbeeMfglibControlGetSynOffset_t *req = NULL;
3481 req = (ZigbeeMfglibControlGetSynOffset_t *)request->request_data;
3488 case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
3489 ZigbeeMfglibControlRxStart_t *req = NULL;
3491 req = (ZigbeeMfglibControlRxStart_t *)request->request_data;
3498 case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
3499 ZigbeeMfglibControlRxStop_t *req = NULL;
3501 req = (ZigbeeMfglibControlRxStop_t *)request->request_data;
3508 case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
3509 ZigbeeMfglibControlRxVerify_t *req = NULL;
3511 req = (ZigbeeMfglibControlRxVerify_t *)request->request_data;
3518 case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
3519 ZigbeeMfglibControlGetRssi_t *req = NULL;
3521 req = (ZigbeeMfglibControlGetRssi_t *)request->request_data;
3533 static void __zblib_request_free_on_off_request_data(ZigBeeRequest *request,
3539 ops_id = __zblib_request_get_ops_id(request_type);
3541 case ZBLIB_ON_OFF_OPS_SET_ON_OFF: {
3542 ZigbeeOnOffSetOnOff_t *req = NULL;
3544 req = (ZigbeeOnOffSetOnOff_t *)request->request_data;
3551 case ZBLIB_ON_OFF_OPS_GET_ON_OFF_STATE: {
3552 ZigbeeOnOffGetOnOffState_t *req = NULL;
3554 req = (ZigbeeOnOffGetOnOffState_t *)request->request_data;
3566 static void __zblib_request_free_service_request_data(ZigBeeRequest *request,
3572 ops_id = __zblib_request_get_ops_id(request_type);
3574 case ZBLIB_SERVICE_OPS_ENABLE: {
3578 case ZBLIB_SERVICE_OPS_DISABLE: {
3582 case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
3586 case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
3590 case ZBLIB_SERVICE_OPS_COEX_START: {
3591 ZigbeeServiceCoexStart_t *req = NULL;
3593 req = (ZigbeeServiceCoexStart_t *)request->request_data;
3600 case ZBLIB_SERVICE_OPS_COEX_STOP: {
3604 case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
3608 case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
3612 case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
3613 ZigbeeServicePermitJoin_t *req = NULL;
3615 req = (ZigbeeServicePermitJoin_t *)request->request_data;
3622 case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
3623 ZigbeeServiceLeaveRequest_t *req = NULL;
3625 req = (ZigbeeServiceLeaveRequest_t *)request->request_data;
3632 case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
3636 case ZBLIB_SERVICE_OPS_GET_MAC: {
3640 case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
3644 case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
3645 ZigbeeServiceGetEndpointList_t *req = NULL;
3647 req = (ZigbeeServiceGetEndpointList_t *)request->request_data;
3654 case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
3655 ZigbeeServiceGetClusterList_t *req = NULL;
3657 req = (ZigbeeServiceGetClusterList_t *)request->request_data;
3664 case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
3665 ZigbeeServiceGetNodeType_t *req = NULL;
3667 req = (ZigbeeServiceGetNodeType_t *)request->request_data;
3679 static void __zblib_request_free_thermostat_request_data(ZigBeeRequest *request,
3685 ops_id = __zblib_request_get_ops_id(request_type);
3687 case ZBLIB_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
3688 ZigbeeThermostatGetLocalTemp_t *req = NULL;
3690 req = (ZigbeeThermostatGetLocalTemp_t *)request->request_data;
3697 case ZBLIB_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
3698 ZigbeeThermostatGetWeeklySchedule_t *req = NULL;
3700 req = (ZigbeeThermostatGetWeeklySchedule_t *)request->request_data;
3707 case ZBLIB_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
3708 ZigbeeThermostatSetWeeklySchedule_t *req = NULL;
3710 req = (ZigbeeThermostatSetWeeklySchedule_t *)request->request_data;
3717 case ZBLIB_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
3718 ZigbeeThermostatClearWeeklySchedule_t *req = NULL;
3720 req = (ZigbeeThermostatClearWeeklySchedule_t *)request->request_data;
3727 case ZBLIB_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
3728 ZigbeeThermostatSetpointRaiseLower_t *req = NULL;
3730 req = (ZigbeeThermostatSetpointRaiseLower_t *)request->request_data;
3742 static void __zblib_request_free_zclbasic_control_request_data(ZigBeeRequest *request,
3748 ops_id = __zblib_request_get_ops_id(request_type);
3750 case ZBLIB_ZCLBASIC_CONTROL_OPS_RESET_FACTORY_DEFAULT: {
3751 ZigbeeZclbasicControlResetFactoryDefault_t *req = NULL;
3753 req = (ZigbeeZclbasicControlResetFactoryDefault_t *)request->request_data;
3765 static void __zblib_request_free_zclglobal_control_request_data(ZigBeeRequest *request,
3771 ops_id = __zblib_request_get_ops_id(request_type);
3773 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
3774 ZigbeeZclglobalControlReadAttributesRequest_t *req = NULL;
3776 req = (ZigbeeZclglobalControlReadAttributesRequest_t *)request->request_data;
3778 g_free(req->attribute_id);
3784 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
3785 ZigbeeZclglobalControlWriteAttributesRequest_t *req = NULL;
3787 req = (ZigbeeZclglobalControlWriteAttributesRequest_t *)request->request_data;
3789 g_free(req->write_records);
3795 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
3796 ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *req = NULL;
3798 req = (ZigbeeZclglobalControlWriteAttributesUndividedRequest_t *)request->request_data;
3800 g_free(req->write_records);
3806 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
3807 ZigbeeZclglobalControlWriteAttributesNoResponse_t *req = NULL;
3809 req = (ZigbeeZclglobalControlWriteAttributesNoResponse_t *)request->request_data;
3811 g_free(req->write_records);
3817 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
3818 ZigbeeZclglobalControlWriteAttributesStructed_t *req = NULL;
3820 req = (ZigbeeZclglobalControlWriteAttributesStructed_t *)request->request_data;
3822 g_free(req->write_records);
3828 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
3829 ZigbeeZclglobalControlReadAttributesStructed_t *req = NULL;
3831 req = (ZigbeeZclglobalControlReadAttributesStructed_t *)request->request_data;
3833 g_free(req->read_records);
3839 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
3840 ZigbeeZclglobalControlConfigureReportingReq_t *req = NULL;
3842 req = (ZigbeeZclglobalControlConfigureReportingReq_t *)request->request_data;
3844 g_free(req->read_records);
3850 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
3851 ZigbeeZclglobalControlReadConfigureReporting_t *req = NULL;
3853 req = (ZigbeeZclglobalControlReadConfigureReporting_t *)request->request_data;
3855 g_free(req->read_records);
3861 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
3862 ZigbeeZclglobalControlDiscoverAttributes_t *req = NULL;
3864 req = (ZigbeeZclglobalControlDiscoverAttributes_t *)request->request_data;
3871 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
3872 ZigbeeZclglobalControlDiscoverAttributesExtended_t *req = NULL;
3874 req = (ZigbeeZclglobalControlDiscoverAttributesExtended_t *)request->request_data;
3881 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
3882 ZigbeeZclglobalControlDiscoverCommandsReceived_t *req = NULL;
3884 req = (ZigbeeZclglobalControlDiscoverCommandsReceived_t *)request->request_data;
3891 case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
3892 ZigbeeZclglobalControlDiscoverCommandsGenerated_t *req = NULL;
3894 req = (ZigbeeZclglobalControlDiscoverCommandsGenerated_t *)request->request_data;
3906 static void __zblib_request_free_zclias_control_request_data(ZigBeeRequest *request,
3912 ops_id = __zblib_request_get_ops_id(request_type);
3914 case ZBLIB_ZCLIAS_CONTROL_OPS_ENROLL_RESPONSE: {
3915 ZigbeeZcliasControlEnrolResponse_t *req = NULL;
3917 req = (ZigbeeZcliasControlEnrolResponse_t *)request->request_data;
3929 static void __zblib_request_free_zclidentify_control_request_data(ZigBeeRequest *request,
3935 ops_id = __zblib_request_get_ops_id(request_type);
3937 case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_IDENTIFY: {
3938 ZigbeeZclidentifyControlIdentify_t *req = NULL;
3940 req = (ZigbeeZclidentifyControlIdentify_t *)request->request_data;
3947 case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_QUERY: {
3948 ZigbeeZclidentifyControlQuery_t *req = NULL;
3950 req = (ZigbeeZclidentifyControlQuery_t *)request->request_data;
3962 static void __zblib_request_free_zcl_color_request_data(ZigBeeRequest *request,
3968 ops_id = __zblib_request_get_ops_id(request_type);
3970 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE: {
3971 ZigbeeZclColorMoveToHue_t *req = NULL;
3973 req = (ZigbeeZclColorMoveToHue_t *)request->request_data;
3980 case ZBLIB_ZCL_COLOR_OPS_MOVE_HUE: {
3981 ZigbeeZclColorMoveHue_t *req = NULL;
3983 req = (ZigbeeZclColorMoveHue_t *)request->request_data;
3990 case ZBLIB_ZCL_COLOR_OPS_STEP_HUE: {
3991 ZigbeeZclColorStepHue_t *req = NULL;
3993 req = (ZigbeeZclColorStepHue_t *)request->request_data;
4000 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_STAURATION: {
4001 ZigbeeZclColorMoveToSaturation_t *req = NULL;
4003 req = (ZigbeeZclColorMoveToSaturation_t *)request->request_data;
4010 case ZBLIB_ZCL_COLOR_OPS_MOVE_STAURATION: {
4011 ZigbeeZclColorMoveSaturation_t *req = NULL;
4013 req = (ZigbeeZclColorMoveSaturation_t *)request->request_data;
4020 case ZBLIB_ZCL_COLOR_OPS_STEP_STAURATION: {
4021 ZigbeeZclColorStepSaturation_t *req = NULL;
4023 req = (ZigbeeZclColorStepSaturation_t *)request->request_data;
4030 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE_AND_SATURATION: {
4031 ZigbeeZclColorMoveToHueAndSaturation_t *req = NULL;
4033 req = (ZigbeeZclColorMoveToHueAndSaturation_t *)request->request_data;
4040 case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_COLOR: {
4041 ZigbeeZclColorMoveToColor_t *req = NULL;
4043 req = (ZigbeeZclColorMoveToColor_t *)request->request_data;
4050 case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR: {
4051 ZigbeeZclColorMoveColor_t *req = NULL;
4053 req = (ZigbeeZclColorMoveColor_t *)request->request_data;
4060 case ZBLIB_ZCL_COLOR_OPS_STEP_COLOR: {
4061 ZigbeeZclColorStepColor_t *req = NULL;
4063 req = (ZigbeeZclColorStepColor_t *)request->request_data;
4070 case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR_TEMPERATURE: {
4071 ZigbeeZclColorMoveColorTemperature_t *req = NULL;
4073 req = (ZigbeeZclColorMoveColorTemperature_t *)request->request_data;
4085 static void __zblib_request_free_zcl_group_request_data(ZigBeeRequest *request,
4091 ops_id = __zblib_request_get_ops_id(request_type);
4093 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
4094 ZigbeeZclGroupAddGroup_t *req = NULL;
4096 req = (ZigbeeZclGroupAddGroup_t *)request->request_data;
4103 case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
4104 ZigbeeZclGroupViewGroup_t *req = NULL;
4106 req = (ZigbeeZclGroupViewGroup_t *)request->request_data;
4113 case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
4114 ZigbeeZclGroupGetGroupMembership_t *req = NULL;
4116 req = (ZigbeeZclGroupGetGroupMembership_t *)request->request_data;
4118 g_free(req->group_list);
4124 case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
4125 ZigbeeZclGroupRemoveGroup_t *req = NULL;
4127 req = (ZigbeeZclGroupRemoveGroup_t *)request->request_data;
4134 case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
4135 ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
4137 req = (ZigbeeZclGroupRemoveAllGroup_t *)request->request_data;
4144 case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
4145 ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
4147 req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request->request_data;
4159 static void __zblib_request_free_zcl_poll_control_request_data(ZigBeeRequest *request,
4165 ops_id = __zblib_request_get_ops_id(request_type);
4167 case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
4168 ZigbeeZclPollControlCheckInResponse_t *req = NULL;
4170 req = (ZigbeeZclPollControlCheckInResponse_t *)request->request_data;
4177 case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
4178 ZigbeeZclPollControlFastPollStop_t *req = NULL;
4180 req = (ZigbeeZclPollControlFastPollStop_t *)request->request_data;
4187 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
4188 ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
4190 req = (ZigbeeZclPollControlSetLongPollInterval_t *)request->request_data;
4197 case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
4198 ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
4200 req = (ZigbeeZclPollControlSetShortPollInterval_t *)request->request_data;
4212 static void __zblib_request_free_zcl_scene_request_data(ZigBeeRequest *request,
4218 ops_id = __zblib_request_get_ops_id(request_type);
4220 case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
4221 ZigbeeZclSceneAddScene_t *req = NULL;
4223 req = (ZigbeeZclSceneAddScene_t *)request->request_data;
4225 g_free(req->ext_field_set);
4231 case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
4232 ZigbeeZclSceneViewScene_t *req = NULL;
4234 req = (ZigbeeZclSceneViewScene_t *)request->request_data;
4241 case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
4242 ZigbeeZclSceneRemoveScene_t *req = NULL;
4244 req = (ZigbeeZclSceneRemoveScene_t *)request->request_data;
4251 case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
4252 ZigbeeZclSceneStoreScene_t *req = NULL;
4254 req = (ZigbeeZclSceneStoreScene_t *)request->request_data;
4261 case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
4262 ZigbeeZclSceneRecallScene_t *req = NULL;
4264 req = (ZigbeeZclSceneRecallScene_t *)request->request_data;
4271 case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
4272 ZigbeeZclSceneRemoveAllScene_t *req = NULL;
4274 req = (ZigbeeZclSceneRemoveAllScene_t *)request->request_data;
4281 case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
4282 ZigbeeZclSceneGetSceneMembership_t *req = NULL;
4284 req = (ZigbeeZclSceneGetSceneMembership_t *)request->request_data;
4296 static void __zblib_request_free_zdodev_control_request_data(ZigBeeRequest *request,
4302 ops_id = __zblib_request_get_ops_id(request_type);
4304 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_ADDR_REQ: {
4305 ZigbeeZdodevControlNwkAddrReq_t *req = NULL;
4307 req = (ZigbeeZdodevControlNwkAddrReq_t *)request->request_data;
4314 case ZBLIB_ZDODEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
4315 ZigbeeZdodevControlMatchedDescriptorReq_t *req = NULL;
4317 req = (ZigbeeZdodevControlMatchedDescriptorReq_t *)request->request_data;
4320 g_free(req->out_cl);
4326 case ZBLIB_ZDODEV_CONTROL_OPS_IEEE_ADDR_REQ: {
4327 ZigbeeZdodevControlIeeeAddrReq_t *req = NULL;
4329 req = (ZigbeeZdodevControlIeeeAddrReq_t *)request->request_data;
4336 case ZBLIB_ZDODEV_CONTROL_OPS_ACTIVE_EP_REQ: {
4337 ZigbeeZdodevControlActiveEpReq_t *req = NULL;
4339 req = (ZigbeeZdodevControlActiveEpReq_t *)request->request_data;
4346 case ZBLIB_ZDODEV_CONTROL_OPS_NODE_DESC_REQ: {
4347 ZigbeeZdodevControlNodeDescriptorReq_t *req = NULL;
4349 req = (ZigbeeZdodevControlNodeDescriptorReq_t *)request->request_data;
4356 case ZBLIB_ZDODEV_CONTROL_OPS_POWER_DESC_REQ: {
4357 ZigbeeZdodevControlPowerDescriptorReq_t *req = NULL;
4359 req = (ZigbeeZdodevControlPowerDescriptorReq_t *)request->request_data;
4366 case ZBLIB_ZDODEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
4367 ZigbeeZdodevControlComplexDescriptorReq_t *req = NULL;
4369 req = (ZigbeeZdodevControlComplexDescriptorReq_t *)request->request_data;
4376 case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_REQ: {
4377 ZigbeeZdodevControlUserDescriptorReq_t *req = NULL;
4379 req = (ZigbeeZdodevControlUserDescriptorReq_t *)request->request_data;
4386 case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_SET_REQ: {
4387 ZigbeeZdodevControlUserDescriptorSetReq_t *req = NULL;
4389 req = (ZigbeeZdodevControlUserDescriptorSetReq_t *)request->request_data;
4396 case ZBLIB_ZDODEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
4397 ZigbeeZdodevControlDeviceAnnounce_t *req = NULL;
4399 req = (ZigbeeZdodevControlDeviceAnnounce_t *)request->request_data;
4406 case ZBLIB_ZDODEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
4407 ZigbeeZdodevControlSimpleDescriptorReq_t *req = NULL;
4409 req = (ZigbeeZdodevControlSimpleDescriptorReq_t *)request->request_data;
4416 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_LQI_REQ: {
4417 ZigbeeZdodevControlMgmtLqiReq_t *req = NULL;
4419 req = (ZigbeeZdodevControlMgmtLqiReq_t *)request->request_data;
4426 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_RTG_REQ: {
4427 ZigbeeZdodevControlMgmtRtgReq_t *req = NULL;
4429 req = (ZigbeeZdodevControlMgmtRtgReq_t *)request->request_data;
4436 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_BIND_REQ: {
4437 ZigbeeZdodevControlMgmtBindReq_t *req = NULL;
4439 req = (ZigbeeZdodevControlMgmtBindReq_t *)request->request_data;
4446 case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
4447 ZigbeeZdodevControlMgmtPermitJoinReq_t *req = NULL;
4449 req = (ZigbeeZdodevControlMgmtPermitJoinReq_t *)request->request_data;
4456 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_UPDATE_REQ: {
4457 ZigbeeZdodevControlNwkUpdateReq_t *req = NULL;
4459 req = (ZigbeeZdodevControlNwkUpdateReq_t *)request->request_data;
4466 case ZBLIB_ZDODEV_CONTROL_OPS_NWK_DISC_REQ: {
4467 ZigbeeZdodevControlNwkDescriptorReq_t *req = NULL;
4469 req = (ZigbeeZdodevControlNwkDescriptorReq_t *)request->request_data;
4481 static void __zblib_request_free_zdo_bind_request_data(ZigBeeRequest *request,
4487 ops_id = __zblib_request_get_ops_id(request_type);
4489 case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
4490 ZigbeeZdoBindBindReq_t *req = NULL;
4492 req = (ZigbeeZdoBindBindReq_t *)request->request_data;
4499 case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
4500 ZigbeeZdoBindUnbindReq_t *req = NULL;
4502 req = (ZigbeeZdoBindUnbindReq_t *)request->request_data;
4514 static void __zblib_request_free_request_data(ZigBeeRequest *request)
4517 ZblibDriverType_e driver_type;
4519 zblib_check_null_ret("request", request);
4521 request_type = request->request_type;
4523 /* Fetch driver type */
4524 driver_type = __zblib_request_get_driver_type(request_type);
4525 switch (driver_type) {
4526 case ZBLIB_DRIVER_TYPE_ALARM: {
4527 __zblib_request_free_alarm_request_data(request, request_type);
4531 case ZBLIB_DRIVER_TYPE_CUSTOM: {
4532 __zblib_request_free_custom_request_data(request, request_type);
4536 case ZBLIB_DRIVER_TYPE_DOOR_LOCK: {
4537 __zblib_request_free_door_lock_request_data(request, request_type);
4541 case ZBLIB_DRIVER_TYPE_FAN_CONTROL: {
4542 __zblib_request_free_fan_control_request_data(request, request_type);
4546 case ZBLIB_DRIVER_TYPE_LEVEL_CONTROL: {
4547 __zblib_request_free_level_control_request_data(request, request_type);
4551 case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
4552 __zblib_request_free_mfglib_control_request_data(request, request_type);
4556 case ZBLIB_DRIVER_TYPE_ON_OFF: {
4557 __zblib_request_free_on_off_request_data(request, request_type);
4561 case ZBLIB_DRIVER_TYPE_SERVICE: {
4562 __zblib_request_free_service_request_data(request, request_type);
4566 case ZBLIB_DRIVER_TYPE_THERMOSTAT: {
4567 __zblib_request_free_thermostat_request_data(request, request_type);
4571 case ZBLIB_DRIVER_TYPE_ZCLBASIC_CONTROL: {
4572 __zblib_request_free_zclbasic_control_request_data(request, request_type);
4576 case ZBLIB_DRIVER_TYPE_ZCLGLOBAL_CONTROL: {
4577 __zblib_request_free_zclglobal_control_request_data(request, request_type);
4581 case ZBLIB_DRIVER_TYPE_ZCLIAS_CONTROL: {
4582 __zblib_request_free_zclias_control_request_data(request, request_type);
4586 case ZBLIB_DRIVER_TYPE_ZCLIDENTIFY_CONTROL: {
4587 __zblib_request_free_zclidentify_control_request_data(request, request_type);
4591 case ZBLIB_DRIVER_TYPE_ZCL_COLOR: {
4592 __zblib_request_free_zcl_color_request_data(request, request_type);
4596 case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
4597 __zblib_request_free_zcl_group_request_data(request, request_type);
4601 case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
4602 __zblib_request_free_zcl_poll_control_request_data(request, request_type);
4606 case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
4607 __zblib_request_free_zcl_scene_request_data(request, request_type);
4611 case ZBLIB_DRIVER_TYPE_ZDODEV_CONTROL: {
4612 __zblib_request_free_zdodev_control_request_data(request, request_type);
4616 case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
4617 __zblib_request_free_zdo_bind_request_data(request, request_type);
4621 case ZBLIB_DRIVER_TYPE_NONE: /* Fallthrough */
4623 Z_LOGE("Unhandled driver type: [%d]", driver_type);
4629 gint zblib_request_new(ZigBeeServiceInterface *service_interface,
4630 guint request_type, gpointer request_data, guint request_data_len)
4632 ZigBeeService *service = NULL;
4633 ZigBeeRequest *request = NULL;
4634 GHashTable *request_table = NULL;
4636 zblib_check_null_ret_error("service_interface", service_interface, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4638 service = zblib_service_interface_ref_service(service_interface);
4639 zblib_check_null_ret_error("service", service, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
4641 /* Allocate ZigBee request memory */
4642 request = g_malloc0(sizeof(ZigBeeRequest));
4644 /* Update request */
4645 request->service_interface = service_interface;
4646 request->ref_count = 1; /* Initialize reference count to '1' for new request */
4648 /* Update request data for specific request */
4649 request->request_data = __zblib_request_create_request_data(request_type,
4650 request_data, request_data_len);
4651 request->request_type = request_type;
4653 /* Generate request ID */
4654 request->request_id = zblib_service_generate_request_id(service);
4655 if (ZIGBEE_REQUEST_INVALID_REQUEST_ID == request->request_id) {
4656 Z_LOGE("zblib_service_genrate_request_id failed!");
4658 /* Free resources */
4661 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4664 /* Fetch request table from service */
4665 request_table = zblib_service_ref_request_hash_table(service);
4666 if (NULL == request_table) {
4667 Z_LOGE("zblib_service_ref_request_hash_table failed!");
4669 /* Free resources */
4672 return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
4675 /* Insert request to request table */
4676 g_hash_table_insert(request_table, (gpointer)(request->request_id), request);
4678 return request->request_id;
4681 void zblib_request_free(ZigBeeServiceInterface *service_interface,
4684 ZigBeeService *service = NULL;
4685 ZigBeeRequest *request = NULL;
4687 zblib_check_null_ret("service_interface", service_interface);
4689 service = zblib_service_interface_ref_service(service_interface);
4690 zblib_check_null_ret("service", service);
4692 request = __zblib_request_ref_request_by_request_id(service, request_id);
4693 zblib_check_null_ret("request", request);
4695 /* Free resources */
4696 __zblib_request_free_request_data(request);
4700 ZigBeeRequest *zblib_request_ref(ZigBeeRequest *request)
4702 zblib_check_null_ret_error("request", request, NULL);
4704 request->ref_count++;
4709 void zblib_request_unref(ZigBeeRequest *request)
4711 zblib_check_null_ret("request", request);
4713 request->ref_count--;
4714 if (0 == request->ref_count) {
4715 Z_LOGD("Reference count is ZERO!");
4717 /* Free 'request' */
4718 __zblib_request_free_request_data(request);
4723 guint zblib_request_ref_request_type(ZigBeeRequest *request)
4725 zblib_check_null_ret_error("request", request, 0);
4727 return request->request_type;
4730 ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeRequest *request)
4732 zblib_check_null_ret_error("request", request, NULL);
4734 return request->service_interface;
4737 gpointer zblib_request_ref_request_data(ZigBeeRequest *request)
4739 if (NULL == request) {
4740 Z_LOGE("request is NULL");
4744 return request->request_data;
4747 guint zblib_request_generate_request_type(ZblibDriverType_e driver_type,
4753 * request_type consists of driver_type and ops_id
4754 * request_type = driver_type | 0x00 | 0x00 | ops_id
4756 request_type = (driver_type << 24) | (ops_id);
4758 return request_type;
4761 gint zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
4764 return __zblib_request_ref_request_type_by_request_id(service, request_id);
4767 ZblibDriverType_e zblib_request_get_driver_type(guint request_type)
4769 return __zblib_request_get_driver_type(request_type);
4772 guint zblib_request_get_ops_id(guint request_type)
4774 return __zblib_request_get_ops_id(request_type);