aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Arne Petersen <jan.petersen@kdab.com>2017-08-22 14:16:20 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2017-09-12 08:20:33 +0000
commit06bd1602bf87fbaa04f946b06166b223f18de93a (patch)
tree7cd07b7d80cc6b1af16c4dbe86e594cf70b3176b
parent63735a02e20f6b3b238b0b707794332054814db6 (diff)
Add support for zoned default values
Zoned default values are defined by a map from zone_name to default value. The default key is as defined by YAML '='. Example: config_simulator: default: { left: 21.0, right: 22.5, =: 0.0 } Change-Id: Ia0f1be270399aec4e90e816f0b063b6b4fc6d7e2 Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
-rw-r--r--src/doc/qtivi/src/generator-usage.qdoc6
-rwxr-xr-xsrc/tools/ivigenerator/generate.py7
-rw-r--r--src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl2
3 files changed, 13 insertions, 2 deletions
diff --git a/src/doc/qtivi/src/generator-usage.qdoc b/src/doc/qtivi/src/generator-usage.qdoc
index f8bccf7..0feea0c 100644
--- a/src/doc/qtivi/src/generator-usage.qdoc
+++ b/src/doc/qtivi/src/generator-usage.qdoc
@@ -211,6 +211,12 @@ annotations used for defining various aspects of the generation of the backend-s
\li Accompanying YAML file
\li Property
\li Defines the initial values for the property returned by the simulator backend.
+
+ For zoned properties a mapping from a zone to a default value can be used. The default key of the map is "=".
+ \code
+ config_simulator:
+ default: { left: 21.0, right: 22.5, =: 0.0 }
+ \endcode
\row
\li \code
config_simulator:
diff --git a/src/tools/ivigenerator/generate.py b/src/tools/ivigenerator/generate.py
index 2590438..0483b43 100755
--- a/src/tools/ivigenerator/generate.py
+++ b/src/tools/ivigenerator/generate.py
@@ -132,7 +132,7 @@ def default_type_value(symbol):
return 'XXX'
-def default_value(symbol):
+def default_value(symbol, zone='='):
"""
Find the default value used by the simulator backend
"""
@@ -143,6 +143,11 @@ def default_value(symbol):
return 'new {0}Model(parent)'.format(nested)
if 'config_simulator' in symbol.tags and 'default' in symbol.tags['config_simulator']:
res = symbol.tags['config_simulator']['default']
+ if isinstance(res, dict):
+ if zone in res:
+ res = res[zone]
+ else:
+ res = res['=']
t = symbol.type
if t.is_enum:
module_name = t.reference.module.module_name
diff --git a/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl b/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl
index 3b1f0cc..2e56f6a 100644
--- a/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl
+++ b/src/tools/ivigenerator/templates_backend_simulator/backend.cpp.tpl
@@ -72,7 +72,7 @@ QT_BEGIN_NAMESPACE
ZoneBackend {{zone_name}}Zone;
{% for property in interface.properties %}
{% if property.tags.config_simulator and property.tags.config_simulator.zoned %}
- {{zone_name}}Zone.{{property}} = {{property|default_value}};
+ {{zone_name}}Zone.{{property}} = {{property|default_value(zone_name)}};
{% endif %}
{% endfor %}
m_zoneMap.insert("{{zone_id}}", {{zone_name}}Zone);