From: Youngjae Cho Date: Tue, 25 Mar 2025 06:55:41 +0000 (+0900) Subject: device-bezel: Add hal-backend-service-device-bezel plugin X-Git-Tag: accepted/tizen/unified/20250409.082032~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aed023fe8953dcbc9808b2a5ffbe455fce89f7dc;p=platform%2Fhal%2Fapi%2Fdevice.git device-bezel: Add hal-backend-service-device-bezel plugin Added hal-backend-service-device-bezel plugin that is HAL IPC stub (server) for HAL_MODULE_DEVICE_BEZEL. Change-Id: I72efa2e88240d7d17749fc7f3476e1ee4a7799e1 Signed-off-by: Youngjae Cho --- diff --git a/CMakeLists.txt b/CMakeLists.txt index d309dae..7f25346 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,3 +109,4 @@ ENDIF(UNIX) ADD_SUBDIRECTORY(hal-backend-service-plugin/display) ADD_SUBDIRECTORY(hal-backend-service-plugin/led) ADD_SUBDIRECTORY(hal-backend-service-plugin/battery) +ADD_SUBDIRECTORY(hal-backend-service-plugin/bezel) diff --git a/hal-backend-service-plugin/bezel/CMakeLists.txt b/hal-backend-service-plugin/bezel/CMakeLists.txt new file mode 100644 index 0000000..8b6f9cb --- /dev/null +++ b/hal-backend-service-plugin/bezel/CMakeLists.txt @@ -0,0 +1,37 @@ +PROJECT(hal-backend-service-device-bezel C) + +SET(LIBRARY_NAME "${PROJECT_NAME}") +SET(CMAKE_VERBOSE_MAKEFILE ON) +SET(CMAKE_INSTALL_PREFIX /usr) +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) + +IF(ENABLE_DLOG STREQUAL on) + ADD_DEFINITIONS("-DFEATURE_DLOG") + ADD_DEFINITIONS("-DLOG_TAG=\"HAL_BACKEND_SERVICE_DEVICE_BEZEL\"") +ENDIF() + +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/generated) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED + dlog + hal-api-common + glib-2.0 + capi-appfw-app-common + capi-appfw-app-manager + capi-appfw-package-manager + rpc-port +) + +SET(SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/hal-backend-service-device-bezel.c + ${CMAKE_SOURCE_DIR}/src/hal-api-device-bezel.c + ${CMAKE_SOURCE_DIR}/src/hal-api-device-bezel-passthrough.c + ${CMAKE_SOURCE_DIR}/src/generated/hal_device_bezel_stub_1.c) + +ADD_LIBRARY(${LIBRARY_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${pkgs_LDFLAGS} -ldl) + +INSTALL(TARGETS ${LIBRARY_NAME} DESTINATION ${LIB_INSTALL_DIR}/hal COMPONENT RuntimeLibraries) diff --git a/hal-backend-service-plugin/bezel/hal-backend-service-device-bezel.c b/hal-backend-service-plugin/bezel/hal-backend-service-device-bezel.c new file mode 100644 index 0000000..6f54e3e --- /dev/null +++ b/hal-backend-service-plugin/bezel/hal-backend-service-device-bezel.c @@ -0,0 +1,147 @@ +/* + * HAL Backend Service Plugin for HAL_MODULE_DEVICE_BEZEL + * + * Copyright (c) 2025 Samsung Electronics Co., Ltd. + * + * 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 +#include +#include + +#include +#include + +#include +#include + +static void device_bezel_ipc_create(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + void *user_data) +{ + char *sender = NULL; + rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_get_sender(context, &sender); + if (!sender) + return; + + free(sender); +} + +static void device_bezel_ipc_terminate(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + void *user_data) +{ + char *sender = NULL; + + rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_get_sender(context, &sender); + if (!sender) + return; + + free(sender); +} + +static int device_bezel_ipc_get_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_state_e *state, void *user_data) +{ + if (!state) + return -EINVAL; + + return hal_device_bezel_passthrough_get_state((hal_device_bezel_state_e *) state); +} + +static int device_bezel_ipc_set_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_state_e state, void *user_data) +{ + + return hal_device_bezel_passthrough_set_state((hal_device_bezel_state_e) state); +} + +static int device_bezel_ipc_get_sw_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_state_e *state, void *user_data) +{ + if (!state) + return -EINVAL; + + return hal_device_bezel_passthrough_get_sw_state((hal_device_bezel_state_e *) state); +} + +static int device_bezel_ipc_set_sw_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_state_e state, void *user_data) +{ + return hal_device_bezel_passthrough_set_sw_state((hal_device_bezel_state_e) state); +} + +static int device_bezel_ipc_get_vib_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_vib_state_e *state, void *user_data) +{ + if (!state) + return -EINVAL; + + return hal_device_bezel_passthrough_get_vib_state((hal_device_bezel_vib_state_e *) state); +} + +static int device_bezel_ipc_set_vib_state(rpc_port_stub_hal_device_bezel_stub_1_device_bezel_context_h context, + rpc_port_stub_hal_device_bezel_stub_1_enums_vib_state_e state, void *user_data) +{ + return hal_device_bezel_passthrough_set_vib_state((hal_device_bezel_vib_state_e) state); +} + +static int device_bezel_init (void *data) +{ + int ret = 0; + + ret = hal_device_bezel_passthrough_get_backend(); + if (ret < 0) { + _E("Failed to get passthrough bezel backend: %d", ret); + return ret; + } + + rpc_port_stub_hal_device_bezel_stub_1_device_bezel_callback_s callback = { + .create = device_bezel_ipc_create, + .terminate = device_bezel_ipc_terminate, + .get_state = device_bezel_ipc_get_state, + .set_state = device_bezel_ipc_set_state, + .get_sw_state = device_bezel_ipc_get_sw_state, + .set_sw_state = device_bezel_ipc_set_sw_state, + .get_vib_state = device_bezel_ipc_get_vib_state, + .set_vib_state = device_bezel_ipc_set_vib_state, + }; + + ret = rpc_port_stub_hal_device_bezel_stub_1_device_bezel_register(&callback, NULL); + if (ret < 0) + _E("Failed to register rpc_port_stub_hal_device_bezel_stub_1_device_bezel_callback_s ret(%d)", ret); + + return 0; +} + +static int device_bezel_exit (void *data) +{ + int ret = 0; + + rpc_port_stub_hal_device_bezel_stub_1_device_bezel_unregister(); + + ret = hal_device_bezel_passthrough_put_backend(); + if (ret < 0) + _E("Failed to hal_device_bezel_put_backend_passthrough ret(%d)", ret); + + return 0; +} + +hal_backend_service hal_backend_service_device_bezel_data = { + .module = HAL_MODULE_DEVICE_BEZEL, + .name = "hal-backend-service-device-bezel", + .early_init = NULL, + .init = device_bezel_init, + .exit = device_bezel_exit, + .late_exit = NULL, +}; \ No newline at end of file diff --git a/packaging/hal-api-device-manifest.xml b/packaging/hal-api-device-manifest.xml index 451cabf..146a800 100644 --- a/packaging/hal-api-device-manifest.xml +++ b/packaging/hal-api-device-manifest.xml @@ -6,7 +6,7 @@ HAL_MODULE_DEVICE_BEZEL - 1.0 + 1.0 HAL_MODULE_DEVICE_DISPLAY diff --git a/packaging/hal-api-device.spec b/packaging/hal-api-device.spec index 0d160eb..4150bfc 100644 --- a/packaging/hal-api-device.spec +++ b/packaging/hal-api-device.spec @@ -79,6 +79,7 @@ cp %{SOURCE2} %{buildroot}%{_sysconfdir}/hal/ %{_libdir}/hal/libhal-backend-service-device-display.so %{_libdir}/hal/libhal-backend-service-device-led.so %{_libdir}/hal/libhal-backend-service-device-battery.so +%{_libdir}/hal/libhal-backend-service-device-bezel.so %{_sysconfdir}/hal/hal-api-device-manifest.xml %files devel