From 5bdba822918cfffb69c0e1983661c32586bed590 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 19 Aug 2020 18:37:51 -0400 Subject: Add can-dev-mapping-helper Changes: - Add a can-dev-mapping-helper.sh script and systemd unit to drive it, the script checks if the CAN devices specified in the low-can configuration file /etc/dev-mapping.conf exist, and if not brings up corresponding virtual CAN devices. - Add a systemd over-ride conf file for agl-service-can-low-level that makes can-dev-mapping-helper a dependency. This should ensure that the low-can binding always starts even if there are no physical CAN hardware devices. - Added a Before statement to sllin-demo.service to ensure that it will run before can-dev-mapping-helper and ensure that lin_config can create sllin0 correctly. - Removed the sllin-demo-virtual systemd unit, as it will no longer be required with can-dev-mapping-helper. - Updated the /var/run paths in sllin-demo.service and associated start_lin_demo.sh script to quiet systemd warnings about /var/run usage. Bug-AGL: SPEC-3540 Signed-off-by: Scott Murray Change-Id: Ife02f75f57ac7bbdee6b02217e2ab657fe8c36e0 --- .../files/can-dev-mapping-helper.conf | 3 ++ .../files/can-dev-mapping-helper.service | 6 ++++ .../files/can-dev-mapping-helper.sh | 36 ++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.conf create mode 100644 recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.service create mode 100644 recipes-apis/agl-service-can-low-level/files/can-dev-mapping-helper.sh (limited to 'recipes-apis/agl-service-can-low-level/files') 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 000000000..c89cc4d87 --- /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 000000000..0436716cb --- /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 000000000..c81014f3e --- /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 -- cgit 1.2.3-korg