Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# for any known type:
if definition[0:3] == 'INT':
self.type = 'INT'
min, max = definition[4:].split(' ', 2)
self.min = safe_convert_str_to_int(min)
self.max = safe_convert_str_to_int(max)
elif definition[0:6] == 'STRING':
self.type = 'STRING'
self.min = None
self.max = None
elif definition[0:4] == 'ENUM':
self.type = 'ENUM'
tempValues = canmatrix.utils.quote_aware_comma_split(definition[5:])
self.values = [] # type: typing.List[str]
for value in tempValues:
value = value.replace("vector_leerstring", "")
self.values.append(value)
elif definition[0:3] == 'HEX': # differently rendered in DBC editor, but values are saved like for an INT
self.type = 'HEX'
min, max = definition[4:].split(' ', 2)
self.min = safe_convert_str_to_int(min)
self.max = safe_convert_str_to_int(max)
elif definition[0:5] == 'FLOAT':
self.type = 'FLOAT'
min, max = definition[6:].split(' ', 2)
self.min = defaultFloatFactory(min)
self.max = defaultFloatFactory(max)
# key value:
elif line.startswith('Var') or line.startswith('Mux'):
tmp_mux = line[:3]
line = line[4:]
# comment = ""
index_offset = 1
if tmp_mux == "Mux":
index_offset = 0
comment = ""
if '//' in line:
split = line.split('//', 1)
comment = split[1].strip()
line = split[0].strip()
line = line.replace(' ', ' "" ')
temp_array = canmatrix.utils.quote_aware_space_split(line)
sig_name = temp_array[0]
is_float = False
if index_offset != 1:
is_signed = True
else:
is_signed = False
if temp_array[1] == 'unsigned':
pass
elif temp_array[1] == 'bit':
# TODO: actually support bit instead of interpreting as
# an unsigned
pass
elif temp_array[1] == 'signed':
is_signed = True
if not new_signal.is_little_endian:
# startbit of motorola coded signals are MSB in arxml
new_signal.set_startbit(int(start_bit.text) + bit_offset, bitNumbering=1)
# save signal, to determin receiver-ECUs for this signal later
signal_rxs[system_signal] = new_signal
if base_type is not None:
temp = get_child(base_type, "SHORT-NAME", root_or_cache, ns)
if temp is not None and "boolean" == temp.text:
new_signal.add_values(1, "TRUE")
new_signal.add_values(0, "FALSE")
if initvalue is not None and initvalue.text is not None:
initvalue.text = canmatrix.utils.guess_value(initvalue.text)
new_signal.initial_value = float_factory(initvalue.text)
for key, value in list(values.items()):
new_signal.add_values(key, value)
if signal_name is not None:
new_signal.add_attribute("LongName", signal_name)
frame.add_signal(new_signal)
def effective_cycle_time(self):
"""Calculate effective cycle time for frame, depending on singal cycle times"""
min_cycle_time_list = [y for y in [x.cycle_time for x in self.signals] + [self.cycle_time] if y != 0]
if len(min_cycle_time_list) == 0:
return 0
elif len(min_cycle_time_list) == 1:
return min_cycle_time_list[0]
else:
gcd = canmatrix.utils.get_gcd(min_cycle_time_list[0],min_cycle_time_list[1])
for i in range(2,len(min_cycle_time_list)):
gcd = canmatrix.utils.get_gcd(gcd, min_cycle_time_list[i])
return gcd
# return min(min_cycle_time_list)
def effective_cycle_time(self):
"""Calculate effective cycle time for frame, depending on singal cycle times"""
min_cycle_time_list = [y for y in [x.cycle_time for x in self.signals] + [self.cycle_time] if y != 0]
if len(min_cycle_time_list) == 0:
return 0
elif len(min_cycle_time_list) == 1:
return min_cycle_time_list[0]
else:
gcd = canmatrix.utils.get_gcd(min_cycle_time_list[0],min_cycle_time_list[1])
for i in range(2,len(min_cycle_time_list)):
gcd = canmatrix.utils.get_gcd(gcd, min_cycle_time_list[i])
return gcd
# return min(min_cycle_time_list)