From: Scott Murray Date: Mon, 27 May 2024 21:26:33 +0000 (-0400) Subject: agl-ivi-demo-html5: remove duplicated include X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fmaster;hp=8083d5447471fdcf473a5617e6754ee087c12634;p=AGL%2Fmeta-agl-demo.git 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 --- 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/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-platform-flutter.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf similarity index 88% rename from recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf index 99d1f10c9..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.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-platform.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf similarity index 73% rename from recipes-config/qemu-config/files/agl-cluster-demo-platform.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf index 1ecefc477..37003abde 100644 --- a/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.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/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.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.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/recipes-config/qemu-config/files/agl-demo-platform.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf similarity index 96% rename from recipes-config/qemu-config/files/agl-demo-platform.conf rename to meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf index 7ff32bc18..c2d420eb6 100644 --- a/recipes-config/qemu-config/files/agl-demo-platform.conf +++ b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.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-platform-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-platform-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-platform-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/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf b/meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.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.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/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-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-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-platform-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-platform-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb index 159d3939e..96d95113f 100644 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-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-platform-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-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-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-platform-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-platform-flutter.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb index 10c30445e..cfab8b1a7 100644 --- a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-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-platform-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 93% rename from recipes-config/qemu-config/qemu-config-vmnet0.bb rename to meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb index bc634bf32..a5a12982e 100644 --- a/recipes-config/qemu-config/qemu-config-vmnet0.bb +++ b/meta-agl-kvm-demo/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-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-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-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-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-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-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 new file mode 100644 index 000000000..ac392cbc5 --- /dev/null +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb @@ -0,0 +1,36 @@ +require agl-kvm-demo.bb + +SUMMARY = "AGL KVM preconfigured Flutter demo image" + +# 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 \ +" + +# 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-platform.bb b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb similarity index 59% rename from recipes-platform/images/agl-kvm-demo-platform.bb rename to meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb index ddb2ddb45..33f2b921f 100644 --- a/recipes-platform/images/agl-kvm-demo-platform.bb +++ b/meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb @@ -1,16 +1,12 @@ -DESCRIPTION = "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)} \ " @@ -30,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-platform-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-platform-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-platform.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb deleted file mode 100644 index 8e2aeb3e5..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.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-platform" -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-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb deleted file mode 100644 index da85b7a72..000000000 --- a/recipes-config/qemu-config/qemu-config-agl-demo-platform.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-demo-platform" -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-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/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-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-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-demo-control-panel/agl-demo-control-panel_git.bb b/recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb index c3ae99dce..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 @@ -7,13 +7,11 @@ 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" -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-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/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" 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" 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/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..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,8 @@ 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 \ " @@ -26,8 +28,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 +42,8 @@ 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.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/ } @@ -52,21 +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" - +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 \ - ${systemd_system_unitdir}/flutter-cluster-dashboard.service.d/kvm.conf \ -" +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" + +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" +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 576e5a7d1..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/ } @@ -59,24 +63,40 @@ 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" - +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/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-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-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 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 6d6a0a8dd..14290b998 100644 --- a/recipes-graphics/wayland/weston-ini-conf_agldemo.inc +++ b/recipes-graphics/wayland/weston-ini-conf_agldemo.inc @@ -1,28 +1,49 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/weston-ini-conf:" -SRC_URI += "file://weston.ini.kvm.in" +SRC_URI += "file://remote-output.cfg.in" -GUEST_VM1_IMAGE ?= "agl-ivi-demo-platform-flutter" -GUEST_VM2_IMAGE ?= "agl-cluster-demo-platform-flutter" +# 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" + +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 +} do_compile:append() { - # Start with a canned configuration for 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" \ - ${WORKDIR}/weston.ini.kvm.in > ${WORKDIR}/weston.ini.kvm + # 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 + done } do_install:append() { - install -m 0644 ${WORKDIR}/weston.ini.kvm ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.default-remoting ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.landscape-remoting ${D}${weston_ini_dir}/ } -PACKAGE_BEFORE_PN += "${PN}-kvm" +# remoting + +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" -FILES:${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +# landscape-remoting -RPROVIDES:${PN}-kvm = "weston-ini" -RCONFLICTS:${PN}-kvm = "${PN}" -ALTERNATIVE:${PN}-kvm = "weston.ini" -ALTERNATIVE_TARGET_${PN}-kvm = "${weston_ini_dir}/weston.ini.kvm" +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" 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-cluster-demo-flutter-preconfigured.bb b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb new file mode 100644 index 000000000..351600751 --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb @@ -0,0 +1,19 @@ +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. +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-demo" + +IMAGE_INSTALL += " \ + psplash-inverted-config \ + weston-ini-conf-landscape-inverted \ +" diff --git a/recipes-platform/images/agl-cluster-demo-flutter.bb b/recipes-platform/images/agl-cluster-demo-flutter.bb new file mode 100644 index 000000000..dfa256209 --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-flutter.bb @@ -0,0 +1,35 @@ +SUMMARY = "Baseline Flutter Image for Release" + +LICENSE = "MIT" + +require recipes-platform/images/agl-image-compositor.bb +require agl-demo-features.inc + +IMAGE_FEATURES += "splash package-management ssh-server-openssh" + +IMAGE_FEATURES += " \ + kuksa-val-databroker-client \ + kuksa-val-databroker \ +" + +# Generic +IMAGE_INSTALL += "\ + weston-ini-conf-landscape \ + \ + packagegroup-agl-networking \ + cluster-receiver \ + \ + simple-can-simulator \ +" + +# Flutter +FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf" + +IMAGE_INSTALL += "\ + flutter-auto \ + flutter-cluster-dashboard \ + ${FLUTTER_CLUSTER_DASHBOARD_CONF} \ + cluster-demo-config-flutter \ +" + +CLANGSDK = "1" diff --git a/recipes-platform/images/agl-cluster-demo-platform-flutter.bb b/recipes-platform/images/agl-cluster-demo-platform-flutter.bb deleted file mode 100644 index 5cf3daf9f..000000000 --- a/recipes-platform/images/agl-cluster-demo-platform-flutter.bb +++ /dev/null @@ -1,37 +0,0 @@ -SUMMARY = "Baseline Flutter Image for Release" - -LICENSE = "MIT" - -require recipes-platform/images/agl-image-compositor.bb -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)} \ -" - -# 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)} \ - \ - packagegroup-agl-networking \ - cluster-receiver \ - \ - simple-can-simulator \ - " - -# Flutter -IMAGE_INSTALL += "\ - flutter-cluster-dashboard \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "flutter-cluster-dashboard-conf-demo", "flutter-cluster-dashboard-conf", d)} \ - 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-platform.bb b/recipes-platform/images/agl-cluster-demo-qt.bb similarity index 55% rename from recipes-platform/images/agl-cluster-demo-platform.bb rename to recipes-platform/images/agl-cluster-demo-qt.bb index c427af66b..03dfb36cc 100644 --- a/recipes-platform/images/agl-cluster-demo-platform.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-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-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-image-ivi.bb b/recipes-platform/images/agl-image-ivi.bb deleted file mode 100644 index 69d0ed991..000000000 --- a/recipes-platform/images/agl-image-ivi.bb +++ /dev/null @@ -1,23 +0,0 @@ -SUMMARY = "A basic system of AGL distribution of IVI profile" - -DESCRIPTION = "Basic image for baseline of AGL Distribution for IVI profile." - -LICENSE = "MIT" - -require recipes-platform/images/agl-image-compositor.bb - -IMAGE_INSTALL += " \ - packagegroup-agl-ivi-connectivity \ - packagegroup-agl-ivi-graphics \ - packagegroup-agl-ivi-multimedia \ - packagegroup-agl-ivi-multimedia-hardware \ - 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" - - diff --git a/recipes-platform/images/agl-ivi-demo-base-flutter.bb b/recipes-platform/images/agl-ivi-demo-base-flutter.bb deleted file mode 100644 index ce2ea6bb2..000000000 --- a/recipes-platform/images/agl-ivi-demo-base-flutter.bb +++ /dev/null @@ -1,8 +0,0 @@ -require agl-ivi-demo-base.bb - -DESCRIPTION = "AGL Flutter demo base image" - -IMAGE_INSTALL += " \ - packagegroup-agl-demo-platform-flutter \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "weston-terminal-conf", d)} \ -" 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-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 diff --git a/recipes-platform/images/agl-ivi-demo-features.inc b/recipes-platform/images/agl-ivi-demo-features.inc index 9aabaafee..a63e2dfe0 100644 --- a/recipes-platform/images/agl-ivi-demo-features.inc +++ b/recipes-platform/images/agl-ivi-demo-features.inc @@ -1,19 +1,15 @@ require agl-demo-features.inc -FEATURE_PACKAGES_agl-demo-preload = "packagegroup-agl-demo-preload" +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)} \ -" - -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)} \ + ${TBTNAVI_CONF} \ + kuksa-databroker-agl-demo-cluster \ " IMAGE_FEATURES += " \ + kuksa-val-databroker \ kuksa-val-databroker-client \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "", "kuksa-val-databroker", d)} \ + ${@bb.utils.contains("DISTRO_FEATURES", "agl-devel", "can-test-tools" , "", 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 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-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-flutter.bb b/recipes-platform/images/agl-ivi-demo-flutter.bb new file mode 100644 index 000000000..5753d58af --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-flutter.bb @@ -0,0 +1,14 @@ +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 \ + ${FLUTTER_ICS_HOMESCREEN_CONF} \ + camera-gstreamer \ + ondemandnavi \ + ${ONDEMANDNAVI_CONF} \ +" diff --git a/recipes-platform/images/agl-ivi-demo-platform-html5.bb b/recipes-platform/images/agl-ivi-demo-html5.bb similarity index 62% rename from recipes-platform/images/agl-ivi-demo-platform-html5.bb rename to recipes-platform/images/agl-ivi-demo-html5.bb index 520b443e9..1141efc22 100644 --- a/recipes-platform/images/agl-ivi-demo-platform-html5.bb +++ b/recipes-platform/images/agl-ivi-demo-html5.bb @@ -1,10 +1,8 @@ -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 - CLANGSDK = "1" # add packages for demo platform (include demo apps) here diff --git a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb b/recipes-platform/images/agl-ivi-demo-platform-flutter.bb deleted file mode 100644 index 81a1c8046..000000000 --- a/recipes-platform/images/agl-ivi-demo-platform-flutter.bb +++ /dev/null @@ -1,11 +0,0 @@ -require agl-ivi-demo-base-flutter.bb - -DESCRIPTION = "AGL Flutter Demo Platform image" - -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)} \ - camera-gstreamer \ - ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ -" diff --git a/recipes-platform/images/agl-ivi-demo-platform.bb b/recipes-platform/images/agl-ivi-demo-platform.bb deleted file mode 100644 index 2854462cf..000000000 --- a/recipes-platform/images/agl-ivi-demo-platform.bb +++ /dev/null @@ -1,23 +0,0 @@ -require agl-ivi-demo-base.bb - -DESCRIPTION = "AGL Qt Demo Platform image" - -AGL_APPS_INSTALL += " \ - dashboard \ - hvac \ - ondemandnavi \ - ${@bb.utils.contains("AGL_FEATURES", "agl-kvm-host-kuksa", "ondemandnavi-conf-kvm-demo", "ondemandnavi-conf", d)} \ - settings \ - mediaplayer \ - messaging \ - phone \ - radio \ - window-management-client-grpc \ - camera-gstreamer \ -" - -IMAGE_INSTALL += " \ - packagegroup-agl-demo-platform \ - ${@bb.utils.contains("AGL_FEATURES", "agl-demo-preload", "", "weston-terminal-conf", d)} \ -" - 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-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 new file mode 100644 index 000000000..8fe988d06 --- /dev/null +++ b/recipes-platform/images/agl-ivi-demo-qt.bb @@ -0,0 +1,25 @@ +require agl-ivi-image.bb + +SUMMARY = "AGL IVI demo Qt image" + +ONDEMANDNAVI_CONF = "ondemandnavi-conf" + +AGL_APPS_INSTALL += " \ + dashboard \ + hvac \ + ondemandnavi \ + ${ONDEMANDNAVI_CONF} \ + settings \ + mediaplayer \ + messaging \ + phone \ + radio \ + window-management-client-grpc \ + camera-gstreamer \ +" + +IMAGE_INSTALL += " \ + packagegroup-agl-demo-platform \ + weston-terminal-conf \ +" + 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-image-flutter.bb b/recipes-platform/images/agl-ivi-image-flutter.bb new file mode 100644 index 000000000..0c227f0ea --- /dev/null +++ b/recipes-platform/images/agl-ivi-image-flutter.bb @@ -0,0 +1,8 @@ +require agl-ivi-image.bb + +SUMMARY = "AGL IVI demo base Flutter image" + +IMAGE_INSTALL += " \ + packagegroup-agl-demo-platform-flutter \ + weston-terminal-conf \ +" diff --git a/recipes-platform/images/agl-ivi-image.bb b/recipes-platform/images/agl-ivi-image.bb new file mode 100644 index 000000000..3783db939 --- /dev/null +++ b/recipes-platform/images/agl-ivi-image.bb @@ -0,0 +1,37 @@ +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 = "" + +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-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)} \ +" + 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 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/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/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 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/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" 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-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 \ +" 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