router: fix for bluetooth disappearing causing assert in combine
[profile/ivi/pulseaudio-module-murphy-ivi.git] / murphy / config.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <errno.h>
4
5 #include <pulsecore/pulsecore-config.h>
6
7 #include "config.h"
8 #include "node.h"
9 #include "router.h"
10
11 typedef struct {
12     const char            *name;
13     mir_rtgroup_accept_t   accept;
14     mir_rtgroup_compare_t  compare;
15 } rtgroup_def;
16
17 typedef struct {
18     mir_node_type  class;
19     const char    *rtgroup;
20 } classmap_def;
21
22 rtgroup_def  rtgroups[] = {
23     {"default", mir_router_default_accept, mir_router_default_compare},
24     {"phone"  , mir_router_phone_accept  , mir_router_phone_compare  },
25     {   NULL  ,            NULL          ,              NULL         }
26 };
27
28 classmap_def classmap[] = {
29     {mir_radio    , "default"},
30     {mir_player   , "default"},
31     {mir_navigator, "default"},
32     {mir_game     , "default"},
33     {mir_browser  , "default"},
34     {mir_phone    , "default"},
35     {mir_event    , "default"},
36     {mir_node_type_unknown, NULL}
37 };
38
39
40 static pa_bool_t use_default_configuration(struct userdata *);
41 static pa_bool_t parse_config_file(struct userdata *, FILE *);
42
43
44 pa_mir_config *pa_mir_config_init(struct userdata *u)
45 {
46     pa_mir_config *config;
47
48     pa_assert(u);
49
50     config = pa_xnew0(pa_mir_config, 1);
51
52     return config;
53 }
54
55 void pa_mir_config_done(struct userdata *u)
56 {
57     pa_mir_config *config;
58
59     if (u && (config = u->config)) {
60         pa_xfree(config);
61         u->config = NULL;
62     }
63 }
64
65
66 pa_bool_t pa_mir_config_parse_file(struct userdata *u, const char *path)
67 {
68     pa_mir_config *config;
69     FILE *f;
70     int success;
71
72     pa_assert(u);
73     pa_assert_se((config = u->config));
74
75     if (path) {
76         if ((f = fopen(path, "r"))) {
77             success = parse_config_file(u, f);
78             fclose(f);
79             return success;
80         }
81         else {
82             pa_log_info("%s: failed to open config file '%s': %s",
83                         __FILE__, path, strerror(errno));            
84         }
85     }
86
87     pa_log_debug("%s: default config values will apply", __FILE__);
88
89     success = use_default_configuration(u);
90
91     return success;
92 }
93
94 static pa_bool_t use_default_configuration(struct userdata *u)
95 {
96     rtgroup_def  *r;
97     classmap_def *c;
98
99     pa_assert(u);
100
101     for (r = rtgroups;  r->name;   r++)
102         mir_router_create_rtgroup(u, r->name, r->accept, r->compare);
103
104     for (c = classmap;  c->rtgroup;  c++)
105         mir_router_assign_class_to_rtgroup(u, c->class, c->rtgroup);
106
107     return TRUE;
108 }
109
110 static pa_bool_t parse_config_file(struct userdata *u, FILE *f)
111 {
112     return TRUE;
113 }
114                                   
115 /*
116  * Local Variables:
117  * c-basic-offset: 4
118  * indent-tabs-mode: nil
119  * End:
120  *
121  */