Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/cbexigen/datatype_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,7 @@ def __get_root_content(self):
self.config['root_struct_name']
struct_type = self.parameters['prefix'] + self.config['root_struct_name']
parameter_name = self.config['root_parameter_name']
use_memset = self.config['use_memset_root_content']

if len(self.analyzer_data.root_elements) > 1:
for element in self.analyzer_data.root_elements:
Expand All @@ -738,6 +739,7 @@ def __get_root_content(self):
temp = self.generator.get_template("BaseInitWithUsed.jinja")

return temp.render(function_name=function_name,
use_memset=use_memset,
struct_type=struct_type,
parameter_name=parameter_name,
element_comment=comment,
Expand All @@ -748,6 +750,7 @@ def __get_fragment_content(self):
struct_type = f'{self.__schema_prefix}{self.config["fragment_struct_name"]}'
parameter_name = self.config['fragment_parameter_name']
function_name = f'{self.config["init_function_prefix"]}{struct_type}'
use_memset = self.config['use_memset_child_elements']

ele = []
arr = []
Expand All @@ -768,6 +771,7 @@ def __get_fragment_content(self):
# generate init function with arrayLen = 0u and isUsed = 0u
temp = self.generator.get_template("BaseInitWithArrayLenAndUsed.jinja")
result = temp.render(function_name=function_name,
use_memset=use_memset,
struct_type=struct_type,
parameter_name=parameter_name,
element_comment=comment,
Expand All @@ -785,6 +789,7 @@ def __get_xmldsig_fragment_content(self):
struct_type = f'{self.__schema_prefix}{self.config["xmldsig_fragment_struct_name"]}'
parameter_name = self.config['xmldsig_fragment_parameter_name']
function_name = f'{self.config["init_function_prefix"]}{struct_type}'
use_memset = self.config['use_memset_child_elements']

ele = []
arr = []
Expand All @@ -805,6 +810,7 @@ def __get_xmldsig_fragment_content(self):
# generate init function with arrayLen = 0u and isUsed = 0u
temp = self.generator.get_template("BaseInitWithArrayLenAndUsed.jinja")
result = temp.render(function_name=function_name,
use_memset=use_memset,
struct_type=struct_type,
parameter_name=parameter_name,
element_comment=comment,
Expand All @@ -828,6 +834,7 @@ def __get_function_content(self):
function_name = self.config['init_function_prefix'] + element.prefixed_type
struct_type = element.prefixed_type
parameter_name = element.type_short
use_memset = self.config['use_memset_child_elements']

if element.type_short == 'AnonType':
function_name = self.config['init_function_prefix'] + element.prefixed_name
Expand Down Expand Up @@ -856,6 +863,7 @@ def __get_function_content(self):
# generate init function with arrayLen = 0u and isUsed = 0u
temp = self.generator.get_template("BaseInitWithArrayLenAndUsed.jinja")
result += temp.render(function_name=function_name,
use_memset=use_memset,
struct_type=struct_type,
parameter_name=parameter_name,
element_comment=comment,
Expand Down
11 changes: 11 additions & 0 deletions src/cbexigen/tools_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@
# general c-code style
'c_code_indent_chars': 4,
'c_replace_chars': [' ', '-'],
# usage of memset
'use_memset_root_content': False,
'use_memset_child_elements': False,
}

__CONFIG_MODULE = None
Expand Down Expand Up @@ -186,6 +189,14 @@
if hasattr(config_module, 'c_replace_chars'):
CONFIG_PARAMS['c_replace_chars'] = config_module.c_replace_chars

''' usage of memset '''

Check notice on line 192 in src/cbexigen/tools_config.py

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/cbexigen/tools_config.py#L192

String statement has no effect
# initialization of EXI child elements
if hasattr(config_module, 'use_memset_root_content'):
CONFIG_PARAMS['use_memset_root_content'] = config_module.use_memset_root_content
# initialization of EXI child elements
if hasattr(config_module, 'use_memset_child_elements'):
CONFIG_PARAMS['use_memset_child_elements'] = config_module.use_memset_child_elements


ISO2_SCHEMAS_URL = "https://standards.iso.org/iso/15118/-2/ed-2/en/"
ISO20_SCHEMAS_URL = "https://standards.iso.org/iso/15118/-20/ed-1/en/"
Expand Down
22 changes: 14 additions & 8 deletions src/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@
# these characters will be replaced by an underscore in generated code
c_replace_chars = [' ', '-', '/']

# Usage of memset for initialization of EXI Documents and Fragments
use_memset_root_content = True

# Usage of memset for initialization of EXI child elements
use_memset_child_elements = True

# files to be generated
c_files_to_generate = {
'exi_error_codes': {
Expand Down Expand Up @@ -287,7 +293,7 @@
'c': {
'filename': 'appHand_Datatypes.c',
'identifier': 'APP_HANDSHAKE_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['appHand_Datatypes.h']
}
},
Expand Down Expand Up @@ -344,7 +350,7 @@
'c': {
'filename': 'din_msgDefDatatypes.c',
'identifier': 'DIN_MSG_DEF_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['din_msgDefDatatypes.h']
}
},
Expand Down Expand Up @@ -400,7 +406,7 @@
'c': {
'filename': 'iso2_msgDefDatatypes.c',
'identifier': 'ISO2_MSG_DEF_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso2_msgDefDatatypes.h']
}
},
Expand Down Expand Up @@ -456,7 +462,7 @@
'c': {
'filename': 'iso20_CommonMessages_Datatypes.c',
'identifier': 'ISO20_COMMON_MESSAGES_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso20_CommonMessages_Datatypes.h']
}
},
Expand Down Expand Up @@ -513,7 +519,7 @@
'c': {
'filename': 'iso20_AC_Datatypes.c',
'identifier': 'ISO20_AC_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso20_AC_Datatypes.h']
}
},
Expand Down Expand Up @@ -569,7 +575,7 @@
'c': {
'filename': 'iso20_DC_Datatypes.c',
'identifier': 'ISO20_DC_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso20_DC_Datatypes.h']
}
},
Expand Down Expand Up @@ -626,7 +632,7 @@
'c': {
'filename': 'iso20_WPT_Datatypes.c',
'identifier': 'ISO20_WPT_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso20_WPT_Datatypes.h']
}
},
Expand Down Expand Up @@ -683,7 +689,7 @@
'c': {
'filename': 'iso20_ACDP_Datatypes.c',
'identifier': 'ISO20_ACDP_DATATYPES_C',
'include_std_lib': [],
'include_std_lib': ['string.h'],
'include_other': ['iso20_ACDP_Datatypes.h']
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
{{ element_comment }}
void {{ function_name }}(struct {{ struct_type }}* {{ parameter_name }}) {
{%- if use_memset %}
memset({{ parameter_name }}, 0, sizeof(struct {{ struct_type }}));
{%- else %}
{%- if not arrays and not elements %}
(void) {{ parameter_name }};
{%- endif %}
Expand All @@ -9,4 +12,5 @@ void {{ function_name }}(struct {{ struct_type }}* {{ parameter_name }}) {
{%- for name in elements %}
{{ parameter_name }}->{{ name }}_isUsed = 0u;
{%- endfor %}
{%- endif %}
}
4 changes: 4 additions & 0 deletions src/input/code_templates/c/BaseInitWithUsed.jinja
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
{{ element_comment }}
void {{ function_name }}(struct {{ struct_type }}* {{ parameter_name }}) {
{%- if use_memset %}
memset({{ parameter_name }}, 0, sizeof(struct {{ struct_type }}));
{%- else %}
{%- if not elements %}
(void) {{ parameter_name }};
{%- endif %}
{%- for name in elements %}
{{ parameter_name }}->{{ name }}_isUsed = 0u;
{%- endfor %}
{%- endif %}
}