summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDaniel Campora <daniel@wipy.io>2015-08-19 14:00:20 +0200
committerDaniel Campora <daniel@wipy.io>2015-09-10 07:56:48 +0200
commitec8589e4c9e99dc28ff8c1fc981bcb9af591a1dc (patch)
tree4c5bb532dcd5c0ba21a705675cfbe51a60fa3ec8
parentb864e7afe4af74392d27fda71debd74c48a27ed3 (diff)
downloadmicropython-ec8589e4c9e99dc28ff8c1fc981bcb9af591a1dc.tar.gz
micropython-ec8589e4c9e99dc28ff8c1fc981bcb9af591a1dc.zip
cc3200: Improve uniflash script and make it a bit more verbose.
-rw-r--r--cc3200/tools/uniflash.py43
1 files changed, 34 insertions, 9 deletions
diff --git a/cc3200/tools/uniflash.py b/cc3200/tools/uniflash.py
index 514792a2e1..21da46a56f 100644
--- a/cc3200/tools/uniflash.py
+++ b/cc3200/tools/uniflash.py
@@ -22,6 +22,27 @@ def print_exception(e):
print ('Exception: {}, on line {}'.format(e, sys.exc_info()[-1].tb_lineno))
+def execute(command):
+ process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ cmd_log = ""
+
+ # Poll process for new output until finished
+ while True:
+ nextline = process.stdout.readline()
+ if nextline == '' and process.poll() != None:
+ break
+ sys.stdout.write(nextline)
+ sys.stdout.flush()
+ cmd_log += nextline
+
+ output = process.communicate()[0]
+ exitCode = process.returncode
+
+ if exitCode == 0:
+ return cmd_log
+ else:
+ raise ProcessException(command, exitCode, output)
+
def main():
cmd_parser = argparse.ArgumentParser(description='Flash the WiPy and optionally run a small test on it.')
cmd_parser.add_argument('-u', '--uniflash', default=None, help='the path to the uniflash cli executable')
@@ -30,7 +51,7 @@ def main():
cmd_parser.add_argument('-s', '--servicepack', default=None, help='the path to the servicepack file')
args = cmd_parser.parse_args()
- result = 1
+ output = ""
com_port = 'com=' + str(args.port)
servicepack_path = 'spPath=' + args.servicepack
@@ -38,19 +59,23 @@ def main():
if args.uniflash == None or args.config == None:
raise ValueError('uniflash path and config path are mandatory')
if args.servicepack == None:
- subprocess.check_call([args.uniflash, '-config', args.config, '-setOptions', com_port, '-operations', 'format', 'program'], stderr=subprocess.STDOUT)
+ output += execute([args.uniflash, '-config', args.config, '-setOptions', com_port, '-operations', 'format', 'program'])
else:
- subprocess.check_call([args.uniflash, '-config', args.config, '-setOptions', com_port, servicepack_path, '-operations', 'format', 'servicePackUpdate', 'program'], stderr=subprocess.STDOUT)
- result = 0
+ output += execute([args.uniflash, '-config', args.config, '-setOptions', com_port, servicepack_path, '-operations', 'format', 'servicePackUpdate', 'program'])
except Exception as e:
print_exception(e)
+ output = ""
finally:
- if result:
- print ("ERROR: Programming failed!")
+ if "Finish Executing operation: program" in output:
+ print("======================================")
+ print("Board programmed OK")
+ print("======================================")
+ sys.exit(0)
else:
- print ("Board programmed OK")
- sys.exit(result)
-
+ print("======================================")
+ print("ERROR: Programming failed!")
+ print("======================================")
+ sys.exit(1)
if __name__ == "__main__":
main()