Map labels to classes, map routing groups to audio adapters
[staging/agl-audio-plugin.git] / config.c
index 4c4ed7d..b978296 100644 (file)
--- a/config.c
+++ b/config.c
  *
  */
 #include "config.h"
+#include "zone.h"
 
-const char *pa_config_file_get_path (const char *dir, const char *file, char *buf, size_t len)
+bool use_default_configuration (struct userdata *);
+
+const char *agl_config_file_get_path (const char *dir, const char *file, char *buf, size_t len)
 {
        pa_assert (file);
        pa_assert (buf);
@@ -32,7 +35,7 @@ const char *pa_config_file_get_path (const char *dir, const char *file, char *bu
        return buf;
 }
 
-bool pa_config_parse_file (struct userdata *u, const char *path)
+bool agl_config_parse_file (struct userdata *u, const char *path)
 {
        bool success;
 
@@ -42,18 +45,18 @@ bool pa_config_parse_file (struct userdata *u, const char *path)
                return false;
        else {
                pa_log_info ("parsing configuration file '%s'", path);
-               success = pa_config_dofile (u, path);
+               success = agl_config_dofile (u, path);
        }
 
        if (!success) {
                pa_log_info ("applying builtin default configuration");
-               //success = use_default_configuration (u);
+               success = use_default_configuration (u);
        }
 
        return success;
 }
 
-bool pa_config_dofile (struct userdata *u, const char *path)
+bool agl_config_dofile (struct userdata *u, const char *path)
 {
        /* TODO */
        return false;
@@ -74,20 +77,21 @@ static zone_def zones[] = {
 
 static rtgroup_def rtgroups[] = {
        { agl_input,
-         "phone",
+         "Phone",
+         "PhoneCard",
          agl_router_phone_accept,
          agl_router_phone_compare
        },
 
-       { 0, NULL, NULL, NULL }
+       { 0, NULL, NULL, NULL, NULL }
 };
 
 static classmap_def classmap[] = {
-       { agl_phone,    0, agl_output, "phone" },
-       { agl_player,   0, agl_output, "default" },
-       { agl_radio,    0, agl_output, "default" },
-       { agl_navigator,0, agl_output, "default" },
-       { agl_event,    0, agl_output, "default" },
+       { agl_phone,    0, agl_input, "Phone" },
+       { agl_player,   0, agl_input, "default" },
+       { agl_radio,    0, agl_input, "default" },
+       { agl_navigator,0, agl_input, "default" },
+       { agl_event,    0, agl_input, "default" },
        { agl_node_type_unknown, 0, agl_direction_unknown, NULL }
 };
 
@@ -117,5 +121,24 @@ bool use_default_configuration (struct userdata *u)
        typemap_def *t;
        prior_def *p;
 
+       pa_assert (u);
+
+       for (z = zones; z->name; z++)
+               agl_zoneset_add_zone (u, z->name, (uint32_t)(z - zones));
+
+       for (r = rtgroups; r->name; r++)
+               agl_router_create_rtgroup (u, r->type, r->name, r->node_desc,
+                                             r->accept, r->compare);
+
+       for (c = classmap; c->rtgroup; c++)
+               agl_router_assign_class_to_rtgroup (u, c->class, c->zone,
+                                                      c->type, c->rtgroup);
+
+       for (t = typemap; t->id; t++) 
+               agl_nodeset_add_role (u, t->id, t->type, NULL);
+
+       for (p = priormap; p->class; p++)
+               agl_router_assign_class_priority (u, p->class, p->priority);
+
        return true;
 }