--- /dev/null
+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)
--- /dev/null
+/*
+ * 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 <stdlib.h>
+#include <stdbool.h>
+#include <glib.h>
+
+#include <hal_device_bezel_stub_1.h>
+#include <hal-api-device-bezel-passthrough.h>
+
+#include <hal/hal-common.h>
+#include <common.h>
+
+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