From 3bae694b2de7a23442723e9ce0d77698b89abe6c Mon Sep 17 00:00:00 2001 From: Hyuk Lee Date: Mon, 12 Feb 2018 10:16:00 +0900 Subject: [PATCH] Modify the bt-core's UID/GID to network_fw Change-Id: I1bff9d8ebff0c3479c4c113ccdfe1ae29fba991d Signed-off-by: Hyuk Lee --- bt-core/bt-core-adapter.c | 70 +++++++++++++++++++++++++++++++++++- bt-core/include/bt-core-adapter.h | 5 +++ bt-core/org.projectx.bt_core.service | 3 +- 3 files changed, 76 insertions(+), 2 deletions(-) diff --git a/bt-core/bt-core-adapter.c b/bt-core/bt-core-adapter.c index 63025a6..9c68257 100644 --- a/bt-core/bt-core-adapter.c +++ b/bt-core/bt-core-adapter.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "bt-core-main.h" #include "bt-core-adapter.h" @@ -115,6 +116,34 @@ gboolean _bt_core_is_flight_mode_enabled(void) } } +static int __bt_call_systemact_service(const char *file_path) +{ + BT_DBG("+"); + FILE *fp; + + if (!file_path) { + BT_ERR("service file path is NULL"); + return -1; + } + + if (!access(file_path, F_OK)) { + remove(file_path); + usleep(100); + } + + fp = fopen(file_path, "w"); + if (!fp) { + BT_ERR("Failed to fopen service file"); + return -1; + } + + + fclose(fp); + BT_DBG("-"); + return 0; + +} + static int __execute_command(const char *cmd, char *const arg_list[]) { int pid; @@ -149,6 +178,45 @@ static int __execute_command(const char *cmd, char *const arg_list[]) return 0; } +static int __bt_stack_up(void) +{ + int ret; + + /* activate HCI logger */ + ret = __bt_call_systemact_service(BT_SYSTEMACT_HCI_LOGGER_START); + if (ret < 0) { + BT_ERR("Failed to call systemact service"); + return -1; + } + + ret = __execute_command("/usr/etc/bluetooth/bt-stack-up.sh", NULL); + if (ret < 0) { + BT_ERR("Failed to run script"); + __bt_call_systemact_service(BT_SYSTEMACT_HCI_LOGGER_STOP); + return -1; + } + + /* activate Bluez */ + ret = __bt_call_systemact_service(BT_SYSTEMACT_BLUEZ_START); + if (ret < 0) { + BT_ERR("Failed to call systemact service"); + return -1; + } + + /* activate bluetooth-share */ + ret = __bt_call_systemact_service(BT_SYSTEMACT_BLUETOOTH_SHARE_START); + if (ret < 0) { + BT_ERR("Failed to call systemact service"); + return -1; + } + + + return 0; + + + +} + int _bt_enable_adapter(void) { int ret; @@ -182,7 +250,7 @@ int _bt_enable_adapter(void) char *argv_up[] = {"/usr/bin/hciconfig", "/usr/bin/hciconfig", "hci0", "up", NULL}; ret = __execute_command("/usr/bin/hciconfig", argv_up); } else { - ret = __execute_command("/usr/etc/bluetooth/bt-stack-up.sh", NULL); + ret = __bt_stack_up(); } if (ret < 0) { BT_ERR("running script failed"); diff --git a/bt-core/include/bt-core-adapter.h b/bt-core/include/bt-core-adapter.h index f56d8eb..1f465d0 100755 --- a/bt-core/include/bt-core-adapter.h +++ b/bt-core/include/bt-core-adapter.h @@ -34,6 +34,11 @@ extern "C" { #define BT_CORE_NAME "org.projectx.bt_core" #define BT_CORE_PATH "/org/projectx/bt_core" +#define BT_SYSTEMACT_HCI_LOGGER_START "/run/.hci_logger_start" +#define BT_SYSTEMACT_HCI_LOGGER_STOP "/run/.hci_logger_stop" +#define BT_SYSTEMACT_BLUEZ_START "/run/.bluez_start" +#define BT_SYSTEMACT_BLUETOOTH_SHARE_START "/run/.bluetooth_share_start" + #define BT_CORE_TYPE (bt_core_get_type()) typedef enum { diff --git a/bt-core/org.projectx.bt_core.service b/bt-core/org.projectx.bt_core.service index f8778e4..451fab3 100644 --- a/bt-core/org.projectx.bt_core.service +++ b/bt-core/org.projectx.bt_core.service @@ -1,4 +1,5 @@ [D-BUS Service] Name=org.projectx.bt_core Exec=/usr/bin/bt-core -User=root +User=network_fw +Group=network_fw -- 2.7.4