From 635ef164327f29c4f682c6234e3b6fe6c078e480 Mon Sep 17 00:00:00 2001 From: Daniel Campora Date: Sun, 27 Sep 2015 00:16:20 +0200 Subject: [PATCH] cc3200/tools: Improve update script robustness. --- cc3200/tools/update-wipy.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cc3200/tools/update-wipy.py b/cc3200/tools/update-wipy.py index eeb159332d..857a3d650e 100644 --- a/cc3200/tools/update-wipy.py +++ b/cc3200/tools/update-wipy.py @@ -17,6 +17,7 @@ Or: import sys import argparse import time +import socket from ftplib import FTP from telnetlib import Telnet @@ -121,12 +122,23 @@ def verify_update(args): print("Error: verification failed, the git tag doesn't match") return False - try: - # Specify a longer time out value here because the board has just been - # reset and the wireless connection might not be fully established yet - tn = Telnet(args.ip, timeout=15) - print("Connected via telnet again, lets check the git tag") + retries = 0 + while True: + try: + # Specify a longer time out value here because the board has just been + # reset and the wireless connection might not be fully established yet + tn = Telnet(args.ip, timeout=10) + print("Connected via telnet again, lets check the git tag") + break + except socket.timeout: + if retries < 5: + print("Timeout while connecting via telnet, retrying...") + retries += 1 + else: + print('Error: Telnet connection timed out!') + return False + try: firmware_tag = tn.read_until (b'with CC3200') tag_file_path = args.file.rstrip('mcuimg.bin') + 'genhdr/mpversion.h' @@ -170,10 +182,9 @@ def main(): if reset_board(args): if args.verify: print ('Waiting for the WiFi connection to come up again...') - # this time is to allow the system's wireless network card to connect to the - # WiPy again. Sometimes it might only take a couple of seconds, but let's - # leave 15s to be on the safe side - time.sleep(15) + # this time is to allow the system's wireless network card to + # connect to the WiPy again. + time.sleep(5) if verify_update(args): result = 0 else: