summaryrefslogtreecommitdiffstats
path: root/meta-audio-soundmanager-framework
diff options
context:
space:
mode:
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>2018-01-11 14:41:23 +0000
committerGerrit Code Review <gerrit@automotivelinux.org>2018-01-11 14:41:23 +0000
commit49d0f9b5d0e64ec5d3629cb7fff2ce594ef2c50e (patch)
tree221c98fd23c19fae7eb99ec039c1667790302cdc /meta-audio-soundmanager-framework
parentb386b239c83d2f2759b15ec407c6f71857fa8eb5 (diff)
parent9f8e628ff905820a8f81b47dfa6b8f15163f5e0b (diff)
Merge "Enable audio management with Sound Manager automatically"
Diffstat (limited to 'meta-audio-soundmanager-framework')
-rw-r--r--meta-audio-soundmanager-framework/COPYING.MIT17
-rw-r--r--meta-audio-soundmanager-framework/README.md18
-rw-r--r--meta-audio-soundmanager-framework/conf/layer.conf10
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_git.bb19
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf20
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf21
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml516
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd63
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf18
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb40
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_git.bb15
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa3
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb12
-rw-r--r--meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb18
14 files changed, 790 insertions, 0 deletions
diff --git a/meta-audio-soundmanager-framework/COPYING.MIT b/meta-audio-soundmanager-framework/COPYING.MIT
new file mode 100644
index 00000000..89de3547
--- /dev/null
+++ b/meta-audio-soundmanager-framework/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/meta-audio-soundmanager-framework/README.md b/meta-audio-soundmanager-framework/README.md
new file mode 100644
index 00000000..751a3c2d
--- /dev/null
+++ b/meta-audio-soundmanager-framework/README.md
@@ -0,0 +1,18 @@
+This README file contains information on the contents of the
+soundmanager layer.
+
+Please see the corresponding sections below for details.
+
+How to enable the framework
+=================
+In order to enable the soundmanager audio framework features,
+please add the feature of "agl-audio-soundmanager-framework"
+in the source command which enables bitbake.
+
+$ source meta-agl/scripts/aglsetup.sh -m <machine> agl-demo agl-audio-soundmanager-framework
+
+
+Reference
+=================
+http://docs.automotivelinux.org/docs/apis_services/en/dev/reference/hmi-framework/3_3-SoundManager-Guide.html
+
diff --git a/meta-audio-soundmanager-framework/conf/layer.conf b/meta-audio-soundmanager-framework/conf/layer.conf
new file mode 100644
index 00000000..4452bc99
--- /dev/null
+++ b/meta-audio-soundmanager-framework/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "audio-soundmanager-framework"
+BBFILE_PATTERN_audio-soundmanager-framework = "^${LAYERDIR}/"
+BBFILE_PRIORITY_audio-soundmanager-framework = "6"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_git.bb b/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_git.bb
new file mode 100644
index 00000000..b561cf4e
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/agl-service-audio-soundmanager/agl-service-audio-soundmanager_git.bb
@@ -0,0 +1,19 @@
+SUMMARY = "Sound Manager binding"
+DESCRIPTION = "Sound Manager is the service binding to communicate \
+ with Genivi Audio Manager. Genivi Audio Manager is \
+ the policy manager for sound. It controls volume \
+ and routing according to various situations. \
+ "
+HOMEPAGE = "https://wiki.automotivelinux.org/soundmanager"
+SECTION = "multimedia"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+DEPENDS = "dbus glib-2.0 af-binder json-c"
+RDEPENDS_${PN} = "audiomanager audiomanager-plugins"
+
+inherit cmake aglwgt
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-soundmanager-2017;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "b1be03d9670f166af53f1d06275e2428e8c99779"
+S = "${WORKDIR}/git"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf
new file mode 100644
index 00000000..49544d5e
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amcp_dbus.conf
@@ -0,0 +1,20 @@
+<!-- This configuration file specifies the required security policies
+to use the audiomanager command d-bus plugin interface. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+ <policy user="root">
+ <allow own="org.genivi.audiomanager"/>
+ <allow own="org.genivi.audiomanager.command"/>
+ <allow send_destination="org.genivi.audiomanager"/>
+ <allow send_destination="org.genivi.audiomanager.command"/>
+ </policy>
+ <policy at_console="true">
+ <allow send_destination="org.genivi.audiomanager"/>
+ </policy>
+ <policy context="default">
+ <allow send_destination="org.genivi.audiomanager"/>
+ </policy>
+</busconfig>
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf
new file mode 100644
index 00000000..6832d305
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/amrp_dbus.conf
@@ -0,0 +1,21 @@
+<!-- This configuration file specifies the required security policies
+to use the audiomanager routing d-bus plugin interface. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+ <policy user="root">
+ <allow own="org.genivi.audiomanager"/>
+ <allow own="org.genivi.audiomanager.routing"/>
+ <allow send_destination="org.genivi.audiomanager"/>
+ <allow send_destination="org.genivi.audiomanager.routing"/>
+ </policy>
+ <policy at_console="true">
+ <allow send_destination="org.genivi.audiomanager"/>
+ </policy>
+ <policy context="default">
+ <allow send_destination="org.genivi.audiomanager"/>
+ </policy>
+</busconfig>
+
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml
new file mode 100644
index 00000000..3dc69c12
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/configuration.xml
@@ -0,0 +1,516 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<c:configuration xmlns:c="controller" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="controller audiomanagertypes.xsd ">
+ <listSources>
+ <source>
+ <id>0</id>
+ <domainName>UNKNOWN</domainName>
+ <name>SourceTemplate</name>
+ <volume>0</volume>
+ <visible>TRUE</visible>
+ <className>UNKNOWN</className>
+ <sourceState>SS_OFF</sourceState>
+ <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
+ <connectionFormat>CF_GENIVI_MONO</connectionFormat>
+ <interruptState>IS_OFF</interruptState>
+ <availability>
+ <availability>A_AVAILABLE</availability>
+ <availabilityReason>AR_UNKNOWN</availabilityReason>
+ </availability>
+ <soundProperty>
+ <type>SP_GENIVI_TREBLE</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <soundProperty>
+ <type>SP_GENIVI_MID</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <soundProperty>
+ <type>SP_GENIVI_BASS</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_TREBLE</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_MID</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_BASS</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <registrationType>REG_TEMPLATE</registrationType>
+ <isVolumeSupported>TRUE</isVolumeSupported>
+ <priority>1</priority>
+ <listMainSoundPropertiesToSoundProperties>
+ <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
+ <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
+ </listMainSoundPropertiesToSoundProperties>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>0</id>
+ <domainName>SoundManager</domainName>
+ <name>mediaplayer</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>2</id>
+ <domainName>SoundManager</domainName>
+ <name>ALSA#Playback</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>3</id>
+ <domainName>SoundManager</domainName>
+ <name>music</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>4</id>
+ <domainName>SoundManager</domainName>
+ <name>Navi</name>
+ <className>INT</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>5</id>
+ <domainName>SoundManager</domainName>
+ <name>phone</name>
+ <className>PHONE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>0</id>
+ <domainName>SoundManager</domainName>
+ <name>radio</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ </listSources>
+ <listSinks>
+ <sink>
+ <id>0</id>
+ <domainName>UNKNOWN</domainName>
+ <name>SinkTemplate</name>
+ <volume>0</volume>
+ <visible>TRUE</visible>
+ <mainVolume>100</mainVolume>
+ <className>BASE</className>
+ <muteState>MS_UNMUTED</muteState>
+ <connectionFormat>CF_GENIVI_STEREO</connectionFormat>
+ <connectionFormat>CF_GENIVI_MONO</connectionFormat>
+ <availability>
+ <availability>A_AVAILABLE</availability>
+ <availabilityReason>AR_GENIVI_NEWMEDIA</availabilityReason>
+ </availability>
+ <soundProperty>
+ <type>SP_GENIVI_TREBLE</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <soundProperty>
+ <type>SP_GENIVI_MID</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <soundProperty>
+ <type>SP_GENIVI_BASS</type>
+ <value minValue="0" maxValue="10">5</value>
+ </soundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_TREBLE</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_MID</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <mainSoundProperty>
+ <type>MSP_GENIVI_BASS</type>
+ <value minValue="0" maxValue="10">5</value>
+ </mainSoundProperty>
+ <registrationType>REG_TEMPLATE</registrationType>
+ <isVolumeSupported>TRUE</isVolumeSupported>
+ <priority>1</priority>
+ <listMainVolumesToNormalizedVolumes>
+ <tableEntry>0,0.0</tableEntry>
+ <tableEntry>1,0.01</tableEntry>
+ <tableEntry>2,0.02</tableEntry>
+ <tableEntry>3,0.03</tableEntry>
+ <tableEntry>4,0.04</tableEntry>
+ <tableEntry>5,0.05</tableEntry>
+ <tableEntry>6,0.06</tableEntry>
+ <tableEntry>7,0.07</tableEntry>
+ <tableEntry>8,0.08</tableEntry>
+ <tableEntry>9,0.09</tableEntry>
+ <tableEntry>10,0.1</tableEntry>
+ <tableEntry>11,0.11</tableEntry>
+ <tableEntry>12,0.12</tableEntry>
+ <tableEntry>14,0.14</tableEntry>
+ <tableEntry>15,0.15</tableEntry>
+ <tableEntry>17,0.17</tableEntry>
+ <tableEntry>20,0.2</tableEntry>
+ <tableEntry>22,0.22</tableEntry>
+ <tableEntry>25,0.25</tableEntry>
+ <tableEntry>28,0.28</tableEntry>
+ <tableEntry>31,0.31</tableEntry>
+ <tableEntry>35,0.35</tableEntry>
+ <tableEntry>40,0.4</tableEntry>
+ <tableEntry>45,0.45</tableEntry>
+ <tableEntry>50,0.5</tableEntry>
+ <tableEntry>56,0.56</tableEntry>
+ <tableEntry>62,0.62</tableEntry>
+ <tableEntry>70,0.7</tableEntry>
+ <tableEntry>80,0.8</tableEntry>
+ <tableEntry>90,0.9</tableEntry>
+ <tableEntry>100,1.0</tableEntry>
+ </listMainVolumesToNormalizedVolumes>
+ <listNormalizedVolumesToDecibelVolumes>
+ <tableEntry>0.0,-192.0</tableEntry>
+ <tableEntry>0.01,-40.0</tableEntry>
+ <tableEntry>0.02,-34.0</tableEntry>
+ <tableEntry>0.03,-30.0</tableEntry>
+ <tableEntry>0.04,-27.0</tableEntry>
+ <tableEntry>0.05,-26.0</tableEntry>
+ <tableEntry>0.06,-24.0</tableEntry>
+ <tableEntry>0.07,-23.0</tableEntry>
+ <tableEntry>0.08,-22.0</tableEntry>
+ <tableEntry>0.09,-21.0</tableEntry>
+ <tableEntry>0.1,-20.0</tableEntry>
+ <tableEntry>0.11,-19.0</tableEntry>
+ <tableEntry>0.12,-18.0</tableEntry>
+ <tableEntry>0.14,-17.0</tableEntry>
+ <tableEntry>0.15,-16.0</tableEntry>
+ <tableEntry>0.17,-15.0</tableEntry>
+ <tableEntry>0.2,-14.0</tableEntry>
+ <tableEntry>0.22,-13.0</tableEntry>
+ <tableEntry>0.25,-12.0</tableEntry>
+ <tableEntry>0.28,-11.0</tableEntry>
+ <tableEntry>0.31,-10.0</tableEntry>
+ <tableEntry>0.35,-9.0</tableEntry>
+ <tableEntry>0.4,-8.0</tableEntry>
+ <tableEntry>0.45,-7.0</tableEntry>
+ <tableEntry>0.5,-6.0</tableEntry>
+ <tableEntry>0.56,-5.0</tableEntry>
+ <tableEntry>0.62,-4.0</tableEntry>
+ <tableEntry>0.7,-3.0</tableEntry>
+ <tableEntry>0.8,-2.0</tableEntry>
+ <tableEntry>0.9,-1.0</tableEntry>
+ <tableEntry>1.0,0.0</tableEntry>
+ </listNormalizedVolumesToDecibelVolumes>
+ <listMainSoundPropertiesToSoundProperties>
+ <mapEntry>MSP_UNKNOWN,SP_UNKNOWN</mapEntry>
+ <mapEntry>MSP_GENIVI_TREBLE,SP_GENIVI_TREBLE</mapEntry>
+ </listMainSoundPropertiesToSoundProperties>
+ </sink>
+ <sink baseName="SinkTemplate">
+ <id>1</id>
+ <domainName>SoundManager</domainName>
+ <name>rsnd-dai.0-ak4642-hifi#Analog#Stereo</name>
+ <className>BASE</className>
+ <registrationType>REG_CONTROLLER</registrationType>
+ </sink>
+ <sink baseName="SinkTemplate">
+ <id>2</id>
+ <domainName>SoundManager</domainName>
+ <name>Microchip#MOST:0#Multichannel</name>
+ <className>BASE</className>
+ <registrationType>REG_CONTROLLER</registrationType>
+ </sink>
+ </listSinks>
+ <listGateways>
+ <!-- This is a single domain example, therefore no gateway is present -->
+ </listGateways>
+ <listDomains>
+ <domain>
+ <id>0</id>
+ <name>SoundManager</name>
+ <busName>org.genivi.audiomanager</busName>
+ <nodeName>SoundManager</nodeName>
+ <early>FALSE</early>
+ <complete>TRUE</complete>
+ <state>DS_CONTROLLED</state>
+ <registrationType>REG_ROUTER</registrationType>
+ </domain>
+ </listDomains>
+ <listClasses>
+ <class>
+ <name>BASE</name>
+ <type>C_PLAYBACK</type>
+ <priority>1</priority>
+ <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=mediaplayer^music^ALSA#Playback^radio</topology>
+ </class>
+ <class>
+ <name>INT</name>
+ <type>C_PLAYBACK</type>
+ <priority>2</priority>
+ <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=Navi</topology>
+ </class>
+ <class>
+ <name>PHONE</name>
+ <type>C_PLAYBACK</type>
+ <priority>3</priority>
+ <topology>Microchip#MOST:0#Multichannel^rsnd-dai.0-ak4642-hifi#Analog#Stereo=phone</topology>
+ </class>
+ </listClasses>
+ <listPolicies>
+ <!--Connect Policy Start-->
+ <!--BASE Policy-->
+ <policy>
+ <trigger>USER_CONNECTION_REQUEST</trigger>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_DISCONNECT</type>
+ <param>
+ <className>"BASE"</className>
+ <connectionState>CS_CONNECTED</connectionState>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!--INT policy-->
+ <policy>
+ <trigger>USER_CONNECTION_REQUEST</trigger>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <action>
+ <type>ACTION_LIMIT</type>
+ <param>
+ <className>"BASE"</className>
+ <volume>-1000</volume>
+ <pattern>01</pattern>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
+ <condition>priority(CONNECTIONOFCLASS, REQUESTING, OTHERS) LT priority(CONNECTION, REQUESTING)</condition>
+ <action>
+ <type>ACTION_PUSH</type>
+ <param>
+ <className>"INT"</className>
+ <order>O_NEWEST</order>
+ </param>
+ </action>
+ <break>TRUE</break>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_PUSH</type>
+ <param>
+ <className>"INT"</className>
+ <order>O_OLDEST</order>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, "PHONE") INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_MUTE</type>
+ <param>
+ <className>REQUESTING</className>
+ </param>
+ </action>
+ <action>
+ <type>ACTION_CONNECT</type>
+ <param>
+ <className>REQUESTING</className>
+ </param>
+ </action>
+ <break>TRUE</break>
+ </process>
+ </policy>
+ <!--PHONE policy-->
+ <policy>
+ <trigger>USER_CONNECTION_REQUEST</trigger>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
+ <action>
+ <type>ACTION_LIMIT</type>
+ <param>
+ <className>"BASE"</className>
+ <volume>-1000</volume>
+ <pattern>02</pattern>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_MUTE</type>
+ <param>
+ <className>"INT"</className>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(SINK, REQUESTING) EQ "AMP"</condition>
+ <action>
+ <type>ACTION_CONNECT</type>
+ <param>
+ <className>REQUESTING</className>
+ <timeOut>5000</timeOut>
+ </param>
+ </action>
+ <break>TRUE</break>
+ </process>
+ </policy>
+ <!--Connect policy end-->
+ <!--Disconnect policy start-->
+ <policy>
+ <trigger>USER_DISCONNECTION_REQUEST</trigger>
+ <process>
+ <action>
+ <type>ACTION_DISCONNECT</type>
+ <param>
+ <sourceName>REQUESTING</sourceName>
+ <sinkName>REQUESTING</sinkName>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <action>
+ <type>ACTION_UNLIMIT</type>
+ <param>
+ <className>"BASE"</className>
+ <pattern>01</pattern>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "INT"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, REQUESTING, OTHERS) INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_POP</type>
+ <param>
+ <className>"INT"</className>
+ <order>O_OLDEST</order>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, "INT") INC CS_CONNECTED</condition>
+ <action>
+ <type>ACTION_UNMUTE</type>
+ <param>
+ <className>"INT"</className>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "PHONE"</condition>
+ <action>
+ <type>ACTION_UNLIMIT</type>
+ <param>
+ <className>"BASE"</className>
+ <pattern>02</pattern>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>name(CLASS, REQUESTING) EQ "BASE"</condition>
+ <condition>connectionState(CONNECTIONOFCLASS, "BASE") INC CS_SUSPENDED</condition>
+ <action>
+ <type>ACTION_RESUME</type>
+ <param>
+ <className>"BASE"</className>
+ <connectionState>CS_SUSPENDED</connectionState>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default volume policy start -->
+ <policy>
+ <trigger>USER_SET_VOLUME</trigger>
+ <process>
+ <action>
+ <type>ACTION_SET_VOLUME</type>
+ <param>
+ <sinkName>REQUESTING</sinkName>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default volume policy end -->
+ <!-- default mute policy start -->
+ <policy>
+ <trigger>USER_SET_SINK_MUTE_STATE</trigger>
+ <process>
+ <condition>muteState(USER,REQUESTING) EQ MS_MUTED</condition>
+ <action>
+ <type>ACTION_MUTE</type>
+ <param>
+ <sinkName>REQUESTING</sinkName>
+ </param>
+ </action>
+ </process>
+ <process>
+ <condition>muteState(USER,REQUESTING) EQ MS_UNMUTED</condition>
+ <action>
+ <type>ACTION_UNMUTE</type>
+ <param>
+ <sinkName>REQUESTING</sinkName>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default mute policy end -->
+ <!-- default set sink sound property policy start -->
+ <policy>
+ <trigger>USER_SET_SINK_MAIN_SOUND_PROPERTY</trigger>
+ <process>
+ <action>
+ <type>ACTION_SET_PROPERTY</type>
+ <param>
+ <sinkName>REQUESTING</sinkName>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default set sink sound property policy end -->
+ <!-- default set source sound property policy start -->
+ <policy>
+ <trigger>USER_SET_SOURCE_MAIN_SOUND_PROPERTY</trigger>
+ <process>
+ <action>
+ <type>ACTION_SET_PROPERTY</type>
+ <param>
+ <sourceName>REQUESTING</sourceName>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default set source sound property policy end -->
+ <!-- default connect policy start -->
+ <policy>
+ <trigger>USER_CONNECTION_REQUEST</trigger>
+ <process>
+ <action>
+ <type>ACTION_CONNECT</type>
+ <param>
+ <className>REQUESTING</className>
+ <timeOut>5000</timeOut>
+ </param>
+ </action>
+ </process>
+ </policy>
+ <!-- default connect policy end -->
+ </listPolicies>
+ <listSystemProperties>
+ <systemProperty>
+ <type>SYP_DEBUG_LOG</type>
+ <value>5</value>
+ </systemProperty>
+ </listSystemProperties>
+</c:configuration>
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd
new file mode 100644
index 00000000..2604fb71
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/customtypes.xsd
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<xsd:schema targetNamespace="controller" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c="controller">
+ <xsd:simpleType name="am_CustomAvailabilityReason_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration list the source/sink availability change reason. </xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomSoundPropertyType_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration list the source and sink sound property. The sound properties of Genivi Audio manager can be extended to include project specific properties. Three sound properties like volume persistence, connection persistence and volume support are extended.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomConnectionFormat_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration lists the connection format for the source and sinks.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomNotificationType_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration contains the type of notification possible.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomSystemPropertyType_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration lists the system properties.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="SYP_DEBUG_LOG">
+ <xsd:annotation>
+ <xsd:documentation>1 </xsd:documentation>
+ </xsd:annotation>
+ </xsd:enumeration>
+
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomRampType_t">
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_CustomMainSoundPropertyType_t">
+ <xsd:annotation>
+ <xsd:documentation>This enumeration lists the Main Properties for source and sinks.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_SourceID_e">
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="am_SinkID_e">
+ <xsd:restriction base="xsd:string">
+ </xsd:restriction>
+ </xsd:simpleType>
+</xsd:schema>
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf
new file mode 100644
index 00000000..cacb60e9
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager/soundmanager-dbus.conf
@@ -0,0 +1,18 @@
+<!-- This configuration file specifies the required security policies
+to use the audiomanager command d-bus plugin interface. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <!-- ../system.conf have denied everything, so we just punch some holes -->
+ <policy user="root">
+ <allow own="org.genivi.audiomanager.routing.soundmanager"/>
+ <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
+ </policy>
+ <policy at_console="true">
+ <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
+ </policy>
+ <policy context="default">
+ <allow send_destination="org.genivi.audiomanager.routing.soundmanager"/>
+ </policy>
+</busconfig>
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb
new file mode 100644
index 00000000..6c3bf26e
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config-soundmanager/audiomanager-plugins-config-soundmanager_7.4.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Configurations for Audiomanager Plugins with Sound Manager"
+HOMEPAGE = ""
+LICENSE = "MPLv2"
+SECTION = "multimedia"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MPL-2.0;md5=815ca599c9df247a0c7f619bab123dad"
+RDEPENDS_${PN} = "libxml2 zlib dbus-lib"
+
+SRC_URI = " \
+ file://amcp_dbus.conf \
+ file://amrp_dbus.conf \
+ file://configuration.xml \
+ file://customtypes.xsd \
+ file://soundmanager-dbus.conf \
+"
+
+FILES_${PN} = " \
+ ${sysconfdir}/dbus-1/system.d/amcp_dbus.conf \
+ ${sysconfdir}/dbus-1/system.d/amrp_dbus.conf \
+ ${sysconfdir}/dbus-1/system.d/soundmanager-dbus.conf \
+ ${sysconfdir}/audiomanager/control/configuration.xml \
+ ${sysconfdir}/audiomanager/control/customtypes.xsd \
+"
+
+FILES_${PN}-dbg += " \
+ /usr/lib/audiomanager/command/.debug \
+ /usr/lib/audiomanager/routing/.debug \
+"
+
+do_install() {
+ install -d ${D}${sysconfdir}/dbus-1/system.d
+ install -m 644 ${WORKDIR}/amcp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
+ install -m 644 ${WORKDIR}/amrp_dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
+ install -m 644 ${WORKDIR}/soundmanager-dbus.conf ${D}${sysconfdir}/dbus-1/system.d/
+ install -d ${D}${sysconfdir}/audiomanager/control
+ install -m 644 ${WORKDIR}/configuration.xml ${D}${sysconfdir}/audiomanager/control/
+ install -m 644 ${WORKDIR}/customtypes.xsd ${D}${sysconfdir}/audiomanager/control/
+}
+
+PROVIDES_${PN} += "virtual/audiomanager-plugins-config"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_git.bb b/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_git.bb
new file mode 100644
index 00000000..4e9c84ad
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/libsoundmanager/libsoundmanager_git.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Sound Manager client library for applications"
+DESCRIPTION = "Sound Manager client library for applications built with recipe"
+HOMEPAGE = "https://wiki.automotivelinux.org/soundmanager"
+SECTION = "multimedia"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+DEPENDS = "af-binder json-c"
+RDEPENDS_${PN} = "agl-service-audio-soundmanager"
+
+inherit cmake
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/staging/libsoundmanager.git;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "e920aae9f71c0823ab5754b2de8483e157368580"
+S = "${WORKDIR}/git"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa
new file mode 100644
index 00000000..cb53f339
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/files/soundmanager.pa
@@ -0,0 +1,3 @@
+.ifexists module-router.so
+unload-module module-router
+.endif
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb
new file mode 100644
index 00000000..52a3e8e6
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-soundmanager/pulseaudio-config-soundmanager_1.0.bb
@@ -0,0 +1,12 @@
+SUMMARY = "PulseAudio configuration which doesn't load module-router"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://soundmanager.pa"
+
+do_install () {
+ install -d ${D}${sysconfdir}/pulse/default.d
+ install -m 0644 ${WORKDIR}/soundmanager.pa ${D}${sysconfdir}/pulse/default.d/
+}
+
+PROVIDES_${PN} += "virtual/pulseaudio-config"
diff --git a/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb b/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb
new file mode 100644
index 00000000..093c6fc7
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-packagegroup/packagegroups/packagegroup-agl-audio-soundmanager.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Sound Manager package groups"
+DESCRIPTION = "AGL sound manager package group based on Genivi Audio Manager"
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-audio-soundmanager \
+ "
+
+RDEPENDS_${PN} += "\
+ agl-service-audio-soundmanager \
+ pulseaudio-config-soundmanager \
+ audiomanager-plugins-config-soundmanager \
+ libsoundmanager \
+"
+
+PROVIDES_${PN} += "virtual/audio-framework"