Skip to content

Commit c30230f

Browse files
Merge pull request #735 from theotherjimmy/fw-update-subcommand
Introduce device-management/dev-mgmt/dm subcommand
2 parents 17638aa + 35f7b36 commit c30230f

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

mbed/mbed.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,6 +1576,10 @@ def get_env(self):
15761576
for c in compilers:
15771577
if self.get_cfg(c+'_PATH'):
15781578
env['MBED_'+c+'_PATH'] = self.get_cfg(c+'_PATH')
1579+
config_options = ['COLOR', 'CLOUD_SDK_API_KEY', 'CLOUD_SDK_HOST']
1580+
for opt in config_options:
1581+
if self.get_cfg(opt):
1582+
env['MBED_' + opt] = self.get_cfg(opt)
15791583

15801584
return env
15811585

@@ -2691,6 +2695,57 @@ def test_(toolchain=None, target=None, compile_list=False, run_list=False, compi
26912695
program.set_defaults(target=target, toolchain=tchain)
26922696

26932697

2698+
# device management commands
2699+
@subcommand('device-management',
2700+
dict(name=['-t', '--toolchain'], help='Toolchain used for mbed compile'),
2701+
dict(name=['-m', '--target'], help='Target used for compile for target MCU. Example: K64F, NUCLEO_F401RE, NRF51822...'),
2702+
dict(name=['--profile'], help=""),
2703+
dict(name='--build', help='Build directory. Default: build/'),
2704+
dict(name='--source', action='append', help='Source directory. Default: . (current dir)'),
2705+
help='device management supcommand',
2706+
hidden_aliases=['dev-mgmt', 'dm'],
2707+
description=("Manage Device with Pelion"))
2708+
def dev_mgmt(toolchain=None, target=None, source=False, profile=False, build=False):
2709+
orig_path = getcwd()
2710+
program = Program(getcwd(), True)
2711+
program.check_requirements(True)
2712+
with cd(program.path):
2713+
tools_dir = program.get_tools()
2714+
2715+
script = os.path.join(tools_dir, 'device_management.py')
2716+
if not os.path.exists(script):
2717+
error('device management is not supported by this version of Mbed OS. Please upgrade.')
2718+
2719+
2720+
target = target or program.get_cfg("TARGET")
2721+
toolchain = toolchain or program.get_cfg("TOOLCHAIN")
2722+
2723+
if build:
2724+
build_path = build
2725+
elif (not build) and target and toolchain:
2726+
build_path = os.path.join(
2727+
os.path.relpath(program.path, orig_path),
2728+
program.build_dir,
2729+
target.upper(),
2730+
toolchain.upper()
2731+
)
2732+
build_path = _safe_append_profile_to_build_path(build_path, profile)
2733+
else:
2734+
build_path = None
2735+
2736+
args = remainder
2737+
if args[0] in ('update', 'create'):
2738+
args += (['--toolchain', toolchain] if toolchain else [])
2739+
args += (['--mcu', target] if target else [])
2740+
args += (['--build', build_path] if build_path else [])
2741+
env = program.get_env()
2742+
if "MBED_CLOUD_SDK_HOST" not in env:
2743+
env["MBED_CLOUD_SDK_HOST"] = "https://api.us-east-1.mbedcloud.com"
2744+
popen([python_cmd, '-u', script]
2745+
+ args
2746+
+ list(chain.from_iterable(zip(repeat('--source'), source or []))),
2747+
env=env)
2748+
26942749
# Export command
26952750
@subcommand('export',
26962751
dict(name=['-i', '--ide'], help='IDE to create project files for. Example: UVISION4, UVISION5, GCC_ARM, IAR, COIDE'),

0 commit comments

Comments
 (0)