From fd4cfbdcdb20c74a3da40a97ee6360cd18b58025 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 20 Mar 2024 12:14:04 -0400 Subject: [PATCH 01/12] python3-grpcio: rename bbappend Rename python3-grpcio bbappend for newer version in scarthgap. Bug-AGL: SPEC-4578 Change-Id: I4023d82282da0948ab0254bc73fda570a6f5bfa1 Signed-off-by: Scott Murray --- .../{python3-grpcio_1.45.0.bbappend => python3-grpcio_1.62.1.bbappend} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes-devtools/python/{python3-grpcio_1.45.0.bbappend => python3-grpcio_1.62.1.bbappend} (100%) diff --git a/recipes-devtools/python/python3-grpcio_1.45.0.bbappend b/recipes-devtools/python/python3-grpcio_1.62.1.bbappend similarity index 100% rename from recipes-devtools/python/python3-grpcio_1.45.0.bbappend rename to recipes-devtools/python/python3-grpcio_1.62.1.bbappend -- 2.16.6 From 741cc3f764037b6bc4a8660e1d0d575350f35c78 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 6 May 2024 14:14:07 -0400 Subject: [PATCH 02/12] cluster-receiver: update SRCREV Update SRCREV to pick up: 7dd7d94 Add gstreamer 1.22 compatibility Bug-AGL: SPEC-5121 Change-Id: Ib04fc92c919f43b873d8069dcd358ed28334c4e2 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29889 Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller ci-image-build: Jenkins Job builder account --- recipes-demo/cluster-receiver/cluster-receiver_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-demo/cluster-receiver/cluster-receiver_git.bb b/recipes-demo/cluster-receiver/cluster-receiver_git.bb index f28abcb6f..70e660c57 100644 --- a/recipes-demo/cluster-receiver/cluster-receiver_git.bb +++ b/recipes-demo/cluster-receiver/cluster-receiver_git.bb @@ -17,7 +17,7 @@ PV = "1.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-receiver;protocol=https;branch=${AGL_BRANCH} \ file://cluster-receiver.service \ " -SRCREV = "8633f9754fc0b644e45862fc3ed6f95554ce58cf" +SRCREV = "7dd7d94968d1ac2edae62c4b1797407ea8640e3c" S = "${WORKDIR}/git" -- 2.16.6 From 65ab6234433e1f1dc149c828b11f9b0ce0ac35c1 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 6 May 2024 14:15:13 -0400 Subject: [PATCH 03/12] qt-cluster-receiver: update SRCREV Update SRCREV to pick up: b3ea52f Add gstreamer 1.22 compatibility 2dd9c29 Add gitlab issue/merge request templates Bug-AGL: SPEC-5121 Change-Id: I927144a75f924a7a280c4bc2a65675eb32a3a625 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29890 Tested-by: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller ci-image-build: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account --- recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb index d50e9dd12..e146a00d4 100644 --- a/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb +++ b/recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb @@ -19,7 +19,7 @@ PV = "1.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-qt-cluster-demo-receiver;protocol=https;branch=${AGL_BRANCH} \ file://qt-cluster-receiver.service \ " -SRCREV = "b5622ce91307589b03ad5d903214b47ff2277e48" +SRCREV = "b3ea52f3c9b4ff11447151f086f3c314cada148a" S = "${WORKDIR}/git" -- 2.16.6 From bcc5b2bce4992377120de56cf9886abc10d66f6c Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 8 May 2024 15:04:52 -0400 Subject: [PATCH 04/12] agl-demo: update meta-clang comment Update comment in feature template documenting why meta-clang is required. Bug-AGL: SPEC-5123. Change-Id: I4f4d589de07ee0d05f1720e1f1fca2445271d5c2 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29894 Tested-by: Jenkins Job builder account ci-image-build: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account --- templates/feature/agl-demo/50_bblayers.conf.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/feature/agl-demo/50_bblayers.conf.inc b/templates/feature/agl-demo/50_bblayers.conf.inc index 384a3b3f8..dee536e9e 100644 --- a/templates/feature/agl-demo/50_bblayers.conf.inc +++ b/templates/feature/agl-demo/50_bblayers.conf.inc @@ -10,5 +10,5 @@ AGL_META_NETWORKING = "${METADIR}/external/meta-openembedded/meta-networking" AGL_META_PYTHON = "${METADIR}/external/meta-openembedded/meta-python" AGL_META_QT5 = "${METADIR}/external/meta-qt5" -# Needed to satisfy uutils-coreutils DEPENDS when using SELinux +# Needed to build CEF and WAM AGL_META_CLANG = "${METADIR}/external/meta-clang" -- 2.16.6 From 24e22727b7f0c21eeeb62cd536e0c3b25775735b Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Fri, 26 Apr 2024 10:44:44 -0400 Subject: [PATCH 05/12] Rework demo image naming Rename the demo images to align with the following scheme: agl---(-) The intent is to make the naming more consistent in preparation for switching to preconfigured images as a replacement for the existing agl-demo-preload, agl-demo-cluster-support, agl-kvm-host-* aglsetup.sh features. Additionally, the prototype LXC demo image support has been removed as it is unused and would need updating for these and upcoming changes. Bug-AGL: SPEC-5138 Change-Id: I8d907713b09eb47c3cb0ebd5326ab063b2684ea2 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29864 ci-image-boot-test: Jenkins Job builder account Tested-by: Jenkins Job builder account ci-image-build: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller --- conf/conf-notes.txt | 16 ++++++----- .../lxc-config-agl-demo-platform/basic.in | 9 ------- .../lxc-config-agl-demo-platform/environment.in | 8 ------ .../lxc-config-agl-demo-platform/misc.in | 3 --- .../lxc-config-agl-demo-platform/mount.in | 17 ------------ .../lxc-config-agl-demo-platform/network.in | 3 --- .../system.conf.agl-demo-platform.in | 9 ------- .../lxc-config/lxc-config-agl-demo-platform_1.0.bb | 7 ----- .../images/agl-lxc-demo-platform.bb | 31 ---------------------- meta-agl-demo.md | 4 +-- ...-flutter.conf => agl-cluster-demo-flutter.conf} | 0 ...demo-platform.conf => agl-cluster-demo-qt.conf} | 0 ...emo-platform.conf => agl-ivi-demo-flutter.conf} | 0 ...-platform-flutter.conf => agl-ivi-demo-qt.conf} | 0 ....bb => qemu-config-agl-cluster-demo-flutter.bb} | 2 +- ...tform.bb => qemu-config-agl-cluster-demo-qt.bb} | 2 +- ...tter.bb => qemu-config-agl-ivi-demo-flutter.bb} | 2 +- ...-platform.bb => qemu-config-agl-ivi-demo-qt.bb} | 2 +- recipes-config/qemu-config/qemu-config-vmnet0.bb | 3 --- .../wayland/weston-ini-conf_agldemo.inc | 4 +-- ...form-flutter.bb => agl-cluster-demo-flutter.bb} | 0 ...ter-demo-platform.bb => agl-cluster-demo-qt.bb} | 0 .../images/agl-demo-platform-crosssdk.bb | 1 - recipes-platform/images/agl-demo-platform-html5.bb | 1 - recipes-platform/images/agl-demo-platform.bb | 1 - recipes-platform/images/agl-ivi-demo-base.bb | 19 ------------- ...er-simple.bb => agl-ivi-demo-flutter-simple.bb} | 4 +-- ...platform-flutter.bb => agl-ivi-demo-flutter.bb} | 4 +-- ...emo-platform-html5.bb => agl-ivi-demo-html5.bb} | 4 +-- ...orm-crosssdk.bb => agl-ivi-demo-qt-crosssdk.bb} | 4 +-- ...agl-ivi-demo-platform.bb => agl-ivi-demo-qt.bb} | 4 +-- ...e-ivi-crosssdk.bb => agl-ivi-image-crosssdk.bb} | 2 +- ...mo-base-flutter.bb => agl-ivi-image-flutter.bb} | 4 +-- .../images/{agl-image-ivi.bb => agl-ivi-image.bb} | 27 ++++++++++++------- .../{agl-kvm-demo-platform.bb => agl-kvm-demo.bb} | 7 +++-- ...ics-demo-platform.bb => agl-telematics-demo.bb} | 3 +-- 36 files changed, 51 insertions(+), 156 deletions(-) delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb delete mode 100644 dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb rename recipes-config/qemu-config/files/{agl-cluster-demo-platform-flutter.conf => agl-cluster-demo-flutter.conf} (100%) rename recipes-config/qemu-config/files/{agl-cluster-demo-platform.conf => agl-cluster-demo-qt.conf} (100%) rename recipes-config/qemu-config/files/{agl-demo-platform.conf => agl-ivi-demo-flutter.conf} (100%) rename recipes-config/qemu-config/files/{agl-ivi-demo-platform-flutter.conf => agl-ivi-demo-qt.conf} (100%) rename recipes-config/qemu-config/{qemu-config-agl-cluster-demo-platform-flutter.bb => qemu-config-agl-cluster-demo-flutter.bb} (95%) rename recipes-config/qemu-config/{qemu-config-agl-cluster-demo-platform.bb => qemu-config-agl-cluster-demo-qt.bb} (95%) rename recipes-config/qemu-config/{qemu-config-agl-ivi-demo-platform-flutter.bb => qemu-config-agl-ivi-demo-flutter.bb} (95%) rename recipes-config/qemu-config/{qemu-config-agl-demo-platform.bb => qemu-config-agl-ivi-demo-qt.bb} (96%) rename recipes-platform/images/{agl-cluster-demo-platform-flutter.bb => agl-cluster-demo-flutter.bb} (100%) rename recipes-platform/images/{agl-cluster-demo-platform.bb => agl-cluster-demo-qt.bb} (100%) delete mode 120000 recipes-platform/images/agl-demo-platform-crosssdk.bb delete mode 120000 recipes-platform/images/agl-demo-platform-html5.bb delete mode 120000 recipes-platform/images/agl-demo-platform.bb delete mode 100644 recipes-platform/images/agl-ivi-demo-base.bb rename recipes-platform/images/{agl-ivi-demo-platform-flutter-simple.bb => agl-ivi-demo-flutter-simple.bb} (76%) rename recipes-platform/images/{agl-ivi-demo-platform-flutter.bb => agl-ivi-demo-flutter.bb} (80%) rename recipes-platform/images/{agl-ivi-demo-platform-html5.bb => agl-ivi-demo-html5.bb} (77%) rename recipes-platform/images/{agl-ivi-demo-platform-crosssdk.bb => agl-ivi-demo-qt-crosssdk.bb} (79%) rename recipes-platform/images/{agl-ivi-demo-platform.bb => agl-ivi-demo-qt.bb} (87%) rename recipes-platform/images/{agl-image-ivi-crosssdk.bb => agl-ivi-image-crosssdk.bb} (92%) rename recipes-platform/images/{agl-ivi-demo-base-flutter.bb => agl-ivi-image-flutter.bb} (69%) rename recipes-platform/images/{agl-image-ivi.bb => agl-ivi-image.bb} (63%) rename recipes-platform/images/{agl-kvm-demo-platform.bb => agl-kvm-demo.bb} (95%) rename recipes-platform/images/{agl-telematics-demo-platform.bb => agl-telematics-demo.bb} (78%) diff --git a/conf/conf-notes.txt b/conf/conf-notes.txt index e267e3db1..bf70e9e69 100644 --- a/conf/conf-notes.txt +++ b/conf/conf-notes.txt @@ -1,8 +1,10 @@ Common targets are: - agl-image-ivi - agl-image-ivi-crosssdk - agl-image-ivi-qa - agl-demo-platform - agl-demo-platform-crosssdk - agl-demo-platform-qa - agl-demo-platform-html5 + agl-ivi-image + agl-ivi-image-crosssdk + agl-ivi-demo-flutter + agl-ivi-demo-html5 + agl-ivi-demo-qt + agl-ivi-demo-qt-crosssdk + agl-cluster-demo-flutter + agl-cluster-demo-qt + agl-ivi-demo-control-panel diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in deleted file mode 100644 index 1fd9f3476..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in +++ /dev/null @@ -1,9 +0,0 @@ -# lxc basic setting -lxc.rootfs.path = dir:/var/lib/machines/ivi-demo -lxc.signal.halt = SIGRTMIN+3 -lxc.signal.reboot = SIGTERM -lxc.uts.name = "ivi" -lxc.tty.max = 1 -lxc.pty.max = 1 -lxc.cap.drop = sys_module mac_admin mac_override sys_time - diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in deleted file mode 100644 index 632252d58..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in +++ /dev/null @@ -1,8 +0,0 @@ -# lxc environment variable setting -lxc.environment = QT_QPA_PLATFORM=wayland -lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ -lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/ -lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/ -lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell -lxc.environment = PIPEWIRE_RUNTIME_DIR=/var - diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in deleted file mode 100644 index 9b4f4883e..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in +++ /dev/null @@ -1,3 +0,0 @@ -# lxc misc setting -lxc.start.auto = @LXC_AUTO_START@ - diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in deleted file mode 100644 index 262f09bdc..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in +++ /dev/null @@ -1,17 +0,0 @@ -# lxc mount setting -lxc.mount.entry = /var/lib/lxc/ivi-demo/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file - -lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed -lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0 -lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0 -lxc.mount.entry = tmpfs run tmpfs defaults -lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir - -lxc.cgroup.devices.allow = c 226:* rwm -lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir - -lxc.mount.entry = /run/drm-lease-manager/lease-ivi var/display/drm-lease-manager/lease none bind,create=file - -lxc.cgroup.devices.allow = c 13:* rwm -lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir -lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in deleted file mode 100644 index 573f4796d..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in +++ /dev/null @@ -1,3 +0,0 @@ -# lxc network setting -lxc.net.0.type = empty - diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in deleted file mode 100644 index de7c6cdd1..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in +++ /dev/null @@ -1,9 +0,0 @@ -[Manager] -DefaultEnvironment = DLM_RUNTIME_PATH=/var/display/drm-lease-manager -DefaultEnvironment = DRM_LEASE_DEVICE=@DRM_LEASE_DEVICE@ -DefaultEnvironment = QT_QPA_PLATFORM=wayland -DefaultEnvironment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ -DefaultEnvironment = QML_IMPORT_PATH=/usr/lib/qml/ -DefaultEnvironment = QML2_IMPORT_PATH=/usr/lib/qml/ -DefaultEnvironment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell -DefaultEnvironment = PIPEWIRE_RUNTIME_DIR=/var diff --git a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb b/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb deleted file mode 100644 index 049c8ab83..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb +++ /dev/null @@ -1,7 +0,0 @@ -DESCRIPTION = "AGL IVI demo container LXC config" -LICENSE = "BSD-3-Clause" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" - -inherit lxc-config - -LXC_AUTO_START ??= "0" diff --git a/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb b/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb deleted file mode 100644 index b8402294d..000000000 --- a/dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb +++ /dev/null @@ -1,31 +0,0 @@ -SUMMARY = "LXC host demo image" -LICENSE = "MIT" - -require recipes-platform/images/lxc-host-image-minimal.bb - -CONTAINER_IMAGES ?= "agl-container-cluster:guest-image-cluster-demo \ - agl-container-ivi:agl-demo-platform \ - " - -IMAGE_INSTALL += " \ - kernel-modules \ - alsa-utils \ - packagegroup-pipewire \ - pipewire-ic-ipc \ - wireplumber-config-agl \ -" - -# packages required for network bridge settings via lxc-net -IMAGE_INSTALL += " \ - lxc-networking \ - iptables-modules \ - dnsmasq \ - systemd-netif-config \ - kernel-module-xt-addrtype \ - kernel-module-xt-multiport \ -" - -# network manager to use -VIRTUAL-RUNTIME_net_manager = "systemd" - -IMAGE_INSTALL:append:rcar-gen3 = " kernel-module-gles " diff --git a/meta-agl-demo.md b/meta-agl-demo.md index 521ebad8e..69233c780 100755 --- a/meta-agl-demo.md +++ b/meta-agl-demo.md @@ -2,9 +2,7 @@ The `meta-agl-demo` layer is the reference user interface layer for the DEMO platform of Automotive Grade Linux (AGL). -The layer provides a reference platform and applications. -The BitBake target name for the DEMO platform is `agl-demo-platform`, which is -the full DEMO platform image. +The layer provides a demo applications and images. ## Layer Dependencies diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf similarity index 100% rename from recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf rename to recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf b/recipes-config/qemu-config/files/agl-cluster-demo-qt.conf similarity index 100% rename from recipes-config/qemu-config/files/agl-cluster-demo-platform.conf rename to recipes-config/qemu-config/files/agl-cluster-demo-qt.conf diff --git a/recipes-config/qemu-config/files/agl-demo-platform.conf b/recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf similarity index 100% rename from recipes-config/qemu-config/files/agl-demo-platform.conf rename to recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-ivi-demo-qt.conf similarity index 100% rename from recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf rename to recipes-config/qemu-config/files/agl-ivi-demo-qt.conf diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb rename to recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb index 159d3939e..f0bc93fd3 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb +++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-cluster-demo-platform-flutter" +QEMU_IMAGE = "agl-cluster-demo-flutter" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb rename to recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb index 8e2aeb3e5..e22e40271 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb +++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-cluster-demo-platform" +QEMU_IMAGE = "agl-cluster-demo-qt" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb rename to recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb index 10c30445e..a9f2be43a 100644 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb +++ b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-ivi-demo-platform-flutter" +QEMU_IMAGE = "agl-ivi-demo-flutter" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb similarity index 96% rename from recipes-config/qemu-config/qemu-config-agl-demo-platform.bb rename to recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb index da85b7a72..46e043c05 100644 --- a/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb +++ b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-demo-platform" +QEMU_IMAGE = "agl-ivi-demo-qt" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/recipes-config/qemu-config/qemu-config-vmnet0.bb b/recipes-config/qemu-config/qemu-config-vmnet0.bb index bc634bf32..a5a12982e 100644 --- a/recipes-config/qemu-config/qemu-config-vmnet0.bb +++ b/recipes-config/qemu-config/qemu-config-vmnet0.bb @@ -14,9 +14,6 @@ SRC_URI = "file://vmnet0.netdev \ do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-cluster-demo-platform" -QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" - do_install() { # Install systemd-networkd vmnet0 configuration install -d ${D}${systemd_unitdir}/network diff --git a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc index 6d6a0a8dd..5c7b9feeb 100644 --- a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc +++ b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -2,8 +2,8 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:" SRC_URI += "file://weston.ini.kvm.in" -GUEST_VM1_IMAGE ?= "agl-ivi-demo-platform-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-platform-flutter" +GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" +GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" do_compile:append() { # Start with a canned configuration for a KVM host, filling in diff --git a/recipes-platform/images/agl-cluster-demo-platform-flutter.bb b/recipes-platform/images/agl-cluster-demo-flutter.bb similarity index 100% rename from recipes-platform/images/agl-cluster-demo-platform-flutter.bb rename to recipes-platform/images/agl-cluster-demo-flutter.bb diff --git a/recipes-platform/images/agl-cluster-demo-platform.bb b/recipes-platform/images/agl-cluster-demo-qt.bb similarity index 100% rename from recipes-platform/images/agl-cluster-demo-platform.bb rename to recipes-platform/images/agl-cluster-demo-qt.bb diff --git a/recipes-platform/images/agl-demo-platform-crosssdk.bb b/recipes-platform/images/agl-demo-platform-crosssdk.bb deleted file mode 120000 index 70daba005..000000000 --- a/recipes-platform/images/agl-demo-platform-crosssdk.bb +++ /dev/null @@ -1 +0,0 @@ -agl-ivi-demo-platform-crosssdk.bb \ No newline at end of file diff --git a/recipes-platform/images/agl-demo-platform-html5.bb b/recipes-platform/images/agl-demo-platform-html5.bb deleted file mode 120000 index fabf5e35f..000000000 --- a/recipes-platform/images/agl-demo-platform-html5.bb +++ /dev/null @@ -1 +0,0 @@ -agl-ivi-demo-platform-html5.bb \ No newline at end of file diff --git a/recipes-platform/images/agl-demo-platform.bb b/recipes-platform/images/agl-demo-platform.bb deleted file mode 120000 index ff29cf3e8..000000000 --- a/recipes-platform/images/agl-demo-platform.bb +++ /dev/null @@ -1 +0,0 @@ -agl-ivi-demo-platform.bb \ No newline at end of file diff --git a/recipes-platform/images/agl-ivi-demo-base.bb b/recipes-platform/images/agl-ivi-demo-base.bb deleted file mode 100644 index da4d26840..000000000 --- a/recipes-platform/images/agl-ivi-demo-base.bb +++ /dev/null @@ -1,19 +0,0 @@ -require agl-image-ivi.bb - -DESCRIPTION = "AGL demo base image" - -require agl-ivi-demo-features.inc -require agl-demo-container-guest-integration.inc - -AGL_DEVEL_INSTALL += "\ - simple-can-simulator \ - unzip \ - mpc \ -" - -AGL_APPS_INSTALL = "" - -IMAGE_INSTALL += " \ - ${AGL_APPS_INSTALL} \ - ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "${AGL_DEVEL_INSTALL}" , "", d)} \ -" diff --git a/recipes-platform/images/agl-ivi-demo-platform-flutter-simple.bb b/recipes-platform/images/agl-ivi-demo-flutter-simple.bb similarity index 76% rename from recipes-platform/images/agl-ivi-demo-platform-flutter-simple.bb rename to recipes-platform/images/agl-ivi-demo-flutter-simple.bb index f1932df5b..2e33f47b1 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-flutter-simple.bb +++ b/recipes-platform/images/agl-ivi-demo-flutter-simple.bb @@ -1,6 +1,6 @@ -require agl-ivi-demo-base-flutter.bb +require agl-ivi-image-flutter.bb -DESCRIPTION = "AGL Flutter Demo Platform image" +SUMMARY = "AGL IVI demo simple Flutter image" AGL_APPS_INSTALL += " \ flutter-homescreen \ diff --git a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb b/recipes-platform/images/agl-ivi-demo-flutter.bb similarity index 80% rename from recipes-platform/images/agl-ivi-demo-platform-flutter.bb rename to recipes-platform/images/agl-ivi-demo-flutter.bb index 81a1c8046..75fd57c60 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb +++ b/recipes-platform/images/agl-ivi-demo-flutter.bb @@ -1,6 +1,6 @@ -require agl-ivi-demo-base-flutter.bb +require agl-ivi-image-flutter.bb -DESCRIPTION = "AGL Flutter Demo Platform image" +SUMMARY = "AGL IVI demo Flutter image" AGL_APPS_INSTALL += " \ flutter-ics-homescreen \ diff --git a/recipes-platform/images/agl-ivi-demo-platform-html5.bb b/recipes-platform/images/agl-ivi-demo-html5.bb similarity index 77% rename from recipes-platform/images/agl-ivi-demo-platform-html5.bb rename to recipes-platform/images/agl-ivi-demo-html5.bb index 520b443e9..34de64bd7 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-html5.bb +++ b/recipes-platform/images/agl-ivi-demo-html5.bb @@ -1,6 +1,6 @@ -require agl-image-ivi.bb +require agl-ivi-image.bb -SUMMARY = "DEMO platform of AGL HTML5 profile" +SUMMARY = "AGL IVI demo HTML5 image" DESCRIPTION = "Contains the web runtime and sample web apps" require agl-demo-container-guest-integration.inc diff --git a/recipes-platform/images/agl-ivi-demo-platform-crosssdk.bb b/recipes-platform/images/agl-ivi-demo-qt-crosssdk.bb similarity index 79% rename from recipes-platform/images/agl-ivi-demo-platform-crosssdk.bb rename to recipes-platform/images/agl-ivi-demo-qt-crosssdk.bb index c9ed07a0a..d5a98b36d 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-crosssdk.bb +++ b/recipes-platform/images/agl-ivi-demo-qt-crosssdk.bb @@ -1,6 +1,6 @@ -require agl-ivi-demo-platform.bb +require agl-ivi-demo-qt.bb -SUMMARY = "Cross SDK of demo AGL Distribution for IVI profile" +SUMMARY = "Cross SDK of AGL IVI demo" DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \ It includes the full toolchain, plus development headers and libraries \ diff --git a/recipes-platform/images/agl-ivi-demo-platform.bb b/recipes-platform/images/agl-ivi-demo-qt.bb similarity index 87% rename from recipes-platform/images/agl-ivi-demo-platform.bb rename to recipes-platform/images/agl-ivi-demo-qt.bb index 2854462cf..2f0e94276 100644 --- a/recipes-platform/images/agl-ivi-demo-platform.bb +++ b/recipes-platform/images/agl-ivi-demo-qt.bb @@ -1,6 +1,6 @@ -require agl-ivi-demo-base.bb +require agl-ivi-image.bb -DESCRIPTION = "AGL Qt Demo Platform image" +SUMMARY = "AGL IVI demo Qt image" AGL_APPS_INSTALL += " \ dashboard \ diff --git a/recipes-platform/images/agl-image-ivi-crosssdk.bb b/recipes-platform/images/agl-ivi-image-crosssdk.bb similarity index 92% rename from recipes-platform/images/agl-image-ivi-crosssdk.bb rename to recipes-platform/images/agl-ivi-image-crosssdk.bb index be008832b..74b006026 100644 --- a/recipes-platform/images/agl-image-ivi-crosssdk.bb +++ b/recipes-platform/images/agl-ivi-image-crosssdk.bb @@ -1,4 +1,4 @@ -require agl-image-ivi.bb +require agl-ivi-image.bb SUMMARY = "Cross SDK of minimal AGL Distribution for IVI profile" diff --git a/recipes-platform/images/agl-ivi-demo-base-flutter.bb b/recipes-platform/images/agl-ivi-image-flutter.bb similarity index 69% rename from recipes-platform/images/agl-ivi-demo-base-flutter.bb rename to recipes-platform/images/agl-ivi-image-flutter.bb index ce2ea6bb2..56a8b2f85 100644 --- a/recipes-platform/images/agl-ivi-demo-base-flutter.bb +++ b/recipes-platform/images/agl-ivi-image-flutter.bb @@ -1,6 +1,6 @@ -require agl-ivi-demo-base.bb +require agl-ivi-image.bb -DESCRIPTION = "AGL Flutter demo base image" +SUMMARY = "AGL IVI demo base Flutter image" IMAGE_INSTALL += " \ packagegroup-agl-demo-platform-flutter \ diff --git a/recipes-platform/images/agl-image-ivi.bb b/recipes-platform/images/agl-ivi-image.bb similarity index 63% rename from recipes-platform/images/agl-image-ivi.bb rename to recipes-platform/images/agl-ivi-image.bb index 69d0ed991..12122cafb 100644 --- a/recipes-platform/images/agl-image-ivi.bb +++ b/recipes-platform/images/agl-ivi-image.bb @@ -1,11 +1,21 @@ -SUMMARY = "A basic system of AGL distribution of IVI profile" - -DESCRIPTION = "Basic image for baseline of AGL Distribution for IVI profile." - +SUMMARY = "AGL IVI demo base image" LICENSE = "MIT" require recipes-platform/images/agl-image-compositor.bb +require agl-ivi-demo-features.inc +require agl-demo-container-guest-integration.inc + +IMAGE_FEATURES += "splash package-management ssh-server-openssh" + +AGL_DEVEL_INSTALL += "\ + simple-can-simulator \ + unzip \ + mpc \ +" + +AGL_APPS_INSTALL = "" + IMAGE_INSTALL += " \ packagegroup-agl-ivi-connectivity \ packagegroup-agl-ivi-graphics \ @@ -14,10 +24,9 @@ IMAGE_INSTALL += " \ packagegroup-agl-ivi-navigation \ packagegroup-agl-ivi-identity \ packagegroup-agl-ivi-services-applaunchd \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "", "packagegroup-agl-ivi-services-platform", d)} \ iproute2 \ - " - -IMAGE_FEATURES += "splash package-management ssh-server-openssh" - + ${AGL_APPS_INSTALL} \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "${AGL_DEVEL_INSTALL}" , "", d)} \ + ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "", "packagegroup-agl-ivi-services-platform", d)} \ +" diff --git a/recipes-platform/images/agl-kvm-demo-platform.bb b/recipes-platform/images/agl-kvm-demo.bb similarity index 95% rename from recipes-platform/images/agl-kvm-demo-platform.bb rename to recipes-platform/images/agl-kvm-demo.bb index ddb2ddb45..c27757005 100644 --- a/recipes-platform/images/agl-kvm-demo-platform.bb +++ b/recipes-platform/images/agl-kvm-demo.bb @@ -1,5 +1,4 @@ -DESCRIPTION = "AGL KVM+QEMU Demo Platform image." - +SUMMARY = "AGL KVM+QEMU Demo Platform image." LICENSE = "MIT" require recipes-platform/images/agl-image-compositor.bb @@ -59,8 +58,8 @@ IMAGE_INSTALL += "\ GUEST_MACHINE ?= "virtio-${TUNE_ARCH}" -GUEST_VM1_IMAGE ?= "agl-ivi-demo-platform-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-platform-flutter" +GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" +GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" GUEST_IMAGES ?= "agl-kvm-guest:${GUEST_VM1_IMAGE} agl-kvm-guest:${GUEST_VM2_IMAGE}" diff --git a/recipes-platform/images/agl-telematics-demo-platform.bb b/recipes-platform/images/agl-telematics-demo.bb similarity index 78% rename from recipes-platform/images/agl-telematics-demo-platform.bb rename to recipes-platform/images/agl-telematics-demo.bb index 7a113b65b..987bd3878 100644 --- a/recipes-platform/images/agl-telematics-demo-platform.bb +++ b/recipes-platform/images/agl-telematics-demo.bb @@ -1,5 +1,4 @@ -DESCRIPTION = "AGL Telematics Demo Platform image." - +SUMMARY = "AGL Telematics Demo Platform image." LICENSE = "MIT" require recipes-platform/images/agl-image-minimal.bb -- 2.16.6 From 7069907215c5eaeacc874720b1198d3249cc4b57 Mon Sep 17 00:00:00 2001 From: Jan-Simon Moeller Date: Thu, 23 May 2024 17:45:56 +0200 Subject: [PATCH 06/12] icu_74 bbappend - add wildcard for version Make the recipe apply on upcoming version uprevs. Bug-AGL: SPEC-5149 Change-Id: I462f7e0c8dc89617239b844b538b016b67207a20 Signed-off-by: Jan-Simon Moeller Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29914 Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account ci-image-build: Jenkins Job builder account --- recipes-support/icu/{icu_74-1.bbappend => icu_74-%.bbappend} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename recipes-support/icu/{icu_74-1.bbappend => icu_74-%.bbappend} (100%) diff --git a/recipes-support/icu/icu_74-1.bbappend b/recipes-support/icu/icu_74-%.bbappend similarity index 100% rename from recipes-support/icu/icu_74-1.bbappend rename to recipes-support/icu/icu_74-%.bbappend -- 2.16.6 From ea7e39dc258c5e7d3a46ffb31b3321331ba9e900 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 1 May 2024 16:57:17 -0400 Subject: [PATCH 07/12] Replace agl-demo* features with preconfigured images Changes: - Remove the agl-demo-preload and agl-demo-cluster-support setup features. - Make the agl-weston-remoting setup feature a dependency of the agl-demo feature. To accommodate this with respect to avoiding putting the remote-output display configuration into generated weston.ini files when not required, the logic for that has been moved from meta-agl-core's weston-ini-conf recipe, and extra weston-ini-conf-* packages with the remote output support enabled are now generated to be used in images when required. - Add *-preconfigured versions of the images useful in a full demo setup (i.e. with "green machine" for tradeshows). These images have the configuration tweaks that the build setup features enabled with conditional logic baked in. - Remove now unnecessary connman-conf bbappend, we now assume that the IVI and cluster IP addresses are assigned as 192.168.10.2 and 192.168.10.3 via DHCP in a full demo setup. Notes: - The cluster support in the *-preconfigured images assumes that the IVI board is at IP address 192.168.10.2, and both boards are in the 192.168.10.x subnet. Bug-AGL: SPEC-5138 Change-Id: Icc472c6b602fa8fa5570af6cb0acaef853cbfa0f Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29866 ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account Reviewed-by: Jan-Simon Moeller --- recipes-connectivity/connman/connman-conf.bbappend | 1 - .../connman/connman-conf_agldemo.inc | 6 -- .../wayland/weston-ini-conf/remote-output.cfg.in | 5 ++ .../wayland/weston-ini-conf_agldemo.inc | 88 ++++++++++++++++++++-- .../agl-cluster-demo-flutter-preconfigured.bb | 20 +++++ .../images/agl-cluster-demo-flutter.bb | 16 ++-- .../images/agl-cluster-demo-qt-preconfigured.bb | 18 +++++ recipes-platform/images/agl-cluster-demo-qt.bb | 10 +-- recipes-platform/images/agl-ivi-demo-features.inc | 8 +- .../images/agl-ivi-demo-flutter-preconfigured.bb | 14 ++++ .../images/agl-ivi-demo-qt-preconfigured.bb | 14 ++++ recipes-platform/images/agl-ivi-demo-qt.bb | 2 +- recipes-platform/images/agl-ivi-image-flutter.bb | 2 +- .../packagegroups/packagegroup-agl-demo-preload.bb | 23 ------ .../agl-demo-cluster-support/50_local.conf.inc | 1 - .../README_feature_agl-demo-cluster-support.md | 17 ----- .../feature/agl-demo-cluster-support/included.dep | 1 - .../feature/agl-demo-preload/50_local.conf.inc | 2 - .../README_feature_agl-demo-preload.md | 9 --- templates/feature/agl-demo/included.dep | 2 +- templates/feature/agl-kvm/included.dep | 2 +- 21 files changed, 166 insertions(+), 95 deletions(-) delete mode 100644 recipes-connectivity/connman/connman-conf.bbappend delete mode 100644 recipes-connectivity/connman/connman-conf_agldemo.inc create mode 100644 recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in create mode 100644 recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb create mode 100644 recipes-platform/images/agl-cluster-demo-qt-preconfigured.bb create mode 100644 recipes-platform/images/agl-ivi-demo-flutter-preconfigured.bb create mode 100644 recipes-platform/images/agl-ivi-demo-qt-preconfigured.bb delete mode 100644 recipes-platform/packagegroups/packagegroup-agl-demo-preload.bb delete mode 100644 templates/feature/agl-demo-cluster-support/50_local.conf.inc delete mode 100644 templates/feature/agl-demo-cluster-support/README_feature_agl-demo-cluster-support.md delete mode 100644 templates/feature/agl-demo-cluster-support/included.dep delete mode 100644 templates/feature/agl-demo-preload/50_local.conf.inc delete mode 100644 templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md diff --git a/recipes-connectivity/connman/connman-conf.bbappend b/recipes-connectivity/connman/connman-conf.bbappend deleted file mode 100644 index 39792fd96..000000000 --- a/recipes-connectivity/connman/connman-conf.bbappend +++ /dev/null @@ -1 +0,0 @@ -require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'connman-conf_agldemo.inc', '', d)} diff --git a/recipes-connectivity/connman/connman-conf_agldemo.inc b/recipes-connectivity/connman/connman-conf_agldemo.inc deleted file mode 100644 index 7b736ec6b..000000000 --- a/recipes-connectivity/connman/connman-conf_agldemo.inc +++ /dev/null @@ -1,6 +0,0 @@ -do_install:append() { - # Need to ignore eth1 in cluster demo setup - if ${@bb.utils.contains('AGL_FEATURES', 'agl-demo-cluster-support', 'true', 'false', d)}; then - sed -i 's/^\(NetworkInterfaceBlacklist=.*\)/\1,eth1/' ${D}${sysconfdir}/connman/main.conf - fi -} diff --git a/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in b/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in new file mode 100644 index 000000000..940cbdd0c --- /dev/null +++ b/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in @@ -0,0 +1,5 @@ +[remote-output] +name=remote-1 +mode=640x720@30 +host=192.168.10.3 +port=5005 diff --git a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc index 5c7b9feeb..11818f686 100644 --- a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc +++ b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -1,28 +1,102 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:" -SRC_URI += "file://weston.ini.kvm.in" +SRC_URI += " \ + file://remote-output.cfg.in \ + file://weston.ini.kvm.in \ +" +# Options for the user to change in local.conf +# e.g. REMOTING_OUTPUT_MODE = "1080x1488" +REMOTING_OUTPUT_MODE ??= "640x720@30" +REMOTING_OUTPUT_HOST ??= "192.168.10.3" +REMOTING_OUTPUT_PORT ??= "5005" + +# Default app IDs for KVM guests GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" +do_configure:append() { + # Standalone cluster support version + sed -e "s#host=.*#host=${REMOTING_OUTPUT_HOST}#" \ + -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \ + ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output.cfg + + # KVM guest cluster version + sed -e "s#host=.*#host=172.16.10.3#" \ + -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \ + ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output-kvm.cfg +} + do_compile:append() { - # Start with a canned configuration for a KVM host, filling in + # Create regular and KVM remoting enabled versions of the default + # portrait and landscape demo IVI configurations + for c in weston.ini.default weston.ini.landscape; do + cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting + echo >> ${WORKDIR}/${c}-remoting + cat ${WORKDIR}/remote-output.cfg >> ${WORKDIR}/${c}-remoting + + cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting-kvm + echo >> ${WORKDIR}/${c}-remoting-kvm + cat ${WORKDIR}/remote-output-kvm.cfg >> ${WORKDIR}/${c}-remoting-kvm + done + + # Create a canned configuration for the a KVM host, filling in # the guest VM application ids to pin them to specific outputs. rm -f ${WORKDIR}/weston.ini.kvm - sed -e "s/@GUEST_VM1_IMAGE@/${GUEST_VM1_IMAGE}/g" \ - -e "s/@GUEST_VM2_IMAGE@/${GUEST_VM2_IMAGE}/g" \ + sed -e "s/@GUEST_VM1_ID@/${GUEST_VM1_IMAGE}/g" \ + -e "s/@GUEST_VM2_ID@/${GUEST_VM2_IMAGE}/g" \ ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm } do_install:append() { + install -m 0644 ${WORKDIR}/weston.ini.default-remoting ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.default-remoting-kvm ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting-kvm ${D}${weston_ini_dir}/ install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/ } -PACKAGE_BEFORE_PN += "${PN}-kvm" +# remoting -FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +PACKAGE_BEFORE_PN += "${PN}-remoting" +FILES:${PN}-remoting = "${weston_ini_dir}/weston.ini.default-remoting" +RPROVIDES:${PN}-remoting = "weston-ini" +ALTERNATIVE:${PN}-remoting = "weston.ini" +ALTERNATIVE_TARGET_${PN}-remoting = "${weston_ini_dir}/weston.ini.default-remoting" +ALTERNATIVE_PRIORITY_${PN}-remoting = "30" + +# remoting-kvm +PACKAGE_BEFORE_PN += "${PN}-remoting-kvm" +FILES:${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" +RPROVIDES:${PN}-remoting-kvm = "weston-ini" +ALTERNATIVE:${PN}-remoting-kvm = "weston.ini" +ALTERNATIVE_TARGET_${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" +ALTERNATIVE_PRIORITY_${PN}-remoting-kvm = "35" + +# landscape-remoting + +PACKAGE_BEFORE_PN += "${PN}-landscape-remoting" +FILES:${PN}-landscape-remoting = "${weston_ini_dir}/weston.ini.landscape-remoting" +RPROVIDES:${PN}-landscape-remoting = "weston-ini" +ALTERNATIVE:${PN}-landscape-remoting = "weston.ini" +ALTERNATIVE_TARGET_${PN}-landscape-remoting = "${weston_ini_dir}/weston.ini.landscape-remoting" +ALTERNATIVE_PRIORITY_${PN}-landscape-remoting = "31" + +# landscape-remoting-kvm + +PACKAGE_BEFORE_PN += "${PN}-landscape-remoting-kvm" +FILES:${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" +RPROVIDES:${PN}-landscape-remoting-kvm = "weston-ini" +ALTERNATIVE:${PN}-landscape-remoting-kvm = "weston.ini" +ALTERNATIVE_TARGET_${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" +ALTERNATIVE_PRIORITY_${PN}-landscape-remoting-kvm = "36" + +# kvm + +PACKAGE_BEFORE_PN += "${PN}-kvm" +FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" RPROVIDES:${PN}-kvm = "weston-ini" -RCONFLICTS:${PN}-kvm = "${PN}" ALTERNATIVE:${PN}-kvm = "weston.ini" ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +ALTERNATIVE_PRIORITY_${PN}-kvm = "40" diff --git a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb new file mode 100644 index 000000000..5532c3e52 --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb @@ -0,0 +1,20 @@ +require agl-cluster-demo-flutter.bb + +SUMMARY = "AGL Cluster preconfigured demo Flutter image" + +# We do not want a local databroker instance +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +# The cluster screen is rotated in the full demo setup, so the +# default compositor configuration needs to be replaced. +IMAGE_INSTALL:remove = "weston-ini-conf-landscape" + +# Cluster application configuration needs to be replaced for +# the full demo to handle different databroker configuration. +IMAGE_INSTALL:remove = "flutter-cluster-dashboard-conf" + +IMAGE_INSTALL += " \ + psplash-inverted-config \ + weston-ini-conf-landscape-inverted \ + flutter-cluster-dashboard-conf-demo \ +" diff --git a/recipes-platform/images/agl-cluster-demo-flutter.bb b/recipes-platform/images/agl-cluster-demo-flutter.bb index 5cf3daf9f..b2581f87e 100644 --- a/recipes-platform/images/agl-cluster-demo-flutter.bb +++ b/recipes-platform/images/agl-cluster-demo-flutter.bb @@ -7,31 +7,27 @@ require agl-demo-features.inc IMAGE_FEATURES += "splash package-management ssh-server-openssh" -# KUKSA.val databroker is not installed with "agl-demo-preload" -# feature enabled, since demo unit configuration points at the -# databroker on the IVI board in that setup. IMAGE_FEATURES += " \ kuksa-val-databroker-client \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "kuksa-val-databroker", d)} \ + kuksa-val-databroker \ " # Generic IMAGE_INSTALL += "\ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "psplash-inverted-config", "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "weston-ini-conf-landscape-inverted", "weston-ini-conf-landscape", d)} \ + weston-ini-conf-landscape \ \ packagegroup-agl-networking \ cluster-receiver \ \ simple-can-simulator \ - " +" # Flutter IMAGE_INSTALL += "\ + flutter-auto \ flutter-cluster-dashboard \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "flutter-cluster-dashboard-conf-demo", "flutter-cluster-dashboard-conf", d)} \ + flutter-cluster-dashboard-conf \ cluster-demo-config-flutter \ - flutter-auto \ - " +" CLANGSDK = "1" diff --git a/recipes-platform/images/agl-cluster-demo-qt-preconfigured.bb b/recipes-platform/images/agl-cluster-demo-qt-preconfigured.bb new file mode 100644 index 000000000..c993406cf --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-qt-preconfigured.bb @@ -0,0 +1,18 @@ +require agl-cluster-demo-qt.bb + +SUMMARY = "AGL Cluster preconfigured demo Qt image" + +# We do not want a local databroker instance +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +# We do not want weston-terminal visible +IMAGE_INSTALL:remove = "weston-terminal-conf" + +# The cluster screen is rotated in the full demo setup, so the +# default compositor configuration needs to be replaced. +IMAGE_INSTALL:remove = "weston-ini-conf-landscape" + +IMAGE_INSTALL += " \ + cluster-demo-config \ + weston-ini-conf-landscape-inverted \ +" diff --git a/recipes-platform/images/agl-cluster-demo-qt.bb b/recipes-platform/images/agl-cluster-demo-qt.bb index c427af66b..03dfb36cc 100644 --- a/recipes-platform/images/agl-cluster-demo-qt.bb +++ b/recipes-platform/images/agl-cluster-demo-qt.bb @@ -11,19 +11,15 @@ inherit features_check REQUIRED_DISTRO_FEATURES = "wayland" -# KUKSA.val databroker is not installed with "agl-demo-preload" -# feature enabled, since demo unit configuration points at the -# databroker on the IVI board in that setup. IMAGE_FEATURES += " \ kuksa-val-databroker-client \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "kuksa-val-databroker", d)} \ + kuksa-val-databroker \ " # add packages for cluster demo platform (include demo apps) here IMAGE_INSTALL += " \ packagegroup-agl-cluster-demo-platform \ kuksa-certificates-agl-ca \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "cluster-demo-config", "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "weston-ini-conf-landscape-inverted", "weston-ini-conf-landscape", d)} \ + weston-ini-conf-landscape \ ${@bb.utils.contains("AGL_FEATURES", "AGLCI", "qemu-set-display", "", d)} \ - " +" diff --git a/recipes-platform/images/agl-ivi-demo-features.inc b/recipes-platform/images/agl-ivi-demo-features.inc index 9aabaafee..ecf3cd98b 100644 --- a/recipes-platform/images/agl-ivi-demo-features.inc +++ b/recipes-platform/images/agl-ivi-demo-features.inc @@ -1,19 +1,13 @@ require agl-demo-features.inc -FEATURE_PACKAGES_agl-demo-preload = "packagegroup-agl-demo-preload" - FEATURE_PACKAGES_agl-demo-cluster-support = " \ tbtnavi \ ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "tbtnavi-conf-kvm-demo", "tbtnavi-conf", d)} \ ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-databroker-agl-demo-cluster", d)} \ " -IMAGE_FEATURES += " \ - ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ - ${@bb.utils.filter("AGL_FEATURES", "agl-demo-preload agl-demo-cluster-support", d)} \ -" - IMAGE_FEATURES += " \ kuksa-val-databroker-client \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-val-databroker", d)} \ " diff --git a/recipes-platform/images/agl-ivi-demo-flutter-preconfigured.bb b/recipes-platform/images/agl-ivi-demo-flutter-preconfigured.bb new file mode 100644 index 000000000..7d76f4c7e --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-flutter-preconfigured.bb @@ -0,0 +1,14 @@ +require agl-ivi-demo-flutter.bb + +SUMMARY = "AGL IVI preconfigured demo Flutter image" + +IMAGE_FEATURES += "agl-demo-cluster-support" + +# We do not want weston-terminal visible +IMAGE_INSTALL:remove = "weston-terminal-conf" + +IMAGE_INSTALL += " \ + weston-ini-conf-remoting \ + demo-i2c-udev-conf \ + simple-can-simulator \ +" diff --git a/recipes-platform/images/agl-ivi-demo-qt-preconfigured.bb b/recipes-platform/images/agl-ivi-demo-qt-preconfigured.bb new file mode 100644 index 000000000..fa1313e81 --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-qt-preconfigured.bb @@ -0,0 +1,14 @@ +require agl-ivi-demo-qt.bb + +SUMMARY = "AGL IVI preconfigured demo Qt image" + +IMAGE_FEATURES += "agl-demo-cluster-support" + +# We do not want weston-terminal visible +IMAGE_INSTALL:remove = "weston-terminal-conf" + +IMAGE_INSTALL += " \ + weston-ini-conf-remoting \ + demo-i2c-udev-conf \ + simple-can-simulator \ +" \ No newline at end of file diff --git a/recipes-platform/images/agl-ivi-demo-qt.bb b/recipes-platform/images/agl-ivi-demo-qt.bb index 2f0e94276..79640791b 100644 --- a/recipes-platform/images/agl-ivi-demo-qt.bb +++ b/recipes-platform/images/agl-ivi-demo-qt.bb @@ -18,6 +18,6 @@ AGL_APPS_INSTALL += " \ IMAGE_INSTALL += " \ packagegroup-agl-demo-platform \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "weston-terminal-conf", d)} \ + weston-terminal-conf \ " diff --git a/recipes-platform/images/agl-ivi-image-flutter.bb b/recipes-platform/images/agl-ivi-image-flutter.bb index 56a8b2f85..0c227f0ea 100644 --- a/recipes-platform/images/agl-ivi-image-flutter.bb +++ b/recipes-platform/images/agl-ivi-image-flutter.bb @@ -4,5 +4,5 @@ SUMMARY = "AGL IVI demo base Flutter image" IMAGE_INSTALL += " \ packagegroup-agl-demo-platform-flutter \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "weston-terminal-conf", d)} \ + weston-terminal-conf \ " diff --git a/recipes-platform/packagegroups/packagegroup-agl-demo-preload.bb b/recipes-platform/packagegroups/packagegroup-agl-demo-preload.bb deleted file mode 100644 index 808c93c67..000000000 --- a/recipes-platform/packagegroups/packagegroup-agl-demo-preload.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "Extra software and configuration for tradeshow demo with AGL IVI profile demo platform" -LICENSE = "MIT" - -inherit packagegroup - -PROVIDES = "${PACKAGES}" -PACKAGES = " \ - packagegroup-agl-demo-preload \ -" - -# NOTES: -# - demo-i2c-udev-conf: -# Adds udev configuration and scripts for supporting USB attached -# I2C devices for RTC and HVAC LED support. -# - simple-can-simulator: -# CAN message simulator for vehicle and engine speed message -# generation, with some support for the cruise control events from -# the steering wheel used in the demo setup. -# -RDEPENDS:${PN} = "\ - demo-i2c-udev-conf \ - simple-can-simulator \ -" diff --git a/templates/feature/agl-demo-cluster-support/50_local.conf.inc b/templates/feature/agl-demo-cluster-support/50_local.conf.inc deleted file mode 100644 index 188d8e8e5..000000000 --- a/templates/feature/agl-demo-cluster-support/50_local.conf.inc +++ /dev/null @@ -1 +0,0 @@ -AGL_FEATURES:append = " agl-demo-cluster-support" diff --git a/templates/feature/agl-demo-cluster-support/README_feature_agl-demo-cluster-support.md b/templates/feature/agl-demo-cluster-support/README_feature_agl-demo-cluster-support.md deleted file mode 100644 index a9ff2cfb5..000000000 --- a/templates/feature/agl-demo-cluster-support/README_feature_agl-demo-cluster-support.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Feature agl-demo-cluster-support -authors: Scott Murray ---- - -### Feature agl-demo-cluster-support - -Enables support for remote navigation display on a connected board running -the agl-cluster-demo-platform image. The configuration is in large part -intended for use with the AGL tradeshow demo setup. - -#### Dependent features pulled by agl-demo-cluster-support - -The following features are pulled: - -* agl-weston-remoting - diff --git a/templates/feature/agl-demo-cluster-support/included.dep b/templates/feature/agl-demo-cluster-support/included.dep deleted file mode 100644 index 1e9b35fbf..000000000 --- a/templates/feature/agl-demo-cluster-support/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-weston-remoting diff --git a/templates/feature/agl-demo-preload/50_local.conf.inc b/templates/feature/agl-demo-preload/50_local.conf.inc deleted file mode 100644 index 00ff3b718..000000000 --- a/templates/feature/agl-demo-preload/50_local.conf.inc +++ /dev/null @@ -1,2 +0,0 @@ -#see meta-agl-demo/conf/include/agl-demo-preload.inc -require conf/include/agl-demo-preload.inc diff --git a/templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md b/templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md deleted file mode 100644 index e5ec847bb..000000000 --- a/templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: Feature agl-demo-preload -authors: Scott Murray ---- - -### Feature agl-demo-preload - -*Description is missing - please complete file meta-agl-demo/templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md* - diff --git a/templates/feature/agl-demo/included.dep b/templates/feature/agl-demo/included.dep index e94759e39..a81b5a431 100644 --- a/templates/feature/agl-demo/included.dep +++ b/templates/feature/agl-demo/included.dep @@ -1 +1 @@ -agl-pipewire agl-app-framework agl-selinux agl-flutter +agl-pipewire agl-app-framework agl-selinux agl-flutter agl-weston-remoting diff --git a/templates/feature/agl-kvm/included.dep b/templates/feature/agl-kvm/included.dep index f61c6e009..82639da07 100644 --- a/templates/feature/agl-kvm/included.dep +++ b/templates/feature/agl-kvm/included.dep @@ -1 +1 @@ -agl-demo agl-demo-cluster-support agl-demo-preload +agl-demo -- 2.16.6 From 2e0fd28b2470f6d81bfb1b0b273af5742060ed6a Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Sun, 12 May 2024 15:28:59 -0400 Subject: [PATCH 08/12] Rework KVM demo configuration Changes: - Move KVM demo configuration and image recipes to a new sub-layer, meta-agl-kvm-demo, to keep things that may not be buildable with just the agl-demo feature separate to avoid confusion. It will hopefully also avoid clutter in recipes-platform/images. This sub-layer is pulled in when the agl-kvm setup feature is given to aglsetup.sh. - Remove the agl-kvm-host-kuksa and agl-kvm-host-audio setup features. - Add new *-guest and *-guest-preconfigured flavors of the Flutter IVI and IC images under meta-agl-kvm-demo that that have the desired configuration changes baked in. - Add required qemu-config recipe variants for the new guest image flavors. At the moment there is more duplication of configuration for this than is desired, and some reworking of agl-qemu-runner configuration may come as a follow up to avoid this. - Remove qemu-config recipe variants for unused Qt guest images. If it becomes desirable to use the Qt demo images as guests this can be revisited. - Added agl-kvm-demo-flutter-preconfigured image variant that supports the full demo setup (i.e. "green machine" with steering wheel, equivalent to CES 2024 demos). NOTES: - The agl-kvm-demo image remains and builds roughly the same image as before, with the KUKSA.val databroker running in the IVI guest and cluster support enabled. Replacing this image with a bbclass abstraction and an e.g. agl-kvm-demo-flutter image is under consideration. Bug-AGL: SPEC-5138 Change-Id: I64936208fd032e5ba47366e3a7ff572dc18338e4 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29918 ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account --- meta-agl-kvm-demo/conf/layer.conf | 15 +++++ ...l-cluster-demo-flutter-guest-preconfigured.conf | 1 + .../files/agl-cluster-demo-flutter-guest.conf | 5 +- .../agl-ivi-demo-flutter-guest-preconfigured.conf | 1 + .../files/agl-ivi-demo-flutter-guest.conf | 1 + .../recipes-config}/qemu-config/files/bridge.conf | 0 .../qemu-config/files/connman-nodnsproxy.conf | 0 .../qemu-config/files/dnsmasq-qemu.conf | 0 .../qemu-config/files/vmnet0.netdev | 0 .../qemu-config/files/vmnet0.network | 0 ...agl-cluster-demo-flutter-guest-preconfigured.bb | 3 + .../qemu-config-agl-cluster-demo-flutter-guest.bb | 2 +- ...fig-agl-ivi-demo-flutter-guest-preconfigured.bb | 3 + .../qemu-config-agl-ivi-demo-flutter-guest.bb | 2 +- .../qemu-config/qemu-config-vmnet0.bb | 0 .../agl-qemu-runner/agl-qemu-runner.bb | 0 .../agl-qemu-runner/files/agl-qemu-runner.sh | 5 +- .../agl-qemu-runner/files/agl-qemu-runner@.service | 0 .../wayland/weston-ini-conf.bbappend | 1 + .../wayland/weston-ini-conf/weston.ini.kvm.in | 4 +- .../wayland/weston-ini-conf_agldemo.inc | 66 ++++++++++++++++++++++ ...agl-cluster-demo-flutter-guest-preconfigured.bb | 12 ++++ .../images/agl-cluster-demo-flutter-guest.bb | 8 +++ .../agl-ivi-demo-flutter-guest-preconfigured.bb | 12 ++++ .../images/agl-ivi-demo-flutter-guest.bb | 14 +++++ .../images/agl-kvm-demo-flutter-preconfigured.bb | 38 +++++++++++++ .../recipes-platform}/images/agl-kvm-demo.bb | 34 ++--------- .../qemu-config/qemu-config-agl-cluster-demo-qt.bb | 29 ---------- .../qemu-config/qemu-config-agl-ivi-demo-qt.bb | 29 ---------- .../files/cluster-dashboard.yaml.kvm-demo | 4 ++ .../flutter-cluster-dashboard_git.bb | 18 ++++-- .../flutter-ics-homescreen_git.bb | 1 - recipes-demo/libqtappfw/libqtappfw_git.bb | 1 - .../wayland/weston-ini-conf_agldemo.inc | 59 +------------------ .../agl-cluster-demo-flutter-preconfigured.bb | 3 +- .../images/agl-cluster-demo-flutter.bb | 4 +- recipes-platform/images/agl-ivi-demo-features.inc | 8 ++- recipes-platform/images/agl-ivi-demo-flutter.bb | 7 ++- recipes-platform/images/agl-ivi-demo-qt.bb | 4 +- recipes-platform/images/agl-ivi-image.bb | 9 ++- .../packagegroup-agl-ivi-multimedia.bb | 20 +++++-- .../packagegroups/packagegroup-agl-ivi-services.bb | 1 + .../feature/agl-kvm-host-audio/50_local.conf.inc | 1 - .../README_feature_agl-kvm-host-kuksa.md | 17 ------ templates/feature/agl-kvm-host-audio/included.dep | 1 - .../feature/agl-kvm-host-kuksa/50_local.conf.inc | 1 - .../README_feature_agl-kvm-host-kuksa.md | 17 ------ templates/feature/agl-kvm-host-kuksa/included.dep | 1 - templates/feature/agl-kvm/50_bblayers.conf.inc | 4 ++ 49 files changed, 253 insertions(+), 213 deletions(-) create mode 100644 meta-agl-kvm-demo/conf/layer.conf rename recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf (88%) rename recipes-config/qemu-config/files/agl-cluster-demo-qt.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf (73%) rename recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf (96%) rename recipes-config/qemu-config/files/agl-ivi-demo-qt.conf => meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf (96%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/bridge.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/connman-nodnsproxy.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/dnsmasq-qemu.conf (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/vmnet0.netdev (100%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/files/vmnet0.network (100%) create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb rename recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb => meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb (95%) create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb rename recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb => meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb (95%) rename {recipes-config => meta-agl-kvm-demo/recipes-config}/qemu-config/qemu-config-vmnet0.bb (100%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/agl-qemu-runner.bb (100%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/files/agl-qemu-runner.sh (92%) rename {recipes-extended => meta-agl-kvm-demo/recipes-extended}/agl-qemu-runner/files/agl-qemu-runner@.service (100%) create mode 100644 meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend rename {recipes-graphics => meta-agl-kvm-demo/recipes-graphics}/wayland/weston-ini-conf/weston.ini.kvm.in (77%) create mode 100644 meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb rename {recipes-platform => meta-agl-kvm-demo/recipes-platform}/images/agl-kvm-demo.bb (60%) delete mode 100644 recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb delete mode 100644 recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb create mode 100644 recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo delete mode 100644 templates/feature/agl-kvm-host-audio/50_local.conf.inc delete mode 100644 templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md delete mode 100644 templates/feature/agl-kvm-host-audio/included.dep delete mode 100644 templates/feature/agl-kvm-host-kuksa/50_local.conf.inc delete mode 100644 templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md delete mode 100644 templates/feature/agl-kvm-host-kuksa/included.dep diff --git a/meta-agl-kvm-demo/conf/layer.conf b/meta-agl-kvm-demo/conf/layer.conf new file mode 100644 index 000000000..0799d4f4e --- /dev/null +++ b/meta-agl-kvm-demo/conf/layer.conf @@ -0,0 +1,15 @@ +# 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 += "agl-kvm-demo-layer" +BBFILE_PATTERN_agl-kvm-demo-layer = "^${LAYERDIR}/" +BBFILE_PRIORITY_agl-kvm-demo-layer = "70" + +LAYERSERIES_COMPAT_agl-kvm-demo-layer = "kirkstone" + +LAYERDEPENDS_agl-kvm-demo-layer = "agldemo" + diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf similarity index 88% rename from recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf index 99d1f10c9..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-flutter.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf @@ -3,3 +3,4 @@ QEMU_SMP_OPT="-smp 2" QEMU_MEM_OPT="-m 1G" QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0" QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-cluster-demo" diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-qt.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf similarity index 73% rename from recipes-config/qemu-config/files/agl-cluster-demo-qt.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf index 1ecefc477..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-qt.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf @@ -1,5 +1,6 @@ QEMU_TASKSET_CPUS="4-7" -QEMU_SMP_OPT="-smp 4" -QEMU_MEM_OPT="-m 2G" +QEMU_SMP_OPT="-smp 2" +QEMU_MEM_OPT="-m 1G" QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0" QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-cluster-demo" diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf similarity index 96% rename from recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf index 7ff32bc18..c2d420eb6 100644 --- a/recipes-config/qemu-config/files/agl-ivi-demo-flutter.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf @@ -10,3 +10,4 @@ QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audio QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0" QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0" QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-ivi-demo" diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-qt.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf similarity index 96% rename from recipes-config/qemu-config/files/agl-ivi-demo-qt.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf index 7ff32bc18..c2d420eb6 100644 --- a/recipes-config/qemu-config/files/agl-ivi-demo-qt.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf @@ -10,3 +10,4 @@ QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audio QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0" QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0" QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-ivi-demo" diff --git a/recipes-config/qemu-config/files/bridge.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf similarity index 100% rename from recipes-config/qemu-config/files/bridge.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf diff --git a/recipes-config/qemu-config/files/connman-nodnsproxy.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf similarity index 100% rename from recipes-config/qemu-config/files/connman-nodnsproxy.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf diff --git a/recipes-config/qemu-config/files/dnsmasq-qemu.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf similarity index 100% rename from recipes-config/qemu-config/files/dnsmasq-qemu.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf diff --git a/recipes-config/qemu-config/files/vmnet0.netdev b/meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev similarity index 100% rename from recipes-config/qemu-config/files/vmnet0.netdev rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev diff --git a/recipes-config/qemu-config/files/vmnet0.network b/meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network similarity index 100% rename from recipes-config/qemu-config/files/vmnet0.network rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb new file mode 100644 index 000000000..b58dcae6e --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-cluster-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured" diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb index f0bc93fd3..96d95113f 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter.bb +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-cluster-demo-flutter" +QEMU_IMAGE = "agl-cluster-demo-flutter-guest" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb new file mode 100644 index 000000000..642876b5a --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-ivi-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured" diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb similarity index 95% rename from recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb index a9f2be43a..cfab8b1a7 100644 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter.bb +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb @@ -9,7 +9,7 @@ SRC_URI = "file://${QEMU_IMAGE}.conf" do_configure[noexec] = "1" do_compile[noexec] = "1" -QEMU_IMAGE = "agl-ivi-demo-flutter" +QEMU_IMAGE = "agl-ivi-demo-flutter-guest" QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" do_install() { diff --git a/recipes-config/qemu-config/qemu-config-vmnet0.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb similarity index 100% rename from recipes-config/qemu-config/qemu-config-vmnet0.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb diff --git a/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb similarity index 100% rename from recipes-extended/agl-qemu-runner/agl-qemu-runner.bb rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh similarity index 92% rename from recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh index ab3a02c91..f0136b6d5 100755 --- a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh +++ b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh @@ -43,8 +43,9 @@ export XDG_RUNTIME_DIR=/run/user/1001 #export WAYLAND_DISPLAY=wayland-1 # This sets the XDG app id, which we need for setting outputs with -# agl-compositor -export SDL_VIDEO_WAYLAND_WMCLASS="${image}" +# agl-compositor. If QEMU_XDG_APP_ID is not set, the image name +# is used. +export SDL_VIDEO_WAYLAND_WMCLASS="${QEMU_XDG_APP_ID:-${image}}" ${TASKSET_CMD} \ qemu-system-${arch} \ diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service b/meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service similarity index 100% rename from recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service rename to meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service diff --git a/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend new file mode 100644 index 000000000..423a46944 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -0,0 +1 @@ +require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'weston-ini-conf_agldemo.inc', '', d)} diff --git a/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in similarity index 77% rename from recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in rename to meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in index 79ca30cd4..3369853f4 100644 --- a/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in @@ -10,9 +10,9 @@ panel-position=none # A display is connected to HDMI-A-1 [output] name=HDMI-A-1 -agl-shell-app-id=@GUEST_VM1_IMAGE@ +agl-shell-app-id=@GUEST_VM1_ID@ # A display is connected to HDMI-A-2 [output] name=HDMI-A-2 -agl-shell-app-id=@GUEST_VM2_IMAGE@ +agl-shell-app-id=@GUEST_VM2_ID@ diff --git a/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc new file mode 100644 index 000000000..28f871a8d --- /dev/null +++ b/meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -0,0 +1,66 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:" + +SRC_URI += "file://weston.ini.kvm.in" + +REMOTING_KVM_OUTPUT_HOST ?= "172.16.10.3" + +# Default app IDs for KVM guests +GUEST_VM1_ID ?= "agl-ivi-demo" +GUEST_VM2_ID ?= "agl-cluster-demo" + +do_configure:append() { + # KVM guest cluster version + sed -e "s#host=.*#host=${REMOTING_KVM_OUTPUT_HOST}#" \ + -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \ + ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output-kvm.cfg +} + +do_compile:append() { + # Create KVM remoting enabled versions of the default portrait + # and landscape demo IVI configurations + for c in weston.ini.default weston.ini.landscape; do + cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting-kvm + echo >> ${WORKDIR}/${c}-remoting-kvm + cat ${WORKDIR}/remote-output-kvm.cfg >> ${WORKDIR}/${c}-remoting-kvm + done + + # Create a canned configuration for the a KVM host, filling in + # the guest VM application ids to pin them to specific outputs. + rm -f ${WORKDIR}/weston.ini.kvm + sed -e "s/@GUEST_VM1_ID@/${GUEST_VM1_ID}/g" \ + -e "s/@GUEST_VM2_ID@/${GUEST_VM2_ID}/g" \ + ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm +} + +do_install:append() { + install -m 0644 ${WORKDIR}/weston.ini.default-remoting-kvm ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting-kvm ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/ +} + +# remoting-kvm + +PACKAGE_BEFORE_PN += "${PN}-remoting-kvm" +FILES:${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" +RPROVIDES:${PN}-remoting-kvm = "weston-ini" +ALTERNATIVE:${PN}-remoting-kvm = "weston.ini" +ALTERNATIVE_TARGET_${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" +ALTERNATIVE_PRIORITY_${PN}-remoting-kvm = "35" + +# landscape-remoting-kvm + +PACKAGE_BEFORE_PN += "${PN}-landscape-remoting-kvm" +FILES:${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" +RPROVIDES:${PN}-landscape-remoting-kvm = "weston-ini" +ALTERNATIVE:${PN}-landscape-remoting-kvm = "weston.ini" +ALTERNATIVE_TARGET_${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" +ALTERNATIVE_PRIORITY_${PN}-landscape-remoting-kvm = "36" + +# kvm + +PACKAGE_BEFORE_PN += "${PN}-kvm" +FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +RPROVIDES:${PN}-kvm = "weston-ini" +ALTERNATIVE:${PN}-kvm = "weston.ini" +ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +ALTERNATIVE_PRIORITY_${PN}-kvm = "40" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb new file mode 100644 index 000000000..d5c8fcec2 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,12 @@ +require agl-cluster-demo-flutter-guest.bb + +SUMMARY = "AGL KVM demo guest preconfigured cluster Flutter image" + +# The cluster screen is rotated in the full demo setup, so the +# default compositor configuration needs to be replaced. +IMAGE_INSTALL:remove = "weston-ini-conf-landscape" + +IMAGE_INSTALL += " \ + psplash-inverted-config \ + weston-ini-conf-landscape-inverted \ +" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb new file mode 100644 index 000000000..3cde0d07b --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb @@ -0,0 +1,8 @@ +require recipes-platform/images/agl-cluster-demo-flutter.bb + +SUMMARY = "AGL KVM demo guest cluster Flutter image" + +# We do not want a local databroker instance +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-kvm-demo" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb new file mode 100644 index 000000000..a98cb5887 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb @@ -0,0 +1,12 @@ +require agl-ivi-demo-flutter-guest.bb + +SUMMARY = "AGL KVM demo preconfigured guest IVI Flutter image" + +# KUKSA.val always runs externally +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +# Everything runs on the host for now +PLATFORM_SERVICES_INSTALL = "" + +# We do not want weston-terminal visible +IMAGE_INSTALL:remove = "weston-terminal-conf" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb new file mode 100644 index 000000000..f6e748bfd --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb @@ -0,0 +1,14 @@ +require recipes-platform/images/agl-ivi-demo-flutter.bb + +SUMMARY = "AGL KVM demo guest IVI Flutter image" + +# We assume there's always a cluster in the KVM demo +IMAGE_FEATURES += "agl-demo-cluster-support" + +FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf-kvm-demo" +ONDEMANDNAVI_CONF = "ondemandnavi-conf-kvm-demo" +TBTNAVI_CONF = "tbtnavi-conf-kvm-demo" + +IMAGE_INSTALL += " \ + weston-ini-conf-remoting-kvm \ +" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb new file mode 100644 index 000000000..9b02c68ce --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb @@ -0,0 +1,38 @@ +LICENSE = "MIT" + +require agl-kvm-demo.bb + +SUMMARY = "AGL KVM+QEMU preconfigured Flutter demo image" + +# If building with "agl-kvm-host-kuksa", the databroker and likely +# some clients run on the host +IMAGE_FEATURES += " \ + kuksa-val-databroker \ + kuksa-val-databroker-client \ +" + +# Until virtio sound is workable with QEMU, run the audio using +# services on the host for a better demo experience. At the +# moment, this also includes the HVAC service since it does not +# make sense to try to make things more fine-grained with respect +# to configuration for where things expect to find the databroker. +# It will need to be revisited when virtio-snd, virtio-gpio, etc. +# become feasible to use. +HOST_AUDIO_INSTALL = " \ + packagegroup-agl-ivi-services-platform \ + packagegroup-agl-ivi-multimedia-platform \ + agl-service-radio-conf-kvm-demo \ + packagegroup-pipewire \ + wireplumber-config-agl \ + wireplumber-policy-config-agl \ + udisks2 \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "packagegroup-pipewire-tools mpc" , "", d)} \ +" + +IMAGE_INSTALL += "\ + kuksa-databroker-agl-demo-cluster \ + ${HOST_AUDIO_INSTALL} \ +" + +GUEST_VM1_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured" +GUEST_VM2_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured" diff --git a/recipes-platform/images/agl-kvm-demo.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb similarity index 60% rename from recipes-platform/images/agl-kvm-demo.bb rename to meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb index c27757005..33f2b921f 100644 --- a/recipes-platform/images/agl-kvm-demo.bb +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb @@ -1,15 +1,12 @@ -SUMMARY = "AGL KVM+QEMU Demo Platform image." +SUMMARY = "AGL KVM+QEMU demo image" LICENSE = "MIT" require recipes-platform/images/agl-image-compositor.bb -require agl-demo-features.inc +require recipes-platform/images/agl-demo-features.inc IMAGE_FEATURES += "splash package-management ssh-server-openssh" -# If building with "agl-kvm-host-kuksa", the databroker and likely -# some clients run on the host IMAGE_FEATURES += " \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "kuksa-val-databroker kuksa-val-databroker-client", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ " @@ -29,37 +26,14 @@ IMAGE_INSTALL += " \ alsa-utils \ " -# Until virtio sound is workable with QEMU, run the audio using -# services on the host for a better demo experience. At the -# moment, this also includes the HVAC service since it does not -# make sense to try to make things more fine-grained with respect -# to configuration for where things expect to find the databroker. -# It will need to be revisited when virtio-snd, virtio-gpio, etc. -# become feasible to use. -HOST_AUDIO_INSTALL = " \ - packagegroup-agl-ivi-services-platform \ - agl-service-radio-conf-kvm-demo \ - packagegroup-pipewire \ - wireplumber-config-agl \ - wireplumber-policy-config-agl \ - mpd \ - udisks2 \ - ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "packagegroup-pipewire-tools mpc" , "", d)} \ -" - -IMAGE_INSTALL += "\ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "kuksa-databroker-agl-demo-cluster", "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "${HOST_AUDIO_INSTALL}", "", d)} \ -" - # Potential size reduction options #IMAGE_LINGUAS = " " #NO_RECOMMENDATIONS = "1" GUEST_MACHINE ?= "virtio-${TUNE_ARCH}" -GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" +GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter-guest" +GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter-guest" GUEST_IMAGES ?= "agl-kvm-guest:${GUEST_VM1_IMAGE} agl-kvm-guest:${GUEST_VM2_IMAGE}" diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb deleted file mode 100644 index e22e40271..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-qt.bb +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "Setting files for agl-cluster-demo-plaform guest VM" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -inherit systemd allarch - -SRC_URI = "file://${QEMU_IMAGE}.conf" - -do_configure[noexec] = "1" -do_compile[noexec] = "1" - -QEMU_IMAGE = "agl-cluster-demo-qt" -QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" - -do_install() { - # Install template unit links - install -d ${D}${systemd_system_unitdir} - ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT} - install -d ${D}${systemd_system_unitdir}/multi-user.target.wants - ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT} - - # Install conf file - install -d ${D}${sysconfdir}/agl-qemu-runner - install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/ -} - -FILES:${PN} += "${systemd_system_unitdir}" - -RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb deleted file mode 100644 index 46e043c05..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-qt.bb +++ /dev/null @@ -1,29 +0,0 @@ -SUMMARY = "Setting files for agl-demo-plaform guest VM" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" - -inherit systemd allarch - -SRC_URI = "file://${QEMU_IMAGE}.conf" - -do_configure[noexec] = "1" -do_compile[noexec] = "1" - -QEMU_IMAGE = "agl-ivi-demo-qt" -QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service" - -do_install() { - # Install template unit links - install -d ${D}${systemd_system_unitdir} - ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT} - install -d ${D}${systemd_system_unitdir}/multi-user.target.wants - ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT} - - # Install conf file - install -d ${D}${sysconfdir}/agl-qemu-runner - install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/ -} - -FILES:${PN} += "${systemd_system_unitdir}" - -RDEPENDS:${PN} += "agl-qemu-runner qemu-config-vmnet0" diff --git a/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo new file mode 100644 index 000000000..9267b4d40 --- /dev/null +++ b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo @@ -0,0 +1,4 @@ +hostname: 172.16.10.1 +authorization : "/etc/xdg/AGL/cluster-dashboard/cluster-dashboard.token" +use-tls : true +tls-server-name : "localhost" diff --git a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb index beee7005f..f81d8e733 100644 --- a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb +++ b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb @@ -13,6 +13,7 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-instrument-clust file://flutter_cluster_dashboard_on_bg.json \ file://cluster-dashboard.yaml \ file://cluster-dashboard.yaml.demo \ + file://cluster-dashboard.yaml.kvm-demo \ file://cluster-dashboard.token \ file://kvm.conf \ " @@ -26,8 +27,6 @@ PUBSPEC_APPNAME = "flutter_cluster_dashboard" inherit flutter-app update-alternatives systemd -CLUSTER_DEMO_VSS_HOSTNAME ??= "192.168.10.2" - APP_CONFIG = "flutter_cluster_dashboard_on_bg.json" SYSTEMD_SERVICE:${PN} = "flutter-cluster-dashboard.service" @@ -42,7 +41,7 @@ do_install:append() { install -d ${D}${sysconfdir}/xdg/AGL/cluster-dashboard install -m 0644 ${WORKDIR}/cluster-dashboard.yaml ${D}${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.demo ${D}${sysconfdir}/xdg/AGL/ - sed -i "s/^hostname: .*/hostname: ${CLUSTER_DEMO_VSS_HOSTNAME}/" ${D}${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo + install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.kvm-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/cluster-dashboard.token ${D}${sysconfdir}/xdg/AGL/cluster-dashboard/ } @@ -52,7 +51,7 @@ FILES:${PN} += "${datadir} ${sysconfdir}/xdg/AGL" RDEPENDS:${PN} += "flutter-auto agl-flutter-env liberation-fonts" -PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-demo" +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-demo ${PN}-conf-kvm-demo" FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default" RDEPENDS:${PN}-conf = "${PN}" @@ -63,10 +62,19 @@ ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.de FILES:${PN}-conf-demo += " \ ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo \ - ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \ " RDEPENDS:${PN}-conf-demo = "${PN}" RPROVIDES:${PN}-conf-demo = "cluster-dashboard.yaml" RCONFLICTS:${PN}-conf-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-demo = "cluster-dashboard.yaml" ALTERNATIVE_TARGET_${PN}-conf-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo" + +FILES:${PN}-conf-kvm-demo += " \ + ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo \ + ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \ +" +RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +RPROVIDES:${PN}-conf-kvm-demo = "cluster-dashboard.yaml" +RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" +ALTERNATIVE:${PN}-conf-kvm-demo = "cluster-dashboard.yaml" +ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo" diff --git a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb index 576e5a7d1..17e55994e 100644 --- a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb +++ b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb @@ -59,7 +59,6 @@ RDEPENDS:${PN} += " \ flutter-auto \ agl-flutter-env \ applaunchd \ - ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'agl-service-radio mpd', d)} \ " PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" diff --git a/recipes-demo/libqtappfw/libqtappfw_git.bb b/recipes-demo/libqtappfw/libqtappfw_git.bb index 85d20f41b..f4e360723 100644 --- a/recipes-demo/libqtappfw/libqtappfw_git.bb +++ b/recipes-demo/libqtappfw/libqtappfw_git.bb @@ -35,7 +35,6 @@ EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}" RRECOMMENDS:${PN} += " \ bluez5 \ connman \ - ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \ " BBCLASSEXTEND = "nativesdk" diff --git a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc index 11818f686..14290b998 100644 --- a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc +++ b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -1,9 +1,6 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:" -SRC_URI += " \ - file://remote-output.cfg.in \ - file://weston.ini.kvm.in \ -" +SRC_URI += "file://remote-output.cfg.in" # Options for the user to change in local.conf # e.g. REMOTING_OUTPUT_MODE = "1080x1488" @@ -11,49 +8,26 @@ REMOTING_OUTPUT_MODE ??= "640x720@30" REMOTING_OUTPUT_HOST ??= "192.168.10.3" REMOTING_OUTPUT_PORT ??= "5005" -# Default app IDs for KVM guests -GUEST_VM1_IMAGE ?= "agl-ivi-demo-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-flutter" - do_configure:append() { # Standalone cluster support version sed -e "s#host=.*#host=${REMOTING_OUTPUT_HOST}#" \ -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \ ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output.cfg - - # KVM guest cluster version - sed -e "s#host=.*#host=172.16.10.3#" \ - -e "s#port=.*#port=${REMOTING_OUTPUT_PORT}#" \ - ${WORKDIR}/remote-output.cfg.in > ${WORKDIR}/remote-output-kvm.cfg } do_compile:append() { - # Create regular and KVM remoting enabled versions of the default - # portrait and landscape demo IVI configurations + # Create remoting enabled versions of the default portrait + # and landscape demo IVI configurations for c in weston.ini.default weston.ini.landscape; do cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting echo >> ${WORKDIR}/${c}-remoting cat ${WORKDIR}/remote-output.cfg >> ${WORKDIR}/${c}-remoting - - cp ${WORKDIR}/$c ${WORKDIR}/${c}-remoting-kvm - echo >> ${WORKDIR}/${c}-remoting-kvm - cat ${WORKDIR}/remote-output-kvm.cfg >> ${WORKDIR}/${c}-remoting-kvm done - - # Create a canned configuration for the a KVM host, filling in - # the guest VM application ids to pin them to specific outputs. - rm -f ${WORKDIR}/weston.ini.kvm - sed -e "s/@GUEST_VM1_ID@/${GUEST_VM1_IMAGE}/g" \ - -e "s/@GUEST_VM2_ID@/${GUEST_VM2_IMAGE}/g" \ - ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm } do_install:append() { install -m 0644 ${WORKDIR}/weston.ini.default-remoting ${D}${weston_ini_dir}/ - install -m 0644 ${WORKDIR}/weston.ini.default-remoting-kvm ${D}${weston_ini_dir}/ install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting ${D}${weston_ini_dir}/ - install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting-kvm ${D}${weston_ini_dir}/ - install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/ } # remoting @@ -65,15 +39,6 @@ ALTERNATIVE:${PN}-remoting = "weston.ini" ALTERNATIVE_TARGET_${PN}-remoting = "${weston_ini_dir}/weston.ini.default-remoting" ALTERNATIVE_PRIORITY_${PN}-remoting = "30" -# remoting-kvm - -PACKAGE_BEFORE_PN += "${PN}-remoting-kvm" -FILES:${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" -RPROVIDES:${PN}-remoting-kvm = "weston-ini" -ALTERNATIVE:${PN}-remoting-kvm = "weston.ini" -ALTERNATIVE_TARGET_${PN}-remoting-kvm = "${weston_ini_dir}/weston.ini.default-remoting-kvm" -ALTERNATIVE_PRIORITY_${PN}-remoting-kvm = "35" - # landscape-remoting PACKAGE_BEFORE_PN += "${PN}-landscape-remoting" @@ -82,21 +47,3 @@ RPROVIDES:${PN}-landscape-remoting = "weston-ini" ALTERNATIVE:${PN}-landscape-remoting = "weston.ini" ALTERNATIVE_TARGET_${PN}-landscape-remoting = "${weston_ini_dir}/weston.ini.landscape-remoting" ALTERNATIVE_PRIORITY_${PN}-landscape-remoting = "31" - -# landscape-remoting-kvm - -PACKAGE_BEFORE_PN += "${PN}-landscape-remoting-kvm" -FILES:${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" -RPROVIDES:${PN}-landscape-remoting-kvm = "weston-ini" -ALTERNATIVE:${PN}-landscape-remoting-kvm = "weston.ini" -ALTERNATIVE_TARGET_${PN}-landscape-remoting-kvm = "${weston_ini_dir}/weston.ini.landscape-remoting-kvm" -ALTERNATIVE_PRIORITY_${PN}-landscape-remoting-kvm = "36" - -# kvm - -PACKAGE_BEFORE_PN += "${PN}-kvm" -FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" -RPROVIDES:${PN}-kvm = "weston-ini" -ALTERNATIVE:${PN}-kvm = "weston.ini" -ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" -ALTERNATIVE_PRIORITY_${PN}-kvm = "40" diff --git a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb index 5532c3e52..351600751 100644 --- a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb +++ b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb @@ -11,10 +11,9 @@ IMAGE_INSTALL:remove = "weston-ini-conf-landscape" # Cluster application configuration needs to be replaced for # the full demo to handle different databroker configuration. -IMAGE_INSTALL:remove = "flutter-cluster-dashboard-conf" +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-demo" IMAGE_INSTALL += " \ psplash-inverted-config \ weston-ini-conf-landscape-inverted \ - flutter-cluster-dashboard-conf-demo \ " diff --git a/recipes-platform/images/agl-cluster-demo-flutter.bb b/recipes-platform/images/agl-cluster-demo-flutter.bb index b2581f87e..dfa256209 100644 --- a/recipes-platform/images/agl-cluster-demo-flutter.bb +++ b/recipes-platform/images/agl-cluster-demo-flutter.bb @@ -23,10 +23,12 @@ IMAGE_INSTALL += "\ " # Flutter +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf" + IMAGE_INSTALL += "\ flutter-auto \ flutter-cluster-dashboard \ - flutter-cluster-dashboard-conf \ + ${FLUTTER_CLUSTER_DASHBOARD_CONF} \ cluster-demo-config-flutter \ " diff --git a/recipes-platform/images/agl-ivi-demo-features.inc b/recipes-platform/images/agl-ivi-demo-features.inc index ecf3cd98b..a63e2dfe0 100644 --- a/recipes-platform/images/agl-ivi-demo-features.inc +++ b/recipes-platform/images/agl-ivi-demo-features.inc @@ -1,13 +1,15 @@ require agl-demo-features.inc +TBTNAVI_CONF = "tbtnavi-conf" + FEATURE_PACKAGES_agl-demo-cluster-support = " \ tbtnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "tbtnavi-conf-kvm-demo", "tbtnavi-conf", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-databroker-agl-demo-cluster", d)} \ + ${TBTNAVI_CONF} \ + kuksa-databroker-agl-demo-cluster \ " IMAGE_FEATURES += " \ + kuksa-val-databroker \ kuksa-val-databroker-client \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-val-databroker", d)} \ " diff --git a/recipes-platform/images/agl-ivi-demo-flutter.bb b/recipes-platform/images/agl-ivi-demo-flutter.bb index 75fd57c60..5753d58af 100644 --- a/recipes-platform/images/agl-ivi-demo-flutter.bb +++ b/recipes-platform/images/agl-ivi-demo-flutter.bb @@ -2,10 +2,13 @@ require agl-ivi-image-flutter.bb SUMMARY = "AGL IVI demo Flutter image" +FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf" +ONDEMANDNAVI_CONF = "ondemandnavi-conf" + AGL_APPS_INSTALL += " \ flutter-ics-homescreen \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "flutter-ics-homescreen-conf-kvm-demo", "flutter-ics-homescreen-conf", d)} \ + ${FLUTTER_ICS_HOMESCREEN_CONF} \ camera-gstreamer \ ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ + ${ONDEMANDNAVI_CONF} \ " diff --git a/recipes-platform/images/agl-ivi-demo-qt.bb b/recipes-platform/images/agl-ivi-demo-qt.bb index 79640791b..8fe988d06 100644 --- a/recipes-platform/images/agl-ivi-demo-qt.bb +++ b/recipes-platform/images/agl-ivi-demo-qt.bb @@ -2,11 +2,13 @@ require agl-ivi-image.bb SUMMARY = "AGL IVI demo Qt image" +ONDEMANDNAVI_CONF = "ondemandnavi-conf" + AGL_APPS_INSTALL += " \ dashboard \ hvac \ ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ + ${ONDEMANDNAVI_CONF} \ settings \ mediaplayer \ messaging \ diff --git a/recipes-platform/images/agl-ivi-image.bb b/recipes-platform/images/agl-ivi-image.bb index 12122cafb..3783db939 100644 --- a/recipes-platform/images/agl-ivi-image.bb +++ b/recipes-platform/images/agl-ivi-image.bb @@ -16,17 +16,22 @@ AGL_DEVEL_INSTALL += "\ AGL_APPS_INSTALL = "" +PLATFORM_SERVICES_INSTALL = " \ + packagegroup-agl-ivi-multimedia-platform \ + packagegroup-agl-ivi-services-platform \ +" + IMAGE_INSTALL += " \ packagegroup-agl-ivi-connectivity \ packagegroup-agl-ivi-graphics \ - packagegroup-agl-ivi-multimedia \ + packagegroup-agl-ivi-multimedia-client \ packagegroup-agl-ivi-multimedia-hardware \ packagegroup-agl-ivi-navigation \ packagegroup-agl-ivi-identity \ packagegroup-agl-ivi-services-applaunchd \ + ${PLATFORM_SERVICES_INSTALL} \ iproute2 \ ${AGL_APPS_INSTALL} \ ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "${AGL_DEVEL_INSTALL}" , "", d)} \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-audio", "", "packagegroup-agl-ivi-services-platform", d)} \ " diff --git a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb index 78c96faf8..be2ac44f5 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb @@ -6,7 +6,9 @@ inherit packagegroup PACKAGES = "\ packagegroup-agl-ivi-multimedia \ - " + packagegroup-agl-ivi-multimedia-client \ + packagegroup-agl-ivi-multimedia-platform \ +" ALLOW_EMPTY:${PN} = "1" @@ -15,11 +17,19 @@ PIPEWIRE_PACKAGES = " \ ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'packagegroup-pipewire-tools alsa-utils', '', d)} \ wireplumber-config-agl \ wireplumber-policy-config-agl \ - " +" -RDEPENDS:${PN} += "\ +RDEPENDS:${PN}-platform += " \ + mpd \ +" + +RDEPENDS:${PN}-client += "\ ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', '${PIPEWIRE_PACKAGES}', '', d)} \ gstreamer1.0-plugins-base-meta \ gstreamer1.0-plugins-good-meta \ - ${@bb.utils.contains('AGL_FEATURES', 'agl-kvm-host-audio', '', 'mpd', d)} \ - " +" + +RDEPENDS:${PN} += "\ + packagegroup-agl-ivi-multimedia-client \ + packagegroup-agl-ivi-multimedia-platform \ +" \ No newline at end of file diff --git a/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb b/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb index c3a53d502..94cee97a4 100644 --- a/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb +++ b/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb @@ -18,6 +18,7 @@ RDEPENDS:${PN}-platform += " \ agl-service-hvac \ agl-service-audiomixer \ agl-service-radio \ + mpd \ " RDEPENDS:${PN} += " \ diff --git a/templates/feature/agl-kvm-host-audio/50_local.conf.inc b/templates/feature/agl-kvm-host-audio/50_local.conf.inc deleted file mode 100644 index 7bd20e391..000000000 --- a/templates/feature/agl-kvm-host-audio/50_local.conf.inc +++ /dev/null @@ -1 +0,0 @@ -AGL_FEATURES += "agl-kvm-host-audio" diff --git a/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md b/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md deleted file mode 100644 index 93a4b9ade..000000000 --- a/templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Feature agl-kvm-host-audio -authors: Scott Murray ---- - -### Feature agl-kvm-host-audio - -* Enables support for running audio services on host in KVM+QEMU demo images - -### Dependent features pulled by agl-kvm-host-audio - -The following features are pulled: - -* agl-kvm agl-kvm-host-kuksa - -Note that enabling this feature results in a configuration where building images -other than agl-kvm-demo-platform will likely not give the desired results. diff --git a/templates/feature/agl-kvm-host-audio/included.dep b/templates/feature/agl-kvm-host-audio/included.dep deleted file mode 100644 index f1f0a2f99..000000000 --- a/templates/feature/agl-kvm-host-audio/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-kvm agl-kvm-host-kuksa diff --git a/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc b/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc deleted file mode 100644 index 6259e41f2..000000000 --- a/templates/feature/agl-kvm-host-kuksa/50_local.conf.inc +++ /dev/null @@ -1 +0,0 @@ -AGL_FEATURES += "agl-kvm-host-kuksa" diff --git a/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md b/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md deleted file mode 100644 index 1b607aa3c..000000000 --- a/templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -description: Feature agl-kvm-host-kuksa -authors: Scott Murray ---- - -### Feature agl-kvm-host-kuksa - -* Enables support for running KUKSA.val databroker on host in KVM+QEMU demo images - -### Dependent features pulled by agl-kvm-host-kuksa - -The following features are pulled: - -* agl-kvm - -Note that enabling this feature results in a configuration where building images -other than agl-kvm-demo-platform will likely not give the desired results. diff --git a/templates/feature/agl-kvm-host-kuksa/included.dep b/templates/feature/agl-kvm-host-kuksa/included.dep deleted file mode 100644 index b2b1014cf..000000000 --- a/templates/feature/agl-kvm-host-kuksa/included.dep +++ /dev/null @@ -1 +0,0 @@ -agl-kvm diff --git a/templates/feature/agl-kvm/50_bblayers.conf.inc b/templates/feature/agl-kvm/50_bblayers.conf.inc index e5e39118a..162f458be 100644 --- a/templates/feature/agl-kvm/50_bblayers.conf.inc +++ b/templates/feature/agl-kvm/50_bblayers.conf.inc @@ -2,3 +2,7 @@ AGL_META_PYTHON = "${METADIR}/external/meta-openembedded/meta-python" AGL_META_NETWORKING = "${METADIR}/external/meta-openembedded/meta-networking" AGL_META_FILESYSTEMS = "${METADIR}/external/meta-openembedded/meta-filesystems" AGL_META_VIRTUALIZATION = "${METADIR}/external/meta-virtualization" + +BBLAYERS =+ " \ + ${METADIR}/meta-agl-demo/meta-agl-kvm-demo \ +" -- 2.16.6 From b26515dcf2afc510cc59782f99965f10b96be433 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 16 May 2024 18:24:25 -0400 Subject: [PATCH 09/12] Add gateway demo Changes: - Add recipe for AGL VSS to MQTT proxy daemon - Update agl-vcar.dbc CAN database definition to add signals useful for demoing the proxy (per V2C EG discussion). - Add a patch to kuksa-dbc-feeder to allow sensor signal updates to generate CAN messages in output mode. - Add VSS vspec variants to define the desired CAN input and output support for the various kuksa-dbc-feeder instances in the default and full gateway demos. - Add configurations for kuksa-dbc-feeder for the running the default gateway demo with CAN output from a demo control panel instance on a single CAN interface, as well as a fuller setup with a second kuksa-dbc-feeder running against a second CAN interface on the gateway to handle the demo steering wheel and HVAC support. - Add gateway demo specific configuration files for various KUKSA.val databroker clients to override the databroker location. - Add agl-gateway-demo and agl-gateway-demo-preconfigured images for the default and full demos. - Add *-preconfigured-gateway image flavors for the Flutter IVI, IC, and KVM demo images that support running with the databroker on the gateway. NOTES: - The *-preconfigured-gateway images assume the gateway has an IP address of 192.168.10.4. - Required changes to the agl-demo-control-panel application and the addition of a agl-ivi-demo-control-panel-preconfigured-gateway image will come in a subsequent change. Bug-AGL: SPEC-5107, SPEC-5138 Change-Id: I9797aa72737af7af3d791a5151198f80b6d90e0d Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29921 ci-image-boot-test: Jenkins Job builder account ci-image-build: Jenkins Job builder account Tested-by: Jenkins Job builder account --- ...r-demo-flutter-guest-preconfigured-gateway.conf | 6 + ...i-demo-flutter-guest-preconfigured-gateway.conf | 13 + ...ter-demo-flutter-guest-preconfigured-gateway.bb | 3 + ...ivi-demo-flutter-guest-preconfigured-gateway.bb | 3 + ...ter-demo-flutter-guest-preconfigured-gateway.bb | 5 + ...ivi-demo-flutter-guest-preconfigured-gateway.bb | 7 + .../agl-kvm-demo-flutter-preconfigured-gateway.bb | 18 + .../images/agl-kvm-demo-flutter-preconfigured.bb | 8 +- .../agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json | 10 + .../agl-vss-proxy/agl-vss-proxy.token | 1 + .../agl-vss-proxy/agl-vss-proxy_git.bb | 47 +++ .../kuksa-dbc-feeder-conf-gw-control-panel.bb | 25 ++ .../kuksa-dbc-feeder.gw-control-panel | 4 + .../kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb | 32 ++ .../config.ini.gw-hardware | 30 ++ .../kuksa-dbc-feeder-can1.service | 12 + .../kuksa-dbc-feeder.gw-hardware | 3 + .../0004-Enable-val2dbc-for-sensor-values.patch | 142 +++++++ .../kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc | 38 ++ .../kuksa-dbc-feeder/dbc_default_values.json | 40 ++ .../kuksa-dbc-feeder/kuksa-dbc-feeder.default | 3 + .../kuksa-dbc-feeder/kuksa-dbc-feeder.service | 3 +- .../kuksa-val/kuksa-dbc-feeder_git.bb | 11 +- .../vss/vss-agl/agl_vss_overlay.vspec | 209 ++++++++-- .../vss-agl/agl_vss_overlay.vspec.control-panel | 446 ++++++++++++++++++++ .../vss-agl/agl_vss_overlay.vspec.gw-control-panel | 447 +++++++++++++++++++++ .../vss/vss-agl/agl_vss_overlay.vspec.gw-hardware | 341 ++++++++++++++++ recipes-connectivity/vss/vss-agl_4.0.bb | 41 +- ...er.conf => agl-service-audiomixer.conf.default} | 0 .../agl-service-audiomixer.conf.gateway-demo | 4 + .../agl-service-audiomixer_git.bb | 27 +- ...ice-hvac.conf => agl-service-hvac.conf.default} | 0 .../agl-service-hvac.conf.gateway-demo | 4 + .../agl-service-hvac/agl-service-hvac_git.bb | 28 +- .../files/cluster-dashboard.yaml.gateway-demo | 4 + .../flutter-cluster-dashboard_git.bb | 33 +- .../files/ics-homescreen.yaml.gateway-demo | 6 + .../files/ics-homescreen.yaml.kvm-gateway-demo | 10 + .../flutter-ics-homescreen_git.bb | 39 +- .../ondemandnavi/navigation.conf.gateway-demo | 4 + recipes-demo/navigation/ondemandnavi_git.bb | 14 +- .../navigation/tbtnavi/tbtnavi.conf.gateway-demo | 4 + recipes-demo/navigation/tbtnavi_git.bb | 24 +- ...l-cluster-demo-flutter-preconfigured-gateway.bb | 8 + .../images/agl-gateway-demo-preconfigured.bb | 10 + recipes-platform/images/agl-gateway-demo.bb | 24 ++ .../agl-ivi-demo-flutter-preconfigured-gateway.bb | 14 + 47 files changed, 2130 insertions(+), 75 deletions(-) create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb create mode 100644 meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured-gateway.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured-gateway.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured-gateway.bb create mode 100644 meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured-gateway.bb create mode 100644 recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json create mode 100644 recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.token create mode 100644 recipes-connectivity/agl-vss-proxy/agl-vss-proxy_git.bb create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel.bb create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel/kuksa-dbc-feeder.gw-control-panel create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/config.ini.gw-hardware create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder-can1.service create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder.gw-hardware create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0004-Enable-val2dbc-for-sensor-values.patch create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder/dbc_default_values.json create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.default create mode 100644 recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.control-panel create mode 100644 recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-control-panel create mode 100644 recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-hardware rename recipes-demo/agl-service-audiomixer/agl-service-audiomixer/{agl-service-audiomixer.conf => agl-service-audiomixer.conf.default} (100%) create mode 100644 recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo rename recipes-demo/agl-service-hvac/agl-service-hvac/{agl-service-hvac.conf => agl-service-hvac.conf.default} (100%) create mode 100644 recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo create mode 100644 recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.gateway-demo create mode 100644 recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.gateway-demo create mode 100644 recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-gateway-demo create mode 100644 recipes-demo/navigation/ondemandnavi/navigation.conf.gateway-demo create mode 100644 recipes-demo/navigation/tbtnavi/tbtnavi.conf.gateway-demo create mode 100644 recipes-platform/images/agl-cluster-demo-flutter-preconfigured-gateway.bb create mode 100644 recipes-platform/images/agl-gateway-demo-preconfigured.bb create mode 100644 recipes-platform/images/agl-gateway-demo.bb create mode 100644 recipes-platform/images/agl-ivi-demo-flutter-preconfigured-gateway.bb diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf new file mode 100644 index 000000000..37003abde --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf @@ -0,0 +1,6 @@ +QEMU_TASKSET_CPUS="4-7" +QEMU_SMP_OPT="-smp 2" +QEMU_MEM_OPT="-m 1G" +QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:03,netdev=net0" +QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-cluster-demo" diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf new file mode 100644 index 000000000..c2d420eb6 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf @@ -0,0 +1,13 @@ +QEMU_TASKSET_CPUS="0-3" +QEMU_SMP_OPT="-smp 4" +QEMU_MEM_OPT="-m 4G" +# With touchscreen plugged into the bottom connector of the 2x USB 2.0 +# on the reference hardware +QEMU_INPUT_OPT="-device qemu-xhci -usb -device usb-host,hostbus=5,hostport=1" +# Fallback for touchscreen or other pointing device plugged in elsewhere +#QEMU_INPUT_OPT="-device virtio-tablet-device" +QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl" +QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0" +QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0" +QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080" +QEMU_XDG_APP_ID="agl-ivi-demo" diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb new file mode 100644 index 000000000..45568faf1 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-cluster-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured-gateway" diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured-gateway.bb new file mode 100644 index 000000000..a8c8fa754 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured-gateway.bb @@ -0,0 +1,3 @@ +require qemu-config-agl-ivi-demo-flutter-guest.bb + +QEMU_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured-gateway" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured-gateway.bb new file mode 100644 index 000000000..2377d87d5 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured-gateway.bb @@ -0,0 +1,5 @@ +require agl-cluster-demo-flutter-guest-preconfigured.bb + +SUMMARY = "AGL KVM + gateway demo preconfigured guest cluster Flutter image" + +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-gateway-demo" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured-gateway.bb new file mode 100644 index 000000000..2e9b2ccb8 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured-gateway.bb @@ -0,0 +1,7 @@ +require agl-ivi-demo-flutter-guest-preconfigured.bb + +SUMMARY = "AGL KVM + gateway demo preconfigured guest IVI Flutter image" + +FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf-kvm-gateway-demo" +ONDEMANDNAVI_CONF = "ondemandnavi-conf-gateway-demo" +TBTNAVI_CONF = "tbtnavi-conf-gateway-demo" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured-gateway.bb new file mode 100644 index 000000000..b98f52eef --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured-gateway.bb @@ -0,0 +1,18 @@ +require agl-kvm-demo-flutter-preconfigured.bb + +SUMMARY = "AGL KVM + gateway preconfigured Flutter demo image" + +# We only want KUKSA.val client support, not the databroker (since +# that will be running on the gateway) +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +# Not needed if we're not running the databroker +IMAGE_INSTALL:remove = "kuksa-databroker-agl-demo-cluster" + +IMAGE_INSTALL += "\ + agl-service-hvac-conf-gateway-demo \ + agl-service-audiomixer-conf-gateway-demo \ +" + +GUEST_VM1_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured-gateway" +GUEST_VM2_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured-gateway" diff --git a/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb index 9b02c68ce..ac392cbc5 100644 --- a/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb @@ -1,11 +1,9 @@ -LICENSE = "MIT" - require agl-kvm-demo.bb -SUMMARY = "AGL KVM+QEMU preconfigured Flutter demo image" +SUMMARY = "AGL KVM preconfigured Flutter demo image" -# If building with "agl-kvm-host-kuksa", the databroker and likely -# some clients run on the host +# The databroker runs on the host to simplify things when running +# clients on the host instead of just in the guests. IMAGE_FEATURES += " \ kuksa-val-databroker \ kuksa-val-databroker-client \ diff --git a/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json new file mode 100644 index 000000000..fe04b0379 --- /dev/null +++ b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json @@ -0,0 +1,10 @@ +{ + "sub": "local dev", + "iss": "createToken.py", + "aud": [ + "kuksa.val" + ], + "iat": 1516239022, + "exp": 1767225599, + "scope": "read" +} \ No newline at end of file diff --git a/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.token b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.token new file mode 100644 index 000000000..10fafb537 --- /dev/null +++ b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.token @@ -0,0 +1 @@ +eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJsb2NhbCBkZXYiLCJpc3MiOiJjcmVhdGVUb2tlbi5weSIsImF1ZCI6WyJrdWtzYS52YWwiXSwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3NjcyMjU1OTksInNjb3BlIjoicmVhZCJ9.P6tJPRSJWB51UOFDFs8qQ-lGqb1NoWgCekHUKyMiYcs8sR3FGVKSRjSkcqv1tXOlILvqhUwyuTKui25_kFKkTPv47GI0xAqcXtaTmDwHAWZHFC6HWGWGXohu7XvURrim5kMRVHy_VGlzasGgVap0JFk3wmaY-nyFYL_PLDjvGjIQuOwFiUtKK1PfiKviZKyc5EzPUEAoHxFL_BSOsTdDDcaydFe9rSKJzpYrj7qXY0hMJCje2BUGlSUIttR95aSjOZflSxiGystWHME8fKMmDERAx749Jpt37M3taCxBsUzER5olPz65MGzFSikfC-jH_KGmJ4zNYS65_OM1a-CPfW7Ts__pyAXxFULNMHRMIfh8Wiig4UcooMy_ZJO_DN2rq95XdaBbzRua5mxvO2wM6iu5kv4lhNxhjVNGuWFRLLJ_icBUZlvAuC3eqp66B-Y3jJNI0cSnIvsVX8YFVS3ebW8tf40OdeVou8fWZPcQsFAAafBhIxNOW8FbLZ9sRvQ-FGwZy-GyF52IJ5ZKeGfAkeEh9ZLIcyJ2YlGp4q0EOKIdwIBsWfCFtZbAvi2ornO3XvJm94NBqprpvQYN_IB7yyRxDduLjNKqqcFqnrlWYI-ZhvghWH2rEblplgHZdyVD1G9Mbv0_zdNTKFs6J7IP96aV6-4hBOt3kROlS1G7ObA \ No newline at end of file diff --git a/recipes-connectivity/agl-vss-proxy/agl-vss-proxy_git.bb b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy_git.bb new file mode 100644 index 000000000..b16116e65 --- /dev/null +++ b/recipes-connectivity/agl-vss-proxy/agl-vss-proxy_git.bb @@ -0,0 +1,47 @@ +SUMMARY = "AGL VSS Proxy" +DESCRIPTION = "AGL VSS Proxy" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-vss-proxy" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984" + +DEPENDS = " \ + glib-2.0 \ + yaml-cpp \ + protobuf-native \ + grpc-native \ + protobuf \ + grpc \ + kuksa-databroker \ + mosquitto \ +" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/agl-vss-proxy;protocol=https;branch=${AGL_BRANCH} \ + file://agl-vss-proxy.token \ +" +SRCREV = "e437300d0b5c20114ea1843dbf00815304af3f27" + +PV = "1.0+git${SRCPV}" +S = "${WORKDIR}/git" + +inherit meson pkgconfig systemd + +EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}" + +SYSTEMD_SERVICE:${PN} = "agl-vss-proxy.service" + +do_install:append() { + # Currently using default global client and CA certificates + # for KUKSA.val SSL, installing app specific ones would go here. + + # VIS authorization token file for KUKSA.val should ideally not + # be readable by other users, but currently that's not doable + # until a packaging/sandboxing/MAC scheme is (re)implemented or + # something like OAuth is plumbed in as an alternative. + install -d ${D}${sysconfdir}/agl-vss-proxy + install -m 0644 ${WORKDIR}/agl-vss-proxy.token ${D}${sysconfdir}/agl-vss-proxy/ +} + +FILES:${PN} += "${systemd_system_unitdir}" + +RDEPENDS:${PN} += "kuksa-databroker kuksa-databroker-agl" diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel.bb new file mode 100644 index 000000000..4afcfaf10 --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel.bb @@ -0,0 +1,25 @@ +SUMMARY = "KUKSA.val DBC feeder configuration for gateway demo" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://kuksa-dbc-feeder.gw-control-panel" + +S = "${WORKDIR}" + +inherit update-alternatives + +do_compile[noexec] = "1" + +do_install() { + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/kuksa-dbc-feeder.gw-control-panel ${D}${sysconfdir}/default/ +} + +ALTERNATIVE_LINK_NAME[kuksa-dbc-feeder.env] = "${sysconfdir}/default/kuksa-dbc-feeder" + +RPROVIDES:${PN} = "kuksa-dbc-feeder.env" +ALTERNATIVE:${PN} = "kuksa-dbc-feeder.env" +ALTERNATIVE_TARGET_${PN} = "${sysconfdir}/default/kuksa-dbc-feeder.gw-control-panel" + +RDEPENDS:${PN} += "kuksa-dbc-feeder" diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel/kuksa-dbc-feeder.gw-control-panel b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel/kuksa-dbc-feeder.gw-control-panel new file mode 100644 index 000000000..d6d2e6073 --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel/kuksa-dbc-feeder.gw-control-panel @@ -0,0 +1,4 @@ +# Leave DBC output disabled until cruise support is added to the +# control panel simulator +EXTRA_ARGS="--no-val2dbc --dbc2val --dbc-default /etc/kuksa-dbc-feeder/dbc_default_values.json" +#LOG_LEVEL=debug diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb new file mode 100644 index 000000000..513a3f6ef --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb @@ -0,0 +1,32 @@ +SUMMARY = "KUKSA.val DBC feeder configuration for gateway demo (secondary CAN interface)" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://kuksa-dbc-feeder.gw-hardware \ + file://config.ini.gw-hardware \ + file://kuksa-dbc-feeder-can1.service \ +" + +S = "${WORKDIR}" + +inherit systemd update-alternatives + +SYSTEMD_SERVICE:${PN} = "kuksa-dbc-feeder-can1.service" + +do_compile[noexec] = "1" + +do_install() { + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/kuksa-dbc-feeder.gw-hardware ${D}${sysconfdir}/default/ + install -d ${D}${sysconfdir}/kuksa-dbc-feeder + install -m 0644 ${WORKDIR}/config.ini.gw-hardware ${D}${sysconfdir}/kuksa-dbc-feeder/ + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/kuksa-dbc-feeder-can1.service ${D}${systemd_system_unitdir} + fi +} + +FILES:${PN} += "${systemd_system_unitdir}" + +RDEPENDS:${PN} += "kuksa-dbc-feeder vss-agl-gw-hardware" diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/config.ini.gw-hardware b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/config.ini.gw-hardware new file mode 100644 index 000000000..ee3541a5f --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/config.ini.gw-hardware @@ -0,0 +1,30 @@ +[general] +# server type: +# switch between kuksa_databroker and kuksa_val_server +server_type = kuksa_databroker +# VSS mapping file +mapping = /usr/share/vss/vss_rel_4.0-agl-gw-hardware.json + +# IP address for server (KUKSA.val Server or Databroker) +ip = localhost + +# Port for server (KUKSA.val Server or Databroker) +port = 55555 + +# Shall TLS be used (default False for Databroker, True for KUKSA.val Server) +tls = True + +# TLS-related settings +# Path to root CA, needed if using TLS +root_ca_path=/etc/kuksa-val/CA.pem + +# Token file for authorization. +token = /etc/kuksa-dbc-feeder/dbc_feeder.token + +[can] +# CAN port +port = can1 +# Enable SAE-J1939 Mode. False: ignore +j1939 = False +# DBC file used to parse CAN messages +dbcfile = /etc/kuksa-dbc-feeder/agl-vcar.dbc diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder-can1.service b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder-can1.service new file mode 100644 index 000000000..6f123dd57 --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder-can1.service @@ -0,0 +1,12 @@ +[Unit] +Description=Eclipse KUKSA.val DBC feeder (can1) +Requires=kuksa-databroker.service can-dev-helper.service +After=kuksa-databroker.service can-dev-helper.service + +[Service] +EnvironmentFile=-/etc/default/kuksa-dbc-feeder.gw-hardware +ExecStart=/usr/bin/dbcfeeder.py $EXTRA_ARGS +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder.gw-hardware b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder.gw-hardware new file mode 100644 index 000000000..562a56b8b --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder.gw-hardware @@ -0,0 +1,3 @@ +# DBC input for steering wheel, output for HVAC +EXTRA_ARGS="--val2dbc --dbc2val --dbc-default /etc/kuksa-dbc-feeder/dbc_default_values.json --config /etc/kuksa-dbc-feeder/config.ini.gw-hardware" +#LOG_LEVEL=debug diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0004-Enable-val2dbc-for-sensor-values.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0004-Enable-val2dbc-for-sensor-values.patch new file mode 100644 index 000000000..7f22a90ad --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0004-Enable-val2dbc-for-sensor-values.patch @@ -0,0 +1,142 @@ +From d6f1aaa7f26aa52f4b219f60e704d5ab2954f082 Mon Sep 17 00:00:00 2001 +From: Scott Murray +Date: Wed, 3 Apr 2024 02:09:11 +0900 +Subject: [PATCH] Enable val2dbc for sensor values + +Rework to allow val2dbc mode to write out sensor values in +addition to actuator target values. + +Upstream-Status: pending + +Signed-off-by: Scott Murray +--- + dbc2val/dbcfeeder.py | 8 ++++++-- + .../dbcfeederlib/databrokerclientwrapper.py | 18 ++++++++++++------ + dbc2val/dbcfeederlib/dbc2vssmapper.py | 14 +++++++++----- + dbc2val/dbcfeederlib/serverclientwrapper.py | 2 +- + 4 files changed, 28 insertions(+), 14 deletions(-) + +diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py +index e7fd319..5e0df2f 100755 +--- a/dbc2val/dbcfeeder.py ++++ b/dbc2val/dbcfeeder.py +@@ -322,15 +322,19 @@ class Feeder: + log.debug("vss-Update callback!") + dbc_ids = set() + for update in updates: ++ value = None + if update.entry.value is not None: +- # This shall currently never happen as we do not subscribe to this + log.warning(f"Current value for {update.entry.path} is now: " + f"{update.entry.value.value} of type {type(update.entry.value.value)}") ++ value = update.entry.value.value + + if update.entry.actuator_target is not None: + log.debug(f"Target value for {update.entry.path} is now: {update.entry.actuator_target} " + f"of type {type(update.entry.actuator_target.value)}") +- new_dbc_ids = self._mapper.handle_update(update.entry.path, update.entry.actuator_target.value) ++ value = update.entry.actuator_target.value ++ ++ if value != None: ++ new_dbc_ids = self._mapper.handle_update(update.entry.path, value) + dbc_ids.update(new_dbc_ids) + + can_ids = set() +diff --git a/dbc2val/dbcfeederlib/databrokerclientwrapper.py b/dbc2val/dbcfeederlib/databrokerclientwrapper.py +index 35836e9..46ae330 100644 +--- a/dbc2val/dbcfeederlib/databrokerclientwrapper.py ++++ b/dbc2val/dbcfeederlib/databrokerclientwrapper.py +@@ -200,14 +200,20 @@ class DatabrokerClientWrapper(clientwrapper.ClientWrapper): + def supports_subscription(self) -> bool: + return True + +- async def subscribe(self, vss_names: List[str], callback): ++ async def subscribe(self, vss_entries: dict[str, str], callback): + """Creates a subscription and calls the callback when data received""" + entries = [] +- for name in vss_names: +- # Always subscribe to target +- subscribe_entry = SubscribeEntry(name, View.FIELDS, [Field.ACTUATOR_TARGET]) +- log.info(f"Subscribe entry: {subscribe_entry}") +- entries.append(subscribe_entry) ++ for name, signal_type in vss_entries.items(): ++ if signal_type == "actuator": ++ subscribe_entry = SubscribeEntry(name, View.FIELDS, [Field.ACTUATOR_TARGET]) ++ log.info(f"Subscribe entry: {subscribe_entry}") ++ entries.append(subscribe_entry) ++ if signal_type == "sensor": ++ subscribe_entry = SubscribeEntry(name, View.FIELDS, [Field.VALUE]) ++ log.info(f"Subscribe entry: {subscribe_entry}") ++ entries.append(subscribe_entry) ++ if not entries: ++ return + + # If there is a path VSSClient will request a secure connection + if self._tls and self._root_ca_path: +diff --git a/dbc2val/dbcfeederlib/dbc2vssmapper.py b/dbc2val/dbcfeederlib/dbc2vssmapper.py +index 5142a5e..8f04cdd 100644 +--- a/dbc2val/dbcfeederlib/dbc2vssmapper.py ++++ b/dbc2val/dbcfeederlib/dbc2vssmapper.py +@@ -61,12 +61,13 @@ class VSSMapping: + parser: Parser = Parser() + + def __init__(self, vss_name: str, dbc_name: str, transform: dict, interval_ms: int, +- on_change: bool, datatype: str, description: str): ++ on_change: bool, signal_type: str, datatype: str, description: str): + self.vss_name = vss_name + self.dbc_name = dbc_name + self.transform = transform + self.interval_ms = interval_ms + self.on_change = on_change ++ self.signal_type = signal_type + self.datatype = datatype + self.description = description + # For time comparison (interval_ms) we store last value used for comparison. Unit seconds. +@@ -282,7 +283,7 @@ class Mapper: + log.info(f"Using default interval 1000 ms for {expanded_name}") + interval = 1000 + mapping_entry = VSSMapping(expanded_name, dbc_name, transform, interval, on_change, +- node["datatype"], node["description"]) ++ node["type"], node["datatype"], node["description"]) + if dbc_name not in self.dbc2val_mapping: + self.dbc2val_mapping[dbc_name] = [] + self.dbc2val_mapping[dbc_name].append(mapping_entry) +@@ -306,7 +307,7 @@ class Mapper: + log.warning(f"interval_ms attribute ignored for {expanded_name}") + + mapping_entry = VSSMapping(expanded_name, dbc_name, transform, interval, on_change, +- node["datatype"], node["description"]) ++ node["type"], node["datatype"], node["description"]) + if dbc_name not in self.val2dbc_mapping: + self.val2dbc_mapping[expanded_name] = [] + self.val2dbc_mapping[expanded_name].append(mapping_entry) +@@ -380,9 +381,12 @@ class Mapper: + """Return a set of all dbc names used for reception""" + return self.dbc2val_mapping.keys() + +- def get_val2dbc_entries(self) -> KeysView: ++ def get_val2dbc_entries(self) -> Dict[str, str]: + """Return a set of all vss names used for reception""" +- return self.val2dbc_mapping.keys() ++ entries: Dict[str, str] = {} ++ for name, mappings in self.val2dbc_mapping.items(): ++ entries[name] = mappings[0].signal_type ++ return entries + + def get_vss_names(self) -> Set[str]: + """Get all VSS names used in mappings, both vss2dbc and dbc2vss""" +diff --git a/dbc2val/dbcfeederlib/serverclientwrapper.py b/dbc2val/dbcfeederlib/serverclientwrapper.py +index 63bc12e..ca11daf 100644 +--- a/dbc2val/dbcfeederlib/serverclientwrapper.py ++++ b/dbc2val/dbcfeederlib/serverclientwrapper.py +@@ -125,6 +125,6 @@ class ServerClientWrapper(clientwrapper.ClientWrapper): + log.info("Feature not implemented") + return False + +- async def subscribe(self, vss_names: List[str], callback): ++ async def subscribe(self, vss_entries: dict[str, str], callback): + log.error("Feature not implemented") + return +-- +2.34.1 + diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc index 0d0121398..e638d1287 100644 --- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc @@ -10,6 +10,44 @@ BO_ 985 Vehicle_Status_2: 8 Vector_XXX SG_ PT_EngineSpeed : 23|16@0+ (0.25,0) [0|0] "" Vector_XXX SG_ PT_FuelLevelLow : 55|1@1+ (1,0) [0|1] "" Vector_XXX +BO_ 986 Vehicle_Status_3: 8 Vector_XXX + SG_ PT_HazardOn : 0|1@1+ (1,0) [0|1] "" Vector_XXX + SG_ PT_LeftTurnOn : 1|1@1+ (1,0) [0|1] "" Vector_XXX + SG_ PT_RightTurnOn : 2|1@1+ (1,0) [0|1] "" Vector_XXX + +BO_ 48 HVAC_Control_1: 8 Vector_XXX + SG_ PT_TempLeft : 7|8@0+ (0.4166666667,0) [0|100] "C" Vector_XXX + SG_ PT_TempRight : 15|8@0+ (0.4166666667,0) [0|100] "C" Vector_XXX + SG_ PT_FanSpeed : 39|8@0+ (0.392157,0) [0|100] "%" Vector_XXX + +BO_ 401 Engine: 8 Vector__XXX + SG_ ThrottlePosition : 63|8@0+ (0.392157,0) [0|100.000035] "%" Vector__XXX + +BO_ 381 ABS: 8 Vector__XXX + SG_ VehicleSpeed : 7|12@0+ (0.0625,0) [0|255.9375] "km / h" ECM_HS,BCM_HS + SG_ SteeringPosition : 23|12@0+ (0.0439453125,-90) [-90|89.9560546875] "deg" ECM_HS,BCM_HS + SG_ BrakePressure : 39|8@0+ (75,0) [0|19125] "kPa" ECM_HS,BCM_HS + +BO_ 532 Transmission: 8 Vector__XXX + SG_ Gear : 7|8@0+ (1,-1) [-1|127] "" ECM_HS,BCM_HS + +BO_ 533 Airbag: 8 Vector__XXX + SG_ CollisionIntensity : 7|12@0+ (24.4140625,0) [0|100000] "N" ECM_HS,BCM_HS + +BO_ 534 IMU1: 8 Vector__XXX + SG_ AccelerationX : 7|12@0+ (0.48828125,-1000) [-1000|1000] "m/s^2" ECM_HS,BCM_HS + SG_ AccelerationY : 23|12@0+ (0.48828125,-1000) [-1000|1000] "m/s^2" ECM_HS,BCM_HS + SG_ AccelerationZ : 39|12@0+ (0.48828125,-1000) [-1000|1000] "m/s^2" ECM_HS,BCM_HS + +BO_ 535 IMU2: 8 Vector__XXX + SG_ GyroscopeX : 7|12@0+ (0.48828125,-1000) [-1000|1000] "rad/s" ECM_HS,BCM_HS + SG_ GyroscopeY : 23|12@0+ (0.48828125,-1000) [-1000|1000] "rad/s" ECM_HS,BCM_HS + SG_ GyroscopeZ : 39|12@0+ (0.48828125,-1000) [-1000|1000] "rad/s" ECM_HS,BCM_HS + +BO_ 536 GNSS: 8 Vector__XXX + SG_ Latitude : 7|32@0+ (0.0000000419095158577,-90) [-90|90] "deg" ECM_HS,BCM_HS + SG_ Longitude : 39|32@0+ (0.00000008381903171539,-180) [-180|180] "deg" ECM_HS,BCM_HS + BO_ 33 Steering_Wheel: 8 Vector_XXX SG_ SW_Previous : 39|1@1+ (1,0) [0|1] "" Vector_XXX SG_ SW_VolumeUp : 38|1@1+ (1,0) [0|1] "" Vector_XXX diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/dbc_default_values.json b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/dbc_default_values.json new file mode 100644 index 000000000..0562569db --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/dbc_default_values.json @@ -0,0 +1,40 @@ +{ + "PT_VehicleAvgSpeed" : 0, + "PT_FuelLevelPct" : 0, + "PT_EngineSpeed" : 0, + "PT_FuelLevelLow" : 0, + "PT_TempLeft" : 0, + "PT_TempRight" : 0, + "PT_FanSpeed" : 0, + "ThrottlePosition" : 0, + "VehicleSpeed" : 0, + "SteeringPosition" : 0, + "BrakePressure" : 0, + "Gear" : 0, + "AccelerationX" : 0, + "AccelerationY" : 0, + "AccelerationZ" : 0, + "GyroscopeX" : 0, + "GyroscopeY" : 0, + "GyroscopeZ" : 0, + "Latitude" : 0, + "Longitude" : 0, + "SW_Previous" : 0, + "SW_VolumeUp" : 0, + "SW_Mode" : 0, + "SW_VolumeDown" : 0, + "SW_Next" : 0, + "SW_Info" : 0, + "SW_VolumeMute" : 0, + "SW_Voice" : 0, + "SW_PhoneHangup" : 0, + "SW_PhoneCall" : 0, + "SW_CruiseEnable" : 0, + "SW_CruiseResume" : 0, + "SW_CruiseSet" : 0, + "SW_CruiseCancel" : 0, + "SW_CruiseLimit" : 0, + "SW_CruiseDistance" : 0, + "SW_Horn" : 0, + "SW_LaneDepartureWarning" : 0 +} diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.default b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.default new file mode 100644 index 000000000..5d787158d --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.default @@ -0,0 +1,3 @@ +# For output only mode: +#EXTRA_ARGS="--val2dbc --no-dbc2val --dbc-default /etc/kuksa-dbc-feeder/dbc_default_values.json" +#LOG_LEVEL=debug diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.service b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.service index a30018c6f..857f5c7d2 100644 --- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.service +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.service @@ -4,7 +4,8 @@ Requires=kuksa-databroker.service can-dev-helper.service After=kuksa-databroker.service can-dev-helper.service [Service] -ExecStart=/usr/bin/dbcfeeder.py +EnvironmentFile=-/etc/default/kuksa-dbc-feeder +ExecStart=/usr/bin/dbcfeeder.py $EXTRA_ARGS Restart=on-failure [Install] diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb index 809152bb0..281f10ac3 100644 --- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb @@ -13,16 +13,19 @@ SRC_URI = "git://github.com/eclipse/kuksa.val.feeders.git;protocol=https;branch= file://0001-dbc2val-add-installation-mechanism.patch \ file://0002-dbc2val-usability-improvements.patch \ file://0003-dbc2val-fix-token-file-configuration-option.patch \ + file://0004-Enable-val2dbc-for-sensor-values.patch \ file://config.ini \ file://dbc_feeder.token \ file://agl-vcar.dbc \ + file://dbc_default_values.json \ file://kuksa-dbc-feeder.service \ + file://kuksa-dbc-feeder.default \ " SRCREV = "5bb52eca8d79f7c05a024f69b1faab81dabacdcd" S = "${WORKDIR}/git" -inherit setuptools3 systemd +inherit setuptools3 systemd update-alternatives SETUPTOOLS_SETUP_PATH = "${S}/dbc2val" @@ -36,12 +39,18 @@ do_install:append() { # investigation. install -m 0600 ${WORKDIR}/dbc_feeder.token ${D}${sysconfdir}/kuksa-dbc-feeder/ install -m 0644 ${WORKDIR}/agl-vcar.dbc ${D}${sysconfdir}/kuksa-dbc-feeder/ + install -m 0644 ${WORKDIR}/dbc_default_values.json ${D}${sysconfdir}/kuksa-dbc-feeder/ + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/kuksa-dbc-feeder.default ${D}${sysconfdir}/default/ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/kuksa-dbc-feeder.service ${D}${systemd_system_unitdir} fi } +ALTERNATIVE_LINK_NAME[kuksa-dbc-feeder.env] = "${sysconfdir}/default/kuksa-dbc-feeder" + +ALTERNATIVE_TARGET_${PN} = "${sysconfdir}/default/kuksa-dbc-feeder.default" FILES:${PN} += "${systemd_system_unitdir}" RDEPENDS:${PN} += " \ diff --git a/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec index 6c0a08ae2..b8a01e362 100644 --- a/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec +++ b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec @@ -1,23 +1,184 @@ -# Define DBC mappings for vehicle and engine speeds +# DBC mappings for vehicle and engine speeds Vehicle.Speed: datatype: float type: sensor - dbc: + dbc2vss: signal: PT_VehicleAvgSpeed interval_ms: 100 + vss2dbc: + signal: PT_VehicleAvgSpeed Vehicle.Powertrain.CombustionEngine.Speed: datatype: float type: sensor - dbc: + dbc2vss: signal: PT_EngineSpeed interval_ms: 100 transform: math: "floor(x+0.5)" + vss2dbc: + signal: PT_EngineSpeed + +# DBC mappings for other signals for V2C demo + +Vehicle.Body.Lights.Hazard.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_HazardOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_LeftTurnOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_RightTurnOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.OBD.ThrottlePosition: + datatype: float + type: sensor + dbc2vss: + signal: ThrottlePosition + interval_ms: 100 + vss2dbc: + signal: ThrottlePosition + +Vehicle.Chassis.SteeringWheel.Angle: + datatype: int16 + type: sensor + dbc2vss: + signal: SteeringPosition + interval_ms: 100 + vss2dbc: + signal: SteeringPosition + +Vehicle.Chassis.Brake.PedalPosition: + datatype: uint8 + type: sensor + dbc2vss: + signal: BrakePressure + interval_ms: 100 + transform: + math: "floor(x / 19125 * 100 + 0.5)" + vss2dbc: + signal: BrakePressure + transform: + math: "x * 191.25" + +Vehicle.Powertrain.Transmission.SelectedGear: + datatype: int8 + type: sensor + dbc2vss: + signal: Gear + interval_ms: 100 + vss2dbc: + signal: Gear + +Vehicle.Acceleration.Lateral: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationX + interval_ms: 100 + vss2dbc: + signal: AccelerationX + +Vehicle.Acceleration.Longitudinal: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationY + interval_ms: 100 + vss2dbc: + signal: AccelerationY + +Vehicle.Acceleration.Vertical: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationZ + interval_ms: 100 + vss2dbc: + signal: AccelerationZ + +Vehicle.AngularVelocity.Pitch: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeX + interval_ms: 100 + vss2dbc: + signal: GyroscopeX + +Vehicle.AngularVelocity.Roll: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeY + interval_ms: 100 + vss2dbc: + signal: GyroscopeY + +Vehicle.AngularVelocity.Yaw: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeZ + interval_ms: 100 + vss2dbc: + signal: GyroscopeZ + +Vehicle.CurrentLocation.Latitude: + datatype: double + type: sensor + dbc2vss: + signal: Latitude + interval_ms: 100 + vss2dbc: + signal: Latitude + +Vehicle.CurrentLocation.Longitude: + datatype: double + type: sensor + dbc2vss: + signal: Longitude + interval_ms: 100 + vss2dbc: + signal: Longitude + +# +# AGL VSS additions +# -# Define extra navigation state signals +# Extra navigation state signals Vehicle.Cabin.Infotainment.Navigation.State: datatype: string @@ -32,7 +193,7 @@ Vehicle.Cabin.Infotainment.Navigation.ElapsedDistance: description: Navigation elapsed distance. -# Define audio control signals +# Extra audio control signals Vehicle.Cabin.Infotainment.Media.Audio: type: branch @@ -71,7 +232,7 @@ Vehicle.Cabin.Infotainment.Media.Audio.Treble: description: Audio high-frequency filter control. -# Define extra steering wheel switch signals, including DBC mappings +# Extra steering wheel switch signals, including DBC mappings Vehicle.Cabin.SteeringWheel: type: branch @@ -85,7 +246,7 @@ Vehicle.Cabin.SteeringWheel.Switches.VolumeUp: datatype: boolean type: sensor description: Steering wheel volume up switch engaged. - dbc: + dbc2vss: signal: SW_VolumeUp on_change: true transform: @@ -99,7 +260,7 @@ Vehicle.Cabin.SteeringWheel.Switches.VolumeDown: datatype: boolean type: sensor description: Steering wheel volume down switch engaged. - dbc: + dbc2vss: signal: SW_VolumeDown on_change: true transform: @@ -113,7 +274,7 @@ Vehicle.Cabin.SteeringWheel.Switches.VolumeMute: datatype: boolean type: sensor description: Steering wheel volume mute switch engaged. - dbc: + dbc2vss: signal: SW_VolumeMute on_change: true transform: @@ -127,7 +288,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Next: datatype: boolean type: sensor description: Steering wheel next switch engaged. - dbc: + dbc2vss: signal: SW_Next on_change: true transform: @@ -141,7 +302,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Previous: datatype: boolean type: sensor description: Steering wheel previous switch engaged. - dbc: + dbc2vss: signal: SW_Previous on_change: true transform: @@ -155,7 +316,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Mode: datatype: boolean type: sensor description: Steering wheel mode switch engaged. - dbc: + dbc2vss: signal: SW_Mode on_change: true transform: @@ -169,7 +330,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Info: datatype: boolean type: sensor description: Steering wheel info switch engaged. - dbc: + dbc2vss: signal: SW_Info on_change: true transform: @@ -183,7 +344,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable: datatype: boolean type: sensor description: Steering wheel cruise enable switch engaged. - dbc: + dbc2vss: signal: SW_CruiseEnable on_change: true transform: @@ -197,7 +358,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseSet: datatype: boolean type: sensor description: Steering wheel cruise set switch engaged. - dbc: + dbc2vss: signal: SW_CruiseSet on_change: true transform: @@ -211,7 +372,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseResume: datatype: boolean type: sensor description: Steering wheel cruise resume switch engaged. - dbc: + dbc2vss: signal: SW_CruiseResume on_change: true transform: @@ -225,7 +386,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel: datatype: boolean type: sensor description: Steering wheel cruise cancel switch engaged. - dbc: + dbc2vss: signal: SW_CruiseCancel on_change: true transform: @@ -239,7 +400,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit: datatype: boolean type: sensor description: Steering wheel cruise limit switch engaged. - dbc: + dbc2vss: signal: SW_CruiseLimit on_change: true transform: @@ -253,7 +414,7 @@ Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance: datatype: boolean type: sensor description: Steering wheel cruise distance switch engaged. - dbc: + dbc2vss: signal: SW_CruiseDistance on_change: true transform: @@ -267,7 +428,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Voice: datatype: boolean type: sensor description: Steering wheel voice switch engaged. - dbc: + dbc2vss: signal: SW_Voice on_change: true transform: @@ -281,7 +442,7 @@ Vehicle.Cabin.SteeringWheel.Switches.PhoneCall: datatype: boolean type: sensor description: Steering wheel phone call switch engaged. - dbc: + dbc2vss: signal: SW_PhoneCall on_change: true transform: @@ -295,7 +456,7 @@ Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup: datatype: boolean type: sensor description: Steering wheel phone hangup switch engaged. - dbc: + dbc2vss: signal: SW_PhoneHangup on_change: true transform: @@ -309,7 +470,7 @@ Vehicle.Cabin.SteeringWheel.Switches.Horn: datatype: boolean type: sensor description: Steering wheel horn switch engaged. - dbc: + dbc2vss: signal: SW_Horn on_change: true transform: @@ -323,7 +484,7 @@ Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning: datatype: boolean type: sensor description: Steering wheel lane departure warning switch engaged. - dbc: + dbc2vss: signal: SW_LaneDepartureWarning on_change: true transform: diff --git a/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.control-panel b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.control-panel new file mode 100644 index 000000000..b5e2b8a3d --- /dev/null +++ b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.control-panel @@ -0,0 +1,446 @@ +# DBC mappings for vehicle and engine speeds + +Vehicle.Speed: + datatype: float + type: sensor + vss2dbc: + signal: PT_VehicleAvgSpeed + +Vehicle.Powertrain.CombustionEngine.Speed: + datatype: float + type: sensor + vss2dbc: + signal: PT_EngineSpeed + +# DBC mappings for other signals for V2C demo + +Vehicle.Body.Lights.Hazard.IsSignaling: + datatype: boolean + type: actuator + vss2dbc: + signal: PT_HazardOn + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling: + datatype: boolean + type: actuator + vss2dbc: + signal: PT_LeftTurnOn + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling: + datatype: boolean + type: actuator + vss2dbc: + signal: PT_RightTurnOn + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.OBD.ThrottlePosition: + datatype: float + type: sensor + vss2dbc: + signal: ThrottlePosition + +Vehicle.Chassis.SteeringWheel.Angle: + datatype: int16 + type: sensor + vss2dbc: + signal: SteeringPosition + +Vehicle.Chassis.Brake.PedalPosition: + datatype: uint8 + type: sensor + vss2dbc: + signal: BrakePressure + transform: + math: "x * 191.25" + +Vehicle.Powertrain.Transmission.SelectedGear: + datatype: int8 + type: sensor + vss2dbc: + signal: Gear + +Vehicle.Acceleration.Lateral: + datatype: float + type: sensor + vss2dbc: + signal: AccelerationX + +Vehicle.Acceleration.Longitudinal: + datatype: float + type: sensor + vss2dbc: + signal: AccelerationY + +Vehicle.Acceleration.Vertical: + datatype: float + type: sensor + vss2dbc: + signal: AccelerationZ + +Vehicle.AngularVelocity.Pitch: + datatype: float + type: sensor + vss2dbc: + signal: GyroscopeX + +Vehicle.AngularVelocity.Roll: + datatype: float + type: sensor + vss2dbc: + signal: GyroscopeY + +Vehicle.AngularVelocity.Yaw: + datatype: float + type: sensor + vss2dbc: + signal: GyroscopeZ + +Vehicle.CurrentLocation.Latitude: + datatype: double + type: sensor + vss2dbc: + signal: Latitude + +Vehicle.CurrentLocation.Longitude: + datatype: double + type: sensor + vss2dbc: + signal: Longitude + + +# +# AGL VSS additions +# + +# Extra navigation state signals + +Vehicle.Cabin.Infotainment.Navigation.State: + datatype: string + type: sensor + allowed: [ 'UNKNOWN', 'ACTIVE', 'ARRIVED', 'STOPPED' ] + description: Navigation state. + +Vehicle.Cabin.Infotainment.Navigation.ElapsedDistance: + datatype: float + type: sensor + unit: km + description: Navigation elapsed distance. + + +# Extra audio control signals + +Vehicle.Cabin.Infotainment.Media.Audio: + type: branch + description: Media audio controls. + +Vehicle.Cabin.Infotainment.Media.Audio.Balance: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio left/right balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Fade: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio front/rear balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Bass: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio low-frequency filter control. + +Vehicle.Cabin.Infotainment.Media.Audio.Treble: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio high-frequency filter control. + + +# Extra steering wheel switch signals, including DBC mappings + +Vehicle.Cabin.SteeringWheel: + type: branch + description: AGL steering wheel demo data. + +Vehicle.Cabin.SteeringWheel.Switches: + type: branch + description: AGL steering wheel demo switch data. + +Vehicle.Cabin.SteeringWheel.Switches.VolumeUp: + datatype: boolean + type: sensor + description: Steering wheel volume up switch engaged. + dbc2vss: + signal: SW_VolumeUp + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.VolumeDown: + datatype: boolean + type: sensor + description: Steering wheel volume down switch engaged. + dbc2vss: + signal: SW_VolumeDown + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.VolumeMute: + datatype: boolean + type: sensor + description: Steering wheel volume mute switch engaged. + dbc2vss: + signal: SW_VolumeMute + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Next: + datatype: boolean + type: sensor + description: Steering wheel next switch engaged. + dbc2vss: + signal: SW_Next + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Previous: + datatype: boolean + type: sensor + description: Steering wheel previous switch engaged. + dbc2vss: + signal: SW_Previous + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Mode: + datatype: boolean + type: sensor + description: Steering wheel mode switch engaged. + dbc2vss: + signal: SW_Mode + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Info: + datatype: boolean + type: sensor + description: Steering wheel info switch engaged. + dbc2vss: + signal: SW_Info + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable: + datatype: boolean + type: sensor + description: Steering wheel cruise enable switch engaged. + dbc2vss: + signal: SW_CruiseEnable + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseSet: + datatype: boolean + type: sensor + description: Steering wheel cruise set switch engaged. + dbc2vss: + signal: SW_CruiseSet + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseResume: + datatype: boolean + type: sensor + description: Steering wheel cruise resume switch engaged. + dbc2vss: + signal: SW_CruiseResume + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel: + datatype: boolean + type: sensor + description: Steering wheel cruise cancel switch engaged. + dbc2vss: + signal: SW_CruiseCancel + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit: + datatype: boolean + type: sensor + description: Steering wheel cruise limit switch engaged. + dbc2vss: + signal: SW_CruiseLimit + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance: + datatype: boolean + type: sensor + description: Steering wheel cruise distance switch engaged. + dbc2vss: + signal: SW_CruiseDistance + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Voice: + datatype: boolean + type: sensor + description: Steering wheel voice switch engaged. + dbc2vss: + signal: SW_Voice + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.PhoneCall: + datatype: boolean + type: sensor + description: Steering wheel phone call switch engaged. + dbc2vss: + signal: SW_PhoneCall + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup: + datatype: boolean + type: sensor + description: Steering wheel phone hangup switch engaged. + dbc2vss: + signal: SW_PhoneHangup + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Horn: + datatype: boolean + type: sensor + description: Steering wheel horn switch engaged. + dbc2vss: + signal: SW_Horn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning: + datatype: boolean + type: sensor + description: Steering wheel lane departure warning switch engaged. + dbc2vss: + signal: SW_LaneDepartureWarning + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true diff --git a/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-control-panel b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-control-panel new file mode 100644 index 000000000..6b0a9a38a --- /dev/null +++ b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-control-panel @@ -0,0 +1,447 @@ +# DBC mappings for vehicle and engine speeds + +Vehicle.Speed: + datatype: float + type: sensor + dbc2vss: + signal: PT_VehicleAvgSpeed + interval_ms: 100 + +Vehicle.Powertrain.CombustionEngine.Speed: + datatype: float + type: sensor + dbc2vss: + signal: PT_EngineSpeed + interval_ms: 100 + transform: + math: "floor(x+0.5)" + +# DBC mappings for other signals for V2C demo + +Vehicle.Body.Lights.Hazard.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_HazardOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Body.Lights.DirectionIndicator.Left.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_LeftTurnOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Body.Lights.DirectionIndicator.Right.IsSignaling: + datatype: boolean + type: actuator + dbc2vss: + signal: PT_RightTurnOn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.OBD.ThrottlePosition: + datatype: float + type: sensor + dbc2vss: + signal: ThrottlePosition + interval_ms: 100 + +Vehicle.Chassis.SteeringWheel.Angle: + datatype: int16 + type: sensor + dbc2vss: + signal: SteeringPosition + interval_ms: 100 + +Vehicle.Chassis.Brake.PedalPosition: + datatype: uint8 + type: sensor + dbc2vss: + signal: BrakePressure + interval_ms: 100 + transform: + math: "floor(x / 19125 * 100 + 0.5)" + +Vehicle.Powertrain.Transmission.SelectedGear: + datatype: int8 + type: sensor + dbc2vss: + signal: Gear + interval_ms: 100 + +Vehicle.Acceleration.Lateral: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationX + interval_ms: 100 + +Vehicle.Acceleration.Longitudinal: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationY + interval_ms: 100 + +Vehicle.Acceleration.Vertical: + datatype: float + type: sensor + dbc2vss: + signal: AccelerationZ + interval_ms: 100 + +Vehicle.AngularVelocity.Pitch: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeX + interval_ms: 100 + +Vehicle.AngularVelocity.Roll: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeY + interval_ms: 100 + +Vehicle.AngularVelocity.Yaw: + datatype: float + type: sensor + dbc2vss: + signal: GyroscopeZ + interval_ms: 100 + +Vehicle.CurrentLocation.Latitude: + datatype: double + type: sensor + dbc2vss: + signal: Latitude + interval_ms: 100 + +Vehicle.CurrentLocation.Longitude: + datatype: double + type: sensor + dbc2vss: + signal: Longitude + interval_ms: 100 + + +# +# AGL VSS additions +# + +# Extra navigation state signals + +Vehicle.Cabin.Infotainment.Navigation.State: + datatype: string + type: sensor + allowed: [ 'UNKNOWN', 'ACTIVE', 'ARRIVED', 'STOPPED' ] + description: Navigation state. + +Vehicle.Cabin.Infotainment.Navigation.ElapsedDistance: + datatype: float + type: sensor + unit: km + description: Navigation elapsed distance. + + +# Extra audio control signals + +Vehicle.Cabin.Infotainment.Media.Audio: + type: branch + description: Media audio controls. + +Vehicle.Cabin.Infotainment.Media.Audio.Balance: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio left/right balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Fade: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio front/rear balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Bass: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio low-frequency filter control. + +Vehicle.Cabin.Infotainment.Media.Audio.Treble: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio high-frequency filter control. + + +# Extra steering wheel switch signals, including DBC mappings + +Vehicle.Cabin.SteeringWheel: + type: branch + description: AGL steering wheel demo data. + +Vehicle.Cabin.SteeringWheel.Switches: + type: branch + description: AGL steering wheel demo switch data. + +Vehicle.Cabin.SteeringWheel.Switches.VolumeUp: + datatype: boolean + type: sensor + description: Steering wheel volume up switch engaged. + vss2dbc: + signal: SW_VolumeUp + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.VolumeDown: + datatype: boolean + type: sensor + description: Steering wheel volume down switch engaged. + vss2dbc: + signal: SW_VolumeDown + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.VolumeMute: + datatype: boolean + type: sensor + description: Steering wheel volume mute switch engaged. + vss2dbc: + signal: SW_VolumeMute + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Next: + datatype: boolean + type: sensor + description: Steering wheel next switch engaged. + vss2dbc: + signal: SW_Next + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Previous: + datatype: boolean + type: sensor + description: Steering wheel previous switch engaged. + vss2dbc: + signal: SW_Previous + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Mode: + datatype: boolean + type: sensor + description: Steering wheel mode switch engaged. + vss2dbc: + signal: SW_Mode + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Info: + datatype: boolean + type: sensor + description: Steering wheel info switch engaged. + vss2dbc: + signal: SW_Info + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable: + datatype: boolean + type: sensor + description: Steering wheel cruise enable switch engaged. + vss2dbc: + signal: SW_CruiseEnable + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseSet: + datatype: boolean + type: sensor + description: Steering wheel cruise set switch engaged. + vss2dbc: + signal: SW_CruiseSet + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseResume: + datatype: boolean + type: sensor + description: Steering wheel cruise resume switch engaged. + vss2dbc: + signal: SW_CruiseResume + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel: + datatype: boolean + type: sensor + description: Steering wheel cruise cancel switch engaged. + vss2dbc: + signal: SW_CruiseCancel + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit: + datatype: boolean + type: sensor + description: Steering wheel cruise limit switch engaged. + vss2dbc: + signal: SW_CruiseLimit + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance: + datatype: boolean + type: sensor + description: Steering wheel cruise distance switch engaged. + vss2dbc: + signal: SW_CruiseDistance + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Voice: + datatype: boolean + type: sensor + description: Steering wheel voice switch engaged. + vss2dbc: + signal: SW_Voice + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.PhoneCall: + datatype: boolean + type: sensor + description: Steering wheel phone call switch engaged. + vss2dbc: + signal: SW_PhoneCall + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup: + datatype: boolean + type: sensor + description: Steering wheel phone hangup switch engaged. + vss2dbc: + signal: SW_PhoneHangup + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.Horn: + datatype: boolean + type: sensor + description: Steering wheel horn switch engaged. + vss2dbc: + signal: SW_Horn + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 + +Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning: + datatype: boolean + type: sensor + description: Steering wheel lane departure warning switch engaged. + vss2dbc: + signal: SW_LaneDepartureWarning + transform: + mapping: + - from: false + to: 0 + - from: true + to: 1 diff --git a/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-hardware b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-hardware new file mode 100644 index 000000000..869b33d3d --- /dev/null +++ b/recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-hardware @@ -0,0 +1,341 @@ +# DBC mappings for other signals for V2C demo + +# DBC mappings for demo HVAC + +Vehicle.Cabin.HVAC.Station.Row1.Driver.Temperature: + datatype: int8 + type: actuator + vss2dbc: + signal: PT_TempLeft + +Vehicle.Cabin.HVAC.Station.Row1.Passenger.Temperature: + datatype: int8 + type: actuator + vss2dbc: + signal: PT_TempRight + +Vehicle.Cabin.HVAC.Station.Row1.Driver.FanSpeed: + datatype: uint8 + type: actuator + vss2dbc: + signal: PT_FanSpeed + +# +# AGL VSS additions +# + +# Extra navigation state signals + +Vehicle.Cabin.Infotainment.Navigation.State: + datatype: string + type: sensor + allowed: [ 'UNKNOWN', 'ACTIVE', 'ARRIVED', 'STOPPED' ] + description: Navigation state. + +Vehicle.Cabin.Infotainment.Navigation.ElapsedDistance: + datatype: float + type: sensor + unit: km + description: Navigation elapsed distance. + + +# Extra audio control signals + +Vehicle.Cabin.Infotainment.Media.Audio: + type: branch + description: Media audio controls. + +Vehicle.Cabin.Infotainment.Media.Audio.Balance: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio left/right balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Fade: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio front/rear balance. + +Vehicle.Cabin.Infotainment.Media.Audio.Bass: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio low-frequency filter control. + +Vehicle.Cabin.Infotainment.Media.Audio.Treble: + datatype: int8 + type: actuator + min: -100 + max: 100 + unit: percent + description: Audio high-frequency filter control. + + +# Extra steering wheel switch signals, including DBC mappings + +Vehicle.Cabin.SteeringWheel: + type: branch + description: AGL steering wheel demo data. + +Vehicle.Cabin.SteeringWheel.Switches: + type: branch + description: AGL steering wheel demo switch data. + +Vehicle.Cabin.SteeringWheel.Switches.VolumeUp: + datatype: boolean + type: sensor + description: Steering wheel volume up switch engaged. + dbc2vss: + signal: SW_VolumeUp + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.VolumeDown: + datatype: boolean + type: sensor + description: Steering wheel volume down switch engaged. + dbc2vss: + signal: SW_VolumeDown + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.VolumeMute: + datatype: boolean + type: sensor + description: Steering wheel volume mute switch engaged. + dbc2vss: + signal: SW_VolumeMute + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Next: + datatype: boolean + type: sensor + description: Steering wheel next switch engaged. + dbc2vss: + signal: SW_Next + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Previous: + datatype: boolean + type: sensor + description: Steering wheel previous switch engaged. + dbc2vss: + signal: SW_Previous + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Mode: + datatype: boolean + type: sensor + description: Steering wheel mode switch engaged. + dbc2vss: + signal: SW_Mode + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Info: + datatype: boolean + type: sensor + description: Steering wheel info switch engaged. + dbc2vss: + signal: SW_Info + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable: + datatype: boolean + type: sensor + description: Steering wheel cruise enable switch engaged. + dbc2vss: + signal: SW_CruiseEnable + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseSet: + datatype: boolean + type: sensor + description: Steering wheel cruise set switch engaged. + dbc2vss: + signal: SW_CruiseSet + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseResume: + datatype: boolean + type: sensor + description: Steering wheel cruise resume switch engaged. + dbc2vss: + signal: SW_CruiseResume + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel: + datatype: boolean + type: sensor + description: Steering wheel cruise cancel switch engaged. + dbc2vss: + signal: SW_CruiseCancel + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseLimit: + datatype: boolean + type: sensor + description: Steering wheel cruise limit switch engaged. + dbc2vss: + signal: SW_CruiseLimit + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.CruiseDistance: + datatype: boolean + type: sensor + description: Steering wheel cruise distance switch engaged. + dbc2vss: + signal: SW_CruiseDistance + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Voice: + datatype: boolean + type: sensor + description: Steering wheel voice switch engaged. + dbc2vss: + signal: SW_Voice + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.PhoneCall: + datatype: boolean + type: sensor + description: Steering wheel phone call switch engaged. + dbc2vss: + signal: SW_PhoneCall + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.PhoneHangup: + datatype: boolean + type: sensor + description: Steering wheel phone hangup switch engaged. + dbc2vss: + signal: SW_PhoneHangup + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.Horn: + datatype: boolean + type: sensor + description: Steering wheel horn switch engaged. + dbc2vss: + signal: SW_Horn + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true + +Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning: + datatype: boolean + type: sensor + description: Steering wheel lane departure warning switch engaged. + dbc2vss: + signal: SW_LaneDepartureWarning + on_change: true + transform: + mapping: + - from: 0 + to: false + - from: 1 + to: true diff --git a/recipes-connectivity/vss/vss-agl_4.0.bb b/recipes-connectivity/vss/vss-agl_4.0.bb index 83fb4b1a1..00d83a7a5 100644 --- a/recipes-connectivity/vss/vss-agl_4.0.bb +++ b/recipes-connectivity/vss/vss-agl_4.0.bb @@ -8,29 +8,58 @@ inherit allarch update-alternatives require vss.inc -SRC_URI += "file://agl_vss_overlay.vspec" - +SRC_URI += "file://agl_vss_overlay.vspec \ + file://agl_vss_overlay.vspec.control-panel \ + file://agl_vss_overlay.vspec.gw-control-panel \ + file://agl_vss_overlay.vspec.gw-hardware \ +" # Since we're not relying on the simple upstream repo Makefile, use # best practices and output into a separate directory. B = "${WORKDIR}/build" do_configure[noexec] = "1" -VSPEC2JSON_OPTS = "-e dbc -o ${WORKDIR}/agl_vss_overlay.vspec --no-uuid --json-pretty" +#VSPEC2JSON_OPTS = "-e dbc2vss,vss2dbc -o ${WORKDIR}/agl_vss_overlay.vspec --no-uuid --json-pretty" +VSPEC2JSON_OPTS = "-e dbc2vss,vss2dbc --no-uuid --json-pretty" do_compile() { - vspec2json.py -I ${S}/spec ${VSPEC2JSON_OPTS} -u ${S}/spec/units.yaml ${S}/spec/VehicleSignalSpecification.vspec vss_rel_${PV}-agl.json + vspec2json.py -I ${S}/spec ${VSPEC2JSON_OPTS} -o ${WORKDIR}/agl_vss_overlay.vspec -u ${S}/spec/units.yaml ${S}/spec/VehicleSignalSpecification.vspec vss_rel_${PV}-agl.json + vspec2json.py -I ${S}/spec ${VSPEC2JSON_OPTS} -o ${WORKDIR}/agl_vss_overlay.vspec.control-panel -u ${S}/spec/units.yaml ${S}/spec/VehicleSignalSpecification.vspec vss_rel_${PV}-agl-control-panel.json + vspec2json.py -I ${S}/spec ${VSPEC2JSON_OPTS} -o ${WORKDIR}/agl_vss_overlay.vspec.gw-control-panel -u ${S}/spec/units.yaml ${S}/spec/VehicleSignalSpecification.vspec vss_rel_${PV}-agl-gw-control-panel.json + vspec2json.py -I ${S}/spec ${VSPEC2JSON_OPTS} -o ${WORKDIR}/agl_vss_overlay.vspec.gw-hardware -u ${S}/spec/units.yaml ${S}/spec/VehicleSignalSpecification.vspec vss_rel_${PV}-agl-gw-hardware.json } do_install() { install -d ${D}${datadir}/vss install -m 0644 vss_rel_${PV}-agl.json ${D}${datadir}/vss/ + install -m 0644 vss_rel_${PV}-agl-control-panel.json ${D}${datadir}/vss/ + install -m 0644 vss_rel_${PV}-agl-gw-control-panel.json ${D}${datadir}/vss/ + install -m 0644 vss_rel_${PV}-agl-gw-hardware.json ${D}${datadir}/vss/ } +PACKAGE_BEFORE_PN += "${PN}-control-panel ${PN}-gw-control-panel ${PN}-gw-hardware" + ALTERNATIVE_LINK_NAME[vss.json] = "${datadir}/vss/vss.json" -ALTERNATIVE_PRIORITY = "20" ALTERNATIVE:${PN} = "vss.json" ALTERNATIVE_TARGET_${PN} = "${datadir}/vss/vss_rel_${PV}-agl.json" +ALTERNATIVE_PRIORITY_${PN} = "20" +FILES:${PN} += "${datadir}/vss/vss_rel_${PV}-agl.json" + +ALTERNATIVE:${PN}-control-panel = "vss.json" +ALTERNATIVE_TARGET_${PN}-control-panel = "${datadir}/vss/vss_rel_${PV}-agl-control-panel.json" +ALTERNATIVE_PRIORITY_${PN}-control-panel = "30" +FILES:${PN}-control-panel += "${datadir}/vss/vss_rel_${PV}-agl-control-panel.json" + +ALTERNATIVE:${PN}-gw-hardware = "vss.json" +ALTERNATIVE_TARGET_${PN}-gw-hardware = "${datadir}/vss/vss_rel_${PV}-agl-gw-hardware.json" +ALTERNATIVE_PRIORITY_${PN}-gw-hardware = "31" +FILES:${PN}-gw-hardware += "${datadir}/vss/vss_rel_${PV}-agl-gw-hardware.json" -FILES:${PN} += "${datadir}/vss/" +# Higher priority than gw-hardware, as we want it to be the default +# if both are installed (as is the case with the full gateway demo +# setup). +ALTERNATIVE:${PN}-gw-control-panel = "vss.json" +ALTERNATIVE_TARGET_${PN}-gw-control-panel = "${datadir}/vss/vss_rel_${PV}-agl-gw-control-panel.json" +ALTERNATIVE_PRIORITY_${PN}-gw-control-panel = "32" +FILES:${PN}-gw-control-panel += "${datadir}/vss/vss_rel_${PV}-agl-gw-control-panel.json" diff --git a/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.default similarity index 100% rename from recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf rename to recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.default diff --git a/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo new file mode 100644 index 000000000..c6095ac3a --- /dev/null +++ b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "192.168.10.4" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/agl-service-audiomixer/agl-service-audiomixer.token" diff --git a/recipes-demo/agl-service-audiomixer/agl-service-audiomixer_git.bb b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer_git.bb index e6b7d64b7..a1f6f795c 100644 --- a/recipes-demo/agl-service-audiomixer/agl-service-audiomixer_git.bb +++ b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer_git.bb @@ -20,7 +20,8 @@ DEPENDS = " \ " SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-audiomixer.git;protocol=https;branch=${AGL_BRANCH} \ - file://agl-service-audiomixer.conf \ + file://agl-service-audiomixer.conf.default \ + file://agl-service-audiomixer.conf.gateway-demo \ file://agl-service-audiomixer.token \ " SRCREV = "0ff3ef1b254364639fc42495bbcfb4760250990a" @@ -28,7 +29,7 @@ SRCREV = "0ff3ef1b254364639fc42495bbcfb4760250990a" PV = "2.0+git${SRCPV}" S = "${WORKDIR}/git" -inherit meson pkgconfig systemd +inherit meson pkgconfig systemd update-alternatives EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}" @@ -43,10 +44,28 @@ do_install:append() { # until a packaging/sandboxing/MAC scheme is (re)implemented or # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/agl-service-audiomixer - install -m 0644 ${WORKDIR}/agl-service-audiomixer.conf ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/agl-service-audiomixer.conf.default ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/agl-service-audiomixer.conf.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/agl-service-audiomixer.token ${D}${sysconfdir}/xdg/AGL/agl-service-audiomixer/ } FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "kuksa-databroker" +RDEPENDS:${PN} += "${PN}-conf" + +ALTERNATIVE_LINK_NAME[agl-service-audiomixer.conf] = "${sysconfdir}/xdg/AGL/agl-service-audiomixer.conf" + +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-gateway-demo" + +FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/agl-service-audiomixer.conf.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "agl-service-audiomixer.conf" +ALTERNATIVE:${PN}-conf = "agl-service-audiomixer.conf" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/agl-service-audiomixer.conf.default" + +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/xdg/AGL/agl-service-audiomixer.conf.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "agl-service-audiomixer.conf" +ALTERNATIVE:${PN}-conf-gateway-demo = "agl-service-audiomixer.conf" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/agl-service-audiomixer.conf.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "20" diff --git a/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf b/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.default similarity index 100% rename from recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf rename to recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.default diff --git a/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo b/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo new file mode 100644 index 000000000..929bbc1b0 --- /dev/null +++ b/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "192.168.10.4" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/agl-service-hvac/agl-service-hvac.token" diff --git a/recipes-demo/agl-service-hvac/agl-service-hvac_git.bb b/recipes-demo/agl-service-hvac/agl-service-hvac_git.bb index 73d35f550..721cdd7d2 100644 --- a/recipes-demo/agl-service-hvac/agl-service-hvac_git.bb +++ b/recipes-demo/agl-service-hvac/agl-service-hvac_git.bb @@ -18,7 +18,8 @@ DEPENDS = " \ " SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-hvac;protocol=https;branch=${AGL_BRANCH} \ - file://agl-service-hvac.conf \ + file://agl-service-hvac.conf.default \ + file://agl-service-hvac.conf.gateway-demo \ file://agl-service-hvac.token \ " SRCREV = "1f55937667e35fb79dabee0e180787e34a59169a" @@ -26,7 +27,7 @@ SRCREV = "1f55937667e35fb79dabee0e180787e34a59169a" PV = "2.0+git${SRCPV}" S = "${WORKDIR}/git" -inherit meson pkgconfig systemd +inherit meson pkgconfig systemd update-alternatives EXTRA_OEMESON += "-Dprotos=${STAGING_INCDIR}" @@ -41,10 +42,29 @@ do_install:append() { # until a packaging/sandboxing/MAC scheme is (re)implemented or # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/agl-service-hvac - install -m 0644 ${WORKDIR}/agl-service-hvac.conf ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/agl-service-hvac.conf.default ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/agl-service-hvac.conf.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/agl-service-hvac.token ${D}${sysconfdir}/xdg/AGL/agl-service-hvac/ } FILES:${PN} += "${systemd_system_unitdir}" -RDEPENDS:${PN} += "kuksa-databroker kuksa-databroker-agl" +RDEPENDS:${PN} += "${PN}-conf" + +ALTERNATIVE_LINK_NAME[agl-service-hvac.conf] = "${sysconfdir}/xdg/AGL/agl-service-hvac.conf" + +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-gateway-demo" + +FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/agl-service-hvac.conf.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "agl-service-hvac.conf" +ALTERNATIVE:${PN}-conf = "agl-service-hvac.conf" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/agl-service-hvac.conf.default" + +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/xdg/AGL/agl-service-hvac.conf.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "agl-service-hvac.conf" +ALTERNATIVE:${PN}-conf-gateway-demo = "agl-service-hvac.conf" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/agl-service-hvac.conf.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "20" + diff --git a/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.gateway-demo b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.gateway-demo new file mode 100644 index 000000000..662a350f1 --- /dev/null +++ b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.gateway-demo @@ -0,0 +1,4 @@ +hostname: 192.168.10.4 +authorization : "/etc/xdg/AGL/cluster-dashboard/cluster-dashboard.token" +use-tls : true +tls-server-name : "localhost" diff --git a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb index f81d8e733..f3dd8f1e0 100644 --- a/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb +++ b/recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb @@ -13,6 +13,7 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-instrument-clust file://flutter_cluster_dashboard_on_bg.json \ file://cluster-dashboard.yaml \ file://cluster-dashboard.yaml.demo \ + file://cluster-dashboard.yaml.gateway-demo \ file://cluster-dashboard.yaml.kvm-demo \ file://cluster-dashboard.token \ file://kvm.conf \ @@ -41,6 +42,7 @@ do_install:append() { install -d ${D}${sysconfdir}/xdg/AGL/cluster-dashboard install -m 0644 ${WORKDIR}/cluster-dashboard.yaml ${D}${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.demo ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/cluster-dashboard.yaml.kvm-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/cluster-dashboard.token ${D}${sysconfdir}/xdg/AGL/cluster-dashboard/ } @@ -51,30 +53,35 @@ FILES:${PN} += "${datadir} ${sysconfdir}/xdg/AGL" RDEPENDS:${PN} += "flutter-auto agl-flutter-env liberation-fonts" -PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-demo ${PN}-conf-kvm-demo" - +PACKAGE_BEFORE_PN += "${PN}-conf" FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default" RDEPENDS:${PN}-conf = "${PN}" RPROVIDES:${PN}-conf = "cluster-dashboard.yaml" -RCONFLICTS:${PN}-conf = "${PN}-conf-demo" ALTERNATIVE:${PN}-conf = "cluster-dashboard.yaml" ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.default" -FILES:${PN}-conf-demo += " \ - ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo \ -" +PACKAGE_BEFORE_PN += "${PN}-conf-demo" +FILES:${PN}-conf-demo += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo" RDEPENDS:${PN}-conf-demo = "${PN}" RPROVIDES:${PN}-conf-demo = "cluster-dashboard.yaml" -RCONFLICTS:${PN}-conf-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-demo = "cluster-dashboard.yaml" ALTERNATIVE_TARGET_${PN}-conf-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.demo" -FILES:${PN}-conf-kvm-demo += " \ - ${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo \ - ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \ -" -RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +PACKAGE_BEFORE_PN += "${PN}-conf-gateway-demo" +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "cluster-dashboard.yaml" +ALTERNATIVE:${PN}-conf-gateway-demo = "cluster-dashboard.yaml" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.gateway-demo" + +# systemd override to add network-online.target dependency for KVM setups +PACKAGE_BEFORE_PN += "${PN}-conf-kvm" +FILES:${PN}-conf-kvm += "${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf" +RDEPENDS:${PN}-conf-kvm = "${PN}" + +PACKAGE_BEFORE_PN += "${PN}-conf-kvm-demo" +FILES:${PN}-conf-kvm-demo += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo" +RDEPENDS:${PN}-conf-kvm-demo = "${PN} ${PN}-conf-kvm" RPROVIDES:${PN}-conf-kvm-demo = "cluster-dashboard.yaml" -RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-kvm-demo = "cluster-dashboard.yaml" ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo" diff --git a/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.gateway-demo b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.gateway-demo new file mode 100644 index 000000000..e9346bc41 --- /dev/null +++ b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.gateway-demo @@ -0,0 +1,6 @@ +kuksa: + hostname : 192.168.10.4 + port : 55555 + authorization : "/etc/xdg/AGL/ics-homescreen/ics-homescreen.token" + use-tls : true + tls-server-name : localhost diff --git a/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-gateway-demo b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-gateway-demo new file mode 100644 index 000000000..5d6e73b32 --- /dev/null +++ b/recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-gateway-demo @@ -0,0 +1,10 @@ +kuksa: + hostname : 192.168.10.4 + port : 55555 + authorization : "/etc/xdg/AGL/ics-homescreen/ics-homescreen.token" + use-tls : true + tls-server-name : localhost +radio: + hostname : 172.16.10.1 +mpd: + hostname : 172.16.10.1 diff --git a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb index 17e55994e..45d75b7c7 100644 --- a/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb +++ b/recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb @@ -10,7 +10,9 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-ics-homescreen;p file://flutter-ics-homescreen.json \ file://flutter-ics-homescreen.service \ file://ics-homescreen.yaml \ + file://ics-homescreen.yaml.gateway-demo \ file://ics-homescreen.yaml.kvm-demo \ + file://ics-homescreen.yaml.kvm-gateway-demo \ file://ics-homescreen.token \ file://radio-presets.yaml \ file://kvm.conf \ @@ -46,7 +48,9 @@ do_install:append() { # something like OAuth is plumbed in as an alternative. install -d ${D}${sysconfdir}/xdg/AGL/ics-homescreen install -m 0644 ${WORKDIR}/ics-homescreen.yaml ${D}${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default + install -m 0644 ${WORKDIR}/ics-homescreen.yaml.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/ics-homescreen.yaml.kvm-demo ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/ics-homescreen.yaml.kvm-gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/ics-homescreen.token ${D}${sysconfdir}/xdg/AGL/ics-homescreen/ install -m 0644 ${WORKDIR}/radio-presets.yaml ${D}${sysconfdir}/xdg/AGL/ics-homescreen/ } @@ -61,21 +65,38 @@ RDEPENDS:${PN} += " \ applaunchd \ " -PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" - +PACKAGE_BEFORE_PN += "${PN}-conf" FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default" RDEPENDS:${PN}-conf = "${PN}" RPROVIDES:${PN}-conf = "ics-homescreen.yaml" -RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" ALTERNATIVE:${PN}-conf = "ics-homescreen.yaml" ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.default" -FILES:${PN}-conf-kvm-demo += " \ - ${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-demo \ - ${systemd_system_unitdir}/flutter-ics-homescreen.service.d/kvm.conf \ -" -RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +PACKAGE_BEFORE_PN += "${PN}-conf-gateway-demo" +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "ics-homescreen.yaml" +ALTERNATIVE:${PN}-conf-gateway-demo = "ics-homescreen.yaml" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "20" + +# systemd override to add network-online.target dependency for KVM setups +PACKAGE_BEFORE_PN += "${PN}-conf-kvm" +FILES:${PN}-conf-kvm += "${systemd_system_unitdir}/flutter-ics-homescreen.service.d/kvm.conf" +RDEPENDS:${PN}-conf-kvm = "${PN}" + +PACKAGE_BEFORE_PN += "${PN}-conf-kvm-demo" +FILES:${PN}-conf-kvm-demo += "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-demo" +RDEPENDS:${PN}-conf-kvm-demo = "${PN} ${PN}-conf-kvm" RPROVIDES:${PN}-conf-kvm-demo = "ics-homescreen.yaml" -RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-kvm-demo = "ics-homescreen.yaml" ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-kvm-demo = "30" + +PACKAGE_BEFORE_PN += "${PN}-conf-kvm-gateway-demo" +FILES:${PN}-conf-kvm-gateway-demo += "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-gateway-demo" +RDEPENDS:${PN}-conf-kvm-gateway-demo = "${PN} ${PN}-conf-kvm" +RPROVIDES:${PN}-conf-kvm-gateway-demo = "ics-homescreen.yaml" +ALTERNATIVE:${PN}-conf-kvm-gateway-demo = "ics-homescreen.yaml" +ALTERNATIVE_TARGET_${PN}-conf-kvm-gateway-demo = "${sysconfdir}/xdg/AGL/ics-homescreen.yaml.kvm-gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-kvm-gateway-demo = "31" diff --git a/recipes-demo/navigation/ondemandnavi/navigation.conf.gateway-demo b/recipes-demo/navigation/ondemandnavi/navigation.conf.gateway-demo new file mode 100644 index 000000000..ed71a4977 --- /dev/null +++ b/recipes-demo/navigation/ondemandnavi/navigation.conf.gateway-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "192.168.10.4" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/navigation/navigation.token" diff --git a/recipes-demo/navigation/ondemandnavi_git.bb b/recipes-demo/navigation/ondemandnavi_git.bb index 7bfa00078..cf53b2bad 100644 --- a/recipes-demo/navigation/ondemandnavi_git.bb +++ b/recipes-demo/navigation/ondemandnavi_git.bb @@ -13,6 +13,7 @@ PV = "2.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/ondemandnavi;protocol=https;branch=${AGL_BRANCH} \ file://navigation.conf \ file://navigation.conf.kvm-demo \ + file://navigation.conf.gateway-demo \ file://navigation.token \ " SRCREV = "d6b883ef6bdb63fb501b03d64c9a32bc29b7b2c7" @@ -35,26 +36,33 @@ do_install:append() { install -d ${D}${sysconfdir}/xdg/AGL/navigation install -m 0644 ${WORKDIR}/navigation.conf ${D}${sysconfdir}/xdg/AGL/navigation.conf.default install -m 0644 ${WORKDIR}/navigation.conf.kvm-demo ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/navigation.conf.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/navigation.token ${D}${sysconfdir}/xdg/AGL/navigation/ } ALTERNATIVE_LINK_NAME[navigation.conf] = "${sysconfdir}/xdg/AGL/navigation.conf" -PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo ${PN}-conf-gateway-demo" FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/navigation.conf.default" RDEPENDS:${PN}-conf = "${PN}" RPROVIDES:${PN}-conf = "navigation.conf" -RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" ALTERNATIVE:${PN}-conf = "navigation.conf" ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/navigation.conf.default" +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/xdg/AGL/navigation.conf.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "navigation.conf" +ALTERNATIVE:${PN}-conf-gateway-demo = "navigation.conf" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/navigation.conf.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "20" + FILES:${PN}-conf-kvm-demo += "${sysconfdir}/xdg/AGL/navigation.conf.kvm-demo" RDEPENDS:${PN}-conf-kvm-demo = "${PN}" RPROVIDES:${PN}-conf-kvm-demo = "navigation.conf" -RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-kvm-demo = "navigation.conf" ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/navigation.conf.kvm-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-kvm-demo = "30" RDEPENDS:${PN} += " \ qtwayland \ diff --git a/recipes-demo/navigation/tbtnavi/tbtnavi.conf.gateway-demo b/recipes-demo/navigation/tbtnavi/tbtnavi.conf.gateway-demo new file mode 100644 index 000000000..6f528719c --- /dev/null +++ b/recipes-demo/navigation/tbtnavi/tbtnavi.conf.gateway-demo @@ -0,0 +1,4 @@ +[kuksa-client] +hostname = "192.168.10.4" +tls-server-name = "localhost" +authorization = "/etc/xdg/AGL/tbtnavi/tbtnavi.token" diff --git a/recipes-demo/navigation/tbtnavi_git.bb b/recipes-demo/navigation/tbtnavi_git.bb index b3703c53d..3c6571b15 100644 --- a/recipes-demo/navigation/tbtnavi_git.bb +++ b/recipes-demo/navigation/tbtnavi_git.bb @@ -28,6 +28,7 @@ SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/tbtnavi;protocol=https;b file://tbtnavi.service \ file://tbtnavi.conf \ file://tbtnavi.conf.kvm-demo \ + file://tbtnavi.conf.gateway-demo \ file://tbtnavi.token \ file://kvm.conf \ " @@ -54,6 +55,7 @@ do_install:append() { install -d ${D}${sysconfdir}/xdg/AGL/tbtnavi install -m 0644 ${WORKDIR}/tbtnavi.conf ${D}${sysconfdir}/xdg/AGL/tbtnavi.conf.default install -m 0644 ${WORKDIR}/tbtnavi.conf.kvm-demo ${D}${sysconfdir}/xdg/AGL/ + install -m 0644 ${WORKDIR}/tbtnavi.conf.gateway-demo ${D}${sysconfdir}/xdg/AGL/ install -m 0644 ${WORKDIR}/tbtnavi.token ${D}${sysconfdir}/xdg/AGL/tbtnavi/ } @@ -68,21 +70,33 @@ RDEPENDS:${PN} += " \ libqtappfw \ " -PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm-demo" +PACKAGE_BEFORE_PN += "${PN}-conf ${PN}-conf-kvm ${PN}-conf-kvm-demo ${PN}-conf-gateway-demo" FILES:${PN}-conf += "${sysconfdir}/xdg/AGL/tbtnavi.conf.default" RDEPENDS:${PN}-conf = "${PN}" RPROVIDES:${PN}-conf = "tbtnavi.conf" -RCONFLICTS:${PN}-conf = "${PN}-conf-kvm-demo" ALTERNATIVE:${PN}-conf = "tbtnavi.conf" ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/xdg/AGL/tbtnavi.conf.default" +FILES:${PN}-conf-gateway-demo += " \ + ${sysconfdir}/xdg/AGL/tbtnavi.conf.gateway-demo \ +" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "tbtnavi.conf" +ALTERNATIVE:${PN}-conf-gateway-demo = "tbtnavi.conf" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/xdg/AGL/tbtnavi.conf.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "20" + +FILES:${PN}-conf-kvm += " \ + ${systemd_system_unitdir}/tbtnavi.service.d/kvm.conf \ +" +RDEPENDS:${PN}-conf-kvm = "${PN}" + FILES:${PN}-conf-kvm-demo += " \ ${sysconfdir}/xdg/AGL/tbtnavi.conf.kvm-demo \ - ${systemd_system_unitdir}/tbtnavi.service.d/kvm.conf \ " -RDEPENDS:${PN}-conf-kvm-demo = "${PN}" +RDEPENDS:${PN}-conf-kvm-demo = "${PN} ${PN}-conf-kvm" RPROVIDES:${PN}-conf-kvm-demo = "tbtnavi.conf" -RCONFLICTS:${PN}-conf-kvm-demo = "${PN}-conf" ALTERNATIVE:${PN}-conf-kvm-demo = "tbtnavi.conf" ALTERNATIVE_TARGET_${PN}-conf-kvm-demo = "${sysconfdir}/xdg/AGL/tbtnavi.conf.kvm-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-kvm-demo = "30" diff --git a/recipes-platform/images/agl-cluster-demo-flutter-preconfigured-gateway.bb b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured-gateway.bb new file mode 100644 index 000000000..767d339cf --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured-gateway.bb @@ -0,0 +1,8 @@ +require agl-cluster-demo-flutter-preconfigured.bb + +SUMMARY = "AGL Cluster preconfigured gateway demo Flutter image" + +# Cluster application configuration needs to be replaced for +# the full demo to handle different databroker configuration. +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-gateway-demo" + diff --git a/recipes-platform/images/agl-gateway-demo-preconfigured.bb b/recipes-platform/images/agl-gateway-demo-preconfigured.bb new file mode 100644 index 000000000..4a9cf0b2a --- /dev/null +++ b/recipes-platform/images/agl-gateway-demo-preconfigured.bb @@ -0,0 +1,10 @@ +require agl-gateway-demo.bb + +SUMMARY = "AGL gateway preconfigured demo image" + +# Second CAN interface will be connected to the demo setup +# steering wheel & HVAC in the full demo. +IMAGE_INSTALL += " \ + kuksa-dbc-feeder-conf-gw-hardware \ + vss-agl-gw-hardware \ +" diff --git a/recipes-platform/images/agl-gateway-demo.bb b/recipes-platform/images/agl-gateway-demo.bb new file mode 100644 index 000000000..1e800c540 --- /dev/null +++ b/recipes-platform/images/agl-gateway-demo.bb @@ -0,0 +1,24 @@ +SUMMARY = "AGL gateway demo image" + +LICENSE = "MIT" + +require recipes-platform/images/agl-image-minimal.bb +require agl-demo-features.inc + +IMAGE_FEATURES += " \ + kuksa-val-databroker \ + ssh-server-openssh \ + ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'can-test-tools' , '', d)} \ +" + +AGL_DEVEL_INSTALL = " \ + packagegroup-agl-kuksa-val-databroker-devel \ + tcpdump \ +" + +IMAGE_INSTALL += " \ + agl-vss-proxy \ + kuksa-dbc-feeder-conf-gw-control-panel \ + vss-agl-gw-control-panel \ + ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '${AGL_DEVEL_INSTALL}', '', d)} \ +" diff --git a/recipes-platform/images/agl-ivi-demo-flutter-preconfigured-gateway.bb b/recipes-platform/images/agl-ivi-demo-flutter-preconfigured-gateway.bb new file mode 100644 index 000000000..1bbd483b6 --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-flutter-preconfigured-gateway.bb @@ -0,0 +1,14 @@ +require agl-ivi-demo-flutter-preconfigured.bb + +SUMMARY = "AGL IVI preconfigured gateway demo Flutter image" + +# We do not want a local databroker instance +IMAGE_FEATURES:remove = "kuksa-val-databroker" + +FLUTTER_ICS_HOMESCREEN_CONF = "flutter-ics-homescreen-conf-gateway-demo" +ONDEMANDNAVI_CONF = "ondemandnavi-conf-gateway-demo" + +IMAGE_INSTALL += " \ + agl-service-hvac-conf-gateway-demo \ + agl-service-audiomixer-conf-gateway-demo \ +" \ No newline at end of file -- 2.16.6 From 6a26854a201d79aed700b4c1647197a9cc7b4ca9 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 27 May 2024 12:38:31 -0400 Subject: [PATCH 10/12] agl-demo-control-panel: update SRCREV Update SRCREV to pick up: 31573c8 Enable secure mode in default configuration 617a152 Rework configuration saving 08857a6 Improve vehicle simulator 6b21032 Add ability to disable HVAC and steering wheel pages f2c7811 Simplify server configuration ceb0b8b Add gitlab issue/merge request templates Bug-AGL: SPEC-5138, SPEC-5141, SPEC-5142, SPEC-5143 Change-Id: I762a26ede4162a7b2bac895d38c59ce3d222b69f Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29944 Tested-by: Jenkins Job builder account ci-image-build: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account --- recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb b/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb index c3ae99dce..f75a37473 100644 --- a/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb +++ b/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb @@ -7,7 +7,7 @@ PV = "1.0+git${SRCPV}" SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/agl-demo-control-panel;protocol=https;branch=${AGL_BRANCH} \ file://agl-demo-control-panel.service \ " -SRCREV = "545256365dc0603658ad5e17bfa1fa00ba829d7e" +SRCREV = "31573c88e0ddefc3591bb7752b306601554ebbf2" S = "${WORKDIR}/git" -- 2.16.6 From 4b8b02313c32a5ca8d5ba6d514f45a64cd48d91d Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 27 May 2024 12:30:46 -0400 Subject: [PATCH 11/12] Add preconfigured demo control panel images Changes: - Add kuksa-dbc-feeder configuration package for the gateway flavor of the control panel image. - Split out the agl-demo-control-panel configuration into a separate package, and add alternative versions for running against the regular and gateway versions of the full demo. - Add -preconfigured and -preconfigured-gateway flavors of the agl-ivi-demo-control-panel image that add the appropriate tweaks to support the full demo setups. Bug-AGL: SPEC-5107, SPEC-5138 Change-Id: I290d08c0f7234f951b822b161bce8166fb62d346 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29924 Tested-by: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account ci-image-build: Jenkins Job builder account --- .../kuksa-dbc-feeder-conf-control-panel.bb | 25 +++++++++++++ .../kuksa-dbc-feeder.control-panel | 4 +++ .../agl-demo-control-panel_git.bb | 42 +++++++++++++++++----- ...ivi-demo-control-panel-preconfigured-gateway.bb | 11 ++++++ .../agl-ivi-demo-control-panel-preconfigured.bb | 7 ++++ .../images/agl-ivi-demo-control-panel.bb | 2 ++ 6 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel.bb create mode 100644 recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel/kuksa-dbc-feeder.control-panel create mode 100644 recipes-platform/images/agl-ivi-demo-control-panel-preconfigured-gateway.bb create mode 100644 recipes-platform/images/agl-ivi-demo-control-panel-preconfigured.bb diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel.bb new file mode 100644 index 000000000..3148721e7 --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel.bb @@ -0,0 +1,25 @@ +SUMMARY = "KUKSA.val DBC feeder configuration for gateway demo control panel" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +SRC_URI = "file://kuksa-dbc-feeder.control-panel" + +S = "${WORKDIR}" + +inherit update-alternatives + +do_compile[noexec] = "1" + +do_install() { + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/kuksa-dbc-feeder.control-panel ${D}${sysconfdir}/default/ +} + +ALTERNATIVE_LINK_NAME[kuksa-dbc-feeder.env] = "${sysconfdir}/default/kuksa-dbc-feeder" + +RPROVIDES:${PN} = "kuksa-dbc-feeder.env" +ALTERNATIVE:${PN} = "kuksa-dbc-feeder.env" +ALTERNATIVE_TARGET_${PN} = "${sysconfdir}/default/kuksa-dbc-feeder.control-panel" + +RDEPENDS:${PN} += "kuksa-dbc-feeder" diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel/kuksa-dbc-feeder.control-panel b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel/kuksa-dbc-feeder.control-panel new file mode 100644 index 000000000..8e73a890d --- /dev/null +++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel/kuksa-dbc-feeder.control-panel @@ -0,0 +1,4 @@ +# Leave DBC input disabled until cruise support is added to the +# control panel simulator +EXTRA_ARGS="--val2dbc --no-dbc2val --dbc-default /etc/kuksa-dbc-feeder/dbc_default_values.json" +#LOG_LEVEL=debug diff --git a/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb b/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb index f75a37473..06eae1809 100644 --- a/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb +++ b/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb @@ -11,9 +11,7 @@ SRCREV = "31573c88e0ddefc3591bb7752b306601554ebbf2" S = "${WORKDIR}/git" -inherit systemd allarch - -require recipes-config/agl-users/agl-users.inc +inherit systemd allarch update-alternatives SYSTEMD_SERVICE:${PN} = "${BPN}.service" @@ -33,10 +31,14 @@ do_install() { install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service # Install conf file - install -d ${D}/home/agl-driver/.local/share/agl-demo-control-panel - sed 's/=user-session/=AGL-databroker/' ${S}/extras/config.ini > \ - ${D}/home/agl-driver/.local/share/agl-demo-control-panel/config.ini - chown -R agl-driver:agl-driver ${D}/home/agl-driver + install -d ${D}${sysconfdir}/agl-demo-control-panel + install -m 0644 ${S}/extras/config.ini ${D}${sysconfdir}/agl-demo-control-panel/config.ini.default + sed 's/ip = localhost/ip = 192.168.10.2/' ${S}/extras/config.ini > \ + ${D}${sysconfdir}/agl-demo-control-panel/config.ini.demo + sed -e 's/hvac-enabled = true/hvac-enabled = false/' \ + -e 's/steering-wheel-enabled = true/steering-wheel-enabled = false/' \ + ${S}/extras/config.ini > \ + ${D}${sysconfdir}/agl-demo-control-panel/config.ini.gateway-demo } # For now generate resource wrapper on first boot, as it looks non-trivial @@ -46,9 +48,10 @@ pkg_postinst_ontarget:${PN} () { true } -FILES:${PN} += "/home/agl-driver" +ALTERNATIVE_LINK_NAME[agl-demo-control-panel.ini] = "${sysconfdir}/agl-demo-control-panel/config.ini" RDEPENDS:${PN} += " \ + ${PN}-conf \ python3 \ python3-modules \ python3-packaging \ @@ -57,3 +60,26 @@ RDEPENDS:${PN} += " \ agl-users \ weston \ " + +PACKAGE_BEFORE_PN += "${PN}-conf" +FILES:${PN}-conf += "${sysconfdir}/agl-demo-control-panel/config.ini.default" +RDEPENDS:${PN}-conf = "${PN}" +RPROVIDES:${PN}-conf = "agl-demo-control-panel.ini" +ALTERNATIVE:${PN}-conf = "agl-demo-control-panel.ini" +ALTERNATIVE_TARGET_${PN}-conf = "${sysconfdir}/agl-demo-control-panel/config.ini.default" + +PACKAGE_BEFORE_PN += "${PN}-conf-demo" +FILES:${PN}-conf-demo += "${sysconfdir}/agl-demo-control-panel/config.ini.demo" +RDEPENDS:${PN}-conf-demo = "${PN}" +RPROVIDES:${PN}-conf-demo = "agl-demo-control-panel.ini" +ALTERNATIVE:${PN}-conf-demo = "agl-demo-control-panel.ini" +ALTERNATIVE_TARGET_${PN}-conf-demo = "${sysconfdir}/agl-demo-control-panel/config.ini.demo" +ALTERNATIVE_PRIORITY_${PN}-conf-demo = "20" + +PACKAGE_BEFORE_PN += "${PN}-conf-gateway-demo" +FILES:${PN}-conf-gateway-demo += "${sysconfdir}/agl-demo-control-panel/config.ini.gateway-demo" +RDEPENDS:${PN}-conf-gateway-demo = "${PN}" +RPROVIDES:${PN}-conf-gateway-demo = "agl-demo-control-panel.ini" +ALTERNATIVE:${PN}-conf-gateway-demo = "agl-demo-control-panel.ini" +ALTERNATIVE_TARGET_${PN}-conf-gateway-demo = "${sysconfdir}/agl-demo-control-panel/config.ini.gateway-demo" +ALTERNATIVE_PRIORITY_${PN}-conf-gateway-demo = "30" diff --git a/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured-gateway.bb b/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured-gateway.bb new file mode 100644 index 000000000..19575a8e5 --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured-gateway.bb @@ -0,0 +1,11 @@ +require agl-ivi-demo-control-panel.bb + +SUMMARY = "AGL gateway demo control panel image" + +IMAGE_FEATURES += "kuksa-val-databroker" + +IMAGE_INSTALL += " \ + agl-demo-control-panel-conf-gateway-demo \ + vss-agl-control-panel \ + kuksa-dbc-feeder-conf-control-panel \ +" diff --git a/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured.bb b/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured.bb new file mode 100644 index 000000000..1107b9c7b --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-control-panel-preconfigured.bb @@ -0,0 +1,7 @@ +require agl-ivi-demo-control-panel.bb + +SUMMARY = "AGL full demo control panel image" + +IMAGE_INSTALL += " \ + agl-demo-control-panel-conf-demo \ +" diff --git a/recipes-platform/images/agl-ivi-demo-control-panel.bb b/recipes-platform/images/agl-ivi-demo-control-panel.bb index 21785caea..7524ada5a 100644 --- a/recipes-platform/images/agl-ivi-demo-control-panel.bb +++ b/recipes-platform/images/agl-ivi-demo-control-panel.bb @@ -2,6 +2,8 @@ require recipes-platform/images/agl-image-weston.bb SUMMARY = "AGL demo control panel image" +require agl-demo-features.inc + IMAGE_FEATURES += "splash package-management ssh-server-openssh" # NOTE: The client key and certificate in kuksa-certificates-agl-client -- 2.16.6 From bdab49a1feb441a4c91a7b0ece3cc6b3fd6867a8 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 27 May 2024 17:26:33 -0400 Subject: [PATCH 12/12] agl-ivi-demo-html5: remove duplicated include Remove require of agl-demo-container-guest-integration.inc, as it is already pulled in by the base agl-ivi-image recipe. Bug-AGL: SPEC-5138 Change-Id: Iee8c6e16181f1b6529cb4456d3ac1cf59671d221 Signed-off-by: Scott Murray Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29925 Tested-by: Jenkins Job builder account ci-image-build: Jenkins Job builder account ci-image-boot-test: Jenkins Job builder account --- recipes-platform/images/agl-ivi-demo-html5.bb | 2 -- 1 file changed, 2 deletions(-) diff --git a/recipes-platform/images/agl-ivi-demo-html5.bb b/recipes-platform/images/agl-ivi-demo-html5.bb index 34de64bd7..1141efc22 100644 --- a/recipes-platform/images/agl-ivi-demo-html5.bb +++ b/recipes-platform/images/agl-ivi-demo-html5.bb @@ -3,8 +3,6 @@ require agl-ivi-image.bb SUMMARY = "AGL IVI demo HTML5 image" DESCRIPTION = "Contains the web runtime and sample web apps" -require agl-demo-container-guest-integration.inc - CLANGSDK = "1" # add packages for demo platform (include demo apps) here -- 2.16.6