/* Look-up requets_id in request hash table */
request = (ZigBeeRequest *)g_hash_table_lookup(request_table, (gconstpointer)request_id);
- if (NULL == request_table) {
+ if (NULL == request) {
Z_LOGE("No request available for request_id: [%d]", request_id);
return NULL;
}
req->profile_id = in_req->profile_id;
req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
req->mfg_code = in_req->mfg_code;
+ req->cmd_id = in_req->cmd_id;
+ req->payload_len = in_req->payload_len;
memcpy(req->payload,
- in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ in_req->payload, req->payload_len);
}
custom_request_data = (gpointer)req;
req->cluster_id = in_req->cluster_id;
req->zcl_frame_ctrl = in_req->zcl_frame_ctrl;
req->cmd_id = in_req->cmd_id;
+ req->payload_len = in_req->payload_len;
memcpy(req->payload,
- in_req->payload, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ in_req->payload, req->payload_len);
}
custom_request_data = (gpointer)req;
g_malloc0(sizeof(ZigbeeCustomSendToLocal_t));
/* Copy data */
+ req->length = in_req->length;
memcpy(req->data,
- in_req->data, ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN);
+ in_req->data, req->length);
}
custom_request_data = (gpointer)req;
/* 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;
}
in_req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)request_data;
if (NULL != in_req) {
+ guint i;
/* Allocate memory */
req = (ZigbeeZclGlobalControlReadAttributesRequest_t *)
g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesRequest_t));
/* Copy data */
- req->attribute_id = g_strdup(in_req->attribute_id);
+ for (i = 0; i < (in_req->attribute_id_len * sizeof(short)); i++)
+ Z_LOGE("in_req->attribute_id[%d] = 0x%X", i, in_req->attribute_id[i]);
+ req->attribute_id = g_memdup(in_req->attribute_id,
+ in_req->attribute_id_len * sizeof(short));
req->attribute_id_len = in_req->attribute_id_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesRequest_t));
/* Copy data */
- req->write_records = g_strdup(in_req->write_records);
+ req->write_records = g_memdup(in_req->write_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesUndividedRequest_t));
/* Copy data */
- req->write_records = g_strdup(in_req->write_records);
+ req->write_records = g_memdup(in_req->write_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesNoResponse_t));
/* Copy data */
- req->write_records = g_strdup(in_req->write_records);
+ req->write_records = g_memdup(in_req->write_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlWriteAttributesStructed_t));
/* Copy data */
- req->write_records = g_strdup(in_req->write_records);
+ req->write_records = g_memdup(in_req->write_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlReadAttributesStructed_t));
/* Copy data */
- req->read_records = g_strdup(in_req->read_records);
+ req->read_records = g_memdup(in_req->read_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlConfigureReportingReq_t));
/* Copy data */
- req->read_records = g_strdup(in_req->read_records);
+ req->read_records = g_memdup(in_req->read_records, in_req->records_len);
req->records_len = in_req->records_len;
req->node_id = in_req->node_id;
req->cluster_id = in_req->cluster_id;
g_malloc0(sizeof(ZigbeeZclGlobalControlReadConfigureReporting_t));
/* Copy data */
- req->read_records = g_strdup(in_req->read_records);
+ req->read_records = g_memdup(in_req->read_records, in_req->records_len);
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->cluster_id = in_req->cluster_id;
req->start_attribute = in_req->start_attribute;
- req->max = in_req->max;
+ req->max_attribute_count = in_req->max_attribute_count;
}
zclglobal_control_request_data = (gpointer)req;
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;
+ req->max_attribute_count = in_req->max_attribute_count;
}
zclglobal_control_request_data = (gpointer)req;
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;
+ req->start_command = in_req->start_command;
+ req->max_command_count = in_req->max_command_count;
}
zclglobal_control_request_data = (gpointer)req;
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;
+ req->start_command = in_req->start_command;
+ req->max_command_count = in_req->max_command_count;
}
zclglobal_control_request_data = (gpointer)req;
/* 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;
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);
+ req->group_list = (gushort *)g_memdup(in_req->group_list,
+ sizeof(gushort) * in_req->group_count);
}
zcl_group_request_data = (gpointer)req;
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,
+ req->ext_field_set = (guchar *)g_memdup(in_req->ext_field_set,
in_req->ext_field_set_len);
}
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);
+ if (in_req->num_in_cl > 0) {
+ req->in_cl = g_malloc0_n(in_req->num_in_cl, sizeof(unsigned short));
+ memcpy(req->in_cl, in_req->in_cl,
+ in_req->num_in_cl * sizeof(unsigned short));
+ }
req->num_out_cl = in_req->num_out_cl;
- req->out_cl = g_strdup(in_req->out_cl);
+ if (in_req->num_out_cl > 0) {
+ req->out_cl = g_malloc0_n(in_req->num_out_cl, sizeof(unsigned short));
+ memcpy(req->out_cl, in_req->out_cl,
+ in_req->num_out_cl * sizeof(unsigned short));
+ }
}
zdodev_control_request_data = (gpointer)req;
g_malloc0(sizeof(ZigbeeZdoDevControlMgmtPermitJoinReq_t));
/* Copy data */
- req->addr = in_req->addr;
+ req->node_id = in_req->node_id;
req->duration = in_req->duration;
req->tc_significance = in_req->tc_significance;
}
}
break;
- case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
- ZigbeeZdoDevControlNwkUpdateReq_t *in_req;
- ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_UPDATE_REQ: {
+ ZigbeeZdoDevControlMgmtNwkUpdateReq_t *in_req;
+ ZigbeeZdoDevControlMgmtNwkUpdateReq_t *req = NULL;
- in_req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request_data;
+ in_req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)request_data;
if (NULL != in_req) {
/* Allocate memory */
- req = (ZigbeeZdoDevControlNwkUpdateReq_t *)
- g_malloc0(sizeof(ZigbeeZdoDevControlNwkUpdateReq_t));
+ req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtNwkUpdateReq_t));
/* Copy data */
req->node_id = in_req->node_id;
}
break;
- case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
- ZigbeeZdoDevControlNwkDescriptorReq_t *in_req;
- ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_DISC_REQ: {
+ ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *in_req;
+ ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *req = NULL;
- in_req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request_data;
+ in_req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)request_data;
if (NULL != in_req) {
/* Allocate memory */
- req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)
- g_malloc0(sizeof(ZigbeeZdoDevControlNwkDescriptorReq_t));
+ req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)
+ g_malloc0(sizeof(ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t));
/* Copy data */
req->node_id = in_req->node_id;
/* 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);
+ memcpy(req->src_addr, in_req->src_addr, ZIGBEE_EUI64_SIZE);
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);
+ memcpy(req->dst_addr, in_req->dst_addr, ZIGBEE_EUI64_SIZE);
req->bind_type = in_req->bind_type;
req->group_addr = in_req->group_addr;
req->dst_ep = in_req->dst_ep;
/* 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);
+ memcpy(req->src_addr, in_req->src_addr, ZIGBEE_EUI64_SIZE);
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);
+ memcpy(req->dst_addr, in_req->dst_addr, ZIGBEE_EUI64_SIZE);
req->bind_type = in_req->bind_type;
req->group_addr = in_req->group_addr;
req->dst_ep = in_req->dst_ep;
/* 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;
}
break;
- case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_UPDATE_REQ: {
- ZigbeeZdoDevControlNwkUpdateReq_t *req = NULL;
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_UPDATE_REQ: {
+ ZigbeeZdoDevControlMgmtNwkUpdateReq_t *req = NULL;
- req = (ZigbeeZdoDevControlNwkUpdateReq_t *)request->request_data;
+ req = (ZigbeeZdoDevControlMgmtNwkUpdateReq_t *)request->request_data;
if (NULL != req) {
g_free(req);
}
}
break;
- case ZBLIB_ZDO_DEV_CONTROL_OPS_NWK_DISC_REQ: {
- ZigbeeZdoDevControlNwkDescriptorReq_t *req = NULL;
+ case ZBLIB_ZDO_DEV_CONTROL_OPS_MGMT_NWK_DISC_REQ: {
+ ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *req = NULL;
- req = (ZigbeeZdoDevControlNwkDescriptorReq_t *)request->request_data;
+ req = (ZigbeeZdoDevControlMgmtNwkDiscoveryReq_t *)request->request_data;
if (NULL != req) {
g_free(req);
}