aboutsummaryrefslogtreecommitdiffstats
path: root/meta-audio-soundmanager-framework/recipes-multimedia
diff options
context:
space:
mode:
authorJan-Simon Möller <jsmoeller@linuxfoundation.org>2019-06-09 23:11:58 +0200
committerbuild.automotivelinux.org <jenkins@automotivelinux.org>2019-06-11 15:42:20 +0200
commit910541b2b933f4a437ea83ec3ec19242a41a3630 (patch)
tree4522d3b2b1ecf771b712f8478118ed84e8e49974 /meta-audio-soundmanager-framework/recipes-multimedia
parent5e28b182790ce38cb769949a5f2f9c649b6978c6 (diff)
Supporting commits for the switch to pipewire
We move all components around meta-audio-soundmanager-framework to that layer (still kept on request). We deprecate the meta-audio-4a-framework layer for Happy Halibut. Bug-AGL: SPEC-2473 Change-Id: I2a7c9d815801a3f8ea80943165ea6fd1422533ea Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
Diffstat (limited to 'meta-audio-soundmanager-framework/recipes-multimedia')
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf20
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf21
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml522
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd63
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf35
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb40
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb60
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch25
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service17
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb56
-rwxr-xr-xmeta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb31
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa3
-rw-r--r--meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb13
13 files changed, 906 insertions, 0 deletions
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amcp_dbus.conf
new file mode 100644
index 00000000..49544d5e
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/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/audiomanager-plugins-config/amrp_dbus.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/amrp_dbus.conf
new file mode 100644
index 00000000..6832d305
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/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/audiomanager-plugins-config/configuration.xml b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml
new file mode 100644
index 00000000..9e2d05ee
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/configuration.xml
@@ -0,0 +1,522 @@
+<?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>1</id>
+ <domainName>PulseAudio</domainName>
+ <name>mediaplayer</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>2</id>
+ <domainName>PulseAudio</domainName>
+ <name>ALSA#Playback</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>3</id>
+ <domainName>PulseAudio</domainName>
+ <name>music</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>4</id>
+ <domainName>PulseAudio</domainName>
+ <name>Navi</name>
+ <className>INT</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </source>
+ <source baseName="SourceTemplate">
+ <id>5</id>
+ <domainName>PulseAudio</domainName>
+ <name>phone</name>
+ <className>PHONE</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>PulseAudio</domainName>
+ <name>rsnd-dai.0-ak4642-hifi#Analog#Stereo</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </sink>
+ <sink baseName="SinkTemplate">
+ <id>2</id>
+ <domainName>PulseAudio</domainName>
+ <name>Microchip#MOST:0#Multichannel</name>
+ <className>BASE</className>
+ <registrationType>REG_ROUTER</registrationType>
+ </sink>
+ </listSinks>
+ <listGateways>
+ <!-- This is a single domain example, therefore no gateway is present -->
+ </listGateways>
+ <listDomains>
+ <domain>
+ <id>0</id>
+ <name>PulseAudio</name>
+ <busName>org.genivi.audiomanager</busName>
+ <nodeName>pulseaudio</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</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_SUSPEND</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_MUTE</type>
+ <param>
+ <className>REQUESTING</className>
+ <timeOut>5000</timeOut>
+ </param>
+ </action>
+ <action>
+ <type>ACTION_CONNECT</type>
+ <param>
+ <className>REQUESTING</className>
+ <timeOut>5000</timeOut>
+ </param>
+ </action>
+ <action>
+ <type>ACTION_UNMUTE</type>
+ <param>
+ <className>REQUESTING</className>
+ </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/audiomanager-plugins-config/customtypes.xsd b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/customtypes.xsd
new file mode 100644
index 00000000..2604fb71
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/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/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf
new file mode 100644
index 00000000..f77845a3
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config/org.genivi.audiomanager.routing.pulseaudio.conf
@@ -0,0 +1,35 @@
+<!-- This configuration file specifies the required security policies
+ for routing adapter for KP audio server to work. -->
+
+<!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.pulseaudio"/>
+ <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
+ </policy>
+
+ <policy user="adit">
+ <allow own="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
+ </policy>
+
+ <policy at_console="true">
+ <allow own="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow send_destination="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow send_interface="org.genivi.audiomanager.routing.pulseaudio"/>
+ <allow receive_sender="org.genivi.audiomanager.routing.pulseaudio"/>
+ </policy>
+
+ <policy context="default">
+ <allow send_destination="org.genivi.audiomanager"/>
+ </policy>
+
+</busconfig>
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb
new file mode 100644
index 00000000..59d68f9a
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins-config/audiomanager-plugins-config_7.4.bb
@@ -0,0 +1,40 @@
+DESCRIPTION = "Configurations for Audiomanager Plugins for AGL Demo"
+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://org.genivi.audiomanager.routing.pulseaudio.conf \
+"
+
+FILES_${PN} = " \
+ ${sysconfdir}/dbus-1/system.d/amcp_dbus.conf \
+ ${sysconfdir}/dbus-1/system.d/amrp_dbus.conf \
+ ${sysconfdir}/dbus-1/system.d/org.genivi.audiomanager.routing.pulseaudio.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}/org.genivi.audiomanager.routing.pulseaudio.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/
+}
+
+RPROVIDES_${PN} = "virtual/audiomanager-plugins-config"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb
new file mode 100644
index 00000000..9b099ebc
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager-plugins/audiomanager-plugins_git.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "GENIVI Audio Manager Plugins"
+HOMEPAGE = "http://projects.genivi.org/audio-manager/home"
+LICENSE = "MPLv2"
+SECTION = "multimedia"
+DEPENDS = "audiomanager libxml2 dbus pulseaudio"
+
+LIC_FILES_CHKSUM = "file://PluginControlInterfaceGeneric/LICENSE.txt;md5=815ca599c9df247a0c7f619bab123dad"
+
+SRC_URI = " \
+ git://github.com/tisogai/AudioManagerPlugins.git;protocol=https;branch=unknown_element_support \
+ "
+
+SRCREV = "bf5c5e8198b85e84363770150d5a02f553f43296"
+
+S = "${WORKDIR}/git"
+inherit cmake
+OECMAKE_CXX_FLAGS += "-std=c++11"
+EXTRA_OECMAKE = " \
+ -DWITH_COMMAND_INTERFACE_CAPI=OFF \
+ -DWITH_COMMAND_INTERFACE_DBUS=ON \
+ -DWITH_ROUTING_INTERFACE_ASYNC=OFF \
+ -DWITH_ROUTING_INTERFACE_CAPI=OFF \
+ -DWITH_ROUTING_INTERFACE_DBUS=ON \
+ -DWITH_TEST_CONTROLLER=OFF \
+ -DWITH_GENERIC_CONTROLLER=ON \
+ -DCONTROLLER_CONFIG_DIR="/etc/audiomanager/control" \
+"
+
+# NOTE: The specific product should have a separate customtypes.xsd
+# and should be appended to FILES_${PN} in product specific
+# audiomanager-generic-controller_git.bbappend
+FILES_${PN} = " \
+ ${libdir}/audiomanager/control/libPluginControlInterfaceGeneric.so \
+ ${sysconfdir}/audiomanager/control/audiomanagertypes.xsd \
+ ${libdir}/audiomanager/command/libPluginCommandInterfaceDbus.so \
+ ${libdir}/audiomanager/routing/libPluginRoutingInterfaceDbus.so \
+ /usr/share/audiomanager/audiomanager/CommandInterface.xml \
+ /usr/share/audiomanager/audiomanager/RoutingReceiver.xml \
+"
+
+# NOTE: The specific product should have a separate customtypes.h
+# and should be appended to FILES_${PN}-dev in product specific
+# audiomanager-generic-controller_git.bbappend
+FILES_${PN}-dev = " \
+ ${sysconfdir}/audiomanager/control/xsd2header.pl \
+"
+
+FILES_${PN}-dbg += " \
+ ${libdir}/audiomanager/control/.debug/libPluginControlInterfaceGeneric.so \
+ ${libdir}/audiomanager/command/.debug/libPluginCommandInterfaceDbus.so \
+ ${libdir}/audiomanager/routing/.debug/libPluginRoutingInterfaceDbus.so \
+"
+
+# remove example configurations
+do_install_append() {
+ rm -rf ${D}${sysconfdir}/audiomanager/control/*.xml
+ rm -rf ${D}${sysconfdir}/audiomanager/control/customtypes.xsd
+}
+
+RDEPENDS_${PN} = "virtual/audiomanager-plugins-config"
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch
new file mode 100644
index 00000000..fcdf9c54
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/0001-Fix-duplicated-command-line-arg-t.patch
@@ -0,0 +1,25 @@
+From c4b6030f575e38dfc9cca7dfd029d207f3af6a13 Mon Sep 17 00:00:00 2001
+From: "Andre Moreira Magalhaes (andrunko)" <andre.magalhaes@collabora.co.uk>
+Date: Thu, 5 May 2016 00:01:19 -0300
+Subject: [PATCH] Fix duplicated command line arg -t.
+
+---
+ AudioManagerDaemon/src/main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp
+index 795795d..67c0977 100755
+--- a/AudioManagerDaemon/src/main.cpp
++++ b/AudioManagerDaemon/src/main.cpp
+@@ -87,7 +87,7 @@ TCLAP::ValueArg<std::string> commandPluginDir("l","CommandPluginDir","path for l
+ TCLAP::ValueArg<std::string> databasePath ("p","databasePath","path for sqlite database (default is in memory)",false,":memory:","string");
+ TCLAP::ValueArg<unsigned int> telnetPort ("t","telnetport","The port that is used for telnet",false,DEFAULT_TELNETPORT,"int");
+ TCLAP::ValueArg<unsigned int> maxConnections ("m","maxConnections","Maximal number of connections for telnet",false,MAX_TELNETCONNECTIONS,"int");
+-TCLAP::SwitchArg dbusWrapperTypeBool ("t","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false);
++TCLAP::SwitchArg dbusWrapperTypeBool ("T","dbusType","DbusType to be used by CAmDbusWrapper: if option is selected, DBUS_SYSTEM is used otherwise DBUS_SESSION",false);
+ TCLAP::SwitchArg enableNoDLTDebug ("V","logDlt","print DLT logs to stdout",false);
+ TCLAP::SwitchArg currentSettings("i","currentSettings","print current settings and exit",false);
+ TCLAP::SwitchArg daemonizeAM("d","daemonize","daemonize Audiomanager. Better use systemd...",false);
+--
+2.5.0
+
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service
new file mode 100644
index 00000000..2210a377
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager/audiomanager.service
@@ -0,0 +1,17 @@
+# AudioManager systemd service file
+
+[Unit]
+Description=GENIVI AudioManager
+Requires=dbus.service
+After=dbus.service
+Before=pulseaudio.service
+
+[Service]
+Type=notify
+ExecStart=/usr/bin/AudioManager -T
+Restart=always
+TimeoutSec=2
+WatchdogSec=2
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb
new file mode 100644
index 00000000..15eb3625
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/audiomanager/audiomanager_7.4.bb
@@ -0,0 +1,56 @@
+DESCRIPTION = "GENIVI Audio Manager"
+HOMEPAGE = "http://projects.genivi.org/audio-manager/home"
+LICENSE = "MPLv2"
+SECTION = "multimedia"
+DEPENDS = "dbus dlt-daemon systemd"
+LIC_FILES_CHKSUM = "file://LICENCE;md5=f164349b56ed530a6642e9b9f244eec5"
+
+SRC_URI = " \
+ git://github.com/GENIVI/AudioManager.git;protocol=https;branch=master \
+ file://audiomanager.service \
+"
+RDEPENDS_${PN} = "audiomanager-plugins module-router"
+SRCREV = "daf851ee7a41d1b0572c0c95e15f61e427ce97f1"
+
+S = "${WORKDIR}/git"
+inherit cmake systemd
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "audiomanager.service"
+SYSTEMD_AUTO_ENABLE = "enable"
+
+EXTRA_OECMAKE = " \
+ -DWITH_TESTS=OFF \
+ -DWITH_DOCUMENTATION=OFF \
+ -DWITH_DLT=ON \
+ -DWITH_TELNET=OFF \
+ -DWITH_SYSTEMD_WATCHDOG=ON \
+ -DGLIB_DBUS_TYPES_TOLERANT=ON \
+ -DWITH_CAPI_WRAPPER=OFF \
+ -DWITH_DBUS_WRAPPER=ON \
+ -DWITH_SHARED_UTILITIES=ON \
+ -DWITH_SHARED_CORE=ON \
+"
+
+FILES_${PN} = " \
+ ${bindir}/AudioManager \
+ ${libdir}/libAudioManagerCore.so.7 \
+ ${libdir}/libAudioManagerCore.so.7.4 \
+ ${libdir}/libAudioManagerCore.so.7.4.12 \
+ ${libdir}/libAudioManagerUtilities.so.7 \
+ ${libdir}/libAudioManagerUtilities.so.7.4 \
+ ${libdir}/libAudioManagerUtilities.so.7.4.12 \
+ ${systemd_unitdir}/audiomanager.service \
+"
+
+FILES_${PN}-dev = " \
+ ${includedir}/audiomanager/* \
+ ${libdir}/cmake/* \
+ ${libdir}/pkgconfig/* \
+ ${libdir}/libAudioManagerCore.so \
+ ${libdir}/libAudioManagerUtilities.so \
+"
+
+do_install_append() {
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/audiomanager.service ${D}${systemd_unitdir}/system/
+}
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb b/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb
new file mode 100755
index 00000000..cd52b68a
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/module-router/module-router_git.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Pulseaudio router module"
+HOMEPAGE = "https://github.com/tisogai/module-router"
+LICENSE = "LGPLv2"
+SECTION = "multimedia"
+DEPENDS = "pulseaudio"
+
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fc178bcd425090939a8b634d1d6a9594"
+
+SRC_URI = " \
+ git://github.com/tisogai/module-router.git;protocol=https;branch=master \
+ "
+
+SRCREV = "8104a3174e6f54ace53066ab1797d9b9bd2bdf63"
+
+S = "${WORKDIR}/git"
+inherit cmake
+OECMAKE_CXX_FLAGS += "-std=c++11"
+
+# NOTE: The specific product should have a separate customtypes.xsd
+# and should be appended to FILES_${PN} in product specific
+# audiomanager-generic-controller_git.bbappend
+FILES_${PN} = " \
+ ${libdir}/pulse-*/modules/module-router.so \
+"
+
+
+FILES_${PN}-dbg += " \
+ ${libdir}/pulse-*/modules/.debug/module-router.so \
+"
+
+
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa
new file mode 100644
index 00000000..4060feb4
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/files/20-module-router.pa
@@ -0,0 +1,3 @@
+.ifexists module-router.so
+load-module module-router
+.endif
diff --git a/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb
new file mode 100644
index 00000000..d7c2f68b
--- /dev/null
+++ b/meta-audio-soundmanager-framework/recipes-multimedia/pulseaudio-config-module-router/pulseaudio-config-module-router_1.0.bb
@@ -0,0 +1,13 @@
+SUMMARY = "PulseAudio configuration to enable router module"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://20-module-router.pa"
+
+do_install () {
+ install -d ${D}${sysconfdir}/pulse/default.d
+ install -m 0644 ${WORKDIR}/20-module-router.pa ${D}${sysconfdir}/pulse/default.d/
+}
+
+RDEPENDS_${PN} = "module-router"
+RPROVIDES_${PN} = "virtual/pulseaudio-config"