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>
24 static void *_service_interface_ref_zigbee_zcl_level_control(
25 ZigBeeServiceInterface *service_interface)
27 ZigbeeObjectSkeleton *zigbee_object = NULL;
28 ZigbeeCustomData_t *custom_data = NULL;
29 ZigbeeZcl_level_control *level_object = NULL;
31 custom_data = (ZigbeeCustomData_t *)zblib_service_interface_ref_user_data(service_interface);
32 if (NULL == custom_data) {
33 Z_LOGE("D-BUS service interface custom_data is NULL!");
37 /* Get zigbee object */
38 zigbee_object = g_hash_table_lookup(custom_data->objects, ZIGBEE_SERVICE_PATH);
39 if (NULL == zigbee_object) {
40 Z_LOGW("Cannot find ZigBee D-BUS interface object!", zigbee_object);
44 level_object = zigbee_object_get_zcl_level_control(ZIGBEE_OBJECT(zigbee_object));
48 static void on_level_control_move_to_level_resp(ZigBeeServiceInterface *service_interface,
49 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
51 ZigbeeServiceInterfaceRespCbData_t *cb_data =
52 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
54 ZigbeeZcl_level_control *level_object = NULL;
55 GDBusMethodInvocation *invocation = NULL;
57 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
59 NOT_USED(service_interface);
62 if (NULL == resp_data || 0 == resp_data_len) {
63 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
68 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
69 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
71 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
72 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
74 zigbee_zcl_level_control_complete_move_to_level(level_object, invocation, payload->result);
79 static gboolean on_level_control_move_to_level(ZigbeeZcl_level_control *level_control_object,
80 GDBusMethodInvocation *invocation,
87 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
88 ZigbeeZclLevelControlMoveToLevel_t req;
89 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
93 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveToLevel_t));
95 /* Update request structure */
96 req.node_id = node_id;
97 req.endpoint = endpoint;
99 req.transition = transition;
101 /* Allocate response callback data */
103 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
104 invocation, NULL, 0);
105 if (NULL == resp_cb_data) {
106 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
108 /* Send failure response */
109 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
114 /* Dispatch request */
115 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
116 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
117 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL,
119 on_level_control_move_to_level_resp, resp_cb_data);
121 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
123 /* Free response callback data */
124 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
126 /* Send failure response */
127 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
135 static void on_level_control_move_resp(ZigBeeServiceInterface *service_interface,
136 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
138 ZigbeeServiceInterfaceRespCbData_t *cb_data =
139 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
141 ZigbeeZcl_level_control *level_object = NULL;
142 GDBusMethodInvocation *invocation = NULL;
144 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
146 NOT_USED(service_interface);
147 NOT_USED(request_id);
149 if (NULL == resp_data || 0 == resp_data_len) {
150 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
155 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
156 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
158 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
159 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
161 zigbee_zcl_level_control_complete_move(level_object, invocation, payload->result);
166 static gboolean on_level_control_move(ZigbeeZcl_level_control *level_control_object,
167 GDBusMethodInvocation *invocation,
174 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
175 ZigbeeZclLevelControlMove_t req;
176 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
180 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMove_t));
182 /* Update request structure */
183 req.node_id = node_id;
184 req.endpoint = endpoint;
185 req.move_mode = move_mode;
188 /* Allocate response callback data */
190 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
191 invocation, NULL, 0);
192 if (NULL == resp_cb_data) {
193 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
195 /* Send failure response */
196 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
201 /* Dispatch request */
202 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
203 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
204 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE,
206 on_level_control_move_resp, resp_cb_data);
208 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
210 /* Free response callback data */
211 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
213 /* Send failure response */
214 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
222 static void on_level_control_step_resp(ZigBeeServiceInterface *service_interface,
223 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
225 ZigbeeServiceInterfaceRespCbData_t *cb_data =
226 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
228 ZigbeeZcl_level_control *level_object = NULL;
229 GDBusMethodInvocation *invocation = NULL;
231 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
233 NOT_USED(service_interface);
234 NOT_USED(request_id);
236 if (NULL == resp_data || 0 == resp_data_len) {
237 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
242 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
243 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
245 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
246 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
248 zigbee_zcl_level_control_complete_step(level_object, invocation, payload->result);
253 static gboolean on_level_control_step(ZigbeeZcl_level_control *level_control_object,
254 GDBusMethodInvocation *invocation,
259 gshort transition_time,
262 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
263 ZigbeeZclLevelControlStep_t req;
264 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
268 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStep_t));
270 /* Update request structure */
271 req.node_id = node_id;
272 req.endpoint = endpoint;
273 req.step_mode = step_mode;
274 req.step_size = step_size;
275 req.transition_time = transition_time;
277 /* Allocate response callback data */
279 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
280 invocation, NULL, 0);
281 if (NULL == resp_cb_data) {
282 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
284 /* Send failure response */
285 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
290 /* Dispatch request */
291 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
292 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
293 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP,
295 on_level_control_step_resp, resp_cb_data);
297 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
299 /* Free response callback data */
300 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
302 /* Send failure response */
303 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
311 static void on_level_control_move_to_level_with_on_off_resp(ZigBeeServiceInterface *service_interface,
312 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
314 ZigbeeServiceInterfaceRespCbData_t *cb_data =
315 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
317 ZigbeeZcl_level_control *level_object = NULL;
318 GDBusMethodInvocation *invocation = NULL;
320 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
322 NOT_USED(service_interface);
323 NOT_USED(request_id);
325 if (NULL == resp_data || 0 == resp_data_len) {
326 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
331 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
332 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
334 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
335 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
337 zigbee_zcl_level_control_complete_move_to_level_with_on_off(level_object, invocation,
343 static gboolean on_level_control_move_to_level_with_on_off(
344 ZigbeeZcl_level_control *level_control_object,
345 GDBusMethodInvocation *invocation,
352 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
353 ZigbeeZclLevelControlMoveToLevelWithOnOff_t req;
354 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
358 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveToLevelWithOnOff_t));
360 /* Update request structure */
361 req.node_id = node_id;
362 req.endpoint = endpoint;
364 req.transition = transition;
366 /* Allocate response callback data */
368 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
369 invocation, NULL, 0);
370 if (NULL == resp_cb_data) {
371 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
373 /* Send failure response */
374 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
379 /* Dispatch request */
380 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
381 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
382 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_TO_LEVEL_WITH_ON_OFF,
384 on_level_control_move_to_level_with_on_off_resp, resp_cb_data);
386 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
388 /* Free response callback data */
389 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
391 /* Send failure response */
392 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
400 static void on_level_control_move_with_on_off_resp(ZigBeeServiceInterface *service_interface,
401 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
403 ZigbeeServiceInterfaceRespCbData_t *cb_data =
404 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
406 ZigbeeZcl_level_control *level_object = NULL;
407 GDBusMethodInvocation *invocation = NULL;
409 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
411 NOT_USED(service_interface);
412 NOT_USED(request_id);
414 if (NULL == resp_data || 0 == resp_data_len) {
415 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
420 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
421 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
423 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
424 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
426 zigbee_zcl_level_control_complete_move_with_on_off(level_object, invocation,
432 static gboolean on_level_control_move_with_on_off(
433 ZigbeeZcl_level_control *level_control_object,
434 GDBusMethodInvocation *invocation,
441 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
442 ZigbeeZclLevelControlMoveWithOnOff_t req;
443 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
447 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlMoveWithOnOff_t));
449 /* Update request structure */
450 req.node_id = node_id;
451 req.endpoint = endpoint;
452 req.move_mode = move_mode;
455 /* Allocate response callback data */
457 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
458 invocation, NULL, 0);
459 if (NULL == resp_cb_data) {
460 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
462 /* Send failure response */
463 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
468 /* Dispatch request */
469 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
470 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
471 ZBLIB_ZCL_LEVEL_CONTROL_OPS_MOVE_WITH_ON_OFF,
473 on_level_control_move_with_on_off_resp, resp_cb_data);
475 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
477 /* Free response callback data */
478 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
480 /* Send failure response */
481 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
489 static void on_level_control_step_with_on_off_resp(ZigBeeServiceInterface *service_interface,
490 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
492 ZigbeeServiceInterfaceRespCbData_t *cb_data =
493 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
495 ZigbeeZcl_level_control *level_object = NULL;
496 GDBusMethodInvocation *invocation = NULL;
498 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
500 NOT_USED(service_interface);
501 NOT_USED(request_id);
503 if (NULL == resp_data || 0 == resp_data_len) {
504 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
509 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
510 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
512 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
513 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
515 zigbee_zcl_level_control_complete_step_with_on_off(level_object, invocation,
521 static gboolean on_level_control_step_with_on_off(
522 ZigbeeZcl_level_control *level_control_object,
523 GDBusMethodInvocation *invocation,
528 gshort transition_time,
531 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
532 ZigbeeZclLevelControlStepWithOnOff_t req;
533 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
537 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStepWithOnOff_t));
539 /* Update request structure */
540 req.node_id = node_id;
541 req.endpoint = endpoint;
542 req.step_mode = step_mode;
543 req.step_size = step_size;
544 req.transition_time = transition_time;
546 /* Allocate response callback data */
548 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
549 invocation, NULL, 0);
550 if (NULL == resp_cb_data) {
551 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
553 /* Send failure response */
554 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
559 /* Dispatch request */
560 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
561 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
562 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STEP_WITH_ON_OFF,
564 on_level_control_step_with_on_off_resp, resp_cb_data);
566 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
568 /* Free response callback data */
569 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
571 /* Send failure response */
572 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
580 static void on_level_control_stop_resp(ZigBeeServiceInterface *service_interface,
581 guint request_id, gpointer resp_data, guint resp_data_len, gpointer resp_cb_data)
583 ZigbeeServiceInterfaceRespCbData_t *cb_data =
584 (ZigbeeServiceInterfaceRespCbData_t *)resp_cb_data;
586 ZigbeeZcl_level_control *level_object = NULL;
587 GDBusMethodInvocation *invocation = NULL;
589 ZigbeeGeneralResp_t *payload = (ZigbeeGeneralResp_t *)resp_data;
591 NOT_USED(service_interface);
592 NOT_USED(request_id);
594 if (NULL == resp_data || 0 == resp_data_len) {
595 Z_LOGE("resp_data=%p or resp_data_len=%d is null", resp_data, resp_data_len);
600 level_object = zigbee_service_dbus_interface_ref_interface_object(cb_data);
601 zblib_check_null_free_and_ret("level_object", level_object, cb_data);
603 invocation = zigbee_service_dbus_interface_ref_invocation(cb_data);
604 zblib_check_null_free_and_ret("invocation", invocation, cb_data);
606 zigbee_zcl_level_control_complete_stop(level_object, invocation, payload->result);
611 static gboolean on_level_control_stop(ZigbeeZcl_level_control *level_control_object,
612 GDBusMethodInvocation *invocation,
617 ZigBeeServiceInterface *service_interface = (ZigBeeServiceInterface *)user_data;
618 ZigbeeZclLevelControlStop_t req;
619 ZigbeeServiceInterfaceRespCbData_t *resp_cb_data = NULL;
623 memset(&req, 0x0, sizeof(ZigbeeZclLevelControlStop_t));
625 /* Update request structure */
626 req.node_id = node_id;
627 req.endpoint = endpoint;
629 /* Allocate response callback data */
631 zigbee_service_dbus_interface_create_resp_cb_data(level_control_object,
632 invocation, NULL, 0);
633 if (NULL == resp_cb_data) {
634 Z_LOGE("zigbee_service_dbus_interface_create_resp_cb_data failed!");
636 /* Send failure response */
637 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
642 /* Dispatch request */
643 ret = zigbee_service_dbus_interface_dispatch_request(service_interface,
644 ZBLIB_DRIVER_TYPE_ZCL_LEVEL_CONTROL,
645 ZBLIB_ZCL_LEVEL_CONTROL_OPS_STOP,
647 on_level_control_stop_resp, resp_cb_data);
649 Z_LOGE("zigbee_service_dbus_interface_dispatch_request failed!");
651 /* Free response callback data */
652 zigbee_service_dbus_interface_destroy_resp_cb_data(resp_cb_data);
654 /* Send failure response */
655 ZIGBEE_DBUS_FAIL_RESPONSE(invocation, ZIGBEE_DBUS_DEFAULT_REQ_FAILED_MSG);
663 void zigbee_service_dbus_interface_zcl_level_control_notification(ZigBeeServiceInterface *service_interface,
664 guint noti_id, gpointer noti_data, guint noti_data_len, gpointer noti_cb_data)
666 ZigbeeZcl_level_control *level_object;
668 zblib_check_null_ret("service_interface", service_interface);
670 if (NULL == noti_data || 0 == noti_data_len) {
671 Z_LOGE("noti_data=%p or noti_data_len=%d is null", noti_data, noti_data_len);
675 level_object = _service_interface_ref_zigbee_zcl_level_control(service_interface);
676 zblib_check_null_ret("level_object", level_object);
678 NOT_USED(noti_cb_data);
682 Z_LOGE("Unexpected notification [%x]", noti_id);
686 /* ZigbeeZcl_level_control should be dereferenced */
687 g_object_unref(level_object);
691 gboolean zigbee_service_dbus_interface_zcl_level_control_init(ZigBeeServiceInterface *service_interface,
692 ZigbeeObjectSkeleton *zigbee_object)
694 ZigbeeZcl_level_control *level_control_object;
696 if (NULL == service_interface) {
697 /* LCOV_EXCL_START */
698 Z_LOGE("service_interface is NULL");
703 level_control_object = zigbee_zcl_level_control_skeleton_new();
704 zigbee_object_skeleton_set_zcl_level_control(zigbee_object, level_control_object);
705 g_object_unref(level_control_object);
707 Z_LOGI("level_control_object: [%p]", level_control_object);
710 * Register signal handlers for 'level_control' interface
712 g_signal_connect(level_control_object,
713 "handle-move-to-level",
714 G_CALLBACK(on_level_control_move_to_level), service_interface);
716 g_signal_connect(level_control_object,
718 G_CALLBACK(on_level_control_move), service_interface);
720 g_signal_connect(level_control_object,
722 G_CALLBACK(on_level_control_step), service_interface);
724 g_signal_connect(level_control_object,
725 "handle-move-to-level-with-on-off",
726 G_CALLBACK(on_level_control_move_to_level_with_on_off), service_interface);
728 g_signal_connect(level_control_object,
729 "handle-move-with-on-off",
730 G_CALLBACK(on_level_control_move_with_on_off), service_interface);
732 g_signal_connect(level_control_object,
733 "handle-step-with-on-off",
734 G_CALLBACK(on_level_control_step_with_on_off), service_interface);
736 g_signal_connect(level_control_object,
738 G_CALLBACK(on_level_control_stop), service_interface);