Impelement Custom cluster
[platform/core/connectivity/zigbee-manager.git] / zigbee-daemon / zigbee-lib / src / zblib_request.c
index 1dd14ee..a32c2e3 100644 (file)
@@ -59,7 +59,7 @@ static ZblibDriverType_e __zblib_request_get_driver_type(guint request_type)
 {
        ZblibDriverType_e driver_type;
 
-       driver_type = ((request_type && 0xFF000000) >> 24);
+       driver_type = ((request_type & 0xFF000000) >> 24);
 
        return driver_type;
 }
@@ -68,7 +68,7 @@ static ZblibDriverType_e __zblib_request_get_ops_id(guint request_type)
 {
        guint ops_id;
 
-       ops_id = (request_type && 0x000000FF);
+       ops_id = (request_type & 0x000000FF);
 
        return ops_id;
 }
@@ -245,7 +245,21 @@ static gpointer __zblib_request_create_zcl_alarm_request_data(guint request_type
        break;
 
        case ZBLIB_ZCL_ALARM_OPS_GET_ALARM: {
-               alarm_request_data = NULL;
+               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;
 
@@ -286,8 +300,10 @@ static gpointer __zblib_request_create_custom_request_data(guint request_type,
                        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;
@@ -311,8 +327,9 @@ static gpointer __zblib_request_create_custom_request_data(guint request_type,
                        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;
@@ -330,8 +347,9 @@ static gpointer __zblib_request_create_custom_request_data(guint request_type,
                                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;
@@ -616,7 +634,7 @@ static gpointer __zblib_request_create_zcl_level_control_request_data(guint requ
                        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->step_size = in_req->step_size;
                        req->transition_time = in_req->transition_time;
                }
 
@@ -680,7 +698,7 @@ static gpointer __zblib_request_create_zcl_level_control_request_data(guint requ
                        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->step_size = in_req->step_size;
                        req->transition_time = in_req->transition_time;
                }
 
@@ -1282,6 +1300,7 @@ static gpointer __zblib_request_create_service_request_data(guint request_type,
        break;
 
        default:
+               Z_LOGE("Unexpected operation [%x]", ops_id);
        break;
        }
 
@@ -2062,8 +2081,8 @@ static gpointer __zblib_request_create_zcl_color_control_request_data(guint requ
                        /* 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;
+                       req->step_x = in_req->step_x;
+                       req->step_y = in_req->step_y;
                        req->transition_time = in_req->transition_time;
                }
 
@@ -2369,7 +2388,7 @@ static gpointer __zblib_request_create_zcl_scene_request_data(guint request_type
                        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 = (char *)g_memdup(in_req->ext_field_set,
                                in_req->ext_field_set_len);
                }
 
@@ -4750,7 +4769,7 @@ gpointer zblib_request_ref_response_cb(ZigBeeServiceInterface *service_interface
        ZigBeeService *service = NULL;
        ZigBeeRequest *request = NULL;
 
-       zblib_check_null_ret_error("request", request, NULL);
+       zblib_check_null_ret_error("service_interface", service_interface, NULL);
 
        /* Fetch service */
        service = zblib_service_interface_ref_service(service_interface);