def process_library(library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath( os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s" % (path, library.name)) continue param_matches = prog_group_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name + param_match[0]) debug(p.name + ' ') field_text = param_match[1] fields = prog_param_fields.findall(field_text) for field in fields: if field[0] in known_param_fields: setattr(p, field[0], field[1]) else: error("unknown parameter metadata field %s" % field[0]) library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) l = Library(group) fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(l, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(l.name == parsed_l.name for parsed_l in libraries): l.name = library.name + l.name debug("Group name: %s" % l.name) process_library(l, os.path.dirname(libraryfname)) alllibs.append(l)
def process_library(library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath(os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s" % (path, library.name)) continue param_matches = prog_group_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name+param_match[0]) debug(p.name + ' ') field_text = param_match[1] fields = prog_param_fields.findall(field_text) for field in fields: if field[0] in known_param_fields: setattr(p, field[0], field[1]) else: error("unknown parameter metadata field %s" % field[0]) library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) l = Library(group) fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(l, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(l.name == parsed_l.name for parsed_l in libraries): l.name = library.name + l.name debug("Group name: %s" % l.name) process_library(l, os.path.dirname(libraryfname)) alllibs.append(l)
def process_library(vehicle, library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() global current_file current_file = path debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath( os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s (fname=%s)" % (path, library.name, libraryfname)) continue param_matches = prog_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name + param_match[0], current_file) debug(p.name + ' ') global current_param current_param = p.name field_text = param_match[1] fields = prog_param_fields.findall(field_text) non_vehicle_specific_values_seen = False for field in fields: if field[0] in known_param_fields: value = re.sub('@PREFIX@', library.name, field[1]) setattr(p, field[0], value) if field[0] == "Values": non_vehicle_specific_values_seen = True else: error("param: unknown parameter metadata field %s" % field[0]) debug("matching %s" % field_text) fields = prog_param_tagged_fields.findall(field_text) this_vehicle_values_seen = False this_vehicle_value = None other_vehicle_values_seen = False for field in fields: only_for_vehicles = field[1].split(",") only_for_vehicles = [ x.rstrip().lstrip() for x in only_for_vehicles ] delta = set(only_for_vehicles) - set(truename_map.values()) if len(delta): error("Unknown vehicles (%s)" % delta) debug( "field[0]=%s vehicle=%s truename=%s field[1]=%s only_for_vehicles=%s\n" % (field[0], vehicle.name, vehicle.truename, field[1], str(only_for_vehicles))) value = re.sub('@PREFIX@', library.name, field[2]) if field[0] == "Values": if vehicle.truename in only_for_vehicles: this_vehicle_values_seen = True this_vehicle_value = value if len(only_for_vehicles) > 1: other_vehicle_values_seen = True elif len(only_for_vehicles): other_vehicle_values_seen = True if field[0] in known_param_fields: setattr(p, field[0], value) else: error( "tagged param<: unknown parameter metadata field '%s'" % field[0]) if ((non_vehicle_specific_values_seen or not other_vehicle_values_seen) or this_vehicle_values_seen): if this_vehicle_values_seen and field[0] == 'Values': setattr(p, field[0], this_vehicle_value) # debug("Appending (non_vehicle_specific_values_seen=%u " # "other_vehicle_values_seen=%u this_vehicle_values_seen=%u)" % # (non_vehicle_specific_values_seen, other_vehicle_values_seen, this_vehicle_values_seen)) p.path = path # Add path. Later deleted - only used for duplicates library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) done_groups = dict() for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) do_append = True if group in done_groups: # this is to handle cases like the RangeFinder # parameters, where the wasp stuff gets tack into the # same RNGFND1_ group lib = done_groups[group] do_append = False else: lib = Library(group) done_groups[group] = lib fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(lib, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(lib.name == parsed_l.name for parsed_l in libraries): if do_append: lib.name = library.name + lib.name debug("Group name: %s" % lib.name) process_library(vehicle, lib, os.path.dirname(libraryfname)) if do_append: alllibs.append(lib) current_file = None
def process_library(vehicle, library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() global current_file current_file = path debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath(os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s" % (path, library.name)) continue param_matches = prog_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name+param_match[0], current_file) debug(p.name + ' ') global current_param current_param = p.name field_text = param_match[1] fields = prog_param_fields.findall(field_text) non_vehicle_specific_values_seen = False for field in fields: if field[0] in known_param_fields: value = re.sub('@PREFIX@', library.name, field[1]) setattr(p, field[0], value) if field[0] == "Values": non_vehicle_specific_values_seen = True else: error("param: unknown parameter metadata field %s" % field[0]) debug("matching %s" % field_text) fields = prog_param_tagged_fields.findall(field_text) this_vehicle_values_seen = False this_vehicle_value = None other_vehicle_values_seen = False for field in fields: only_for_vehicles = field[1].split(",") only_for_vehicles = [x.rstrip().lstrip() for x in only_for_vehicles] delta = set(only_for_vehicles) - set(truename_map.values()) if len(delta): error("Unknown vehicles (%s)" % delta) debug("field[0]=%s vehicle=%s truename=%s field[1]=%s only_for_vehicles=%s\n" % (field[0], vehicle.name, vehicle.truename, field[1], str(only_for_vehicles))) value = re.sub('@PREFIX@', library.name, field[2]) if field[0] == "Values": if vehicle.truename in only_for_vehicles: this_vehicle_values_seen = True this_vehicle_value = value if len(only_for_vehicles) > 1: other_vehicle_values_seen = True elif len(only_for_vehicles): other_vehicle_values_seen = True if field[0] in known_param_fields: setattr(p, field[0], value) else: error("tagged param<: unknown parameter metadata field '%s'" % field[0]) if ((non_vehicle_specific_values_seen or not other_vehicle_values_seen) or this_vehicle_values_seen): if this_vehicle_values_seen: debug("Setting vehicle-specific value (%s)" % str(this_vehicle_value)) setattr(p, field[0], this_vehicle_value) # debug("Appending (non_vehicle_specific_values_seen=%u " # "other_vehicle_values_seen=%u this_vehicle_values_seen=%u)" % # (non_vehicle_specific_values_seen, other_vehicle_values_seen, this_vehicle_values_seen)) p.path = path # Add path. Later deleted - only used for duplicates library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) lib = Library(group) fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(lib, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(lib.name == parsed_l.name for parsed_l in libraries): lib.name = library.name + lib.name debug("Group name: %s" % lib.name) process_library(vehicle, lib, os.path.dirname(libraryfname)) alllibs.append(lib) current_file = None
def process_library(vehicle, library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath( os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s" % (path, library.name)) continue param_matches = prog_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name + param_match[0]) debug(p.name + ' ') field_text = param_match[1] fields = prog_param_fields.findall(field_text) non_vehicle_specific_values_seen = False for field in fields: if field[0] in known_param_fields: value = re.sub('@PREFIX@', library.name, field[1]) setattr(p, field[0], value) if field[0] == "Values": non_vehicle_specific_values_seen = True else: error("param: unknown parameter metadata field %s" % field[0]) debug("matching %s" % field_text) fields = prog_param_tagged_fields.findall(field_text) this_vehicle_values_seen = False this_vehicle_value = None other_vehicle_values_seen = False for field in fields: only_for_vehicles = field[1].split(",") only_for_vehicles = [ x.rstrip().lstrip() for x in only_for_vehicles ] delta = set(only_for_vehicles) - set(truename_map.values()) if len(delta): error("Unknown vehicles (%s)" % delta) debug( "field[0]=%s vehicle=%s truename=%s field[1]=%s only_for_vehicles=%s\n" % (field[0], vehicle.name, vehicle.truename, field[1], str(only_for_vehicles))) value = re.sub('@PREFIX@', library.name, field[2]) if field[0] == "Values": if vehicle.truename in only_for_vehicles: this_vehicle_values_seen = True this_vehicle_value = value if len(only_for_vehicles) > 1: other_vehicle_values_seen = True elif len(only_for_vehicles): other_vehicle_values_seen = True if field[0] in known_param_fields: setattr(p, field[0], value) else: error( "tagged param<: unknown parameter metadata field '%s'" % field[0]) if ((non_vehicle_specific_values_seen or not other_vehicle_values_seen) or this_vehicle_values_seen): if this_vehicle_values_seen: debug("Setting vehicle-specific value (%s)" % str(this_vehicle_value)) setattr(p, field[0], this_vehicle_value) debug( "Appending (non_vehicle_specific_values_seen=%u other_vehicle_values_seen=%u this_vehicle_values_seen=%u!)" % (non_vehicle_specific_values_seen, other_vehicle_values_seen, this_vehicle_values_seen)) library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) l = Library(group) fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(l, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(l.name == parsed_l.name for parsed_l in libraries): l.name = library.name + l.name debug("Group name: %s" % l.name) process_library(vehicle, l, os.path.dirname(libraryfname)) alllibs.append(l)
def process_library(vehicle, library, pathprefix=None): '''process one library''' paths = library.Path.split(',') for path in paths: path = path.strip() debug("\n Processing file '%s'" % path) if pathprefix is not None: libraryfname = os.path.join(pathprefix, path) elif path.find('/') == -1: if len(vehicles) != 1: print("Unable to handle multiple vehicles with .pde library") continue libraryfname = os.path.join(vehicles[0].path, path) else: libraryfname = os.path.normpath(os.path.join(apm_path + '/libraries/' + path)) if path and os.path.exists(libraryfname): f = open(libraryfname) p_text = f.read() f.close() else: error("Path %s not found for library %s" % (path, library.name)) continue param_matches = prog_param.findall(p_text) debug("Found %u documented parameters" % len(param_matches)) for param_match in param_matches: p = Parameter(library.name+param_match[0]) debug(p.name + ' ') field_text = param_match[1] fields = prog_param_fields.findall(field_text) for field in fields: if field[0] in known_param_fields: value = re.sub('@PREFIX@', library.name, field[1]) setattr(p, field[0], value) else: error("param: unknown parameter metadata field %s" % field[0]) debug("matching %s" % field_text) fields = prog_param_tagged_fields.findall(field_text) for field in fields: only_for_vehicles = field[1].split(",") only_for_vehicles = [ x.rstrip().lstrip() for x in only_for_vehicles ] delta = set(only_for_vehicles) - set(truename_map.values()) if len(delta): error("Unknown vehicles (%s)" % delta) debug("field[0]=%s vehicle=%s truename=%s field[1]=%s only_for_vehicles=%s\n" % (field[0], vehicle.name,vehicle.truename,field[1], str(only_for_vehicles))) if vehicle.truename not in only_for_vehicles: continue if field[0] in known_param_fields: value = re.sub('@PREFIX@', library.name, field[2]) setattr(p, field[0], value) else: error("tagged param: unknown parameter metadata field '%s'" % field[0]) library.params.append(p) group_matches = prog_groups.findall(p_text) debug("Found %u groups" % len(group_matches)) debug(group_matches) for group_match in group_matches: group = group_match[0] debug("Group: %s" % group) l = Library(group) fields = prog_param_fields.findall(group_match[1]) for field in fields: if field[0] in known_group_fields: setattr(l, field[0], field[1]) else: error("unknown parameter metadata field '%s'" % field[0]) if not any(l.name == parsed_l.name for parsed_l in libraries): l.name = library.name + l.name debug("Group name: %s" % l.name) process_library(vehicle, l, os.path.dirname(libraryfname)) alllibs.append(l)