summaryrefslogtreecommitdiffstats
path: root/audio/main.c
diff options
context:
space:
mode:
authorJohan Hedberg <johan.hedberg@nokia.com>2008-01-16 09:08:26 +0000
committerJohan Hedberg <johan.hedberg@nokia.com>2008-01-16 09:08:26 +0000
commit3eb854122f31b55fc4ba56b5ce555c380947f710 (patch)
tree5bfa292df6b6fca3f013a75555859402571bd0ef /audio/main.c
parente65858be07f86fe12756c67a20a5f45debfcc250 (diff)
Reorganize audio.conf parsing in a more modular manner
Diffstat (limited to 'audio/main.c')
-rw-r--r--audio/main.c111
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);