Adding service interface layer logic for request processing
authorSuresh Kumar N <suresh.n@samsung.com>
Thu, 29 Dec 2016 16:11:27 +0000 (21:41 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 11 May 2017 09:10:25 +0000 (18:10 +0900)
Modules completed:
 - alarm
 - custom
 - door_lock
 - fan_control
 - level_control
 - mfglib_control
 - on_off
 - service
 - thermostat
 - zclbasic_control

Change-Id: I3840183d00bfb65278fabc189c1cff512a07b3f6
Signed-off-by: Suresh Kumar N <suresh.n@samsung.com>
49 files changed:
common/include/zigbee_alarm_type.h
common/include/zigbee_custom_type.h
common/include/zigbee_level_control_type.h
zigbee-daemon/zigbee-interface/CMakeLists.txt
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_alarm.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_custom.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_door_lock.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_fan_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_level_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_mfglib_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_on_off.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_service.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_thermostat.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zcl_color.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zcl_group.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zcl_poll_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zcl_scene.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zclbasic_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zclglobal_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zclias_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zclidentify_control.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zdo_bind.h
zigbee-daemon/zigbee-interface/include/zigbee_service_dbus_interface_zdodev_control.h
zigbee-daemon/zigbee-interface/introspection/service.xml
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_alarm.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_custom.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_door_lock.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_fan_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_level_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_mfglib_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_on_off.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_service.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_thermostat.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_color.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_group.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_poll_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zcl_scene.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zclbasic_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zclglobal_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zclias_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zclidentify_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdo_bind.c
zigbee-daemon/zigbee-interface/src/zigbee_service_dbus_interface_zdodev_control.c
zigbee-daemon/zigbee-interface/src/zigbee_service_interface_common.c [new file with mode: 0644]
zigbee-daemon/zigbee-interface/src/zigbee_service_interface_common.h [changed mode: 0644->0755]
zigbee-daemon/zigbee-lib/include/zblib_service_interface.h
zigbee-daemon/zigbee-lib/src/zblib_request.c
zigbee-daemon/zigbee-lib/src/zblib_service_interface.c

index 05a7340..b780c23 100644 (file)
 #include <zigbee_types.h>
 
 /**
- * @brief Definition for alarm structure.
+ * @brief Definition for get alarm count structure.
  * @since_tizen 3.0
  */
 typedef struct {
        char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
-       short node_id; /**< Node ID */
        char endpoint; /**< Endpoint */
-       char alarm_code; /**< Alarm code */
-       short cluster_id; /**< Cluster ID */
-} ZigbeeAlarmAlarm_t;
+} ZigbeeAlarmGetAlarmCount_t;
 
 /**
  * @brief Definition for reset alarm structure.
@@ -54,6 +51,17 @@ typedef struct {
 } ZigbeeAlarmResetAllAlarm_t;
 
 /**
+ * @brief Definition for alarm structure.
+ * @since_tizen 3.0
+ */
+typedef struct {
+       char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
+       char endpoint; /**< Endpoint */
+       char alarm_code; /**< Alarm code */
+       short cluster_id; /**< Cluster ID */
+} ZigbeeAlarmAlarm_t;
+
+/**
  * @brief Definition for reset all alarm logs structure.
  * @since_tizen 3.0
  */
@@ -63,13 +71,12 @@ typedef struct {
 } ZigbeeAlarmResetAlarmLogs_t;
 
 /**
- * @brief Definition for get alarm count structure.
+ * @brief Definition for get alarm structure.
  * @since_tizen 3.0
  */
 typedef struct {
-       char eui64[ZIGBEE_EUI64_SIZE]; /**< EUI64 (an IEEE address) */
+       short node_id; /**< Node ID */
        char endpoint; /**< Endpoint */
-} ZigbeeAlarmGetAlarmCount_t;
-
+} ZigbeeAlarmGetAlarm_t;
 
 #endif /* __ZIGBEE_ALARM_TYPE_H__ */
index 5acd45d..9347614 100644 (file)
  */
 typedef struct {
        short node_id;
-       char aps_frame_ctl;
+       char aps_frame_ctrl;
        char src_ep;
        char dest_ep;
        short cluster_id;
        short profile_id;
-       char zcl_frame_ctl;
+       char zcl_frame_ctrl;
        short mfg_code;
        char payload[ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN];
 } ZigbeeCustomApsSend_t;
@@ -46,7 +46,7 @@ typedef struct {
        char src_ep;
        char dest_ep;
        short cluster_id;
-       char zcl_frame_ctl;
+       char zcl_frame_ctrl;
        char cmd_id;
        char payload[ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN];
 } ZigbeeCustomZclSend_t;
index 730b62a..1fadb49 100644 (file)
@@ -75,7 +75,7 @@ typedef struct {
        char endpoint; /**< Endpoint */
        char move_mode; /**< Move mode */
        char rate; /**< Rate of movement */
-} ZigbeeLevelControlMoveOnOff_t;
+} ZigbeeLevelControlMoveWithOnOff_t;
 
 /**
  * @brief Definition for level control step with on/off structure.
index bfa1f51..f9a423a 100644 (file)
@@ -83,6 +83,7 @@ ADD_CUSTOM_COMMAND(
 SET(ZIGBEE_INTERFACE_SRCS
        ${CMAKE_CURRENT_BINARY_DIR}/zigbee_generated_code.c
         src/zigbee_service_interface.c
+        src/zigbee_service_interface_common.c
         src/zigbee_service_dbus_interface.c
         src/zigbee_service_dbus_interface_alarm.c
         src/zigbee_service_dbus_interface_custom.c
index e1cf8a8..7ad3ebd 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ALARM_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ALARM_H__
 
-gboolean zigbee_service_dbus_interface_alarm_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_alarm_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ALARM_H__ */
index 2639e86..a2a03c8 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_CUSTOM_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_CUSTOM_H__
 
-gboolean zigbee_service_dbus_interface_custom_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_custom_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_CUSTOM_H__ */
index 0902db4..bf8033b 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_DOOR_LOCK_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_DOOR_LOCK_H__
 
-gboolean zigbee_service_dbus_interface_door_lock_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_door_lock_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_DOOR_LOCK_H__ */
index 7599388..7fe925f 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_FAN_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_FAN_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_fan_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_fan_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_FAN_CONTROL_H__ */
index 000f4e6..e197c51 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_LEVEL_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_LEVEL_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_level_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_level_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_LEVEL_CONTROL_H__ */
index fabe1c6..183accb 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_MFGLIB_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_MFGLIB_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_mfglib_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_mfglib_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_MFGLIB_CONTROL_H__ */
index 807fbb9..145bfb2 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ON_OFF_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ON_OFF_H__
 
-gboolean zigbee_service_dbus_interface_on_off_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_on_off_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ON_OFF_H__ */
index 202638f..08adeec 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_SERVICE_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_SERVICE_H__
 
-gboolean zigbee_service_dbus_interface_service_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_service_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_SERVICE_H__ */
index 317645b..2d31929 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_THERMOSTAT_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_THERMOSTAT_H__
 
-gboolean zigbee_service_dbus_interface_thermostat_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_thermostat_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_THERMOSTAT_H__ */
index bfff031..39b5f82 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_COLOR_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_COLOR_H__
 
-gboolean zigbee_service_dbus_interface_zcl_color_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_color_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_COLOR_H__ */
index 478a053..90418e3 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_GROUP_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_GROUP_H__
 
-gboolean zigbee_service_dbus_interface_zcl_group_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_group_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_GROUP_H__ */
index 3983177..2ad3544 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_POLL_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_POLL_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zcl_poll_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_poll_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_POLL_CONTROL_H__ */
index b3bd51c..c9da388 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_SCENE_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_SCENE_H__
 
-gboolean zigbee_service_dbus_interface_zcl_scene_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_scene_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCL_SCENE_H__ */
index 78ceabc..db7d401 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLBASIC_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLBASIC_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zclbasic_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclbasic_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLBASIC_CONTROL_H__ */
index bb47db4..7731bd3 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLGLOBAL_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLGLOBAL_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zclglobal_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclglobal_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLGLOBAL_CONTROL_H__ */
index 901a7de..228cc2d 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIAS_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIAS_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zclias_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclias_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIAS_CONTROL_H__ */
index 454c8b8..bfb5d9c 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIDENTIFY_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIDENTIFY_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zclidentify_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclidentify_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZCLIDENTIFY_CONTROL_H__ */
index 95859c3..1019acb 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDO_BIND_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDO_BIND_H__
 
-gboolean zigbee_service_dbus_interface_zdo_bind_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zdo_bind_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDO_BIND_H__ */
index 3ede0f6..05943b1 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDODEV_CONTROL_H__
 #define __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDODEV_CONTROL_H__
 
-gboolean zigbee_service_dbus_interface_zdodev_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zdodev_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object);
 
 #endif /* __ZIGBEE_SERVICE_DBUS_INTERFACE_ZDODEV_CONTROL_H__ */
index b72d681..bdf5788 100644 (file)
@@ -38,7 +38,7 @@
                </method>
                <method name='permit_join'>
                        <arg type='i' name='duration' direction='in'/>
-                       <arg type='b' name='broadcastMgmtPermitJoin' direction='in'/>
+                       <arg type='b' name='permitJoin' direction='in'/>
                        <arg type='i' name='result' direction='out'/>
                        <arg type='y' name='status' direction='out'/>
                </method>
index 943d7b2..9fb190d 100644 (file)
@@ -31,6 +31,7 @@
 #include "zigbee_service_interface_common.h"
 #include "zigbee_service_dbus_interface.h"
 
