the other jimmy / mbed-sdk-tools

Fork of mbed-sdk-tools by mbed official

Committer:
screamer
Date:
Sat Jul 16 00:34:03 2016 +0100
Revision:
22:9e85236d8716
Parent:
0:66f3b5499f7f
Sync with the mbedmicro/mbed tools

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:66f3b5499f7f 1 """
screamer 0:66f3b5499f7f 2 mbed SDK
screamer 0:66f3b5499f7f 3 Copyright (c) 2011-2013 ARM Limited
screamer 0:66f3b5499f7f 4
screamer 0:66f3b5499f7f 5 Licensed under the Apache License, Version 2.0 (the "License");
screamer 0:66f3b5499f7f 6 you may not use this file except in compliance with the License.
screamer 0:66f3b5499f7f 7 You may obtain a copy of the License at
screamer 0:66f3b5499f7f 8
screamer 0:66f3b5499f7f 9 http://www.apache.org/licenses/LICENSE-2.0
screamer 0:66f3b5499f7f 10
screamer 0:66f3b5499f7f 11 Unless required by applicable law or agreed to in writing, software
screamer 0:66f3b5499f7f 12 distributed under the License is distributed on an "AS IS" BASIS,
screamer 0:66f3b5499f7f 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
screamer 0:66f3b5499f7f 14 See the License for the specific language governing permissions and
screamer 0:66f3b5499f7f 15 limitations under the License.
screamer 0:66f3b5499f7f 16 """
screamer 0:66f3b5499f7f 17
screamer 0:66f3b5499f7f 18 import os
screamer 0:66f3b5499f7f 19 import sys
screamer 0:66f3b5499f7f 20 from os.path import join, basename, exists, abspath, dirname
screamer 0:66f3b5499f7f 21 from time import sleep
screamer 0:66f3b5499f7f 22 from host_test_plugins import HostTestPluginBase
screamer 0:66f3b5499f7f 23
screamer 0:66f3b5499f7f 24 sys.path.append(abspath(join(dirname(__file__), "../../../")))
screamer 22:9e85236d8716 25 import tools.test_api
screamer 0:66f3b5499f7f 26
screamer 0:66f3b5499f7f 27 class HostTestPluginCopyMethod_Smart(HostTestPluginBase):
screamer 0:66f3b5499f7f 28
screamer 0:66f3b5499f7f 29 # Plugin interface
screamer 0:66f3b5499f7f 30 name = 'HostTestPluginCopyMethod_Smart'
screamer 0:66f3b5499f7f 31 type = 'CopyMethod'
screamer 0:66f3b5499f7f 32 stable = True
screamer 0:66f3b5499f7f 33 capabilities = ['smart']
screamer 0:66f3b5499f7f 34 required_parameters = ['image_path', 'destination_disk', 'target_mcu']
screamer 0:66f3b5499f7f 35
screamer 0:66f3b5499f7f 36 def setup(self, *args, **kwargs):
screamer 0:66f3b5499f7f 37 """ Configure plugin, this function should be called before plugin execute() method is used.
screamer 0:66f3b5499f7f 38 """
screamer 0:66f3b5499f7f 39 return True
screamer 0:66f3b5499f7f 40
screamer 0:66f3b5499f7f 41 def execute(self, capability, *args, **kwargs):
screamer 0:66f3b5499f7f 42 """ Executes capability by name.
screamer 0:66f3b5499f7f 43 Each capability may directly just call some command line
screamer 0:66f3b5499f7f 44 program or execute building pythonic function
screamer 0:66f3b5499f7f 45 """
screamer 0:66f3b5499f7f 46 result = False
screamer 0:66f3b5499f7f 47 if self.check_parameters(capability, *args, **kwargs) is True:
screamer 0:66f3b5499f7f 48 image_path = kwargs['image_path']
screamer 0:66f3b5499f7f 49 destination_disk = kwargs['destination_disk']
screamer 0:66f3b5499f7f 50 target_mcu = kwargs['target_mcu']
screamer 0:66f3b5499f7f 51 # Wait for mount point to be ready
screamer 0:66f3b5499f7f 52 self.check_mount_point_ready(destination_disk) # Blocking
screamer 0:66f3b5499f7f 53 # Prepare correct command line parameter values
screamer 0:66f3b5499f7f 54 image_base_name = basename(image_path)
screamer 0:66f3b5499f7f 55 destination_path = join(destination_disk, image_base_name)
screamer 0:66f3b5499f7f 56 if capability == 'smart':
screamer 0:66f3b5499f7f 57 if os.name == 'posix':
screamer 0:66f3b5499f7f 58 cmd = ['cp', image_path, destination_path]
screamer 0:66f3b5499f7f 59 result = self.run_command(cmd, shell=False)
screamer 0:66f3b5499f7f 60
screamer 0:66f3b5499f7f 61 cmd = ['sync']
screamer 0:66f3b5499f7f 62 result = self.run_command(cmd, shell=False)
screamer 0:66f3b5499f7f 63 elif os.name == 'nt':
screamer 0:66f3b5499f7f 64 cmd = ['copy', image_path, destination_path]
screamer 0:66f3b5499f7f 65 result = self.run_command(cmd, shell=True)
screamer 0:66f3b5499f7f 66
screamer 0:66f3b5499f7f 67 # Give the OS and filesystem time to settle down
screamer 0:66f3b5499f7f 68 sleep(3)
screamer 0:66f3b5499f7f 69
screamer 0:66f3b5499f7f 70 platform_name_filter = [target_mcu]
screamer 0:66f3b5499f7f 71 muts_list = {}
screamer 0:66f3b5499f7f 72
screamer 0:66f3b5499f7f 73 remount_complete = False
screamer 0:66f3b5499f7f 74
screamer 0:66f3b5499f7f 75 for i in range(0, 60):
screamer 0:66f3b5499f7f 76 print('Looking for %s with MBEDLS' % target_mcu)
screamer 22:9e85236d8716 77 muts_list = tools.test_api.get_autodetected_MUTS_list(platform_name_filter=platform_name_filter)
screamer 0:66f3b5499f7f 78
screamer 0:66f3b5499f7f 79 if 1 in muts_list:
screamer 0:66f3b5499f7f 80 mut = muts_list[1]
screamer 0:66f3b5499f7f 81 destination_disk = mut['disk']
screamer 0:66f3b5499f7f 82 destination_path = join(destination_disk, image_base_name)
screamer 0:66f3b5499f7f 83
screamer 0:66f3b5499f7f 84 if mut['mcu'] == 'LPC1768' or mut['mcu'] == 'LPC11U24':
screamer 0:66f3b5499f7f 85 if exists(destination_disk) and exists(destination_path):
screamer 0:66f3b5499f7f 86 remount_complete = True
screamer 0:66f3b5499f7f 87 break;
screamer 0:66f3b5499f7f 88 else:
screamer 0:66f3b5499f7f 89 if exists(destination_disk) and not exists(destination_path):
screamer 0:66f3b5499f7f 90 remount_complete = True
screamer 0:66f3b5499f7f 91 break;
screamer 0:66f3b5499f7f 92
screamer 0:66f3b5499f7f 93 sleep(1)
screamer 0:66f3b5499f7f 94
screamer 0:66f3b5499f7f 95 if remount_complete:
screamer 0:66f3b5499f7f 96 print('Remount complete')
screamer 0:66f3b5499f7f 97 else:
screamer 0:66f3b5499f7f 98 print('Remount FAILED')
screamer 0:66f3b5499f7f 99
screamer 0:66f3b5499f7f 100 if exists(destination_disk):
screamer 0:66f3b5499f7f 101 print('Disk exists')
screamer 0:66f3b5499f7f 102 else:
screamer 0:66f3b5499f7f 103 print('Disk does not exist')
screamer 0:66f3b5499f7f 104
screamer 0:66f3b5499f7f 105 if exists(destination_path):
screamer 0:66f3b5499f7f 106 print('Image exists')
screamer 0:66f3b5499f7f 107 else:
screamer 0:66f3b5499f7f 108 print('Image does not exist')
screamer 0:66f3b5499f7f 109
screamer 0:66f3b5499f7f 110 result = None
screamer 0:66f3b5499f7f 111
screamer 0:66f3b5499f7f 112
screamer 0:66f3b5499f7f 113 return result
screamer 0:66f3b5499f7f 114
screamer 0:66f3b5499f7f 115 def load_plugin():
screamer 0:66f3b5499f7f 116 """ Returns plugin available in this module
screamer 0:66f3b5499f7f 117 """
screamer 0:66f3b5499f7f 118 return HostTestPluginCopyMethod_Smart()