summaryrefslogtreecommitdiffstats
path: root/hook-plugin/README.md
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2017-11-01 19:22:36 +0100
committerFulup Ar Foll <fulup@iot.bzh>2017-11-01 19:22:36 +0100
commitfb2566c629de780c8ddc88058c864ea08436d1de (patch)
tree7cba08126f8fd0a11102bbd506eaf70a67022b1f /hook-plugin/README.md
parentbc799a90ab7cc23dbe7286eb38d64af545de417c (diff)
Move to support Audio-4a High Level API
Diffstat (limited to 'hook-plugin/README.md')
-rw-r--r--hook-plugin/README.md121
1 files changed, 0 insertions, 121 deletions
diff --git a/hook-plugin/README.md b/hook-plugin/README.md
deleted file mode 100644
index 3846e0b..0000000
--- a/hook-plugin/README.md
+++ /dev/null
@@ -1,121 +0,0 @@
-Alsa-Hook-Plugin
-
-Object: Provide a Hook on Alsa PCM to check permission again AGL Advance Audio Agent
-Status: Release Candidate
-Author: Fulup Ar Foll fulup@iot.bzh
-Date : August-2017
-
-Functionalities:
- - Execute a set of unix/ws RPC request again AGL binders to allow/deny access
- - Keep websocket open in an idependant thread in order to monitor event received from AGL audio agent
-
-Installation
- - Alsaplugins are typically search in /usr/share/alsa-lib. Nevertheless a full path might be given
- - This plugin implement a hook on a slave PCM. Typically this slave PCM is a dedicated virtual channel (eg: navigation, emergency,...)
- - Config should be place in ~/.asoundrc (see config sample in PROJECT_ROOT/conf.d/alsa)
-
-Test
- - Install a full .asoundrc from conf.d/project/alsa.d
- - speaker-test -DMyNavigationHook -c2 -twav
-
-Config
-```
-#
-# Author: Fulup Ar Foll
-# Object: PCM hook type
-#
-# Test : Note: Jabra_USB=hw:v1340
-# Check SoundCard ==> speaker-test -Dhw:v1340 -c2 -twav
-# Check MixerPCM ==> speaker-test -DSpeakers -c2 -twav
-# Check SoftVol ==> speaker-test -DMusicPCM -c2 -twav
-# Check Plugin ==> speaker-test -DMultimedia -c2 -twav
-# MultiMedia aplay -DDMyNavPCM /usr/share/sounds/alsa/test.wav
-#
-# Bug/Feature: when softvol control is initialised from plugin and not
-# from AGL binding. At 1st run ctl has invalid TLV and cannot be
-# use. Bypass Solution:
-# * start audio-binder before playing sound (binding create control before softvol plugin)
-# * run a dummy aplay -DMyNavPCM "" to get a clean control
-#
-# References: https://www.spinics.net/lists/alsa-devel/msg54235.html
-# --------------------------------------------------------------------
-
-# ------------------------------------------------------
-# Mixer PCM allow to play multiple stream simultaneously
-# ------------------------------------------------------
-pcm.Speakers {
- type dmix
- slave {pcm "hw:v1340"} #Jabra Solmate 1
- ipc_key 1001 # ipc_key should be unique to each dmix
-}
-
-# -----------------------------------------------------
-# Register ControllerHookPlugin (ToiBeFix fullpath)
-# -----------------------------------------------------
-pcm_hook_type.CtlHookPlugin {
- install "AlsaInstallHook"
- lib "/home/fulup/Workspace/Audio-4a/alsa-4a/build/hook-plugin/policy_hook_tcp.so"
- #lib "/home/fulup/Workspace/Audio-4a/alsa-4a/build/hook-plugin/policy_hook_unix.so"
-}
-
-
-# -------------------------------------------------------
-# Define one Audio Virtual Channel per Audio Roles
-# -------------------------------------------------------
-pcm.MusicPCM {
- type softvol
-
- # Point Slave on HOOK for policies control
- slave.pcm "Speakers"
-
- # name should match with HAL definition
- control.name "Playback Multimedia"
-}
-
-# ----------------------------------------------------
-# Define one hooked PCM channel per Audio Roles
-# ----------------------------------------------------
-pcm.Multimedia {
- type hooks
- slave {pcm "MusicPCM"}
- hooks.0 {
- comment "Defined used hook sharelib and provide arguments/config to install func"
- type "CtlHookPlugin"
- hook_args {
-
- # print few log messages (default false)
- verbose true
-
- # uri to audio-4a policy engine
- uri="ws://localhost:1234/api?token='audio-agent-token'"
- #ws-client="unix:/var/tmp/pol4a"
-
- # api subcall to request a role
- controls {
- # Request authorisation to write on navigation
- navigation-ctl {
- request "multimedia-role"
- release "release-role"
- args "{'uid':'alsa-hook-navigation'}"
- }
- }
- events { # map event reception to self generated signal
- pause 30
- resume 31
- stop 3
- }
- }
- }
-}
-
-
-```
-
-NOTE:
-
-* Hook plugin is loaded by Alsa libasound within client context. It inherits client process attributes, as UID/GID and
-SMACK label when running on AGL. The smack label is control by AGL security framework.
-As a result a control request succeeds only when client application permission match requested audio role inside Cynara security database.
-
-* Hook plugin keep a connection with the Audio-Agent until PCM is closed by the application. This connection allow the
-Audio-Agent to send events. eg: pause, quit, mute, ... \ No newline at end of file