From: Wootak Jung Date: Thu, 4 Nov 2021 04:07:47 +0000 (+0900) Subject: Add container handling logic X-Git-Tag: submit/tizen_6.5/20211105.042605^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c7e72279cbd50f024915c527af70736f0f454ce8;hp=9fb3bd46c0b4c9585a650da466e736e8445865cb;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git Add container handling logic bt-service is running in host only All requests received from container will re-direct to host Don't read vconf to check bt status Change-Id: If2d42cde897c8f90f700aa5279232d8ab8f8a523 --- diff --git a/bt-api/bt-adapter.c b/bt-api/bt-adapter.c index c760552..ec9f7f3 100644 --- a/bt-api/bt-adapter.c +++ b/bt-api/bt-adapter.c @@ -73,13 +73,13 @@ static int __bt_fill_device_list(GArray *out_param2, GPtrArray **dev_list) BT_EXPORT_API int bluetooth_check_adapter(void) { - int value = VCONFKEY_BT_STATUS_OFF; +#ifndef TIZEN_BLUEDROID_PORTING int ret; - ret = _bt_get_adapter_path(_bt_get_system_common_conn(), NULL); - - if (ret != BLUETOOTH_ERROR_NONE) - return BLUETOOTH_ADAPTER_DISABLED; + return ret == BLUETOOTH_ERROR_NONE ? BLUETOOTH_ADAPTER_ENABLED : + BLUETOOTH_ADAPTER_DISABLED; +#else + int value = VCONFKEY_BT_STATUS_OFF; /* check VCONFKEY_BT_STATUS */ if (vconf_get_int(VCONFKEY_BT_STATUS, &value) != 0) { @@ -89,6 +89,7 @@ BT_EXPORT_API int bluetooth_check_adapter(void) return value == VCONFKEY_BT_STATUS_OFF ? BLUETOOTH_ADAPTER_DISABLED : BLUETOOTH_ADAPTER_ENABLED; +#endif } BT_EXPORT_API int bluetooth_enable_adapter(void) diff --git a/bt-api/bt-common.c b/bt-api/bt-common.c index d82e921..1e8345d 100644 --- a/bt-api/bt-common.c +++ b/bt-api/bt-common.c @@ -95,7 +95,13 @@ GDBusConnection *_bt_get_system_common_conn(void) { if (system_common_conn == NULL) { GError *error = NULL; - system_common_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + if (access(CONTAINER_FILE, F_OK) == 0) + system_common_conn = g_dbus_connection_new_for_address_sync( + DBUS_HOST_SYSTEM_BUS_ADDRESS, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, + NULL, NULL, &error); + else + system_common_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); if (error) { BT_ERR("GDBus connection Error : %s \n", error->message); g_clear_error(&error); @@ -109,7 +115,13 @@ GDBusConnection *_bt_get_system_shared_conn(void) { if (system_shared_conn == NULL) { GError *error = NULL; - system_shared_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); + if (access(CONTAINER_FILE, F_OK) == 0) + system_shared_conn = g_dbus_connection_new_for_address_sync( + DBUS_HOST_SYSTEM_BUS_ADDRESS, + G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT | G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, + NULL, NULL, &error); + else + system_shared_conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); if (error) { BT_ERR("GDBus connection Error : %s \n", error->message); g_clear_error(&error); diff --git a/bt-service/services/bt-service-main.c b/bt-service/services/bt-service-main.c index 7ee8782..5ce987f 100644 --- a/bt-service/services/bt-service-main.c +++ b/bt-service/services/bt-service-main.c @@ -378,6 +378,11 @@ int main(void) return 0; } + if (access(CONTAINER_FILE, F_OK) == 0) { + BT_INFO("bt-service is not running in container"); + return 0; + } + memset(&sa, 0, sizeof(sa)); sa.sa_sigaction = __bt_sigterm_handler; sa.sa_flags = SA_SIGINFO; diff --git a/include/bt-internal-types.h b/include/bt-internal-types.h index decd303..58e7b95 100644 --- a/include/bt-internal-types.h +++ b/include/bt-internal-types.h @@ -923,6 +923,9 @@ static inline bool get_tizen_feature_supported(char *feature) #define TIZEN_FEATURE_PBAP_SUPPORTED (get_tizen_feature_supported(BT_FEATURE_PBAP) == true) #define TIZEN_FEATURE_ROBOT_REFERENCE ((get_tizen_model()) == _MODEL_ROBOT) +#define CONTAINER_FILE "/run/systemd/container" +#define DBUS_HOST_SYSTEM_BUS_ADDRESS "unix:path=/run/host/dbus/system_bus_socket" + #ifdef __cplusplus } #endif /* __cplusplus */