Brian Daniels / mbed-tools

Fork of mbed-tools by Morpheus

Committer:
screamer
Date:
Wed Mar 30 16:23:44 2016 +0000
Revision:
0:4a2e5f0422d6
Child:
2:5f044fef8f98
Initial revision

Who changed what in which revision?

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