Nicolas Borla
/
BBR_1Ebene
BBR 1 Ebene
Diff: mbed-os/tools/detect_targets.py
- Revision:
- 0:fbdae7e6d805
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os/tools/detect_targets.py Mon May 14 11:29:06 2018 +0000 @@ -0,0 +1,130 @@ +#! /usr/bin/env python2 +""" +mbed SDK +Copyright (c) 2011-2013 ARM Limited + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +from __future__ import print_function +import sys +import os +import re + +ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) +sys.path.insert(0, ROOT) + +from tools.options import get_default_options_parser + +# Check: Extra modules which are required by core test suite +from tools.utils import check_required_modules +check_required_modules(['prettytable']) + +# Imports related to mbed build api +from tools.build_api import mcu_toolchain_matrix +from tools.test_api import get_autodetected_MUTS_list +from tools.test_api import get_module_avail +from argparse import ArgumentParser + +try: + import mbed_lstools +except: + pass + +def main(): + """Entry Point""" + try: + # Parse Options + parser = ArgumentParser() + + parser.add_argument("-S", "--supported-toolchains", + action="store_true", + dest="supported_toolchains", + default=False, + help="Displays supported matrix of" + " targets and toolchains") + + parser.add_argument('-f', '--filter', + dest='general_filter_regex', + default=None, + help='Filter targets') + + parser.add_argument("-v", "--verbose", + action="store_true", + dest="verbose", + default=False, + help="Verbose diagnostic output") + + options = parser.parse_args() + + # Only prints matrix of supported toolchains + if options.supported_toolchains: + print(mcu_toolchain_matrix( + platform_filter=options.general_filter_regex)) + exit(0) + + # If auto_detect attribute is present, we assume other auto-detection + # parameters like 'toolchains_filter' are also set. + muts = get_autodetected_MUTS_list() + + mcu_filter = options.general_filter_regex or ".*" + + count = 0 + for mut in muts.values(): + if re.match(mcu_filter, mut['mcu'] or "Unknown"): + interface_version = get_interface_version(mut['disk']) + print("") + print("[mbed] Detected %s, port %s, mounted %s, interface " + "version %s:" % + (mut['mcu'], mut['port'], mut['disk'], interface_version)) + print("[mbed] Supported toolchains for %s" % mut['mcu']) + print(mcu_toolchain_matrix(platform_filter=mut['mcu'])) + count += 1 + + if count == 0: + print("[mbed] No mbed targets were detected on your system.") + + except KeyboardInterrupt: + print("\n[CTRL+c] exit") + except Exception as exc: + import traceback + traceback.print_exc(file=sys.stdout) + print("[ERROR] %s" % str(exc)) + sys.exit(1) + +def get_interface_version(mount_point): + """ Function returns interface version from the target mounted on the specified mount point + + mount_point can be acquired via the following: + muts = get_autodetected_MUTS_list() + for mut in muts.values(): + mount_point = mut['disk'] + + @param mount_point Name of disk where platform is connected to host machine. + """ + if get_module_avail('mbed_lstools'): + try : + mbedls = mbed_lstools.create() + mbeds = mbedls.list_mbeds(unique_names=True, read_details_txt=True) + + for mbed in mbeds: + if mbed['mount_point'] == mount_point: + + if 'daplink_version' in mbed: + return mbed['daplink_version'] + except : + return 'unknown' + + return 'unknown' + +if __name__ == '__main__': + main()