summaryrefslogtreecommitdiffstats
path: root/recipes-apis/agl-service-can-low-level
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-apis/agl-service-can-low-level')
-rw-r--r--recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bbappend10
-rw-r--r--recipes-apis/agl-service-can-low-level/can-dev-mapping-helper_1.0.bb21
-rw-r--r--recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.conf3
-rw-r--r--recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.service6
-rw-r--r--recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.sh36
5 files changed, 76 insertions, 0 deletions
diff --git a/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bbappend b/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bbappend
new file mode 100644
index 0000000..4f28210
--- /dev/null
+++ b/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bbappend
@@ -0,0 +1,10 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI += "file://can-dev-mapping-helper.conf"
+
+do_install_append() {
+ install -D -m 0644 ${WORKDIR}/can-dev-mapping-helper.conf \
+ ${D}${sysconfdir}/systemd/system/afm-service-agl-service-can-low-level-.service.d/can-dev-mapping-helper.conf
+}
+
+RDEPENDS_${PN} += "can-dev-mapping-helper"
diff --git a/recipes-apis/agl-service-can-low-level/can-dev-mapping-helper_1.0.bb b/recipes-apis/agl-service-can-low-level/can-dev-mapping-helper_1.0.bb
new file mode 100644
index 0000000..37793fd
--- /dev/null
+++ b/recipes-apis/agl-service-can-low-level/can-dev-mapping-helper_1.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "Systemd unit for agl-service-can-low-level CAN device helper"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://can-dev-mapping-helper.service \
+ file://can-dev-mapping-helper.sh \
+"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ install -D -m 0644 ${WORKDIR}/${BPN}.service ${D}${systemd_system_unitdir}/${BPN}.service
+ install -D -m 0755 ${WORKDIR}/${BPN}.sh ${D}${sbindir}/${BPN}.sh
+}
+
+FILES_${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS_${PN} += "bash"
diff --git a/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.conf b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.conf
new file mode 100644
index 0000000..c89cc4d
--- /dev/null
+++ b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.conf
@@ -0,0 +1,3 @@
+[Unit]
+Wants=can-dev-mapping-helper.service
+After=can-dev-mapping-helper.service
diff --git a/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.service b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.service
new file mode 100644
index 0000000..0436716
--- /dev/null
+++ b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.service
@@ -0,0 +1,6 @@
+[Unit]
+Description=CAN interface helper
+
+[Service]
+ExecStart=/usr/sbin/can-dev-mapping-helper.sh
+Type=oneshot
diff --git a/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.sh b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.sh
new file mode 100644
index 0000000..c81014f
--- /dev/null
+++ b/recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+#
+# Script to bring up CAN interfaces configured in /etc/dev-mapping.conf
+# as vcan interfaces if no physical interface is present.
+#
+
+vcan_up() {
+ if [ -n "$1" ]; then
+ echo "Bringing up $1 as virtual CAN device"
+ ip link add dev $1 type vcan
+ ip link set up $1
+ fi
+}
+
+if [ ! -f /etc/dev-mapping.conf ]; then
+ exit 0
+fi
+
+hs=$(grep ^hs= /etc/dev-mapping.conf |cut -d= -f2 |tr -d '"')
+ls=$(grep ^ls= /etc/dev-mapping.conf |cut -d= -f2 |tr -d '"')
+
+if [ -n "$hs" ]; then
+ echo "Checking $hs"
+ if ! ifconfig $hs >/dev/null 2>&1; then
+ vcan_up $hs
+ fi
+fi
+if [ -n "$ls" -a "$ls" != "$hs" ]; then
+ echo "Checking $ls"
+ if ! ifconfig $ls >/dev/null 2>&1; then
+ vcan_up $ls
+ fi
+fi
+
+exit 0