+/**< ZigBee D-BUS service interface name */
 #define ZIGBEE_DBUS_SERVICE_INTERFACE_NAME "zigbee-dbus"
 
 static gboolean zigbee_on_manager_get_zigbee_state(ZigbeeManager *zigbee_mgr,
@@ -50,66 +51,66 @@ static gboolean zigbee_on_manager_get_zigbee_state(ZigbeeManager *zigbee_mgr,
        return TRUE;
 }
 
-static void zigbee_service_dbus_interface_initialize_interfaces(ZigBeeService *service,
+static void zigbee_service_dbus_interface_initialize_interfaces(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        gboolean ret;
 
-       ret = zigbee_service_dbus_interface_alarm_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_alarm_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_custom_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_custom_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_door_lock_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_door_lock_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_fan_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_fan_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_level_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_level_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_mfglib_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_mfglib_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_on_off_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_on_off_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_service_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_service_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_thermostat_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_thermostat_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zclbasic_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zclbasic_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zcl_color_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zcl_color_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zclglobal_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zclglobal_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zcl_group_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zcl_group_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zclias_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zclias_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zclidentify_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zclidentify_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zcl_poll_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zcl_poll_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zcl_scene_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zcl_scene_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zdo_bind_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zdo_bind_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 
-       ret = zigbee_service_dbus_interface_zdodev_control_init(service, zigbee_object);
+       ret = zigbee_service_dbus_interface_zdodev_control_init(service_interface, zigbee_object);
        Z_LOGD("ret: %d", ret);
 }
 
@@ -221,7 +222,7 @@ static void zigbee_on_bus_acquired(GDBusConnection *connection,
        /*
         * Initialize interfaces
         */
-       zigbee_service_dbus_interface_initialize_interfaces(service, zigbee_object);
+       zigbee_service_dbus_interface_initialize_interfaces(service_interface, zigbee_object);
        Z_LOGI("ZigBee service interfaces initialized!!!");
 
        /* Export the Object to Manager */
index 8aa7820..03a7792 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_alarm.h>
+
+static void on_alarm_get_alarm_count_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_get_alarm_count(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmGetAlarmCount_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeAlarmGetAlarmCount_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_GET_ALARM_COUNT,
+               &req, sizeof(req),
+               on_alarm_get_alarm_count_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_alarm_reset_alarm_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_reset_alarm(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -48,46 +114,132 @@ static gboolean on_alarm_reset_alarm(ZigbeeAlarm *alarm_object,
        gshort cluster_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmResetAlarm_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(alarmcode);
-       NOT_USED(cluster_id);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeAlarmResetAlarm_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.alarm_code = alarmcode;
+       req.cluster_id = cluster_id;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_RESET_ALARM,
+               &req, sizeof(req),
+               on_alarm_reset_alarm_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_alarm_reset_all_alarm_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_reset_all_alarm(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmResetAllAlarm_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeAlarmResetAllAlarm_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_RESET_ALL_ALARM,
+               &req, sizeof(req),
+               on_alarm_reset_all_alarm_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_alarm_alarm_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_alarm(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -96,75 +248,199 @@ static gboolean on_alarm_alarm(ZigbeeAlarm *alarm_object,
        gshort cluster_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmAlarm_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
-       NOT_USED(alarmcode);
-       NOT_USED(cluster_id);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeAlarmAlarm_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+       req.alarm_code = alarmcode;
+       req.cluster_id = cluster_id;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_ALARM,
+               &req, sizeof(req),
+               on_alarm_alarm_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_alarm_reset_alarm_log_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_reset_alarm_log(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmResetAlarmLogs_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeAlarmResetAlarmLogs_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_RESET_ALARM_LOG,
+               &req, sizeof(req),
+               on_alarm_reset_alarm_log_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_alarm_get_alarm_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_alarm_get_alarm(ZigbeeAlarm *alarm_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeAlarmGetAlarm_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(alarm_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeAlarmGetAlarm_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(alarm_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ALARM,
+               ZBLIB_ALARM_OPS_GET_ALARM,
+               &req, sizeof(req),
+               on_alarm_get_alarm_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_alarm_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_alarm_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeAlarm *alarm_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -179,27 +455,27 @@ gboolean zigbee_service_dbus_interface_alarm_init(ZigBeeService *service,
         */
        g_signal_connect(alarm_object,
                "handle-get-alarm-count",
-               G_CALLBACK(on_alarm_get_alarm_count), service);
+               G_CALLBACK(on_alarm_get_alarm_count), service_interface);
 
        g_signal_connect(alarm_object,
                "handle-reset-alarm",
-               G_CALLBACK(on_alarm_reset_alarm), service);
+               G_CALLBACK(on_alarm_reset_alarm), service_interface);
 
        g_signal_connect(alarm_object,
                "handle-reset-all-alarm",
-               G_CALLBACK(on_alarm_reset_all_alarm), service);
+               G_CALLBACK(on_alarm_reset_all_alarm), service_interface);
 
        g_signal_connect(alarm_object,
                "handle-alarm",
-               G_CALLBACK(on_alarm_alarm), service);
+               G_CALLBACK(on_alarm_alarm), service_interface);
 
        g_signal_connect(alarm_object,
                "handle-reset-alarm-log",
-               G_CALLBACK(on_alarm_reset_alarm_log), service);
+               G_CALLBACK(on_alarm_reset_alarm_log), service_interface);
 
        g_signal_connect(alarm_object,
                "handle-get-alarm",
-               G_CALLBACK(on_alarm_get_alarm), service);
+               G_CALLBACK(on_alarm_get_alarm), service_interface);
 
        return TRUE;
 }
index f48454e..b054372 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_custom.h>
+
+static void on_custom_aps_send_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_custom_aps_send(ZigbeeCustom *custom_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar aps_frame_ctrl,
        gchar src_ep,
-       gchar dst_ep,
+       gchar dest_ep,
        gshort cluster_id,
        gshort profile_id,
        gchar zcl_frame_ctrl,
@@ -31,88 +46,228 @@ static gboolean on_custom_aps_send(ZigbeeCustom *custom_object,
        GVariant *payload,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
-
-       NOT_USED(custom_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(aps_frame_ctrl);
-       NOT_USED(src_ep);
-       NOT_USED(dst_ep);
-       NOT_USED(cluster_id);
-       NOT_USED(profile_id);
-       NOT_USED(zcl_frame_ctrl);
-       NOT_USED(mfg_code);
-       NOT_USED(payload);
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeCustomApsSend_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       GVariantIter *iter = NULL;
+       guint i = 0;
+
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeCustomApsSend_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.aps_frame_ctrl = aps_frame_ctrl;
+       req.src_ep = src_ep;
+       req.dest_ep = dest_ep;
+       req.cluster_id = cluster_id;
+       req.profile_id = profile_id;
+       req.zcl_frame_ctrl = zcl_frame_ctrl;
+       req.mfg_code = mfg_code;
+       g_variant_get(payload, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.payload[i])) {
+               i++;
+               if (i >= ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(custom_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_CUSTOM,
+               ZBLIB_CUSTOM_OPS_APS_SEND,
+               &req, sizeof(req),
+               on_custom_aps_send_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_custom_zcl_send_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_custom_zcl_send(ZigbeeCustom *custom_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar src_ep,
-       gchar dst_ep,
+       gchar dest_ep,
        gshort cluster_id,
        gchar zcl_frame_ctrl,
        gchar cmd_id,
        GVariant *payload,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
-
-       NOT_USED(custom_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(src_ep);
-       NOT_USED(dst_ep);
-       NOT_USED(cluster_id);
-       NOT_USED(zcl_frame_ctrl);
-       NOT_USED(cmd_id);
-       NOT_USED(payload);
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeCustomZclSend_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       GVariantIter *iter = NULL;
+       guint i = 0;
+
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeCustomZclSend_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.src_ep = src_ep;
+       req.dest_ep = dest_ep;
+       req.cluster_id = cluster_id;
+       req.zcl_frame_ctrl = zcl_frame_ctrl;
+       req.cmd_id = cmd_id;
+       g_variant_get(payload, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.payload[i])) {
+               i++;
+               if (i >= ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(custom_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_CUSTOM,
+               ZBLIB_CUSTOM_OPS_ZCL_SEND,
+               &req, sizeof(req),
+               on_custom_zcl_send_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_custom_send_to_local_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_custom_send_to_local(ZigbeeCustom *custom_object,
        GDBusMethodInvocation *invocation,
        GVariant *data,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeCustomSendToLocal_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(custom_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(data);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeCustomSendToLocal_t));
+
+       /* Update request structure */
+       g_variant_get(data, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.data[i])) {
+               i++;
+               if (i >= ZIGBEE_CUSTOM_SEND_PAYLOAD_LEN)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(custom_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_CUSTOM,
+               ZBLIB_CUSTOM_OPS_SEND_TO_LOCAL,
+               &req, sizeof(req),
+               on_custom_send_to_local_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_custom_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_custom_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeCustom *custom_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -127,15 +282,15 @@ gboolean zigbee_service_dbus_interface_custom_init(ZigBeeService *service,
         */
        g_signal_connect(custom_object,
                "handle-aps-send",
-               G_CALLBACK(on_custom_aps_send), service);
+               G_CALLBACK(on_custom_aps_send), service_interface);
 
        g_signal_connect(custom_object,
                "handle-zcl-send",
-               G_CALLBACK(on_custom_zcl_send), service);
+               G_CALLBACK(on_custom_zcl_send), service_interface);
 
        g_signal_connect(custom_object,
                "handle-send-to-local",
-               G_CALLBACK(on_custom_send_to_local), service);
+               G_CALLBACK(on_custom_send_to_local), service_interface);
 
        return TRUE;
 }
index 0a656fb..a6e21c0 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_door_lock.h>
+
+static void on_door_lock_subscribe_lock_event_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_door_lock_subscribe_lock_event(ZigbeeDoor_lock *door_lock_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeDoorLockSubscriberLockEvent_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(door_lock_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeDoorLockSubscriberLockEvent_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(door_lock_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_DOOR_LOCK,
+               ZBLIB_DOOR_LOCK_OPS_SUBSCRIBE_LOCK_EVENT,
+               &req, sizeof(req),
+               on_door_lock_subscribe_lock_event_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_door_lock_set_door_lock_pin_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_door_lock_set_door_lock_pin(ZigbeeDoor_lock *door_lock_object,
        GDBusMethodInvocation *invocation,
        gshort uid,
@@ -50,26 +116,77 @@ static gboolean on_door_lock_set_door_lock_pin(ZigbeeDoor_lock *door_lock_object
        gchar *pin,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
-
-       NOT_USED(door_lock_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(uid);
-       NOT_USED(ustatus);
-       NOT_USED(utype);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
-       NOT_USED(pin);
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeDoorLockSetDoorLockPin_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       GVariantIter *iter = NULL;
+       guint i = 0;
+
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeDoorLockSetDoorLockPin_t));
+
+       /* Update request structure */
+       req.uid = uid;
+       req.ustatus = ustatus;
+       req.utype = utype;
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+       g_strlcpy(req.pin, pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN + 1);
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(door_lock_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_DOOR_LOCK,
+               ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK_PIN,
+               &req, sizeof(req),
+               on_door_lock_set_door_lock_pin_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_door_lock_set_door_lock_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_door_lock_set_door_lock(ZigbeeDoor_lock *door_lock_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -78,53 +195,142 @@ static gboolean on_door_lock_set_door_lock(ZigbeeDoor_lock *door_lock_object,
        gint lock_unlock_type,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeDoorLockSetDoorLock_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(door_lock_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
-       NOT_USED(pin);
-       NOT_USED(lock_unlock_type);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeDoorLockSetDoorLock_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+       g_strlcpy(req.pin, pin, ZIGBEE_DOOR_LOCK_MAX_PIN_LEN + 1);
+       req.lock_unlock_type = lock_unlock_type;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(door_lock_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_DOOR_LOCK,
+               ZBLIB_DOOR_LOCK_OPS_SET_DOOR_LOCK,
+               &req, sizeof(req),
+               on_door_lock_set_door_lock_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_door_lock_get_lock_state_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_door_lock_get_lock_state(ZigbeeDoor_lock *door_lock_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeDoorLockGetDoorLock_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(door_lock_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeDoorLockGetDoorLock_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(door_lock_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_DOOR_LOCK,
+               ZBLIB_DOOR_LOCK_OPS_GET_LOCK_STATE,
+               &req, sizeof(req),
+               on_door_lock_get_lock_state_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_door_lock_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_door_lock_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeDoor_lock *door_lock_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -139,19 +345,19 @@ gboolean zigbee_service_dbus_interface_door_lock_init(ZigBeeService *service,
         */
        g_signal_connect(door_lock_object,
                "handle-subscribe-lock-event",
-               G_CALLBACK(on_door_lock_subscribe_lock_event), service);
+               G_CALLBACK(on_door_lock_subscribe_lock_event), service_interface);
 
        g_signal_connect(door_lock_object,
                "handle-set-door-lock-pin",
-               G_CALLBACK(on_door_lock_set_door_lock_pin), service);
+               G_CALLBACK(on_door_lock_set_door_lock_pin), service_interface);
 
        g_signal_connect(door_lock_object,
                "handle-set-door-lock",
-               G_CALLBACK(on_door_lock_set_door_lock), service);
+               G_CALLBACK(on_door_lock_set_door_lock), service_interface);
 
        g_signal_connect(door_lock_object,
                "handle-get-lock-state",
-               G_CALLBACK(on_door_lock_get_lock_state), service);
+               G_CALLBACK(on_door_lock_get_lock_state), service_interface);
 
        return TRUE;
 }
index 46bef49..b3185cc 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_fan_control.h>
+
+static void on_fan_control_set_fan_mode_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_fan_control_set_fan_mode(ZigbeeFan_control *fan_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeFanControlSetFanMode_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(fan_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeFanControlSetFanMode_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(fan_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_FAN_CONTROL,
+               ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE,
+               &req, sizeof(req),
+               on_fan_control_set_fan_mode_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_fan_control_get_fan_mode_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_fan_control_get_fan_mode(ZigbeeFan_control *fan_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeFanControlGetFanMode_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(fan_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeFanControlGetFanMode_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(fan_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_FAN_CONTROL,
+               ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE,
+               &req, sizeof(req),
+               on_fan_control_get_fan_mode_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_fan_control_set_fan_mode_sequence_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_fan_control_set_fan_mode_sequence(ZigbeeFan_control *fan_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeFanControlSetFanModeSequence_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(fan_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeFanControlSetFanModeSequence_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(fan_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_FAN_CONTROL,
+               ZBLIB_FAN_CONTROL_OPS_SET_FAN_MODE_SEQUENCE,
+               &req, sizeof(req),
+               on_fan_control_set_fan_mode_sequence_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_fan_control_get_fan_mode_sequence_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_fan_control_get_fan_mode_sequence(ZigbeeFan_control *fan_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeFanControlGetFanModeSequence_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(fan_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeFanControlGetFanModeSequence_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(fan_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_FAN_CONTROL,
+               ZBLIB_FAN_CONTROL_OPS_GET_FAN_MODE_SEQUENCE,
+               &req, sizeof(req),
+               on_fan_control_get_fan_mode_sequence_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_fan_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_fan_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeFan_control *fan_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -127,19 +333,19 @@ gboolean zigbee_service_dbus_interface_fan_control_init(ZigBeeService *service,
         */
        g_signal_connect(fan_control_object,
                "handle-set-fan-mode",
-               G_CALLBACK(on_fan_control_set_fan_mode), service);
+               G_CALLBACK(on_fan_control_set_fan_mode), service_interface);
 
        g_signal_connect(fan_control_object,
                "handle-get-fan-mode",
-               G_CALLBACK(on_fan_control_get_fan_mode), service);
+               G_CALLBACK(on_fan_control_get_fan_mode), service_interface);
 
        g_signal_connect(fan_control_object,
                "handle-set-fan-mode-sequence",
-               G_CALLBACK(on_fan_control_set_fan_mode_sequence), service);
+               G_CALLBACK(on_fan_control_set_fan_mode_sequence), service_interface);
 
        g_signal_connect(fan_control_object,
                "handle-get-fan-mode-sequence",
-               G_CALLBACK(on_fan_control_get_fan_mode_sequence), service);
+               G_CALLBACK(on_fan_control_get_fan_mode_sequence), service_interface);
 
        return TRUE;
 }
index c7cb20f..a6f7a5a 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_level_control.h>
+
+static void on_level_control_move_to_level_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_move_to_level(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -26,24 +41,67 @@ static gboolean on_level_control_move_to_level(ZigbeeLevel_control *level_contro
        gshort transition,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlMoveToLevel_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(level);
-       NOT_USED(transition);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlMoveToLevel_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.level = level;
+       req.transition = transition;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL,
+               &req, sizeof(req),
+               on_level_control_move_to_level_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_move_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_move(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -52,24 +110,67 @@ static gboolean on_level_control_move(ZigbeeLevel_control *level_control_object,
        gchar rate,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlMove_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(move_mode);
-       NOT_USED(rate);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlMove_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.move_mode = move_mode;
+       req.rate = rate;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_MOVE,
+               &req, sizeof(req),
+               on_level_control_move_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_step_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_step(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -79,25 +180,68 @@ static gboolean on_level_control_step(ZigbeeLevel_control *level_control_object,
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlStep_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(step_mode);
-       NOT_USED(move_mode);
-       NOT_USED(transition_time);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlStep_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.step_mode = step_mode;
+       req.move_mode = move_mode;
+       req.transition_time = transition_time;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_STEP,
+               &req, sizeof(req),
+               on_level_control_step_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_move_to_level_with_on_off_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_move_to_level_with_on_off(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -106,24 +250,67 @@ static gboolean on_level_control_move_to_level_with_on_off(ZigbeeLevel_control *
        gshort transition,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlMoveToLevelWithOnOff_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(level);
-       NOT_USED(transition);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlMoveToLevelWithOnOff_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.level = level;
+       req.transition = transition;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF,
+               &req, sizeof(req),
+               on_level_control_move_to_level_with_on_off_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_move_with_on_off_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_move_with_on_off(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -132,24 +319,67 @@ static gboolean on_level_control_move_with_on_off(ZigbeeLevel_control *level_con
        gchar rate,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlMoveWithOnOff_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(move_mode);
-       NOT_USED(rate);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlMoveWithOnOff_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.move_mode = move_mode;
+       req.rate = rate;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF,
+               &req, sizeof(req),
+               on_level_control_move_with_on_off_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_step_with_on_off_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_step_with_on_off(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -159,54 +389,127 @@ static gboolean on_level_control_step_with_on_off(ZigbeeLevel_control *level_con
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlStepWithOnOff_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(step_mode);
-       NOT_USED(move_mode);
-       NOT_USED(transition_time);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlStepWithOnOff_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.step_mode = step_mode;
+       req.move_mode = move_mode;
+       req.transition_time = transition_time;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF,
+               &req, sizeof(req),
+               on_level_control_step_with_on_off_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_level_control_stop_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_level_control_stop(ZigbeeLevel_control *level_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeLevelControlStop_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(level_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeLevelControlStop_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_LEVEL_CONTROL,
+               ZBLIB_LEVEL_CONTROL_OPS_STOP,
+               &req, sizeof(req),
+               on_level_control_stop_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_level_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_level_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeLevel_control *level_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -221,31 +524,31 @@ gboolean zigbee_service_dbus_interface_level_control_init(ZigBeeService *service
         */
        g_signal_connect(level_control_object,
                "handle-move-to-level",
-               G_CALLBACK(on_level_control_move_to_level), service);
+               G_CALLBACK(on_level_control_move_to_level), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-move",
-               G_CALLBACK(on_level_control_move), service);
+               G_CALLBACK(on_level_control_move), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-step",
-               G_CALLBACK(on_level_control_step), service);
+               G_CALLBACK(on_level_control_step), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-move-to-level-with-on-off",
-               G_CALLBACK(on_level_control_move_to_level_with_on_off), service);
+               G_CALLBACK(on_level_control_move_to_level_with_on_off), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-move-with-on-off",
-               G_CALLBACK(on_level_control_move_with_on_off), service);
+               G_CALLBACK(on_level_control_move_with_on_off), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-step-with-on-off",
-               G_CALLBACK(on_level_control_step_with_on_off), service);
+               G_CALLBACK(on_level_control_step_with_on_off), service_interface);
 
        g_signal_connect(level_control_object,
                "handle-stop",
-               G_CALLBACK(on_level_control_stop), service);
+               G_CALLBACK(on_level_control_stop), service_interface);
 
        return TRUE;
 }
index f643db1..4586110 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_mfglib_control.h>
+
+static void on_mfglib_control_start_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_start(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gboolean mfglib_start,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlStart_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(mfglib_start);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlStart_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.mfglib_start = ((mfglib_start == TRUE) ? 1 : 0);
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_START,
+               &req, sizeof(req),
+               on_mfglib_control_start_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_end_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_end(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlEnd_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlEnd_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_END,
+               &req, sizeof(req),
+               on_mfglib_control_end_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_start_tone_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_start_tone(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlStartTone_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlStartTone_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_START_TONE,
+               &req, sizeof(req),
+               on_mfglib_control_start_tone_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_stop_tone_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_stop_tone(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlStopTone_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlStopTone_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_STOP_TONE,
+               &req, sizeof(req),
+               on_mfglib_control_stop_tone_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_start_stream_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_start_stream(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlStartStream_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlStartStream_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_START_STREAM,
+               &req, sizeof(req),
+               on_mfglib_control_start_stream_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_stop_stream_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_stop_stream(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlStopStream_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlStopStream_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_STOP_STREAM,
+               &req, sizeof(req),
+               on_mfglib_control_stop_stream_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_send_packet_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_send_packet(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *packet_content,
        gint packet_length,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlSendPacket_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(packet_content);
-       NOT_USED(packet_length);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlSendPacket_t));
+
+       /* Update request structure */
+       g_variant_get(packet_content, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.packet_content[i])) {
+               i++;
+               if (i >= (guint)packet_length)
+                       break;
+       }
+       req.packet_length = packet_length;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_SEND_PACKET,
+               &req, sizeof(req),
+               on_mfglib_control_send_packet_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_set_channel_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_set_channel(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar channel,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlSetChannel_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(channel);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlSetChannel_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.channel = channel;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_SET_CHANNEL,
+               &req, sizeof(req),
+               on_mfglib_control_set_channel_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_get_channel_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_get_channel(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlGetChannel_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlGetChannel_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_GET_CHANNEL,
+               &req, sizeof(req),
+               on_mfglib_control_get_channel_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_set_power_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_set_power(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -211,65 +685,218 @@ static gboolean on_mfglib_control_set_power(ZigbeeMfglib_control *mfglib_control
        guint power,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlSetPower_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(tx_power_mode);
-       NOT_USED(power);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlSetPower_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.tx_power_mode = tx_power_mode;
+       req.power = power;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_SET_POWER,
+               &req, sizeof(req),
+               on_mfglib_control_set_power_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_get_power_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_get_power(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlGetPower_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlGetPower_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_GET_POWER,
+               &req, sizeof(req),
+               on_mfglib_control_get_power_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_set_synoffset_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_set_synoffset(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar test_channel,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlSetSynOffset_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(test_channel);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlSetSynOffset_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.channel = test_channel;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_SET_SYNOFFSET,
+               &req, sizeof(req),
+               on_mfglib_control_set_synoffset_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_get_synoffset_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_get_synoffset(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *packet,
@@ -278,111 +905,353 @@ static gboolean on_mfglib_control_get_synoffset(ZigbeeMfglib_control *mfglib_con
        gchar rssi,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlGetSynOffset_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(packet);
-       NOT_USED(packet_length);
-       NOT_USED(link_quality);
-       NOT_USED(rssi);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlGetSynOffset_t));
+
+       /* Update request structure */
+       g_variant_get(packet, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.packet[i])) {
+               i++;
+               if (i >= (guint)packet_length)
+                       break;
+       }
+       req.packet_length = packet_length;
+       req.link_quality = link_quality;
+       req.rssi = rssi;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_GET_SYNOFFSET,
+               &req, sizeof(req),
+               on_mfglib_control_get_synoffset_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_rx_start_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_rx_start(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlRxStart_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlRxStart_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_RX_START,
+               &req, sizeof(req),
+               on_mfglib_control_rx_start_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_rx_stop_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_rx_stop(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlRxStop_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlRxStop_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_RX_STOP,
+               &req, sizeof(req),
+               on_mfglib_control_rx_stop_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_rx_verify_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_rx_verify(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlRxVerify_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlRxVerify_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_RX_VERIFY,
+               &req, sizeof(req),
+               on_mfglib_control_rx_verify_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_mfglib_control_get_rssi_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_mfglib_control_get_rssi(ZigbeeMfglib_control *mfglib_control_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeMfglibControlGetRssi_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(mfglib_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeMfglibControlGetRssi_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(mfglib_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_MFGLIB_CONTROL,
+               ZBLIB_MFGLIB_CONTROL_OPS_GET_RSSI,
+               &req, sizeof(req),
+               on_mfglib_control_get_rssi_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_mfglib_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_mfglib_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeMfglib_control *mfglib_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -397,71 +1266,71 @@ gboolean zigbee_service_dbus_interface_mfglib_control_init(ZigBeeService *servic
         */
        g_signal_connect(mfglib_control_object,
                "handle-start",
-               G_CALLBACK(on_mfglib_control_start), service);
+               G_CALLBACK(on_mfglib_control_start), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-end",
-               G_CALLBACK(on_mfglib_control_end), service);
+               G_CALLBACK(on_mfglib_control_end), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-start-tone",
-               G_CALLBACK(on_mfglib_control_start_tone), service);
+               G_CALLBACK(on_mfglib_control_start_tone), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-stop-tone",
-               G_CALLBACK(on_mfglib_control_stop_tone), service);
+               G_CALLBACK(on_mfglib_control_stop_tone), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-start-stream",
-               G_CALLBACK(on_mfglib_control_start_stream), service);
+               G_CALLBACK(on_mfglib_control_start_stream), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-stop-stream",
-               G_CALLBACK(on_mfglib_control_stop_stream), service);
+               G_CALLBACK(on_mfglib_control_stop_stream), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-send-packet",
-               G_CALLBACK(on_mfglib_control_send_packet), service);
+               G_CALLBACK(on_mfglib_control_send_packet), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-set-channel",
-               G_CALLBACK(on_mfglib_control_set_channel), service);
+               G_CALLBACK(on_mfglib_control_set_channel), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-get-channel",
-               G_CALLBACK(on_mfglib_control_get_channel), service);
+               G_CALLBACK(on_mfglib_control_get_channel), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-set-power",
-               G_CALLBACK(on_mfglib_control_set_power), service);
+               G_CALLBACK(on_mfglib_control_set_power), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-get-power",
-               G_CALLBACK(on_mfglib_control_get_power), service);
+               G_CALLBACK(on_mfglib_control_get_power), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-set-synoffset",
-               G_CALLBACK(on_mfglib_control_set_synoffset), service);
+               G_CALLBACK(on_mfglib_control_set_synoffset), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-get-synoffset",
-               G_CALLBACK(on_mfglib_control_get_synoffset), service);
+               G_CALLBACK(on_mfglib_control_get_synoffset), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-rx-start",
-               G_CALLBACK(on_mfglib_control_rx_start), service);
+               G_CALLBACK(on_mfglib_control_rx_start), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-rx-stop",
-               G_CALLBACK(on_mfglib_control_rx_stop), service);
+               G_CALLBACK(on_mfglib_control_rx_stop), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-rx-verify",
-               G_CALLBACK(on_mfglib_control_rx_verify), service);
+               G_CALLBACK(on_mfglib_control_rx_verify), service_interface);
 
        g_signal_connect(mfglib_control_object,
                "handle-get-rssi",
-               G_CALLBACK(on_mfglib_control_get_rssi), service);
+               G_CALLBACK(on_mfglib_control_get_rssi), service_interface);
 
        return TRUE;
 }
index a269b0f..15eda35 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_on_off.h>
+
+static void on_on_off_set_on_off_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_on_off_set_on_off(ZigbeeOn_off *on_off_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -25,52 +40,125 @@ static gboolean on_on_off_set_on_off(ZigbeeOn_off *on_off_object,
        gchar on_off_type,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeOnOffSetOnOff_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(on_off_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(on_off_type);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeOnOffSetOnOff_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.on_off_type = on_off_type;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(on_off_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ON_OFF,
+               ZBLIB_ON_OFF_OPS_SET_ON_OFF,
+               &req, sizeof(req),
+               on_on_off_set_on_off_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_on_off_get_on_off_state_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_on_off_get_on_off_state(ZigbeeOn_off *on_off_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeOnOffGetOnOffState_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(on_off_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeOnOffGetOnOffState_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(on_off_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ON_OFF,
+               ZBLIB_ON_OFF_OPS_GET_ON_OFF_STATE,
+               &req, sizeof(req),
+               on_on_off_get_on_off_state_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_on_off_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_on_off_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeOn_off *on_off_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -85,11 +173,11 @@ gboolean zigbee_service_dbus_interface_on_off_init(ZigBeeService *service,
         */
        g_signal_connect(on_off_object,
                "handle-set-on-off",
-               G_CALLBACK(on_on_off_set_on_off), service);
+               G_CALLBACK(on_on_off_set_on_off), service_interface);
 
        g_signal_connect(on_off_object,
                "handle-get-on-off-state",
-               G_CALLBACK(on_on_off_get_on_off_state), service);
+               G_CALLBACK(on_on_off_get_on_off_state), service_interface);
 
        return TRUE;
 }
index a328db1..9422ea1 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_service.h>
+
+static void on_service_enable_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_enable(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_ENABLE,
+               NULL, 0,
+               on_service_enable_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_disable_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_disable(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_DISABLE,
+               NULL, 0,
+               on_service_disable_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_zb_hw_reset_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_zb_hw_reset(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_ZB_HW_RESET,
+               NULL, 0,
+               on_service_zb_hw_reset_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_form_network_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_form_network(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_FORM_NETWORK,
+               NULL, 0,
+               on_service_form_network_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_coex_start_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_coex_start(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gchar channel,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceCoexStart_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(channel);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeServiceCoexStart_t));
+
+       /* Update request structure */
+       req.channel = channel;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_COEX_START,
+               &req, sizeof(req),
+               on_service_coex_start_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_coex_stop_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_coex_stop(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_COEX_STOP,
+               NULL, 0,
+               on_service_coex_stop_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_leave_network_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_leave_network(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_LEAVE_NETWORK,
+               NULL, 0,
+               on_service_leave_network_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_network_info_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_network_info(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_NETWORK_INFO,
+               NULL, 0,
+               on_service_get_network_info_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_permit_join_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_permit_join(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gint duration,
-       gboolean broadcast_mgmt_permit_join,
+       gboolean permit_join,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServicePermitJoin_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(duration);
-       NOT_USED(broadcast_mgmt_permit_join);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeServicePermitJoin_t));
+
+       /* Update request structure */
+       req.duration = duration;
+       req.permit_join = permit_join;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_PERMIT_JOIN,
+               &req, sizeof(req),
+               on_service_permit_join_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_leave_request_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_leave_request(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -193,146 +560,451 @@ static gboolean on_service_leave_request(ZigbeeService *service_object,
        gchar rejoin,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceLeaveRequest_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(remove_child);
-       NOT_USED(rejoin);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeServiceLeaveRequest_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.remove_child = remove_child;
+       req.rejoin = rejoin;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_LEAVE_REQUEST,
+               &req, sizeof(req),
+               on_service_leave_request_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_device_list_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_device_list(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_DEVICE_LIST,
+               NULL, 0,
+               on_service_get_device_list_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_mac_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_mac(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_MAC,
+               NULL, 0,
+               on_service_get_mac_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_device_info_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_device_info(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_DEVICE_INFO,
+               NULL, 0,
+               on_service_get_device_info_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_endpoint_list_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_endpoint_list(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceGetEndpointList_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeServiceGetEndpointList_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_ENDPOINT_LIST,
+               &req, sizeof(req),
+               on_service_get_endpoint_list_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_cluster_list_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_cluster_list(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceGetClusterList_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeServiceGetClusterList_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_CLUSTER_LIST,
+               &req, sizeof(req),
+               on_service_get_cluster_list_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_service_get_node_type_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_service_get_node_type(ZigbeeService *service_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeServiceGetNodeType_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(service_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeServiceGetNodeType_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(service_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_SERVICE,
+               ZBLIB_SERVICE_OPS_GET_NODE_TYPE,
+               &req, sizeof(req),
+               on_service_get_node_type_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_service_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_service_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeService *service_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -347,67 +1019,67 @@ gboolean zigbee_service_dbus_interface_service_init(ZigBeeService *service,
         */
        g_signal_connect(service_object,
                "handle-enable",
-               G_CALLBACK(on_service_enable), service);
+               G_CALLBACK(on_service_enable), service_interface);
 
        g_signal_connect(service_object,
                "handle-disable",
-               G_CALLBACK(on_service_disable), service);
+               G_CALLBACK(on_service_disable), service_interface);
 
        g_signal_connect(service_object,
                "handle-zb-hw-reset",
-               G_CALLBACK(on_service_zb_hw_reset), service);
+               G_CALLBACK(on_service_zb_hw_reset), service_interface);
 
        g_signal_connect(service_object,
                "handle-form-network",
-               G_CALLBACK(on_service_form_network), service);
+               G_CALLBACK(on_service_form_network), service_interface);
 
        g_signal_connect(service_object,
                "handle-coex-start",
-               G_CALLBACK(on_service_coex_start), service);
+               G_CALLBACK(on_service_coex_start), service_interface);
 
        g_signal_connect(service_object,
                "handle-coex-stop",
-               G_CALLBACK(on_service_coex_stop), service);
+               G_CALLBACK(on_service_coex_stop), service_interface);
 
        g_signal_connect(service_object,
                "handle-leave-network",
-               G_CALLBACK(on_service_leave_network), service);
+               G_CALLBACK(on_service_leave_network), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-network-info",
-               G_CALLBACK(on_service_get_network_info), service);
+               G_CALLBACK(on_service_get_network_info), service_interface);
 
        g_signal_connect(service_object,
                "handle-permit-join",
-               G_CALLBACK(on_service_permit_join), service);
+               G_CALLBACK(on_service_permit_join), service_interface);
 
        g_signal_connect(service_object,
                "handle-leave-request",
-               G_CALLBACK(on_service_leave_request), service);
+               G_CALLBACK(on_service_leave_request), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-device-list",
-               G_CALLBACK(on_service_get_device_list), service);
+               G_CALLBACK(on_service_get_device_list), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-mac",
-               G_CALLBACK(on_service_get_mac), service);
+               G_CALLBACK(on_service_get_mac), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-device-info",
-               G_CALLBACK(on_service_get_device_info), service);
+               G_CALLBACK(on_service_get_device_info), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-endpoint-list",
-               G_CALLBACK(on_service_get_endpoint_list), service);
+               G_CALLBACK(on_service_get_endpoint_list), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-cluster-list",
-               G_CALLBACK(on_service_get_cluster_list), service);
+               G_CALLBACK(on_service_get_cluster_list), service_interface);
 
        g_signal_connect(service_object,
                "handle-get-node-type",
-               G_CALLBACK(on_service_get_node_type), service);
+               G_CALLBACK(on_service_get_node_type), service_interface);
 
        return TRUE;
 }
index eb71e7c..b512169 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_thermostat.h>
+
+static void on_thermostat_get_local_temp_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_thermostat_get_local_temp(ZigbeeThermostat *thermostat_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeThermostatGetLocalTemp_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(thermostat_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeThermostatGetLocalTemp_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(thermostat_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_THERMOSTAT,
+               ZBLIB_THERMOSTAT_OPS_GET_LOCAL_TEMP,
+               &req, sizeof(req),
+               on_thermostat_get_local_temp_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_thermostat_get_weekly_schedule_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_thermostat_get_weekly_schedule(ZigbeeThermostat *thermostat_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -48,24 +114,75 @@ static gboolean on_thermostat_get_weekly_schedule(ZigbeeThermostat *thermostat_o
        gchar mode,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeThermostatGetWeeklySchedule_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(thermostat_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
-       NOT_USED(no_of_days);
-       NOT_USED(mode);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeThermostatGetWeeklySchedule_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+       req.num_of_days = no_of_days;
+       req.mode = mode;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(thermostat_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_THERMOSTAT,
+               ZBLIB_THERMOSTAT_OPS_GET_WEEKLY_SCHEDULE,
+               &req, sizeof(req),
+               on_thermostat_get_weekly_schedule_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_thermostat_set_weekly_schedule_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_thermostat_set_weekly_schedule(ZigbeeThermostat *thermostat_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
@@ -77,49 +194,156 @@ static gboolean on_thermostat_set_weekly_schedule(ZigbeeThermostat *thermostat_o
        gchar payload_len,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
-
-       NOT_USED(thermostat_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
-       NOT_USED(no_of_transitions);
-       NOT_USED(no_of_days);
-       NOT_USED(mode);
-       NOT_USED(payload);
-       NOT_USED(payload_len);
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeThermostatSetWeeklySchedule_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       GVariantIter *iter = NULL;
+       guint i = 0;
+
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeThermostatSetWeeklySchedule_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+       req.no_of_transitions = no_of_transitions;
+       req.num_of_days = no_of_days;
+       req.mode = mode;
+       g_variant_get(payload, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.payload[i])) {
+               i++;
+               if (i >= (guint)payload_len)
+                       break;
+       }
+       req.payload_len = payload_len;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(thermostat_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_THERMOSTAT,
+               ZBLIB_THERMOSTAT_OPS_SET_WEEKLY_SCHEDULE,
+               &req, sizeof(req),
+               on_thermostat_set_weekly_schedule_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_thermostat_clear_weekly_schedule_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_thermostat_clear_weekly_schedule(ZigbeeThermostat *thermostat_object,
        GDBusMethodInvocation *invocation,
        GVariant *eui64,
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeThermostatClearWeeklySchedule_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(thermostat_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(eui64);
-       NOT_USED(endpoint);
+       GVariantIter *iter = NULL;
+       guint i = 0;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       gboolean ret;
+
+       memset(&req, 0x0, sizeof(ZigbeeThermostatClearWeeklySchedule_t));
+
+       /* Update request structure */
+       g_variant_get(eui64, "ay", &iter);
+       while (g_variant_iter_loop(iter, "y", req.eui64[i])) {
+               i++;
+               if (i >= ZIGBEE_EUI64_SIZE)
+                       break;
+       }
+       req.endpoint = endpoint;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(thermostat_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_THERMOSTAT,
+               ZBLIB_THERMOSTAT_OPS_CLEAR_WEEKLY_SCHEDULE,
+               &req, sizeof(req),
+               on_thermostat_clear_weekly_schedule_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
+static void on_thermostat_setpoint_raise_lower_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_thermostat_setpoint_raise_lower(ZigbeeThermostat *thermostat_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
@@ -128,31 +352,61 @@ static gboolean on_thermostat_setpoint_raise_lower(ZigbeeThermostat *thermostat_
        gchar amount,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeThermostatSetpointRaiseLower_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(thermostat_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(endpoint);
-       NOT_USED(mode);
-       NOT_USED(amount);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeThermostatSetpointRaiseLower_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.endpoint = endpoint;
+       req.mode = mode;
+       req.amount = amount;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(thermostat_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_THERMOSTAT,
+               ZBLIB_THERMOSTAT_OPS_SETPOINT_RAISE_LOWER,
+               &req, sizeof(req),
+               on_thermostat_setpoint_raise_lower_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_thermostat_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_thermostat_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeThermostat *thermostat_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -167,23 +421,23 @@ gboolean zigbee_service_dbus_interface_thermostat_init(ZigBeeService *service,
         */
        g_signal_connect(thermostat_object,
                "handle-get-local-temp",
-               G_CALLBACK(on_thermostat_get_local_temp), service);
+               G_CALLBACK(on_thermostat_get_local_temp), service_interface);
 
        g_signal_connect(thermostat_object,
                "handle-get-weekly-schedule",
-               G_CALLBACK(on_thermostat_get_weekly_schedule), service);
+               G_CALLBACK(on_thermostat_get_weekly_schedule), service_interface);
 
        g_signal_connect(thermostat_object,
                "handle-set-weekly-schedule",
-               G_CALLBACK(on_thermostat_set_weekly_schedule), service);
+               G_CALLBACK(on_thermostat_set_weekly_schedule), service_interface);
 
        g_signal_connect(thermostat_object,
                "handle-clear-weekly-schedule",
-               G_CALLBACK(on_thermostat_clear_weekly_schedule), service);
+               G_CALLBACK(on_thermostat_clear_weekly_schedule), service_interface);
 
        g_signal_connect(thermostat_object,
                "handle-setpoint-raise-lower",
-               G_CALLBACK(on_thermostat_setpoint_raise_lower), service);
+               G_CALLBACK(on_thermostat_setpoint_raise_lower), service_interface);
 
        return TRUE;
 }
index 5af3a5c..60b5e61 100644 (file)
@@ -26,11 +26,11 @@ static gboolean on_zcl_color_move_to_hue(ZigbeeZcl_color *zcl_color_object,
        gchar rate,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(move_mode);
@@ -52,11 +52,11 @@ static gboolean on_zcl_color_move_hue(ZigbeeZcl_color *zcl_color_object,
        gchar direction,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(hue);
@@ -79,11 +79,11 @@ static gboolean on_zcl_color_step_hue(ZigbeeZcl_color *zcl_color_object,
        gchar transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(step_mode);
@@ -106,11 +106,11 @@ static gboolean on_zcl_color_move_to_saturation(ZigbeeZcl_color *zcl_color_objec
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(saturation);
@@ -132,11 +132,11 @@ static gboolean on_zcl_color_move_saturation(ZigbeeZcl_color *zcl_color_object,
        gchar rate,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(move_mode);
@@ -159,11 +159,11 @@ static gboolean on_zcl_color_step_saturation(ZigbeeZcl_color *zcl_color_object,
        gchar transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(step_mode);
@@ -187,11 +187,11 @@ static gboolean on_zcl_color_move_to_hue_and_saturation(ZigbeeZcl_color *zcl_col
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(hue);
@@ -215,11 +215,11 @@ static gboolean on_zcl_color_move_to_color(ZigbeeZcl_color *zcl_color_object,
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(start_x);
@@ -242,11 +242,11 @@ static gboolean on_zcl_color_move_color(ZigbeeZcl_color *zcl_color_object,
        gshort rate_y,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(rate_x);
@@ -269,11 +269,11 @@ static gboolean on_zcl_color_step_color(ZigbeeZcl_color *zcl_color_object,
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(rate_x);
@@ -296,11 +296,11 @@ static gboolean on_zcl_color_move_color_temperature(ZigbeeZcl_color *zcl_color_o
        gshort transition_time,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_color_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
        NOT_USED(color_temperature);
@@ -314,13 +314,13 @@ static gboolean on_zcl_color_move_color_temperature(ZigbeeZcl_color *zcl_color_o
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zcl_color_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_color_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZcl_color *zcl_color_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -335,47 +335,47 @@ gboolean zigbee_service_dbus_interface_zcl_color_init(ZigBeeService *service,
         */
        g_signal_connect(zcl_color_object,
                "handle-move-to-hue",
-               G_CALLBACK(on_zcl_color_move_to_hue), service);
+               G_CALLBACK(on_zcl_color_move_to_hue), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-hue",
-               G_CALLBACK(on_zcl_color_move_hue), service);
+               G_CALLBACK(on_zcl_color_move_hue), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-step-hue",
-               G_CALLBACK(on_zcl_color_step_hue), service);
+               G_CALLBACK(on_zcl_color_step_hue), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-to-saturation",
-               G_CALLBACK(on_zcl_color_move_to_saturation), service);
+               G_CALLBACK(on_zcl_color_move_to_saturation), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-saturation",
-               G_CALLBACK(on_zcl_color_move_saturation), service);
+               G_CALLBACK(on_zcl_color_move_saturation), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-step-saturation",
-               G_CALLBACK(on_zcl_color_step_saturation), service);
+               G_CALLBACK(on_zcl_color_step_saturation), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-to-hue-and-saturation",
-               G_CALLBACK(on_zcl_color_move_to_hue_and_saturation), service);
+               G_CALLBACK(on_zcl_color_move_to_hue_and_saturation), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-to-color",
-               G_CALLBACK(on_zcl_color_move_to_color), service);
+               G_CALLBACK(on_zcl_color_move_to_color), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-color",
-               G_CALLBACK(on_zcl_color_move_color), service);
+               G_CALLBACK(on_zcl_color_move_color), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-step-color",
-               G_CALLBACK(on_zcl_color_step_color), service);
+               G_CALLBACK(on_zcl_color_step_color), service_interface);
 
        g_signal_connect(zcl_color_object,
                "handle-move-color-temperature",
-               G_CALLBACK(on_zcl_color_move_color_temperature), service);
+               G_CALLBACK(on_zcl_color_move_color_temperature), service_interface);
 
        return TRUE;
 }
index a365469..749d20e 100644 (file)
@@ -26,11 +26,11 @@ static gboolean on_zcl_group_add_group(ZigbeeZcl_group *zcl_group_object,
        GVariant *group_name,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -51,11 +51,11 @@ static gboolean on_zcl_group_view_group(ZigbeeZcl_group *zcl_group_object,
        gshort group_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -76,11 +76,11 @@ static gboolean on_zcl_group_get_group_membership(ZigbeeZcl_group *zcl_group_obj
        GVariant *group_list,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_count);
@@ -101,11 +101,11 @@ static gboolean on_zcl_group_remove_group(ZigbeeZcl_group *zcl_group_object,
        gshort group_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -124,11 +124,11 @@ static gboolean on_zcl_group_remove_all_group(ZigbeeZcl_group *zcl_group_object,
        gchar dst_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
 
@@ -148,11 +148,11 @@ static gboolean on_zcl_group_add_group_if_identifying(ZigbeeZcl_group *zcl_group
        GVariant *group_name,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_group_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -166,13 +166,13 @@ static gboolean on_zcl_group_add_group_if_identifying(ZigbeeZcl_group *zcl_group
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zcl_group_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_group_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZcl_group *zcl_group_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -187,27 +187,27 @@ gboolean zigbee_service_dbus_interface_zcl_group_init(ZigBeeService *service,
         */
        g_signal_connect(zcl_group_object,
                "handle-add-group",
-               G_CALLBACK(on_zcl_group_add_group), service);
+               G_CALLBACK(on_zcl_group_add_group), service_interface);
 
        g_signal_connect(zcl_group_object,
                "handle-view-group",
-               G_CALLBACK(on_zcl_group_view_group), service);
+               G_CALLBACK(on_zcl_group_view_group), service_interface);
 
        g_signal_connect(zcl_group_object,
                "handle-get-group-membership",
-               G_CALLBACK(on_zcl_group_get_group_membership), service);
+               G_CALLBACK(on_zcl_group_get_group_membership), service_interface);
 
        g_signal_connect(zcl_group_object,
                "handle-remove-group",
-               G_CALLBACK(on_zcl_group_remove_group), service);
+               G_CALLBACK(on_zcl_group_remove_group), service_interface);
 
        g_signal_connect(zcl_group_object,
                "handle-remove-all-group",
-               G_CALLBACK(on_zcl_group_remove_all_group), service);
+               G_CALLBACK(on_zcl_group_remove_all_group), service_interface);
 
        g_signal_connect(zcl_group_object,
                "handle-add-group-if-identifying",
-               G_CALLBACK(on_zcl_group_add_group_if_identifying), service);
+               G_CALLBACK(on_zcl_group_add_group_if_identifying), service_interface);
 
        return TRUE;
 }
index b4832be..c5ca814 100644 (file)
@@ -26,11 +26,11 @@ static gboolean on_zcl_poll_control_check_in_response(ZigbeeZcl_poll_control *zc
        gshort fast_poll_timeout,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_poll_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(start_fast_polling);
@@ -50,11 +50,11 @@ static gboolean on_zcl_poll_control_fast_poll_stop(ZigbeeZcl_poll_control *zcl_p
        gchar dst_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_poll_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
 
@@ -73,11 +73,11 @@ static gboolean on_zcl_poll_control_set_long_poll_interval(ZigbeeZcl_poll_contro
        guint new_long_poll_interval,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_poll_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(new_long_poll_interval);
@@ -97,11 +97,11 @@ static gboolean on_zcl_poll_control_set_short_poll_interval(ZigbeeZcl_poll_contr
        guint new_short_poll_interval,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_poll_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(new_short_poll_interval);
@@ -114,13 +114,13 @@ static gboolean on_zcl_poll_control_set_short_poll_interval(ZigbeeZcl_poll_contr
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zcl_poll_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_poll_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZcl_poll_control *zcl_poll_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -135,19 +135,19 @@ gboolean zigbee_service_dbus_interface_zcl_poll_control_init(ZigBeeService *serv
         */
        g_signal_connect(zcl_poll_control_object,
                "handle-check-in-response",
-               G_CALLBACK(on_zcl_poll_control_check_in_response), service);
+               G_CALLBACK(on_zcl_poll_control_check_in_response), service_interface);
 
        g_signal_connect(zcl_poll_control_object,
                "handle-fast-poll-stop",
-               G_CALLBACK(on_zcl_poll_control_fast_poll_stop), service);
+               G_CALLBACK(on_zcl_poll_control_fast_poll_stop), service_interface);
 
        g_signal_connect(zcl_poll_control_object,
                "handle-set-long-poll-interval",
-               G_CALLBACK(on_zcl_poll_control_set_long_poll_interval), service);
+               G_CALLBACK(on_zcl_poll_control_set_long_poll_interval), service_interface);
 
        g_signal_connect(zcl_poll_control_object,
                "handle-set-short-poll-interval",
-               G_CALLBACK(on_zcl_poll_control_set_short_poll_interval), service);
+               G_CALLBACK(on_zcl_poll_control_set_short_poll_interval), service_interface);
 
        return TRUE;
 }
index 1e358d3..6c242de 100644 (file)
@@ -30,11 +30,11 @@ static gboolean on_zcl_scene_add_scene(ZigbeeZcl_scene *zcl_scene_object,
        GVariant *ext_field_set,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -60,11 +60,11 @@ static gboolean on_zcl_scene_view_scene(ZigbeeZcl_scene *zcl_scene_object,
        gchar scene_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -86,11 +86,11 @@ static gboolean on_zcl_scene_remove_scene(ZigbeeZcl_scene *zcl_scene_object,
        gchar scene_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -112,11 +112,11 @@ static gboolean on_zcl_scene_store_scene(ZigbeeZcl_scene *zcl_scene_object,
        gchar scene_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -138,11 +138,11 @@ static gboolean on_zcl_scene_recall_scene(ZigbeeZcl_scene *zcl_scene_object,
        gchar scene_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -163,11 +163,11 @@ static gboolean on_zcl_scene_remove_all_scene(ZigbeeZcl_scene *zcl_scene_object,
        gshort group_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -187,11 +187,11 @@ static gboolean on_zcl_scene_get_scene_membership(ZigbeeZcl_scene *zcl_scene_obj
        gshort group_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zcl_scene_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(group_id);
@@ -204,13 +204,13 @@ static gboolean on_zcl_scene_get_scene_membership(ZigbeeZcl_scene *zcl_scene_obj
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zcl_scene_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zcl_scene_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZcl_scene *zcl_scene_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -225,31 +225,31 @@ gboolean zigbee_service_dbus_interface_zcl_scene_init(ZigBeeService *service,
         */
        g_signal_connect(zcl_scene_object,
                "handle-add-scene",
-               G_CALLBACK(on_zcl_scene_add_scene), service);
+               G_CALLBACK(on_zcl_scene_add_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-view-scene",
-               G_CALLBACK(on_zcl_scene_view_scene), service);
+               G_CALLBACK(on_zcl_scene_view_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-remove-scene",
-               G_CALLBACK(on_zcl_scene_remove_scene), service);
+               G_CALLBACK(on_zcl_scene_remove_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-store-scene",
-               G_CALLBACK(on_zcl_scene_store_scene), service);
+               G_CALLBACK(on_zcl_scene_store_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-recall-scene",
-               G_CALLBACK(on_zcl_scene_recall_scene), service);
+               G_CALLBACK(on_zcl_scene_recall_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-remove-all-scene",
-               G_CALLBACK(on_zcl_scene_remove_all_scene), service);
+               G_CALLBACK(on_zcl_scene_remove_all_scene), service_interface);
 
        g_signal_connect(zcl_scene_object,
                "handle-get-scene-membership",
-               G_CALLBACK(on_zcl_scene_get_scene_membership), service);
+               G_CALLBACK(on_zcl_scene_get_scene_membership), service_interface);
 
        return TRUE;
 }
index cb1c8c5..57b2a52 100644 (file)
 
 #include "zigbee_service_interface_common.h"
 
+#include <zblib_driver_zclbasic_control.h>
+
+static void on_zclbasic_control_reset_factory_default_resp(ZigBeeServiceInterface *service_interface,
+       guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
+{
+       ZigbeeServiceInterfaceRespCbData_t *cb_data =
+               (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
+
+       NOT_USED(cb_data);
+       NOT_USED(service_interface);
+       NOT_USED(request_id);
+       NOT_USED(resp_data);
+       NOT_USED(resp_data_len);
+}
+
 static gboolean on_zclbasic_control_reset_factory_default(ZigbeeZclbasic_control *zclbasic_control_object,
        GDBusMethodInvocation *invocation,
        gshort node_id,
-       gchar dst_ep,
+       gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
+       ZigbeeZclbasicControlResetFactoryDefault_t req;
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
 
-       NOT_USED(zclbasic_control_object);
-       NOT_USED(invocation);
-       NOT_USED(service);
-       NOT_USED(node_id);
-       NOT_USED(dst_ep);
+       gboolean ret;
 
-       /*
-        * TODO -
-        * Create and send request for processing
-        */
+       memset(&req, 0x0, sizeof(ZigbeeZclbasicControlResetFactoryDefault_t));
+
+       /* Update request structure */
+       req.node_id = node_id;
+       req.dest_ep = dest_ep;
+
+       /* Allocate response callback data */
+       resp_cb_data =
+               zigbee_service_dbus_interface_create_resp_cb_data(zclbasic_control_object,
+                       invocation, NULL, 0);
+       if (NULL == resp_cb_data) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
+
+       /* Dispatch request */
+       ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
+               ZBLIB_DRIVER_TYPE_ZCLBASIC_CONTROL,
+               ZBLIB_ZCLBASIC_CONTROL_OPS_RESET_FACTORY_DEFAULT,
+               &req, sizeof(req),
+               on_zclbasic_control_reset_factory_default_resp, resp_cb_data);
+       if (FALSE == ret) {
+               Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
+
+               /* Free response callback data */
+               zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
+
+               /* Send failure response */
+               ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
+
+               return TRUE;
+       }
 
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zclbasic_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclbasic_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZclbasic_control *zclbasic_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -61,7 +106,7 @@ gboolean zigbee_service_dbus_interface_zclbasic_control_init(ZigBeeService *serv
         */
        g_signal_connect(zclbasic_control_object,
                "handle-reset-factory-default",
-               G_CALLBACK(on_zclbasic_control_reset_factory_default), service);
+               G_CALLBACK(on_zclbasic_control_reset_factory_default), service_interface);
 
        return TRUE;
 }
index 14da2c5..abf5905 100644 (file)
@@ -28,11 +28,11 @@ static gboolean on_zclglobal_control_read_attributes_req(ZigbeeZclglobal_control
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(attribute_id);
        NOT_USED(attribute_ids_length);
        NOT_USED(node_id);
@@ -58,11 +58,11 @@ static gboolean on_zclglobal_control_write_attributes_req(ZigbeeZclglobal_contro
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(write_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -89,11 +89,11 @@ static gboolean on_zclglobal_control_write_attributes_undivided_req(ZigbeeZclglo
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(write_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -121,11 +121,11 @@ static gboolean on_zclglobal_control_write_attributes_no_resp(ZigbeeZclglobal_co
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(write_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -153,11 +153,11 @@ static gboolean on_zclglobal_control_write_attributes_structured(ZigbeeZclglobal
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(write_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -185,11 +185,11 @@ static gboolean on_zclglobal_control_read_attributes_structured(ZigbeeZclglobal_
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(read_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -217,11 +217,11 @@ static gboolean on_zclglobal_control_configure_reporting_req(ZigbeeZclglobal_con
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(read_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -249,11 +249,11 @@ static gboolean on_zclglobal_control_read_configure_reporting(ZigbeeZclglobal_co
        gchar dest_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(read_attribute);
        NOT_USED(records_length);
        NOT_USED(node_id);
@@ -280,11 +280,11 @@ static gboolean on_zclglobal_control_discover_attributes(ZigbeeZclglobal_control
        gchar max,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dest_ep);
        NOT_USED(zcl_frame_ctrl);
@@ -310,11 +310,11 @@ static gboolean on_zclglobal_control_discover_attributes_extended(ZigbeeZclgloba
        gchar max,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dest_ep);
        NOT_USED(zcl_frame_ctrl);
@@ -340,11 +340,11 @@ static gboolean on_zclglobal_control_discover_commands_received(ZigbeeZclglobal_
        gchar max,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dest_ep);
        NOT_USED(zcl_frame_ctrl);
@@ -370,11 +370,11 @@ static gboolean on_zclglobal_control_discover_commands_generated(ZigbeeZclglobal
        gchar max,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclglobal_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dest_ep);
        NOT_USED(zcl_frame_ctrl);
@@ -390,13 +390,13 @@ static gboolean on_zclglobal_control_discover_commands_generated(ZigbeeZclglobal
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zclglobal_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclglobal_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZclglobal_control *zclglobal_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -411,51 +411,51 @@ gboolean zigbee_service_dbus_interface_zclglobal_control_init(ZigBeeService *ser
         */
        g_signal_connect(zclglobal_control_object,
                "handle-read-attributes-req",
-               G_CALLBACK(on_zclglobal_control_read_attributes_req), service);
+               G_CALLBACK(on_zclglobal_control_read_attributes_req), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-write-attributes-req",
-               G_CALLBACK(on_zclglobal_control_write_attributes_req), service);
+               G_CALLBACK(on_zclglobal_control_write_attributes_req), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-write-attributes-undivided-req",
-               G_CALLBACK(on_zclglobal_control_write_attributes_undivided_req), service);
+               G_CALLBACK(on_zclglobal_control_write_attributes_undivided_req), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-write-attributes-no-resp",
-               G_CALLBACK(on_zclglobal_control_write_attributes_no_resp), service);
+               G_CALLBACK(on_zclglobal_control_write_attributes_no_resp), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-write-attributes-structured",
-               G_CALLBACK(on_zclglobal_control_write_attributes_structured), service);
+               G_CALLBACK(on_zclglobal_control_write_attributes_structured), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-read-attributes-structured",
-               G_CALLBACK(on_zclglobal_control_read_attributes_structured), service);
+               G_CALLBACK(on_zclglobal_control_read_attributes_structured), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-configure-reporting-req",
-               G_CALLBACK(on_zclglobal_control_configure_reporting_req), service);
+               G_CALLBACK(on_zclglobal_control_configure_reporting_req), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-read-configure-reporting",
-               G_CALLBACK(on_zclglobal_control_read_configure_reporting), service);
+               G_CALLBACK(on_zclglobal_control_read_configure_reporting), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-discover-attributes",
-               G_CALLBACK(on_zclglobal_control_discover_attributes), service);
+               G_CALLBACK(on_zclglobal_control_discover_attributes), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-discover-attributes-extended",
-               G_CALLBACK(on_zclglobal_control_discover_attributes_extended), service);
+               G_CALLBACK(on_zclglobal_control_discover_attributes_extended), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-discover-commands-received",
-               G_CALLBACK(on_zclglobal_control_discover_commands_received), service);
+               G_CALLBACK(on_zclglobal_control_discover_commands_received), service_interface);
 
        g_signal_connect(zclglobal_control_object,
                "handle-discover-commands-generated",
-               G_CALLBACK(on_zclglobal_control_discover_commands_generated), service);
+               G_CALLBACK(on_zclglobal_control_discover_commands_generated), service_interface);
 
        return TRUE;
 }
index 59d96a2..918ac81 100644 (file)
@@ -26,11 +26,11 @@ static gboolean on_zclias_control_enroll_response(ZigbeeZclias_control *zclias_c
        gchar zone_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclias_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(enroll_code);
@@ -44,13 +44,13 @@ static gboolean on_zclias_control_enroll_response(ZigbeeZclias_control *zclias_c
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zclias_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclias_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZclias_control *zclias_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -65,7 +65,7 @@ gboolean zigbee_service_dbus_interface_zclias_control_init(ZigBeeService *servic
         */
        g_signal_connect(zclias_control_object,
                "handle-get-alarm-count",
-               G_CALLBACK(on_zclias_control_enroll_response), service);
+               G_CALLBACK(on_zclias_control_enroll_response), service_interface);
 
        return TRUE;
 }
index 5988c80..1ca4dec 100644 (file)
@@ -25,11 +25,11 @@ static gboolean on_zclidentify_control_identify(ZigbeeZclidentify_control *zclid
        gshort identifytime,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclidentify_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(dst_ep);
        NOT_USED(identifytime);
@@ -47,11 +47,11 @@ static gboolean on_zclidentify_control_query(ZigbeeZclidentify_control *zclident
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zclidentify_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -62,13 +62,13 @@ static gboolean on_zclidentify_control_query(ZigbeeZclidentify_control *zclident
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zclidentify_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zclidentify_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZclidentify_control *zclidentify_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -83,11 +83,11 @@ gboolean zigbee_service_dbus_interface_zclidentify_control_init(ZigBeeService *s
         */
        g_signal_connect(zclidentify_control_object,
                "handle-identify",
-               G_CALLBACK(on_zclidentify_control_identify), service);
+               G_CALLBACK(on_zclidentify_control_identify), service_interface);
 
        g_signal_connect(zclidentify_control_object,
                "handle-query",
-               G_CALLBACK(on_zclidentify_control_query), service);
+               G_CALLBACK(on_zclidentify_control_query), service_interface);
 
        return TRUE;
 }
index 8634219..aad1471 100644 (file)
@@ -30,11 +30,11 @@ static gboolean on_zdo_bind_bind_req(ZigbeeZdo_bind *zdo_bind_object,
        gchar dst_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdo_bind_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(src_addr);
        NOT_USED(src_ep);
@@ -64,11 +64,11 @@ static gboolean on_zdo_bind_unbind_req(ZigbeeZdo_bind *zdo_bind_object,
        gchar dst_ep,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdo_bind_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(src_addr);
        NOT_USED(src_ep);
@@ -86,13 +86,13 @@ static gboolean on_zdo_bind_unbind_req(ZigbeeZdo_bind *zdo_bind_object,
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zdo_bind_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zdo_bind_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZdo_bind *zdo_bind_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -107,11 +107,11 @@ gboolean zigbee_service_dbus_interface_zdo_bind_init(ZigBeeService *service,
         */
        g_signal_connect(zdo_bind_object,
                "handle-bind-req",
-               G_CALLBACK(on_zdo_bind_bind_req), service);
+               G_CALLBACK(on_zdo_bind_bind_req), service_interface);
 
        g_signal_connect(zdo_bind_object,
                "handle-unbind-req",
-               G_CALLBACK(on_zdo_bind_unbind_req), service);
+               G_CALLBACK(on_zdo_bind_unbind_req), service_interface);
 
        return TRUE;
 }
index 1c40f06..7d8debb 100644 (file)
@@ -25,11 +25,11 @@ static gboolean on_zdodev_control_nwk_addr_req(ZigbeeZdodev_control *zdodev_cont
        gchar start_index,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(eui64);
        NOT_USED(request_type);
        NOT_USED(start_index);
@@ -52,11 +52,11 @@ static gboolean on_zdodev_control_matched_descriptor_req(ZigbeeZdodev_control *z
        GVariant *out_cl,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(profile_id);
        NOT_USED(num_in_cl);
@@ -77,11 +77,11 @@ static gboolean on_zdodev_control_ieee_addr_req(ZigbeeZdodev_control *zdodev_con
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -97,11 +97,11 @@ static gboolean on_zdodev_control_active_ep_req(ZigbeeZdodev_control *zdodev_con
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -117,11 +117,11 @@ static gboolean on_zdodev_control_node_desc_req(ZigbeeZdodev_control *zdodev_con
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -137,11 +137,11 @@ static gboolean on_zdodev_control_power_desc_req(ZigbeeZdodev_control *zdodev_co
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -157,11 +157,11 @@ static gboolean on_zdodev_control_complex_desc_req(ZigbeeZdodev_control *zdodev_
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -177,11 +177,11 @@ static gboolean on_zdodev_control_user_desc_req(ZigbeeZdodev_control *zdodev_con
        gshort node_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
 
        /*
@@ -199,11 +199,11 @@ static gboolean on_zdodev_control_user_desc_set_req(ZigbeeZdodev_control *zdodev
        GVariant *user_desc,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(length);
        NOT_USED(user_desc);
@@ -223,11 +223,11 @@ static gboolean on_zdodev_control_device_announce(ZigbeeZdodev_control *zdodev_c
        gchar capability,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(mac_addr);
        NOT_USED(capability);
@@ -246,11 +246,11 @@ static gboolean on_zdodev_control_simple_desc_req(ZigbeeZdodev_control *zdodev_c
        gchar endpoint,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(endpoint);
 
@@ -268,11 +268,11 @@ static gboolean on_zdodev_control_mgmt_lqi_req(ZigbeeZdodev_control *zdodev_cont
        gchar start_idx,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(start_idx);
 
@@ -290,11 +290,11 @@ static gboolean on_zdodev_control_mgmt_rtg_req(ZigbeeZdodev_control *zdodev_cont
        gchar start_idx,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(start_idx);
 
@@ -312,11 +312,11 @@ static gboolean on_zdodev_control_mgmt_bind_req(ZigbeeZdodev_control *zdodev_con
        gchar start_idx,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(start_idx);
 
@@ -335,11 +335,11 @@ static gboolean on_zdodev_control_mgmt_permit_join_req(ZigbeeZdodev_control *zdo
        gchar tc_significance,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(addr16);
        NOT_USED(duration);
        NOT_USED(tc_significance);
@@ -361,11 +361,11 @@ static gboolean on_zdodev_control_nwk_update_req(ZigbeeZdodev_control *zdodev_co
        gint nwk_update_id,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(scan_channel);
        NOT_USED(scan_duration);
@@ -389,11 +389,11 @@ static gboolean on_zdodev_control_nwk_disc_req(ZigbeeZdodev_control *zdodev_cont
        gchar start_index,
        gpointer user_data)
 {
-       ZigBeeService *service = (ZigBeeService *)user_data;
+       ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
 
        NOT_USED(zdodev_control_object);
        NOT_USED(invocation);
-       NOT_USED(service);
+       NOT_USED(service_interface);
        NOT_USED(node_id);
        NOT_USED(scan_channel);
        NOT_USED(scan_duration);
@@ -408,13 +408,13 @@ static gboolean on_zdodev_control_nwk_disc_req(ZigbeeZdodev_control *zdodev_cont
        return TRUE;
 }
 
-gboolean zigbee_service_dbus_interface_zdodev_control_init(ZigBeeService *service,
+gboolean zigbee_service_dbus_interface_zdodev_control_init(ZigBeeServiceInterface *service_interface,
        ZigbeeObjectSkeleton *zigbee_object)
 {
        ZigbeeZdodev_control *zdodev_control_object;
 
-       if (NULL == service) {
-               Z_LOGE("service is NULL");
+       if (NULL == service_interface) {
+               Z_LOGE("service_interface is NULL");
                return FALSE;
        }
 
@@ -429,71 +429,71 @@ gboolean zigbee_service_dbus_interface_zdodev_control_init(ZigBeeService *servic
         */
        g_signal_connect(zdodev_control_object,
                "handle-nwk-addr-req",
-               G_CALLBACK(on_zdodev_control_nwk_addr_req), service);
+               G_CALLBACK(on_zdodev_control_nwk_addr_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-matched-descriptor-req",
-               G_CALLBACK(on_zdodev_control_matched_descriptor_req), service);
+               G_CALLBACK(on_zdodev_control_matched_descriptor_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-ieee-addr-req",
-               G_CALLBACK(on_zdodev_control_ieee_addr_req), service);
+               G_CALLBACK(on_zdodev_control_ieee_addr_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-active-ep-req",
-               G_CALLBACK(on_zdodev_control_active_ep_req), service);
+               G_CALLBACK(on_zdodev_control_active_ep_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-node-desc-req",
-               G_CALLBACK(on_zdodev_control_node_desc_req), service);
+               G_CALLBACK(on_zdodev_control_node_desc_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-power-desc-req",
-               G_CALLBACK(on_zdodev_control_power_desc_req), service);
+               G_CALLBACK(on_zdodev_control_power_desc_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-complex-desc-req",
-               G_CALLBACK(on_zdodev_control_complex_desc_req), service);
+               G_CALLBACK(on_zdodev_control_complex_desc_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-user-desc-req",
-               G_CALLBACK(on_zdodev_control_user_desc_req), service);
+               G_CALLBACK(on_zdodev_control_user_desc_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-user-desc-set-req",
-               G_CALLBACK(on_zdodev_control_user_desc_set_req), service);
+               G_CALLBACK(on_zdodev_control_user_desc_set_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-device-announce",
-               G_CALLBACK(on_zdodev_control_device_announce), service);
+               G_CALLBACK(on_zdodev_control_device_announce), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-simple-desc-req",
-               G_CALLBACK(on_zdodev_control_simple_desc_req), service);
+               G_CALLBACK(on_zdodev_control_simple_desc_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-mgmt-lqi-req",
-               G_CALLBACK(on_zdodev_control_mgmt_lqi_req), service);
+               G_CALLBACK(on_zdodev_control_mgmt_lqi_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-mgmt-rtg-req",
-               G_CALLBACK(on_zdodev_control_mgmt_rtg_req), service);
+               G_CALLBACK(on_zdodev_control_mgmt_rtg_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-mgmt-bind-req",
-               G_CALLBACK(on_zdodev_control_mgmt_bind_req), service);
+               G_CALLBACK(on_zdodev_control_mgmt_bind_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-mgmt-permit-join-req",
-               G_CALLBACK(on_zdodev_control_mgmt_permit_join_req), service);
+               G_CALLBACK(on_zdodev_control_mgmt_permit_join_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-nwk-update-req",
-               G_CALLBACK(on_zdodev_control_nwk_update_req), service);
+               G_CALLBACK(on_zdodev_control_nwk_update_req), service_interface);
 
        g_signal_connect(zdodev_control_object,
                "handle-nwk-disc-req",
-               G_CALLBACK(on_zdodev_control_nwk_disc_req), service);
+               G_CALLBACK(on_zdodev_control_nwk_disc_req), service_interface);
 
        return TRUE;
 }
diff --git a/zigbee-daemon/zigbee-interface/src/zigbee_service_interface_common.c b/zigbee-daemon/zigbee-interface/src/zigbee_service_interface_common.c
new file mode 100644 (file)
index 0000000..4cdf672
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Suresh Kumar N (suresh.n@samsung.com)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <glib.h>
+#include <dlog.h>
+
+#include <zblib.h>
+#include <zblib_service.h>
+#include <zblib_service_interface.h>
+
+#include "zigbee_service_interface.h"
+#include "zigbee_service_interface_common.h"
+#include "zigbee_service_dbus_interface.h"
+
+/**< ZigBee D-BUS response callback data */
+struct zigbee_service_interface_resp_cb_type {
+       void *interface_object; /**< D-BUS interface object */
+       GDBusMethodInvocation *invocation; /**< D-BUS invocation */
+       char user_data[0]; /* Additional user data base pointer */
+};
+
+ZigbeeServiceInterfaceRespCbData_t *
+zigbee_service_dbus_interface_create_resp_cb_data(void *interface_object,
+       GDBusMethodInvocation *invocation,
+       void *user_data, unsigned int user_data_len)
+{
+       ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
+
+       /* Allocate memory for response callback data */
+       resp_cb_data = g_malloc0(sizeof(ZigbeeServiceInterfaceRespCbData_t) + user_data_len);
+
+       /* Update interface object and invocation */
+       resp_cb_data->interface_object = interface_object;
+       resp_cb_data->invocation = invocation;
+
+       /* Update user data */
+       if ((user_data != NULL) && (user_data_len > 0))
+               memcpy(resp_cb_data->user_data, user_data, user_data_len);
+
+       return resp_cb_data;
+}
+
+void zigbee_service_dbus_interface_destroy_resp_cb_data(ZigbeeServiceInterfaceRespCbData_t *resp_cb_data)
+{
+       if (NULL == resp_cb_data) {
+               Z_LOGE("resp_cb_data is NULL");
+               return;
+       }
+
+       /* Free response callback data */
+       g_free(resp_cb_data);
+}
+
+gboolean zigbee_service_dbus_interface_dispatch_request(ZigBeeServiceInterface *service_interface,
+       ZblibDriverType_e driver_type, guint ops_id,
+       gpointer request_data, guint request_data_len,
+       ZblibServiceInterfaceResponseCb_t resp_cb, gpointer resp_cb_data)
+{
+       gint request_id;
+       gboolean ret;
+
+       /* Create request_id */
+       request_id = zblib_service_interface_new_request(service_interface,
+               driver_type,
+               ops_id,
+               &request_data, request_data_len,
+               resp_cb, resp_cb_data);
+       if (ZIGBEE_SERVICE_INTERFACE_INVALID_REQUEST_ID == request_id) {
+               Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
+
+               return FALSE;
+       }
+
+       /* Dispatch request */
+       ret = zblib_service_interface_dispatch_request(service_interface, request_id);
+       if (FALSE == ret) {
+               Z_LOGE("zblib_service_interface_dispatch_request failed!");
+
+               /* Free request_id */
+               zblib_service_interface_free_request(service_interface, request_id);
+
+               return FALSE;
+       }
+
+       return TRUE;
+}
old mode 100644 (file)
new mode 100755 (executable)
index 4546b3f..17d83df
@@ -27,6 +27,7 @@
 #include <gio/gio.h>
 
 #include <zblib.h>
+#include <zblib_service_interface.h>
 
 #include "zigbee_generated_code.h"
 
 /**< ZigBee D-BUS service path */
 #define ZIGBEE_DBUS_PATH               "/org/tizen/zigbee"
 
+/**< ZigBee D-BUS generic fail response macro */
+#define ZIGBEE_DBUS_FAIL_RESPONSE(invocation, msg) do { \
+       g_dbus_method_invocation_return_error(invocation, \
+               G_DBUS_ERROR, G_DBUS_ERROR_FAILED, msg); \
+} while (0)
+
+/**< ZigBee D-BUS default fail message */
+#define ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG "Request failed"
+
 /**< ZigBee D-BUS interface custom data */
 typedef struct {
        GDBusObjectManagerServer *manager; /**< ZigBee object */
@@ -70,4 +80,20 @@ typedef struct {
        gboolean zigbee_state; /**< ZigBee service state */
 } ZigbeeCustomData_t;
 
+/**< ZigBee D-BUS response callback data */
+typedef struct zigbee_service_interface_resp_cb_type ZigbeeServiceInterfaceRespCbData_t;
+
+/**< Common APIs */
+ZigbeeServiceInterfaceRespCbData_t *
+zigbee_service_dbus_interface_create_resp_cb_data(void *interface_object,
+       GDBusMethodInvocation *invocation,
+       void *user_data, unsigned int user_data_len);
+
+void zigbee_service_dbus_interface_destroy_resp_cb_data(ZigbeeServiceInterfaceRespCbData_t *resp_cb_data);
+
+gboolean zigbee_service_dbus_interface_dispatch_request(ZigBeeServiceInterface *service_interface,
+       ZblibDriverType_e driver_type, guint ops_id,
+       gpointer request_data, guint request_data_len,
+       ZblibServiceInterfaceResponseCb_t resp_cb, gpointer resp_cb_data);
+
 #endif /* __ZIGBEE_SERVICE_INTERFACE_COMMON_H__ */
index 41e0e61..985e1bc 100644 (file)
 #ifndef __ZIGBEE_LIB_SERVICE_INTERFACE_H__
 #define __ZIGBEE_LIB_SERVICE_INTERFACE_H__
 
+/**< ZigBee service interface invalid request ID */
+#define ZIGBEE_SERVICE_INTERFACE_INVALID_REQUEST_ID (-1)
+
 /**< ZigBee Service interface response callback function pointer */
-typedef gboolean (*ZblibServiceInterfaceResponseCb_t)(ZigBeeServiceInterface *service_interface,
+typedef void (*ZblibServiceInterfaceResponseCb_t)(ZigBeeServiceInterface *service_interface,
        guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data);
 
 /**< Service interface APIs */
@@ -38,9 +41,11 @@ gpointer zblib_service_interface_ref_user_data(ZigBeeServiceInterface *service_i
 ZigBeeService *zblib_service_interface_ref_service(ZigBeeServiceInterface *service_interface);
 
 gint zblib_service_interface_new_request(ZigBeeServiceInterface *service_interface,
-       guint request_type,
+       ZblibDriverType_e driver_type, guint ops_id,
        gpointer request_data, guint request_data_len,
        ZblibServiceInterfaceResponseCb_t resp_cb, gpointer resp_cb_data);
+void zblib_service_interface_free_request(ZigBeeServiceInterface *service_interface,
+       guint request_id);
 
 gboolean zblib_service_interface_dispatch_request(ZigBeeServiceInterface *service_interface,
        guint request_id);
index 06e6592..5da7d22 100644 (file)
@@ -216,7 +216,6 @@ static gpointer __zblib_request_create_alarm_request_data(guint request_type,
 
                        /* Copy data */
                        memcpy(req->eui64, in_req->eui64, ZIGBEE_EUI64_SIZE);
-                       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;
@@ -280,12 +279,12 @@ static gpointer __zblib_request_create_custom_request_data(guint request_type,
 
                        /* Copy data */
                        req->node_id = in_req->node_id;
-                       req->aps_frame_ctl = in_req->aps_frame_ctl;
+                       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_ctl = in_req->zcl_frame_ctl;
+                       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);
@@ -310,7 +309,7 @@ static gpointer __zblib_request_create_custom_request_data(guint request_type,
                        req->src_ep = in_req->src_ep;
                        req->dest_ep = in_req->dest_ep;
                        req->cluster_id = in_req->cluster_id;
-                       req->zcl_frame_ctl = in_req->zcl_frame_ctl;
+                       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);
@@ -647,14 +646,14 @@ static gpointer __zblib_request_create_level_control_request_data(guint request_
        break;
 
        case ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
-               ZigbeeLevelControlMoveOnOff_t *in_req;
-               ZigbeeLevelControlMoveOnOff_t *req = NULL;
+               ZigbeeLevelControlMoveWithOnOff_t *in_req;
+               ZigbeeLevelControlMoveWithOnOff_t *req = NULL;
 
-               in_req = (ZigbeeLevelControlMoveOnOff_t *)request_data;
+               in_req = (ZigbeeLevelControlMoveWithOnOff_t *)request_data;
                if (in_req) {
                        /* Allocate memory */
-                       req = (ZigbeeLevelControlMoveOnOff_t *)
-                               g_malloc0(sizeof(ZigbeeLevelControlMoveOnOff_t));
+                       req = (ZigbeeLevelControlMoveWithOnOff_t *)
+                               g_malloc0(sizeof(ZigbeeLevelControlMoveWithOnOff_t));
 
                        /* Copy data */
                        req->node_id = in_req->node_id;
@@ -3330,9 +3329,9 @@ static void __zblib_request_free_level_control_request_data(ZigBeeRequest *reque
        break;
 
        case ZBLIB_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF: {
-               ZigbeeLevelControlMoveOnOff_t *req = NULL;
+               ZigbeeLevelControlMoveWithOnOff_t *req = NULL;
 
-               req = (ZigbeeLevelControlMoveOnOff_t *)request->request_data;
+               req = (ZigbeeLevelControlMoveWithOnOff_t *)request->request_data;
                if (NULL != req) {
                        g_free(req);
                }
@@ -4673,6 +4672,7 @@ gint zblib_request_new(ZigBeeServiceInterface *service_interface,
                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;
@@ -4684,6 +4684,7 @@ gint zblib_request_new(ZigBeeServiceInterface *service_interface,
                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;
index a8cffdf..6b1c221 100644 (file)
@@ -98,14 +98,19 @@ ZigBeeService *zblib_service_interface_ref_service(ZigBeeServiceInterface *servi
 }
 
 gint zblib_service_interface_new_request(ZigBeeServiceInterface *service_interface,
-       guint request_type,
+       ZblibDriverType_e driver_type, guint ops_id,
        gpointer request_data, guint request_data_len,
        ZblibServiceInterfaceResponseCb_t resp_cb, gpointer resp_cb_data)
 {
+       guint request_type;
        gint request_id = 0;
        gboolean ret;
 
-       zblib_check_null_ret_error("service_interface", service_interface, -1);
+       zblib_check_null_ret_error("service_interface",
+               service_interface, ZIGBEE_SERVICE_INTERFACE_INVALID_REQUEST_ID);
+
+       /* Create request type */
+       request_type = zblib_request_generate_request_type(driver_type, ops_id);
 
        /* Create new request */
        request_id = zblib_request_new(service_interface,
@@ -121,12 +126,21 @@ gint zblib_service_interface_new_request(ZigBeeServiceInterface *service_interfa
 
                /* Free request_id */
                zblib_request_free(service_interface, request_id);
-               request_id = -1;
+               request_id = ZIGBEE_SERVICE_INTERFACE_INVALID_REQUEST_ID;
        }
 
        return request_id;
 }
 
+void zblib_service_interface_free_request(ZigBeeServiceInterface *service_interface,
+       guint request_id)
+{
+       zblib_check_null_ret("service_interface", service_interface);
+
+       /* Free request_id */
+       zblib_request_free(service_interface, request_id);
+}
+
 gboolean zblib_service_interface_dispatch_request(ZigBeeServiceInterface *service_interface,
        guint request_id)
 {