diff options
Diffstat (limited to 'hook-plugin/README.md')
-rw-r--r-- | hook-plugin/README.md | 121 |
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 |