summaryrefslogtreecommitdiffstats
path: root/meta-agl-demo
diff options
context:
space:
mode:
authortakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-22 14:58:56 +0900
committertakeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp>2020-10-22 14:58:56 +0900
commit4204309872da5cb401cbb2729d9e2d4869a87f42 (patch)
treec7415e8600205e40ff7e91e8e5f4c411f30329f2 /meta-agl-demo
parent5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (diff)
Diffstat (limited to 'meta-agl-demo')
-rw-r--r--meta-agl-demo/.gitreview2
-rw-r--r--meta-agl-demo/README.md25
-rw-r--r--meta-agl-demo/conf/include/agl-demo-preload.inc4
-rwxr-xr-xmeta-agl-demo/meta-agl-demo.md22
-rw-r--r--meta-agl-demo/recipes-apis/agl-service-can-high-level-viwi/agl-service-can-high-level-viwi.bb19
-rw-r--r--meta-agl-demo/recipes-config/cluster-demo-simulator/cluster-demo-simulator.bb31
-rw-r--r--meta-agl-demo/recipes-config/cluster-demo-simulator/files/cluster-demo-simulator.service13
-rwxr-xr-xmeta-agl-demo/recipes-config/cluster-demo-simulator/files/simple_can_simulator.py381
-rw-r--r--meta-agl-demo/recipes-config/cluster-lin-bridging-config/cluster-lin-bridging-config.bb29
-rw-r--r--meta-agl-demo/recipes-config/cluster-lin-bridging-config/files/cluster-lin-bridging.service11
-rw-r--r--meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo/dev-mapping.conf.demo6
-rw-r--r--meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo_1.0.bb18
-rw-r--r--meta-agl-demo/recipes-config/unicens-config/files/unicens-config.sh59
-rw-r--r--meta-agl-demo/recipes-connectivity/btwilink-disable-conf/btwilink-disable-conf_1.0.bb2
-rw-r--r--meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/99-agl-led-rtc.rules20
-rwxr-xr-xmeta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite.sh22
-rw-r--r--meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite@.service8
-rw-r--r--meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac.json.in7
-rwxr-xr-xmeta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach.sh11
-rw-r--r--meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach@.service4
-rw-r--r--meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf_1.0.bb35
-rw-r--r--meta-agl-demo/recipes-demo-hmi/alexa-viewer/alexa-viewer_git.bb33
-rw-r--r--meta-agl-demo/recipes-demo-hmi/dashboard/dashboard_git.bb7
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-dashboard/html5-dashboard_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-homescreen/html5-homescreen_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-hvac/html5-hvac_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-launcher/html5-launcher_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-mediaplayer/html5-mediaplayer_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-mixer/html5-mixer_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/html5-settings/html5-settings_git.bb25
-rw-r--r--meta-agl-demo/recipes-demo-hmi/hvac/hvac_git.bb4
-rw-r--r--meta-agl-demo/recipes-demo-hmi/libqtappfw/libqtappfw_git.bb20
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/libnaviapi-agl_git.bb18
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/0002-openssl-1.1-fixes.patch31
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer-settings.sh23
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer.service22
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_%.bbappend25
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/mapviewer_git.bb28
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-jp_1.0.bb14
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-uk_1.0.bb14
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/navigation-maps.inc14
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/navigation/0001-switch-to-pipewire-output.patch34
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/navigation/0002-openssl-1.1-fixes.patch31
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/navigation/0003-update-permissions.patch22
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_jp.sh61
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_uk.sh61
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/navigation/org.agl.naviapi.conf15
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/navigation_git.bb52
-rw-r--r--[-rwxr-xr-x]meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi-config/naviconfig.ini5
-rwxr-xr-xmeta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi/org.agl.naviapi.conf15
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi_git.bb14
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/poiapp_git.bb5
-rw-r--r--meta-agl-demo/recipes-demo-hmi/navigation/tbtnavi_git.bb36
-rw-r--r--meta-agl-demo/recipes-demo-hmi/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb2
-rw-r--r--meta-agl-demo/recipes-demo-hmi/settings/settings_git.bb8
-rw-r--r--meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_20190815.bb (renamed from meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_git.bb)4
-rw-r--r--meta-agl-demo/recipes-kernel/sllin/files/lin_config.conf10
-rw-r--r--meta-agl-demo/recipes-kernel/sllin/files/sllin-demo-virtual.service12
-rw-r--r--meta-agl-demo/recipes-kernel/sllin/files/sllin-demo.service6
-rwxr-xr-xmeta-agl-demo/recipes-kernel/sllin/files/start_lin_demo.sh15
-rw-r--r--meta-agl-demo/recipes-kernel/sllin/sllin.bb14
-rwxr-xr-xmeta-agl-demo/recipes-platform/images/agl-demo-platform-crosssdk.bb16
-rw-r--r--meta-agl-demo/recipes-platform/images/agl-demo-platform-html5.bb14
-rw-r--r--meta-agl-demo/recipes-platform/images/agl-image-ivi-crosssdk.bb2
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb32
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb73
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo.bb50
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-image-ivi.bb9
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-connectivity.bb5
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-navigation.bb17
-rw-r--r--meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb30
-rw-r--r--meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch181
-rw-r--r--meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode_git.bb18
-rw-r--r--meta-agl-demo/recipes-support/lin-config/files/0001-Change-Makefile-to-use-pkg-config-for-libxml-2.0.patch33
-rw-r--r--meta-agl-demo/recipes-support/lin-config/files/0002-Change-Makefile-to-use-LDFLAGS.patch20
-rw-r--r--meta-agl-demo/recipes-support/lin-config/lin-config_git.bb25
-rw-r--r--meta-agl-demo/templates/feature/agl-demo-preload/50_local.conf.inc3
-rw-r--r--meta-agl-demo/templates/feature/agl-demo/included.dep2
78 files changed, 1447 insertions, 662 deletions
diff --git a/meta-agl-demo/.gitreview b/meta-agl-demo/.gitreview
index d3a39dae..efd4c751 100644
--- a/meta-agl-demo/.gitreview
+++ b/meta-agl-demo/.gitreview
@@ -2,4 +2,4 @@
host=gerrit.automotivelinux.org
port=29418
project=AGL/meta-agl-demo
-defaultbranch=halibut
+defaultbranch=icefish
diff --git a/meta-agl-demo/README.md b/meta-agl-demo/README.md
index c8d86760..847c773b 100644
--- a/meta-agl-demo/README.md
+++ b/meta-agl-demo/README.md
@@ -84,24 +84,25 @@ URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-renesas
> branch : master
* The feature `agl-sota` has these dependencies:
- * `meta-agl-extra/meta-sota`
- > URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-extra.git
- > branch : master
+ * `meta-updater`
+ > URI: https://github.com/advancedtelematic/meta-updater/
+ > branch : thud
+ > tested revision: e4dd74565f429b576e84972d12cc1ae2048be119
+
+ * `meta-updater-qemux86-64`
+ > URI: https://github.com/advancedtelematic/meta-updater-qemux86-64/
+ > branch : thud
+ > tested revision: 214e14c4c45625842e542eebd696f903060d488f
* `meta-openembedded`
> layer : meta-openembedded
- > branch : jethro
- > tested revision: 8ab04afbffb4bc5184cfe0655049de6f44269990
+ > branch : thud
+ > tested revision: 9b3b907f30b0d5b92d58c7e68289184fda733d3e
* specifically:
* `meta-openembedded/meta-filesystems`
- * `meta-openembedded/meta-ruby`
-
-
- * `meta-rust`
- > URI: https://github.com/konsulko/meta-rust
- > branch : jethro
- > tested revision: 395cde581938d862abb6a9219c0118c81cf01da2
+ * `meta-openembedded/meta-oe`
+ * `meta-openembedded/meta-python`
* The feature `agl-netboot` has these dependenies:
* `meta-agl/meta-netboot`
diff --git a/meta-agl-demo/conf/include/agl-demo-preload.inc b/meta-agl-demo/conf/include/agl-demo-preload.inc
new file mode 100644
index 00000000..a17d1403
--- /dev/null
+++ b/meta-agl-demo/conf/include/agl-demo-preload.inc
@@ -0,0 +1,4 @@
+DISTRO_FEATURES_append = " agl-demo-preload"
+
+# Use demo device mapping for low-can that enables sllin0
+PREFERRED_RPROVIDER_virtual/low-can-dev-mapping = "dev-mapping-demo"
diff --git a/meta-agl-demo/meta-agl-demo.md b/meta-agl-demo/meta-agl-demo.md
index 43a41ad3..c7b11de9 100755
--- a/meta-agl-demo/meta-agl-demo.md
+++ b/meta-agl-demo/meta-agl-demo.md
@@ -75,17 +75,22 @@ dependencies:
manifest file for the `AGL-repo` repository for revision
information.<br/><br/>
-* AGL's `meta-app-framework` Layer Within the `meta-agl` Layer:
+* AGL's `meta-app-framework` Layer within the `meta-agl` Layer:
- URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git
- Branch: "master"<br/><br/>
**The `agl-sota` Feature:**
-* AGL's `meta-sota` Layer Within the `meta-agl-extra` Layer:
+* Here Technologies' `meta-updater` Layer:
- - URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl-extra.git
- - Branch: "master"<br/><br/>
+ - URI: https://github.com/advancedtelematic/meta-updater/
+ - Branch: "thud"<br/><br/>
+
+* Here Technologies' `meta-updater-qemux86-64` Layer:
+
+ - URI: https://github.com/advancedtelematic/meta-updater-qemux86-64/
+ - Branch: "thud"<br/><br/>
* OpenEmbedded's `meta-openembedded` Layer:
@@ -95,12 +100,15 @@ dependencies:
manifest file for the `AGL-repo` repository for revision
information.
- In particular, the `meta-openembedded` layer depends on the
- `meta-filesystems` sub-layer.<br/><br/>
+ Specifically, out of `meta-openembedded`, these sub-layers are used:
+
+ - `meta-filesystems`
+ - `meta-oe`
+ - `meta-python`<br/><br/>
**The `agl-netboot` Feature:**
-* AGL's `meta-netboot` Layer Within the `meta-agl` Layer:
+* AGL's `meta-netboot` Layer within the `meta-agl` Layer:
- URI: https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git
- Branch: "master"
diff --git a/meta-agl-demo/recipes-apis/agl-service-can-high-level-viwi/agl-service-can-high-level-viwi.bb b/meta-agl-demo/recipes-apis/agl-service-can-high-level-viwi/agl-service-can-high-level-viwi.bb
new file mode 100644
index 00000000..7cc58dd7
--- /dev/null
+++ b/meta-agl-demo/recipes-apis/agl-service-can-high-level-viwi/agl-service-can-high-level-viwi.bb
@@ -0,0 +1,19 @@
+SUMMARY = "High level ViWi service"
+DESCRIPTION = "AGL High Level service using ViWi protocol to expose CAN API."
+HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-can-high-level-viwi/"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=5de84541278ea4e62cacfdc0f890c459"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-can-high-level-viwi;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+PV = "4.0+git${SRCPV}"
+S = "${WORKDIR}/git"
+
+# Run-time dependencies
+RDEPENDS_${PN} += "agl-service-can-low-level"
+
+inherit cmake aglwgt
+
+AGLWGT_AUTOINSTALL_${PN} := "0"
diff --git a/meta-agl-demo/recipes-config/cluster-demo-simulator/cluster-demo-simulator.bb b/meta-agl-demo/recipes-config/cluster-demo-simulator/cluster-demo-simulator.bb
new file mode 100644
index 00000000..171ea167
--- /dev/null
+++ b/meta-agl-demo/recipes-config/cluster-demo-simulator/cluster-demo-simulator.bb
@@ -0,0 +1,31 @@
+DESCRIPTION = "Simulate can messages of a driving car"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "\
+ file://cluster-demo-simulator.service \
+ file://simple_can_simulator.py \
+"
+
+inherit systemd
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "cluster-demo-simulator.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/cluster-demo-simulator.service ${D}${systemd_system_unitdir}
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/simple_can_simulator.py ${D}${sbindir}
+}
+
+FILES_${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS_${PN} = " \
+ can-utils \
+ python3 \
+"
diff --git a/meta-agl-demo/recipes-config/cluster-demo-simulator/files/cluster-demo-simulator.service b/meta-agl-demo/recipes-config/cluster-demo-simulator/files/cluster-demo-simulator.service
new file mode 100644
index 00000000..04d41c6c
--- /dev/null
+++ b/meta-agl-demo/recipes-config/cluster-demo-simulator/files/cluster-demo-simulator.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Cluster demo driving simulator
+After=sllin-demo.service sllin-demo-virtual.service cluster-lin-bridging.service
+Requires=sllin-demo.service sllin-demo-virtual.service cluster-lin-bridging.service
+
+[Service]
+Type=simple
+Restart=always
+RestartSec=1
+ExecStart=/usr/bin/python3 /usr/sbin/simple_can_simulator.py
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-demo/recipes-config/cluster-demo-simulator/files/simple_can_simulator.py b/meta-agl-demo/recipes-config/cluster-demo-simulator/files/simple_can_simulator.py
new file mode 100755
index 00000000..83f88706
--- /dev/null
+++ b/meta-agl-demo/recipes-config/cluster-demo-simulator/files/simple_can_simulator.py
@@ -0,0 +1,381 @@
+#!/usr/bin/env python3
+# Copyright (c) 2016 Alex Bencz
+# Copyright (c) 2019 Konsulko Group, smurray@konsulko.com
+# Copyright (c) 2020 The Linux Foundation, jsmoeller@linuxfoundation.org
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy of
+# this software and associated documentation files (the "Software"), to deal in
+# the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is furnished to do
+# so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+#
+# CANSocket from:
+#
+# https://github.com/abencz/python_socketcan/blob/master/python_socketcan_example.py
+#
+
+import sys
+import socket
+import argparse
+import struct
+import errno
+import threading
+import time
+
+class CANSocket(object):
+ FORMAT = "<IB3x8s"
+ FD_FORMAT = "<IB3x64s"
+
+ def __init__(self, interface=None):
+ self.sock = socket.socket(socket.PF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
+ if interface is not None:
+ self.bind(interface)
+
+ def bind(self, interface):
+ self.sock.bind((interface,))
+ self.sock.setsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_FD_FRAMES, 1)
+
+ def send(self, can_id, data, flags=0):
+ can_id = can_id | flags
+ can_pkt = struct.pack(self.FORMAT, can_id, len(data), data)
+ self.sock.send(can_pkt)
+
+ def sendfd(self, can_id, data, flags=0):
+ can_id = can_id | flags
+ datafd = data.ljust(64, b'\x00');
+ can_pkt = struct.pack(self.FD_FORMAT, can_id, len(datafd), datafd)
+ self.sock.send(can_pkt)
+
+ def recv(self, flags=0):
+ can_pkt = self.sock.recv(72)
+
+ if len(can_pkt) == 16:
+ can_id, length, data = struct.unpack(self.FORMAT, can_pkt)
+ else:
+ can_id, length, data = struct.unpack(self.FD_FORMAT, can_pkt)
+
+ can_id &= socket.CAN_EFF_MASK
+ return (can_id, data[:length])
+
+class VehicleSimulator(object):
+ DEFAULT_IDLE_RPM = 600
+
+ def __init__(self):
+ self.CRUISEMODE = False
+ self.CRUISEACTIVE = False
+ self.CRUISESPEED = 0
+ self.CRUISERPM = 0
+ self.freq = 10
+ self.vehicle_speed = 0
+ self.engine_speed = self.DEFAULT_IDLE_RPM
+ self.thread = threading.Thread(target=self.run, daemon=True)
+ self.lock = threading.Lock()
+
+ def reset(self):
+ with self.lock:
+ self.vehicle_speed = 0
+ self.engine_speed = self.DEFAULT_IDLE_RPM
+
+ def start(self):
+ self.thread.start()
+
+ def get_engine_speed(self):
+ with self.lock:
+ return int(self.engine_speed)
+
+ def get_vehicle_speed(self):
+ with self.lock:
+ return int(self.vehicle_speed)
+
+ def accelerate(self, target_speed, target_rpm, duration, bycruise = False):
+ if target_speed <= self.vehicle_speed:
+ return
+ v = (target_speed - self.vehicle_speed) / (duration * self.freq)
+ r = (target_rpm - self.engine_speed) / (duration * self.freq)
+ while self.vehicle_speed < target_speed and (not self.CRUISEACTIVE or bycruise):
+ with self.lock:
+ self.vehicle_speed += v;
+ self.engine_speed += r;
+ time.sleep(1 / self.freq)
+
+ def brake(self, target_speed, target_rpm, duration, bycruise = False):
+ if target_speed >= self.vehicle_speed:
+ return
+ v = (self.vehicle_speed - target_speed) / (duration * self.freq)
+ r = (self.engine_speed - target_rpm) / (duration * self.freq)
+ while self.vehicle_speed > target_speed and (not self.CRUISEACTIVE or bycruise):
+ with self.lock:
+ self.vehicle_speed -= v;
+ self.engine_speed -= r;
+ time.sleep(1 / self.freq)
+
+ def increase(self, bycruise = True):
+ if self.CRUISEACTIVE:
+ target_speed = self.vehicle_speed + 5
+ target_rpm = self.engine_speed * 1.1
+ self.accelerate(target_speed, target_rpm, 2, bycruise)
+
+ def decrease(self, bycruise = True):
+ if self.CRUISEACTIVE:
+ target_speed = self.vehicle_speed - 5
+ target_rpm = self.engine_speed * 0.9
+ self.brake(target_speed, target_rpm, 2, bycruise)
+
+ def resume(self, bycruise = True):
+ target_speed = self.CRUISESPEED
+ target_rpm = self.CRUISERPM
+ current_speed = self.get_vehicle_speed()
+ if target_speed > current_speed:
+ self.accelerate(target_speed, target_rpm, 2, bycruise)
+ else:
+ self.brake(target_speed, target_rpm, 2, bycruise)
+
+ def run(self):
+ while True:
+ if not self.CRUISEACTIVE:
+ self.accelerate(80, 3000, 5)
+ self.accelerate(104, 4000, 3)
+ self.brake(80, 3000, 3)
+ self.accelerate(104, 4000, 6)
+ self.brake(40, 2000, 4)
+ self.accelerate(90, 3000, 5)
+ self.brake(1, 650, 5)
+ if not self.CRUISEACTIVE:
+ self.reset()
+ time.sleep(5)
+
+class DiagnosticMessageHandler(object):
+ def __init__(self, can_sock, simulator, verbose=False):
+ self.can_sock = can_sock
+ self.simulator = simulator
+ self.verbose = verbose
+ self.thread = threading.Thread(target=self.run, daemon=True)
+
+ def start(self):
+ self.thread.start()
+
+ def run(self):
+ while True:
+ can_id, data = self.can_sock.recv()
+ #print('%03X#%s' % (can_id, ''.join(format(x, '02X') for x in data)))
+ if can_id == 0x7df:
+ # OBD-II request
+ if data[1] == 0x01 and data[2] == 0x0C:
+ # Engine speed
+ speed = self.simulator.get_engine_speed()
+ #print('engine speed = %d' % speed)
+ if speed > 16383.75:
+ speed = 16383.75
+ reply = [ 0x04, 0x41, 0x0C ]
+ reply.append(4 * speed // 256)
+ reply.append(4 * speed % 256)
+ # pad remaining bytes to make 8
+ reply.append(0)
+ reply.append(0)
+ reply.append(0)
+ self.can_sock.send(0x7e8, bytes(reply), 0)
+ elif data[1] == 0x01 and data[2] == 0x0D:
+ # Vehicle speed
+ speed = int(self.simulator.get_vehicle_speed()) % 256
+ #print('vehicle speed = %d' % speed)
+ reply = [ 0x03, 0x41, 0x0D ]
+ reply.append(speed)
+ # pad remaining bytes to make 8
+ reply.append(0)
+ reply.append(0)
+ reply.append(0)
+ reply.append(0)
+ self.can_sock.send(0x7e8, bytes(reply), 0)
+
+class SteeringWheelMessageHandler(object):
+ def __init__(self, can_sock, simulator, verbose=False):
+ self.can_sock = can_sock
+ self.simulator = simulator
+ self.verbose = verbose
+ self.thread = threading.Thread(target=self.run, daemon=True)
+ self.buttonpressed = False
+ self.buttonenabled = False
+ self.buttoncancel = False
+ self.buttondec = False
+ self.buttoninc = False
+ self.cruisemode = False
+ self.cruiseactive = False
+
+ def start(self):
+ self.thread.start()
+
+ def run(self):
+ while True:
+ can_id, data = self.can_sock.recv()
+ #print('%03X#%s' % (can_id, ''.join(format(x, '02X') for x in data)))
+ if can_id == 0x21:
+ #print('%03X#%s' % (can_id, ''.join(format(x, '02X') for x in data)))
+ if data:
+ #if data[6]:
+ #print('data6: %02X' % (data[6]))
+ if data[6] == 0x80 and not self.buttonpressed:
+ # we do skip any further lin messages
+ # two buttons at the same time won't work
+ # (aka unlikely w/o twisting fingers)
+ self.buttonpressed = True
+ self.buttonenabled = True
+ if data[6] == 0x08 and not self.buttonpressed:
+ self.buttonpressed = True
+ self.buttoncancel = True
+ if data[6] == 0x10 and not self.buttonpressed:
+ self.buttonpressed = True
+ self.buttondec = True
+ if data[6] == 0x40 and not self.buttonpressed:
+ self.buttonpressed = True
+ self.buttoninc = True
+ if data[6] == 0x00 and self.buttonpressed:
+ #now handle it as the button was released
+ if self.buttonenabled:
+ self.buttonenabled = False
+ self.cruisemode = not self.cruisemode
+ #print("set cruisemode to %s" % self.cruisemode)
+ self.simulator.CRUISEMODE = self.cruisemode
+ # disable/reset all if going off
+ if not self.cruisemode:
+ self.cruiseactive = False
+ self.simulator.CRUISEACTIVE = self.cruiseactive
+ self.simulator.CRUISESPEED = 0
+ self.simulator.CRUISERPM = 0
+ #print("set cruiseactive to %s" % self.cruiseactive)
+ if self.buttoncancel:
+ self.buttoncancel = False
+ self.simulator.CRUISESPEED = self.simulator.get_vehicle_speed()
+ self.simulator.CRUISERPM = self.simulator.get_engine_speed()
+ #print("set cruisespeed to %d" % self.simulator.CRUISESPEED )
+ #print("set cruiserpm to %d" % self.simulator.CRUISERPM )
+ self.cruiseactive = False
+ #print("set cruiseactive to %s" % self.cruiseactive )
+ self.simulator.CRUISEACTIVE = self.cruiseactive
+ if self.buttondec:
+ self.buttondec = False
+ if self.cruiseactive:
+ #print("decrease")
+ self.simulator.decrease()
+ else:
+ # set speed
+ #print("set speed")
+ self.simulator.CRUISESPEED = self.simulator.get_vehicle_speed()
+ self.simulator.CRUISERPM = self.simulator.get_engine_speed()
+ #print("set cruisespeed to %d" % self.simulator.CRUISESPEED )
+ #print("set cruiserpm to %d" % self.simulator.CRUISERPM )
+ self.cruiseactive = not self.cruiseactive
+ #print("set cruiseactive to %s" % self.cruiseactive )
+ self.simulator.CRUISEACTIVE = self.cruiseactive
+ if self.buttoninc:
+ self.buttoninc = False
+ if self.cruiseactive:
+ #print("increase")
+ self.simulator.increase()
+ else:
+ if self.simulator.CRUISESPEED > 0:
+ # resume
+ self.cruiseactive = not self.cruiseactive
+ self.simulator.CRUISEACTIVE = self.cruiseactive
+ #print("set cruiseactive to %s" % self.cruiseactive )
+ #print("resume")
+ self.simulator.resume()
+ self.buttonpressed = False
+
+
+class StatusMessageSender(object):
+ def __init__(self, can_sock, simulator, verbose=False):
+ self.can_sock = can_sock
+ self.simulator = simulator
+ self.verbose = verbose
+ self.thread = threading.Thread(target=self.run, daemon=True)
+
+ def start(self):
+ self.thread.start()
+
+ def run(self):
+ while True:
+ # Engine speed
+ speed = self.simulator.get_engine_speed()
+ if self.verbose:
+ print('engine speed = %d' % speed)
+ if speed > 16383.75:
+ speed = 16383.75
+ # Message is 1 byte unknown, 1 byte fuel level, 2 bytes engine speed (4x), fuel low @ bit 55
+ msg = [ 0, 0 ]
+ speed *= 4
+ msg.append(speed // 256)
+ msg.append(speed % 256)
+ # pad remaining bytes to make 8
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ self.can_sock.send(0x3d9, bytes(msg), 0)
+
+ # Vehicle speed
+ speed = int(self.simulator.get_vehicle_speed()) % 256
+ if self.verbose:
+ print('vehicle speed = %d' % speed)
+ # Message is 15 bits speed (64x), left aligned
+ msg = [ ]
+ # Note: extra 2x to yield required left-alignment
+ speed *= 128
+ msg.append(speed // 256)
+ msg.append(speed % 256)
+ # pad remaining bytes to make 8
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ msg.append(0)
+ self.can_sock.send(0x3e9, bytes(msg), 0)
+
+ # Sleep 100 ms
+ time.sleep(0.1)
+
+def main():
+ parser = argparse.ArgumentParser(description='Simple CAN vehicle simulator.')
+ parser.add_argument('interface', type=str, help='interface name (e.g. vcan0)')
+ parser.add_argument('-v', '--verbose', help='increase output verbosity', action='store_true')
+ args = parser.parse_args()
+
+ try:
+ can_sock = CANSocket(args.interface)
+ diag_can_sock = CANSocket(args.interface)
+ steeringwheel_can_sock = CANSocket(args.interface)
+ except OSError as e:
+ sys.stderr.write('Could not listen on interface {0}\n'.format(args.interface))
+ sys.exit(e.errno)
+
+ print('Using {0}'.format(args.interface))
+ sim = VehicleSimulator()
+ status_sender = StatusMessageSender(can_sock, sim, args.verbose)
+ diag_handler = DiagnosticMessageHandler(diag_can_sock, sim, args.verbose)
+ steeringwheel_handler = SteeringWheelMessageHandler(steeringwheel_can_sock, sim, args.verbose)
+ sim.start()
+ status_sender.start()
+ diag_handler.start()
+ steeringwheel_handler.start()
+ try:
+ while True:
+ time.sleep(60)
+ except (KeyboardInterrupt, SystemExit):
+ #sim.stop()
+ sys.exit(0)
+
+if __name__ == '__main__':
+ main()
diff --git a/meta-agl-demo/recipes-config/cluster-lin-bridging-config/cluster-lin-bridging-config.bb b/meta-agl-demo/recipes-config/cluster-lin-bridging-config/cluster-lin-bridging-config.bb
new file mode 100644
index 00000000..2b6567a7
--- /dev/null
+++ b/meta-agl-demo/recipes-config/cluster-lin-bridging-config/cluster-lin-bridging-config.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Configure LIN to external CAN bridging"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "\
+ file://cluster-lin-bridging.service \
+"
+
+inherit systemd
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE_${PN} = "cluster-lin-bridging.service"
+SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/cluster-lin-bridging.service ${D}${systemd_system_unitdir}
+}
+
+FILES_${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS_${PN} = " \
+ can-utils \
+ sllin \
+ sllin-virtual \
+"
diff --git a/meta-agl-demo/recipes-config/cluster-lin-bridging-config/files/cluster-lin-bridging.service b/meta-agl-demo/recipes-config/cluster-lin-bridging-config/files/cluster-lin-bridging.service
new file mode 100644
index 00000000..1dde3378
--- /dev/null
+++ b/meta-agl-demo/recipes-config/cluster-lin-bridging-config/files/cluster-lin-bridging.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=LIN to CAN bridging
+After=sllin-demo.service sllin-demo-virtual.service
+Requires=sllin-demo.service sllin-demo-virtual.service
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/candump -s 2 -B can0 sllin0
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo/dev-mapping.conf.demo b/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo/dev-mapping.conf.demo
new file mode 100644
index 00000000..93b0a020
--- /dev/null
+++ b/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo/dev-mapping.conf.demo
@@ -0,0 +1,6 @@
+; Default CAN device mapping
+; Format has to follow ini rules key="value", notice " around value.
+
+[CANbus-mapping]
+hs="can0"
+ls="sllin0"
diff --git a/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo_1.0.bb b/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo_1.0.bb
new file mode 100644
index 00000000..4a04ce13
--- /dev/null
+++ b/meta-agl-demo/recipes-config/dev-mapping-demo/dev-mapping-demo_1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "AGL demo device mapping configuration file"
+DESCRIPTION = "This provide default dev-mapping.conf file \
+ that defines mapping between kernel device and logical name \
+ used in low-can binding for the AGL demo setup."
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI += "file://dev-mapping.conf.demo"
+
+inherit allarch
+
+do_install() {
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/dev-mapping.conf.demo ${D}${sysconfdir}/dev-mapping.conf
+}
+
+RPROVIDES_${PN} = "virtual/low-can-dev-mapping"
diff --git a/meta-agl-demo/recipes-config/unicens-config/files/unicens-config.sh b/meta-agl-demo/recipes-config/unicens-config/files/unicens-config.sh
index 8d6072d3..1f7fd390 100644
--- a/meta-agl-demo/recipes-config/unicens-config/files/unicens-config.sh
+++ b/meta-agl-demo/recipes-config/unicens-config/files/unicens-config.sh
@@ -109,27 +109,28 @@ echo mdev2:ep01:ep01-6ch.6x16 > /sys/devices/virtual/most/mostcore/aims/sound/ad
# interface: mdev2
# aim: sound
-# name: ep81-2ch.2x16
+# name: ep81-1ch.1x16
echo rx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_direction 2>/dev/null
echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_datatype 2>/dev/null
echo 8 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_number_of_buffers 2>/dev/null
echo 2048 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_buffer_size 2>/dev/null
-echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_subbuffer_size 2>/dev/null
-echo 128 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_packets_per_xact 2>/dev/null
+echo 2 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_subbuffer_size 2>/dev/null
+echo 256 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_packets_per_xact 2>/dev/null
-echo mdev2:ep81:ep81-2ch.2x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link 2>/dev/null
+echo mdev2:ep81:ep81-1ch.1x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link 2>/dev/null
# interface: mdev2
# aim: sound
-# name: ep82-2ch.2x16
+# name: ep82-1ch.1x16
echo rx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_direction 2>/dev/null
echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_datatype 2>/dev/null
echo 8 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_number_of_buffers 2>/dev/null
echo 2048 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_buffer_size 2>/dev/null
-echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_subbuffer_size 2>/dev/null
-echo 128 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_packets_per_xact 2>/dev/null
+echo 2 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_subbuffer_size 2>/dev/null
+echo 256 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_packets_per_xact 2>/dev/null
+
+echo mdev2:ep82:ep82-1ch.1x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link 2>/dev/null
-echo mdev2:ep82:ep82-2ch.2x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link 2>/dev/null
##aim: cdev
##name: inic-usb-itx1
echo tx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_direction 2>/dev/null
@@ -140,45 +141,3 @@ echo 188 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_subbuffer_s
echo 2 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_packets_per_xact 2>/dev/null
echo mdev2:ep02:inic-usb-itx1 > /sys/devices/virtual/most/mostcore/aims/cdev/add_link 2>/dev/null
-
-##aim: sound
-##name: ep02-2ch.2x16
-#echo tx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_direction
-#echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_datatype
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_number_of_buffers
-#echo 1024 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep02/set_buffer_size
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep01/set_subbuffer_size
-#echo 128 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep01/set_packets_per_xact
-#
-#echo mdev2:ep02:ep02-2ch.2x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link
-##aim: sound
-##name: ep81-6ch.6x16
-#echo tx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_direction
-#echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_datatype
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_number_of_buffers
-#echo 1008 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_buffer_size
-#echo 12 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_subbuffer_size
-#echo 42 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_packets_per_xact
-#
-#echo mdev2:ep81:ep81-6ch.6x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link
-##aim: sound
-##name: ep82-6ch.6x16
-#echo tx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_direction
-#echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_datatype
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_number_of_buffers
-#echo 1008 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep81/set_buffer_size
-#echo 12 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_subbuffer_size
-#echo 42 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep82/set_packets_per_xact
-#
-#echo mdev2:ep82:ep82-6ch.6x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link
-##aim: sound
-##name: ep83-2ch.2x16
-#echo tx > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_direction
-#echo sync > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_datatype
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_number_of_buffers
-#echo 1024 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_buffer_size
-#echo 4 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_subbuffer_size
-#echo 128 > /sys/devices/virtual/most/mostcore/devices/mdev2/ep83/set_packets_per_xact
-#
-#echo mdev2:ep83:ep83-2ch.2x16 > /sys/devices/virtual/most/mostcore/aims/sound/add_link
-
diff --git a/meta-agl-demo/recipes-connectivity/btwilink-disable-conf/btwilink-disable-conf_1.0.bb b/meta-agl-demo/recipes-connectivity/btwilink-disable-conf/btwilink-disable-conf_1.0.bb
index 9170a84e..0b49a027 100644
--- a/meta-agl-demo/recipes-connectivity/btwilink-disable-conf/btwilink-disable-conf_1.0.bb
+++ b/meta-agl-demo/recipes-connectivity/btwilink-disable-conf/btwilink-disable-conf_1.0.bb
@@ -4,7 +4,7 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384
SRC_URI = "file://btwilink-disable.conf"
-COMPATIBLE_MACHINE = "m3ulcb"
+COMPATIBLE_MACHINE = "m3ulcb|h3ulcb"
do_compile[noexec] = "1"
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/99-agl-led-rtc.rules b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/99-agl-led-rtc.rules
new file mode 100644
index 00000000..34fa0678
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/99-agl-led-rtc.rules
@@ -0,0 +1,20 @@
+# skip instantiation of rtc in this processing
+ACTION=="add", SUBSYSTEM=="i2c", DRIVER=="rtc-ds1307", GOTO="hwclock_end"
+
+# load the required drivers (if not already present) - your job to make sure they are there !
+ACTION=="add", ENV{DEVTYPE}=="usb_interface", ENV{DRIVER}=="i2c-tiny-usb", RUN+="/usr/bin/logger 'Loading leds-blinkm'", RUN+="/sbin/modprobe leds-blinkm"
+ACTION=="add", ENV{DEVTYPE}=="usb_interface", ENV{DRIVER}=="i2c-tiny-usb", RUN+="/usr/bin/logger 'Loading rtc driver'", RUN+="/sbin/modprobe rtc-ds1307"
+
+# %k is the blinkm i2c device e.g. 6-0009
+ACTION=="add", ENV{DRIVER}=="blinkm", SUBSYSTEM=="i2c", RUN+="/usr/bin/logger 'the blinkm device is %k'", TAG+="systemd", ENV{SYSTEMD_WANTS}="hvac-json-in-rewrite@%k.service", GOTO="very_end"
+# FIXME: We do not exclude the blinkm on the next lines, yet. The rule is too broad, but that is all we know already. Above is actually later in time.
+# For now this is not critical as the rtc init will just fail and we're done.
+
+# %k is the i2c bus e.g. i2c-6
+ACTION=="add", SUBSYSTEM=="i2c", ATTRS{idProduct}=="c631", TAG+="systemd", ENV{SYSTEMD_WANTS}="rtc-i2c-attach@%k.service"
+
+# GOTO EXIT
+LABEL="hwclock_end"
+ACTION=="add", SUBSYSTEM=="rtc", RUN+="/bin/sleep 1", RUN+="/sbin/hwclock -f /dev/%k --hctosys --utc", TAG+="systemd"
+
+LABEL="very_end"
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite.sh b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite.sh
new file mode 100755
index 00000000..55576601
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# (C) 2018 Jan-Simon Möller, dl9pf@gmx.de, jsmoeller@linuxfoundation.org
+# License: Apache License 2.0
+
+#set -x
+set -e
+
+if [ $1 ] ; then
+ # The device is always 0009 -> 9 . Only change is the i2c IF .
+ LED=`echo $1 | sed -e "s#0009#9#g"`
+ if [ $? -eq 0 ] ; then
+ echo "$LED"
+ sed -e "s#@DEVICE@#$LED#" /etc/hvac.json.in > /etc/hvac.json
+ else
+ echo "Invalid argument"
+ exit 1
+ fi
+else
+ echo "Need argument"
+ exit 1
+fi \ No newline at end of file
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite@.service b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite@.service
new file mode 100644
index 00000000..2fb09959
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac-json-in-rewrite@.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=AGL hvac LED write /etc/hvac.json
+#Before= todo: add dependency of hvac service ?
+
+[Service]
+Type=oneshot
+ExecStartPre=/usr/bin/logger '#hvac i2c device has been attached - %i'
+ExecStart=/usr/sbin/hvac-json-in-rewrite.sh %i
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac.json.in b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac.json.in
new file mode 100644
index 00000000..01541a60
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/hvac.json.in
@@ -0,0 +1,7 @@
+{
+ "ledtemp": {
+ "red": "/sys/class/leds/blinkm-@DEVICE@-red/brightness",
+ "green": "/sys/class/leds/blinkm-@DEVICE@-green/brightness",
+ "blue": "/sys/class/leds/blinkm-@DEVICE@-blue/brightness"
+ }
+}
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach.sh b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach.sh
new file mode 100755
index 00000000..b45d83aa
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# ds1307
+echo "ds1307 0x68" > /sys/class/i2c-dev/$1/device/new_device
+
+#ds3231
+#echo "ds1307 0x57" > /sys/class/i2c-dev/$1/device/new_device
+
+#pcf85063
+#echo "pcf85063 0x51" > /sys/class/i2c-dev/$1/device/new_device
+
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach@.service b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach@.service
new file mode 100644
index 00000000..8788a25d
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf/rtc-i2c-attach@.service
@@ -0,0 +1,4 @@
+[Service]
+Type=oneshot
+ExecStartPre=/bin/echo '#i2c rtc device has been attached'
+ExecStart=/usr/sbin/rtc-i2c-attach.sh %i
diff --git a/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf_1.0.bb b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf_1.0.bb
new file mode 100644
index 00000000..04101cf3
--- /dev/null
+++ b/meta-agl-demo/recipes-core/udev/demo-i2c-udev-conf_1.0.bb
@@ -0,0 +1,35 @@
+SUMMARY = "USB attached I2C demo hardware udev configuration"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://hvac-json-in-rewrite.sh \
+ file://rtc-i2c-attach.sh \
+ file://hvac-json-in-rewrite@.service \
+ file://rtc-i2c-attach@.service \
+ file://99-agl-led-rtc.rules \
+ file://hvac.json.in \
+"
+
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/hvac.json.in ${D}${sysconfdir}
+
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/hvac-json-in-rewrite.sh ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/rtc-i2c-attach.sh ${D}${sbindir}
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/hvac-json-in-rewrite@.service ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/rtc-i2c-attach@.service ${D}${systemd_system_unitdir}
+
+ install -d ${D}${sysconfdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/99-agl-led-rtc.rules ${D}${sysconfdir}/udev/rules.d/
+ fi
+}
+
+FILES_${PN} += "${systemd_unitdir}"
+
+RDEPENDS_${PN} += "bash"
diff --git a/meta-agl-demo/recipes-demo-hmi/alexa-viewer/alexa-viewer_git.bb b/meta-agl-demo/recipes-demo-hmi/alexa-viewer/alexa-viewer_git.bb
new file mode 100644
index 00000000..f98704ee
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/alexa-viewer/alexa-viewer_git.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Demo voice capabilities template viewer for Alexa voiceagent"
+DESCRIPTION = "Demo voice capabilities template viewer for Alexa voiceagent"
+HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/alexa-viewer"
+SECTION = "apps"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
+
+DEPENDS = " \
+ qtquickcontrols2 \
+ qlibwindowmanager \
+ qlibhomescreen \
+ af-binder \
+ libqtappfw \
+"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/alexa-viewer;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git"
+
+inherit cmake_qt5 aglwgt
+
+OECMAKE_CXX_FLAGS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '' , '-DQT_NO_DEBUG_OUTPUT', d)}"
+
+RDEPENDS_${PN} = " \
+ libqtappfw \
+ libafbwsc \
+ qlibwindowmanager \
+ qlibhomescreen \
+ agl-service-voice-high-capabilities \
+"
diff --git a/meta-agl-demo/recipes-demo-hmi/dashboard/dashboard_git.bb b/meta-agl-demo/recipes-demo-hmi/dashboard/dashboard_git.bb
index 7ccbdeae..822207b1 100644
--- a/meta-agl-demo/recipes-demo-hmi/dashboard/dashboard_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/dashboard/dashboard_git.bb
@@ -13,6 +13,11 @@ PV = "1.0+git${SRCPV}"
S = "${WORKDIR}/git"
# build-time dependencies
-DEPENDS += "qtquickcontrols2 qttools-native qtaglextras"
+DEPENDS += "qtquickcontrols2 qttools-native qtaglextras libqtappfw"
inherit qmake5 aglwgt
+
+RDEPENDS_${PN} += " \
+ libqtappfw \
+ agl-service-signal-composer \
+"
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-dashboard/html5-dashboard_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-dashboard/html5-dashboard_git.bb
new file mode 100644
index 00000000..534bd2d3
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-dashboard/html5-dashboard_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 dashboard Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-dashboard/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-dashboard;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-homescreen/html5-homescreen_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-homescreen/html5-homescreen_git.bb
new file mode 100644
index 00000000..68956263
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-homescreen/html5-homescreen_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 Homescreen Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-homescreen/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-homescreen;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-hvac/html5-hvac_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-hvac/html5-hvac_git.bb
new file mode 100644
index 00000000..d45dc80d
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-hvac/html5-hvac_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 HVAC Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-hvac/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-hvac;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-launcher/html5-launcher_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-launcher/html5-launcher_git.bb
new file mode 100644
index 00000000..ce8a1d11
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-launcher/html5-launcher_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 Launcher Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-launcher/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-launcher;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-mediaplayer/html5-mediaplayer_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-mediaplayer/html5-mediaplayer_git.bb
new file mode 100644
index 00000000..2b143766
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-mediaplayer/html5-mediaplayer_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 Mediaplayer Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-mediaplayer/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-mediaplayer;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-mixer/html5-mixer_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-mixer/html5-mixer_git.bb
new file mode 100644
index 00000000..babef57c
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-mixer/html5-mixer_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 Mixer Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-mixer/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-mixer;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/html5-settings/html5-settings_git.bb b/meta-agl-demo/recipes-demo-hmi/html5-settings/html5-settings_git.bb
new file mode 100644
index 00000000..dea1ec35
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/html5-settings/html5-settings_git.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL HTML5 Settings Application"
+HOMEPAGE = "https://git.automotivelinux.org/apps/html5-settings/"
+SECTION = "apps"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+PV = "1.0+git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/html5-settings;protocol=https;branch=${AGL_BRANCH}"
+SRCREV = "${AGL_APP_REVISION}"
+
+DEPENDS += " nodejs-native"
+
+inherit aglwgt
+
+do_configure() {
+ cd ${B}
+ npm install
+}
+
+do_aglwgt_package() {
+ cd ${B}
+ npm run build
+}
diff --git a/meta-agl-demo/recipes-demo-hmi/hvac/hvac_git.bb b/meta-agl-demo/recipes-demo-hmi/hvac/hvac_git.bb
index 91255af1..93e85f45 100644
--- a/meta-agl-demo/recipes-demo-hmi/hvac/hvac_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/hvac/hvac_git.bb
@@ -13,7 +13,9 @@ PV = "1.0+git${SRCPV}"
S = "${WORKDIR}/git"
# build-time dependencies
-DEPENDS += "qtquickcontrols2 libhomescreen qlibwindowmanager qttools-native qtaglextras"
+DEPENDS += "qtquickcontrols2 libhomescreen \
+ qlibwindowmanager qttools-native \
+ qtaglextras libqtappfw"
RDEPENDS_${PN} = "agl-service-hvac"
inherit qmake5 aglwgt
diff --git a/meta-agl-demo/recipes-demo-hmi/libqtappfw/libqtappfw_git.bb b/meta-agl-demo/recipes-demo-hmi/libqtappfw/libqtappfw_git.bb
deleted file mode 100644
index 5d3019c7..00000000
--- a/meta-agl-demo/recipes-demo-hmi/libqtappfw/libqtappfw_git.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "AGL Qt AppFW Library"
-DESCRIPTION = "libqtappfw"
-HOMEPAGE = "http://docs.automotivelinux.org"
-LICENSE = "Apache-2.0"
-SECTION = "libs"
-
-BBCLASSEXTEND = "nativesdk"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS += "qtbase qtdeclarative qtwebsockets"
-
-inherit cmake_qt5
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libqtappfw;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "45ed097db45ee0a88d3acd274f242ed100274d47"
-S = "${WORKDIR}/git/"
-
-# PV needs to be modified with SRCPV to work AUTOREV correctly
-PV = "0.0+git${SRCPV}"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/libnaviapi-agl_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/libnaviapi-agl_git.bb
deleted file mode 100644
index 87087e1a..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/libnaviapi-agl_git.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "AGL Navigation API Library"
-DESCRIPTION = "AGL Navigation API ver 0.1.0 library for C++"
-HOMEPAGE = "https://github.com/AGLExport/agl-service-navigation"
-LICENSE = "Apache-2.0"
-SECTION = "libs"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "af-binder json-c libdbus-c++ af-main-native"
-
-inherit cmake
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-navigation;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-S = "${WORKDIR}/git"
-
-# FIXME: Remove once CMake+ninja issues are resolved
-OECMAKE_GENERATOR = "Unix Makefiles"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/0002-openssl-1.1-fixes.patch b/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/0002-openssl-1.1-fixes.patch
deleted file mode 100644
index 9506ce11..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/0002-openssl-1.1-fixes.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-gpsnavi: Fix compilation with OpenSSL 1.1
-
-Handle the ERR_load_crypto_strings and ERR_free_strings functions no
-longer being present in OpenSSL 1.1.
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/src/sms/sms-core/SMCAL/SMCAL.c b/src/sms/sms-core/SMCAL/SMCAL.c
-index eadab8f..2dfe1f3 100755
---- a/src/sms/sms-core/SMCAL/SMCAL.c
-+++ b/src/sms/sms-core/SMCAL/SMCAL.c
-@@ -158,7 +158,9 @@ void SC_CAL_Initialize_OpenSSL() {
- // 初期化
- ERR_load_BIO_strings();
- SSL_load_error_strings();
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_load_crypto_strings();
-+#endif
- OpenSSL_add_all_algorithms();
-
- // SSLの初期化(戻り値は常に1)
-@@ -542,7 +544,9 @@ E_SC_CAL_RESULT SC_CAL_DisConnect(SMCAL *cal)
- if (NULL != cal->ssl.ctx) {
- SSL_CTX_free((SSL_CTX*)cal->ssl.ctx);
- }
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_free_strings();
-+#endif
-
- cal->ssl.ssl = NULL;
- cal->ssl.ctx = NULL;
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer-settings.sh b/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer-settings.sh
deleted file mode 100755
index 0d7bf205..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer-settings.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-LMC=/usr/bin/LayerManagerControl
-IFS=$'\n'
-
-SURFACEID=16777216
-
-while :
-do
- /bin/sleep 1
- surfaces=()
- for line in $($LMC get surfaces 2> /dev/null); do
- if [ "X-" = "X$(echo $line | awk '{print $1}')" ]; then
- surfaceid=$(echo $line | awk '{print $3}')
- if [ "$surfaceid" = "$SURFACEID" ]; then
- $LMC set surface $SURFACEID source region 0 0 384 368
- $LMC set surface $SURFACEID destination region 0 0 384 368
- $LMC set surface $SURFACEID visibility 1
- $LMC set layer 11001 render order $SURFACEID
- exit
- fi
- fi
- done
-done
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer.service b/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer.service
deleted file mode 100644
index 971327cc..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer/mapviewer.service
+++ /dev/null
@@ -1,22 +0,0 @@
-[Unit]
-Requires=afm-api-windowmanager@0.service
-After=afm-api-windowmanager@0.service
-
-# mapviewer is a child application which can work with navigation.
-# This app requires mapdata. It has to be stored at /var/mapdata/navi_data_UK .
-# currently the position to be shown is 384x368 surface on screen 1 for cluster demo.
-
-[Service]
-Environment="XDG_RUNTIME_DIR=/run/platform/display"
-ExecStartPre=/bin/sleep 5
-ExecStart=/usr/bin/mapview
-ExecStartPost=/usr/bin/LayerManagerControl create layer 11001 1920 1080
-ExecStartPost=/usr/bin/LayerManagerControl set layer 11001 visibility 1
-ExecStartPost=/usr/bin/LayerManagerControl set screen 1 render order 11001
-ExecStartPost=/usr/AGL/mapviewer/mapviewer-settings.sh
-ExecStop=/usr/bin/killall -s KILL mapview
-Type=simple
-Restart=always
-
-[Install]
-WantedBy=afm-user-session@.target
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_%.bbappend b/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_%.bbappend
deleted file mode 100644
index a5597083..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_%.bbappend
+++ /dev/null
@@ -1,25 +0,0 @@
-FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
-
-SRC_URI_append = "\
- file://mapviewer-settings.sh \
- file://mapviewer.service \
-"
-
-inherit systemd
-
-SYSTEMD_PACKAGES = "${PN}"
-
-do_install_append() {
- install -d ${D}${prefix}/AGL/${PN}
- install -m 0755 ${WORKDIR}/mapviewer-settings.sh ${D}${prefix}/AGL/${PN}/
-
- # Install systemd unit file
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${systemd_system_unitdir}
- install -m 644 ${WORKDIR}/mapviewer.service ${D}${systemd_system_unitdir}/mapviewer.service
- fi
-}
-
-SYSTEMD_SERVICE_${PN} = "mapviewer.service"
-
-FILES_${PN} += "${prefix}/AGL/${PN}/"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_git.bb
deleted file mode 100755
index 1922e7f1..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/mapviewer_git.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-SUMMARY = "AGL meter demo application."
-DESCRIPTION = "This application provides the function of Meter cluster to AGL. "
-HOMEPAGE = "https://github.com/AGLExport/mapviwer"
-SECTION = "apps"
-
-LICENSE="GPLv2"
-LIC_FILES_CHKSUM="file://LICENSE;md5=3595e9c703a847d990664d2b396a9df0 \
- file://COPYING;md5=947b2d60ca3872e172034438e9801200"
-
-DEPENDS = " \
- glib-2.0 freetype sqlite3 wayland zlib expat openssl virtual/libgles2 virtual/libgl virtual/egl \
- wayland \
- "
-
-RDEPENDS_${PN} = " navigation "
-
-SRCREV="2dfef5e9141ccb11f83d141c6a7dcbe0ecd49e84"
-SRC_URI="git://github.com/AGLExport/mapviwer.git \
- file://0002-openssl-1.1-fixes.patch \
-"
-
-# To avoid C++ library link failure
-SECURITY_CFLAGS = ""
-
-inherit autotools pkgconfig
-
-S = "${WORKDIR}/git"
-
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-jp_1.0.bb b/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-jp_1.0.bb
deleted file mode 100755
index 27979b3d..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-jp_1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "AGL Reference Navigation application Japan maps"
-DESCRIPTION = "Preload the Japanese maps for the AGL Navigation application."
-HOMEPAGE = "http://agl.wismobi.com/"
-SECTION = "apps"
-LICENSE = "Proprietary"
-LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28"
-
-SRC_URI = "http://agl.wismobi.com/data/japan_TR9/navi_data.tar.gz"
-SRC_URI[md5sum] = "4fd44b0633d44d41c07227d086cd299c"
-SRC_URI[sha256sum] = "ce39a36741baccd6b40277acb8c81ebc181997c75483dffb46ccd22f7877295a"
-
-require navigation-maps.inc
-
-RCONFLICTS_${PN} = "navigation-maps-uk"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-uk_1.0.bb b/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-uk_1.0.bb
deleted file mode 100755
index 1718c36b..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps-uk_1.0.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY = "AGL Reference Navigation application UK maps"
-DESCRIPTION = "Preload the UK maps for the AGL Navigation application."
-HOMEPAGE = "http://agl.wismobi.com/"
-SECTION = "apps"
-LICENSE = "Proprietary"
-LIC_FILES_CHKSUM="file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28"
-
-SRC_URI = "http://agl.wismobi.com/data/UnitedKingdom_TR9/navi_data_UK.tar.gz"
-SRC_URI[md5sum] = "f711c6d2c88553a1de4db9f7e12f6e8e"
-SRC_URI[sha256sum] = "515bdc81ac0615d541e0d18c186ad5cd24de2d47b60e13079a918f6dec802fd7"
-
-require navigation-maps.inc
-
-RCONFLICTS_${PN} = "navigation-maps-jp"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps.inc b/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps.inc
deleted file mode 100755
index 49b7ab49..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation-maps.inc
+++ /dev/null
@@ -1,14 +0,0 @@
-DEPENDS = "tar-native"
-
-SRC_URI_append = ";downloadfilename=${BP}.tar.gz;unpack=0"
-
-do_compile[noexec] = "1"
-
-do_install () {
- install -d ${D}${localstatedir}/mapdata
- tar -C ${D}${localstatedir}/mapdata --no-same-owner -xf ${WORKDIR}/${BP}.tar.gz
-}
-
-FILES_${PN} += "${localstatedir}/mapdata/*"
-
-RDEPENDS_${PN} += "navigation"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0001-switch-to-pipewire-output.patch b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0001-switch-to-pipewire-output.patch
deleted file mode 100644
index 53c1165d..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0001-switch-to-pipewire-output.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-gpsnavi: Switch to pipewire output
-
-Update the talk scripts to use pipewire output via gst-launch-1.0
-instead of PulseAudio's paplay. gstreamer is used to allow using the
-pipewire output sink and set its media role property.
-
-Upstream-Status: Inappropriate [no upstream]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/flite_agl.in b/flite_agl.in
-index 28b512c..be41d66 100644
---- a/flite_agl.in
-+++ b/flite_agl.in
-@@ -1,6 +1,6 @@
- #!/bin/sh
- TMP=/tmp/navi.wav
- echo "$1" | flite_hts_engine -m @datadir@/Voice/us/cmu_us_arctic_slt.htsvoice -o $TMP
--paplay --property='media.role=Navi' $TMP
-+gst-launch-1.0 filesrc location=$TMP ! decodebin ! audioconvert ! audioresample ! pwaudiosink stream-properties="p,media.role=Navigation"
- rm -f $TMP
-
-diff --git a/jtalk_agl.in b/jtalk_agl.in
-index 76900f4..0ca6975 100644
---- a/jtalk_agl.in
-+++ b/jtalk_agl.in
-@@ -1,6 +1,6 @@
- #!/bin/sh
- TMP=/tmp/navi.wav
- echo "$1" | open_jtalk -ow $TMP -m @exec_prefix@/share/Voice/mei/mei_normal.htsvoice -x @exec_prefix@/share/dic/
--paplay --property='media.role=Navi' $TMP
-+gst-launch-1.0 filesrc location=$TMP ! decodebin ! audioconvert ! audioresample ! pwaudiosink stream-properties="p,media.role=Navigation"
- rm -f $TMP
-
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0002-openssl-1.1-fixes.patch b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0002-openssl-1.1-fixes.patch
deleted file mode 100644
index 9506ce11..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0002-openssl-1.1-fixes.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-gpsnavi: Fix compilation with OpenSSL 1.1
-
-Handle the ERR_load_crypto_strings and ERR_free_strings functions no
-longer being present in OpenSSL 1.1.
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/src/sms/sms-core/SMCAL/SMCAL.c b/src/sms/sms-core/SMCAL/SMCAL.c
-index eadab8f..2dfe1f3 100755
---- a/src/sms/sms-core/SMCAL/SMCAL.c
-+++ b/src/sms/sms-core/SMCAL/SMCAL.c
-@@ -158,7 +158,9 @@ void SC_CAL_Initialize_OpenSSL() {
- // 初期化
- ERR_load_BIO_strings();
- SSL_load_error_strings();
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_load_crypto_strings();
-+#endif
- OpenSSL_add_all_algorithms();
-
- // SSLの初期化(戻り値は常に1)
-@@ -542,7 +544,9 @@ E_SC_CAL_RESULT SC_CAL_DisConnect(SMCAL *cal)
- if (NULL != cal->ssl.ctx) {
- SSL_CTX_free((SSL_CTX*)cal->ssl.ctx);
- }
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- ERR_free_strings();
-+#endif
-
- cal->ssl.ssl = NULL;
- cal->ssl.ctx = NULL;
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0003-update-permissions.patch b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0003-update-permissions.patch
deleted file mode 100644
index 1f1ee491..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/0003-update-permissions.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-gpsnavi: Update permissions
-
-Add the new display and audio permissions required with the change to
-running as non-root.
-
-Upstream-Status: Inappropriate [no upstream]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/agl/config.xml b/agl/config.xml
-index 9d4c0ca..44de94a 100755
---- a/agl/config.xml
-+++ b/agl/config.xml
-@@ -8,6 +8,8 @@
- <feature name="urn:AGL:widget:required-permission">
- <param name="urn:AGL:permission::public:no-htdocs" value="required" />
- <param name="http://tizen.org/privilege/internal/dbus" value="required" />
-+ <param name="urn:AGL:permission::public:display" value="required" />
-+ <param name="urn:AGL:permission::public:audio" value="required" />
- </feature>
- <feature name="urn:AGL:widget:required-api">
- <param name="homescreen" value="ws" />
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_jp.sh b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_jp.sh
deleted file mode 100755
index 15120f89..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_jp.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-#
-# AGL Navigation mapdata download scripts
-#
-
-#--------------------------------------------------------------
-help()
-{
-bn=`basename $0`
-cat << EOF
-usage
-host: sudo $bn 'target_rootfs_path/'
-target : $bn /
-EOF
-
-}
-#-check para-------------------------------------------------------
-shift `expr $OPTIND - 1`
-
-if [ $# != 1 ]; then
- help
- exit
-fi
-
-rootfs=$1
-
-#----------------------------------------------------------------
-
-# check the if root? ------------------------------
-userid=`id -u`
-if [ $userid -ne "0" ]; then
- echo "you're not root? run with sudo"
- exit
-fi
-
-if [ ! -e $1 ]; then
- echo "rootfs:$1 not found"
- exit
-fi
-
-if [ ! -f $HOME/navi_data.tar.gz ]; then
- echo "no map data"
- echo "start downloading..."
- wget --directory-prefix=$HOME http://agl.wismobi.com/data/japan_TR9/navi_data.tar.gz
-else
- echo "use downloaded map data"
-fi
-
-mapdatadir=$rootfs/var/mapdata
-
-if [ ! -d $mapdatadir ]; then
- echo "map data directory does not exist"
- echo "create a directory" $mapdatadir
- mkdir -p $mapdatadir
-else
- echo "map data directory exists"
-fi
-
-tar xvzf $HOME/navi_data.tar.gz -C $mapdatadir
-sync
-echo "done.."
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_uk.sh b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_uk.sh
deleted file mode 100755
index d1f9a796..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/download_mapdata_uk.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-#
-# AGL Navigation mapdata download scripts
-#
-
-#--------------------------------------------------------------
-help()
-{
-bn=`basename $0`
-cat << EOF
-usage
-host: sudo $bn 'target_rootfs_path/'
-target : $bn /
-EOF
-
-}
-#-check para-------------------------------------------------------
-shift `expr $OPTIND - 1`
-
-if [ $# != 1 ]; then
- help
- exit
-fi
-
-rootfs=$1
-
-#----------------------------------------------------------------
-
-# check the if root? ------------------------------
-userid=`id -u`
-if [ $userid -ne "0" ]; then
- echo "you're not root? run with sudo"
- exit
-fi
-
-if [ ! -e $1 ]; then
- echo "rootfs:$1 not found"
- exit
-fi
-
-if [ ! -f $HOME/navi_data_UK.tar.gz ]; then
- echo "no map data"
- echo "start downloading..."
- wget --directory-prefix=$HOME http://agl.wismobi.com/data/UnitedKingdom_TR9/navi_data_UK.tar.gz
-else
- echo "use downloaded map data"
-fi
-
-mapdatadir=$rootfs/var/mapdata
-
-if [ ! -d $mapdatadir ]; then
- echo "map data directory does not exist"
- echo "create a directory" $mapdatadir
- mkdir -p $mapdatadir
-else
- echo "map data directory exists"
-fi
-
-tar xvzf $HOME/navi_data_UK.tar.gz -C $mapdatadir
-sync
-echo "done.."
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/org.agl.naviapi.conf b/meta-agl-demo/recipes-demo-hmi/navigation/navigation/org.agl.naviapi.conf
deleted file mode 100644
index 7f4d85f0..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation/org.agl.naviapi.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE busconfig PUBLIC
-"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <policy context="default">
- <!-- Allow everyone to talk to main service. We'll later add an agent to
- only share the location if user allows it. -->
- <allow send_interface="org.agl.naviapi"/>
- </policy>
-
- <policy user="root">
- <!-- Allow root to own the name on the bus -->
- <allow own="org.agl.naviapi"/>
- </policy>
-</busconfig>
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/navigation_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/navigation_git.bb
deleted file mode 100644
index fefc0584..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/navigation_git.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-SUMMARY = "AGL Reference Navigation application."
-DESCRIPTION = "This application provides the function of Navigation to AGL. "
-HOMEPAGE = "http://agl.wismobi.com/"
-SECTION = "apps"
-
-LICENSE="GPLv2"
-LIC_FILES_CHKSUM="file://LICENSE;md5=3595e9c703a847d990664d2b396a9df0 \
- file://COPYING;md5=947b2d60ca3872e172034438e9801200"
-
-DEPENDS = " \
- glib-2.0 freetype sqlite3 wayland zlib expat openssl virtual/libgles2 virtual/libgl virtual/egl \
- wayland libdbus-c++ af-main af-binder libwindowmanager libhomescreen gstreamer1.0 \
- "
-
-RDEPENDS_${PN} = " flite openjtalk glib-2.0 freetype sqlite3 wayland zlib expat openssl \
- wayland libdbus-c++ af-main gstreamer1.0"
-
-RDEPENDS_${PN} += " agl-service-navigation "
-
-SRCREV="89dc0052aced411ef09f8e0034fb5cf2c96ee637"
-SRC_URI="git://github.com/AGLExport/gpsnavi.git;branch=agl \
- file://0001-switch-to-pipewire-output.patch \
- file://0002-openssl-1.1-fixes.patch \
- file://0003-update-permissions.patch \
- file://download_mapdata_jp.sh \
- file://download_mapdata_uk.sh \
- file://org.agl.naviapi.conf \
-"
-
-RPROVIDES_${PN} = "virtual/navigation"
-
-# To avoid C++ library link failure
-SECURITY_CFLAGS = ""
-
-inherit autotools pkgconfig
-inherit aglwgt
-
-S = "${WORKDIR}/git"
-
-do_install_append() {
-# mapdata install scripts
- install -d ${D}/usr/AGL/apps
- install -m 0755 ${WORKDIR}/download_mapdata_jp.sh ${D}/usr/AGL/apps/
- install -m 0755 ${WORKDIR}/download_mapdata_uk.sh ${D}/usr/AGL/apps/
-
- install -d ${D}/etc/dbus-1/session.d/
- install -m 0644 ${WORKDIR}/org.agl.naviapi.conf ${D}/etc/dbus-1/session.d/
-
- install -d ${D}/var/mapdata
-}
-
-FILES_${PN} += " /usr/AGL/apps/*.sh /var/mapdata "
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi-config/naviconfig.ini b/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi-config/naviconfig.ini
index 3a4ecc89..356c6ae6 100755..100644
--- a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi-config/naviconfig.ini
+++ b/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi-config/naviconfig.ini
@@ -3,6 +3,7 @@
"speed":60,
"interval":100,
"latitude":36.1363,
- "longitute":-115.151,
- "mapStyleUrls":"mapbox://styles/mapbox/dark-v9"
+ "longitude":-115.151,
+ "mapStyleUrls":"mapbox://styles/v1/mapbox/streets-v11",
+ "enableOSM":true
}
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi/org.agl.naviapi.conf b/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi/org.agl.naviapi.conf
deleted file mode 100755
index 7f4d85f0..00000000
--- a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi/org.agl.naviapi.conf
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE busconfig PUBLIC
-"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
-"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
- <policy context="default">
- <!-- Allow everyone to talk to main service. We'll later add an agent to
- only share the location if user allows it. -->
- <allow send_interface="org.agl.naviapi"/>
- </policy>
-
- <policy user="root">
- <!-- Allow root to own the name on the bus -->
- <allow own="org.agl.naviapi"/>
- </policy>
-</busconfig>
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi_git.bb
index 86ba5327..c52655ef 100644
--- a/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/navigation/ondemandnavi_git.bb
@@ -6,32 +6,26 @@ SECTION = "apps"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-DEPENDS += "qtbase \
- qtquickcontrols2 \
+DEPENDS += "qtquickcontrols2 \
qlibhomescreen \
qlibwindowmanager \
qtlocation \
qtaglextras \
+ libqtappfw \
"
PV = "1.0+git${SRCPV}"
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/ondemandnavi;protocol=https;branch=${AGL_BRANCH} \
- file://org.agl.naviapi.conf \
-"
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/ondemandnavi;protocol=https;branch=${AGL_BRANCH}"
SRCREV = "${AGL_APP_REVISION}"
S = "${WORKDIR}/git"
inherit qmake5 aglwgt pkgconfig
-do_install_append() {
- install -d ${D}/etc/dbus-1/session.d/
- install -m 0644 ${WORKDIR}/org.agl.naviapi.conf ${D}/etc/dbus-1/session.d/
-}
-
RDEPENDS_${PN} += "qtlocation \
flite \
+ libqtappfw \
openjtalk \
gstreamer1.0 \
ondemandnavi-config \
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/poiapp_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/poiapp_git.bb
index 87263e10..b8db9ac9 100644
--- a/meta-agl-demo/recipes-demo-hmi/navigation/poiapp_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/navigation/poiapp_git.bb
@@ -6,8 +6,9 @@ SECTION = "apps"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=947b2d60ca3872e172034438e9801200"
-DEPENDS += "qtbase json-c libnaviapi-agl \
+DEPENDS += "qtbase json-c \
qlibwindowmanager libhomescreen \
+ libqtappfw \
"
SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/poi-yelp;protocol=https;branch=${AGL_BRANCH}"
@@ -17,4 +18,4 @@ S = "${WORKDIR}/git"
inherit cmake_qt5 pkgconfig aglwgt
-RDEPENDS_${PN} = "qtbase"
+RDEPENDS_${PN} = "qtbase libqtappfw"
diff --git a/meta-agl-demo/recipes-demo-hmi/navigation/tbtnavi_git.bb b/meta-agl-demo/recipes-demo-hmi/navigation/tbtnavi_git.bb
new file mode 100644
index 00000000..a61f2c92
--- /dev/null
+++ b/meta-agl-demo/recipes-demo-hmi/navigation/tbtnavi_git.bb
@@ -0,0 +1,36 @@
+SUMMARY = "AGL Reference Navigation Cluster Streaming application"
+DESCRIPTION = "Demo AGL turn by turn cluster navigation application based on QtLocation widget."
+HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/admin/repos/apps/tbtnavi"
+SECTION = "apps"
+
+LICENSE = "Apache-2.0 & ISC & BSD-3-Clause & BSL-1.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
+ file://LICENSE.mapbox-cheap-ruler-cpp;md5=761263ee6bdc98e8697d9fbc897021ba \
+ file://LICENSE.mapbox-geometry.hpp;md5=6e44f5d6aeec54f40fc84eebe3c6fc6c \
+ file://LICENSE.mapbox-variant;md5=79558839a9db3e807e4ae6f8cd100c1c \
+ file://include/mapbox/recursive_wrapper.hpp;beginline=4;endline=13;md5=cd3341aae76c0cf8345935abd20f0051 \
+"
+
+DEPENDS += "qtbase \
+ qtquickcontrols2 \
+ qlibhomescreen \
+ qlibwindowmanager \
+ qtlocation \
+ libqtappfw \
+"
+
+PV = "1.0+git${SRCPV}"
+
+SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/tbtnavi;protocol=https;branch=${AGL_BRANCH}"
+#SRCREV = "4a8b7a6301e4b093c99329d0a16fbee6c535f312"
+SRCREV = "${AGL_APP_REVISION}"
+
+S = "${WORKDIR}/git"
+
+inherit qmake5 aglwgt pkgconfig
+
+RDEPENDS_${PN} += "qtlocation \
+ ondemandnavi-config \
+ agl-service-navigation \
+ libqtappfw \
+"
diff --git a/meta-agl-demo/recipes-demo-hmi/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb b/meta-agl-demo/recipes-demo-hmi/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
index b322664f..0a432db0 100644
--- a/meta-agl-demo/recipes-demo-hmi/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/qtquickcontrols2-agl/qtquickcontrols2-agl_git.bb
@@ -8,7 +8,7 @@ DEPENDS = "qtquickcontrols2"
PV = "1.0+git${SRCPV}"
SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/qtquickcontrols2-agl;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "1261ac1f1f1f2e4d659159f4ce51322f1d585128"
+SRCREV = "22b538aae1f69de5273f1e42a854cfab23a32b60"
S = "${WORKDIR}/git/"
diff --git a/meta-agl-demo/recipes-demo-hmi/settings/settings_git.bb b/meta-agl-demo/recipes-demo-hmi/settings/settings_git.bb
index 36040823..72e0323f 100644
--- a/meta-agl-demo/recipes-demo-hmi/settings/settings_git.bb
+++ b/meta-agl-demo/recipes-demo-hmi/settings/settings_git.bb
@@ -13,12 +13,14 @@ PV = "1.0+git${SRCPV}"
S = "${WORKDIR}/git"
# build-time dependencies
-DEPENDS += "libqtappfw qtquickcontrols2 qtwebsockets"
+DEPENDS += "libqtappfw qtquickcontrols2 qt-qrcode"
DEPENDS += "libhomescreen qlibwindowmanager qtvirtualkeyboard"
# runtime dependencies
RDEPENDS_${PN} += " \
- agl-service-bluetooth \
- agl-service-network"
+ qt-qrcode \
+ agl-service-bluetooth \
+ agl-service-network \
+"
inherit qmake5 aglwgt
diff --git a/meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_git.bb b/meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_20190815.bb
index 416f568f..d3c39b59 100644
--- a/meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_git.bb
+++ b/meta-agl-demo/recipes-graphics/noto-emoji/noto-emoji_20190815.bb
@@ -2,8 +2,8 @@ SUMMARY = "Google noto emoji font pack"
HOMEPAGE = "https://github.com/googlefonts/noto-emoji"
SECTION = "fonts"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+LICENSE = "OFL-1.1"
+LIC_FILES_CHKSUM = "file://${S}/fonts/LICENSE;md5=55719faa0112708e946b820b24b14097"
SRC_URI = "git://github.com/googlefonts/noto-emoji;protocol=https;branch=master"
SRCREV = "833a43d03246a9325e748a2d783006454d76ff66"
diff --git a/meta-agl-demo/recipes-kernel/sllin/files/lin_config.conf b/meta-agl-demo/recipes-kernel/sllin/files/lin_config.conf
new file mode 100644
index 00000000..9775b8b3
--- /dev/null
+++ b/meta-agl-demo/recipes-kernel/sllin/files/lin_config.conf
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--PCAN-LIN CT profile.-->
+<PCLIN_PROFILE Version="1">
+ <LIN Group="2">
+ <Scheduler_Entries Count="1">
+ <!-- Poll steering wheel adapter at address 0x21 every 100 ms -->
+ <Entry Time="100">33</Entry>
+ </Scheduler_Entries>
+ </LIN>
+</PCLIN_PROFILE>
diff --git a/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo-virtual.service b/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo-virtual.service
new file mode 100644
index 00000000..78824219
--- /dev/null
+++ b/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo-virtual.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=LIN demo configuration (virtual)
+ConditionPathExists=!/dev/ttyUSB0
+After=afm-system-daemon.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/bin/start_lin_demo.sh
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo.service b/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo.service
index 7eb6cfac..2f2f5ac2 100644
--- a/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo.service
+++ b/meta-agl-demo/recipes-kernel/sllin/files/sllin-demo.service
@@ -1,13 +1,13 @@
[Unit]
-Description = LIN DEMO startup
+Description=LIN demo configuration
+ConditionPathExists=/dev/ttyUSB0
After=afm-system-daemon.service
[Service]
Type=forking
-PIDFile=/var/run/lin_ldattach
+PIDFile=/var/run/lin_config.pid
ExecStart=/usr/bin/start_lin_demo.sh
RemainAfterExit=yes
-
[Install]
WantedBy=multi-user.target
diff --git a/meta-agl-demo/recipes-kernel/sllin/files/start_lin_demo.sh b/meta-agl-demo/recipes-kernel/sllin/files/start_lin_demo.sh
index 741189fb..26f64c0a 100755
--- a/meta-agl-demo/recipes-kernel/sllin/files/start_lin_demo.sh
+++ b/meta-agl-demo/recipes-kernel/sllin/files/start_lin_demo.sh
@@ -1,10 +1,17 @@
#!/bin/sh
-sleep 1
-ldattach 25 /dev/ttySC3
-pidof ldattach > /var/run/lin_ldattach
-sleep 1
+# Attach serial LIN->CAN bridge and set up LIN polling
+if [ -c /dev/ttyUSB0 ]; then
+ sleep 1
+ /usr/bin/lin_config -c /etc/lin_config.conf -a sllin:/dev/ttyUSB0
+ pidof lin_config > /var/run/lin_config.pid
+ sleep 1
+else
+ ip link add dev sllin0 type vcan
+fi
ip link set sllin0 up
+
+# Initialize HVAC controller
usleep 100000
cansend sllin0 030#
usleep 100000
diff --git a/meta-agl-demo/recipes-kernel/sllin/sllin.bb b/meta-agl-demo/recipes-kernel/sllin/sllin.bb
index 6213fd96..7c4313f1 100644
--- a/meta-agl-demo/recipes-kernel/sllin/sllin.bb
+++ b/meta-agl-demo/recipes-kernel/sllin/sllin.bb
@@ -18,7 +18,9 @@ SRC_URI_append = " \
file://0003-Allow-recent-kernels-newer-4.11.x-to-build.patch;pnum=2 \
file://0001-Disable-sllin-driver-debug-log.patch;pnum=2 \
file://sllin-demo.service \
+ file://sllin-demo-virtual.service \
file://start_lin_demo.sh \
+ file://lin_config.conf \
"
KERNEL_MODULE_AUTOLOAD_append = " sllin"
@@ -28,12 +30,22 @@ SLLINBAUDRATE ??= "9600"
module_conf_sllin = "options sllin baudrate=${SLLINBAUDRATE}"
SYSTEMD_SERVICE_${PN} = "sllin-demo.service"
+SYSTEMD_SERVICE_${PN}-virtual = "sllin-demo-virtual.service"
do_install_append () {
install -d 644 ${D}/${bindir}
install -m 755 ${WORKDIR}/start_lin_demo.sh ${D}/${bindir}/start_lin_demo.sh
install -d ${D}${systemd_system_unitdir}
install -m 0644 ${WORKDIR}/sllin-demo.service ${D}${systemd_system_unitdir}/
+ install -m 0644 ${WORKDIR}/sllin-demo-virtual.service ${D}${systemd_system_unitdir}/
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/lin_config.conf ${D}${sysconfdir}/
}
-FILES_${PN}_append = " ${bindir}/start_lin_demo.sh"
+PACKAGES =+ "${PN}-virtual"
+
+FILES_${PN} += "${bindir}/start_lin_demo.sh ${sysconfdir}/lin_config.conf"
+
+FILES_${PN}-virtual = "${systemd_system_unitdir}/sllin-demo-virtual.service"
+
+RDEPENDS_${PN} += "lin-config"
diff --git a/meta-agl-demo/recipes-platform/images/agl-demo-platform-crosssdk.bb b/meta-agl-demo/recipes-platform/images/agl-demo-platform-crosssdk.bb
index 088b4cc4..a814b694 100755
--- a/meta-agl-demo/recipes-platform/images/agl-demo-platform-crosssdk.bb
+++ b/meta-agl-demo/recipes-platform/images/agl-demo-platform-crosssdk.bb
@@ -63,3 +63,19 @@ TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules "
# meeting to discuss the path forward (separate versus superset SDKs), this
# should be reviewed after that.
TOOLCHAIN_TARGET_TASK += "mosquitto-dev"
+
+# Add nlohmann-json to support building the speech services.
+# Required until either the agl-speech-framework feature is added as a
+# dependency of agl-demo, or the speech services are migrated into the
+# core profile.
+TOOLCHAIN_TARGET_TASK += "nlohmann-json-dev"
+
+# Add libstdc++-staticdev to support building agl-service-voice-high or
+# other users of the C++17 filesystem standard library feature.
+# Can be removed upon upgrade to gcc 9.x, as it will no longer be necessary.
+TOOLCHAIN_TARGET_TASK += "libstdc++-staticdev"
+
+# 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"
diff --git a/meta-agl-demo/recipes-platform/images/agl-demo-platform-html5.bb b/meta-agl-demo/recipes-platform/images/agl-demo-platform-html5.bb
new file mode 100644
index 00000000..2d3490fd
--- /dev/null
+++ b/meta-agl-demo/recipes-platform/images/agl-demo-platform-html5.bb
@@ -0,0 +1,14 @@
+SUMMARY = "DEMO platform of AGL HTML5 profile"
+DESCRIPTION = "Contains the web runtime and sample web apps"
+
+require agl-demo-platform.inc
+
+LICENSE = "MIT"
+
+IMAGE_FEATURES_append = " \
+ "
+
+# add packages for demo platform (include demo apps) here
+IMAGE_INSTALL_append = " \
+ packagegroup-agl-demo-platform-html5 \
+ "
diff --git a/meta-agl-demo/recipes-platform/images/agl-image-ivi-crosssdk.bb b/meta-agl-demo/recipes-platform/images/agl-image-ivi-crosssdk.bb
new file mode 100644
index 00000000..93537feb
--- /dev/null
+++ b/meta-agl-demo/recipes-platform/images/agl-image-ivi-crosssdk.bb
@@ -0,0 +1,2 @@
+# just for backward compatibility
+require recipes-platform/images/agl-image-minimal-crosssdk.bb
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb
new file mode 100644
index 00000000..6ec717bd
--- /dev/null
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform-html5.bb
@@ -0,0 +1,32 @@
+SUMMARY = "The software for DEMO platform of AGL HTML5 profile"
+DESCRIPTION = "Packages required to demo the HTML5 profile and sample web apps"
+
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-demo-platform-html5 \
+ "
+
+ALLOW_EMPTY_${PN} = "1"
+
+RDEPENDS_${PN} += "\
+ packagegroup-agl-image-ivi \
+ packagegroup-agl-profile-graphical-html5 \
+ packagegroup-agl-demo \
+ "
+
+AGL_APPS = " \
+ html5-homescreen \
+ html5-launcher \
+ html5-hvac \
+ html5-settings \
+ html5-mixer \
+ html5-mediaplayer \
+ html5-dashboard \
+ "
+
+RDEPENDS_${PN}_append = " \
+ ${AGL_APPS} \
+ "
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb
index 128d4d7e..acd77882 100644
--- a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo-platform.bb
@@ -20,22 +20,6 @@ RDEPENDS_${PN} += "\
packagegroup-agl-demo \
"
-MOST_DRIVERS = " \
- most \
- "
-MOST_DRIVERS_append_m3ulcb = " sllin"
-
-# HVAC dependencies depend on drivers above
-MOST_HVAC = " "
-MOST_HVAC_append = " \
- ${MOST_DRIVERS} \
- unicens-config \
- agl-service-unicens \
- "
-
-# @Chris: This needs to be checked!
-MOST_HVAC_dra7xx-evm = ""
-MOST_HVAC_dragonboard-410c = ""
AGL_APPS = " \
dashboard \
@@ -46,47 +30,60 @@ AGL_APPS = " \
poiapp \
radio \
settings \
+ messaging \
${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'taskmanager' , '', d)} \
- high-level-viwi-service \
- agl-service-signal-composer \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'unzip' , '', d)} \
low-can-demo \
virtual/mixer \
- "
-
-AGL_APIS = " \
- libnaviapi-agl \
+ ${@bb.utils.contains('IMAGE_FEATURES', 'agl-voiceagent-alexa', 'alexa-viewer' , '', d)} \
"
QTAGLEXTRAS = "${@bb.utils.contains("DISTRO_FEATURES", "agl-hmi-framework", " qtaglextras", "",d)}"
+QTAGLEXTRAS_append = " libqtappfw"
+
+# add support for websocket in Qt and QML
+QTAGLEXTRAS_append = " qtwebsockets qtwebsockets-qmlplugins"
+PREFERRED_PROVIDER_virtual/webruntime = "web-runtime"
+
+#QTAGLEXTRAS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'qtwebengine', '', d)}"
+#QTAGLEXTRAS_append = " qtsmarthome cinematicexperience qt5everywheredemo qt5-demo-extrafiles"
+#IMAGE_INSTALL_append = " qtwebengine-examples"
+
+# packages from hmi-framework aka homescreen-2017
+HOMESCREEN = "packagegroup-hmi-framework"
# Cluster demo support.
-# ATM mapviewer is required for navigation map viewing when doing cluster
-# demos with the older navigation application.
-MAPVIEWER = "${@bb.utils.contains("PREFERRED_PROVIDER_virtual/navigation", "navigation", "mapviewer", "",d)}"
-CLUSTER_SUPPORT = "${@bb.utils.contains("DISTRO_FEATURES", "agl-cluster-demo-support", "${MAPVIEWER} cluster-demo-network-config", "",d)}"
+# ATM no cluster map viewer is supported with the older navigation application.
+MAPVIEWER = "${@bb.utils.contains("PREFERRED_RPROVIDER_virtual/navigation", "ondemandnavi", "tbtnavi", "",d)}"
+CLUSTER_SUPPORT_PACKAGES = " \
+ ${MAPVIEWER} \
+ cluster-demo-network-config \
+ cluster-lin-bridging-config \
+ cluster-demo-simulator \
+"
+CLUSTER_SUPPORT = "${@bb.utils.contains("DISTRO_FEATURES", "agl-cluster-demo-support", "${CLUSTER_SUPPORT_PACKAGES}", "",d)}"
+
+# Hook for demo platform configuration
+# ATM used for:
+# 1) Adding udev configuration and scripts for supporting USB attached
+# I2C devices for RTC and HVAC LED support.
+DEMO_PLATFORM_CONF = " demo-i2c-udev-conf "
# Preload poi API key for demo if requested, and potentially maps for older
# navigation application if it is configured.
DEMO_MAPS_LOCALE ?= "uk"
-DEMO_PRELOAD_MAPS = "${@bb.utils.contains("PREFERRED_PROVIDER_virtual/navigation", "navigation", " navigation-maps-${DEMO_MAPS_LOCALE}", "",d)}"
-DEMO_PRELOAD = "${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", " ${DEMO_PRELOAD_MAPS} poiapp-api-key", "",d)}"
+DEMO_PRELOAD_MAPS = "${@bb.utils.contains("PREFERRED_RPROVIDER_virtual/navigation", "navigation", " navigation-maps-${DEMO_MAPS_LOCALE}", "",d)}"
+
+# Preload only if agl-demo-preload is set
+DEMO_PRELOAD = "${@bb.utils.contains("DISTRO_FEATURES", "agl-demo-preload", " ${DEMO_PRELOAD_MAPS} ${DEMO_PLATFORM_CONF} poiapp-api-key", "",d)}"
-# Hook for demo platform configuration
-# ATM, only used to disable btwilink module on M3ULCB + Kingfisher by default,
-# setting DEMO_ENABLE_BTWILINK to "true" in local.conf / site.conf re-enables.
-DEMO_ENABLE_BTWILINK ?= ""
-DEMO_PLATFORM_CONF = ""
-DEMO_PLATFORM_CONF_append_m3ulcb = "${@bb.utils.contains("DEMO_ENABLE_BTWILINK", "true", "", " btwilink-disable-conf", d)}"
RDEPENDS_${PN}_append = " \
qtquickcontrols2-agl \
qtquickcontrols2-agl-style \
- linux-firmware-ralink \
- ${MOST_HVAC} \
${AGL_APPS} \
- ${AGL_APIS} \
${QTAGLEXTRAS} \
${CLUSTER_SUPPORT} \
${DEMO_PRELOAD} \
- ${DEMO_PLATFORM_CONF} \
+ ${HOMESCREEN} \
"
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo.bb
index 59757819..164684f2 100644
--- a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo.bb
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-demo.bb
@@ -11,19 +11,45 @@ PACKAGES = "\
ALLOW_EMPTY_${PN} = "1"
+# MOST out-of-tree kernel drivers
+#################################
+MOST_DRIVERS ??= " \
+ most \
+ "
+# These boards use different kernels - needs to be checked
+MOST_DRIVERS_dra7xx-evm ?= ""
+MOST_DRIVERS_dragonboard-410c ?= ""
+
+
+# HVAC dependencies
+###################
+LIN_DRIVERS ??= " sllin sllin-virtual"
+# These boards use different kernels - needs to be checked
+LIN_DRIVERS_dra7xx-evm ?= "sllin-virtual"
+LIN_DRIVERS_dragonboard-410c ?= "sllin-virtual"
+
+# UNICENS service
+UNICENS ?= " \
+ unicens-config \
+ agl-service-unicens \
+ agl-service-unicens-controller \
+ "
+
+# Hook for demo platform configuration
+# ATM, only used to disable btwilink module on [MH]3ULCB + Kingfisher by default,
+# setting DEMO_ENABLE_BTWILINK to "true" in local.conf / site.conf re-enables.
+DEMO_ENABLE_BTWILINK ?= ""
+DEMO_PLATFORM_CONF = ""
+DEMO_PLATFORM_CONF_append_ulcb = "${@bb.utils.contains("DEMO_ENABLE_BTWILINK", "true", "", " btwilink-disable-conf", d)}"
+
SMARTDEVICELINK = "${@bb.utils.contains('DISTRO_FEATURES', 'agl-sdl', \
'packagegroup-agl-smartdevicelink', '', d)}"
-# packages from hmi-framework aka homescreen-2017
-HOMESCREEN = "packagegroup-hmi-framework"
-
# removed: now all enablers are in meta-agl-devel/meta-audio-soundmanager-framework
# old audio package
# AUDIO-OLD = "audiomanager"
RDEPENDS_${PN} += "\
- libqtappfw \
- ${HOMESCREEN} \
udisks \
${SMARTDEVICELINK} \
"
@@ -40,23 +66,19 @@ TTF_FONTS = " \
noto-emoji \
"
-#EXTRA_APPS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'qtwebengine', '', d)}"
-#EXTRA_APPS_append = " qtsmarthome cinematicexperience qt5everywheredemo qt5-demo-extrafiles"
-#IMAGE_INSTALL_append = " qtwebengine-examples"
-
-# add support for websocket in Qt and QML
-EXTRA_APPS_append = " qtwebsockets qtwebsockets-qmlplugins"
-PREFERRED_PROVIDER_virtual/webruntime = "web-runtime"
-
RDEPENDS_${PN} += " \
linux-firmware-ath9k \
+ linux-firmware-ralink \
can-utils \
iproute2 \
python-curses \
dhcp-client \
+ ${UNICENS} \
+ ${MOST_DRIVERS} \
+ ${LIN_DRIVERS} \
+ ${DEMO_PLATFORM_CONF} \
${TTF_FONTS} \
- ${EXTRA_APPS} \
${@bb.utils.contains('DISTRO_FEATURES', 'webruntime', 'virtual/webruntime', '', d)} \
"
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-image-ivi.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-image-ivi.bb
index 0edc600c..acaa405a 100644
--- a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-image-ivi.bb
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-image-ivi.bb
@@ -18,14 +18,9 @@ RDEPENDS_${PN} += "\
packagegroup-agl-ivi-connectivity \
packagegroup-agl-ivi-graphics \
packagegroup-agl-ivi-multimedia \
+ packagegroup-agl-ivi-navigation \
+ packagegroup-agl-ivi-services \
"
-# packagegroup-agl-ivi-automotive \
-# packagegroup-agl-ivi-speech-services \
-# packagegroup-agl-ivi-navi-lbs \
-# packagegroup-agl-ivi-security \
-# packagegroup-agl-ivi-os-commonlibs \
-# packagegroup-agl-ivi-kernel \
-#
RDEPENDS_${PN} += "\
agl-login-manager \
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-connectivity.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-connectivity.bb
index 2d45986d..17d0d4b6 100644
--- a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-connectivity.bb
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-connectivity.bb
@@ -11,5 +11,10 @@ PACKAGES = "\
ALLOW_EMPTY_${PN} = "1"
RDEPENDS_${PN} += "\
+ bluez5-obex \
+ ${@bb.utils.contains("DISTRO_FEATURES", "3g", "libqmi", "", d)} \
+ rtl-sdr \
+ neard \
+ neardal-tools \
ofono \
"
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-navigation.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-navigation.bb
new file mode 100644
index 00000000..90daf923
--- /dev/null
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-navigation.bb
@@ -0,0 +1,17 @@
+SUMMARY = "The software for application framework of AGL IVI profile"
+DESCRIPTION = "A set of packages belong to AGL application framework which required by \
+Navigation and Location-Based Services Subsystem"
+
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-ivi-navigation \
+ "
+
+RDEPENDS_${PN} += "\
+ gpsd \
+ virtual/gpsd-conf \
+ geoclue \
+ "
diff --git a/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb
new file mode 100644
index 00000000..40359ed3
--- /dev/null
+++ b/meta-agl-demo/recipes-platform/packagegroups/packagegroup-agl-ivi-services.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "The minimal set of packages for AGL IVI Connectivity Subsystem"
+LICENSE = "MIT"
+
+inherit packagegroup
+
+PACKAGES = "\
+ packagegroup-agl-ivi-services \
+ "
+
+ALLOW_EMPTY_${PN} = "1"
+
+RDEPENDS_${PN} += "\
+agl-service-bluetooth \
+agl-service-bluetooth-map \
+agl-service-bluetooth-pbap \
+agl-service-can-high-level-viwi \
+agl-service-can-low-level \
+agl-service-geoclue \
+agl-service-geofence \
+agl-service-gps \
+agl-service-identity-agent \
+agl-service-iiodevices \
+agl-service-mediascanner \
+agl-service-navigation \
+agl-service-nfc \
+agl-service-signal-composer \
+agl-service-steering-wheel \
+agl-service-unicens \
+agl-service-weather \
+ "
diff --git a/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch b/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch
new file mode 100644
index 00000000..76795268
--- /dev/null
+++ b/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode/0001-rework-library-build.patch
@@ -0,0 +1,181 @@
+Rework library build
+
+Rework qmake files to build libraries out of the quickitem and widget
+code instead of sample programs. This allows using the associated
+classes without copying the source and running afoul of the LGPL
+licensing. Also add pkgconfig file generation to simplify usage, fix
+header installation, and use pkgconfig to pull in libqrencode instead
+of having to clone a copy in-tree and building it.
+
+Upstream-Status: inappropriate [embedded-specific]
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/lib/lib.pro b/lib/lib.pro
+index d046bc4..6b6c199 100644
+--- a/lib/lib.pro
++++ b/lib/lib.pro
+@@ -1,6 +1,9 @@
+ TARGET = qtqrcode
+ TEMPLATE = lib
+
++CONFIG += link_pkgconfig create_pc create_prl no_install_prl
++PKGCONFIG += libqrencode
++
+ DEFINES += \
+ QTQRCODE_LIBRARY \
+ QTQRCODE_PLUS_FEATURES
+@@ -12,7 +15,8 @@ contains(DEFINES, QTQRCODE_PLUS_FEATURES) {
+ qtqrcodepainter.cpp
+
+ HEADERS +=\
+- qtqrcodepainter.h
++ qtqrcodepainter.h \
++ QtQrCodePainter
+
+ } else {
+ QT -= gui
+@@ -23,16 +27,29 @@ SOURCES += \
+
+ HEADERS +=\
+ qtqrcode_global.h \
+- qtqrcode.h
++ qtqrcode.h \
++ QtQrCode
+
+ INCLUDEPATH += $$PWD
+
+ include(../defaults.pri)
+-include(libqrencode.pri)
+ # Default rules for deployment.
+ include(deployment.pri)
+
+ unix {
++ headers.path = /usr/include
+ target.path = /usr/lib
+- INSTALLS += target
+ }
++
++headers.files = $$HEADERS
++
++INSTALLS += headers
++
++QMAKE_PKGCONFIG_NAME = qtqrcode
++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME}
++QMAKE_PKGCONFIG_VERSION = $${VERSION}
++QMAKE_PKGCONFIG_DESCRIPTION = A wrapper interface for qrencode for Qt
++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib
++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include
++QMAKE_PKGCONFIG_REQUIRES = libqrencode
++QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+diff --git a/lib/qtqrcode.h b/lib/qtqrcode.h
+index 2a7a1ff..0830826 100644
+--- a/lib/qtqrcode.h
++++ b/lib/qtqrcode.h
+@@ -31,7 +31,7 @@
+ #include <QByteArray>
+ #include <QSharedDataPointer>
+
+-#include "libqrencode/qrencode.h"
++#include <qrencode.h>
+
+ class QtQrCodeData;
+
+diff --git a/quickitem/quickitem.pro b/quickitem/quickitem.pro
+index ecfef1b..067dc46 100644
+--- a/quickitem/quickitem.pro
++++ b/quickitem/quickitem.pro
+@@ -1,5 +1,7 @@
+-TEMPLATE = app
+-TARGET = QuickItem
++TEMPLATE = lib
++TARGET = qtqrcode-quickitem
++
++CONFIG += create_pc create_prl no_install_prl
+
+ QT += qml quick widgets
+
+@@ -7,7 +9,7 @@ LIBS += -L../lib -lqtqrcode
+
+ DEFINES +=
+
+-SOURCES += main.cpp \
++SOURCES += \
+ QtQrCodeQuickItem.cpp
+
+ HEADERS += \
+@@ -21,3 +23,21 @@ QML_IMPORT_PATH =
+ include(../defaults.pri)
+ # Default rules for deployment.
+ include(deployment.pri)
++
++unix {
++ headers.path = /usr/include
++ target.path = /usr/lib
++}
++
++headers.files = $$HEADERS
++
++INSTALLS += headers
++
++QMAKE_PKGCONFIG_NAME = qtqrcode-quickitem
++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME}
++QMAKE_PKGCONFIG_VERSION = $${VERSION}
++QMAKE_PKGCONFIG_DESCRIPTION = Qt QuickItem wrapper for qt-qrcode library
++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib
++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include
++QMAKE_PKGCONFIG_REQUIRES = qtqrcode
++QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+diff --git a/widget/widget.pro b/widget/widget.pro
+index 2e26a8c..63add50 100644
+--- a/widget/widget.pro
++++ b/widget/widget.pro
+@@ -1,5 +1,7 @@
+-TEMPLATE = app
+-TARGET = Widget
++TEMPLATE = lib
++TARGET = qtqrcode-widget
++
++CONFIG += create_pc create_prl no_install_prl
+
+ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+@@ -9,18 +11,28 @@ LIBS += -L../lib -lqtqrcode
+
+ DEFINES +=
+
+-SOURCES += main.cpp\
+- MainWindow.cpp \
+- QtQrCodeWidget.cpp
+-
+-HEADERS += MainWindow.hpp \
+- QtQrCodeWidget.hpp
++SOURCES += QtQrCodeWidget.cpp
+
+-FORMS += MainWindow.ui
+-
+-CONFIG += mobility
+-MOBILITY =
++HEADERS += QtQrCodeWidget.hpp
+
+ include(../defaults.pri)
+ # Default rules for deployment.
+ include(deployment.pri)
++
++unix {
++ headers.path = /usr/include
++ target.path = /usr/lib
++}
++
++headers.files = $$HEADERS
++
++INSTALLS += headers
++
++QMAKE_PKGCONFIG_NAME = qtqrcode-widget
++QMAKE_PKGCONFIG_FILE = $${QMAKE_PKGCONFIG_NAME}
++QMAKE_PKGCONFIG_VERSION = $${VERSION}
++QMAKE_PKGCONFIG_DESCRIPTION = Qt widget wrapper for qt-qrcode library
++QMAKE_PKGCONFIG_LIBDIR = ${prefix}/lib
++QMAKE_PKGCONFIG_INCDIR = ${prefix}/include
++QMAKE_PKGCONFIG_REQUIRES = qtqrcode
++QMAKE_PKGCONFIG_DESTDIR = pkgconfig
diff --git a/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode_git.bb b/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode_git.bb
new file mode 100644
index 00000000..8b3ff79a
--- /dev/null
+++ b/meta-agl-demo/recipes-qt/qt-qrcode/qt-qrcode_git.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Qt QR code library"
+DESCRIPTION = "Qt/C++ library for encoding and visualization of data in a \
+QR Code symbol. This library consists of a Qt wrapper for libqrencode, and \
+Qt components that are able to visualize the result."
+LICENSE = "LGPLv3+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94a3f3bdf61243b5e5cf569fbfbbea52"
+
+DEPENDS = "qtbase qtdeclarative qtquickcontrols2 qtsvg qrencode"
+
+SRC_URI = "git://github.com/danielsanfr/qt-qrcode.git;protocol=https \
+ file://0001-rework-library-build.patch \
+"
+SRCREV = "2d57d9c6e2341689d10f9360a16a08831a4a820b"
+
+PV = "git${SRCPV}"
+S = "${WORKDIR}/git/"
+
+inherit qmake5
diff --git a/meta-agl-demo/recipes-support/lin-config/files/0001-Change-Makefile-to-use-pkg-config-for-libxml-2.0.patch b/meta-agl-demo/recipes-support/lin-config/files/0001-Change-Makefile-to-use-pkg-config-for-libxml-2.0.patch
new file mode 100644
index 00000000..fe08b7d8
--- /dev/null
+++ b/meta-agl-demo/recipes-support/lin-config/files/0001-Change-Makefile-to-use-pkg-config-for-libxml-2.0.patch
@@ -0,0 +1,33 @@
+From 59acd73ba3bd6cc4151b890d135c6d690a83374d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org>
+Date: Tue, 1 Oct 2019 15:24:07 +0000
+Subject: [PATCH] Change Makefile to use pkg-config for libxml-2.0
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+instead of xml2-config.
+
+Upstream-Status: Pending
+
+Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
+---
+ lin_config/src/Makefile | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index cf5c515..3fc4df1 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,5 @@
+-CC=gcc
+-CFLAGS=-std=gnu99 -Wall -pedantic $(DEBUG) `xml2-config --cflags` `pkg-config --cflags libnl-route-3.0` -I$(INCLUDE)
+-LIBS=`xml2-config --libs` `pkg-config --libs libnl-route-3.0`
++CFLAGS=-std=gnu99 -Wall -pedantic $(DEBUG) `pkg-config --cflags libxml-2.0` `pkg-config --cflags libnl-route-3.0` -I$(INCLUDE)
++LIBS=`pkg-config --libs libxml-2.0` `pkg-config --libs libnl-route-3.0`
+ INCLUDE=../../sllin
+ DEBUG=-ggdb
+
+--
+2.16.4
+
diff --git a/meta-agl-demo/recipes-support/lin-config/files/0002-Change-Makefile-to-use-LDFLAGS.patch b/meta-agl-demo/recipes-support/lin-config/files/0002-Change-Makefile-to-use-LDFLAGS.patch
new file mode 100644
index 00000000..26364455
--- /dev/null
+++ b/meta-agl-demo/recipes-support/lin-config/files/0002-Change-Makefile-to-use-LDFLAGS.patch
@@ -0,0 +1,20 @@
+Use LDFLAGS when linking
+
+Use LDFLAGS when linking the output binary to quiet QA warnings due to
+missing link flags.
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+--- a/Makefile 2019-11-05 11:08:11.060565285 +0000
++++ b/Makefile 2019-11-05 11:09:38.663570084 +0000
+@@ -6,7 +6,7 @@
+ objects = linc_parse_xml.o pcl_config.o sllin_config.o lin_config.o
+
+ lin_config: $(objects)
+- $(CC) $(objects) $(LIBS) -o lin_config
++ $(CC) $(LDFLAGS) $(objects) $(LIBS) -o lin_config
+
+ %.o : %.c %.h
+ $(CC) $(CFLAGS) $(LIBS) -c $< -o $@
diff --git a/meta-agl-demo/recipes-support/lin-config/lin-config_git.bb b/meta-agl-demo/recipes-support/lin-config/lin-config_git.bb
new file mode 100644
index 00000000..e83f7160
--- /dev/null
+++ b/meta-agl-demo/recipes-support/lin-config/lin-config_git.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "lin-config tool for the sllin driver module"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+DEPENDS += "libnl libxml2"
+
+SRC_URI = "git://github.com/trainman419/linux-lin.git;protocol=https"
+SRCREV = "155d885e8ccc907a56f6c86c4b159fac27ef6fec"
+S = "${WORKDIR}/git/lin_config/src"
+
+SRC_URI_append = " \
+ file://0001-Change-Makefile-to-use-pkg-config-for-libxml-2.0.patch \
+ file://0002-Change-Makefile-to-use-LDFLAGS.patch \
+ "
+
+inherit pkgconfig
+
+PV = "0.1+git${SRCPV}"
+
+do_configure[noexec] = "1"
+
+do_install_append() {
+ install -d ${D}/${bindir}
+ install -m 755 ${S}/lin_config ${D}/${bindir}
+}
diff --git a/meta-agl-demo/templates/feature/agl-demo-preload/50_local.conf.inc b/meta-agl-demo/templates/feature/agl-demo-preload/50_local.conf.inc
index c7524e5a..00ff3b71 100644
--- a/meta-agl-demo/templates/feature/agl-demo-preload/50_local.conf.inc
+++ b/meta-agl-demo/templates/feature/agl-demo-preload/50_local.conf.inc
@@ -1 +1,2 @@
-DISTRO_FEATURES_append = " agl-demo-preload"
+#see meta-agl-demo/conf/include/agl-demo-preload.inc
+require conf/include/agl-demo-preload.inc
diff --git a/meta-agl-demo/templates/feature/agl-demo/included.dep b/meta-agl-demo/templates/feature/agl-demo/included.dep
index 0babf816..cbf86e8d 100644
--- a/meta-agl-demo/templates/feature/agl-demo/included.dep
+++ b/meta-agl-demo/templates/feature/agl-demo/included.dep
@@ -1 +1 @@
-agl-appfw-smack agl-hmi-framework agl-profile-graphical-qt5 agl-pipewire
+agl-appfw-smack agl-hmi-framework agl-profile-graphical-qt5 agl-pipewire agl-speech-framework