#include <zblib_service_interface.h>
#include <zblib_driver.h>
-#include <zblib_driver_alarm.h>
#include <zblib_driver_custom.h>
-#include <zblib_driver_door_lock.h>
-#include <zblib_driver_fan_control.h>
-#include <zblib_driver_level_control.h>
#include <zblib_driver_mfglib_control.h>
-#include <zblib_driver_on_off.h>
#include <zblib_driver_service.h>
-#include <zblib_driver_thermostat.h>
-#include <zblib_driver_zclbasic_control.h>
-#include <zblib_driver_zclglobal_control.h>
-#include <zblib_driver_zclias_control.h>
-#include <zblib_driver_zclidentify_control.h>
-#include <zblib_driver_zcl_color.h>
+#include <zblib_driver_zcl_alarm.h>
+#include <zblib_driver_zcl_basic.h>
+#include <zblib_driver_zcl_color_control.h>
+#include <zblib_driver_zcl_door_lock.h>
+#include <zblib_driver_zcl_fan_control.h>
+#include <zblib_driver_zcl_global_control.h>
#include <zblib_driver_zcl_group.h>
+#include <zblib_driver_zcl_ias_zone.h>
+#include <zblib_driver_zcl_identify.h>
+#include <zblib_driver_zcl_level_control.h>
+#include <zblib_driver_zcl_on_off.h>
#include <zblib_driver_zcl_poll_control.h>
#include <zblib_driver_zcl_scene.h>
-#include <zblib_driver_zdodev_control.h>
+#include <zblib_driver_zcl_thermostat.h>
#include <zblib_driver_zdo_bind.h>
+#include <zblib_driver_zdo_dev_control.h>
/**< ZigBee Request object */
struct zblib_request_type {
guint ref_count; /* Reference count */
gpointer request_data; /**< Request data */
+ gpointer resp_cb; /**< Response callback */
+ gpointer resp_cb_data; /**< Response callback data */
ZigBeeServiceInterface *service_interface; /* Service interface */
};
{
ZblibDriverType_e driver_type;
- driver_type = ((request_type && 0xFF000000) >> 24);
+ driver_type = ((request_type & 0xFF000000) >> 24);
return driver_type;
}
{
guint ops_id;
- ops_id = (request_type && 0x000000FF);
+ ops_id = (request_type & 0x000000FF);
return ops_id;
}
-static gpointer __zblib_request_create_alarm_request_data(guint request_type,
+static ZigBeeRequest *__zblib_request_ref_request_by_by_request_id(ZigBeeService *service,
+ guint request_id)
+{
+ ZigBeeRequest *request = NULL;
+ GHashTable *request_table = NULL;
+
+ /* Fetch request table from service */
+ request_table = zblib_service_ref_request_hash_table(service);
+ if (NULL == request_table) {
+ Z_LOGE("zblib_service_ref_request_hash_table failed!");
+ return NULL;
+ }
+
+ /* Look-up requets_id in request hash table */
+ request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
+ if (NULL == request) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return NULL;
+ }
+
+ return request;
+}
+
+static gint __zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
+ guint request_id)
+{
+ ZigBeeRequest *request = NULL;
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
+ if (NULL == request) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return -1;
+ }
+
+ return (gint)(request->request_type);
+}
+
+static ZigBeeRequest *__zblib_request_ref_request_by_request_id(ZigBeeService *service,
+ guint request_id)
+{
+ ZigBeeRequest *request = NULL;
+ GHashTable *request_table = NULL;
+
+ /* Fetch request table from service */
+ request_table = zblib_service_ref_request_hash_table(service);
+ if (NULL == request_table) {
+ Z_LOGE("zblib_service_ref_request_hash_table failed!");
+ return NULL;
+ }
+
+ /* Look-up requets_id in request hash table */
+ request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
+ if (NULL == request_table) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return NULL;
+ }
+
+ return request;
+}
+
+static gpointer __zblib_request_create_zcl_alarm_request_data(guint request_type,
gpointer request_data, guint request_data_len)
{
gpointer alarm_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ALARM_OPS_GET_ALARM_COUNT: {
+ case ZBLIB_ZCL_ALARM_OPS_GET_ALARM_COUNT: {
+ ZigbeeZclAlarmGetAlarmCount_t *in_req;
+ ZigbeeZclAlarmGetAlarmCount_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmGetAlarmCount_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmGetAlarmCount_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmGetAlarmCount_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
- case ZBLIB_ALARM_OPS_RESET_ALARM: {
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM: {
+ ZigbeeZclAlarmResetAlarm_t *in_req;
+ ZigbeeZclAlarmResetAlarm_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmResetAlarm_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmResetAlarm_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmResetAlarm_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->alarm_code = in_req->alarm_code;
+ req->cluster_id = in_req->cluster_id;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
- case ZBLIB_ALARM_OPS_RESET_ALL_ALARM: {
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALL_ALARM: {
+ ZigbeeZclAlarmResetAllAlarm_t *in_req;
+ ZigbeeZclAlarmResetAllAlarm_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmResetAllAlarm_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmResetAllAlarm_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmResetAllAlarm_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
- case ZBLIB_ALARM_OPS_ALARM: {
+ case ZBLIB_ZCL_ALARM_OPS_ALARM: {
+ ZigbeeZclAlarmAlarm_t *in_req;
+ ZigbeeZclAlarmAlarm_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmAlarm_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmAlarm_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmAlarm_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ req->alarm_code = in_req->alarm_code;
+ req->cluster_id = in_req->cluster_id;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
- case ZBLIB_ALARM_OPS_RESET_ALARM_LOG: {
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM_LOG: {
+ ZigbeeZclAlarmResetAlarmLogs_t *in_req;
+ ZigbeeZclAlarmResetAlarmLogs_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmResetAlarmLogs_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmResetAlarmLogs_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmResetAlarmLogs_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
- case ZBLIB_ALARM_OPS_GET_ALARM: {
+ case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
+ ZigbeeZclAlarmGetAlarm_t *in_req;
+ ZigbeeZclAlarmGetAlarm_t *req = NULL;
+
+ in_req = (ZigbeeZclAlarmGetAlarm_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclAlarmGetAlarm_t *)
+ g_malloc0(sizeof(ZigbeeZclAlarmGetAlarm_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ alarm_request_data = (gpointer)req;
}
break;
gpointer custom_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_CUSTOM_OPS_APS_SEND: {
+ ZigbeeCustomApsSend_t *in_req;
+ ZigbeeCustomApsSend_t *req = NULL;
+
+ in_req = (ZigbeeCustomApsSend_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeCustomApsSend_t *)
+ g_malloc0(sizeof(ZigbeeCustomApsSend_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->aps_frame_ctrl = in_req->aps_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ req->cluster_id = in_req->cluster_id;
+ req->profile_id = in_req->profile_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->mfg_code = in_req->mfg_code;
+ memcpy(req->payload,
+ in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ }
+
+ custom_request_data = (gpointer)req;
}
break;
case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
+ ZigbeeCustomZclSend_t *in_req;
+ ZigbeeCustomZclSend_t *req = NULL;
+
+ in_req = (ZigbeeCustomZclSend_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeCustomZclSend_t *)
+ g_malloc0(sizeof(ZigbeeCustomZclSend_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->cmd_id = in_req->cmd_id;
+ memcpy(req->payload,
+ in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ }
+
+ custom_request_data = (gpointer)req;
}
break;
case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
+ ZigbeeCustomSendToLocal_t *in_req;
+ ZigbeeCustomSendToLocal_t *req = NULL;
+
+ in_req = (ZigbeeCustomSendToLocal_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeCustomSendToLocal_t *)
+ g_malloc0(sizeof(ZigbeeCustomSendToLocal_t));
+
+ /* Copy data */
+ memcpy(req->data,
+ in_req->data, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ }
+
+ custom_request_data = (gpointer)req;
}
break;
return custom_request_data;
}
-static gpointer __zblib_request_create_door_lock_request_data(guint request_type,
+static gpointer __zblib_request_create_zcl_door_lock_request_data(guint request_type,
gpointer request_data, guint request_data_len)
{
gpointer door_lock_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
+ ZigbeeZclDoorLockSubscriberLockEvent_t *in_req;
+ ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
+
+ in_req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)
+ g_malloc0(sizeof(ZigbeeZclDoorLockSubscriberLockEvent_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ door_lock_request_data = (gpointer)req;
}
break;
- case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
+ ZigbeeZclDoorLockSetDoorLockPin_t *in_req;
+ ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
+
+ in_req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclDoorLockSetDoorLockPin_t *)
+ g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLockPin_t));
+
+ /* Copy data */
+ req->uid = in_req->uid;
+ req->ustatus = in_req->ustatus;
+ req->utype = in_req->utype;
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ memcpy(req->pin,
+ in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
+ }
+
+ door_lock_request_data = (gpointer)req;
}
break;
- case ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
+ ZigbeeZclDoorLockSetDoorLock_t *in_req;
+ ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
+
+ in_req = (ZigbeeZclDoorLockSetDoorLock_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclDoorLockSetDoorLock_t *)
+ g_malloc0(sizeof(ZigbeeZclDoorLockSetDoorLock_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ memcpy(req->pin,
+ in_req->pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN);
+ req->lock_unlock_type = in_req->lock_unlock_type;
+ }
+
+ door_lock_request_data = (gpointer)req;
}
break;
- case ZBLIB_DOOR_LOCK_OPS_GET_LOCK_STATE: {
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
+ ZigbeeZclDoorLockGetDoorLock_t *in_req;
+ ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
+
+ in_req = (ZigbeeZclDoorLockGetDoorLock_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclDoorLockGetDoorLock_t *)
+ g_malloc0(sizeof(ZigbeeZclDoorLockGetDoorLock_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ door_lock_request_data = (gpointer)req;
}
break;
return door_lock_request_data;
}
-static gpointer __zblib_request_create_fan_control_request_data(guint request_type,
+static gpointer __zblib_request_create_zcl_fan_control_request_data(guint request_type,
gpointer request_data, guint request_data_len)
{
gpointer fan_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE: {
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
+ ZigbeeZclFanControlSetFanMode_t *in_req;
+ ZigbeeZclFanControlSetFanMode_t *req = NULL;
+
+ in_req = (ZigbeeZclFanControlSetFanMode_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclFanControlSetFanMode_t *)
+ g_malloc0(sizeof(ZigbeeZclFanControlSetFanMode_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ fan_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE: {
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
+ ZigbeeZclFanControlGetFanMode_t *in_req;
+ ZigbeeZclFanControlGetFanMode_t *req = NULL;
+
+ in_req = (ZigbeeZclFanControlGetFanMode_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclFanControlGetFanMode_t *)
+ g_malloc0(sizeof(ZigbeeZclFanControlGetFanMode_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ fan_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
+ ZigbeeZclFanControlSetFanModeSequence_t *in_req;
+ ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
+
+ in_req = (ZigbeeZclFanControlSetFanModeSequence_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclFanControlSetFanModeSequence_t *)
+ g_malloc0(sizeof(ZigbeeZclFanControlSetFanModeSequence_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ fan_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
+ ZigbeeZclFanControlGetFanModeSequence_t *in_req;
+ ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
+
+ in_req = (ZigbeeZclFanControlGetFanModeSequence_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclFanControlGetFanModeSequence_t *)
+ g_malloc0(sizeof(ZigbeeZclFanControlGetFanModeSequence_t));
+
+ /* Copy data */
+ memcpy(req->eui64,
+ in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ fan_control_request_data = (gpointer)req;
}
break;
return fan_control_request_data;
}
-static gpointer __zblib_request_create_level_control_request_data(guint request_type,
+static gpointer __zblib_request_create_zcl_level_control_request_data(guint request_type,
gpointer request_data, guint request_data_len)
{
gpointer level_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
+ ZigbeeZclLevelControlMoveToLevel_t *in_req;
+ ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlMoveToLevel_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlMoveToLevel_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevel_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->level = in_req->level;
+ req->transition = in_req->transition;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_MOVE: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
+ ZigbeeZclLevelControlMove_t *in_req;
+ ZigbeeZclLevelControlMove_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlMove_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlMove_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlMove_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->move_mode = in_req->move_mode;
+ req->rate = in_req->rate;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_STEP: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
+ ZigbeeZclLevelControlStep_t *in_req;
+ ZigbeeZclLevelControlStep_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlStep_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlStep_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlStep_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->step_mode = in_req->step_mode;
+ req->move_mode = in_req->move_mode;
+ req->transition_time = in_req->transition_time;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
+ ZigbeeZclLevelControlMoveToLevelWithOnOff_t *in_req;
+ ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlMoveToLevelWithOnOff_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->level = in_req->level;
+ req->transition = in_req->transition;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
+ ZigbeeZclLevelControlMoveWithOnOff_t *in_req;
+ ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlMoveWithOnOff_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlMoveWithOnOff_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->move_mode = in_req->move_mode;
+ req->rate = in_req->rate;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
+ ZigbeeZclLevelControlStepWithOnOff_t *in_req;
+ ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlStepWithOnOff_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlStepWithOnOff_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlStepWithOnOff_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->step_mode = in_req->step_mode;
+ req->move_mode = in_req->move_mode;
+ req->transition_time = in_req->transition_time;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
- case ZBLIB_LEVEL_CONTROL_OPS_STOP: {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
+ ZigbeeZclLevelControlStop_t *in_req;
+ ZigbeeZclLevelControlStop_t *req = NULL;
+
+ in_req = (ZigbeeZclLevelControlStop_t *)request_data;
+ if (in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclLevelControlStop_t *)
+ g_malloc0(sizeof(ZigbeeZclLevelControlStop_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ level_control_request_data = (gpointer)req;
}
break;
gpointer mfglib_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_MFGLIB_CONTROL_OPS_START: {
+ ZigbeeMfglibControlStart_t *in_req;
+ ZigbeeMfglibControlStart_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlStart_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlStart_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlStart_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->mfglib_start = in_req->mfglib_start;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_END: {
+ ZigbeeMfglibControlEnd_t *in_req;
+ ZigbeeMfglibControlEnd_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlEnd_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlEnd_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlEnd_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
+ ZigbeeMfglibControlStartTone_t *in_req;
+ ZigbeeMfglibControlStartTone_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlStartTone_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlStartTone_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlStartTone_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
+ ZigbeeMfglibControlStopTone_t *in_req;
+ ZigbeeMfglibControlStopTone_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlStopTone_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlStopTone_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlStopTone_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
+ ZigbeeMfglibControlStartStream_t *in_req;
+ ZigbeeMfglibControlStartStream_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlStartStream_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlStartStream_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlStartStream_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
+ ZigbeeMfglibControlStopStream_t *in_req;
+ ZigbeeMfglibControlStopStream_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlStopStream_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlStopStream_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlStopStream_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
+ ZigbeeMfglibControlSendPacket_t *in_req;
+ ZigbeeMfglibControlSendPacket_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlSendPacket_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlSendPacket_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlSendPacket_t));
+
+ /* Copy data */
+ memcpy(req->packet_content,
+ in_req->packet_content,
+ ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
+ req->packet_length = in_req->packet_length;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
+ ZigbeeMfglibControlSetChannel_t *in_req;
+ ZigbeeMfglibControlSetChannel_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlSetChannel_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlSetChannel_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlSetChannel_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->channel = in_req->channel;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
+ ZigbeeMfglibControlGetChannel_t *in_req;
+ ZigbeeMfglibControlGetChannel_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlGetChannel_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlGetChannel_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlGetChannel_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
+ ZigbeeMfglibControlSetPower_t *in_req;
+ ZigbeeMfglibControlSetPower_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlSetPower_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlSetPower_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlSetPower_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->tx_power_mode = in_req->tx_power_mode;
+ req->power = in_req->power;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
+ ZigbeeMfglibControlGetPower_t *in_req;
+ ZigbeeMfglibControlGetPower_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlGetPower_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlGetPower_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlGetPower_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
+ ZigbeeMfglibControlSetSynOffset_t *in_req;
+ ZigbeeMfglibControlSetSynOffset_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlSetSynOffset_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlSetSynOffset_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlSetSynOffset_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->channel = in_req->channel;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
+ ZigbeeMfglibControlGetSynOffset_t *in_req;
+ ZigbeeMfglibControlGetSynOffset_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlGetSynOffset_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlGetSynOffset_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlGetSynOffset_t));
+
+ /* Copy data */
+ memcpy(req->packet,
+ in_req->packet,
+ ZIGBEE_MFGLIB_CONTROL_PACKET_CONTENT_LEN);
+ req->packet_length = in_req->packet_length;
+ req->link_quality = in_req->link_quality;
+ req->rssi = in_req->rssi;
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
+ ZigbeeMfglibControlRxStart_t *in_req;
+ ZigbeeMfglibControlRxStart_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlRxStart_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlRxStart_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlRxStart_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
+ ZigbeeMfglibControlRxStop_t *in_req;
+ ZigbeeMfglibControlRxStop_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlRxStop_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlRxStop_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlRxStop_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
+ ZigbeeMfglibControlRxVerify_t *in_req;
+ ZigbeeMfglibControlRxVerify_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlRxVerify_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlRxVerify_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlRxVerify_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
+ ZigbeeMfglibControlGetRssi_t *in_req;
+ ZigbeeMfglibControlGetRssi_t *req = NULL;
+
+ in_req = (ZigbeeMfglibControlGetRssi_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeMfglibControlGetRssi_t *)
+ g_malloc0(sizeof(ZigbeeMfglibControlGetRssi_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ mfglib_control_request_data = (gpointer)req;
}
break;
return mfglib_control_request_data;
}
-static gpointer __zblib_request_create_on_off_request_data(guint request_type,
+static gpointer __zblib_request_create_zcl_on_off_request_data(guint request_type,
gpointer request_data, guint request_data_len)
{
gpointer on_off_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ON_OFF_OPS_SET_ON_OFF: {
+ case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
+ ZigbeeZclOnOffSetOnOff_t *in_req;
+ ZigbeeZclOnOffSetOnOff_t *req = NULL;
+
+ in_req = (ZigbeeZclOnOffSetOnOff_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclOnOffSetOnOff_t *)
+ g_malloc0(sizeof(ZigbeeZclOnOffSetOnOff_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->on_off_type = in_req->on_off_type;
+ }
+
+ on_off_request_data = (gpointer)req;
}
break;
- case ZBLIB_ON_OFF_OPS_GET_ON_OFF_STATE: {
+ case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
+ ZigbeeZclOnOffGetOnOffState_t *in_req;
+ ZigbeeZclOnOffGetOnOffState_t *req = NULL;
+
+ in_req = (ZigbeeZclOnOffGetOnOffState_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclOnOffGetOnOffState_t *)
+ g_malloc0(sizeof(ZigbeeZclOnOffGetOnOffState_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ on_off_request_data = (gpointer)req;
}
break;
gpointer service_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
NOT_USED(request_data_len);
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_SERVICE_OPS_ENABLE: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_DISABLE: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_COEX_START: {
+ ZigbeeServiceCoexStart_t *in_req;
+ ZigbeeServiceCoexStart_t *req = NULL;
+
+ in_req = (ZigbeeServiceCoexStart_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServiceCoexStart_t *)
+ g_malloc0(sizeof(ZigbeeServiceCoexStart_t));
+
+ /* Copy data */
+ req->channel = in_req->channel;
+ }
+
+ service_request_data = (gpointer)req;
}
break;
case ZBLIB_SERVICE_OPS_COEX_STOP: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
+ ZigbeeServicePermitJoin_t *in_req;
+ ZigbeeServicePermitJoin_t *req = NULL;
+
+ in_req = (ZigbeeServicePermitJoin_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServicePermitJoin_t *)
+ g_malloc0(sizeof(ZigbeeServicePermitJoin_t));
+
+ /* Copy data */
+ req->permit_join = in_req->permit_join;
+ req->duration = in_req->duration;
+ }
+
+ service_request_data = (gpointer)req;
}
break;
case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
+ ZigbeeServiceLeaveRequest_t *in_req;
+ ZigbeeServiceLeaveRequest_t *req = NULL;
+
+ in_req = (ZigbeeServiceLeaveRequest_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServiceLeaveRequest_t *)
+ g_malloc0(sizeof(ZigbeeServiceLeaveRequest_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->remove_child = in_req->remove_child;
+ req->rejoin = in_req->rejoin;
+ }
+
+ service_request_data = (gpointer)req;
}
break;
case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_GET_MAC: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
+ service_request_data = NULL;
}
break;
case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
+ ZigbeeServiceGetEndpointList_t *in_req;
+ ZigbeeServiceGetEndpointList_t *req = NULL;
+
+ in_req = (ZigbeeServiceGetEndpointList_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServiceGetEndpointList_t *)
+ g_malloc0(sizeof(ZigbeeServiceGetEndpointList_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ service_request_data = (gpointer)req;
}
break;
case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
+ ZigbeeServiceGetClusterList_t *in_req;
+ ZigbeeServiceGetClusterList_t *req = NULL;
+
+ in_req = (ZigbeeServiceGetClusterList_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServiceGetClusterList_t *)
+ g_malloc0(sizeof(ZigbeeServiceGetClusterList_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ service_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
+ ZigbeeServiceGetNodeType_t *in_req;
+ ZigbeeServiceGetNodeType_t *req = NULL;
+
+ in_req = (ZigbeeServiceGetNodeType_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeServiceGetNodeType_t *)
+ g_malloc0(sizeof(ZigbeeServiceGetNodeType_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ }
+
+ service_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ Z_LOGE("Unexpected operation [%x]", ops_id);
+ break;
+ }
+
+ return service_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_thermostat_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer thermostat_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
+ ZigbeeZclThermostatGetLocalTemp_t *in_req;
+ ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
+
+ in_req = (ZigbeeZclThermostatGetLocalTemp_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclThermostatGetLocalTemp_t *)
+ g_malloc0(sizeof(ZigbeeZclThermostatGetLocalTemp_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ thermostat_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatGetWeeklySchedule_t *in_req;
+ ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
+
+ in_req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclThermostatGetWeeklySchedule_t *)
+ g_malloc0(sizeof(ZigbeeZclThermostatGetWeeklySchedule_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ req->num_of_days = in_req->num_of_days;
+ req->mode = in_req->mode;
+ }
+
+ thermostat_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatSetWeeklySchedule_t *in_req;
+ ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
+
+ in_req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclThermostatSetWeeklySchedule_t *)
+ g_malloc0(sizeof(ZigbeeZclThermostatSetWeeklySchedule_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ req->no_of_transitions = in_req->no_of_transitions;
+ req->num_of_days = in_req->num_of_days;
+ req->mode = in_req->mode;
+ memcpy(req->payload,
+ in_req->payload, ZIGBEE_THERMSTAT_PAYLOAD_MAX_LEN);
+ req->payload_len = in_req->payload_len;
+ }
+
+ thermostat_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatClearWeeklySchedule_t *in_req;
+ ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
+
+ in_req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclThermostatClearWeeklySchedule_t *)
+ g_malloc0(sizeof(ZigbeeZclThermostatClearWeeklySchedule_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->endpoint = in_req->endpoint;
+ }
+
+ thermostat_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
+ ZigbeeZclThermostatSetpointRaiseLower_t *in_req;
+ ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
+
+ in_req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclThermostatSetpointRaiseLower_t *)
+ g_malloc0(sizeof(ZigbeeZclThermostatSetpointRaiseLower_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ req->mode = in_req->mode;
+ req->amount = in_req->amount;
+ }
+
+ thermostat_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return thermostat_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_basic_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zclbasic_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
+ ZigbeeZclBasicResetFactoryDefault_t *in_req;
+ ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
+
+ in_req = (ZigbeeZclBasicResetFactoryDefault_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclBasicResetFactoryDefault_t *)
+ g_malloc0(sizeof(ZigbeeZclBasicResetFactoryDefault_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclbasic_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zclbasic_control_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_global_control_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zclglobal_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
+ ZigbeeZclGlobalControlReadAttributesRequest_t *in_req;
+ ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesRequest_t));
+
+ /* Copy data */
+ req->attribute_id = g_strdup(in_req->attribute_id);
+ req->attribute_id_len = in_req->attribute_id_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
+ ZigbeeZclGlobalControlWriteAttributesRequest_t *in_req;
+ ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesRequest_t));
+
+ /* Copy data */
+ req->write_records = g_strdup(in_req->write_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
+ ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *in_req;
+ ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t));
+
+ /* Copy data */
+ req->write_records = g_strdup(in_req->write_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
+ ZigbeeZclGlobalControlWriteAttributesNoResponse_t *in_req;
+ ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesNoResponse_t));
+
+ /* Copy data */
+ req->write_records = g_strdup(in_req->write_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
+ ZigbeeZclGlobalControlWriteAttributesStructed_t *in_req;
+ ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesStructed_t));
+
+ /* Copy data */
+ req->write_records = g_strdup(in_req->write_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
+ ZigbeeZclGlobalControlReadAttributesStructed_t *in_req;
+ ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesStructed_t));
+
+ /* Copy data */
+ req->read_records = g_strdup(in_req->read_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
+ ZigbeeZclGlobalControlConfigureReportingReq_t *in_req;
+ ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlConfigureReportingReq_t));
+
+ /* Copy data */
+ req->read_records = g_strdup(in_req->read_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
+ ZigbeeZclGlobalControlReadConfigureReporting_t *in_req;
+ ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlReadConfigureReporting_t));
+
+ /* Copy data */
+ req->read_records = g_strdup(in_req->read_records);
+ req->records_len = in_req->records_len;
+ req->node_id = in_req->node_id;
+ req->cluster_id = in_req->cluster_id;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->src_ep = in_req->src_ep;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
+ ZigbeeZclGlobalControlDiscoverAttributes_t *in_req;
+ ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributes_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->cluster_id = in_req->cluster_id;
+ req->start_attribute = in_req->start_attribute;
+ req->max = in_req->max;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
+ ZigbeeZclGlobalControlDiscoverAttributesExtended_t *in_req;
+ ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverAttributesExtended_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->cluster_id = in_req->cluster_id;
+ req->start_attribute = in_req->start_attribute;
+ req->max = in_req->max;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
+ ZigbeeZclGlobalControlDiscoverCommandsReceived_t *in_req;
+ ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsReceived_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->cluster_id = in_req->cluster_id;
+ req->start_attribute = in_req->start_attribute;
+ req->max = in_req->max;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
+ ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *in_req;
+ ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
+
+ in_req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)
+ g_malloc0(sizeof(ZigbeeZclGlobalControlDiscoverCommandsGenerated_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
+ req->cluster_id = in_req->cluster_id;
+ req->start_attribute = in_req->start_attribute;
+ req->max = in_req->max;
+ }
+
+ zclglobal_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zclglobal_control_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_ias_zone_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zclias_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
+ ZigbeeZclIasZoneEnrollResponse_t *in_req;
+ ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
+
+ in_req = (ZigbeeZclIasZoneEnrollResponse_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclIasZoneEnrollResponse_t *)
+ g_malloc0(sizeof(ZigbeeZclIasZoneEnrollResponse_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->enroll_code = in_req->enroll_code;
+ req->zone_id = in_req->zone_id;
+ }
+
+ zclias_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zclias_control_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_identify_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zclidentify_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
+ ZigbeeZclIdentifyIdentify_t *in_req;
+ ZigbeeZclIdentifyIdentify_t *req = NULL;
+
+ in_req = (ZigbeeZclIdentifyIdentify_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclIdentifyIdentify_t *)
+ g_malloc0(sizeof(ZigbeeZclIdentifyIdentify_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->identify_time = in_req->identify_time;
+ }
+
+ zclidentify_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
+ ZigbeeZclIdentifyQuery_t *in_req;
+ ZigbeeZclIdentifyQuery_t *req = NULL;
+
+ in_req = (ZigbeeZclIdentifyQuery_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclIdentifyQuery_t *)
+ g_malloc0(sizeof(ZigbeeZclIdentifyQuery_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zclidentify_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zclidentify_control_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_color_control_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zcl_color_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
+ ZigbeeZclColorControlMoveToHue_t *in_req;
+ ZigbeeZclColorControlMoveToHue_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveToHue_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveToHue_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveToHue_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->hue = in_req->hue;
+ req->direction = in_req->direction;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
+ ZigbeeZclColorControlMoveHue_t *in_req;
+ ZigbeeZclColorControlMoveHue_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveHue_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveHue_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveHue_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->move_mode = in_req->move_mode;
+ req->rate = in_req->rate;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
+ ZigbeeZclColorControlStepHue_t *in_req;
+ ZigbeeZclColorControlStepHue_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlStepHue_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlStepHue_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlStepHue_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->step_mode = in_req->step_mode;
+ req->step_size = in_req->step_size;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
+ ZigbeeZclColorControlMoveToSaturation_t *in_req;
+ ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveToSaturation_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveToSaturation_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveToSaturation_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->saturation = in_req->saturation;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
+ ZigbeeZclColorControlMoveSaturation_t *in_req;
+ ZigbeeZclColorControlMoveSaturation_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveSaturation_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveSaturation_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveSaturation_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->move_mode = in_req->move_mode;
+ req->rate = in_req->rate;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
+ ZigbeeZclColorControlStepSaturation_t *in_req;
+ ZigbeeZclColorControlStepSaturation_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlStepSaturation_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlStepSaturation_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlStepSaturation_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->step_mode = in_req->step_mode;
+ req->step_size = in_req->step_size;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
+ ZigbeeZclColorControlMoveToHueAndSaturation_t *in_req;
+ ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveToHueAndSaturation_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->hue = in_req->hue;
+ req->saturation = in_req->saturation;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
+ ZigbeeZclColorControlMoveToColor_t *in_req;
+ ZigbeeZclColorControlMoveToColor_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveToColor_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveToColor_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveToColor_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->color_x = in_req->color_x;
+ req->color_y = in_req->color_y;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
+ ZigbeeZclColorControlMoveColor_t *in_req;
+ ZigbeeZclColorControlMoveColor_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveColor_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveColor_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveColor_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->rate_x = in_req->rate_x;
+ req->rate_y = in_req->rate_y;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
+ ZigbeeZclColorControlStepColor_t *in_req;
+ ZigbeeZclColorControlStepColor_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlStepColor_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlStepColor_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlStepColor_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->step_x = in_req->step_x;
+ req->step_y = in_req->step_y;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
+ ZigbeeZclColorControlMoveColorTemperature_t *in_req;
+ ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
+
+ in_req = (ZigbeeZclColorControlMoveColorTemperature_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclColorControlMoveColorTemperature_t *)
+ g_malloc0(sizeof(ZigbeeZclColorControlMoveColorTemperature_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->color_temperature = in_req->color_temperature;
+ req->transition_time = in_req->transition_time;
+ }
+
+ zcl_color_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zcl_color_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_group_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zcl_group_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
+ ZigbeeZclGroupAddGroup_t *in_req;
+ ZigbeeZclGroupAddGroup_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupAddGroup_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupAddGroup_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupAddGroup_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ g_strlcpy(req->group_name,
+ in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
+ ZigbeeZclGroupViewGroup_t *in_req;
+ ZigbeeZclGroupViewGroup_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupViewGroup_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupViewGroup_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupViewGroup_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
+ ZigbeeZclGroupGetGroupMembership_t *in_req;
+ ZigbeeZclGroupGetGroupMembership_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupGetGroupMembership_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupGetGroupMembership_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupGetGroupMembership_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_count = in_req->group_count;
+ req->group_list = (gshort *)g_memdup(in_req->group_list,
+ in_req->group_count);
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
+ ZigbeeZclGroupRemoveGroup_t *in_req;
+ ZigbeeZclGroupRemoveGroup_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupRemoveGroup_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupRemoveGroup_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupRemoveGroup_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
+ ZigbeeZclGroupRemoveAllGroup_t *in_req;
+ ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupRemoveAllGroup_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupRemoveAllGroup_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupRemoveAllGroup_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
+ ZigbeeZclGroupAddGroupIfIdentifying_t *in_req;
+ ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
+
+ in_req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)
+ g_malloc0(sizeof(ZigbeeZclGroupAddGroupIfIdentifying_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ g_strlcpy(req->group_name,
+ in_req->group_name, ZIGBEE_ZCL_GROUP_NAME_MAX_LEN + 1);
+ }
+
+ zcl_group_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zcl_group_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_poll_control_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zcl_poll_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
+ ZigbeeZclPollControlCheckInResponse_t *in_req;
+ ZigbeeZclPollControlCheckInResponse_t *req = NULL;
+
+ in_req = (ZigbeeZclPollControlCheckInResponse_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclPollControlCheckInResponse_t *)
+ g_malloc0(sizeof(ZigbeeZclPollControlCheckInResponse_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->start_fast_polling = in_req->start_fast_polling;
+ req->fast_poll_timeout = in_req->fast_poll_timeout;
+ }
+
+ zcl_poll_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
+ ZigbeeZclPollControlFastPollStop_t *in_req;
+ ZigbeeZclPollControlFastPollStop_t *req = NULL;
+
+ in_req = (ZigbeeZclPollControlFastPollStop_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclPollControlFastPollStop_t *)
+ g_malloc0(sizeof(ZigbeeZclPollControlFastPollStop_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ }
+
+ zcl_poll_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
+ ZigbeeZclPollControlSetLongPollInterval_t *in_req;
+ ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
+
+ in_req = (ZigbeeZclPollControlSetLongPollInterval_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclPollControlSetLongPollInterval_t *)
+ g_malloc0(sizeof(ZigbeeZclPollControlSetLongPollInterval_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->new_long_poll_interval = in_req->new_long_poll_interval;
+ }
+
+ zcl_poll_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
+ ZigbeeZclPollControlSetShortPollInterval_t *in_req;
+ ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
+
+ in_req = (ZigbeeZclPollControlSetShortPollInterval_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclPollControlSetShortPollInterval_t *)
+ g_malloc0(sizeof(ZigbeeZclPollControlSetShortPollInterval_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->new_short_poll_interval = in_req->new_short_poll_interval;
+ }
+
+ zcl_poll_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zcl_poll_control_request_data;
+}
+
+static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zcl_scene_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
+ ZigbeeZclSceneAddScene_t *in_req;
+ ZigbeeZclSceneAddScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneAddScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneAddScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneAddScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ req->scene_id = in_req->scene_id;
+ req->transition_time = in_req->transition_time;
+ g_strlcpy(req->scene_name,
+ in_req->scene_name, ZIGBEE_ZCL_SCENE_NAME_MAX_LEN + 1);
+ req->ext_field_set_len = in_req->ext_field_set_len;
+ req->ext_field_set = (gshort *)g_memdup(in_req->ext_field_set,
+ in_req->ext_field_set_len);
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
+ ZigbeeZclSceneViewScene_t *in_req;
+ ZigbeeZclSceneViewScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneViewScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneViewScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneViewScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ req->scene_id = in_req->scene_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
+ ZigbeeZclSceneRemoveScene_t *in_req;
+ ZigbeeZclSceneRemoveScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneRemoveScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneRemoveScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneRemoveScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ req->scene_id = in_req->scene_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
+ ZigbeeZclSceneStoreScene_t *in_req;
+ ZigbeeZclSceneStoreScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneStoreScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneStoreScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneStoreScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ req->scene_id = in_req->scene_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
+ ZigbeeZclSceneRecallScene_t *in_req;
+ ZigbeeZclSceneRecallScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneRecallScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneRecallScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneRecallScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ req->scene_id = in_req->scene_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
+ ZigbeeZclSceneRemoveAllScene_t *in_req;
+ ZigbeeZclSceneRemoveAllScene_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneRemoveAllScene_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneRemoveAllScene_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneRemoveAllScene_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
+ ZigbeeZclSceneGetSceneMembership_t *in_req;
+ ZigbeeZclSceneGetSceneMembership_t *req = NULL;
+
+ in_req = (ZigbeeZclSceneGetSceneMembership_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZclSceneGetSceneMembership_t *)
+ g_malloc0(sizeof(ZigbeeZclSceneGetSceneMembership_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->dest_ep = in_req->dest_ep;
+ req->group_id = in_req->group_id;
+ }
+
+ zcl_scene_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zcl_scene_request_data;
+}
+
+static gpointer __zblib_request_create_zdo_dev_control_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zdodev_control_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
+ ZigbeeZdoDevControlNwkAddrReq_t *in_req;
+ ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlNwkAddrReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlNwkAddrReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlNwkAddrReq_t));
+
+ /* Copy data */
+ memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
+ req->request_type = in_req->request_type;
+ req->start_index = in_req->start_index;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
+ ZigbeeZdoDevControlMatchedDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMatchedDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->profile_id = in_req->profile_id;
+ req->num_in_cl = in_req->num_in_cl;
+ req->in_cl = g_strdup(in_req->in_cl);
+ req->num_out_cl = in_req->num_out_cl;
+ req->out_cl = g_strdup(in_req->out_cl);
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
+ ZigbeeZdoDevControlIeeeAddrReq_t *in_req;
+ ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlIeeeAddrReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlIeeeAddrReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
+ ZigbeeZdoDevControlActiveEpReq_t *in_req;
+ ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlActiveEpReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlActiveEpReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlActiveEpReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
+ ZigbeeZdoDevControlNodeDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlNodeDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
+ ZigbeeZdoDevControlPowerDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlPowerDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
+ ZigbeeZdoDevControlComplexDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlComplexDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
+ ZigbeeZdoDevControlUserDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlUserDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
+ ZigbeeZdoDevControlUserDescriptorSetReq_t *in_req;
+ ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlUserDescriptorSetReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->user_descriptor_len = in_req->user_descriptor_len;
+ memcpy(req->user_descriptor,
+ in_req->user_descriptor, in_req->user_descriptor_len);
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
+ ZigbeeZdoDevControlDeviceAnnounce_t *in_req;
+ ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlDeviceAnnounce_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlDeviceAnnounce_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ memcpy(req->mac_addr, in_req->mac_addr, ZIGBEE_EUI64_SIZE);
+ req->capability = in_req->capability;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
+ ZigbeeZdoDevControlSimpleDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlSimpleDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->endpoint = in_req->endpoint;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
+ ZigbeeZdoDevControlMgmtLqiReq_t *in_req;
+ ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlMgmtLqiReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtLqiReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->start_index = in_req->start_index;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
+ ZigbeeZdoDevControlMgmtRtgReq_t *in_req;
+ ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlMgmtRtgReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtRtgReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->start_index = in_req->start_index;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
+ ZigbeeZdoDevControlMgmtBindReq_t *in_req;
+ ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlMgmtBindReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlMgmtBindReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtBindReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->start_index = in_req->start_index;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
+ ZigbeeZdoDevControlMgmtPermitJoinReq_t *in_req;
+ ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtPermitJoinReq_t));
+
+ /* Copy data */
+ req->addr = in_req->addr;
+ req->duration = in_req->duration;
+ req->tc_significance = in_req->tc_significance;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
+ ZigbeeZdoDevControlNwkUpdateReq_t *in_req;
+ ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlNwkUpdateReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlNwkUpdateReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->scan_channel = in_req->scan_channel;
+ req->scan_duration = in_req->scan_duration;
+ req->scan_count = in_req->scan_count;
+ req->network_update_id = in_req->network_update_id;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
+ ZigbeeZdoDevControlNwkDescriptorReq_t *in_req;
+ ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlNwkDescriptorReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ req->scan_channel = in_req->scan_channel;
+ req->scan_duration = in_req->scan_duration;
+ req->scan_count = in_req->scan_count;
+ req->start_index = in_req->start_index;
+ }
+
+ zdodev_control_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zdodev_control_request_data;
+}
+
+static gpointer __zblib_request_create_zdo_bind_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer zdo_bind_request_data = NULL;
+ guint ops_id;
+
+ NOT_USED(request_data_len);
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
+ ZigbeeZdoBindBindReq_t *in_req;
+ ZigbeeZdoBindBindReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoBindBindReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoBindBindReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoBindBindReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ g_strlcpy(req->src_addr,
+ in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
+ req->src_ep = in_req->src_ep;
+ req->cluster_id = in_req->cluster_id;
+ g_strlcpy(req->dst_addr,
+ in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
+ req->bind_type = in_req->bind_type;
+ req->group_addr = in_req->group_addr;
+ req->dst_ep = in_req->dst_ep;
+ }
+
+ zdo_bind_request_data = (gpointer)req;
+ }
+ break;
+
+ case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
+ ZigbeeZdoBindUnbindReq_t *in_req;
+ ZigbeeZdoBindUnbindReq_t *req = NULL;
+
+ in_req = (ZigbeeZdoBindUnbindReq_t *)request_data;
+ if (NULL != in_req) {
+ /* Allocate memory */
+ req = (ZigbeeZdoBindUnbindReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoBindUnbindReq_t));
+
+ /* Copy data */
+ req->node_id = in_req->node_id;
+ g_strlcpy(req->src_addr,
+ in_req->src_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
+ req->src_ep = in_req->src_ep;
+ req->cluster_id = in_req->cluster_id;
+ g_strlcpy(req->dst_addr,
+ in_req->dst_addr, ZIGBEE_ZDO_BIND_ADDRESS_MAX_LEN + 1);
+ req->bind_type = in_req->bind_type;
+ req->group_addr = in_req->group_addr;
+ req->dst_ep = in_req->dst_ep;
+ }
+
+ zdo_bind_request_data = (gpointer)req;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return zdo_bind_request_data;
+}
+
+
+static gpointer __zblib_request_create_request_data(guint request_type,
+ gpointer request_data, guint request_data_len)
+{
+ gpointer _request_data = NULL;
+ ZblibDriverType_e driver_type;
+
+ /* Fetch driver type */
+ driver_type = __zblib_request_get_driver_type(request_type);
+ switch (driver_type) {
+ case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
+ _request_data = __zblib_request_create_zcl_alarm_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_CUSTOM: {
+ _request_data = __zblib_request_create_custom_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
+ _request_data = __zblib_request_create_zcl_door_lock_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
+ _request_data = __zblib_request_create_zcl_fan_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
+ _request_data = __zblib_request_create_zcl_level_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
+ _request_data = __zblib_request_create_mfglib_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
+ _request_data = __zblib_request_create_zcl_on_off_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_SERVICE: {
+ _request_data = __zblib_request_create_service_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
+ _request_data = __zblib_request_create_zcl_thermostat_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
+ _request_data = __zblib_request_create_zcl_basic_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
+ _request_data = __zblib_request_create_zcl_global_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
+ _request_data = __zblib_request_create_zcl_ias_zone_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
+ _request_data = __zblib_request_create_zcl_identify_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
+ _request_data = __zblib_request_create_zcl_color_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
+ _request_data = __zblib_request_create_zcl_group_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
+ _request_data = __zblib_request_create_zcl_poll_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
+ _request_data = __zblib_request_create_zcl_scene_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
+ _request_data = __zblib_request_create_zdo_dev_control_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
+ _request_data = __zblib_request_create_zdo_bind_request_data(request_type,
+ request_data, request_data_len);
+ }
+ break;
+
+ case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
+ default: {
+ Z_LOGE("Unhandled driver type: [%d]", driver_type);
+ }
+ break;
+ }
+
+ return _request_data;
+}
+
+static void __zblib_request_free_zcl_alarm_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_ALARM_OPS_GET_ALARM_COUNT: {
+ ZigbeeZclAlarmGetAlarmCount_t *req = NULL;
+
+ req = (ZigbeeZclAlarmGetAlarmCount_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM: {
+ ZigbeeZclAlarmResetAlarm_t *req = NULL;
+
+ req = (ZigbeeZclAlarmResetAlarm_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALL_ALARM: {
+ ZigbeeZclAlarmResetAllAlarm_t *req = NULL;
+
+ req = (ZigbeeZclAlarmResetAllAlarm_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ALARM_OPS_ALARM: {
+ ZigbeeZclAlarmAlarm_t *req = NULL;
+
+ req = (ZigbeeZclAlarmAlarm_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ALARM_OPS_RESET_ALARM_LOG: {
+ ZigbeeZclAlarmResetAlarmLogs_t *req = NULL;
+
+ req = (ZigbeeZclAlarmResetAlarmLogs_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_custom_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_CUSTOM_OPS_APS_SEND: {
+ ZigbeeCustomApsSend_t *req = NULL;
+
+ req = (ZigbeeCustomApsSend_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_CUSTOM_OPS_ZCL_SEND: {
+ ZigbeeCustomZclSend_t *req = NULL;
+
+ req = (ZigbeeCustomZclSend_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL: {
+ ZigbeeCustomSendToLocal_t *req = NULL;
+
+ req = (ZigbeeCustomSendToLocal_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_zcl_door_lock_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT: {
+ ZigbeeZclDoorLockSubscriberLockEvent_t *req = NULL;
+
+ req = (ZigbeeZclDoorLockSubscriberLockEvent_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN: {
+ ZigbeeZclDoorLockSetDoorLockPin_t *req = NULL;
+
+ req = (ZigbeeZclDoorLockSetDoorLockPin_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_SET_DOOR_LOCK: {
+ ZigbeeZclDoorLockSetDoorLock_t *req = NULL;
+
+ req = (ZigbeeZclDoorLockSetDoorLock_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_DOOR_LOCK_OPS_GET_LOCK_STATE: {
+ ZigbeeZclDoorLockGetDoorLock_t *req = NULL;
+
+ req = (ZigbeeZclDoorLockGetDoorLock_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_zcl_fan_control_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE: {
+ ZigbeeZclFanControlSetFanMode_t *req = NULL;
+
+ req = (ZigbeeZclFanControlSetFanMode_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE: {
+ ZigbeeZclFanControlGetFanMode_t *req = NULL;
+
+ req = (ZigbeeZclFanControlGetFanMode_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE: {
+ ZigbeeZclFanControlSetFanModeSequence_t *req = NULL;
+
+ req = (ZigbeeZclFanControlSetFanModeSequence_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE: {
+ ZigbeeZclFanControlGetFanModeSequence_t *req = NULL;
+
+ req = (ZigbeeZclFanControlGetFanModeSequence_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_zcl_level_control_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL: {
+ ZigbeeZclLevelControlMoveToLevel_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlMoveToLevel_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE: {
+ ZigbeeZclLevelControlMove_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlMove_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP: {
+ ZigbeeZclLevelControlStep_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlStep_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF: {
+ ZigbeeZclLevelControlMoveToLevelWithOnOff_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlMoveToLevelWithOnOff_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
+ ZigbeeZclLevelControlMoveWithOnOff_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlMoveWithOnOff_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF: {
+ ZigbeeZclLevelControlStepWithOnOff_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlStepWithOnOff_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP: {
+ ZigbeeZclLevelControlStop_t *req = NULL;
+
+ req = (ZigbeeZclLevelControlStop_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_mfglib_control_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_MFGLIB_CONTROL_OPS_START: {
+ ZigbeeMfglibControlStart_t *req = NULL;
+
+ req = (ZigbeeMfglibControlStart_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_END: {
+ ZigbeeMfglibControlEnd_t *req = NULL;
+
+ req = (ZigbeeMfglibControlEnd_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_START_TONE: {
+ ZigbeeMfglibControlStartTone_t *req = NULL;
+
+ req = (ZigbeeMfglibControlStartTone_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE: {
+ ZigbeeMfglibControlStopTone_t *req = NULL;
+
+ req = (ZigbeeMfglibControlStopTone_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM: {
+ ZigbeeMfglibControlStartStream_t *req = NULL;
+
+ req = (ZigbeeMfglibControlStartStream_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM: {
+ ZigbeeMfglibControlStopStream_t *req = NULL;
+
+ req = (ZigbeeMfglibControlStopStream_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET: {
+ ZigbeeMfglibControlSendPacket_t *req = NULL;
+
+ req = (ZigbeeMfglibControlSendPacket_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL: {
+ ZigbeeMfglibControlSetChannel_t *req = NULL;
+
+ req = (ZigbeeMfglibControlSetChannel_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL: {
+ ZigbeeMfglibControlGetChannel_t *req = NULL;
+
+ req = (ZigbeeMfglibControlGetChannel_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER: {
+ ZigbeeMfglibControlSetPower_t *req = NULL;
+
+ req = (ZigbeeMfglibControlSetPower_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER: {
+ ZigbeeMfglibControlGetPower_t *req = NULL;
+
+ req = (ZigbeeMfglibControlGetPower_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET: {
+ ZigbeeMfglibControlSetSynOffset_t *req = NULL;
+
+ req = (ZigbeeMfglibControlSetSynOffset_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET: {
+ ZigbeeMfglibControlGetSynOffset_t *req = NULL;
+
+ req = (ZigbeeMfglibControlGetSynOffset_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_RX_START: {
+ ZigbeeMfglibControlRxStart_t *req = NULL;
+
+ req = (ZigbeeMfglibControlRxStart_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP: {
+ ZigbeeMfglibControlRxStop_t *req = NULL;
+
+ req = (ZigbeeMfglibControlRxStop_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY: {
+ ZigbeeMfglibControlRxVerify_t *req = NULL;
+
+ req = (ZigbeeMfglibControlRxVerify_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI: {
+ ZigbeeMfglibControlGetRssi_t *req = NULL;
+
+ req = (ZigbeeMfglibControlGetRssi_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_zcl_on_off_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_ZCL_ON_OFF_OPS_SET_ON_OFF: {
+ ZigbeeZclOnOffSetOnOff_t *req = NULL;
+
+ req = (ZigbeeZclOnOffSetOnOff_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
+ ZigbeeZclOnOffGetOnOffState_t *req = NULL;
+
+ req = (ZigbeeZclOnOffGetOnOffState_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void __zblib_request_free_service_request_data(ZigBeeRequest *request,
+ guint request_type)
+{
+ guint ops_id;
+
+ /* Fetch ops ID */
+ ops_id = __zblib_request_get_ops_id(request_type);
+ switch (ops_id) {
+ case ZBLIB_SERVICE_OPS_ENABLE: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_DISABLE: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_ZB_HW_RESET: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_FORM_NETWORK: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_COEX_START: {
+ ZigbeeServiceCoexStart_t *req = NULL;
+
+ req = (ZigbeeServiceCoexStart_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_COEX_STOP: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_LEAVE_NETWORK: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_NETWORK_INFO: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_PERMIT_JOIN: {
+ ZigbeeServicePermitJoin_t *req = NULL;
+
+ req = (ZigbeeServicePermitJoin_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_LEAVE_REQUEST: {
+ ZigbeeServiceLeaveRequest_t *req = NULL;
+
+ req = (ZigbeeServiceLeaveRequest_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_DEVICE_LIST: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_MAC: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_DEVICE_INFO: {
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST: {
+ ZigbeeServiceGetEndpointList_t *req = NULL;
+
+ req = (ZigbeeServiceGetEndpointList_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
+ }
+ break;
+
+ case ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST: {
+ ZigbeeServiceGetClusterList_t *req = NULL;
+
+ req = (ZigbeeServiceGetClusterList_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_SERVICE_OPS_GET_NODE_TYPE: {
+ ZigbeeServiceGetNodeType_t *req = NULL;
+
+ req = (ZigbeeServiceGetNodeType_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return service_request_data;
}
-static gpointer __zblib_request_create_thermostat_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_thermostat_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer thermostat_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_GET_LOCAL_TEMP: {
+ ZigbeeZclThermostatGetLocalTemp_t *req = NULL;
+
+ req = (ZigbeeZclThermostatGetLocalTemp_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatGetWeeklySchedule_t *req = NULL;
+
+ req = (ZigbeeZclThermostatGetWeeklySchedule_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatSetWeeklySchedule_t *req = NULL;
+
+ req = (ZigbeeZclThermostatSetWeeklySchedule_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE: {
+ ZigbeeZclThermostatClearWeeklySchedule_t *req = NULL;
+
+ req = (ZigbeeZclThermostatClearWeeklySchedule_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
+ case ZBLIB_ZCL_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER: {
+ ZigbeeZclThermostatSetpointRaiseLower_t *req = NULL;
+
+ req = (ZigbeeZclThermostatSetpointRaiseLower_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return thermostat_request_data;
}
-static gpointer __zblib_request_create_zclbasic_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_basic_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zclbasic_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZCLBASIC_CONTROL_OPS_RESET_FACTORY_DEFAULT: {
+ case ZBLIB_ZCL_BASIC_OPS_RESET_FACTORY_DEFAULT: {
+ ZigbeeZclBasicResetFactoryDefault_t *req = NULL;
+
+ req = (ZigbeeZclBasicResetFactoryDefault_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zclbasic_control_request_data;
}
-static gpointer __zblib_request_create_zclglobal_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_global_control_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zclglobal_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_REQ: {
+ ZigbeeZclGlobalControlReadAttributesRequest_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->attribute_id);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_REQ: {
+ ZigbeeZclGlobalControlWriteAttributesRequest_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlWriteAttributesRequest_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->write_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_UNDIVIDED_REQ: {
+ ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->write_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_NO_RESP: {
+ ZigbeeZclGlobalControlWriteAttributesNoResponse_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlWriteAttributesNoResponse_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->write_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_WRITE_ATTRIBUTES_STRUCTURED: {
+ ZigbeeZclGlobalControlWriteAttributesStructed_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlWriteAttributesStructed_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->write_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_ATTRIBUTES_STRUCTURED: {
+ ZigbeeZclGlobalControlReadAttributesStructed_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlReadAttributesStructed_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->read_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_CONFIGURE_REPORTING_REQ: {
+ ZigbeeZclGlobalControlConfigureReportingReq_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlConfigureReportingReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->read_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_READ_CONFIGURE_REPORTING: {
+ ZigbeeZclGlobalControlReadConfigureReporting_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlReadConfigureReporting_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->read_records);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES: {
+ ZigbeeZclGlobalControlDiscoverAttributes_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlDiscoverAttributes_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_ATTRIBUTES_EXTENDED: {
+ ZigbeeZclGlobalControlDiscoverAttributesExtended_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlDiscoverAttributesExtended_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_RECEIVED: {
+ ZigbeeZclGlobalControlDiscoverCommandsReceived_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlDiscoverCommandsReceived_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLGLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
+ case ZBLIB_ZCL_GLOBAL_CONTROL_OPS_DISCOVER_COMMANDS_GENERATED: {
+ ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *req = NULL;
+
+ req = (ZigbeeZclGlobalControlDiscoverCommandsGenerated_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zclglobal_control_request_data;
}
-static gpointer __zblib_request_create_zclias_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_ias_zone_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zclias_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZCLIAS_CONTROL_OPS_ENROLL_RESPONSE: {
+ case ZBLIB_ZCL_IAS_ZONE_OPS_ENROLL_RESPONSE: {
+ ZigbeeZclIasZoneEnrollResponse_t *req = NULL;
+
+ req = (ZigbeeZclIasZoneEnrollResponse_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zclias_control_request_data;
}
-static gpointer __zblib_request_create_zclidentify_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_identify_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zclidentify_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_IDENTIFY: {
+ case ZBLIB_ZCL_IDENTIFY_OPS_IDENTIFY: {
+ ZigbeeZclIdentifyIdentify_t *req = NULL;
+
+ req = (ZigbeeZclIdentifyIdentify_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCLIDENTIFY_CONTROL_OPS_QUERY: {
+ case ZBLIB_ZCL_IDENTIFY_OPS_QUERY: {
+ ZigbeeZclIdentifyQuery_t *req = NULL;
+
+ req = (ZigbeeZclIdentifyQuery_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zclidentify_control_request_data;
}
-static gpointer __zblib_request_create_zcl_color_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_color_control_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zcl_color_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE: {
+ ZigbeeZclColorControlMoveToHue_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveToHue_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_HUE: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_HUE: {
+ ZigbeeZclColorControlMoveHue_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveHue_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_STEP_HUE: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_HUE: {
+ ZigbeeZclColorControlStepHue_t *req = NULL;
+
+ req = (ZigbeeZclColorControlStepHue_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_STAURATION: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_STAURATION: {
+ ZigbeeZclColorControlMoveToSaturation_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveToSaturation_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_STAURATION: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_STAURATION: {
+ ZigbeeZclColorControlMoveSaturation_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveSaturation_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_STEP_STAURATION: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_STAURATION: {
+ ZigbeeZclColorControlStepSaturation_t *req = NULL;
+
+ req = (ZigbeeZclColorControlStepSaturation_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_HUE_AND_SATURATION: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_HUE_AND_SATURATION: {
+ ZigbeeZclColorControlMoveToHueAndSaturation_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveToHueAndSaturation_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_TO_COLOR: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_TO_COLOR: {
+ ZigbeeZclColorControlMoveToColor_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveToColor_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR: {
+ ZigbeeZclColorControlMoveColor_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveColor_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_STEP_COLOR: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_STEP_COLOR: {
+ ZigbeeZclColorControlStepColor_t *req = NULL;
+
+ req = (ZigbeeZclColorControlStepColor_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZCL_COLOR_OPS_MOVE_COLOR_TEMPERATURE: {
+ case ZBLIB_ZCL_COLOR_CONTROL_OPS_MOVE_COLOR_TEMPERATURE: {
+ ZigbeeZclColorControlMoveColorTemperature_t *req = NULL;
+
+ req = (ZigbeeZclColorControlMoveColorTemperature_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zcl_color_request_data;
}
-static gpointer __zblib_request_create_zcl_group_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_group_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zcl_group_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP: {
+ ZigbeeZclGroupAddGroup_t *req = NULL;
+
+ req = (ZigbeeZclGroupAddGroup_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_GROUP_OPS_VIEW_GROUP: {
+ ZigbeeZclGroupViewGroup_t *req = NULL;
+
+ req = (ZigbeeZclGroupViewGroup_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_GROUP_OPS_GET_GROUP_MEMBERSHIP: {
+ ZigbeeZclGroupGetGroupMembership_t *req = NULL;
+
+ req = (ZigbeeZclGroupGetGroupMembership_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->group_list);
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_GROUP_OPS_REMOVE_GROUP: {
+ ZigbeeZclGroupRemoveGroup_t *req = NULL;
+
+ req = (ZigbeeZclGroupRemoveGroup_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_GROUP_OPS_REMOVE_ALL_GROUP: {
+ ZigbeeZclGroupRemoveAllGroup_t *req = NULL;
+
+ req = (ZigbeeZclGroupRemoveAllGroup_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_GROUP_OPS_ADD_GROUP_IF_IDENTIFYING: {
+ ZigbeeZclGroupAddGroupIfIdentifying_t *req = NULL;
+
+ req = (ZigbeeZclGroupAddGroupIfIdentifying_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zcl_group_request_data;
}
-static gpointer __zblib_request_create_zcl_poll_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_poll_control_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zcl_poll_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_ZCL_POLL_CONTROL_OPS_CHECK_IN_RESPONSE: {
+ ZigbeeZclPollControlCheckInResponse_t *req = NULL;
+
+ req = (ZigbeeZclPollControlCheckInResponse_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_POLL_CONTROL_OPS_FAST_POLL_STOP: {
+ ZigbeeZclPollControlFastPollStop_t *req = NULL;
+
+ req = (ZigbeeZclPollControlFastPollStop_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_LONG_POLL_INTERVAL: {
+ ZigbeeZclPollControlSetLongPollInterval_t *req = NULL;
+
+ req = (ZigbeeZclPollControlSetLongPollInterval_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_POLL_CONTROL_OPS_SET_SHORT_POLL_INTERVAL: {
+ ZigbeeZclPollControlSetShortPollInterval_t *req = NULL;
+
+ req = (ZigbeeZclPollControlSetShortPollInterval_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zcl_poll_control_request_data;
}
-static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zcl_scene_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zcl_scene_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_ZCL_SCENE_OPS_ADD_SCENE: {
+ ZigbeeZclSceneAddScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneAddScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->ext_field_set);
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_VIEW_SCENE: {
+ ZigbeeZclSceneViewScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneViewScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_REMOVE_SCENE: {
+ ZigbeeZclSceneRemoveScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneRemoveScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_STORE_SCENE: {
+ ZigbeeZclSceneStoreScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneStoreScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_RECALL_SCENE: {
+ ZigbeeZclSceneRecallScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneRecallScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_REMOVE_ALL_SCENE: {
+ ZigbeeZclSceneRemoveAllScene_t *req = NULL;
+
+ req = (ZigbeeZclSceneRemoveAllScene_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZCL_SCENE_OPS_GET_SCENE_MEMBERSHIP: {
+ ZigbeeZclSceneGetSceneMembership_t *req = NULL;
+
+ req = (ZigbeeZclSceneGetSceneMembership_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zcl_scene_request_data;
}
-static gpointer __zblib_request_create_zdodev_control_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zdo_dev_control_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zdodev_control_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
- case ZBLIB_ZDODEV_CONTROL_OPS_NWK_ADDR_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_ADDR_REQ: {
+ ZigbeeZdoDevControlNwkAddrReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlNwkAddrReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MATCHED_DESCRIPTOR_REQ: {
+ ZigbeeZdoDevControlMatchedDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlMatchedDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req->in_cl);
+ g_free(req->out_cl);
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_IEEE_ADDR_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_IEEE_ADDR_REQ: {
+ ZigbeeZdoDevControlIeeeAddrReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlIeeeAddrReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_ACTIVE_EP_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_ACTIVE_EP_REQ: {
+ ZigbeeZdoDevControlActiveEpReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlActiveEpReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_NODE_DESC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NODE_DESC_REQ: {
+ ZigbeeZdoDevControlNodeDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlNodeDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_POWER_DESC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_POWER_DESC_REQ: {
+ ZigbeeZdoDevControlPowerDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlPowerDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_COMPLEX_DESC_REQ: {
+ ZigbeeZdoDevControlComplexDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlComplexDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_REQ: {
+ ZigbeeZdoDevControlUserDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlUserDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_USER_DESC_SET_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_USER_DESC_SET_REQ: {
+ ZigbeeZdoDevControlUserDescriptorSetReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlUserDescriptorSetReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_DEVICE_ANNOUNCE: {
+ ZigbeeZdoDevControlDeviceAnnounce_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlDeviceAnnounce_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_SIMPLE_DESC_REQ: {
+ ZigbeeZdoDevControlSimpleDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlSimpleDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_LQI_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_LQI_REQ: {
+ ZigbeeZdoDevControlMgmtLqiReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlMgmtLqiReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_RTG_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_RTG_REQ: {
+ ZigbeeZdoDevControlMgmtRtgReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlMgmtRtgReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_BIND_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_BIND_REQ: {
+ ZigbeeZdoDevControlMgmtBindReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlMgmtBindReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_PERMIT_JOIN_REQ: {
+ ZigbeeZdoDevControlMgmtPermitJoinReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlMgmtPermitJoinReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_NWK_UPDATE_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
+ ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
- case ZBLIB_ZDODEV_CONTROL_OPS_NWK_DISC_REQ: {
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
+ ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
+
+ req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zdodev_control_request_data;
}
-static gpointer __zblib_request_create_zdo_bind_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_zdo_bind_request_data(ZigBeeRequest *request,
+ guint request_type)
{
- gpointer zdo_bind_request_data = NULL;
guint ops_id;
- NOT_USED(request_data);
- NOT_USED(request_data_len);
-
/* Fetch ops ID */
ops_id = __zblib_request_get_ops_id(request_type);
switch (ops_id) {
case ZBLIB_ZDO_BIND_OPS_BIND_REQ: {
+ ZigbeeZdoBindBindReq_t *req = NULL;
+
+ req = (ZigbeeZdoBindBindReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
case ZBLIB_ZDO_BIND_OPS_UNBIND_REQ: {
+ ZigbeeZdoBindUnbindReq_t *req = NULL;
+
+ req = (ZigbeeZdoBindUnbindReq_t *)request->request_data;
+ if (NULL != req) {
+ g_free(req);
+ }
}
break;
default:
break;
}
-
- return zdo_bind_request_data;
}
-static gpointer __zblib_request_create_request_data(guint request_type,
- gpointer request_data, guint request_data_len)
+static void __zblib_request_free_request_data(ZigBeeRequest *request)
{
- gpointer _request_data = NULL;
+ guint request_type;
ZblibDriverType_e driver_type;
+ zblib_check_null_ret("request", request);
+
+ request_type = request->request_type;
+
/* Fetch driver type */
driver_type = __zblib_request_get_driver_type(request_type);
switch (driver_type) {
- case ZBLIB_DRIVER_TYPE_ALARM: {
- _request_data = __zblib_request_create_alarm_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_ALARM: {
+ __zblib_request_free_zcl_alarm_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_CUSTOM: {
- _request_data = __zblib_request_create_custom_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_custom_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_DOOR_LOCK: {
- _request_data = __zblib_request_create_door_lock_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_DOOR_LOCK: {
+ __zblib_request_free_zcl_door_lock_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_FAN_CONTROL: {
- _request_data = __zblib_request_create_fan_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_FAN_CONTROL: {
+ __zblib_request_free_zcl_fan_control_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_LEVEL_CONTROL: {
- _request_data = __zblib_request_create_level_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL: {
+ __zblib_request_free_zcl_level_control_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL: {
- _request_data = __zblib_request_create_mfglib_control_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_mfglib_control_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ON_OFF: {
- _request_data = __zblib_request_create_on_off_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_ON_OFF: {
+ __zblib_request_free_zcl_on_off_request_data(request, request_type);
}
break;
+
case ZBLIB_DRIVER_TYPE_SERVICE: {
- _request_data = __zblib_request_create_service_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_service_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_THERMOSTAT: {
- _request_data = __zblib_request_create_thermostat_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_THERMOSTAT: {
+ __zblib_request_free_zcl_thermostat_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZCLBASIC_CONTROL: {
- _request_data = __zblib_request_create_zclbasic_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_BASIC: {
+ __zblib_request_free_zcl_basic_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZCLGLOBAL_CONTROL: {
- _request_data = __zblib_request_create_zclglobal_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_GLOBAL_CONTROL: {
+ __zblib_request_free_zcl_global_control_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZCLIAS_CONTROL: {
- _request_data = __zblib_request_create_zclias_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_IAS_ZONE: {
+ __zblib_request_free_zcl_ias_zone_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZCLIDENTIFY_CONTROL: {
- _request_data = __zblib_request_create_zclidentify_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_IDENTIFY: {
+ __zblib_request_free_zcl_identify_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZCL_COLOR: {
- _request_data = __zblib_request_create_zcl_color_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZCL_COLOR_CONTROL: {
+ __zblib_request_free_zcl_color_control_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_ZCL_GROUP: {
- _request_data = __zblib_request_create_zcl_group_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_zcl_group_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_ZCL_POLL_CONTROL: {
- _request_data = __zblib_request_create_zcl_poll_control_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_zcl_poll_control_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_ZCL_SCENE: {
- _request_data = __zblib_request_create_zcl_scene_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_zcl_scene_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_ZDODEV_CONTROL: {
- _request_data = __zblib_request_create_zdodev_control_request_data(request_type,
- request_data, request_data_len);
+ case ZBLIB_DRIVER_TYPE_ZDO_DEV_CONTROL: {
+ __zblib_request_free_zdo_dev_control_request_data(request, request_type);
}
break;
case ZBLIB_DRIVER_TYPE_ZDO_BIND: {
- _request_data = __zblib_request_create_zdo_bind_request_data(request_type,
- request_data, request_data_len);
+ __zblib_request_free_zdo_bind_request_data(request, request_type);
}
break;
- case ZBLIB_DRIVER_TYPE_NONE: /* Fallthrough */
+ case ZBLIB_DRIVER_TYPE_NONE: /* Fall through */
default: {
Z_LOGE("Unhandled driver type: [%d]", driver_type);
}
break;
}
-
- return _request_data;
-}
-
-static void __zblib_request_free_request_data(gpointer request_data)
-{
- if (NULL == request_data) {
- Z_LOGE("request_data is NULL");
- return;
- }
-
- /* Free resources */
- g_free(request_data);
}
gint zblib_request_new(ZigBeeServiceInterface *service_interface,
ZigBeeRequest *request = NULL;
GHashTable *request_table = NULL;
- if (NULL == service_interface) {
- Z_LOGE("service_interface is NULL");
- return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
- }
+ zblib_check_null_ret_error("service_interface", service_interface, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
service = zblib_service_interface_ref_service(service_interface);
- if (NULL == service) {
- Z_LOGE("service is NULL");
- return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
- }
+ zblib_check_null_ret_error("service", service, ZIGBEE_REQUEST_INVALID_REQUEST_ID);
/* Allocate ZigBee request memory */
request = g_malloc0(sizeof(ZigBeeRequest));
Z_LOGE("zblib_service_genrate_request_id failed!");
/* Free resources */
+ __zblib_request_free_request_data(request);
g_free(request);
return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
Z_LOGE("zblib_service_ref_request_hash_table failed!");
/* Free resources */
+ __zblib_request_free_request_data(request);
g_free(request);
return ZIGBEE_REQUEST_INVALID_REQUEST_ID;
return request->request_id;
}
-void zblib_request_free(ZigBeeRequest *request)
+void zblib_request_free(ZigBeeServiceInterface *service_interface,
+ guint request_id)
{
- if (NULL == request) {
- Z_LOGE("request is NULL");
- return;
- }
+ ZigBeeService *service = NULL;
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret("service_interface", service_interface);
+
+ /* Fetch service */
+ service = zblib_service_interface_ref_service(service_interface);
+ zblib_check_null_ret("service", service);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_request_id(service, request_id);
+ zblib_check_null_ret("request", request);
/* Free resources */
- __zblib_request_free_request_data(request->request_data);
+ __zblib_request_free_request_data(request);
g_free(request);
}
-ZigBeeRequest *zblib_request_ref(ZigBeeRequest *request)
+gboolean zblib_request_set_response_cb(ZigBeeServiceInterface *service_interface,
+ guint request_id,
+ gpointer resp_cb, gpointer resp_cb_data)
+{
+ ZigBeeService *service = NULL;
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret_error("service_interface", service_interface, FALSE);
+
+ /* Fetch service */
+ service = zblib_service_interface_ref_service(service_interface);
+ zblib_check_null_ret_error("service", service, FALSE);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
+ if (NULL == request) {
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return FALSE;
+ }
+
+ /* Update response callback and response callback data */
+ request->resp_cb = resp_cb;
+ request->resp_cb_data = resp_cb_data;
+
+ return TRUE;
+}
+
+gpointer zblib_request_ref_response_cb(ZigBeeServiceInterface *service_interface,
+ guint request_id, gpointer *resp_cb_data)
{
+ ZigBeeService *service = NULL;
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret_error("service_interface", service_interface, NULL);
+
+ /* Fetch service */
+ service = zblib_service_interface_ref_service(service_interface);
+ zblib_check_null_ret_error("service", service, NULL);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
if (NULL == request) {
- Z_LOGE("request is NULL");
- return request;
+ Z_LOGE("No request available for request_id: [%d]", request_id);
+ return NULL;
}
+ /* Response callback data */
+ *resp_cb_data = request->resp_cb_data;
+
+ /* Return response callback */
+ return request->resp_cb;
+}
+
+ZigBeeRequest *zblib_request_ref(ZigBeeRequest *request)
+{
+ zblib_check_null_ret_error("request", request, NULL);
+
request->ref_count++;
return request;
void zblib_request_unref(ZigBeeRequest *request)
{
- if (NULL == request) {
- Z_LOGE("request is NULL");
- return;
- }
+ zblib_check_null_ret("request", request);
request->ref_count--;
if (0 == request->ref_count) {
Z_LOGD("Reference count is ZERO!");
/* Free 'request' */
- zblib_request_free(request);
+ __zblib_request_free_request_data(request);
+ g_free(request);
}
}
guint zblib_request_ref_request_type(ZigBeeRequest *request)
{
- if (NULL == request) {
- Z_LOGE("request is NULL");
- return 0;
- }
+ zblib_check_null_ret_error("request", request, 0);
return request->request_type;
}
-ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeRequest *request)
+ZigBeeServiceInterface *zblib_request_ref_service_interface(ZigBeeService *service,
+ guint request_id)
{
+ ZigBeeRequest *request = NULL;
+
+ zblib_check_null_ret_error("service", service, NULL);
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
if (NULL == request) {
- Z_LOGE("request is NULL");
+ Z_LOGE("No request available for request_id: [%d]", request_id);
return NULL;
}
gpointer zblib_request_ref_request_data(ZigBeeRequest *request)
{
+ zblib_check_null_ret_error("request", request, NULL);
+
+ return request->request_data;
+}
+
+gpointer zblib_request_ref_request_data_by_id(ZigBeeService *service,
+ guint request_id)
+{
+ ZigBeeRequest *request = NULL;
+
+ /* Fetch request based on request_id */
+ request = __zblib_request_ref_request_by_by_request_id(service, request_id);
if (NULL == request) {
- Z_LOGE("request is NULL");
+ Z_LOGE("No request available for request_id: [%d]", request_id);
return NULL;
}
gint zblib_request_ref_request_type_by_request_id(ZigBeeService *service,
guint request_id)
{
- ZigBeeRequest *request = NULL;
- GHashTable *request_table = NULL;
-
- /* Fetch request table from service */
- request_table = zblib_service_ref_request_hash_table(service);
- if (NULL == request_table) {
- Z_LOGE("zblib_service_ref_request_hash_table failed!");
- return -1;
- }
-
- /* Look-up requets_id in request hash table */
- request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
- if (NULL == request_table) {
- Z_LOGE("No request availabel for request_id: [%d]", request_id);
- return -1;
- }
-
- return (gint)(request->request_type);
+ return __zblib_request_ref_request_type_by_request_id(service, request_id);
}
ZblibDriverType_e zblib_request_get_driver_type(guint request_type)