diff options
25 files changed, 471 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..dcfeb9d --- /dev/null +++ b/.gitreview @@ -0,0 +1,5 @@ +[gerrit] +host=gerrit.automotivelinux.org +port=29418 +project=AGL/meta-agl-cluster-demo +defaultbranch=master diff --git a/README.md b/README.md new file mode 100644 index 0000000..ea133e3 --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +**README.md for the 'meta-agl-cluster-demo' layer.** + +**See README-AGL.md in meta-agl for general information about Automotive Grade Linux.** + + +meta-agl-cluster-demo, the layer for the Instrument Cluster DEMO platform of Automotive Grade Linux +================================================================================= + +The layer 'meta-agl-cluster-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-cluster-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 + +URI: https://github.com/meta-qt5/meta-qt5.git + +* Hardware dependencies: + +The Minnowboard Turbot board depends in addition on: + +URI: http://git.yoctoproject.org/meta-intel + + +Packagegroups +------------- + +AGL Cluster Demo Platform's package group design: + +* packagegroup-agl-cluster-demo-platform + +This is for generating the image 'agl-cluster-demo-platform' which is a full +image for the Instrument Cluster profile of the AGL distro. + +Following meta-agl's design of packagegroups, ``agl-cluster-demo-platform.bb`` +contains only ``packagegroup-agl-cluster-demo-platform``. + +``packagegroup-agl-cluster-demo-platform`` has one packagegroup in it, +``packagegroup-agl-profile-cluster-qt5``, and the packages required for the DEMO +applications. + +Supported Machines +------------------ + +At the moment only the Minnowboard Turbot has been tested, but the other +AGL supported platforms (see `README-AGL.md` in meta-agl layer), should be +possible to make work by modifying the gstreamer pipeline used in the +agl-cluster-demo-receiver application to replace the use of vaapisink with +an alternative that works for the platform. + +Supported Target of bitbake +------------------------ + +* `agl-cluster-demo-platform` is the full image of the AGL Instrument Cluster +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-cluster-demo.inc b/conf/include/agl-cluster-demo.inc new file mode 100644 index 0000000..a8847e0 --- /dev/null +++ b/conf/include/agl-cluster-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..3e98b51 --- /dev/null +++ b/conf/layer.conf @@ -0,0 +1,10 @@ +# 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-cluster-demo" +BBFILE_PATTERN_agl-cluster-demo = "^${LAYERDIR}/" +BBFILE_PRIORITY_agl-cluster-demo = "7" 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-demo-hmi/cluster-dashboard/cluster-dashboard_git.bb b/recipes-demo-hmi/cluster-dashboard/cluster-dashboard_git.bb new file mode 100644 index 0000000..74974eb --- /dev/null +++ b/recipes-demo-hmi/cluster-dashboard/cluster-dashboard_git.bb @@ -0,0 +1,29 @@ +SUMMARY = "Instrument Cluster Dashboard AGL Demonstration" +DESCRIPTION = "AGL HMI Application for demonstrating instrument cluster dashboard" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-cluster-demo-dashboard" +SECTION = "apps" + +LICENSE = "Apache-2.0 & BSD" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ + file://app/cluster-gauges.qml;beginline=9;endline=48;md5=54187d50b29429abee6095fe8b7c1a78" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-dashboard;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +PV = "1.0+git${SRCPV}" +S = "${WORKDIR}/git" + +# build-time dependencies +DEPENDS += "qtquickcontrols2 qtwebsockets qlibwindowmanager" + +inherit pkgconfig cmake_qt5 aglwgt + +RDEPENDS_${PN} += " \ + qlibwindowmanager \ + qtquickcontrols \ + qtquickcontrols-qmlplugins \ + qtquickcontrols2 \ + qtquickcontrols2-qmlplugins \ + qtwebsockets \ + qtwebsockets-qmlplugins \ +" diff --git a/recipes-demo-hmi/cluster-receiver/cluster-receiver_git.bb b/recipes-demo-hmi/cluster-receiver/cluster-receiver_git.bb new file mode 100644 index 0000000..92f9221 --- /dev/null +++ b/recipes-demo-hmi/cluster-receiver/cluster-receiver_git.bb @@ -0,0 +1,26 @@ +SUMMARY = "Instrument Cluster Receiver AGL Demonstration" +DESCRIPTION = "AGL HMI Application for demonstrating instrument cluster remote display" +HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-cluster-demo-receiver" +SECTION = "apps" + +LICENSE = "Apache-2.0 & MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \ + file://app/surface.hpp;beginline=5;endline=21;md5=5351c531a191f0e3463aafcd0a6a00a3" + +SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-cluster-demo-receiver;protocol=https;branch=${AGL_BRANCH}" +SRCREV = "${AGL_APP_REVISION}" + +PV = "1.0+git${SRCPV}" +S = "${WORKDIR}/git" + +# build-time dependencies +DEPENDS = "wayland wayland-ivi-extension libwindowmanager gstreamer1.0" + +inherit cmake aglwgt + +RDEPENDS_${PN} += " \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-vaapi \ +" diff --git a/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/areas.db b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/areas.db new file mode 100644 index 0000000..00322ac --- /dev/null +++ b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/areas.db @@ -0,0 +1,40 @@ +{ + "areas": [ + { + "name": "fullscreen", + "rect": { + "x": 0, + "y": 0, + "w": 1920, + "h": 1080 + } + }, + { + "name": "normal.full", + "rect": { + "x": 672, + "y": 264, + "w": 576, + "h": 552 + } + }, + { + "name": "restriction.normal", + "rect": { + "x": 672, + "y": 264, + "w": 576, + "h": 552 + } + }, + { + "name": "on_screen", + "rect": { + "x": 672, + "y": 264, + "w": 576, + "h": 552 + } + } + ] +} diff --git a/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/layers.json b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/layers.json new file mode 100644 index 0000000..1fd9d18 --- /dev/null +++ b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/layers.json @@ -0,0 +1,41 @@ +{ + "comment": "Surface ID to Layer ID mapping", + + "main_surface": { + "surface_role": "HomeScreen", + "comment": "This surface should never be made invisible (The HomeScreen)" + }, + + "mappings": [ + { + "role": "BackGroundLayer", + "name": "BackGroundLayer", + "layer_id": 999, + "comment": "Single BackGround layer map for the map, radio, music and video" + }, + { + "role": "homescreen", + "name": "FarHomeScreen", + "layer_id": 1000, + "comment": "FarHomeScreen is the part of HomeScreen. The z order of this layer is lower than NearHomeScreen" + }, + { + "role": "receiver|fallback", + "name": "Apps", + "layer_id": 1001, + "comment": "Range of IDs that will always be placed on layer 1001" + }, + { + "role": "restriction", + "name": "Restriction", + "layer_id": 1002, + "comment": "This layer is for restriction notification. This is used by restriction role" + }, + { + "role": "^on_screen.*", + "name": "OnScreen", + "layer_id": 9999, + "comment": "Range of IDs that will always be placed on the OnScreen layer, that gets a very high 'dummy' id of 9999" + } + ] +} diff --git a/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/roles.db b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/roles.db new file mode 100644 index 0000000..1370214 --- /dev/null +++ b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf/roles.db @@ -0,0 +1,34 @@ +{ + "roles":[ + { + "category": "homescreen", + "role": "homescreen", + "area": "fullscreen", + "layer": "homescreen", + }, + { + "category": "debug", + "role": "receiver | fallback", + "area": "normal.full", + "layer": "apps", + }, + { + "category": "restriction", + "role": "restriction", + "area": "restriction.normal", + "layer": "restriction", + }, + { + "category": "pop_up", + "role": "on_screen | on_screen_phone", + "area": "on_screen", + "layer": "on_screen", + }, + { + "category": "system_alert", + "role": "system_alert", + "area": "on_screen", + "layer": "on_screen", + } + ] +} diff --git a/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf_1.0.bb b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf_1.0.bb new file mode 100644 index 0000000..0cef85c --- /dev/null +++ b/recipes-demo-hmi/cluster-windowmanager-conf/cluster-windowmanager-conf_1.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "Cluster demo windowmanager configuration" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +SRC_URI = "file://layers.json \ + file://areas.db \ + file://roles.db \ +" + +do_compile[noexec] = "1" + +do_install() { + install -d ${D}${sysconfdir}/xdg/windowmanager + install -m 0644 ${WORKDIR}/layers.json ${D}${sysconfdir}/xdg/windowmanager/layers.json + install -m 0644 ${WORKDIR}/areas.db ${D}${sysconfdir}/xdg/windowmanager/areas.db + install -m 0644 ${WORKDIR}/roles.db ${D}${sysconfdir}/xdg/windowmanager/roles.db +} + +#FILES_${PN} += "${sysconfdir}/*" diff --git a/recipes-graphics/wayland/weston-ini-conf.bbappend b/recipes-graphics/wayland/weston-ini-conf.bbappend new file mode 100644 index 0000000..6879975 --- /dev/null +++ b/recipes-graphics/wayland/weston-ini-conf.bbappend @@ -0,0 +1,23 @@ +# Remove all rotated portrait mode config fragments, and add our own +# instead, as the cluster demo display is landscape orientation. +# NOTES: +# (1) Cannot over-ride virtual.cfg simply by having a copy here and +# getting it picked up via our FILESEXTRAPATHS_prepend due to AGL's +# layer priority scheme (this layer is lower priority than +# meta-agl-bsp), so need to remove it and add a replacement. +# (2) The HDMI-A-1 config here uses a transform of 180 degrees to work +# with the monitor setup in the AGL demo hardware platform. The +# virtual-landscape.cfg is left unrotated, since it's used with +# QEMU on the desktop. + +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +SRC_URI_remove = " \ + file://hdmi-a-1-270.cfg \ + file://hdmi-a-1-90.cfg \ + file://virtual.cfg \ +" +SRC_URI += " \ + file://hdmi-a-1-180.cfg \ + file://virtual-landscape.cfg \ +" diff --git a/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg b/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg new file mode 100644 index 0000000..7648c77 --- /dev/null +++ b/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg @@ -0,0 +1,4 @@ +# A display is connected to HDMI-A-1 +[output] +name=HDMI-A-1 +transform=180 diff --git a/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg b/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg new file mode 100644 index 0000000..d692536 --- /dev/null +++ b/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg @@ -0,0 +1,3 @@ +[output] +name=Virtual-1 +mode=1920x1080 diff --git a/recipes-platform/images/agl-cluster-demo-platform-crosssdk.bb b/recipes-platform/images/agl-cluster-demo-platform-crosssdk.bb new file mode 100644 index 0000000..fd99a77 --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-platform-crosssdk.bb @@ -0,0 +1,33 @@ +SUMMARY = "Cross SDK of AGL Distribution for Cluster profile Demo" + +DESCRIPTION = "SDK image for AGL Distribution for Cluster profile Demo. \ +It includes the full meta-toolchain, plus developement headers and libraries \ +to form a standalone cross SDK." + +require agl-cluster-demo-platform.bb + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " dev-pkgs" +IMAGE_INSTALL_append = " kernel-dev kernel-devsrc" + +inherit populate_sdk populate_sdk_qt5 + +# 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 + +# Add wayland-scanner to SDK (SPEC-945) +# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup +# wayland-scanner is in nativesdk-wayland-dev ! +# option: add also nativesdk-qtwayland-tools +TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev" + +TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules " + +# Add libvcard to the SDK to support libqtappfw +TOOLCHAIN_TARGET_TASK += " \ + libvcard-dev \ + libvcard-staticdev \ + " diff --git a/recipes-platform/images/agl-cluster-demo-platform.bb b/recipes-platform/images/agl-cluster-demo-platform.bb new file mode 100644 index 0000000..52d737b --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-platform.bb @@ -0,0 +1,14 @@ +DESCRIPTION = "AGL Cluster Demo Platform image currently contains a simple cluster interface." + +require agl-cluster-demo-platform.inc + +LICENSE = "MIT" + +IMAGE_FEATURES_append = " \ + " + +# add packages for cluster demo platform (include demo apps) here +IMAGE_INSTALL_append = " \ + packagegroup-agl-cluster-demo-platform \ + " + diff --git a/recipes-platform/images/agl-cluster-demo-platform.inc b/recipes-platform/images/agl-cluster-demo-platform.inc new file mode 100644 index 0000000..8745ca9 --- /dev/null +++ b/recipes-platform/images/agl-cluster-demo-platform.inc @@ -0,0 +1,3 @@ +# Base image +require recipes-platform/images/agl-image-cluster-qt5.inc + diff --git a/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb b/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb new file mode 100644 index 0000000..d639495 --- /dev/null +++ b/recipes-platform/packagegroups/packagegroup-agl-cluster-demo-platform.bb @@ -0,0 +1,53 @@ +SUMMARY = "The software for demo platform of AGL cluster profile" +DESCRIPTION = "A set of packages belong to AGL Cluster Demo Platform" + +LICENSE = "MIT" + +inherit packagegroup + +PACKAGES = "\ + packagegroup-agl-cluster-demo-platform \ + " + +ALLOW_EMPTY_${PN} = "1" + +RDEPENDS_${PN} += "\ + packagegroup-agl-profile-cluster-qt5 \ + " + +# fonts +TTF_FONTS = " \ + ttf-bitstream-vera \ + ttf-dejavu-sans \ + ttf-dejavu-sans-mono \ + ttf-dejavu-serif \ + source-han-sans-cn-fonts \ + source-han-sans-jp-fonts \ + source-han-sans-tw-fonts \ + " + +AGL_APPS = " \ + cluster-dashboard \ + cluster-receiver \ + " + +AGL_APIS = " \ + agl-service-windowmanager \ + " + +RDEPENDS_${PN}_append = " \ + wayland-ivi-extension \ + cluster-windowmanager-conf \ + hmi-debug \ + libva-utils \ + linux-firmware-ralink \ + connman \ + connman-client \ + connman-tools \ + cluster-connman-conf \ + iproute2 \ + dhcp-client \ + ${TTF_FONTS} \ + ${AGL_APPS} \ + ${AGL_APIS} \ +" diff --git a/templates/feature/agl-cluster-demo/50_bblayers.conf.inc b/templates/feature/agl-cluster-demo/50_bblayers.conf.inc new file mode 100644 index 0000000..d8357f2 --- /dev/null +++ b/templates/feature/agl-cluster-demo/50_bblayers.conf.inc @@ -0,0 +1,5 @@ +# This layer contains the WIP cluster feature/demo code only +#----------------------------------------------------------- +BBLAYERS =+ " \ + ${METADIR}/meta-agl-cluster-demo \ +" diff --git a/templates/feature/agl-cluster-demo/50_local.conf.inc b/templates/feature/agl-cluster-demo/50_local.conf.inc new file mode 100644 index 0000000..90b0380 --- /dev/null +++ b/templates/feature/agl-cluster-demo/50_local.conf.inc @@ -0,0 +1,2 @@ +#see meta-agl-cluster-demo/conf/include/agl-cluster-demo.inc +require conf/include/agl-cluster-demo.inc diff --git a/templates/feature/agl-cluster-demo/included.dep b/templates/feature/agl-cluster-demo/included.dep new file mode 100644 index 0000000..1724b64 --- /dev/null +++ b/templates/feature/agl-cluster-demo/included.dep @@ -0,0 +1 @@ +agl-profile-cluster-qt5 agl-hmi-framework |