def fit_profile_show(): unit_values = [] unit_dict = dict() for message_type in MESSAGE_TYPES.values(): for field in message_type.fields.values(): unit_values.append(field.units) unit_dict[str(field.name)] = field.units if field.components: for component in field.components: unit_values.append(component.units) unit_dict[component.name] = component.units if field.subfields: for subfield in field.subfields: unit_values.append(subfield.units) unit_dict[subfield.name] = subfield.units if subfield.components: for component in subfield.components: unit_values.append(component.units) unit_dict[component.name] = component.units # unit_values = filter(None, unit_values) # for unit_value in sorted(set(unit_values)): # print(format(unit_value)) # unit_dict = unit_dict.pop(filter(None, unit_dict.values())) print(unit_dict)
def fit_message_all_show(fitfile=None): if fitfile is None: fit_profile_show() return unit_dict = dict() for message_type in MESSAGE_TYPES.values(): msg_dict = dict() msg_dict = list(fitfile.get_messages(name=message_type.name)) if len(msg_dict) > 0: unit_dict[message_type.name] = msg_dict.copy() fit_msg_type_list.append(message_type.name)
def fit_msg ( local_msg, msg_name, msg_fields, msg_data = None ): msg_type = [m for m in MESSAGE_TYPES.values() if m.name == msg_name][0] field_types = [] # Convert msg_fields for i in range(len(msg_fields)): if type(msg_fields[i]) != type(()): msg_fields[i] = (msg_fields[i], None) # Definition Message s = struct.pack('<B', 0x40 | local_msg) s += struct.pack('<xB', 0) s += struct.pack('<HB', msg_type.mesg_num, len(msg_fields)) for n, sf in msg_fields: fn = [f for f in msg_type.fields if msg_type.fields[f].name == n][0] ft = msg_type.fields[fn] bt = ft.type if hasattr(bt, 'base_type'): bt = bt.base_type if hasattr(ft, 'subfields') and ft.subfields: sf = [f for f in ft.subfields if f.name == sf][0] s += struct.pack('<3B', fn, bt.size, bt.identifier) if sf: ft = sf field_types.append(ft) # Data if msg_data: for d in msg_data: s += struct.pack('<B', 0x00 | local_msg) for fv, ft in zip(d, field_types): bt = ft.type if hasattr(bt, 'values') and bt.values: for v in bt.values: if bt.values[v] == fv: fv = v break if hasattr(ft, 'offset') and ft.offset: fv += ft.offset if hasattr(ft, 'scale') and ft.scale: fv *= ft.scale if hasattr(bt, 'base_type'): bt = bt.base_type s += struct.pack('<'+bt.fmt, fv) return s
def fit_msg(local_msg, msg_name, msg_fields, msg_data=None): msg_type = [m for m in MESSAGE_TYPES.values() if m.name == msg_name][0] field_types = [] # Convert msg_fields for i in range(len(msg_fields)): if type(msg_fields[i]) != type(()): msg_fields[i] = (msg_fields[i], None) # Definition Message s = struct.pack('<B', 0x40 | local_msg) s += struct.pack('<xB', 0) s += struct.pack('<HB', msg_type.mesg_num, len(msg_fields)) for n, sf in msg_fields: fn = [f for f in msg_type.fields if msg_type.fields[f].name == n][0] ft = msg_type.fields[fn] bt = ft.type if hasattr(bt, 'base_type'): bt = bt.base_type if hasattr(ft, 'subfields') and ft.subfields: sf = [f for f in ft.subfields if f.name == sf][0] s += struct.pack('<3B', fn, bt.size, bt.identifier) if sf: ft = sf field_types.append(ft) # Data if msg_data: for d in msg_data: s += struct.pack('<B', 0x00 | local_msg) for fv, ft in zip(d, field_types): bt = ft.type if hasattr(bt, 'values') and bt.values: for v in bt.values: if bt.values[v] == fv: fv = v break if hasattr(ft, 'offset') and ft.offset: fv += ft.offset if hasattr(ft, 'scale') and ft.scale: fv *= ft.scale if hasattr(bt, 'base_type'): bt = bt.base_type s += struct.pack('<' + bt.fmt, fv) return s
def do_fitparse_profile(): unit_values = [] for message_type in MESSAGE_TYPES.values(): for field in message_type.fields.values(): unit_values.append(field.units) if field.components: for component in field.components: unit_values.append(component.units) if field.subfields: for subfield in field.subfields: unit_values.append(subfield.units) if subfield.components: for component in subfield.components: unit_values.append(component.units) unit_values = filter(None, unit_values) print 'In fitparse/profile.py:' for unit_value in sorted(set(unit_values)): print ' * %s [%s]' % ( unit_value, scrub_method_name('process_units_%s' % unit_value, convert_units=True), )
def do_fitparse_profile(): unit_values = [] for message_type in MESSAGE_TYPES.values(): for field in message_type.fields.values(): unit_values.append(field.units) if field.components: for component in field.components: unit_values.append(component.units) if field.subfields: for subfield in field.subfields: unit_values.append(subfield.units) if subfield.components: for component in subfield.components: unit_values.append(component.units) unit_values = filter(None, unit_values) print('In fitparse/profile.py:') for unit_value in sorted(set(unit_values)): print(' * {} [{}]'.format( unit_value, scrub_method_name('process_units_%s' % unit_value, convert_units=True) ))