X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=zone.c;fp=zone.c;h=5b1cd07cd77aa9fa0d60e2b0f48d603a23e3d558;hb=f259ec53101a3754cd2da24a369ea48bb1947e62;hp=3a20ab9c84bfc9a315137ab2154b934815ecaaca;hpb=acb229813f5845e8b38bea56870211319887f3b4;p=staging%2Fagl-audio-plugin.git 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; +}