summaryrefslogtreecommitdiffstats
path: root/zone.c
diff options
context:
space:
mode:
authorManuel Bachmann <manuel.bachmann@iot.bzh>2016-07-04 14:29:04 +0200
committerYannick Gicquel <yannick.gicquel@iot.bzh>2016-10-11 17:09:07 +0200
commitf259ec53101a3754cd2da24a369ea48bb1947e62 (patch)
tree76a42068003af728c71ec1d253eeb869189c9c97 /zone.c
parentacb229813f5845e8b38bea56870211319887f3b4 (diff)
Finalize basic configuration logic
Configuration-related structures and values are now applied everywhere. Change-Id: I5c665a649b8c7c52dd18d214cee6c484f491b584 Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
Diffstat (limited to 'zone.c')
-rw-r--r--zone.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/zone.c b/zone.c
index 3a20ab9..5b1cd07 100644
--- a/zone.c
+++ b/zone.c
@@ -56,3 +56,56 @@ void agl_zoneset_done (struct userdata *u)
free (zs);
}
}
+
+int agl_zoneset_add_zone (struct userdata *u, const char *name, uint32_t index)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert (name);
+ pa_assert (index < AGL_ZONE_MAX);
+ pa_assert_se (zs = u->zoneset);
+
+ zone = pa_xnew (agl_zone, 1);
+ zone->name = pa_xstrdup (name);
+ zone->index = index;
+
+ pa_hashmap_put (zs->zones.hash, (void *)zone->name, zone);
+
+ zs->zones.index[index] = zone;
+
+ return 0;
+}
+
+agl_zone *agl_zoneset_get_zone_by_name (struct userdata *u, const char *name)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert_se (zs = u->zoneset);
+
+ if (name && zs->zones.hash)
+ zone = pa_hashmap_get (zs->zones.hash, name);
+ else
+ zone = NULL;
+
+ return zone;
+}
+
+agl_zone *agl_zoneset_get_zone_by_index (struct userdata *u, uint32_t index)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert_se (zs = u->zoneset);
+
+ if (index < AGL_ZONE_MAX)
+ zone = zs->zones.index[index];
+ else
+ zone = NULL;
+
+ return zone;
+}