#include <zblib.h>
#include <zblib_driver.h>
+#include <zblib_plugin.h>
#include <zblib_request.h>
#include "zblib_driver_zcl_on_off.h"
/* 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: {
zblib_check_null_ret_error("ops->set_on_off",
ops->set_on_off, FALSE);
}
break;
- case ZBLIB_ON_OFF_OPS_GET_ON_OFF_STATE: {
+ case ZBLIB_ZCL_ON_OFF_OPS_GET_ON_OFF_STATE: {
zblib_check_null_ret_error("ops->get_on_off_state",
ops->get_on_off_state, FALSE);
const gchar *driver_name,
ZblibDriverZclOnOffOps_t *ops)
{
+ ZigBeeService *service = NULL;
ZigBeeDriver *driver = NULL;
ZblibDriverZclOnOffPrivData_t *priv_data = NULL;
gboolean ret;
zblib_check_null_ret_error("plugin", plugin, NULL);
/* Create new driver */
- driver = zblib_driver_new(plugin, driver_name, ZBLIB_DRIVER_TYPE_ON_OFF);
+ driver = zblib_driver_new(plugin, driver_name, ZBLIB_DRIVER_TYPE_ZCL_ON_OFF);
zblib_check_null_ret_error("driver", driver, NULL);
/* Allocate memory for private data */
/* Update private data */
priv_data->ops = ops;
+ /* Link service to driver */
+ service = zblib_plugin_ref_service(plugin);
+ if (NULL == service) {
+ Z_LOGE("zblib_plugin_ref_service failed!");
+
+ /* Free allocated resources */
+ g_free(priv_data);
+ g_free(driver);
+
+ return NULL;
+ }
+ zblib_driver_link_service(driver, service);
+
/* Link private data to driver */
ret = zblib_driver_link_object(driver, priv_data);
if (FALSE == ret) {