2 * Copyright (c) 2016 Samsung Electronics Co., Ltd. All rights reserved.
4 * Contact: Suresh Kumar N (suresh.n@samsung.com)
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 #include "zigbee_service_interface_common.h"
21 #include <zblib_driver_zcl_level_control.h>
23 static void *_service_interface_ref_zigbee_zcl_level_control(
24 ZigBeeServiceInterface *service_interface)
26 ZigbeeObjectSkeleton *zigbee_object = NULL;
27 ZigbeeCustomData_t *custom_data = NULL;
28 ZigbeeZcl_level_control *level_object = NULL;
30 custom_data = (ZigbeeCustomData_t *)zblib_service_interface_ref_user_data(service_interface);
31 if (NULL == custom_data) {
32 Z_LOGE("D-BUS service interface custom_data is NULL!");
36 /* Get zigbee object */
37 zigbee_object = g_hash_table_lookup(custom_data->objects, ZIGBEE_SERVICE_PATH);
38 if (NULL == zigbee_object) {
39 Z_LOGW("Cannot find ZigBee D-BUS interface object!", zigbee_object);
43 level_object = zigbee_object_get_zcl_level_control(ZIGBEE_OBJECT(zigbee_object));
47 static void on_level_control_move_to_level_resp(ZigBeeServiceInterface *service_interface,
48 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
50 ZigbeeServiceInterfaceRespCbData_t *cb_data =
51 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
53 ZigbeeZcl_level_control *level_object = NULL;
54 GDBusMethodInvocation *invocation = NULL;
56 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
58 NOT_USED(service_interface);
61 if (NULL == resp_data || 0 == resp_data_len) {
62 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
67 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
68 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
70 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
71 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
73 zigbee_zcl_level_control_complete_move_to_level(level_object, invocation, payload->result);
78 static gboolean on_level_control_move_to_level(ZigbeeZcl_level_control *level_control_object,
79 GDBusMethodInvocation *invocation,
86 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
87 ZigbeeZclLevelControlMoveToLevel_t req;
88 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
92 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveToLevel_t));
94 /* Update request structure */
95 req.node_id = node_id;
96 req.endpoint = endpoint;
98 req.transition = transition;
100 /* Allocate response callback data */
102 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
103 invocation, NULL, 0);
104 if (NULL == resp_cb_data) {
105 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
107 /* Send failure response */
108 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
113 /* Dispatch request */
114 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
115 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
116 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL,
118 on_level_control_move_to_level_resp, resp_cb_data);
120 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
122 /* Free response callback data */
123 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
125 /* Send failure response */
126 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
134 static void on_level_control_move_resp(ZigBeeServiceInterface *service_interface,
135 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
137 ZigbeeServiceInterfaceRespCbData_t *cb_data =
138 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
140 ZigbeeZcl_level_control *level_object = NULL;
141 GDBusMethodInvocation *invocation = NULL;
143 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
145 NOT_USED(service_interface);
146 NOT_USED(request_id);
148 if (NULL == resp_data || 0 == resp_data_len) {
149 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
154 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
155 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
157 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
158 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
160 zigbee_zcl_level_control_complete_move(level_object, invocation, payload->result);
165 static gboolean on_level_control_move(ZigbeeZcl_level_control *level_control_object,
166 GDBusMethodInvocation *invocation,
173 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
174 ZigbeeZclLevelControlMove_t req;
175 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
179 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMove_t));
181 /* Update request structure */
182 req.node_id = node_id;
183 req.endpoint = endpoint;
184 req.move_mode = move_mode;
187 /* Allocate response callback data */
189 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
190 invocation, NULL, 0);
191 if (NULL == resp_cb_data) {
192 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
194 /* Send failure response */
195 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
200 /* Dispatch request */
201 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
202 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
203 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE,
205 on_level_control_move_resp, resp_cb_data);
207 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
209 /* Free response callback data */
210 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
212 /* Send failure response */
213 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
221 static void on_level_control_step_resp(ZigBeeServiceInterface *service_interface,
222 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
224 ZigbeeServiceInterfaceRespCbData_t *cb_data =
225 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
227 ZigbeeZcl_level_control *level_object = NULL;
228 GDBusMethodInvocation *invocation = NULL;
230 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
232 NOT_USED(service_interface);
233 NOT_USED(request_id);
235 if (NULL == resp_data || 0 == resp_data_len) {
236 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
241 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
242 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
244 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
245 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
247 zigbee_zcl_level_control_complete_step(level_object, invocation, payload->result);
252 static gboolean on_level_control_step(ZigbeeZcl_level_control *level_control_object,
253 GDBusMethodInvocation *invocation,
258 gshort transition_time,
261 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
262 ZigbeeZclLevelControlStep_t req;
263 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
267 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStep_t));
269 /* Update request structure */
270 req.node_id = node_id;
271 req.endpoint = endpoint;
272 req.step_mode = step_mode;
273 req.step_size = step_size;
274 req.transition_time = transition_time;
276 /* Allocate response callback data */
278 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
279 invocation, NULL, 0);
280 if (NULL == resp_cb_data) {
281 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
283 /* Send failure response */
284 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
289 /* Dispatch request */
290 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
291 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
292 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP,
294 on_level_control_step_resp, resp_cb_data);
296 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
298 /* Free response callback data */
299 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
301 /* Send failure response */
302 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
310 static void on_level_control_move_to_level_with_on_off_resp(ZigBeeServiceInterface *service_interface,
311 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
313 ZigbeeServiceInterfaceRespCbData_t *cb_data =
314 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
316 ZigbeeZcl_level_control *level_object = NULL;
317 GDBusMethodInvocation *invocation = NULL;
319 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
321 NOT_USED(service_interface);
322 NOT_USED(request_id);
324 if (NULL == resp_data || 0 == resp_data_len) {
325 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
330 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
331 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
333 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
334 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
336 zigbee_zcl_level_control_complete_move_to_level_with_on_off(level_object, invocation,
342 static gboolean on_level_control_move_to_level_with_on_off(
343 ZigbeeZcl_level_control *level_control_object,
344 GDBusMethodInvocation *invocation,
351 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
352 ZigbeeZclLevelControlMoveToLevelWithOnOff_t req;
353 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
357 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveToLevelWithOnOff_t));
359 /* Update request structure */
360 req.node_id = node_id;
361 req.endpoint = endpoint;
363 req.transition = transition;
365 /* Allocate response callback data */
367 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
368 invocation, NULL, 0);
369 if (NULL == resp_cb_data) {
370 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
372 /* Send failure response */
373 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
378 /* Dispatch request */
379 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
380 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
381 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF,
383 on_level_control_move_to_level_with_on_off_resp, resp_cb_data);
385 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
387 /* Free response callback data */
388 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
390 /* Send failure response */
391 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
399 static void on_level_control_move_with_on_off_resp(ZigBeeServiceInterface *service_interface,
400 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
402 ZigbeeServiceInterfaceRespCbData_t *cb_data =
403 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
405 ZigbeeZcl_level_control *level_object = NULL;
406 GDBusMethodInvocation *invocation = NULL;
408 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
410 NOT_USED(service_interface);
411 NOT_USED(request_id);
413 if (NULL == resp_data || 0 == resp_data_len) {
414 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
419 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
420 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
422 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
423 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
425 zigbee_zcl_level_control_complete_move_with_on_off(level_object, invocation,
431 static gboolean on_level_control_move_with_on_off(
432 ZigbeeZcl_level_control *level_control_object,
433 GDBusMethodInvocation *invocation,
440 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
441 ZigbeeZclLevelControlMoveWithOnOff_t req;
442 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
446 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveWithOnOff_t));
448 /* Update request structure */
449 req.node_id = node_id;
450 req.endpoint = endpoint;
451 req.move_mode = move_mode;
454 /* Allocate response callback data */
456 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
457 invocation, NULL, 0);
458 if (NULL == resp_cb_data) {
459 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
461 /* Send failure response */
462 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
467 /* Dispatch request */
468 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
469 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
470 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF,
472 on_level_control_move_with_on_off_resp, resp_cb_data);
474 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
476 /* Free response callback data */
477 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
479 /* Send failure response */
480 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
488 static void on_level_control_step_with_on_off_resp(ZigBeeServiceInterface *service_interface,
489 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
491 ZigbeeServiceInterfaceRespCbData_t *cb_data =
492 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
494 ZigbeeZcl_level_control *level_object = NULL;
495 GDBusMethodInvocation *invocation = NULL;
497 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
499 NOT_USED(service_interface);
500 NOT_USED(request_id);
502 if (NULL == resp_data || 0 == resp_data_len) {
503 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
508 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
509 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
511 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
512 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
514 zigbee_zcl_level_control_complete_step_with_on_off(level_object, invocation,
520 static gboolean on_level_control_step_with_on_off(
521 ZigbeeZcl_level_control *level_control_object,
522 GDBusMethodInvocation *invocation,
527 gshort transition_time,
530 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
531 ZigbeeZclLevelControlStepWithOnOff_t req;
532 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
536 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStepWithOnOff_t));
538 /* Update request structure */
539 req.node_id = node_id;
540 req.endpoint = endpoint;
541 req.step_mode = step_mode;
542 req.step_size = step_size;
543 req.transition_time = transition_time;
545 /* Allocate response callback data */
547 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
548 invocation, NULL, 0);
549 if (NULL == resp_cb_data) {
550 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
552 /* Send failure response */
553 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
558 /* Dispatch request */
559 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
560 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
561 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF,
563 on_level_control_step_with_on_off_resp, resp_cb_data);
565 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
567 /* Free response callback data */
568 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
570 /* Send failure response */
571 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
579 static void on_level_control_stop_resp(ZigBeeServiceInterface *service_interface,
580 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
582 ZigbeeServiceInterfaceRespCbData_t *cb_data =
583 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
585 ZigbeeZcl_level_control *level_object = NULL;
586 GDBusMethodInvocation *invocation = NULL;
588 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
590 NOT_USED(service_interface);
591 NOT_USED(request_id);
593 if (NULL == resp_data || 0 == resp_data_len) {
594 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
599 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
600 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
602 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
603 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
605 zigbee_zcl_level_control_complete_stop(level_object, invocation, payload->result);
610 static gboolean on_level_control_stop(ZigbeeZcl_level_control *level_control_object,
611 GDBusMethodInvocation *invocation,
616 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
617 ZigbeeZclLevelControlStop_t req;
618 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
622 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStop_t));
624 /* Update request structure */
625 req.node_id = node_id;
626 req.endpoint = endpoint;
628 /* Allocate response callback data */
630 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
631 invocation, NULL, 0);
632 if (NULL == resp_cb_data) {
633 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
635 /* Send failure response */
636 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
641 /* Dispatch request */
642 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
643 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
644 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP,
646 on_level_control_stop_resp, resp_cb_data);
648 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
650 /* Free response callback data */
651 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
653 /* Send failure response */
654 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
662 void zigbee_service_dbus_interface_zcl_level_control_notification(ZigBeeServiceInterface *service_interface,
663 guint noti_id, gpointer noti_data, guint noti_data_len, gpointer noti_cb_data)
665 ZigbeeZcl_level_control *level_object;
667 zblib_check_null_ret("service_interface", service_interface);
669 if (NULL == noti_data || 0 == noti_data_len) {
670 Z_LOGE("noti_data=%p or noti_data_len=%d is null", noti_data, noti_data_len);
674 level_object = _service_interface_ref_zigbee_zcl_level_control(service_interface);
675 zblib_check_null_ret("level_object", level_object);
677 NOT_USED(noti_cb_data);
681 Z_LOGE("Unexpected notification [%x]", noti_id);
685 /* ZigbeeZcl_level_control should be dereferenced */
686 g_object_unref(level_object);
689 gboolean zigbee_service_dbus_interface_zcl_level_control_init(ZigBeeServiceInterface *service_interface,
690 ZigbeeObjectSkeleton *zigbee_object)
692 ZigbeeZcl_level_control *level_control_object;
694 if (NULL == service_interface) {
695 Z_LOGE("service_interface is NULL");
699 level_control_object = zigbee_zcl_level_control_skeleton_new();
700 zigbee_object_skeleton_set_zcl_level_control(zigbee_object, level_control_object);
701 g_object_unref(level_control_object);
703 Z_LOGI("level_control_object: [%p]", level_control_object);
706 * Register signal handlers for 'level_control' interface
708 g_signal_connect(level_control_object,
709 "handle-move-to-level",
710 G_CALLBACK(on_level_control_move_to_level), service_interface);
712 g_signal_connect(level_control_object,
714 G_CALLBACK(on_level_control_move), service_interface);
716 g_signal_connect(level_control_object,
718 G_CALLBACK(on_level_control_step), service_interface);
720 g_signal_connect(level_control_object,
721 "handle-move-to-level-with-on-off",
722 G_CALLBACK(on_level_control_move_to_level_with_on_off), service_interface);
724 g_signal_connect(level_control_object,
725 "handle-move-with-on-off",
726 G_CALLBACK(on_level_control_move_with_on_off), service_interface);
728 g_signal_connect(level_control_object,
729 "handle-step-with-on-off",
730 G_CALLBACK(on_level_control_step_with_on_off), service_interface);
732 g_signal_connect(level_control_object,
734 G_CALLBACK(on_level_control_stop), service_interface);