flutter-cluster-dashboard: fix KVM demo configurations 26/29926/2 master 17.91.0 ricefish/17.91.0 ricefish_17.91.0
authorScott Murray <scott.murray@konsulko.com>
Thu, 30 May 2024 18:12:49 +0000 (14:12 -0400)
committerScott Murray <scott.murray@konsulko.com>
Fri, 31 May 2024 15:10:54 +0000 (15:10 +0000)
While reviewing things to document them, I realized thath the
flutter-cluster-dashboard configuration for the plain KVM demo
image was incorrect, and that a separate configuration was
required for the preconfigured demo image where the databroker
runs on the KVM host.  This fixes the existing configuration
file, adds a new one, and updates the corresponding preconfigured
guest image.

Bug-AGL: SPEC-5138

Change-Id: Ib24d3e1e5018efffce1bc820a7fd4f26ac38ddd6
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl-demo/+/29926
ci-image-build: Jenkins Job builder account
ci-image-boot-test: Jenkins Job builder account
Tested-by: Jenkins Job builder account
179 files changed:
conf/conf-notes.txt
conf/layer.conf
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/basic.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/environment.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/misc.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/mount.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/network.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform/system.conf.agl-demo-platform.in [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-agl-demo-platform_1.0.bb [deleted file]
dynamic-layers/meta-agl-ic-container/recipes-platform/images/agl-lxc-demo-platform.bb [deleted file]
meta-agl-demo.md
meta-agl-kvm-demo/conf/layer.conf [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured-gateway.conf [moved from recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf with 88% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest-preconfigured.conf [moved from recipes-config/qemu-config/files/agl-cluster-demo-platform.conf with 73% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-cluster-demo-flutter-guest.conf [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured-gateway.conf [moved from recipes-config/qemu-config/files/agl-demo-platform.conf with 96% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest-preconfigured.conf [moved from recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf with 96% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/agl-ivi-demo-flutter-guest.conf [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/files/bridge.conf [moved from recipes-config/qemu-config/files/bridge.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/connman-nodnsproxy.conf [moved from recipes-config/qemu-config/files/connman-nodnsproxy.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/dnsmasq-qemu.conf [moved from recipes-config/qemu-config/files/dnsmasq-qemu.conf with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.netdev [moved from recipes-config/qemu-config/files/vmnet0.netdev with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/files/vmnet0.network [moved from recipes-config/qemu-config/files/vmnet0.network with 100% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest.bb [moved from recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb with 95% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured-gateway.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-ivi-demo-flutter-guest.bb [moved from recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb with 95% similarity]
meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-vmnet0.bb [moved from recipes-config/qemu-config/qemu-config-vmnet0.bb with 93% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb [moved from recipes-extended/agl-qemu-runner/agl-qemu-runner.bb with 100% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh [moved from recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh with 92% similarity]
meta-agl-kvm-demo/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service [moved from recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service with 100% similarity]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf.bbappend [new file with mode: 0644]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in [moved from recipes-graphics/wayland/weston-ini-conf/weston.ini.kvm.in with 77% similarity]
meta-agl-kvm-demo/recipes-graphics/wayland/weston-ini-conf_agldemo.inc [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured-gateway.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-cluster-demo-flutter-guest.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured-gateway.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-ivi-demo-flutter-guest.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured-gateway.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo-flutter-preconfigured.bb [new file with mode: 0644]
meta-agl-kvm-demo/recipes-platform/images/agl-kvm-demo.bb [moved from recipes-platform/images/agl-kvm-demo-platform.bb with 59% similarity]
recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb [deleted file]
recipes-config/qemu-config/qemu-config-agl-demo-platform.bb [deleted file]
recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.json [moved from recipes-demo/flutter-hvac/files/hvac.json with 74% similarity]
recipes-connectivity/agl-vss-proxy/agl-vss-proxy/agl-vss-proxy.token [moved from recipes-demo/flutter-dashboard/files/dashboard.token with 100% similarity]
recipes-connectivity/agl-vss-proxy/agl-vss-proxy_git.bb [new file with mode: 0644]
recipes-connectivity/cannelloni/cannelloni_%.bbappend [deleted file]
recipes-connectivity/cannelloni/cannelloni_agldemo.inc [deleted file]
recipes-connectivity/connman/connman-conf.bbappend [deleted file]
recipes-connectivity/connman/connman-conf_agldemo.inc [deleted file]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel.bb [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-control-panel/kuksa-dbc-feeder.control-panel [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel.bb [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-control-panel/kuksa-dbc-feeder.gw-control-panel [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware.bb [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/config.ini.gw-hardware [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder-can1.service [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder-conf-gw-hardware/kuksa-dbc-feeder.gw-hardware [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0001-dbc2val-add-installation-mechanism.patch
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0004-Enable-val2dbc-for-sensor-values.patch [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/agl-vcar.dbc
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/dbc_default_values.json [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.default [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-dbc-feeder/kuksa-dbc-feeder.service
recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
recipes-connectivity/kuksa-val/kuksa-val/0006-kuksa-val-server-OverlayLoader-explicitly-include-fs.patch [new file with mode: 0644]
recipes-connectivity/kuksa-val/kuksa-val_git.bb
recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch [deleted file]
recipes-connectivity/ofono/files/ofono.conf [deleted file]
recipes-connectivity/ofono/ofono_%.bbappend [deleted file]
recipes-connectivity/ofono/ofono_agldemo.inc [deleted file]
recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec
recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.control-panel [new file with mode: 0644]
recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-control-panel [new file with mode: 0644]
recipes-connectivity/vss/vss-agl/agl_vss_overlay.vspec.gw-hardware [new file with mode: 0644]
recipes-connectivity/vss/vss-agl_4.0.bb
recipes-demo/agl-demo-control-panel/agl-demo-control-panel_git.bb
recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.default [moved from recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf with 100% similarity]
recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo [new file with mode: 0644]
recipes-demo/agl-service-audiomixer/agl-service-audiomixer_git.bb
recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.default [moved from recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf with 100% similarity]
recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo [new file with mode: 0644]
recipes-demo/agl-service-hvac/agl-service-hvac_git.bb
recipes-demo/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor.service [deleted file]
recipes-demo/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor_git.bb [deleted file]
recipes-demo/cluster-receiver/cluster-receiver_git.bb
recipes-demo/cluster-receiver/qt-cluster-receiver_git.bb
recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.gateway-demo [new file with mode: 0644]
recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo [new file with mode: 0644]
recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo-preconfigured [new file with mode: 0644]
recipes-demo/flutter-cluster-dashboard/flutter-cluster-dashboard_git.bb
recipes-demo/flutter-dashboard/files/dashboard.yaml [deleted file]
recipes-demo/flutter-dashboard/flutter-dashboard_git.bb [deleted file]
recipes-demo/flutter-homescreen/files/flutter-homescreen.json [deleted file]
recipes-demo/flutter-homescreen/files/flutter-homescreen.service [deleted file]
recipes-demo/flutter-homescreen/files/homescreen.token [deleted file]
recipes-demo/flutter-homescreen/files/homescreen.yaml [deleted file]
recipes-demo/flutter-homescreen/flutter-homescreen_git.bb [deleted file]
recipes-demo/flutter-hvac/files/hvac.token [deleted file]
recipes-demo/flutter-hvac/files/hvac.yaml [deleted file]
recipes-demo/flutter-hvac/flutter-hvac_git.bb [deleted file]
recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.gateway-demo [new file with mode: 0644]
recipes-demo/flutter-ics-homescreen/files/ics-homescreen.yaml.kvm-gateway-demo [new file with mode: 0644]
recipes-demo/flutter-ics-homescreen/flutter-ics-homescreen_git.bb
recipes-demo/libqtappfw/libqtappfw_git.bb
recipes-demo/navigation/ondemandnavi/navigation.conf.gateway-demo [new file with mode: 0644]
recipes-demo/navigation/ondemandnavi_git.bb
recipes-demo/navigation/tbtnavi/tbtnavi.conf.gateway-demo [new file with mode: 0644]
recipes-demo/navigation/tbtnavi_git.bb
recipes-devtools/python/python3-cantools_39.%.bbappend [moved from recipes-devtools/python/python3-cantools_37.0.7.bbappend with 100% similarity]
recipes-devtools/python/python3-grpcio_1.62.%.bbappend [moved from recipes-devtools/python/python3-grpcio_1.45.0.bbappend with 100% similarity]
recipes-devtools/python/python3-pyqt5_5.15.%.bbappend [new file with mode: 0644]
recipes-devtools/python/python3-pyqt5_agldemo.inc [moved from recipes-devtools/python/python3-pyqt5_5.15.1.bbappend with 100% similarity]
recipes-graphics/libvncserver/libvncserver_0.9.14.bb [deleted file]
recipes-graphics/wayland/weston-ini-conf/remote-output.cfg.in [new file with mode: 0644]
recipes-graphics/wayland/weston-ini-conf_agldemo.inc
recipes-kernel/linux/linux/can-devices.cfg
recipes-kernel/linux/linux/most_deps.cfg
recipes-kernel/linux/linux/wifi.cfg
recipes-platform/images/agl-cluster-demo-flutter-preconfigured-gateway.bb [new file with mode: 0644]
recipes-platform/images/agl-cluster-demo-flutter-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-cluster-demo-flutter.bb [new file with mode: 0644]
recipes-platform/images/agl-cluster-demo-platform-flutter.bb [deleted file]
recipes-platform/images/agl-cluster-demo-qt-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-cluster-demo-qt.bb [moved from recipes-platform/images/agl-cluster-demo-platform.bb with 55% similarity]
recipes-platform/images/agl-cluster-demo-qtcompositor.bb [deleted file]
recipes-platform/images/agl-demo-platform-crosssdk.bb [deleted symlink]
recipes-platform/images/agl-demo-platform-html5.bb [deleted symlink]
recipes-platform/images/agl-demo-platform.bb [deleted symlink]
recipes-platform/images/agl-gateway-demo-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-gateway-demo.bb [new file with mode: 0644]
recipes-platform/images/agl-image-ivi.bb [deleted file]
recipes-platform/images/agl-ivi-crosssdk.inc
recipes-platform/images/agl-ivi-demo-base-flutter.bb [deleted file]
recipes-platform/images/agl-ivi-demo-base.bb [deleted file]
recipes-platform/images/agl-ivi-demo-control-panel-preconfigured-gateway.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-control-panel-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-control-panel.bb
recipes-platform/images/agl-ivi-demo-features.inc
recipes-platform/images/agl-ivi-demo-flutter-preconfigured-gateway.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-flutter-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-flutter.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-html5.bb [moved from recipes-platform/images/agl-ivi-demo-platform-html5.bb with 62% similarity]
recipes-platform/images/agl-ivi-demo-platform-flutter-simple.bb [deleted file]
recipes-platform/images/agl-ivi-demo-platform-flutter.bb [deleted file]
recipes-platform/images/agl-ivi-demo-platform.bb [deleted file]
recipes-platform/images/agl-ivi-demo-qt-crosssdk.bb [moved from recipes-platform/images/agl-ivi-demo-platform-crosssdk.bb with 79% similarity]
recipes-platform/images/agl-ivi-demo-qt-preconfigured.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-demo-qt.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-image-crosssdk.bb [moved from recipes-platform/images/agl-image-ivi-crosssdk.bb with 92% similarity]
recipes-platform/images/agl-ivi-image-flutter.bb [new file with mode: 0644]
recipes-platform/images/agl-ivi-image.bb [new file with mode: 0644]
recipes-platform/images/agl-telematics-demo.bb [moved from recipes-platform/images/agl-telematics-demo-platform.bb with 78% similarity]
recipes-platform/packagegroups/packagegroup-agl-demo-preload.bb [deleted file]
recipes-platform/packagegroups/packagegroup-agl-ivi-multimedia.bb
recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb
recipes-qt/qt/qtwayland/0001-qwaylandintegration-Keep-previous-check-related-to-i.patch
recipes-support/icu/icu_70.1.bbappend [deleted file]
recipes-support/icu/icu_74-%.bbappend [new file with mode: 0644]
recipes-support/icu/icu_74-1_agldemo.inc [moved from recipes-support/icu/icu_70.1_agldemo.inc with 100% similarity]
templates/feature/agl-demo-cluster-support/50_local.conf.inc [deleted file]
templates/feature/agl-demo-cluster-support/README_feature_agl-demo-cluster-support.md [deleted file]
templates/feature/agl-demo-cluster-support/included.dep [deleted file]
templates/feature/agl-demo-preload/50_local.conf.inc [deleted file]
templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md [deleted file]
templates/feature/agl-demo/50_bblayers.conf.inc
templates/feature/agl-demo/included.dep
templates/feature/agl-kvm-host-audio/50_local.conf.inc [deleted file]
templates/feature/agl-kvm-host-audio/README_feature_agl-kvm-host-kuksa.md [deleted file]
templates/feature/agl-kvm-host-audio/included.dep [deleted file]
templates/feature/agl-kvm-host-kuksa/50_local.conf.inc [deleted file]
templates/feature/agl-kvm-host-kuksa/README_feature_agl-kvm-host-kuksa.md [deleted file]
templates/feature/agl-kvm-host-kuksa/included.dep [deleted file]
templates/feature/agl-kvm/50_bblayers.conf.inc
templates/feature/agl-kvm/included.dep

index e267e3d..bf70e9e 100644 (file)
@@ -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
index 8aff0f9..7556a86 100644 (file)
@@ -14,6 +14,6 @@ BBFILES_DYNAMIC += " \
     aglcontainermc:${LAYERDIR}/dynamic-layers/meta-agl-ic-container/*/*/*.bbappend \
 "
 
-LAYERSERIES_COMPAT_agldemo = "kirkstone"
+LAYERSERIES_COMPAT_agldemo = "scarthgap"
 
 LAYERDEPENDS_agldemo = "aglcore qt5-layer openembedded-layer networking-layer multimedia-layer flutter-layer meta-app-framework"
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 (file)
index 1fd9f34..0000000
+++ /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 (file)
index 632252d..0000000
+++ /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 (file)
index 9b4f488..0000000
+++ /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 (file)
index 262f09b..0000000
+++ /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 (file)
index 573f479..0000000
+++ /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 (file)
index de7c6cd..0000000
+++ /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 (file)
index 049c8ab..0000000
+++ /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 (file)
index b840229..0000000
+++ /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 "
index 521ebad..69233c7 100755 (executable)
@@ -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 (file)
index 0000000..fdce152
--- /dev/null
@@ -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 = "scarthgap"
+
+LAYERDEPENDS_agl-kvm-demo-layer = "agldemo"
+
@@ -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"
@@ -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 (file)
index 0000000..37003ab
--- /dev/null
@@ -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"
@@ -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"
@@ -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 (file)
index 0000000..c2d420e
--- /dev/null
@@ -0,0 +1,13 @@
+QEMU_TASKSET_CPUS="0-3"
+QEMU_SMP_OPT="-smp 4"
+QEMU_MEM_OPT="-m 4G"
+# With touchscreen plugged into the bottom connector of the 2x USB 2.0
+# on the reference hardware
+QEMU_INPUT_OPT="-device qemu-xhci -usb -device usb-host,hostbus=5,hostport=1"
+# Fallback for touchscreen or other pointing device plugged in elsewhere
+#QEMU_INPUT_OPT="-device virtio-tablet-device"
+QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl"
+QEMU_NET_OPT="-netdev bridge,br=vmnet0,id=net0 -device virtio-net-device,mac=52:54:00:12:00:02,netdev=net0"
+QEMU_CAN_OPT="-object can-bus,id=canbus0 -object can-host-socketcan,id=canhost0,if=can0,canbus=canbus0 -device kvaser_pci,canbus=canbus0"
+QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
+QEMU_XDG_APP_ID="agl-ivi-demo"
diff --git a/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb b/meta-agl-kvm-demo/recipes-config/qemu-config/qemu-config-agl-cluster-demo-flutter-guest-preconfigured-gateway.bb
new file mode 100644 (file)
index 0000000..45568fa
--- /dev/null
@@ -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 (file)
index 0000000..b58dcae
--- /dev/null
@@ -0,0 +1,3 @@
+require qemu-config-agl-cluster-demo-flutter-guest.bb
+
+QEMU_IMAGE = "agl-cluster-demo-flutter-guest-preconfigured"
@@ -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 (file)
index 0000000..a8c8fa7
--- /dev/null
@@ -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 (file)
index 0000000..642876b
--- /dev/null
@@ -0,0 +1,3 @@
+require qemu-config-agl-ivi-demo-flutter-guest.bb
+
+QEMU_IMAGE = "agl-ivi-demo-flutter-guest-preconfigured"
@@ -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() {
@@ -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
@@ -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/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 (file)
index 0000000..423a469
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'weston-ini-conf_agldemo.inc', '', d)}
@@ -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 (file)
index 0000000..28f871a
--- /dev/null
@@ -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 (file)
index 0000000..2377d87
--- /dev/null
@@ -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 (file)
index 0000000..97ef377
--- /dev/null
@@ -0,0 +1,14 @@
+require agl-cluster-demo-flutter-guest.bb
+
+SUMMARY = "AGL KVM demo guest preconfigured cluster Flutter image"
+
+FLUTTER_CLUSTER_DASHBOARD_CONF = "flutter-cluster-dashboard-conf-kvm-demo-preconfigured"
+
+# 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 (file)
index 0000000..3cde0d0
--- /dev/null
@@ -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 (file)
index 0000000..2e9b2cc
--- /dev/null
@@ -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 (file)
index 0000000..a98cb58
--- /dev/null
@@ -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 (file)
index 0000000..f6e748b
--- /dev/null
@@ -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 (file)
index 0000000..b98f52e
--- /dev/null
@@ -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 (file)
index 0000000..ac392cb
--- /dev/null
@@ -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"
@@ -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 (file)
index 8e2aeb3..0000000
+++ /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 (file)
index da85b7a..0000000
+++ /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"
@@ -6,5 +6,5 @@
   ],
   "iat": 1516239022,
   "exp": 1767225599,
-  "scope": "actuate:Vehicle.Cabin.HVAC"
-}
+  "scope": "read"
+}
\ 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 (file)
index 0000000..b16116e
--- /dev/null
@@ -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/cannelloni/cannelloni_%.bbappend b/recipes-connectivity/cannelloni/cannelloni_%.bbappend
deleted file mode 100644 (file)
index 4619406..0000000
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'cannelloni_agldemo.inc', '', d)}
diff --git a/recipes-connectivity/cannelloni/cannelloni_agldemo.inc b/recipes-connectivity/cannelloni/cannelloni_agldemo.inc
deleted file mode 100644 (file)
index c83d535..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-PV = "1.0.0+git${SRCPV}"
-SRCREV = "071d2d0a2b7997d697fa1228423b329f817a237a"
diff --git a/recipes-connectivity/connman/connman-conf.bbappend b/recipes-connectivity/connman/connman-conf.bbappend
deleted file mode 100644 (file)
index 39792fd..0000000
+++ /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 (file)
index 7b736ec..0000000
+++ /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 (file)
index 0000000..3148721
--- /dev/null
@@ -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 (file)
index 0000000..8e73a89
--- /dev/null
@@ -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 (file)
index 0000000..4afcfaf
--- /dev/null
@@ -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 (file)
index 0000000..d6d2e60
--- /dev/null
@@ -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 (file)
index 0000000..513a3f6
--- /dev/null
@@ -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 (file)
index 0000000..ee3541a
--- /dev/null
@@ -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 (file)
index 0000000..6f123dd
--- /dev/null
@@ -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 (file)
index 0000000..562a56b
--- /dev/null
@@ -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
index 1e1ff5d..58ad325 100644 (file)
@@ -66,7 +66,7 @@ index 0000000..65f9157
 +    version_config={
 +        "template": "{tag}",
 +        "dev_template": "{tag}-{ccount}",
-+        "dirty_template": "{tag}-{ccount}-dirty",
++        "dirty_template": "{tag}+{ccount}-dirty",
 +        "starting_version": "0.1.0",
 +        "version_callback": None,
 +        "version_file": None,
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 (file)
index 0000000..7f22a90
--- /dev/null
@@ -0,0 +1,142 @@
+From d6f1aaa7f26aa52f4b219f60e704d5ab2954f082 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+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 <scott.murray@konsulko.com>
+---
+ 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
+
index 0d01213..e638d12 100644 (file)
@@ -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 (file)
index 0000000..0562569
--- /dev/null
@@ -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 (file)
index 0000000..5d78715
--- /dev/null
@@ -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
index a30018c..857f5c7 100644 (file)
@@ -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]
index 809152b..281f10a 100644 (file)
@@ -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/kuksa-val/kuksa-val/0006-kuksa-val-server-OverlayLoader-explicitly-include-fs.patch b/recipes-connectivity/kuksa-val/kuksa-val/0006-kuksa-val-server-OverlayLoader-explicitly-include-fs.patch
new file mode 100644 (file)
index 0000000..0f40a7c
--- /dev/null
@@ -0,0 +1,35 @@
+From 60561b755cbfbb3aa99b1a0d736cc89540636c00 Mon Sep 17 00:00:00 2001
+From: Denys Dmytriyenko <denys@konsulko.com>
+Date: Wed, 7 Jun 2023 21:16:30 +0000
+Subject: [PATCH] kuksa-val-server: OverlayLoader: explicitly include fstream
+ header
+
+Otherwise gcc13 now errors out:
+
+| .../kuksa-val-server/src/OverlayLoader.cpp: In function 'void applyOverlays(std::shared_ptr<ILogger>, std::vector<boost::filesystem::path>, std::shared_ptr<IVssDatabase>)':
+| .../kuksa-val-server/src/OverlayLoader.cpp:70:24: error: variable 'std::ifstream is' has initializer but incomplete type
+|    70 |       std::ifstream is(p.generic_string());
+|       |                        ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
+---
+ kuksa-val-server/src/OverlayLoader.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kuksa-val-server/src/OverlayLoader.cpp b/kuksa-val-server/src/OverlayLoader.cpp
+index bed9234..abd1945 100644
+--- a/kuksa-val-server/src/OverlayLoader.cpp
++++ b/kuksa-val-server/src/OverlayLoader.cpp
+@@ -23,6 +23,7 @@
+ /* helper fuctions to load overlays during server startup */
+ #include <stdexcept>
++#include <fstream>
+ #include <jsoncons/json.hpp>
+ #include "OverlayLoader.hpp"
+-- 
+2.25.1
+
index c564eab..64daba2 100644 (file)
@@ -19,6 +19,7 @@ SRC_URI += "file://kuksa-val.service \
             file://0003-Make-install-locations-configurable.patch;patchdir=.. \
             file://0004-Disable-default-fetch-and-build-of-googletest.patch;patchdir=.. \
             file://0005-kuksa-val-server-Add-missing-check_git-dependency.patch;patchdir=.. \
+            file://0006-kuksa-val-server-OverlayLoader-explicitly-include-fs.patch;patchdir=.. \
 "
 
 S = "${WORKDIR}/git/kuksa-val-server"
diff --git a/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch b/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch
deleted file mode 100644 (file)
index 7b44e48..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7782f8f9d9634ebeddafefedab10ba254f9cc34a Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Fri, 1 Mar 2019 17:53:17 +0900
-Subject: [PATCH] provision: allow duplicate entries from mbpi_lookup_apn()
- results
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
----
- plugins/provision.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/plugins/provision.c b/plugins/provision.c
-index 99c299eb..aa0b05e4 100644
---- a/plugins/provision.c
-+++ b/plugins/provision.c
-@@ -50,7 +50,7 @@ static int provision_get_settings(const char *mcc, const char *mnc,
-       DBG("Provisioning for MCC %s, MNC %s, SPN '%s'", mcc, mnc, spn);
--      apns = mbpi_lookup_apn(mcc, mnc, FALSE, &error);
-+      apns = mbpi_lookup_apn(mcc, mnc, TRUE, &error);
-       if (apns == NULL) {
-               if (error != NULL) {
-                       ofono_error("%s", error->message);
--- 
-2.20.1
-
diff --git a/recipes-connectivity/ofono/files/ofono.conf b/recipes-connectivity/ofono/files/ofono.conf
deleted file mode 100644 (file)
index e47214c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!-- This configuration file specifies the required security policies
-     for oFono core daemon to work. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-
-  <!-- ../system.conf have denied everything, so we just punch some holes -->
-
-  <policy user="root">
-    <allow own="org.ofono"/>
-    <allow send_destination="org.ofono"/>
-    <allow send_interface="org.ofono.Manager"/>
-    <allow send_interface="org.ofono.SimToolkitAgent"/>
-    <allow send_interface="org.ofono.PushNotificationAgent"/>
-    <allow send_interface="org.ofono.SmartMessagingAgent"/>
-    <allow send_interface="org.ofono.PositioningRequestAgent"/>
-    <allow send_interface="org.ofono.HandsfreeAudioAgent"/>
-    <allow send_interface="org.ofono.Modem"/>
-  </policy>
-
-  <policy at_console="true">
-    <allow send_destination="org.ofono"/>
-  </policy>
-
-  <policy context="default">
-    <deny send_destination="org.ofono"/>
-  </policy>
-
-</busconfig>
diff --git a/recipes-connectivity/ofono/ofono_%.bbappend b/recipes-connectivity/ofono/ofono_%.bbappend
deleted file mode 100644 (file)
index 0386aa9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'ofono_agldemo.inc', '', d)}
diff --git a/recipes-connectivity/ofono/ofono_agldemo.inc b/recipes-connectivity/ofono/ofono_agldemo.inc
deleted file mode 100644 (file)
index 2619835..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
-SRC_URI:append = "\
-    file://ofono.conf \
-    file://0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch \
-    "
-
-do_install:append() {
-    install -m 0644 ${WORKDIR}/ofono.conf ${D}${sysconfdir}/dbus-1/system.d/ofono.conf
-}
-
-SYSTEMD_AUTO_ENABLE = "enable"
index 6c0a08a..b8a01e3 100644 (file)
-# 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 (file)
index 0000000..b5e2b8a
--- /dev/null
@@ -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 (file)
index 0000000..6b0a9a3
--- /dev/null
@@ -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 (file)
index 0000000..869b33d
--- /dev/null
@@ -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
index 83fb4b1..00d83a7 100644 (file)
@@ -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"
index c3ae99d..06eae18 100644 (file)
@@ -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.gateway-demo b/recipes-demo/agl-service-audiomixer/agl-service-audiomixer/agl-service-audiomixer.conf.gateway-demo
new file mode 100644 (file)
index 0000000..c6095ac
--- /dev/null
@@ -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"
index e6b7d64..a1f6f79 100644 (file)
@@ -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.gateway-demo b/recipes-demo/agl-service-hvac/agl-service-hvac/agl-service-hvac.conf.gateway-demo
new file mode 100644 (file)
index 0000000..929bbc1
--- /dev/null
@@ -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"
index 73d35f5..721cdd7 100644 (file)
@@ -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-gauges-qtcompositor/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor.service b/recipes-demo/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor.service
deleted file mode 100644 (file)
index 083a1e1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=cluster-gauges-qtcompositor
-
-[Service]
-User=agl-driver
-Environment=XDG_RUNTIME_DIR=/run/user/1001
-ExecStart=/usr/bin/cluster-gauges
-
-Restart=always
-
-StandardOutput=journal
-StandardError=journal
-
-[Install]
-WantedBy=graphical.target
diff --git a/recipes-demo/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor_git.bb b/recipes-demo/cluster-gauges-qtcompositor/cluster-gauges-qtcompositor_git.bb
deleted file mode 100644 (file)
index 161e665..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-SUMMARY     = "Minimal cluster demo gauges that can be used standalone"
-DESCRIPTION = "AGL HMI Application for demonstrating instrument cluster gauges as a wayland compositor"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-cluster-demo-gauges"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0 & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
-                    file://app/cluster-gauges.qml;beginline=10;endline=49;md5=54187d50b29429abee6095fe8b7c1a78"
-
-DEPENDS = "qtquickcontrols2 qtwebsockets"
-
-PV = "1.0+git${SRCPV}"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-gauges;protocol=https;branch=${AGL_BRANCH} \
-           file://cluster-gauges-qtcompositor.service \
-"
-
-SRCREV  = "23eaf7da1f7d252aefddf9e41e52c745b7433b50"
-
-S  = "${WORKDIR}/git"
-
-inherit pkgconfig cmake_qt5 systemd
-
-SYSTEMD_SERVICE:${PN} = "${BPN}.service"
-
-do_install:append() {
-    install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service
-}
-
-RDEPENDS:${PN} += " \
-    qtquickcontrols \
-    qtquickcontrols-qmlplugins \
-    qtquickcontrols2 \
-    qtquickcontrols2-qmlplugins \
-    qtwebsockets \
-    qtwebsockets-qmlplugins \
-    kms-conf \
-"
index f28abcb..70e660c 100644 (file)
@@ -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"
 
index d50e9dd..e146a00 100644 (file)
@@ -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 (file)
index 0000000..662a350
--- /dev/null
@@ -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 (file)
index 0000000..17e5888
--- /dev/null
@@ -0,0 +1,4 @@
+hostname: 172.16.10.2
+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-preconfigured b/recipes-demo/flutter-cluster-dashboard/files/cluster-dashboard.yaml.kvm-demo-preconfigured
new file mode 100644 (file)
index 0000000..9267b4d
--- /dev/null
@@ -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"
index beee700..b09156b 100644 (file)
@@ -13,6 +13,9 @@ 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.yaml.kvm-demo-preconfigured \
     file://cluster-dashboard.token \
     file://kvm.conf \
 "
@@ -26,8 +29,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 +43,9 @@ 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.yaml.kvm-demo-preconfigured ${D}${sysconfdir}/xdg/AGL/
     install -m 0644 ${WORKDIR}/cluster-dashboard.token ${D}${sysconfdir}/xdg/AGL/cluster-dashboard/
 }
 
@@ -52,21 +55,42 @@ 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"
+
+PACKAGE_BEFORE_PN += "${PN}-conf-kvm-demo-preconfigured"
+FILES:${PN}-conf-kvm-demo-preconfigured += "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo-preconfigured"
+RDEPENDS:${PN}-conf-kvm-demo-preconfigured = "${PN} ${PN}-conf-kvm"
+RPROVIDES:${PN}-conf-kvm-demo-preconfigured = "cluster-dashboard.yaml"
+ALTERNATIVE:${PN}-conf-kvm-demo-preconfigured = "cluster-dashboard.yaml"
+ALTERNATIVE_TARGET_${PN}-conf-kvm-demo-preconfigured = "${sysconfdir}/xdg/AGL/cluster-dashboard.yaml.kvm-demo-preconfigured"
diff --git a/recipes-demo/flutter-dashboard/files/dashboard.yaml b/recipes-demo/flutter-dashboard/files/dashboard.yaml
deleted file mode 100644 (file)
index e54c469..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-authorization : "/etc/xdg/AGL/dashboard/dashboard.token"
-use-tls : true
diff --git a/recipes-demo/flutter-dashboard/flutter-dashboard_git.bb b/recipes-demo/flutter-dashboard/flutter-dashboard_git.bb
deleted file mode 100644 (file)
index d378df9..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-SUMMARY = "Flutter Dashboard"
-DESCRIPTION = "A Flutter based IVI Dashboard Application for automotive grade Linux."
-HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/flutter-dashboard"
-SECTION = "graphics"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://License.md;md5=f712ede8d4f845976061925d1416fc40"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-dashboard;protocol=https;branch=${AGL_BRANCH} \
-           file://dashboard.yaml \
-           file://dashboard.token \
-"
-SRCREV = "2fbe5f8c19863eb4ac013dce5546900592149a26"
-
-S = "${WORKDIR}/git"
-
-inherit agl-app flutter-app
-
-# flutter-app
-#############
-PUBSPEC_APPNAME = "dashboard_app"
-FLUTTER_BUILD_ARGS = "bundle -v"
-
-# agl-app
-#########
-AGL_APP_TEMPLATE = "agl-app-flutter"
-AGL_APP_ID = "dashboard_app"
-AGL_APP_NAME = "Dashboard"
-
-do_install:append() {
-    # 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}/xdg/AGL/dashboard
-    install -m 0644 ${WORKDIR}/dashboard.yaml ${D}${sysconfdir}/xdg/AGL/
-    install -m 0644 ${WORKDIR}/dashboard.token ${D}${sysconfdir}/xdg/AGL/dashboard/
-}
-
-FILES:${PN} += "${sysconfdir}/xdg/AGL"
-RDEPENDS:${PN} += "flutter-auto"
-
diff --git a/recipes-demo/flutter-homescreen/files/flutter-homescreen.json b/recipes-demo/flutter-homescreen/files/flutter-homescreen.json
deleted file mode 100644 (file)
index 83aa09a..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-        "view" : [ {
-                "window_type" : "BG",
-                "width" : 1920,
-                "height": 1080,
-                "fullscreen": true,
-                "window_activation_area" : { "x" : 0, "y" : 160, "width" : 1080, "height" : 1600 }
-                }
-        ]
-}
diff --git a/recipes-demo/flutter-homescreen/files/flutter-homescreen.service b/recipes-demo/flutter-homescreen/files/flutter-homescreen.service
deleted file mode 100644 (file)
index 3024fce..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Requires=agl-compositor.service applaunchd.service
-After=agl-compositor.service applaunchd.service
-
-[Service]
-User=agl-driver
-EnvironmentFile=/etc/default/flutter
-EnvironmentFile=-/etc/default/flutter-homescreen
-Environment=XDG_RUNTIME_DIR=/run/user/1001/
-ExecStart=/usr/bin/flutter-auto --b=/usr/share/flutter/flutter_homescreen/${FLUTTER_VERSION}/${FLUTTER_RUNTIME} --j=/usr/share/flutter/flutter-homescreen.json --xdg-shell-app-id=homescreen
-Restart=on-failure
-
-[Install]
-WantedBy=graphical.target
diff --git a/recipes-demo/flutter-homescreen/files/homescreen.token b/recipes-demo/flutter-homescreen/files/homescreen.token
deleted file mode 100644 (file)
index 110d3c4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJsb2NhbCBkZXYiLCJpc3MiOiJjcmVhdGVUb2tlbi5weSIsImF1ZCI6WyJrdWtzYS52YWwiXSwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3NjcyMjU1OTksInNjb3BlIjoiYWN0dWF0ZSBwcm92aWRlIn0.x-bUZwDCC663wGYrWCYjQZwQWhN1CMuKgxuIN5dUF_izwMutiqF6Xc-tnXgZa93BbT3I74WOMk4awKHBUSTWekGs3-qF6gajorbat6n5180TOqvNu4CXuIPZN5zpngf4id3smMkKOT699tPnSEbmlkj4vk-mIjeOAU-FcYA-VbkKBTsjvfFgKa2OdB5h9uZARBg5Rx7uBN3JsH1I6j9zoLid184Ewa6bhU2qniFt5iPsGJniNsKsRrrndN1KzthO13My44s56yvwSHIOrgDGbXdja_eLuOVOq9pHCjCtorPScgEuUUE4aldIuML-_j397taNP9Y3VZYVvofEK7AuiePTbzwxrZ1RAjK74h1-4ued3A2gUTjr5BsRlc9b7eLZzxLJkrqdfGAzBh_rtrB7p32TbvpjeFP30NW6bB9JS43XACUUm_S_RcyI7BLuUdnFyQDQr6l6sRz9XayYXceilHdCxbAVN0HVnBeui5Bb0mUZYIRZeY8k6zcssmokANTD8ZviDMpKlOU3t5AlXJ0nLkgyMhV9IUTwPUv6F8BTPc-CquJCUNbTyo4ywTSoODWbm3PmQ3Y46gWF06xqnB4wehLscBdVk3iAihQp3tckGhMnx5PI_Oy7utIncr4pRCMos63TnBkfrl7d43cHQTuK0kO76EWtv4ODEHgLvEAv4HA
\ No newline at end of file
diff --git a/recipes-demo/flutter-homescreen/files/homescreen.yaml b/recipes-demo/flutter-homescreen/files/homescreen.yaml
deleted file mode 100644 (file)
index b5849a3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-authorization : "/etc/xdg/AGL/homescreen/homescreen.token"
-use-tls : true
diff --git a/recipes-demo/flutter-homescreen/flutter-homescreen_git.bb b/recipes-demo/flutter-homescreen/flutter-homescreen_git.bb
deleted file mode 100644 (file)
index 0448bdd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "AGL Flutter Homescreen"
-DESCRIPTION = "Demo Flutter homescreen for Automotive Grade Linux."
-HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/flutter-homescreen"
-SECTION = "graphics"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-homescreen;protocol=https;branch=${AGL_BRANCH} \
-           file://flutter-homescreen.json \
-           file://flutter-homescreen.service \
-           file://homescreen.yaml \
-           file://homescreen.token \
-"
-SRCREV = "6c016a39fb993165d0c103691ecf5333e09ef438"
-
-S = "${WORKDIR}/git"
-
-PUBSPEC_APPNAME = "flutter_homescreen"
-FLUTTER_BUILD_ARGS = "bundle -v"
-
-inherit flutter-app systemd
-
-APP_CONFIG = "${BPN}.json"
-
-SYSTEMD_SERVICE:${PN} = "flutter-homescreen.service"
-
-do_install:append() {
-    install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service
-
-    install -D -m 0644 ${WORKDIR}/${APP_CONFIG} ${D}${datadir}/flutter/${BPN}.json
-
-    # 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}/xdg/AGL/homescreen
-    install -m 0644 ${WORKDIR}/homescreen.yaml ${D}${sysconfdir}/xdg/AGL/
-    install -m 0644 ${WORKDIR}/homescreen.token ${D}${sysconfdir}/xdg/AGL/homescreen/
-}
-
-FILES:${PN} += "${datadir} ${sysconfdir}/xdg/AGL"
-RDEPENDS:${PN} += "flutter-auto agl-flutter-env"
diff --git a/recipes-demo/flutter-hvac/files/hvac.token b/recipes-demo/flutter-hvac/files/hvac.token
deleted file mode 100644 (file)
index 76a554f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJsb2NhbCBkZXYiLCJpc3MiOiJjcmVhdGVUb2tlbi5weSIsImF1ZCI6WyJrdWtzYS52YWwiXSwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE3NjcyMjU1OTksInNjb3BlIjoiYWN0dWF0ZTpWZWhpY2xlLkNhYmluLkhWQUMifQ.mDJd7Xn2C6xH9BRTURC2LtN_wlUgq3hJxBWNq8Dpelq43-4qDrNtfOEg2VV5wBcXimg64TwnopCHauqKyilgDt1q0VFIH9vcpp2m8QMV9Z06tR8A3zAJJ9DX4qU3WluY_STR5lnzRwvIW9fuZmyJ_msdnUB3vLp7bS47uekE6rX0OwoBzrw2Z38D5dnLilR4uknwMdWCVciBIg00xyj6hkufHyIyvgVI2Yfl8XMLgdklmgGIYRb3ljPxHsZ8MQkULbjOWsdRKJNqHP-lU17e9avzvBBXecakB0-Q-QSkuZr5H8gWLJG1a6jfcgbah1JfLJVkKWjX9knGT5csvXMGt7Mf9bGg43xb2bPkolKnmEXIlRxWyXGr_DSLmrVMukY2G_cmpj4E1v2cyyu6AtzhGyli3BD1O7ZTywZlLdGvrhxlQ1FU22OPLV8yyUoppGZLyAF_4tUaftcXXoE1HbqgzpvlPp7leB-pwmNTr9-wT8D5YAt5E5YrWGZOH6OYg-oV9Hl7JU-2zfFdm0stK_6P5D1xt0kHEjbML16SGJVO49aoeP8Fj_cNG5tc7GqHOkHBWlH7YUx2Ty4PLd91DGGHkhA-69vGs2Fg3ljpej-IHbsY269HTQd7v_wyQk_rEDMNqsOssjuFVHEd8vzdmQ-hG5BB5d_oWtCww6AAWqIlIOo
\ No newline at end of file
diff --git a/recipes-demo/flutter-hvac/files/hvac.yaml b/recipes-demo/flutter-hvac/files/hvac.yaml
deleted file mode 100644 (file)
index 3684d3d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-authorization : "/etc/xdg/AGL/hvac/hvac.token"
-use-tls : true
diff --git a/recipes-demo/flutter-hvac/flutter-hvac_git.bb b/recipes-demo/flutter-hvac/flutter-hvac_git.bb
deleted file mode 100644 (file)
index 365cc57..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Flutter HVAC"
-DESCRIPTION = "A Flutter based IVI Dashboard Application for automotive grade Linux."
-
-HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/apps/flutter-hvac"
-
-BUGTRACKER = "https://github.com/hritik-chouhan/HVAC_dashboard/issues"
-
-SECTION = "graphics"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://License.md;md5=f712ede8d4f845976061925d1416fc40"
-
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/flutter-hvac;protocol=https;branch=${AGL_BRANCH} \
-    file://hvac.yaml \
-    file://hvac.token \
-    "
-
-SRCREV = "802b3f1fefae4b1c05484d2eb6656afcd7fceedf"
-S = "${WORKDIR}/git"
-
-inherit agl-app flutter-app
-
-# flutter-app
-#############
-PUBSPEC_APPNAME = "flutter_hvac"
-FLUTTER_BUILD_ARGS = "bundle -v"
-
-# agl-app
-#########
-AGL_APP_TEMPLATE = "agl-app-flutter"
-AGL_APP_ID = "flutter_hvac"
-AGL_APP_NAME = "HVAC"
-
-do_install:append() {
-    install -d ${D}${sysconfdir}/xdg/AGL/hvac
-    install -m 0644 ${WORKDIR}/hvac.yaml ${D}${sysconfdir}/xdg/AGL/
-    install -m 0644 ${WORKDIR}/hvac.token ${D}${sysconfdir}/xdg/AGL/hvac/
-}
-
-FILES:${PN} += "${sysconfdir}/xdg/AGL"
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 (file)
index 0000000..e9346bc
--- /dev/null
@@ -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 (file)
index 0000000..5d6e73b
--- /dev/null
@@ -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
index 576e5a7..45d75b7 100644 (file)
@@ -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"
index 85d20f4..f4e3607 100644 (file)
@@ -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 (file)
index 0000000..ed71a49
--- /dev/null
@@ -0,0 +1,4 @@
+[kuksa-client]
+hostname = "192.168.10.4"
+tls-server-name = "localhost"
+authorization = "/etc/xdg/AGL/navigation/navigation.token"
index 7bfa000..cf53b2b 100644 (file)
@@ -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 (file)
index 0000000..6f52871
--- /dev/null
@@ -0,0 +1,4 @@
+[kuksa-client]
+hostname = "192.168.10.4"
+tls-server-name = "localhost"
+authorization = "/etc/xdg/AGL/tbtnavi/tbtnavi.token"
index b3703c5..3c6571b 100644 (file)
@@ -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-pyqt5_5.15.%.bbappend b/recipes-devtools/python/python3-pyqt5_5.15.%.bbappend
new file mode 100644 (file)
index 0000000..34108b9
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'python3-pyqt5_agldemo.inc', '', d)}
diff --git a/recipes-graphics/libvncserver/libvncserver_0.9.14.bb b/recipes-graphics/libvncserver/libvncserver_0.9.14.bb
deleted file mode 100644 (file)
index 3278817..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-DESCRIPTION = "library for easy implementation of a RDP/VNC server"
-HOMEPAGE = "https://libvnc.github.io"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL-2.0-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=361b6b837cad26c6900a926b62aada5f"
-
-SRC_URI = "git://github.com/LibVNC/libvncserver;branch=master;protocol=https"
-SRCREV := "10e9eb75f73e973725dc75c373de5d89807af028"
-
-S = "${WORKDIR}/git"
-
-inherit cmake
-
-# ffmpeg support is not currently compatible with ffmpeg 5.0
-PACKAGECONFIG ??= " \
-    24bpp \
-    filetransfer \
-    gcrypt \
-    gnutls \
-    jpeg \
-    lzo \
-    png \
-    pthread \
-    ${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'ipv6', '',d)} \
-    sdl \
-    websockets \
-    zlib \
-"
-
-PACKAGECONFIG[24bpp] = "-DWITH_24BPP=ON,-DWITH_24BPP=OFF,"
-PACKAGECONFIG[filetransfer] = "-DWITH_TIGHTVNC_FILETRANSFER=ON,-DWITH_TIGHTVNC_FILETRANSFER=OFF,"
-PACKAGECONFIG[ffmpeg] = "-DWITH_FFMPEG=ON,-DWITH_FFMPEG=OFF,ffmpeg,ffmpeg"
-PACKAGECONFIG[gcrypt] = "-DWITH_GCRYPT=ON,-DWITH_GCRYPT=OFF,libgcrypt,libgcrypt"
-PACKAGECONFIG[gnutls] = "-DWITH_GNUTLS=ON,-DWITH_GNUTLS=OFF,gnutls"
-PACKAGECONFIG[jpeg] = "-DWITH_JPEG=ON,-DWITH_JPEG=OFF,jpeg"
-PACKAGECONFIG[ipv6] = "-DWITH_IPv6=ON,-DWITH_IPv6=OFF,"
-PACKAGECONFIG[lzo] = "-DWITH_LZO=ON,-DWITH_LZO=OFF,lzo"
-PACKAGECONFIG[openssl] = "-DWITH_OPENSSL=ON,-DWITH_OPENSSL=OFF,openssl"
-PACKAGECONFIG[png] = "-DWITH_PNG=ON,-DWITH_PNG=OFF,libpng,libpng"
-PACKAGECONFIG[pthread] = "-DWITH_THREADS=ON,-DWITH_THREADS=OFF,"
-PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=ON,-DWITH_SYSTEMD=OFF,systemd"
-PACKAGECONFIG[sasl] = "-DWITH_SASL=ON,-DWITH_SASL=OFF,cyrus-sasl"
-PACKAGECONFIG[sdl] = "-DWITH_SDL=ON,-DWITH_SDL=OFF,libsdl2"
-PACKAGECONFIG[websockets] = "-DWITH_WEBSOCKETS=ON,-DWITH_WEBSOCKETS=OFF,"
-PACKAGECONFIG[zlib] = "-DWITH_ZLIB=ON,-DWITH_ZLIB=OFF,zlib"
-
-PACKAGE_BEFORE_PN = "libvncclient"
-FILES:libvncclient = "${libdir}/libvncclient.*"
-
-
-
-EXTRA_OECMAKE = "-DMAKE_INSTALL_LIBDIR=${libdir}"
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 (file)
index 0000000..940cbdd
--- /dev/null
@@ -0,0 +1,5 @@
+[remote-output]
+name=remote-1
+mode=640x720@30
+host=192.168.10.3
+port=5005
index 6d6a0a8..14290b9 100644 (file)
@@ -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"
index 2b4f317..77a8bff 100644 (file)
@@ -4,7 +4,6 @@
 CONFIG_CAN_SLCAN=m
 CONFIG_CAN_DEV=m
 CONFIG_CAN_CALC_BITTIMING=y
-# CONFIG_CAN_LEDS is not set
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN_PLATFORM=m
 # CONFIG_CAN_SJA1000 is not set
@@ -20,7 +19,7 @@ CONFIG_CAN_MCP251X=m
 # CAN USB interfaces
 #
 # CONFIG_CAN_EMS_USB is not set
-CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_ESD_USB=m
 CONFIG_CAN_GS_USB=m
 CONFIG_CAN_KVASER_USB=m
 CONFIG_CAN_PEAK_USB=m
index 15ddbd2..53964a5 100644 (file)
@@ -6,4 +6,3 @@ CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=m
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
-CONFIG_VIDEO_V4L2=m
index 879a6f2..e289062 100644 (file)
@@ -2,5 +2,4 @@ CONFIG_CFG80211=m
 CONFIG_MAC80211=m
 CONFIG_WLAN_VENDOR_ATH=y
 CONFIG_ATH9K_HTC=m
-CONFIG_STAGING=y
-CONFIG_R8188EU=m
+CONFIG_RTL8XXXU=m
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 (file)
index 0000000..767d339
--- /dev/null
@@ -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 (file)
index 0000000..3516007
--- /dev/null
@@ -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 (file)
index 0000000..dfa2562
--- /dev/null
@@ -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 (file)
index 5cf3daf..0000000
+++ /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 (file)
index 0000000..c993406
--- /dev/null
@@ -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 \
+"
@@ -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-cluster-demo-qtcompositor.bb b/recipes-platform/images/agl-cluster-demo-qtcompositor.bb
deleted file mode 100644 (file)
index 69dee2d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "AGL Cluster Demo Qtwayland Compositor image currently contains a \
-simple cluster interface."
-
-LICENSE = "MIT"
-
-require recipes-platform/images/agl-image-weston.bb
-
-IMAGE_FEATURES += "splash package-management ssh-server-dropbear"
-
-# Add packages for qtcompositor demo
-IMAGE_INSTALL += "cluster-gauges-qtcompositor"
diff --git a/recipes-platform/images/agl-demo-platform-crosssdk.bb b/recipes-platform/images/agl-demo-platform-crosssdk.bb
deleted file mode 120000 (symlink)
index 70daba0..0000000
+++ /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 (symlink)
index fabf5e3..0000000
+++ /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 (symlink)
index ff29cf3..0000000
+++ /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 (file)
index 0000000..4a9cf0b
--- /dev/null
@@ -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 (file)
index 0000000..1e800c5
--- /dev/null
@@ -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 (file)
index 69d0ed9..0000000
+++ /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"
-
-
index 551c034..f9f99d8 100644 (file)
@@ -18,4 +18,7 @@ TOOLCHAIN_HOST_TASK += "nativesdk-grpc nativesdk-grpc-dev"
 # Add gcc-sanitizers to support building applications using the SDK with
 # AddressSanitizer support to detect use-after-frees along with other
 # memory issue.
-TOOLCHAIN_TARGET_TASK += "gcc-sanitizers"
+TOOLCHAIN_SANITIZERS_TASKS = "gcc-sanitizers"
+# gcc-sanitizers is currently (scarthgap) not supported on RISC-V
+TOOLCHAIN_SANITIZERS_TASKS:riscv64 = ""
+TOOLCHAIN_TARGET_TASK += "${TOOLCHAIN_SANITIZERS_TASKS}"
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 (file)
index ce2ea6b..0000000
+++ /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 (file)
index da4d268..0000000
+++ /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 (file)
index 0000000..19575a8
--- /dev/null
@@ -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 (file)
index 0000000..1107b9c
--- /dev/null
@@ -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 \
+"
index 21785ca..7524ada 100644 (file)
@@ -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
index 9aabaaf..a63e2df 100644 (file)
@@ -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 (file)
index 0000000..1bbd483
--- /dev/null
@@ -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 (file)
index 0000000..7d76f4c
--- /dev/null
@@ -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-flutter.bb b/recipes-platform/images/agl-ivi-demo-flutter.bb
new file mode 100644 (file)
index 0000000..5753d58
--- /dev/null
@@ -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} \
+"
@@ -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-simple.bb b/recipes-platform/images/agl-ivi-demo-platform-flutter-simple.bb
deleted file mode 100644 (file)
index f1932df..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-require agl-ivi-demo-base-flutter.bb
-
-DESCRIPTION = "AGL Flutter Demo Platform image"
-
-AGL_APPS_INSTALL += " \
-    flutter-homescreen \
-    flutter-dashboard \
-    flutter-hvac \
-    ondemandnavi \
-    settings \
-    mediaplayer \
-    messaging \
-    phone \
-    radio \
-"
-
-IMAGE_INSTALL += " \
-    qtquickcontrols2-agl \
-    qtquickcontrols2-agl-style \
-"
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 (file)
index 81a1c80..0000000
+++ /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 (file)
index 2854462..0000000
+++ /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)} \
-"
-
@@ -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 (file)
index 0000000..fa1313e
--- /dev/null
@@ -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 (file)
index 0000000..8fe988d
--- /dev/null
@@ -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 \
+"
+
@@ -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 (file)
index 0000000..0c227f0
--- /dev/null
@@ -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 (file)
index 0000000..3783db9
--- /dev/null
@@ -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)} \
+"
+
@@ -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 (file)
index 808c93c..0000000
+++ /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 \
-"
index 78c96fa..be2ac44 100644 (file)
@@ -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
index c3a53d5..94cee97 100644 (file)
@@ -18,6 +18,7 @@ RDEPENDS:${PN}-platform += " \
     agl-service-hvac \
     agl-service-audiomixer \
     agl-service-radio \
+    mpd \
 "
 
 RDEPENDS:${PN} += " \
index 77362da..b34f84d 100644 (file)
@@ -21,7 +21,7 @@ index c53ccb78..6d3d9559 100644
      }
  #endif
  
--    qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
+-    qCDebug(lcQpaWayland) << "using input method:" << (inputContext() ? inputContext()->metaObject()->className() : "<none>");
 +    bool mUsingInputContextFromCompositor = qobject_cast<QWaylandInputContext *>(mInputContext.data());
 +    if (mUsingInputContextFromCompositor)
 +        qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
diff --git a/recipes-support/icu/icu_70.1.bbappend b/recipes-support/icu/icu_70.1.bbappend
deleted file mode 100644 (file)
index b30ade4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'icu_70.1_agldemo.inc', '', d)}
\ No newline at end of file
diff --git a/recipes-support/icu/icu_74-%.bbappend b/recipes-support/icu/icu_74-%.bbappend
new file mode 100644 (file)
index 0000000..cf4061e
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'agldemo', 'icu_74-1_agldemo.inc', '', d)}
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 (file)
index 188d8e8..0000000
+++ /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 (file)
index a9ff2cf..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: Feature agl-demo-cluster-support
-authors: Scott Murray <scott.murray@konsulko.com>
----
-       
-### 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 (file)
index 1e9b35f..0000000
+++ /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 (file)
index 00ff3b7..0000000
+++ /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 (file)
index e5ec847..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-demo-preload
-authors: Scott Murray <scott.murray@konsulko.com>
----
-       
-### Feature agl-demo-preload
-        
-*Description is missing - please complete file meta-agl-demo/templates/feature/agl-demo-preload/README_feature_agl-demo-preload.md*
-
index 37b44ec..dee536e 100644 (file)
@@ -9,3 +9,6 @@ AGL_META_MULTIMEDIA = "${METADIR}/external/meta-openembedded/meta-multimedia"
 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 build CEF and WAM
+AGL_META_CLANG = "${METADIR}/external/meta-clang"
index e94759e..a81b5a4 100644 (file)
@@ -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 (file)
index 7bd20e3..0000000
+++ /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 (file)
index 93a4b9a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: Feature agl-kvm-host-audio
-authors: Scott Murray <scott.murray@konsulko.com>
----
-
-### 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 (file)
index f1f0a2f..0000000
+++ /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 (file)
index 6259e41..0000000
+++ /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 (file)
index 1b607aa..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
----
-description: Feature agl-kvm-host-kuksa
-authors: Scott Murray <scott.murray@konsulko.com>
----
-
-### 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 (file)
index b2b1014..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-kvm
index e5e3911..162f458 100644 (file)
@@ -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 \
+"
index f61c6e0..82639da 100644 (file)
@@ -1 +1 @@
-agl-demo agl-demo-cluster-support agl-demo-preload
+agl-demo