summaryrefslogtreecommitdiffstats
path: root/docs/4a-framework/components.md
diff options
context:
space:
mode:
authorLoïc Collignon <loic.collignon@iot.bzh>2018-11-29 15:29:54 +0100
committerLoïc Collignon <loic.collignon@iot.bzh>2018-11-29 15:29:54 +0100
commit2610bf62ef76f4120a5f76dd0e5eb1e51538b41b (patch)
tree5a54c544bdfbab30601ef4c9cf4ebf554bc232e6 /docs/4a-framework/components.md
parent04f89b1c4f49372aea2f9d1c7e0adad5fb8bd99b (diff)
Backport of audio documentation from masterflounder_6.0.3flounder/6.0.36.0.3
Documentation was available only on master. New documentation website is now by branch, so documentation should be available on both branches. Bug: SPEC-1993 Change-Id: I55484d5c1f28ae1e7fa927533b3dd862a03ed207 Signed-off-by: Loïc Collignon <loic.collignon@iot.bzh>
Diffstat (limited to 'docs/4a-framework/components.md')
-rw-r--r--docs/4a-framework/components.md49
1 files changed, 49 insertions, 0 deletions
diff --git a/docs/4a-framework/components.md b/docs/4a-framework/components.md
new file mode 100644
index 0000000..2709d60
--- /dev/null
+++ b/docs/4a-framework/components.md
@@ -0,0 +1,49 @@
+# Components
+
+4a framework is made of several components which provide features to each other.
+The High Level API component is the only one that exports a public API. This
+means that, as an application developer you only need to care about the High
+Level API.
+
+## High level API
+
+This is the publicly exported API. It exposes one verb for each audio roles,
+plus **get_roles** to get the list of audio roles.
+
+This component manages audio roles and applies permissions, signaling and
+policies. Because each role is a unique verb, it means that each role can have
+its own smack label.
+
+It makes use of the **4a-hal-manager** to list all HALs and their
+configurations. Then it uses directly the enabled HALs.
+
+## 4a-hal-manager
+
+This component is responsible for HALs detection, initialization and state
+management.
+
+## 4a-hal-*
+
+This block represents all the different HALs. You can load multiple HALs
+provided that they don't interfere with each other.
+HALs can be provided by two means:
+
+* Built directly by the **4a-hal-manager** using it's controller and json files.
+* External HAL (like the unicens one), that have to register themselves to the
+ **4a-hal-manager**.
+
+HALs manage audio streams and zones. The streams are bound to audio roles.
+
+## 4a-softmixer
+
+This component abstracts the real devices to virtual ones and provides some
+basic mixing capabilities for devices that don't have this feature builtin.
+It exposes streams named like the audio roles.
+
+This component can be used by HALs, but this is not mandatory.
+
+HALs can either :
+
+* use 4a-softmixer (for example when hardware doesn't provide mixing feature),
+ or
+* take advantage from the hardware to provide the mixing capabilities.