diff --git a/spec/ADAS/ADAS.vspec b/spec/ADAS/ADAS.vspec index 40b14ef32..e27bca267 100644 --- a/spec/ADAS/ADAS.vspec +++ b/spec/ADAS/ADAS.vspec @@ -285,3 +285,5 @@ EBA.IsEngaged: type: sensor description: Indicates if EBA is currently regulating brake pressure. True = Engaged. False = Not Engaged. +#include include/PowerOptimize.vspec + diff --git a/spec/Body/Body.vspec b/spec/Body/Body.vspec index 07a82968d..fe01ee856 100644 --- a/spec/Body/Body.vspec +++ b/spec/Body/Body.vspec @@ -258,3 +258,5 @@ RearMainSpoilerPosition: min: 0 max: 100 description: Rear spoiler position, 0% = Spoiler fully stowed. 100% = Spoiler fully exposed. + +#include include/PowerOptimize.vspec diff --git a/spec/Cabin/Cabin.vspec b/spec/Cabin/Cabin.vspec index 8ee6acf64..846307f40 100644 --- a/spec/Cabin/Cabin.vspec +++ b/spec/Cabin/Cabin.vspec @@ -185,3 +185,5 @@ Convertible.Status: type: sensor allowed: ['UNDEFINED', 'CLOSED', 'OPEN', 'CLOSING', 'OPENING', 'STALLED'] description: Roof status on convertible vehicles. + +#include include/PowerOptimize.vspec diff --git a/spec/Cabin/HVAC.vspec b/spec/Cabin/HVAC.vspec index 56d885014..1a4ea59d4 100644 --- a/spec/Cabin/HVAC.vspec +++ b/spec/Cabin/HVAC.vspec @@ -43,3 +43,5 @@ AmbientAirTemperature: type: sensor unit: celsius description: Ambient air temperature inside the vehicle. + +#include include/PowerOptimize.vspec diff --git a/spec/Cabin/Infotainment.vspec b/spec/Cabin/Infotainment.vspec index 56156a42a..a1195105b 100644 --- a/spec/Cabin/Infotainment.vspec +++ b/spec/Cabin/Infotainment.vspec @@ -188,7 +188,7 @@ HMI.DayNightMode: type: actuator allowed: ['DAY', 'NIGHT'] description: Current display theme - + SmartphoneProjection: type: branch description: All smartphone projection actions. @@ -211,3 +211,5 @@ SmartphoneProjection.SupportedMode: type: attribute allowed: [ 'ANDROID_AUTO', 'APPLE_CARPLAY', 'MIRROR_LINK', 'OTHER' ] description: Supportable list for projection. + +#include include/PowerOptimize.vspec diff --git a/spec/Powertrain/Powertrain.vspec b/spec/Powertrain/Powertrain.vspec index a9c5d1c46..05be528c1 100644 --- a/spec/Powertrain/Powertrain.vspec +++ b/spec/Powertrain/Powertrain.vspec @@ -22,4 +22,5 @@ Type: description: Defines the powertrain type of the vehicle. comment: For vehicles with a combustion engine (including hybrids) more detailed information on fuels supported can be found in FuelSystem.SupportedFuelTypes and FuelSystem.SupportedFuels. - \ No newline at end of file + +#include include/PowerOptimize.vspec diff --git a/spec/Vehicle/Vehicle.vspec b/spec/Vehicle/Vehicle.vspec index df5c91117..b683ba834 100644 --- a/spec/Vehicle/Vehicle.vspec +++ b/spec/Vehicle/Vehicle.vspec @@ -498,7 +498,7 @@ CurrentLocation.GNSSReceiver.MountingPosition.Y: Axis definitions according to ISO 8855. Origin at center of (first) rear axle. Positive values = left of origin. Negative values = right of origin. Left/Right is as seen from driver perspective, i.e. by a person looking forward. - + CurrentLocation.GNSSReceiver.MountingPosition.Z: datatype: int16 type: attribute @@ -506,4 +506,6 @@ CurrentLocation.GNSSReceiver.MountingPosition.Z: description: Mounting position of GNSS receiver on Z-axis. Axis definitions according to ISO 8855. Origin at center of (first) rear axle. Positive values = above center of rear axle. Negative values = below center of rear axle. - + +#include include/PowerOptimize.vspec + diff --git a/spec/include/PowerOptimize.vspec b/spec/include/PowerOptimize.vspec new file mode 100644 index 000000000..492c6e3f1 --- /dev/null +++ b/spec/include/PowerOptimize.vspec @@ -0,0 +1,109 @@ +# +# (C) 2023 Robert Bosch GmbH +# +# All files and artifacts in this repository are licensed under the +# provisions of the license provided by the LICENSE file in this repository. +# + +# +# Architectural Concept +# +# A vehicle may have a power optimization system to control functionality in order to extend available range of the vehicle. +# It is assumed that the power optimization system does not know in detail which functionalities that exist in the vehicle +# and which functionalities that can be turned off without causing interruptions to essential functionality. +# +# This is proposed to be handled by a distributed system where the power optimization system only gives recommendations +# on power optimization for different areas. +# The areas are in standard VSS catalog initially assumed to correspond to branches in VSS, and are represented as a signal in the corresponding branch, +# like `Vehicle.[.]*PowerOptimizeLevel`. +# A global signal `Vehicle.PowerOptimizeLevel` also exists for features that does not have a matching signal in sub-branches. +# +# The signal can be added to a branch by including this file, like: +# +# "#include include/PowerOptimize.vspec" +# +# +# Initially the standard VSS catalog contains the following level signals: +# +#Vehicle.PowerOptimizeLevel +#Vehicle.Powertrain.PowerOptimizeLevel +#Vehicle.Body.PowerOptimizeLevel +#Vehicle.Cabin.PowerOptimizeLevel +#Vehicle.Cabin.HVAC.PowerOptimizeLevel +#Vehicle.Cabin.Infotainment.PowerOptimizeLevel +#Vehicle.ADAS.PowerOptimizeLevel +# +# When there are multiple level signals in a subtree (like for the Cabin subtree) a feature may typically consider the "closest" level signal. +# +# Example 1: HVAC functionality (signals in branch Vehicle.Cabin.HVAC) may consider Vehicle.Cabin.HVAC.PowerOptimizeLevel +# Example 2: Sunroof functionality (signals in branch Vehicle.Cabin.Sunroof) may consider Vehicle.Cabin.PowerOptimizeLevel +# as there is no specific level signal in Vehicle.Cabin.Sunroof. +# Example 3: Tire monitoring systems may consider Vehicle.PowerOptimizeLevel as there is no dedicated signal for Chassis branch. +# +# The power optimization level has a numerical value from 0 to 10. +# Level 0 means that power optimization is not needed, all functionality can behave "normally". +# Level 10 means that power consumption shall be minimized. Non-essential functionality shall be disabled. +# Essential functionality to fulfill legal and safety requirements shall still be enabled. +# Intermediate numbers (1-9) indicates intermediate states, where a higher number indicates a more aggressive power optimization policy. +# +# This allows for subsystems to implement their own power saving logic. +# It is totally up to the subsystem to know "what to do" for different power optimize levels. +# It is also assumed that the subsystem knows what is required for legal and safety reasons and does not turn off +# essential functionality regardless of power optimization level. +# It is up to the OEM to configure subsystems to achieve the wanted behavior. +# It is expected that power optimizations that are activated already at a low level have limited impact on the driver experience, +# but power optimizations on higher levels will have significant impact on driver experience. +# +# A hypothetical example for Display/HMI brightness could be as follows +# +# There is a signal Vehicle.Cabin.Infotainment.HMI.Brightness that for example the driver could use to change HMI Brightness. +# The signal has a range 0-100 percent, where 0% means the lowest value allowed from legal/safety-reasons as well as usability reasons. +# To allow for energy optimization an OEM might want to change the actual brightness based on power optimization level for cabin. +# +# A possible schema could be as follows +# + +# REAL_MIN = 30 /* Lowest allowed value for safety/legal/convenience-reasons */ +# REAL_MAX = 90 /* Maximum allowed value for safety/legal/convenience/technical-reasons */ +# POWERSAVE_MAX_RELATIVE = 45 /* Maximum relative brightness during power optimize */ +# POWERSAVE_LIMIT = 5 /* Reduce brightness if level is above this value */ +# +# if (Vehicle.Cabin.Infotainment.PowerOptimizeLevel > POWERSAVE_LIMIT): +# old_value = Vehicle.Cabin.Infotainment.HMI.Brightness; +# if (Vehicle.Cabin.Infotainment.HMI.Brightness > POWERSAVE_MAX_RELATIVE): +# Vehicle.Cabin.Infotainment.HMI.Brightness = POWERSAVE_MAX_RELATIVE; +# else +# // Revert to old value +# Vehicle.Cabin.Infotainment.HMI.Brightness = old_value; +# +# +# Note that no additional VSS signals is added to represent wanted brightness at power optimization. +# It is possible that a such signal may be needed in individual deployments, but if so it can be handled by a vehicle specific overlay. +# +# Customization +# +# In addition to power optimize signals added in standard VSS catalog a project/OEM may customize the model using overlays by: +# +# 1. Adding additional power optimize level signals +# +# For instance by adding `#include include/PowerOptimize.vspec` in additional files +# +# 2. Adding signals for supporting data +# +# In specific deployments there might be a need for private signals with additional data for the power optimization strategy used. +# This could for instance be signals to specify maximum speed for a specific power optimization levels. + +## +# Power Optimization +## + + +PowerOptimizeLevel: + datatype: uint8 + type: actuator + min: 0 + max: 10 + description: Power optimization level for this branch/subsystem. + A higher number indicates more aggressive power optimization. + Level 0 indicates that all functionality is enabled, no power optimization enabled. + Level 10 indicates most aggressive power optimization mode, only essential functionality enabled.