diff options
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 |