odxtools 6.6.1__py3-none-any.whl → 9.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. odxtools/__init__.py +7 -5
  2. odxtools/additionalaudience.py +3 -5
  3. odxtools/admindata.py +5 -7
  4. odxtools/audience.py +10 -13
  5. odxtools/basecomparam.py +3 -5
  6. odxtools/basicstructure.py +55 -241
  7. odxtools/cli/_parser_utils.py +16 -1
  8. odxtools/cli/_print_utils.py +169 -134
  9. odxtools/cli/browse.py +127 -103
  10. odxtools/cli/compare.py +114 -87
  11. odxtools/cli/decode.py +2 -1
  12. odxtools/cli/dummy_sub_parser.py +3 -1
  13. odxtools/cli/find.py +2 -1
  14. odxtools/cli/list.py +26 -16
  15. odxtools/cli/main.py +1 -0
  16. odxtools/cli/snoop.py +32 -6
  17. odxtools/codec.py +211 -0
  18. odxtools/commrelation.py +122 -0
  19. odxtools/companydata.py +5 -7
  20. odxtools/companydocinfo.py +7 -8
  21. odxtools/companyrevisioninfo.py +3 -5
  22. odxtools/companyspecificinfo.py +8 -9
  23. odxtools/comparam.py +4 -6
  24. odxtools/comparaminstance.py +14 -14
  25. odxtools/comparamspec.py +16 -54
  26. odxtools/comparamsubset.py +22 -62
  27. odxtools/complexcomparam.py +5 -7
  28. odxtools/compumethods/compucodecompumethod.py +63 -0
  29. odxtools/compumethods/compuconst.py +31 -0
  30. odxtools/compumethods/compudefaultvalue.py +27 -0
  31. odxtools/compumethods/compuinternaltophys.py +56 -0
  32. odxtools/compumethods/compuinversevalue.py +7 -0
  33. odxtools/compumethods/compumethod.py +94 -15
  34. odxtools/compumethods/compuphystointernal.py +56 -0
  35. odxtools/compumethods/compurationalcoeffs.py +20 -9
  36. odxtools/compumethods/compuscale.py +67 -32
  37. odxtools/compumethods/createanycompumethod.py +31 -172
  38. odxtools/compumethods/identicalcompumethod.py +31 -6
  39. odxtools/compumethods/limit.py +70 -36
  40. odxtools/compumethods/linearcompumethod.py +70 -181
  41. odxtools/compumethods/linearsegment.py +190 -0
  42. odxtools/compumethods/ratfunccompumethod.py +106 -0
  43. odxtools/compumethods/ratfuncsegment.py +87 -0
  44. odxtools/compumethods/scalelinearcompumethod.py +132 -26
  45. odxtools/compumethods/scaleratfunccompumethod.py +113 -0
  46. odxtools/compumethods/tabintpcompumethod.py +123 -92
  47. odxtools/compumethods/texttablecompumethod.py +117 -57
  48. odxtools/createanydiagcodedtype.py +10 -67
  49. odxtools/database.py +167 -87
  50. odxtools/dataobjectproperty.py +25 -32
  51. odxtools/decodestate.py +14 -17
  52. odxtools/description.py +47 -0
  53. odxtools/determinenumberofitems.py +4 -5
  54. odxtools/diagcodedtype.py +37 -106
  55. odxtools/diagcomm.py +24 -12
  56. odxtools/diagdatadictionaryspec.py +120 -96
  57. odxtools/diaglayercontainer.py +46 -54
  58. odxtools/diaglayers/basevariant.py +128 -0
  59. odxtools/diaglayers/basevariantraw.py +123 -0
  60. odxtools/diaglayers/diaglayer.py +432 -0
  61. odxtools/{diaglayerraw.py → diaglayers/diaglayerraw.py} +105 -120
  62. odxtools/diaglayers/diaglayertype.py +42 -0
  63. odxtools/diaglayers/ecushareddata.py +96 -0
  64. odxtools/diaglayers/ecushareddataraw.py +87 -0
  65. odxtools/diaglayers/ecuvariant.py +124 -0
  66. odxtools/diaglayers/ecuvariantraw.py +129 -0
  67. odxtools/diaglayers/functionalgroup.py +110 -0
  68. odxtools/diaglayers/functionalgroupraw.py +106 -0
  69. odxtools/{diaglayer.py → diaglayers/hierarchyelement.py} +273 -472
  70. odxtools/diaglayers/hierarchyelementraw.py +58 -0
  71. odxtools/diaglayers/protocol.py +64 -0
  72. odxtools/diaglayers/protocolraw.py +91 -0
  73. odxtools/diagnostictroublecode.py +8 -9
  74. odxtools/diagservice.py +57 -44
  75. odxtools/diagvariable.py +113 -0
  76. odxtools/docrevision.py +5 -7
  77. odxtools/dopbase.py +15 -15
  78. odxtools/dtcdop.py +170 -50
  79. odxtools/dynamicendmarkerfield.py +134 -0
  80. odxtools/dynamiclengthfield.py +47 -42
  81. odxtools/dyndefinedspec.py +177 -0
  82. odxtools/dynenddopref.py +38 -0
  83. odxtools/ecuvariantmatcher.py +6 -7
  84. odxtools/element.py +13 -15
  85. odxtools/encodestate.py +199 -22
  86. odxtools/endofpdufield.py +31 -18
  87. odxtools/environmentdata.py +8 -1
  88. odxtools/environmentdatadescription.py +198 -36
  89. odxtools/exceptions.py +11 -2
  90. odxtools/field.py +10 -10
  91. odxtools/functionalclass.py +3 -5
  92. odxtools/inputparam.py +3 -12
  93. odxtools/internalconstr.py +14 -5
  94. odxtools/isotp_state_machine.py +14 -6
  95. odxtools/leadinglengthinfotype.py +37 -18
  96. odxtools/library.py +66 -0
  97. odxtools/loadfile.py +64 -0
  98. odxtools/matchingparameter.py +3 -3
  99. odxtools/message.py +0 -7
  100. odxtools/minmaxlengthtype.py +61 -33
  101. odxtools/modification.py +3 -5
  102. odxtools/multiplexer.py +135 -75
  103. odxtools/multiplexercase.py +39 -18
  104. odxtools/multiplexerdefaultcase.py +15 -12
  105. odxtools/multiplexerswitchkey.py +4 -5
  106. odxtools/nameditemlist.py +33 -8
  107. odxtools/negoutputparam.py +3 -5
  108. odxtools/odxcategory.py +83 -0
  109. odxtools/odxlink.py +62 -53
  110. odxtools/odxtypes.py +93 -8
  111. odxtools/outputparam.py +5 -16
  112. odxtools/parameterinfo.py +219 -61
  113. odxtools/parameters/codedconstparameter.py +45 -32
  114. odxtools/parameters/createanyparameter.py +19 -193
  115. odxtools/parameters/dynamicparameter.py +25 -4
  116. odxtools/parameters/lengthkeyparameter.py +83 -25
  117. odxtools/parameters/matchingrequestparameter.py +48 -18
  118. odxtools/parameters/nrcconstparameter.py +76 -54
  119. odxtools/parameters/parameter.py +97 -73
  120. odxtools/parameters/parameterwithdop.py +41 -38
  121. odxtools/parameters/physicalconstantparameter.py +41 -20
  122. odxtools/parameters/reservedparameter.py +36 -18
  123. odxtools/parameters/systemparameter.py +74 -7
  124. odxtools/parameters/tableentryparameter.py +47 -7
  125. odxtools/parameters/tablekeyparameter.py +142 -55
  126. odxtools/parameters/tablestructparameter.py +79 -58
  127. odxtools/parameters/valueparameter.py +39 -21
  128. odxtools/paramlengthinfotype.py +56 -33
  129. odxtools/parentref.py +20 -3
  130. odxtools/physicaldimension.py +3 -8
  131. odxtools/progcode.py +26 -11
  132. odxtools/protstack.py +3 -5
  133. odxtools/py.typed +0 -0
  134. odxtools/relateddoc.py +7 -9
  135. odxtools/request.py +120 -10
  136. odxtools/response.py +123 -23
  137. odxtools/scaleconstr.py +14 -8
  138. odxtools/servicebinner.py +1 -1
  139. odxtools/singleecujob.py +12 -10
  140. odxtools/snrefcontext.py +29 -0
  141. odxtools/specialdata.py +3 -5
  142. odxtools/specialdatagroup.py +7 -9
  143. odxtools/specialdatagroupcaption.py +3 -6
  144. odxtools/standardlengthtype.py +80 -14
  145. odxtools/state.py +3 -5
  146. odxtools/statechart.py +13 -19
  147. odxtools/statetransition.py +8 -18
  148. odxtools/staticfield.py +107 -0
  149. odxtools/subcomponent.py +288 -0
  150. odxtools/swvariable.py +21 -0
  151. odxtools/table.py +9 -9
  152. odxtools/tablerow.py +30 -15
  153. odxtools/teammember.py +3 -5
  154. odxtools/templates/comparam-spec.odx-c.xml.jinja2 +4 -24
  155. odxtools/templates/comparam-subset.odx-cs.xml.jinja2 +5 -26
  156. odxtools/templates/diag_layer_container.odx-d.xml.jinja2 +15 -31
  157. odxtools/templates/{index.xml.xml.jinja2 → index.xml.jinja2} +1 -1
  158. odxtools/templates/macros/printAudience.xml.jinja2 +1 -1
  159. odxtools/templates/macros/printBaseVariant.xml.jinja2 +53 -0
  160. odxtools/templates/macros/printCompanyData.xml.jinja2 +4 -7
  161. odxtools/templates/macros/printComparam.xml.jinja2 +6 -4
  162. odxtools/templates/macros/printComparamRef.xml.jinja2 +5 -12
  163. odxtools/templates/macros/printCompuMethod.xml.jinja2 +147 -0
  164. odxtools/templates/macros/printDOP.xml.jinja2 +27 -137
  165. odxtools/templates/macros/printDescription.xml.jinja2 +18 -0
  166. odxtools/templates/macros/printDiagComm.xml.jinja2 +1 -1
  167. odxtools/templates/macros/printDiagLayer.xml.jinja2 +222 -0
  168. odxtools/templates/macros/printDiagVariable.xml.jinja2 +66 -0
  169. odxtools/templates/macros/printDynDefinedSpec.xml.jinja2 +48 -0
  170. odxtools/templates/macros/printDynamicEndmarkerField.xml.jinja2 +16 -0
  171. odxtools/templates/macros/printDynamicLengthField.xml.jinja2 +1 -1
  172. odxtools/templates/macros/printEcuSharedData.xml.jinja2 +30 -0
  173. odxtools/templates/macros/printEcuVariant.xml.jinja2 +53 -0
  174. odxtools/templates/macros/printEcuVariantPattern.xml.jinja2 +1 -1
  175. odxtools/templates/macros/printElementId.xml.jinja2 +8 -3
  176. odxtools/templates/macros/printEndOfPdu.xml.jinja2 +1 -1
  177. odxtools/templates/macros/printEnvDataDesc.xml.jinja2 +1 -1
  178. odxtools/templates/macros/printFunctionalClass.xml.jinja2 +1 -1
  179. odxtools/templates/macros/printFunctionalGroup.xml.jinja2 +40 -0
  180. odxtools/templates/macros/printHierarchyElement.xml.jinja2 +24 -0
  181. odxtools/templates/macros/printLibrary.xml.jinja2 +21 -0
  182. odxtools/templates/macros/printMux.xml.jinja2 +5 -3
  183. odxtools/templates/macros/printOdxCategory.xml.jinja2 +28 -0
  184. odxtools/templates/macros/printParam.xml.jinja2 +18 -19
  185. odxtools/templates/macros/printProtStack.xml.jinja2 +1 -1
  186. odxtools/templates/macros/printProtocol.xml.jinja2 +30 -0
  187. odxtools/templates/macros/printRequest.xml.jinja2 +1 -1
  188. odxtools/templates/macros/printResponse.xml.jinja2 +1 -1
  189. odxtools/templates/macros/printService.xml.jinja2 +3 -2
  190. odxtools/templates/macros/printSingleEcuJob.xml.jinja2 +5 -26
  191. odxtools/templates/macros/printSpecialData.xml.jinja2 +1 -1
  192. odxtools/templates/macros/printState.xml.jinja2 +1 -1
  193. odxtools/templates/macros/printStateChart.xml.jinja2 +1 -1
  194. odxtools/templates/macros/printStateTransition.xml.jinja2 +1 -1
  195. odxtools/templates/macros/printStaticField.xml.jinja2 +15 -0
  196. odxtools/templates/macros/printStructure.xml.jinja2 +1 -1
  197. odxtools/templates/macros/printSubComponent.xml.jinja2 +104 -0
  198. odxtools/templates/macros/printTable.xml.jinja2 +4 -5
  199. odxtools/templates/macros/printUnitSpec.xml.jinja2 +3 -5
  200. odxtools/uds.py +2 -10
  201. odxtools/unit.py +4 -8
  202. odxtools/unitgroup.py +3 -5
  203. odxtools/unitspec.py +17 -17
  204. odxtools/utils.py +38 -20
  205. odxtools/variablegroup.py +32 -0
  206. odxtools/version.py +2 -2
  207. odxtools/{write_pdx_file.py → writepdxfile.py} +22 -12
  208. odxtools/xdoc.py +3 -5
  209. {odxtools-6.6.1.dist-info → odxtools-9.3.0.dist-info}/METADATA +44 -33
  210. odxtools-9.3.0.dist-info/RECORD +228 -0
  211. {odxtools-6.6.1.dist-info → odxtools-9.3.0.dist-info}/WHEEL +1 -1
  212. odxtools/createcompanydatas.py +0 -17
  213. odxtools/createsdgs.py +0 -19
  214. odxtools/diaglayertype.py +0 -30
  215. odxtools/load_file.py +0 -13
  216. odxtools/load_odx_d_file.py +0 -6
  217. odxtools/load_pdx_file.py +0 -8
  218. odxtools/templates/macros/printVariant.xml.jinja2 +0 -208
  219. odxtools-6.6.1.dist-info/RECORD +0 -180
  220. {odxtools-6.6.1.dist-info → odxtools-9.3.0.dist-info}/LICENSE +0 -0
  221. {odxtools-6.6.1.dist-info → odxtools-9.3.0.dist-info}/entry_points.txt +0 -0
  222. {odxtools-6.6.1.dist-info → odxtools-9.3.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,48 @@
1
+ {#- -*- mode: sgml; tab-width: 2; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- macro printDynDefinedSpec(dd_spec) -%}
7
+ <DYN-DEFINED-SPEC>
8
+ {%- if dd_spec.dyn_id_def_mode_infos %}
9
+ <DYN-ID-DEF-MODE-INFOS>
10
+ {%- for diddmi in dd_spec.dyn_id_def_mode_infos %}
11
+ <DYN-ID-DEF-MODE-INFO>
12
+ <DEF-MODE>{{ diddmi.def_mode }}</DEF-MODE>
13
+ {%- if diddmi.clear_dyn_def_message_ref is not none %}
14
+ <CLEAR-DYN-DEF-MESSAGE-REF ID-REF="{{diddmi.clear_dyn_def_message_ref.ref_id}}" />
15
+ {%- endif %}
16
+ {%- if diddmi.clear_dyn_def_message_snref is not none %}
17
+ <CLEAR-DYN-DEF-MESSAGE-SNREF SHORT-NAME="{{diddmi.clear_dyn_def_message_snref}}" />
18
+ {%- endif %}
19
+ {%- if diddmi.read_dyn_def_message_ref is not none %}
20
+ <READ-DYN-DEF-MESSAGE-REF ID-REF="{{diddmi.read_dyn_def_message_ref.ref_id}}" />
21
+ {%- endif %}
22
+ {%- if diddmi.read_dyn_def_message_snref is not none %}
23
+ <READ-DYN-DEF-MESSAGE-SNREF SHORT-NAME="{{diddmi.read_dyn_def_message_snref}}" />
24
+ {%- endif %}
25
+ {%- if diddmi.supported_dyn_ids %}
26
+ <SUPPORTED-DYN-IDS>
27
+ {%- for dynid in diddmi.supported_dyn_ids %}
28
+ <SUPPORTED-DYN-ID>{{ dynid.hex() }}</SUPPORTED-DYN-ID>
29
+ {%- endfor %}
30
+ </SUPPORTED-DYN-IDS>
31
+ {%- endif %}
32
+ {%- if diddmi.selection_table_refs %}
33
+ <SELECTION-TABLE-REFS>
34
+ {%- for seltref in diddmi.selection_table_refs %}
35
+ {%- if hasattr(seltref, "ref_id") %}
36
+ <SELECTION-TABLE-REF ID-REF="{{ seltref.ref_id }}" />
37
+ {%- else %}
38
+ <SELECTION-TABLE-SNREF SHORT-NAME="{{ seltref }}" />
39
+ {%- endif %}
40
+ {%- endfor %}
41
+ </SELECTION-TABLE-REFS>
42
+ {%- endif %}
43
+ </DYN-ID-DEF-MODE-INFO>
44
+ {%- endfor %}
45
+ </DYN-ID-DEF-MODE-INFOS>
46
+ {%- endif %}
47
+ </DYN-DEFINED-SPEC>
48
+ {%- endmacro -%}
@@ -0,0 +1,16 @@
1
+ {#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printElementId.xml.jinja2') as peid %}
7
+
8
+ {%- macro printStaticField(demf) -%}
9
+ <DYNAMIC-ENDMARKER-FIELD {{-peid.printElementIdAttribs(demf)}}>
10
+ {{ peid.printElementIdSubtags(demf)|indent(1) }}
11
+ <BASIC-STRUCTURE-REF ID-REF="{{demf.structure_ref.ref_id}}" />
12
+ <DYN-END-DOP-REF ID-REF="{{demf.dyn_end_dop_ref.ref_id}}">
13
+ <TERMINATION-VALUE>{{demf.dyn_end_dop_ref.termination_value_raw}}</TERMINATION-VALUE>
14
+ </DYN-END-DOP-REF>
15
+ </DYNAMIC-ENDMARKER-FIELD>
16
+ {%- endmacro -%}
@@ -6,7 +6,7 @@
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
 
8
8
  {%- macro printDynamicLengthField(dlf) -%}
9
- <DYNAMIC-LENGTH-FIELD ID="{{dlf.odx_id.local_id}}">
9
+ <DYNAMIC-LENGTH-FIELD {{-peid.printElementIdAttribs(dlf)}}>
10
10
  {{ peid.printElementIdSubtags(dlf)|indent(1) }}
11
11
  <BASIC-STRUCTURE-REF ID-REF="{{dlf.structure_ref.ref_id}}" />
12
12
  <OFFSET>{{dlf.offset}}</OFFSET>
@@ -0,0 +1,30 @@
1
+ {#- -*- mode: sgml; tab-width: 2; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printDiagLayer.xml.jinja2') as pdl %}
7
+
8
+ {%- macro printEcuSharedData(ecu_shared_data) -%}
9
+ <ECU-SHARED-DATA {{- pdl.printDiagLayerAttribs(ecu_shared_data) -}}>
10
+ {{ pdl.printDiagLayerSubtags(ecu_shared_data) | indent(2) }}
11
+ {%- set dlr = ecu_shared_data.ecu_shared_data_raw %}
12
+
13
+ {%- if dlr.diag_variables %}
14
+ <DIAG-VARIABLES>
15
+ {%- for dv in dlr.diag_variables -%}
16
+ {{ pdv.printDiagVariable(dv)|indent(4) }}
17
+ {%- endfor -%}
18
+ </DIAG-VARIABLES>
19
+ {%- endif %}
20
+
21
+ {%- if dlr.variable_groups %}
22
+ <VARIABLE-GROUPS>
23
+ {%- for vg in dlr.variable_groups -%}
24
+ {{ pdv.printVariableGroup(vg)|indent(4) }}
25
+ {%- endfor -%}
26
+ </VARIABLE-GROUPS>
27
+ {%- endif %}
28
+
29
+ </ECU-SHARED-DATA>
30
+ {%- endmacro %}
@@ -0,0 +1,53 @@
1
+ {#- -*- mode: sgml; tab-width: 2; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printHierarchyElement.xml.jinja2') as phe %}
7
+ {%- import('macros/printComparamRef.xml.jinja2') as pcom %}
8
+ {%- import('macros/printParentRef.xml.jinja2') as pparref %}
9
+ {%- import('macros/printEcuVariantPattern.xml.jinja2') as pvpat %}
10
+ {%- import('macros/printDynDefinedSpec.xml.jinja2') as pdynspec %}
11
+
12
+ {%- macro printEcuVariant(ecu_variant) -%}
13
+ <ECU-VARIANT {{- phe.printHierarchyElementAttribs(ecu_variant) -}}>
14
+ {{ phe.printHierarchyElementSubtags(ecu_variant) | indent(2) }}
15
+ {%- set dlr = ecu_variant.diag_layer_raw %}
16
+
17
+ {%- if dlr.diag_variables %}
18
+ <DIAG-VARIABLES>
19
+ {%- for dv in dlr.diag_variables -%}
20
+ {{ pdv.printDiagVariable(dv)|indent(4) }}
21
+ {%- endfor -%}
22
+ </DIAG-VARIABLES>
23
+ {%- endif %}
24
+
25
+ {%- if dlr.variable_groups %}
26
+ <VARIABLE-GROUPS>
27
+ {%- for vg in dlr.variable_groups -%}
28
+ {{ pdv.printVariableGroup(vg)|indent(4) }}
29
+ {%- endfor -%}
30
+ </VARIABLE-GROUPS>
31
+ {%- endif %}
32
+
33
+ {%- if dlr.dyn_defined_spec %}
34
+ {{ pdynspec.printPrintDefinedSpec(dlr.dyn_defined_spec)|indent(4) }}
35
+ {%- endif %}
36
+
37
+ {%- if dlr.ecu_variant_patterns %}
38
+ <ECU-VARIANT-PATTERNS>
39
+ {%- for vp in dlr.ecu_variant_patterns -%}
40
+ {{ pvpat.printEcuVariantPattern(vp)|indent(4) }}
41
+ {%- endfor -%}
42
+ </ECU-VARIANT-PATTERNS>
43
+ {%- endif %}
44
+
45
+ {%- if dlr.parent_refs %}
46
+ <PARENT-REFS>
47
+ {%- for parent in dlr.parent_refs -%}
48
+ {{ pparref.printParentRef(parent)|indent(4) }}
49
+ {%- endfor %}
50
+ </PARENT-REFS>
51
+ {%- endif %}
52
+ </ECU-VARIANT>
53
+ {%- endmacro %}
@@ -9,7 +9,7 @@
9
9
 
10
10
  {%- macro printMatchingParameter(mp) -%}
11
11
  <MATCHING-PARAMETER>
12
- <EXPECTED-VALUE>{{mp.expected_value}}</EXPECTED-VALUE>
12
+ <EXPECTED-VALUE>{{mp.expected_value | e}}</EXPECTED-VALUE>
13
13
  <DIAG-COMM-SNREF SHORT-NAME="{{mp.diag_comm_snref}}" />
14
14
  {#- TODO: OUT-PARAM-IF-SNPATHREF #}
15
15
  <OUT-PARAM-IF-SNREF SHORT-NAME="{{mp.out_param_if}}" />
@@ -3,12 +3,17 @@
3
3
  # SPDX-License-Identifier: MIT
4
4
  -#}
5
5
 
6
+ {%- import('macros/printDescription.xml.jinja2') as pd %}
7
+
8
+ {%- macro printElementIdAttribs(obj) -%}
9
+ {#- #} {{- make_xml_attrib("ID", obj.odx_id.local_id) }}
10
+ {#- #} {{- make_xml_attrib("OID", getattr(obj, "oid", none)) -}}
11
+ {%- endmacro -%}
12
+
6
13
  {%- macro printElementIdSubtags(obj) -%}
7
14
  <SHORT-NAME>{{ obj.short_name }}</SHORT-NAME>
8
15
  {%- if obj.long_name %}
9
16
  <LONG-NAME>{{ obj.long_name|e }}</LONG-NAME>
10
17
  {%- endif %}
11
- {%- if obj.description %}
12
- <DESC>{{ obj.description }}</DESC>
13
- {%- endif %}
18
+ {{- pd.printDescription(obj.description) }}
14
19
  {%- endmacro -%}
@@ -6,7 +6,7 @@
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
 
8
8
  {%- macro printEndOfPdu(eopdu) -%}
9
- <END-OF-PDU-FIELD ID="{{eopdu.odx_id.local_id}}">
9
+ <END-OF-PDU-FIELD {{-peid.printElementIdAttribs(eopdu)}}>
10
10
  {{ peid.printElementIdSubtags(eopdu)|indent(1) }}
11
11
  <BASIC-STRUCTURE-REF ID-REF="{{eopdu.structure_ref.ref_id}}" />
12
12
  {%- if eopdu.max_number_of_items is not none %}
@@ -6,7 +6,7 @@
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
 
8
8
  {%- macro printEnvDataDesc(env_data_desc) %}
9
- <ENV-DATA-DESC ID="{{env_data_desc.odx_id.local_id}}">
9
+ <ENV-DATA-DESC {{-peid.printElementIdAttribs(env_data_desc)}}>
10
10
  {{ peid.printElementIdSubtags(env_data_desc)|indent(1) }}
11
11
  <PARAM-SNREF SHORT-NAME="{{env_data_desc.param_snref}}"/>
12
12
  <ENV-DATA-REFS>
@@ -7,7 +7,7 @@
7
7
  {%- import('macros/printElementId.xml.jinja2') as peid %}
8
8
 
9
9
  {%- macro printFunctionalClass(fc) -%}
10
- <FUNCT-CLASS ID="{{fc.odx_id.local_id}}">
10
+ <FUNCT-CLASS {{-peid.printElementIdAttribs(fc)}}>
11
11
  {{ peid.printElementIdSubtags(fc)|indent(1) }}
12
12
  </FUNCT-CLASS>
13
13
  {%- endmacro -%}
@@ -0,0 +1,40 @@
1
+ {#- -*- mode: sgml; tab-width: 2; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printHierarchyElement.xml.jinja2') as phe %}
7
+ {%- import('macros/printComparamRef.xml.jinja2') as pcom %}
8
+ {%- import('macros/printParentRef.xml.jinja2') as pparref %}
9
+
10
+ {%- macro printFunctionalGroup(functional_group) -%}
11
+ <FUNCTIONAL-GROUP {{- phe.printHierarchyElementAttribs(functional_group) -}}>
12
+ {{ phe.printHierarchyElementSubtags(functional_group) | indent(2) }}
13
+
14
+ {%- set dlr = functional_group.functional_group_raw %}
15
+
16
+ {%- if dlr.diag_variables %}
17
+ <DIAG-VARIABLES>
18
+ {%- for dv in dlr.diag_variables -%}
19
+ {{ pdv.printDiagVariable(dv)|indent(4) }}
20
+ {%- endfor -%}
21
+ </DIAG-VARIABLES>
22
+ {%- endif %}
23
+
24
+ {%- if dlr.variable_groups %}
25
+ <VARIABLE-GROUPS>
26
+ {%- for vg in dlr.variable_groups -%}
27
+ {{ pdv.printVariableGroup(vg)|indent(4) }}
28
+ {%- endfor -%}
29
+ </VARIABLE-GROUPS>
30
+ {%- endif %}
31
+
32
+ {%- if dlr.parent_refs %}
33
+ <PARENT-REFS>
34
+ {%- for parent in dlr.parent_refs -%}
35
+ {{ pparref.printParentRef(parent)|indent(4) }}
36
+ {%- endfor %}
37
+ </PARENT-REFS>
38
+ {%- endif %}
39
+ </FUNCTIONAL-GROUP>
40
+ {%- endmacro %}
@@ -0,0 +1,24 @@
1
+ {#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printDiagLayer.xml.jinja2') as pdl %}
7
+ {%- import('macros/printComparamRef.xml.jinja2') as pcom %}
8
+
9
+ {%- macro printHierarchyElementAttribs(helem) -%}
10
+ {{- pdl.printDiagLayerAttribs(helem) -}}
11
+ {%- endmacro -%}
12
+
13
+ {%- macro printHierarchyElementSubtags(helem) -%}
14
+ {%- set dlr = helem.hierarchy_element_raw %}
15
+ {{- pdl.printDiagLayerSubtags(helem) }}
16
+ {%- if dlr.comparam_refs %}
17
+ <COMPARAM-REFS>
18
+ {%- for cp in dlr.comparam_refs -%}
19
+ {{ pcom.printComparamRef(cp)|indent(2) }}
20
+ {%- endfor %}
21
+ </COMPARAM-REFS>
22
+ {%- endif %}
23
+
24
+ {%- endmacro %}
@@ -0,0 +1,21 @@
1
+ {#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printElementId.xml.jinja2') as peid %}
7
+
8
+ {%- macro printLibrary(library) %}
9
+ <LIBRARY{#- #} {{-peid.printElementIdAttribs(library)}}{# -#}>
10
+ {{ peid.printElementIdSubtags(library)|indent(1) }}
11
+ <CODE-FILE>{{library.code_file}}</CODE-FILE>
12
+ {%- if library.encryption is not none %}
13
+ <ENCRYPTION>{{library.encryption}}</ENCRYPTION>
14
+ {%- endif %}
15
+ <SYNTAX>{{library.syntax}}</SYNTAX>
16
+ <REVISION>{{library.revision}}</REVISION>
17
+ {%- if library.entrypoint is not none %}
18
+ <ENTRYPOINT>{{library.entrypoint}}</ENTRYPOINT>
19
+ {%- endif %}
20
+ </LIBRARY>
21
+ {%- endmacro %}
@@ -4,9 +4,11 @@
4
4
  -#}
5
5
 
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
+ {%- import('macros/printCompuMethod.xml.jinja2') as pcm %}
8
+ {%- import('macros/printDOP.xml.jinja2') as pdop %}
7
9
 
8
10
  {%- macro printMux(mux) %}
9
- <MUX ID="{{mux.odx_id.local_id}}"
11
+ <MUX {{-peid.printElementIdAttribs(mux)}}
10
12
  {{-make_bool_xml_attrib("IS-VISIBLE", mux.is_visible_raw)}}
11
13
  {#- #}>
12
14
  {{ peid.printElementIdSubtags(mux)|indent(1) }}
@@ -40,8 +42,8 @@
40
42
  {%- if case.structure_snref is not none %}
41
43
  <STRUCTURE-SNREF SHORT_NAME="{{case.structure_snref}}"/>
42
44
  {%- endif %}
43
- <LOWER-LIMIT>{{case.lower_limit}}</LOWER-LIMIT>
44
- <UPPER-LIMIT>{{case.upper_limit}}</UPPER-LIMIT>
45
+ {{ pcm.printLimit("LOWER-LIMIT", case.lower_limit) }}
46
+ {{ pcm.printLimit("UPPER-LIMIT", case.upper_limit) }}
45
47
  </CASE>
46
48
  {%- endfor %}
47
49
  </CASES>
@@ -0,0 +1,28 @@
1
+ {#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printElementId.xml.jinja2') as peid %}
7
+ {%- import('macros/printAdminData.xml.jinja2') as pad -%}
8
+ {%- import('macros/printCompanyData.xml.jinja2') as pcd -%}
9
+ {%- import('macros/printSpecialData.xml.jinja2') as psd %}
10
+
11
+ {%- macro printOdxCategoryAttribs(obj) -%}
12
+ {#- #} {{- peid.printElementIdAttribs(obj) }}
13
+ {%- endmacro -%}
14
+
15
+ {%- macro printOdxCategorySubtags(obj) -%}
16
+ {{ peid.printElementIdSubtags(obj) }}
17
+ {%- if obj.admin_data %}
18
+ {{pad.printAdminData(obj.admin_data)|indent(2)}}
19
+ {%- endif %}
20
+ {%- if obj.company_datas %}
21
+ <COMPANY-DATAS>
22
+ {%- for cd in obj.company_datas %}
23
+ {{pcd.printCompanyData(cd)|indent(3)}}
24
+ {%- endfor %}
25
+ </COMPANY-DATAS>
26
+ {%- endif %}
27
+ {{- psd.printSpecialDataGroups(obj.sdgs)|indent(2, first=True) }}
28
+ {%- endmacro -%}
@@ -8,17 +8,17 @@
8
8
  {%- import('macros/printSpecialData.xml.jinja2') as psd %}
9
9
 
10
10
  {%- macro printParam(param) -%}
11
- {%- if param.semantic is not none %}
12
- {%- set semattrib = " SEMANTIC=\""+param.semantic+"\"" -%}
13
- {%- else %}
14
- {%- set semattrib = "" -%}
15
- {%- endif -%}
16
- {%- if param.parameter_type == "TABLE-KEY" and param.odx_id is not none %}
17
- <PARAM {{semattrib}} ID="{{param.odx_id.local_id}}" xsi:type="{{param.parameter_type}}">
11
+ {%- set semattrib = make_xml_attrib("SEMANTIC", param.semantic) -%}
12
+ {%- if param.parameter_type == "TABLE-KEY" %}
13
+ <PARAM {{ semattrib }}
14
+ {{-peid.printElementIdAttribs(param)}}
15
+ xsi:type="{{param.parameter_type}}">
18
16
  {%- elif param.parameter_type == "SYSTEM" %}
19
- <PARAM SYSPARAM="{{param.sysparam}}" xsi:type="{{param.parameter_type}}">
17
+ <PARAM {{ semattrib }}
18
+ {{- make_xml_attrib("SYSPARAM", param.sysparam) }}
19
+ xsi:type="{{param.parameter_type}}">
20
20
  {%- else %}
21
- <PARAM {{semattrib}} xsi:type="{{param.parameter_type}}">
21
+ <PARAM {{ semattrib }} xsi:type="{{param.parameter_type}}">
22
22
  {%- endif%}
23
23
  {{ peid.printElementIdSubtags(param)|indent(1) }}
24
24
  {{- psd.printSpecialDataGroups(param.sdgs)|indent(1, first=True) }}
@@ -35,8 +35,6 @@
35
35
  {%- endif %}
36
36
  {%- if param.coded_value is defined %}
37
37
  <CODED-VALUE>{{param.coded_value}}</CODED-VALUE>
38
- {%- elif param.physical_constant_value_raw is defined %}
39
- <PHYS-CONSTANT-VALUE>{{param.physical_constant_value_raw}}</PHYS-CONSTANT-VALUE>
40
38
  {%- elif param.coded_values is defined %}
41
39
  <CODED-VALUES>
42
40
  {%- for coded_value in param.coded_values %}
@@ -44,19 +42,20 @@
44
42
  {%- endfor %}
45
43
  </CODED-VALUES>
46
44
  {%- endif %}
47
- {%- if param.physical_default_value_raw %}
48
- <PHYSICAL-DEFAULT-VALUE>{{param.physical_default_value_raw}}</PHYSICAL-DEFAULT-VALUE>
45
+ {%- if param.physical_constant_value_raw is defined %}
46
+ <PHYS-CONSTANT-VALUE>{{param.physical_constant_value_raw}}</PHYS-CONSTANT-VALUE>
47
+ {%- endif %}
48
+ {%- if param.physical_default_value_raw is defined and param.physical_default_value_raw is not none %}
49
+ <PHYSICAL-DEFAULT-VALUE>{{param.physical_default_value_raw | e}}</PHYSICAL-DEFAULT-VALUE>
49
50
  {%- endif %}
50
51
  {%- if param.dop_ref %}
51
52
  <DOP-REF ID-REF="{{param.dop_ref.ref_id}}"/>
52
53
  {%- elif param.dop_snref %}
53
- <DOP-SNREF SN="{{param.dop_snref}}"/>
54
+ <DOP-SNREF SHORT-NAME="{{param.dop_snref}}"/>
54
55
  {%- elif param.diag_coded_type is defined %}
55
56
  {{pdop.printDiagCodedType(param.diag_coded_type)|indent(2)}}
56
- {%- elif param.parameter_type != "MATCHING-REQUEST-PARAM" %}
57
- {%- if param.bit_length is defined and param.bit_length is not none %}
58
- <BIT-LENGTH>{{param.bit_length}}</BIT-LENGTH>
59
- {%- endif %}
57
+ {%- elif param.bit_length is defined and param.bit_length is not none %}
58
+ <BIT-LENGTH>{{param.bit_length}}</BIT-LENGTH>
60
59
  {%- endif %}
61
60
  {%- if param.parameter_type == "TABLE-KEY" %}
62
61
  {%- if param.table_ref %}
@@ -77,7 +76,7 @@
77
76
  <TABLE-KEY-REF ID-REF="{{param.table_key_ref.ref_id}}"/>
78
77
  {%- endif %}
79
78
  {%- if param.table_key_snref %}
80
- <TABLE-KEY-SNREF SHORT-NAME="{{param.table_ref}}"/>
79
+ <TABLE-KEY-SNREF SHORT-NAME="{{param.table_key_snref}}"/>
81
80
  {%- endif %}
82
81
  {%- endif %}
83
82
  </PARAM>
@@ -7,7 +7,7 @@
7
7
  {%- import('macros/printSpecialData.xml.jinja2') as psd %}
8
8
 
9
9
  {%- macro printProtStack(ps) %}
10
- <PROT-STACK ID="{{ps.odx_id.local_id}}">
10
+ <PROT-STACK {{-peid.printElementIdAttribs(ps)}}>
11
11
  {{ peid.printElementIdSubtags(ps) | indent(1) }}
12
12
  <PDU-PROTOCOL-TYPE>{{ ps.pdu_protocol_type }}</PDU-PROTOCOL-TYPE>
13
13
  <PHYSICAL-LINK-TYPE>{{ ps.physical_link_type }}</PHYSICAL-LINK-TYPE>
@@ -0,0 +1,30 @@
1
+ {#- -*- mode: sgml; tab-width: 2; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printHierarchyElement.xml.jinja2') as phe %}
7
+ {%- import('macros/printComparamRef.xml.jinja2') as pcom %}
8
+ {%- import('macros/printParentRef.xml.jinja2') as pparref %}
9
+
10
+ {%- macro printProtocol(protocol) -%}
11
+ <PROTOCOL {{- phe.printHierarchyElementAttribs(protocol) -}}>
12
+ {{ phe.printHierarchyElementSubtags(protocol) | indent(2) }}
13
+ {%- set dlr = protocol.protocol_raw %}
14
+
15
+ {%- set cps_docfrag = dlr.comparam_spec_ref.ref_docs[-1] %}
16
+ <COMPARAM-SPEC-REF ID-REF="{{dlr.comparam_spec_ref.ref_id}}" DOCREF="{{cps_docfrag.doc_name}}" DOCTYPE="{{cps_docfrag.doc_type}}" />
17
+
18
+ {%- if dlr.prot_stack_snref is not none %}
19
+ <PROT-STACK-SNREF SHORT-NAME="{{ dlr.prot_stack_snref }}" />
20
+ {%- endif %}
21
+
22
+ {%- if dlr.parent_refs %}
23
+ <PARENT-REFS>
24
+ {%- for parent in dlr.parent_refs -%}
25
+ {{ pparref.printParentRef(parent)|indent(4) }}
26
+ {%- endfor %}
27
+ </PARENT-REFS>
28
+ {%- endif %}
29
+ </PROTOCOL>
30
+ {%- endmacro %}
@@ -9,7 +9,7 @@
9
9
  {%- import('macros/printSpecialData.xml.jinja2') as psd %}
10
10
 
11
11
  {%- macro printRequest(request) -%}
12
- <REQUEST ID="{{request.odx_id.local_id}}">
12
+ <REQUEST {{-peid.printElementIdAttribs(request)}}>
13
13
  {{ peid.printElementIdSubtags(request)|indent(1) }}
14
14
  {%- if request.parameters %}
15
15
  <PARAMS>
@@ -8,7 +8,7 @@
8
8
  {%- import('macros/printSpecialData.xml.jinja2') as psd %}
9
9
 
10
10
  {%- macro printResponse(resp, tag_name="POS-RESPONSE") -%}
11
- <{{tag_name}} ID="{{resp.odx_id.local_id}}">
11
+ <{{tag_name}} {{-peid.printElementIdAttribs(resp)}}>
12
12
  {{ peid.printElementIdSubtags(resp)|indent(1) }}
13
13
  {%- if resp.parameters %}
14
14
  <PARAMS>
@@ -4,6 +4,7 @@
4
4
  -#}
5
5
 
6
6
  {%- import('macros/printDiagComm.xml.jinja2') as pdc %}
7
+ {%- import('macros/printComparamRef.xml.jinja2') as pcom %}
7
8
 
8
9
  {%- macro printService(service) -%}
9
10
  <DIAG-SERVICE {{pdc.printDiagCommAttribs(service) | indent(1) }}
@@ -18,8 +19,8 @@
18
19
  {{pdc.printDiagCommSubtags(service) | indent(1, first=True) }}
19
20
  {%- if service.comparam_refs %}
20
21
  <COMPARAM-REFS>
21
- {%- for ref in service.comparam_refs %}
22
- <COMPARAM-REF ID-REF="{{ref.ref_id}}" />
22
+ {%- for cpref in service.comparam_refs %}
23
+ {{ pcom.printComparamRef(cpref)|indent(4) }}
23
24
  {%- endfor %}
24
25
  </COMPARAM-REFS>
25
26
  {%- endif%}
@@ -5,13 +5,14 @@
5
5
 
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
  {%- import('macros/printDiagComm.xml.jinja2') as pdc %}
8
+ {%- import('macros/printCompuMethod.xml.jinja2') as pcm %}
8
9
 
9
10
  {%- macro printSingleEcuJob(job) -%}
10
11
  <SINGLE-ECU-JOB {{pdc.printDiagCommAttribs(job)|indent(1) }}>
11
12
  {{pdc.printDiagCommSubtags(job) | indent(2, first=True) }}
12
13
  <PROG-CODES>
13
14
  {%- for prog in job.prog_codes %}
14
- {{ printProgCode(prog)|indent(4) }}
15
+ {{ pcm.printProgCode(prog)|indent(4) }}
15
16
  {%- endfor %}
16
17
  </PROG-CODES>
17
18
  {%- if job.input_params %}
@@ -39,41 +40,19 @@
39
40
  {%- endmacro -%}
40
41
 
41
42
 
42
- {%- macro printProgCode(prog) -%}
43
- <PROG-CODE>
44
- <CODE-FILE>{{prog.code_file}}</CODE-FILE>
45
- {%- if prog.encryption %}
46
- <ENCRYPTION>{{prog.encryption}}</ENCRYPTION>
47
- {%- endif %}
48
- <SYNTAX>{{prog.syntax}}</SYNTAX>
49
- <REVISION>{{prog.revision}}</REVISION>
50
- {%- if prog.entrypoint %}
51
- <ENTRYPOINT>{{prog.entrypoint}}</ENTRYPOINT>
52
- {%- endif %}
53
- {%- if prog.library_refs %}
54
- <LIBRARY-REFS>
55
- {%- for ref in prog.library_refs %}
56
- <LIBRARY-REF ID-REF="{{ref.ref_id}}" />
57
- {%- endfor %}
58
- </LIBRARY-REFS>
59
- {%- endif %}
60
- </PROG-CODE>
61
- {%- endmacro -%}
62
-
63
-
64
43
  {%- macro printInputParam(param) -%}
65
44
  <INPUT-PARAM {{-make_xml_attrib("OID", param.oid)}}
66
45
  {{-make_xml_attrib("SEMANTIC", param.semantic)}}>
67
46
  {{ peid.printElementIdSubtags(param)|indent(1) }}
68
- {%- if param.physical_default_value %}
69
- <PHYSICAL-DEFAULT-VALUE>{{param.physical_default_value}}</PHYSICAL-DEFAULT-VALUE>
47
+ {%- if param.physical_default_value is not none %}
48
+ <PHYSICAL-DEFAULT-VALUE>{{param.physical_default_value | e}}</PHYSICAL-DEFAULT-VALUE>
70
49
  {%- endif %}
71
50
  <DOP-BASE-REF ID-REF="{{param.dop_base_ref.ref_id}}" />
72
51
  </INPUT-PARAM>
73
52
  {%- endmacro -%}
74
53
 
75
54
  {%- macro printOutputParam(param) -%}
76
- <OUTPUT-PARAM ID="{{param.odx_id.local_id}}"
55
+ <OUTPUT-PARAM {{-peid.printElementIdAttribs(param)}}
77
56
  {{-make_xml_attrib("OID", param.oid)}}
78
57
  {{-make_xml_attrib("SEMANTIC", param.semantic)}}>
79
58
  {{ peid.printElementIdSubtags(param)|indent(1) }}
@@ -17,7 +17,7 @@
17
17
  {%- endmacro %}
18
18
 
19
19
  {%- macro printSdgCaption(sdg_caption) %}
20
- <SDG-CAPTION ID="{{sdg_caption.odx_id.local_id}}">
20
+ <SDG-CAPTION {{-peid.printElementIdAttribs(sdg_caption)}}>
21
21
  {{ peid.printElementIdSubtags(sdg_caption)|indent(1) }}
22
22
  </SDG-CAPTION>
23
23
  {%- endmacro %}
@@ -6,7 +6,7 @@
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
 
8
8
  {%- macro printState(state) -%}
9
- <STATE ID="{{state.odx_id.local_id}}">
9
+ <STATE {{-peid.printElementIdAttribs(state)}}>
10
10
  {{ peid.printElementIdSubtags(state)|indent(1) }}
11
11
  </STATE>
12
12
  {%- endmacro -%}
@@ -8,7 +8,7 @@
8
8
  {%- import('macros/printStateTransition.xml.jinja2') as pst %}
9
9
 
10
10
  {%- macro printStateChart(state_chart) -%}
11
- <STATE-CHART ID="{{state_chart.odx_id.local_id}}">
11
+ <STATE-CHART {{-peid.printElementIdAttribs(state_chart)}}>
12
12
  {{ peid.printElementIdSubtags(state_chart)|indent(1) }}
13
13
  <SEMANTIC>{{state_chart.semantic}}</SEMANTIC>
14
14
  {%- if state_chart.state_transitions %}
@@ -6,7 +6,7 @@
6
6
  {%- import('macros/printElementId.xml.jinja2') as peid %}
7
7
 
8
8
  {%- macro printStateTransition(state_transition) -%}
9
- <STATE-TRANSITION ID="{{state_transition.odx_id.local_id}}">
9
+ <STATE-TRANSITION {{-peid.printElementIdAttribs(state_transition)}}>
10
10
  {{ peid.printElementIdSubtags(state_transition)|indent(1) }}
11
11
  <SOURCE-SNREF SHORT-NAME="{{state_transition.source_snref}}" />
12
12
  <TARGET-SNREF SHORT-NAME="{{state_transition.target_snref}}" />
@@ -0,0 +1,15 @@
1
+ {#- -*- mode: sgml; tab-width: 1; indent-tabs-mode: nil -*-
2
+ #
3
+ # SPDX-License-Identifier: MIT
4
+ -#}
5
+
6
+ {%- import('macros/printElementId.xml.jinja2') as peid %}
7
+
8
+ {%- macro printStaticField(sf) -%}
9
+ <STATIC-FIELD {{-peid.printElementIdAttribs(sf)}}>
10
+ {{ peid.printElementIdSubtags(sf)|indent(1) }}
11
+ <BASIC-STRUCTURE-REF ID-REF="{{sf.structure_ref.ref_id}}" />
12
+ <FIXED-NUMBER-OF-ITEMS>{{sf.fixed_number_of_items}}</FIXED-NUMBER-OF-ITEMS>
13
+ <ITEM-BYTE-SIZE>{{sf.item_byte_size}}</ITEM-BYTE-SIZE>
14
+ </STATIC-FIELD>
15
+ {%- endmacro -%}
@@ -7,7 +7,7 @@
7
7
  {%- import('macros/printParam.xml.jinja2') as pp %}
8
8
 
9
9
  {%- macro printStructure(st) -%}
10
- <STRUCTURE ID="{{st.odx_id.local_id}}">
10
+ <STRUCTURE {{-peid.printElementIdAttribs(st)}}>
11
11
  {{ peid.printElementIdSubtags(st)|indent(1) }}
12
12
  {%- if st.byte_size is not none %}
13
13
  <BYTE-SIZE>{{st.byte_size}}</BYTE-SIZE>