diff options
author | Scott Murray <scott.murray@konsulko.com> | 2019-04-22 20:48:47 -0400 |
---|---|---|
committer | Scott Murray <scott.murray@konsulko.com> | 2019-04-23 10:58:40 -0400 |
commit | e64cdaccca7309e2d3c5da798e01fbea227bd465 (patch) | |
tree | 60025a0074482b69d8982af4c1dbd8eec4d46554 |
Initial check-inhalibut_7.99.2halibut_7.99.1halibut/7.99.2halibut/7.99.1guppy_7.0.2guppy/7.0.27.99.27.99.17.0.2
Define telematics demo platform. This layer is similar to meta-agl-demo
and meta-agl-cluster-demo, except it defines a small platform for the
telematics demo, based on the agl-profile-telematics profile. There is
a "agl-telematics-demo" feature defined to enable building the platform.
The defined agl-telematics-demo-platform image contains a minimal amount
of services to host a simple demo application that reads CAN events and
logs them via the MQTT protocol.
At the moment, only the raspberrypi3 version has been built and tested,
but there is nothing platform specific in the agl-telematics-demo-recorder
application that would prevent use on another platform.
Change-Id: I0ed94eefeff703afdcec81884bf16c10c63de28f
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
27 files changed, 380 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b25c15b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..d08c3f7 --- /dev/null +++ b/.gitreview @@ -0,0 +1,5 @@ +[gerrit] +host=gerrit.automotivelinux.org +port=29418 +project=AGL/meta-agl-telematics-demo +defaultbranch=master diff --git a/README.md b/README.md new file mode 100644 index 0000000..dee8854 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +**README.md for the 'meta-agl-telematics-demo' layer.** + +**See README-AGL.md in meta-agl for general information about Automotive Grade Linux.** + + +meta-agl-telematics-demo, the layer for the Telematics DEMO platform of Automotive Grade Linux +================================================================================= + +The layer 'meta-agl-telematics-demo' provides a reference/demo platform and +applications for the AGL Distribution. + +AGL is creating an automotive specific Linux distribution (AGL UCB) that unifies +the software that has been written in a number of places already, +such as GENIVI and Tizen IVI. + +The AGL community appreciates feedback, ideas, suggestion, bugs and +documentation just as much as code. Please join the irc conversation +at the #automotive channel on irc.freenode.net and our mailing list. + +For infomation for subscribing to the mailing list + [automotive-discussions](http://lists.linuxfoundation.org/mailman/listinfo/automotive-discussions) +For information about AGL Distribution, see the + [AGL Distribution](https://wiki.automotivelinux.org/agl-distro) +For information abount Getting started with AGL + [here](https://wiki.automotivelinux.org/start/getting-started) +For information about contributing to the AGL Distro + [here](https://wiki.automotivelinux.org/agl-distro/contributing) + + +Quick start guide +----------------- +See README-AGL.md in meta-agl + + +Layer Dependencies +------------------ + +* Base dependencies [agl-telematics-demo]: + +URI: git://git.yoctoproject.org/poky + +URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl + +URI: https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl-devel + +URI: git://git.openembedded.org/meta-openembedded + +Specifically out of meta-openembedded these sub-layers are used: + + - meta-openembedded/meta-oe + - meta-openembedded/meta-multimedia + - meta-openembedded/meta-efl + - meta-openembedded/meta-networking + - meta-openembedded/meta-python + - meta-openembedded/meta-ruby + +* Hardware dependencies: + +The Raspberry Pi 3 board depends in addition on: + +URI: http://git.yoctoproject.org/meta-raspberrypi + + +Packagegroups +------------- + +AGL Telematics Demo Platform's package group design: + +* packagegroup-agl-telematics-demo-platform + +This is for generating the image 'agl-telematics-demo-platform' which is a full +image for the Telematics profile of the AGL distro. + +Following meta-agl's design of packagegroups, ``agl-telematics-demo-platform.bb`` +contains only ``packagegroup-agl-telematics-demo-platform``. + +``packagegroup-agl-telematics-demo-platform`` has one packagegroup in it, +``packagegroup-agl-profile-telematics``, and the packages required for the DEMO +applications. + +Supported Machines +------------------ + +At the moment only the Raspberry Pi 3 has been tested, but the other +AGL supported platforms (see `README-AGL.md` in meta-agl layer), should work. + +Supported Target of bitbake +------------------------ + +* `agl-telematics-demo-platform` is the full image of the AGL Telematics +Demo Platform with all applications + diff --git a/conf/conf-notes.txt b/conf/conf-notes.txt new file mode 100644 index 0000000..2060128 --- /dev/null +++ b/conf/conf-notes.txt @@ -0,0 +1,4 @@ +Common targets are: + agl-cluster-demo-platform + agl-cluster-demo-platform-crosssdk + agl-cluster-demo-platform-qa diff --git a/conf/include/agl-telematics-demo.inc b/conf/include/agl-telematics-demo.inc new file mode 100644 index 0000000..a8847e0 --- /dev/null +++ b/conf/include/agl-telematics-demo.inc @@ -0,0 +1,5 @@ +IMAGE_FEATURES =+ "debug-tweaks" + +#DISTRO_FEATURES_append = " " + +#IMAGE_INSTALL_append = " " diff --git a/conf/layer.conf b/conf/layer.conf new file mode 100644 index 0000000..14892b5 --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,12 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH =. "${LAYERDIR}:" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "agl-telematics-demo" +BBFILE_PATTERN_agl-telematics-demo = "^${LAYERDIR}/" +BBFILE_PRIORITY_agl-telematics-demo = "7" + +LAYERSERIES_COMPAT_agl-telematics-demo = "thud" diff --git a/recipes-config/agl-login-manager/agl-login-manager_%.bbappend b/recipes-config/agl-login-manager/agl-login-manager_%.bbappend new file mode 100644 index 0000000..7b7cd35 --- /dev/null +++ b/recipes-config/agl-login-manager/agl-login-manager_%.bbappend @@ -0,0 +1 @@ +LOGIN_USER ?= "0" diff --git a/recipes-connectivity/cluster-connman-conf/cluster-connman-conf/cluster.config b/recipes-connectivity/cluster-connman-conf/cluster-connman-conf/cluster.config new file mode 100644 index 0000000..6ce2a76 --- /dev/null +++ b/recipes-connectivity/cluster-connman-conf/cluster-connman-conf/cluster.config @@ -0,0 +1,3 @@ +[service_cluster_ethernet] +Type=ethernet +IPv4=@CLUSTER_DEMO_SERVER_IP@/255.255.255.0 diff --git a/recipes-connectivity/cluster-connman-conf/cluster-connman-conf_1.0.bb b/recipes-connectivity/cluster-connman-conf/cluster-connman-conf_1.0.bb new file mode 100644 index 0000000..78528aa --- /dev/null +++ b/recipes-connectivity/cluster-connman-conf/cluster-connman-conf_1.0.bb @@ -0,0 +1,15 @@ +SUMMARY = "Cluster demo connman configuration" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://cluster.config" + +CLUSTER_DEMO_SERVER_IP ?= "192.168.20.99" + +do_install() { + install -d ${D}${localstatedir}/lib/connman + sed "s/@CLUSTER_DEMO_SERVER_IP@/${CLUSTER_DEMO_SERVER_IP}/g" \ + ${WORKDIR}/cluster.config > ${D}${localstatedir}/lib/connman/cluster.config +} + +FILES_${PN} += "${localstatedir}/*" diff --git a/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/0001-remove-Fido-service-provider.patch b/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/0001-remove-Fido-service-provider.patch new file mode 100644 index 0000000..c1545c7 --- /dev/null +++ b/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info/0001-remove-Fido-service-provider.patch @@ -0,0 +1,31 @@ +diff --git a/serviceproviders.xml b/serviceproviders.xml +index e7f36ac..f1a0ca3 100644 +--- a/serviceproviders.xml ++++ b/serviceproviders.xml +@@ -2236,26 +2236,6 @@ conceived. + + <!-- Canada --> + <country code="ca"> +- <provider> +- <name>Fido</name> +- <gsm> +- <network-id mcc="302" mnc="370"/> +- <apn value="internet.fido.ca"> +- <plan type="postpaid"/> +- <usage type="internet"/> +- <username>fido</username> +- <password>fido</password> +- <dns>204.92.15.211</dns> +- <dns>207.181.101.4</dns> +- </apn> +- <apn value="mms.fido.ca"> +- <usage type="mms"/> +- <name>Fido MMS</name> +- <mmsc>http://mms.fido.ca</mmsc> +- <mmsproxy>mm1.fido.ca:80</mmsproxy> +- </apn> +- </gsm> +- </provider> + <provider> + <name>Rogers</name> + <gsm> diff --git a/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bbappend b/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bbappend new file mode 100644 index 0000000..35ef26f --- /dev/null +++ b/recipes-connectivity/mobile-broadband-provider-info/mobile-broadband-provider-info_git.bbappend @@ -0,0 +1,4 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://0001-remove-Fido-service-provider.patch" + diff --git a/recipes-core/udev/sw-gpsd-udev-conf/60-sw-gpsd.rules b/recipes-core/udev/sw-gpsd-udev-conf/60-sw-gpsd.rules new file mode 100644 index 0000000..a554700 --- /dev/null +++ b/recipes-core/udev/sw-gpsd-udev-conf/60-sw-gpsd.rules @@ -0,0 +1,8 @@ +# udev rules for gpsd for Sierra Wireless modems +SUBSYSTEM!="tty", GOTO="sw_gpsd_rules_end" + +ENV{ID_VENDOR_ID}=="1199", ATTRS{bInterfaceNumber}=="02", SYMLINK+="gps%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service" + +ACTION=="remove", TAG+="systemd", ENV{SYSTEMD_WANTS}="gpsdctl@%k.service" + +LABEL="sw_gpsd_rules_end" diff --git a/recipes-core/udev/sw-gpsd-udev-conf_1.0.bb b/recipes-core/udev/sw-gpsd-udev-conf_1.0.bb new file mode 100644 index 0000000..9b6fd57 --- /dev/null +++ b/recipes-core/udev/sw-gpsd-udev-conf_1.0.bb @@ -0,0 +1,16 @@ +SUMMARY = "Sierra-Wireless MC7xxx modem gpsd udev configuration" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://60-sw-gpsd.rules" + +do_compile[noexec] = "1" + +do_install() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${WORKDIR}/60-sw-gpsd.rules ${D}${sysconfdir}/udev/rules.d/ + fi +} + +RDEPENDS_${PN} += "systemd" diff --git a/recipes-core/udev/usb-can-udev-conf/60-usb-can.rules b/recipes-core/udev/usb-can-udev-conf/60-usb-can.rules new file mode 100644 index 0000000..3aa800a --- /dev/null +++ b/recipes-core/udev/usb-can-udev-conf/60-usb-can.rules @@ -0,0 +1,7 @@ +# udev rules for USB CAN adapters +SUBSYSTEM!="tty", GOTO="usb_can_rules_end" + +# VScom USB-CAN Plus +ATTRS{idProduct}=="6015", ATTRS{idVendor}=="0403", SYMLINK+="usbcan%n", TAG+="systemd", ENV{SYSTEMD_WANTS}="slcand@%k.service" + +LABEL="usb_can_rules_end" diff --git a/recipes-core/udev/usb-can-udev-conf/slcand-default b/recipes-core/udev/usb-can-udev-conf/slcand-default new file mode 100644 index 0000000..a86552f --- /dev/null +++ b/recipes-core/udev/usb-can-udev-conf/slcand-default @@ -0,0 +1,2 @@ +# Defaults for VScom USB-CAN Plus @ 500 Kb/s CAN rate +SLCAND_OPTS="-o -s6 -t hw -S 3000000" diff --git a/recipes-core/udev/usb-can-udev-conf/slcand@.service b/recipes-core/udev/usb-can-udev-conf/slcand@.service new file mode 100644 index 0000000..3c30e51 --- /dev/null +++ b/recipes-core/udev/usb-can-udev-conf/slcand@.service @@ -0,0 +1,13 @@ +[Unit] +Description=Serial CAN daemon (can-utils) +BindsTo=dev-%i.device +After=dev-%i.device + +[Service] +Type=forking +StopWhenUnneeded=yes +Environment=SLCAND_OPTS="-o -c -s6" SLCAND_DEV=can0 +EnvironmentFile=-/etc/default/slcand +EnvironmentFile=-/etc/sysconfig/slcand +ExecStart=/usr/bin/slcand $SLCAND_OPTS %I $SLCAND_DEV +ExecStartPost=/bin/sh -c '/bin/sleep 3; /sbin/ip link set $SLCAND_DEV up' diff --git a/recipes-core/udev/usb-can-udev-conf_1.0.bb b/recipes-core/udev/usb-can-udev-conf_1.0.bb new file mode 100644 index 0000000..fb5deec --- /dev/null +++ b/recipes-core/udev/usb-can-udev-conf_1.0.bb @@ -0,0 +1,25 @@ +SUMMARY = "USB CAN adapter udev configuration" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://60-usb-can.rules \ + file://slcand@.service \ + file://slcand-default \ +" + +do_compile[noexec] = "1" + +do_install() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/udev/rules.d + install -m 0644 ${WORKDIR}/60-usb-can.rules ${D}${sysconfdir}/udev/rules.d/ + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/slcand@.service ${D}${systemd_system_unitdir}/ + install -d ${D}${sysconfdir}/default + install -m 0644 ${WORKDIR}/slcand-default ${D}${sysconfdir}/default/slcand + fi +} + +FILES_${PN} += "${systemd_system_unitdir}" + +RDEPENDS_${PN} += "systemd" diff --git a/recipes-demo/telematics-recorder/telematics-recorder_git.bb b/recipes-demo/telematics-recorder/telematics-recorder_git.bb new file mode 100644 index 0000000..148c8b3 --- /dev/null +++ b/recipes-demo/telematics-recorder/telematics-recorder_git.bb @@ -0,0 +1,25 @@ +SUMMARY = "Telematics Recorder AGL Demonstration" +DESCRIPTION = "AGL Application for demonstrating telematics recorder functionality" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-telematics-demo-recorder" +SECTION = "apps" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327" + +SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-telematics-demo-recorder;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +PV = "1.0+git${SRCPV}" +S = "${WORKDIR}/git" + +# build-time dependencies +DEPENDS = "glib-2.0 mosquitto" + +inherit cmake aglwgt + +RDEPENDS_${PN} += " \ + agl-service-can-low-level \ + agl-service-gps \ + agl-service-network \ + libmosquitto1 \ +" diff --git a/recipes-navigation/gpsd/gpsd/sw-device-hook b/recipes-navigation/gpsd/gpsd/sw-device-hook new file mode 100644 index 0000000..e1e6f7a --- /dev/null +++ b/recipes-navigation/gpsd/gpsd/sw-device-hook @@ -0,0 +1,23 @@ +#!/bin/sh + +# Figure out the parent usb device +USBDEV=`ls -l "$1" |sed -ne 's!^c[^ ]* [0-9]* [^ ]* [^ ]* \([0-9]*\), \([0-9]*\) .*!/sys/dev/char/\1:\2/device/../..!p'` + +# Silently ignore any non-USB ports +if [ ! -r "$USBDEV/idVendor" ] || [ ! -r "$USBDEV/idProduct" ]; then + exit 0 +fi + +VID=`cat "$USBDEV/idVendor"` +PID=`cat "$USBDEV/idProduct"` +case "$2" in + ACTIVATE) CMD=START ;; + *) CMD=STOP ;; +esac + +case "$VID:$PID" in + "1199:9071"|"1199:9079") echo \$GPS_$CMD >"$1" ;; + *) ;; +esac + +exit 0 diff --git a/recipes-navigation/gpsd/gpsd_%.bbappend b/recipes-navigation/gpsd/gpsd_%.bbappend new file mode 100644 index 0000000..80e91f0 --- /dev/null +++ b/recipes-navigation/gpsd/gpsd_%.bbappend @@ -0,0 +1,9 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +SRC_URI += "file://sw-device-hook" + +do_install_append() { + # Install device-hook script for starting NMEA output on Sierra Wireless modems + install -d ${D}${sysconfdir}/gpsd + install -m 0755 ${WORKDIR}/sw-device-hook ${D}${sysconfdir}/gpsd/device-hook +} diff --git a/recipes-platform/images/agl-telematics-demo-platform-crosssdk.bb b/recipes-platform/images/agl-telematics-demo-platform-crosssdk.bb new file mode 100644 index 0000000..75b4f5c --- /dev/null +++ b/recipes-platform/images/agl-telematics-demo-platform-crosssdk.bb @@ -0,0 +1,21 @@ +SUMMARY = "Cross SDK of AGL Distribution for telematics profile Demo" + +DESCRIPTION = "SDK image for AGL Distribution for Telematics profile Demo. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-telematics-demo-platform.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk + +# Task do_populate_sdk and do_rootfs can't be exec simultaneously. +# Both exec "createrepo" on the same directory, and so one of them +# can failed (randomly). +addtask do_populate_sdk after do_rootfs + +TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " diff --git a/recipes-platform/images/agl-telematics-demo-platform.bb b/recipes-platform/images/agl-telematics-demo-platform.bb new file mode 100644 index 0000000..403f4b7 --- /dev/null +++ b/recipes-platform/images/agl-telematics-demo-platform.bb @@ -0,0 +1,13 @@ +DESCRIPTION = "AGL Telematics Demo Platform image." + +require agl-telematics-demo-platform.inc + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " \ + " + +IMAGE_INSTALL_append = " \ + packagegroup-agl-telematics-demo-platform \ + " + diff --git a/recipes-platform/images/agl-telematics-demo-platform.inc b/recipes-platform/images/agl-telematics-demo-platform.inc new file mode 100644 index 0000000..bd3a89e --- /dev/null +++ b/recipes-platform/images/agl-telematics-demo-platform.inc @@ -0,0 +1,3 @@ +# Base image +require recipes-platform/images/agl-image-telematics.inc + diff --git a/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb b/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb new file mode 100644 index 0000000..e3614de --- /dev/null +++ b/recipes-platform/packagegroups/packagegroup-agl-telematics-demo-platform.bb @@ -0,0 +1,34 @@ +SUMMARY = "The software for AGL telematics profile demo platform" +DESCRIPTION = "A set of packages belonging to the AGL telematics demo platform" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-telematics-demo-platform \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-profile-telematics \ + " + +AGL_APPS = " \ + telematics-recorder \ + " + +AGL_APIS = " \ + agl-service-gps \ + " + +RDEPENDS_${PN}_append = " \ + gpsd \ + sw-gpsd-udev-conf \ + usb-can-udev-conf \ + ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'ofono-tests gps-utils' , '', d)} \ + ${AGL_APPS} \ + ${AGL_APIS} \ +" +# packagegroup-agl-core-navigation? (brings in geoclue...) diff --git a/templates/feature/agl-telematics-demo/50_bblayers.conf.inc b/templates/feature/agl-telematics-demo/50_bblayers.conf.inc new file mode 100644 index 0000000..e3eec40 --- /dev/null +++ b/templates/feature/agl-telematics-demo/50_bblayers.conf.inc @@ -0,0 +1,5 @@ +# This layer contains the telematics demo code only +#----------------------------------------------------------- +BBLAYERS =+ " \ + ${METADIR}/meta-agl-telematics-demo \ +" diff --git a/templates/feature/agl-telematics-demo/50_local.conf.inc b/templates/feature/agl-telematics-demo/50_local.conf.inc new file mode 100644 index 0000000..64c8714 --- /dev/null +++ b/templates/feature/agl-telematics-demo/50_local.conf.inc @@ -0,0 +1,2 @@ +#see meta-agl-telematics-demo/conf/include/agl-telematics-demo.inc +require conf/include/agl-telematics-demo.inc diff --git a/templates/feature/agl-telematics-demo/included.dep b/templates/feature/agl-telematics-demo/included.dep new file mode 100644 index 0000000..e5009f9 --- /dev/null +++ b/templates/feature/agl-telematics-demo/included.dep @@ -0,0 +1 @@ +agl-profile-telematics |