summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-add-duplicate-filtering-option.patch61
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder/mapping.yml123
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb1
-rw-r--r--recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json156
4 files changed, 266 insertions, 75 deletions
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-add-duplicate-filtering-option.patch b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-add-duplicate-filtering-option.patch
new file mode 100644
index 000000000..1709ac1e4
--- /dev/null
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/0003-dbc2val-add-duplicate-filtering-option.patch
@@ -0,0 +1,61 @@
+From a22d972bc497ab46d99c1d118bd40b9471fef3a7 Mon Sep 17 00:00:00 2001
+From: Scott Murray <scott.murray@konsulko.com>
+Date: Mon, 13 Jun 2022 12:54:54 -0400
+Subject: [PATCH] dbc2val: add duplicate filtering option
+
+To avoid generating a lot of duplicated signal events from the
+CAN messages generated by LIN polling, add a per-target
+"filter-duplicates" option that can be used for signals where
+only changes should be pushed toi the VIS server. This is
+required with the current performance of the DBC feeder to avoid
+ending up with an increasing backlog of signal commands to the
+server. This will be investigated with upstream.
+
+Upstream-Status: pending
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+---
+ kuksa_feeders/dbc2val/dbc2vssmapper.py | 27 +++++++++++++++++++-------
+ 1 file changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/kuksa_feeders/dbc2val/dbc2vssmapper.py b/kuksa_feeders/dbc2val/dbc2vssmapper.py
+index 1718154..2feb572 100644
+--- a/kuksa_feeders/dbc2val/dbc2vssmapper.py
++++ b/kuksa_feeders/dbc2val/dbc2vssmapper.py
+@@ -48,14 +48,27 @@ class mapper:
+ # Check whether there are transforms defined to map DBC signal "signal" to
+ # VSS path "target". Returns the (potentially) transformed values
+ def transform(self,signal, target, value):
+- if "transform" not in self.mapping[signal]["targets"][target].keys(): #no transform defined, return as is
+- return value
+- for transform in self.mapping[signal]["targets"][target]["transform"]:
+- if transform in self.transforms.keys(): #found a known transform and apply
+- value=self.transforms[transform].transform(self.mapping[signal]["targets"][target]["transform"][transform],value)
++ result = value
++ if "transform" in self.mapping[signal]["targets"][target].keys():
++ for transform in self.mapping[signal]["targets"][target]["transform"]:
++ if transform in self.transforms.keys(): #found a known transform and apply
++ result = self.transforms[transform].transform(self.mapping[signal]["targets"][target]["transform"][transform],value)
++ else:
++ print(f"Warning: Unknown transform {transform} for {signal}->{target}")
++ # else no transform defined, return as is
++
++ if (("filter-duplicates" in self.mapping[signal]["targets"][target]) and
++ self.mapping[signal]["targets"][target]["filter-duplicates"] == "true"):
++ if "last" in self.mapping[signal]["targets"][target]:
++ if self.mapping[signal]["targets"][target]["last"] == result:
++ # ignore duplicate value
++ result = None
++ else:
++ self.mapping[signal]["targets"][target]["last"] = result
+ else:
+- print(f"Warning: Unknown transform {transform} for {signal}->{target}")
+- return value
++ self.mapping[signal]["targets"][target]["last"] = result
++
++ return result
+
+ def __contains__(self,key):
+ return key in self.mapping.keys()
+--
+2.35.1
+
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/mapping.yml b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/mapping.yml
index f8a561d27..ee970a32d 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/mapping.yml
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder/mapping.yml
@@ -11,85 +11,142 @@ PT_EngineSpeed:
transform:
math: "floor(x+0.5)"
+#
+# NOTE:
+#
+# The following mappings depend on the AGL-specific VSS overlay
+# that adds the extra Vehicle.Cabin.SteeringWheel.Switches sensors.
+# Since the CAN events are coming from LIN polling, applications
+# need to filter/debounce themselves. The minupdatedelay of 0 is
+# intentional to avoid missing events.
+#
+
SW_Next:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.Cabin.Infotainment.Media.Action:
+ Vehicle.Cabin.SteeringWheel.Switches.Next:
+ filter-duplicates: "true"
transform:
fullmapping:
- 1: "SkipForward"
+ 0: "false"
+ 1: "true"
SW_Previous:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.Cabin.Infotainment.Media.Action:
+ Vehicle.Cabin.SteeringWheel.Switches.Previous:
+ filter-duplicates: "true"
transform:
fullmapping:
- 1: "SkipBackward"
+ 0: "false"
+ 1: "true"
-# NOTE: Dependent on AGL-specific VSS overlay adding the extra action
SW_Mode:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.Cabin.Infotainment.Media.Action:
+ Vehicle.Cabin.SteeringWheel.Switches.Mode:
+ filter-duplicates: "true"
transform:
fullmapping:
- 1: "NextSource"
+ 0: "false"
+ 1: "true"
-# NOTE: Dependent on AGL-specific VSS overlay adding the signal
SW_Info:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.Cabin.Infotainment.Cluster.Mode:
+ Vehicle.Cabin.SteeringWheel.Switches.Info:
+ filter-duplicates: "true"
transform:
fullmapping:
+ 0: "false"
1: "true"
-#
-# The following is a little hackish, due to relying on the
-# application to treat IsActive and IsSet = "true" as toggles, and
-# being dependent on the AGL-specific VSS overlay to add IsSet.
-# A standalone LIN feeder with some state knowledge would maybe
-# be cleaner. Another possible option would be the addition of
-# another type of transform that has state to the DBC feeder.
-#
-
SW_CruiseEnable:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.ADAS.CruiseControl.IsActive:
+ Vehicle.Cabin.SteeringWheel.Switches.CruiseEnable:
+ filter-duplicates: "true"
transform:
fullmapping:
+ 0: "false"
1: "true"
SW_CruiseSet:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.ADAS.CruiseControl.IsSet:
+ Vehicle.Cabin.SteeringWheel.Switches.CruiseSet:
+ filter-duplicates: "true"
transform:
fullmapping:
+ 0: "false"
1: "true"
SW_CruiseResume:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.ADAS.CruiseControl.IsSet:
+ Vehicle.Cabin.SteeringWheel.Switches.CruiseResume:
+ filter-duplicates: "true"
transform:
fullmapping:
+ 0: "false"
1: "true"
SW_CruiseCancel:
- minupdatedelay: 500
+ minupdatedelay: 0
+ targets:
+ Vehicle.Cabin.SteeringWheel.Switches.CruiseCancel:
+ filter-duplicates: "true"
+ transform:
+ fullmapping:
+ 0: "false"
+ 1: "true"
+
+SW_VolumeUp:
+ minupdatedelay: 0
targets:
- Vehicle.ADAS.CruiseControl.IsSet:
+ Vehicle.Cabin.SteeringWheel.Switches.VolumeUp:
+ filter-duplicates: "true"
transform:
fullmapping:
- 1: "false"
+ 0: "false"
+ 1: "true"
+
+SW_VolumeDown:
+ minupdatedelay: 0
+ targets:
+ Vehicle.Cabin.SteeringWheel.Switches.VolumeDown:
+ filter-duplicates: "true"
+ transform:
+ fullmapping:
+ 0: "false"
+ 1: "true"
+
+SW_VolumeMute:
+ minupdatedelay: 0
+ targets:
+ Vehicle.Cabin.SteeringWheel.Switches.VolumeMute:
+ filter-duplicates: "true"
+ transform:
+ fullmapping:
+ 0: "false"
+ 1: "true"
+
+SW_Horn:
+ minupdatedelay: 0
+ targets:
+ Vehicle.Cabin.SteeringWheel.Switches.Horn:
+ filter-duplicates: "true"
+ transform:
+ fullmapping:
+ 0: "false"
+ 1: "true"
SW_LaneDepartureWarning:
- minupdatedelay: 500
+ minupdatedelay: 0
targets:
- Vehicle.ADAS.LaneDepartureDetection.IsActive:
+ Vehicle.Cabin.SteeringWheel.Switches.LaneDepartureWarning:
+ filter-duplicates: "true"
transform:
fullmapping:
+ 0: "false"
1: "true"
diff --git a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
index ed3663502..815c4d2bc 100644
--- a/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
+++ b/recipes-connectivity/kuksa-val/kuksa-dbc-feeder_git.bb
@@ -11,6 +11,7 @@ require kuksa-val.inc
SRC_URI += "file://0001-dbc2val-add-installation-mechanism.patch \
file://0002-dbc2val-usability-improvements.patch \
+ file://0003-dbc2val-add-duplicate-filtering-option.patch \
file://config.ini \
file://dbc_feeder.json.token \
file://mapping.yml \
diff --git a/recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json b/recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json
index 6cfdf5eee..423d32385 100644
--- a/recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json
+++ b/recipes-connectivity/kuksa-val/kuksa-val-agl/00-agl_vss_overlay_2.2.json
@@ -1,44 +1,126 @@
{
"Vehicle": {
"children": {
- "ADAS": {
- "children": {
- "CruiseControl": {
- "children": {
- "IsSet": {
- "datatype": "boolean",
- "description": "Indicates if cruise control speed is set. True = Enabled. False = Disabled.",
- "type": "sensor",
- "uuid": "65444a5d94dd45c59187f4179bf541ad"
- }
- }
- }
- }
- },
"Cabin": {
"children": {
- "Infotainment": {
+ "SteeringWheel": {
"children": {
- "Media": {
+ "Switches": {
"children": {
- "Action": {
- "datatype": "string",
- "description": "Tells if the media was",
- "enum": [
- "unknown",
- "Stop",
- "Play",
- "FastForward",
- "FastBackward",
- "SkipForward",
- "SkipBackward",
- "NextSource"
- ],
- "type": "actuator",
- "uuid": "0357aea525bf505981a14e4fc720094e"
+ "VolumeUp": {
+ "datatype": "boolean",
+ "description": "Steering wheel volume up switch engaged",
+ "type": "sensor",
+ "uuid": "b1b71c0d19684170bbf9fc40eb4d0d0e"
+ },
+ "VolumeDown": {
+ "datatype": "boolean",
+ "description": "Steering wheel volume down switch engaged",
+ "type": "sensor",
+ "uuid": "03ff9703a5604ab190cf518eec08ba07"
+ },
+ "VolumeMute": {
+ "datatype": "boolean",
+ "description": "Steering wheel volume mute switch engaged",
+ "type": "sensor",
+ "uuid": "c20467086cf846dc9f27da93d611af12"
+ },
+ "Next": {
+ "datatype": "boolean",
+ "description": "Steering wheel next switch engaged",
+ "type": "sensor",
+ "uuid": "a2a997e5e6a848d0be1bf8b8bc45e215"
+ },
+ "Previous": {
+ "datatype": "boolean",
+ "description": "Steering wheel previous switch engaged",
+ "type": "sensor",
+ "uuid": "1505a53421044bccb249f08c270e3912"
+ },
+ "Mode": {
+ "datatype": "boolean",
+ "description": "Steering wheel mode switch engaged",
+ "type": "sensor",
+ "uuid": "6cba659f06ae4809adb5de53786ab0b6"
+ },
+ "Info": {
+ "datatype": "boolean",
+ "description": "Steering wheel info switch engaged",
+ "type": "sensor",
+ "uuid": "5dd6d297edfb4cb99ab2ed7723877cd0"
+ },
+ "CruiseEnable": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise enable switch engaged",
+ "type": "sensor",
+ "uuid": "f4f383fbf3ff4a7b99ea71203cd8a446"
+ },
+ "CruiseSet": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise set switch engaged",
+ "type": "sensor",
+ "uuid": "14bd5c2326a043b79898df4e80403a93"
+ },
+ "CruiseResume": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise resume switch engaged",
+ "type": "sensor",
+ "uuid": "000cc121e98345f2976615f550b91639"
+ },
+ "CruiseCancel": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise cancel switch engaged",
+ "type": "sensor",
+ "uuid": "b953dac89a2b40fdace6c74bb212afb8"
+ },
+ "CruiseLimit": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise limit switch engaged",
+ "type": "sensor",
+ "uuid": "1c211ac5dd4d42249d7e1c104ef81df9"
+ },
+ "CruiseDistance": {
+ "datatype": "boolean",
+ "description": "Steering wheel cruise distance switch engaged",
+ "type": "sensor",
+ "uuid": "744c8913afe641d0903c44932879ab43"
+ },
+ "Voice": {
+ "datatype": "boolean",
+ "description": "Steering wheel voice switch engaged",
+ "type": "sensor",
+ "uuid": "9d78ab3889d74209acf6974e070d9d57"
+ },
+ "PhoneCall": {
+ "datatype": "boolean",
+ "description": "Steering wheel phone call switch engaged",
+ "type": "sensor",
+ "uuid": "3b505e5d962546c7a03509a5c14cfd60"
+ },
+ "PhoneSwitch": {
+ "datatype": "boolean",
+ "description": "Steering wheel phone call switch engaged",
+ "type": "sensor",
+ "uuid": "f19d7c584f2f4f0080a10f773e472359"
+ },
+ "Horn": {
+ "datatype": "boolean",
+ "description": "Steering wheel horn switch engaged",
+ "type": "sensor",
+ "uuid": "e025a116b74a41a0a283815621a41fb2"
+ },
+ "LaneDepartureWarning": {
+ "datatype": "boolean",
+ "description": "Steering wheel lane departure warning switch engaged",
+ "type": "sensor",
+ "uuid": "6dd9c149da8449df885e6250e912e986"
}
}
- },
+ }
+ }
+ },
+ "Infotainment": {
+ "children": {
"Navigation": {
"children": {
"State": {
@@ -61,16 +143,6 @@
"uuid": "0bef606dcf5b4a75bfd7e5f3c68359ec"
}
}
- },
- "Cluster": {
- "children": {
- "Mode": {
- "datatype": "boolean",
- "description": "Cluster mode switch engaged",
- "type": "actuator",
- "uuid": "7df1649ebed447ef81bb6e92786514d9"
- }
- }
}
}
}