diff options
Diffstat (limited to 'audio/main.c')
-rw-r--r-- | audio/main.c | 111 |
1 files changed, 9 insertions, 102 deletions
diff --git a/audio/main.c b/audio/main.c index 52396beb..75cb67e6 100644 --- a/audio/main.c +++ b/audio/main.c @@ -42,32 +42,17 @@ #include "device.h" #include "manager.h" -static gboolean disable_hfp = TRUE; -static gboolean sco_hci = TRUE; -static int source_count = 1; - static GMainLoop *main_loop = NULL; -static struct enabled_interfaces enabled = { - .headset = TRUE, - .gateway = FALSE, - .sink = TRUE, - .source = FALSE, - .control = TRUE, - .target = FALSE, -}; - static void sig_term(int sig) { g_main_loop_quit(main_loop); } -static void read_config(const char *file) +static GKeyFile *load_config_file(const char *file) { - GKeyFile *keyfile; GError *err = NULL; - gboolean no_hfp; - char *str; + GKeyFile *keyfile; keyfile = g_key_file_new(); @@ -75,96 +60,17 @@ static void read_config(const char *file) error("Parsing %s failed: %s", file, err->message); g_error_free(err); g_key_file_free(keyfile); - return; - } - - str = g_key_file_get_string(keyfile, "General", "SCORouting", &err); - if (err) { - debug("%s: %s", file, err->message); - g_error_free(err); - err = NULL; - } else { - if (strcmp(str, "PCM") == 0) - sco_hci = FALSE; - else if (strcmp(str, "HCI") == 0) - sco_hci = TRUE; - else - error("Invalid Headset Routing value: %s", str); - g_free(str); - } - - str = g_key_file_get_string(keyfile, "General", "Enable", &err); - if (err) { - debug("%s: %s", file, err->message); - g_error_free(err); - err = NULL; - } else { - if (strstr(str, "Headset")) - enabled.headset = TRUE; - if (strstr(str, "Gateway")) - enabled.gateway = TRUE; - if (strstr(str, "Sink")) - enabled.sink = TRUE; - if (strstr(str, "Source")) - enabled.source = TRUE; - if (strstr(str, "Control")) - enabled.control = TRUE; - if (strstr(str, "Target")) - enabled.target = TRUE; - g_free(str); + return NULL; } - str = g_key_file_get_string(keyfile, "General", "Disable", &err); - if (err) { - debug("%s: %s", file, err->message); - g_error_free(err); - err = NULL; - } else { - if (strstr(str, "Headset")) - enabled.headset = FALSE; - if (strstr(str, "Gateway")) - enabled.gateway = FALSE; - if (strstr(str, "Sink")) - enabled.sink = FALSE; - if (strstr(str, "Source")) - enabled.source = FALSE; - if (strstr(str, "Control")) - enabled.control = FALSE; - if (strstr(str, "Target")) - enabled.target = FALSE; - g_free(str); - } - - no_hfp = g_key_file_get_boolean(keyfile, "Headset", "DisableHFP", - &err); - if (err) { - debug("%s: %s", file, err->message); - g_error_free(err); - err = NULL; - } else - disable_hfp = no_hfp; - - str = g_key_file_get_string(keyfile, "A2DP", "SourceCount", &err); - if (err) { - debug("%s: %s", file, err->message); - g_error_free(err); - err = NULL; - } else { - source_count = atoi(str); - g_free(str); - } - - debug("Config options: DisableHFP=%s, SCORouting=%s, SourceCount=%d", - disable_hfp ? "true" : "false", - sco_hci ? "HCI" : "PCM", source_count); - - g_key_file_free(keyfile); + return keyfile; } int main(int argc, char *argv[]) { DBusConnection *conn; struct sigaction sa; + GKeyFile *config; start_logging("audio", "Bluetooth Audio daemon"); @@ -180,7 +86,7 @@ int main(int argc, char *argv[]) enable_debug(); - read_config(CONFIGDIR "/audio.conf"); + config = load_config_file(CONFIGDIR "/audio.conf"); main_loop = g_main_loop_new(NULL, FALSE); @@ -195,14 +101,15 @@ int main(int argc, char *argv[]) exit(1); } - if (audio_init(conn, &enabled, disable_hfp, sco_hci, - source_count) < 0) { + if (audio_init(conn, config) < 0) { error("Audio init failed!"); exit(1); } if (argc > 1 && !strcmp(argv[1], "-s")) register_external_service(conn, "audio", "Audio service", ""); + if (config) + g_key_file_free(config); g_main_loop_run(main_loop); |