diff options
Diffstat (limited to 'ATTIC/meta-audio-4a-framework/recipes-multimedia')
22 files changed, 608 insertions, 0 deletions
diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb new file mode 100644 index 00000000..b94eff21 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-alsa-core/4a-alsa-core_git.bb @@ -0,0 +1,25 @@ +SUMMARY = "4A - Low Level Alsa Binding" +DESCRIPTION = "Low Level Alsa Binding for 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-alsa-core/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-alsa-core;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "9b71be04ea600189e390bb111624ad5c2d248a4c" + +DEPENDS += "libafb-helpers" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit afb-system-cmake + +# FIXME: Remove once CMake+ninja issues are resolved +OECMAKE_GENERATOR = "Unix Makefiles" + +FILES_${PN}-dev += "${INSTALL_PREFIX}/4a-alsa-core/htdocs" + +FILES_${PN} += "${INSTALL_PREFIX}/4a-alsa-core" +FILES_${PN} += "${INSTALL_PREFIX}/lib" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb new file mode 100644 index 00000000..fc648a1d --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/4a-hal-config.bb @@ -0,0 +1,24 @@ +SUMMARY = "4A - HAL Configuration" +DESCRIPTION = "Configuration files for HALs used in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-reference/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://asound.conf.template \ + " + +PV = "0.1" + +RPROVIDES_${PN} += "VIRTUAL-RUNTIME_alsa-state" + +inherit afb-system + +do_install () { + install -d ${D}/${sysconfdir} + install -m 0755 ${WORKDIR}/asound.conf.template ${D}/${sysconfdir}/asound.conf + sed -i "s|@INSTALL_PREFIX@|${INSTALL_PREFIX}|g" ${D}/${sysconfdir}/asound.conf +} + +FILES_${PN} += "${sysconfdir}/asound.conf" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template new file mode 100644 index 00000000..5a265db0 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-config/files/asound.conf.template @@ -0,0 +1,3 @@ +# +#4A pcm configuration is now dynamic, please check hal configuration files in @INSTALL_PREFIX@/4a-hal/etc +# diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README new file mode 100644 index 00000000..689f9bf8 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.README @@ -0,0 +1,3 @@ +This is a sample on how the update-alternative system can be used to select +the highest priority hal given. +Downside ... always only one file is possible in the etc folder. No HAL_LIST. diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample new file mode 100644 index 00000000..3bafc3bb --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config-alternatives.bbexample @@ -0,0 +1,57 @@ +SUMMARY = "4A - Generic HAL device configuration" +DESCRIPTION = "Generic HAL device configuration in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-configs/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-configs;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "45f205076573a858348c10a52d31382f31deaf55" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +# The package is machine-specific due to variable config content +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit afb-system update-alternative +# This defines INSTALL_PREFIX = "/usr/libexec/agl/" + +# no configure needed +do_configure[noexec] = "1" +# no compile needed +do_compile[noexec] = "1" + + +# when no specific HAL is defined, use a generic usb one +4A_DEFAULT_HAL ??= "2ch-generic-usb" + +# for specific machines, activate only known HAL +4A_DEFAULT_HAL_m3ulcb ?= "rcar-m3" +# Downside: only one file at a time! +4A_DEFAULT_HAL_h3ulcb ?= "rcar-m3" +4A_DEFAULT_HAL_intel-corei7-64 ?= "intel-minnow" +4A_DEFAULT_HAL_qemux86-64 ?= "intel-qemu" + +# Due to bug SPEC-1610, default hal for RPI3 is not active yet +# 4A_DEFAULT_HAL_raspberrypi3 ?= "raspberry-pi-3" + +do_install () { + # get pkgdir for 4a-hal + PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal + + install -d -m 0755 ${PKGDIR}/etc.available + cp -ar ${S}/*/*.json ${PKGDIR}/etc.available/ + chown -R root:root ${PKGDIR}/ +} + +# we define a '4a-default-hal' alternative with a low default priority +# you can deploy your own hal with a higher prio +ALTERNATIVE_${PN} = "4a-default-hal" +ALTERNATIVE_PRIORITY = "10" +ALTERNATIVE_LINK_NAME[4a-default-hal] = "${INSTALL_PREFIX}/4a-hal/etc/4a-default-hal.json" +ALTERNATIVE_TARGET[4a-default-hal] = "${INSTALL_PREFIX}/4a-hal/etc.available/hal-4a-${4A_DEFAULT_HAL}.json" + + +RPROVIDES_${PN} += "virtual/4a-default-hal"
\ No newline at end of file diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README new file mode 100644 index 00000000..602486a4 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.README @@ -0,0 +1,4 @@ +To keep it simple. + +Just expose 4A_HAL_LIST as-is to conf/local.conf so the user can actually choose any json file. + diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb new file mode 100644 index 00000000..e504c3da --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-device-config.bb @@ -0,0 +1,58 @@ +SUMMARY = "4A - Generic HAL device configuration" +DESCRIPTION = "Generic HAL device configuration in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-configs/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-configs;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "fdf0e3c4c67ceb5ddc77c9c1f27d85c1be2055a6" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +# The package is machine-specific due to variable config content +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit afb-system +# This defines INSTALL_PREFIX = "/usr/libexec/agl/" + +# no configure needed +do_configure[noexec] = "1" + +# no compile needed +do_compile[noexec] = "1" + +# when no specific HAL is defined, use a generic usb one +4A_HAL_LIST ??= "2ch-generic-usb" + +# for specific machines, activate only known HALs +4A_HAL_LIST_m3ulcb ?= "rcar-m3 rcar-m3kf" +4A_HAL_LIST_h3ulcb ?= "rcar-m3 rcar-m3kf" +4A_HAL_LIST_intel-corei7-64 ?= "intel-minnow intel-upsquared-hdmi" +4A_HAL_LIST_qemux86-64 ?= "intel-qemu" + +# Due to bug SPEC-1610, default hal for RPI3 is not active yet +# 4A_HAL_LIST_raspberrypi3 ?= "raspberry-pi-3" + +do_install () { + + # get pkgdir for 4a-hal + PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal + + install -d -m 0755 ${PKGDIR} + install -d -m 0755 ${PKGDIR}/etc + install -d -m 0755 ${PKGDIR}/etc.available + + cp -ar ${S}/*/*.json ${PKGDIR}/etc.available/ + chown -R root:root ${PKGDIR}/etc.available + + for x in ${4A_HAL_LIST}; do + hal=hal-4a-$x.json + cp -v $PKGDIR/etc.available/${hal} $PKGDIR/etc/ + done +} + + +RPROVIDES_${PN} += "virtual/4a-default-hal" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README new file mode 100644 index 00000000..29531ccd --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.README @@ -0,0 +1,3 @@ +This is a sample how a vendor can: +- inject his own hal (as file hal-4a-myhal.json) +- set PREFERRED_RPROVIDER_virtual/4a-default-hal = "4a-hal-vendor-config" on conf/local.conf diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample new file mode 100644 index 00000000..105ab1fa --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/4a-hal-vendor-config.bbexample @@ -0,0 +1,46 @@ +SUMMARY = "4A - Vendor HAL device configuration" +DESCRIPTION = "Vendor HAL device configuration in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://example.com/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "file://hal-4a-myhal.json" + +PV = "0.1" +S = "${WORKDIR}/" + +# The package is machine-specific due to variable config content +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit afb-system +# This defines INSTALL_PREFIX = "/usr/libexec/agl/" + +# no configure needed +do_configure[noexec] = "1" + +# no compile needed +do_compile[noexec] = "1" + +# use our local hal +4A_HAL_LIST = "myhal" + +do_install () { + + # get pkgdir for 4a-hal + PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal + + install -d -m 0755 ${PKGDIR}/etc.available + + cp -ar ${S}/*.json ${PKGDIR}/etc.available/ + chown -R root:root ${PKGDIR}/etc.available + + for x in ${4A_HAL_LIST}; do + hal=hal-4a-$x.json + cp -v $PKGDIR/etc.available/${hal} $PKGDIR/etc/ + done +} + + +RPROVIDES_${PN} += "virtual/4a-default-hal"
\ No newline at end of file diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh new file mode 100755 index 00000000..f031d58b --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/deploy-hal-udev.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +rm /usr/libexec/agl/4a-hal/etc/* +cp /usr/libexec/agl/4a-hal/etc.available/$i /usr/libexec/agl/4a-hal/etc/ diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules new file mode 100644 index 00000000..d2d16a17 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-device-config/files/udev-sample-rule.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="usb", SOMEOTHERMATCH="bar", RUN+="/usr/bin/deploy-hal-udev.sh hal-4a-greenbox.json" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb new file mode 100644 index 00000000..8b20b83d --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-generic/4a-hal-generic_git.bb @@ -0,0 +1,30 @@ +SUMMARY = "4A - Generic HAL" +DESCRIPTION = "Generic HAL in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-generic/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-generic;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "0c4921b83a13bcb96bf03fb0e7a0733c3e202474" + +DEPENDS += "lua bluez-alsa liburcu libafb-helpers libappcontroller" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit afb-system-cmake + +# FIXME: Remove once CMake+ninja issues are resolved +OECMAKE_GENERATOR = "Unix Makefiles" + +do_install_append () { + # get pkgdir - note that '4a-hal' comes from project ${project_git_repo}/conf.d/cmake/config.cmake + PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal + + # transition: provided by separate package + rm -rf $PKGDIR/etc +} + +RDEPENDS_${PN} += "virtual/4a-default-hal bluez-alsa" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb new file mode 100644 index 00000000..058d20bb --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-hal-unicens/4a-hal-unicens_git.bb @@ -0,0 +1,32 @@ +SUMMARY = "4A - Unicens (MOST) Binding" +DESCRIPTION = "Unicens binding (MOST audio network support) for 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-hal-unicens/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e385f6075dcdf3ad6ff0056fca58a129" + +DEPENDS += "lua libafb-helpers libappcontroller" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-hal-unicens;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "9228c9da5b85f0fdd6b01f0309e57b846618be63" + + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit afb-system-cmake + +# FIXME: Remove once CMake+ninja issues are resolved +OECMAKE_GENERATOR = "Unix Makefiles" + +do_install_append () { + # installation folder for this plugin is '4a-hal' + # get pkgdir - note that '4a-hal' comes from project ${project_git_repo}/conf.d/cmake/config.cmake + PKGDIR=${D}/${INSTALL_PREFIX}/4a-hal + + # transition: provided by separate package + rm -rf $PKGDIR/etc +} + + diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb new file mode 100644 index 00000000..908809b6 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-softmixer/4a-softmixer_git.bb @@ -0,0 +1,25 @@ +SUMMARY = "4A - Softmixer" +DESCRIPTION = "4A Softmixer (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/4a-softmixer/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/4a-softmixer.git;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "1a75612274f883aed09d198575582abdc0c9fe0f" + +DEPENDS += "lua liburcu libafb-helpers libappcontroller libavirt" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit afb-system-cmake + +# FIXME: Remove once CMake+ninja issues are resolved +OECMAKE_GENERATOR = "Unix Makefiles" + +#FIXME : +#FILES_${PN}-dev += "${INSTALL_PREFIX}/4a-softmixer/htdocs" +#FILES_${PN} += "${INSTALL_PREFIX}/afb-aaaa" +#FILES_${PN} += "${INSTALL_PREFIX}/lib" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb new file mode 100644 index 00000000..ae1117ad --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/4a-tools/4a-tools_git.bb @@ -0,0 +1,22 @@ +SUMMARY = "4A - Tools" +DESCRIPTION = "Tools, utilities, scripts and data related to 4A" +HOMEPAGE = "https://github.com/iotbzh/4a-tools/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "gitsm://github.com/iotbzh/4a-tools;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "flounder_5.99.2" +#SRCREV = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + + +do_install() { + oe_runmake install DESTDIR=${D}${prefix} +} + +RDEPENDS_${PN} += "bash python3-websockets" +FILES_${PN} += "${datadir}/4a/media/*" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb new file mode 100644 index 00000000..014fe119 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb @@ -0,0 +1,58 @@ +SUMMARY = "4A - High Level Audio API Service" +DESCRIPTION = "High Level Audio API service used in 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-audio-4a/" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-audio-4a;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit cmake aglwgt pkgconfig + +DEPENDS += "alsa-lib json-c systemd af-binder glib-2.0 lua libappcontroller" + +do_aglwgt_deploy_append() { + cat <<'EOF' >${D}/${sysconfdir}/agl-postinsts/99_4A_service_patch.sh +N=600 +svcfile="/usr/local/lib/systemd/*/afm-service-agl-service-audio-4a*.service" +set -x +echo "-- TMP 4A INSTALL FIX from meta-agl/meta-app-framework/recipes-multimedia/agl-service-audio-4a/agl-service-audio-4a_git.bb - MUST BE REMOVED !!!" +while ! ls $svcfile > /dev/null; do + if [ $N = 0 ]; then echo "-- TMP 4A INSTALL NOT FIXED"; exit 0; fi + echo . + sleep 0.2 + N=$(expr $N - 1) +done +sed -i '/\[Unit\]/ a Before=pulseaudio.service' $svcfile; +sed -i '/\[Unit\]/ a ConditionPathExistsGlob=/dev/snd/control*' $svcfile; +sed -i '/ExecStartPre=/ a Environment=LIBASOUND_THREAD_SAFE=0' $svcfile; + +sed -i -e 's|/usr/bin/afb-daemon\>|& --ldpath=/usr/libexec/agl/4a-alsa-core/lib:/usr/libexec/agl/4a-hal/lib:/usr/libexec/agl/smixer/lib|' $svcfile + +# binder name matters: it must match "afbd-4a-*" => the config file (controller json file) that will be searched will be "policy-4a-*.json" +sed -i -e 's|--name afbd-agl-\(.*\)|--name afbd-4a-\1|' $svcfile + +# workaround for SPEC-1762 +sed -i -e 's|/usr/bin/afb-daemon\>|/usr/bin/4a_wait_bt.sh &|' $svcfile + +echo "-- TMP 4A INSTALL FIX END" + +EOF + chmod a+x ${D}/${sysconfdir}/agl-postinsts/99_4A_service_patch.sh +} + +############################################## +# workaround for SPEC-1762/SPEC-1763 +RDEPENDS_${PN} += "bash" +SRC_URI += "file://4a_wait_bt.sh" +do_install_append() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/4a_wait_bt.sh ${D}${bindir}/ +} +# +############################################## diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh b/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh new file mode 100755 index 00000000..9dec4350 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/agl-service-audio-4a/files/4a_wait_bt.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +############################################################### +# This is a workaround for SPEC-1762/SPEC-1763 +# +# THIS SCRIPT MUST BE REMOVED ONCE THE ABOVE ISSUES ARE SOLVED +# +# Source recipe is: +# +# meta-audio-4a-framework/ +# recipes-multimedia/ +# agl-service-audio-4a/ +# agl-service-audio-4a_git.bb +# +# Signed-off-by: Stephane Desneux <stephane.desneux@iot.bzh> +############################################################### + +# time from script startup +LIMIT=20 +ts0=0 +function ts() { echo $(( $(date +%s) - ts0 )); } +ts0=$(ts) +function havetime() { [[ $(ts) -le ${1:-$LIMIT} ]] || return 1; } + +function waitloop() { + # ensure bt modules are loaded (delay: 5s) + while havetime 4; do + [[ -d /sys/module/bluetooth ]] && { + echo "bluetooth kernel module detected" + break + } + echo "waiting for bluetooth kernel module to be up" + sleep 0.2 + done + havetime 4 || { echo "TIMEOUT REACHED"; return 1; } + + # check that we have at least one controller + HCIDEV= + while havetime 8; do + echo "detecting hci devices..." + for x in $(ls /sys/class/bluetooth/hci* 2>/dev/null); do + [[ -z "$HCIDEV" ]] && HCIDEV=$(basename $x) + done + [[ -n "$HCIDEV" ]] && { + echo "found HCI controller: $HCIDEV" + break + } + sleep 0.2 + done + havetime 8 || { echo "TIMEOUT REACHED"; return 1; } + + # wait for controller to be up and running + while havetime 15; do + state=$(hciconfig $HCIDEV | grep -A 2 ^hci0 | tail -1) + [[ $state =~ UP ]] && [[ $state =~ RUNNING ]] && { + echo "HCI controller $HCIDEV state: $state" + break + } + echo "HCI controller $HCIDEV state: $state ... waiting for UP RUNNING" + sleep 0.2 + done + havetime 15 || { echo "TIMEOUT REACHED"; return 1; } + echo "HCI device up and running after $(ts) seconds" + + # wait for bluetooth-service to return something + while havetime; do + res=$(afb-client-demo -d unix:/run/user/$UID/apis/ws/Bluetooth-Manager adapter_state true) + [[ "$res" =~ \"response\":(.*)}$ ]] && res=${BASH_REMATCH[1]} + [[ "$res" =~ \"powered\":true ]] && { + echo "Bluetooth-Manager/power: $res" + break + } + echo "Bluetooth-Manager/power: not ready yet ($res)" + sleep 0.2 + done + echo "Bluetooth-Manager ready after $(ts) seconds" + + echo "4A now starting..." +} + +waitloop 2>&1 | sed 's/^/4AWAITBT /' >&2 +exec "$@" + diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend b/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend new file mode 100644 index 00000000..5109a314 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/alsa/alsa-plugins_%.bbappend @@ -0,0 +1,7 @@ +# Remove PulseAudio plugin configuration files + +do_install_append() { + rm -f ${D}${datadir}/alsa/alsa.conf.d/*pulseaudio* +} + +FILES_${PN}-pulseaudio-conf = "${datadir}/alsa/alsa.conf.d" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb new file mode 100644 index 00000000..6d224e4e --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/libavirt/libavirt_git.bb @@ -0,0 +1,19 @@ +SUMMARY = "AVIRT user-space library" +DESCRIPTION = "ALSA Virtual Dynamic Sound Driver (AVIRT) user-space library for dynamic sound stream creation." +HOMEPAGE = "https://git.automotivelinux.org/src/libavirt/" +SECTION = "libs/multimedia" + +LICENSE = "GPL-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libavirt;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "379ea3c132f53eb6f5cf26d1c8a5ca335eb32a2e" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +DEPENDS = "alsa-lib" + +inherit cmake + +ALLOW_EMPTY_${PN} = "1" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a new file mode 100644 index 00000000..0efdacc2 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/files/default.pa.4a @@ -0,0 +1,77 @@ +#!/usr/bin/pulseaudio -nF +# +# This file is part of PulseAudio. +# +# PulseAudio is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# PulseAudio is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. + +# This startup script is used only if PulseAudio is started per-user +# (i.e. not in system mode) + +.fail + +### Automatically augment property information from .desktop files +### stored in /usr/share/application +load-module module-augment-properties + +### Load several protocols +.ifexists module-esound-protocol-unix.so +load-module module-esound-protocol-unix +.endif +load-module module-native-protocol-unix + +### Network access (may be configured with paprefs, so leave this commented +### here if you plan to use paprefs) +#load-module module-esound-protocol-tcp +#load-module module-native-protocol-tcp + +### Load the RTP receiver module (also configured via paprefs, see above) +#load-module module-rtp-recv + +### Load the RTP sender module (also configured via paprefs, see above) +#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" +#load-module module-rtp-send source=rtp.monitor + +.ifexists module-4a-client.so +load-module module-null-sink sink_name=aaaa_null_sink sink_properties="device.description='4A Null Output'" +set-default-sink aaaa_null_sink +load-module module-4a-client +.else +load-module module-udev-detect +.endif + +### Automatically move streams to the default sink if the sink they are +### connected to dies, similar for sources +load-module module-rescue-streams + +### Make sure we always have a sink around, even if it is a null sink. +load-module module-always-sink + +### Automatically suspend sinks/sources that become idle for too long +load-module module-suspend-on-idle + +### If autoexit on idle is enabled we want to make sure we only quit +### when no local session needs us anymore. +.ifexists module-console-kit.so +load-module module-console-kit +.endif +.ifexists module-systemd-login.so +load-module module-systemd-login +.endif + +### Modules to allow autoloading of filters (such as echo cancellation) +### on demand. module-filter-heuristics tries to determine what filters +### make sense, and module-filter-apply does the heavy-lifting of +### loading modules and rerouting streams. +load-module module-filter-heuristics +load-module module-filter-apply diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb new file mode 100644 index 00000000..b5e9e011 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio-module-4a-client_git.bb @@ -0,0 +1,20 @@ +SUMMARY = "pulseaudio 4A client module" +DESCRIPTION = "pulseaudio module to work with 4A (AGL Advanced Audio Agent)" +HOMEPAGE = "https://git.automotivelinux.org/src/pulseaudio-module-4a" +SECTION = "plugins" + +LICENSE = "LGPL-2.1+" +LIC_FILES_CHKSUM = "file://LICENSE;md5=4fbd65380cdd255951079008b364516c" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/pulseaudio-module-4a.git;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "9cd72ed153f6615ed826b048e1c344bf4640bd2b" + +PV = "0.1+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit cmake pkgconfig + +DEPENDS += "af-binder systemd json-c pulseaudio" +RDEPENDS_${PN} = "pulseaudio-module-alsa-sink" + +FILES_${PN} += "${libdir}/pulse-*/modules/module-4a-client.so" diff --git a/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend new file mode 100644 index 00000000..d8a84990 --- /dev/null +++ b/ATTIC/meta-audio-4a-framework/recipes-multimedia/pulseaudio/pulseaudio_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI += "file://default.pa.4a" + +do_install_append () { + cp ${WORKDIR}/default.pa.4a ${D}${sysconfdir}/pulse/default.pa +} |