8000 Update sqnsupgrade.py · gnaik/pycom-micropython-sigfox@afa7b87 · GitHub
[go: up one dir, main page]

Skip to content

Commit afa7b87

Browse files
committed
Update sqnsupgrade.py
Update sqnsupgrade to version 1.2.6
1 parent 9c76d59 commit afa7b87

File tree

1 file changed

+49
-31
lines changed

1 file changed

+49
-31
lines changed

esp32/frozen/LTE/sqnsupgrade.py

Lines changed: 49 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python
2-
VERSION = "1.2.5"
2+
VERSION = "1.2.6"
33

44
# Copyright (c) 2019, Pycom Limited.
55
#
@@ -339,7 +339,7 @@ def __get_wait_msg(self, load_fff=True):
339339

340340

341341

342-
def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_ffh=False, mirror=False, switch_ffh=False, bootrom=False, rgbled=0x050505, debug=False, pkgdebug=False, atneg=True, max_try=10, direct=True, atneg_only=False, info_only=False, expected_smod=None, verbose=False, load_fff=False, mtools=False):
342+
def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_ffh=False, mirror=False, switch_ffh=False, bootrom=False, rgbled=0x050505, debug=False, pkgdebug=False, atneg=True, max_try=10, direct=True, atneg_only=False, info_only=False, expected_smod=None, verbose=False, load_fff=False, mtools=False, fc=False):
343343
self.__wait_msg = False
344344
mirror = True if atneg_only else mirror
345345
recover = True if atneg_only else load_ffh
@@ -365,7 +365,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
365365
external = True
366366
br = 115200 if recover and not direct else baudrate
367367
if debug: print('Setting baudrate to {}'.format(br))
368-
self.__serial = serial.Serial(port, br, bytesize=serial.EIGHTBITS, timeout=1 if info_only else 0.1)
368+
self.__serial = serial.Serial(port, br, bytesize=serial.EIGHTBITS, timeout=1 if info_only else 0.1, rtscts=fc)
369369
self.__serial.reset_input_buffer()
370370
self.__serial.reset_output_buffer()
371371

@@ -408,7 +408,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
408408
if blobsize < 128:
409409
print('Firmware file is too small!')
410410
reconnect_uart()
411-
sys.exit(1)
411+
return False
412412
if blobsize > 4194304:
413413
if load_fff:
414414
print("Firmware file is too big to load via FFF method. Using ON_THE_FLY")
@@ -447,7 +447,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
447447

448448
if verbose: print('Sending AT+FSRDFILE="/fs/crashdump"')
449449
self.__serial.write(b'AT+FSRDFILE="/fs/crashdump"\r\n')
450-
response = self.read_rsp(size=100)
450+
response = self.read_rsp(size=1024)
451451
if verbose: print('AT+FSRDFILE="/fs/crashdump" returned {}'.format(response))
452452
self.__serial.read()
453453

@@ -484,7 +484,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
484484
else:
485485
print('Received ERROR from AT+SMSWBOOT=3,1! Aborting!')
486486
reconnect_uart()
487-
sys.exit(1)
487+
return False
488488
time.sleep(3)
489489
resp = self.__serial.read()
490490
if debug: print("Response after reset: {}".format(resp))
@@ -548,7 +548,10 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
548548
response = self.read_rsp(size=4)
549549
if response != b'OK\r\n' and response != b'\r\nOK' and response != b'\nOK':
550550
raise OSError("Invalid answer '%s' from the device" % response)
551-
blob.close()
551+
try:
552+
blob.close()
553+
except:
554+
pass
552555

553556
self.__serial.read()
554557
elif recover and (not direct):
@@ -571,7 +574,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
571574
if not b'OK' in response:
572575
print('Failed to start STP mode!')
573576
reconnect_uart()
574-
sys.exit(1)
577+
return False
575578
else:
576579
print('AT auto-negotiation failed! Exiting.')
577580
return False
@@ -582,13 +585,18 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
582585
if not b'OK' in response:
583586
print('Failed to start STP mode!')
584587
reconnect_uart()
585-
sys.exit(1)
588+
return False
586589

587590
try:
588591
if debug:
589592
if verbose: print('Starting STP code upload')
590-
if stp.start(blob, blobsize, self.__serial, baudrate, AT=False, debug=debug, pkgdebug=pkgdebug):
591-
blob.close()
593+
start = stp.start(blob, blobsize, self.__serial, baudrate, AT=False, debug=debug, pkgdebug=pkgdebug)
594+
if debug: print('start returned {} type {}'.format(start, type(start)))
595+
if start == True:
596+
try:
597+
blob.close()
598+
except:
599+
pass
592600
self.__serial.read()
593601
if switch_ffh:
594602
if verbose: print('Bootrom updated successfully, switching to recovery mode')
@@ -602,12 +610,19 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
602610
if verbose: print('Code download done, returning to user mode')
603611
abort = recover
604612
else:
605-
blob.close()
606-
print('Code download failed, aborting!')
613+
try:
614+
blob.close()
615+
except:
616+
pass
617+
print('Code download failed[1], aborting!')
607618
return False
608-
except:
609-
blob.close()
610-
print('Code download failed, aborting!')
619+
except Exception as ex:
620+
try:
621+
blob.close()
622+
except:
623+
pass
624+
print('Exception: {}'.format(ex))
625+
print('Code download failed [2], aborting!')
611626
abort = True
612627

613628
time.sleep(1.5)
@@ -638,7 +653,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
638653
if not self.wakeup_modem(baudrate, port, 100, 1, debug, self.__get_wait_msg(load_fff=load_fff)):
639654
print("Timeout while waiting for modem to finish updating!")
640655
reconnect_uart()
641-
sys.exit(1)
656+
return False
642657

643658
start = time.time()
644659
while True:
@@ -708,7 +723,7 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
708723
else:
709724
print("Invalid response after upgrade... aborting.")
710725
reconnect_uart()
711-
sys.exit(1)
726+
return False
712727

713728
self.__serial.write(b"AT\r\n")
714729
self.__serial.write(b"AT\r\n")
@@ -819,7 +834,7 @@ def at_negotiation(self, baudrate, port, max_try, mirror, atneg_only, debug, tar
819834
self.__serial = UART(1, baudrate=target_baudrate, pins=self.__pins, timeout_chars=100)
820835
else:
821836
self.__serial = None
822-
self.__serial = serial.Serial(port, target_baudrate, bytesize=serial.EIGHTBITS, timeout=0.1)
837+
self.__serial = serial.Serial(port, target_baudrate, bytesize=serial.EIGHTBITS, timeout=0.1, rtscts=fc)
823838
self.__serial.reset_input_buffer()
824839
self.__serial.reset_output_buffer()
825840
self.__serial.flush()
@@ -882,10 +897,11 @@ def upgrade(self, ffile, mfile=None, baudrate=921600, retry=False, resume=False,
882897
if success:
883898
if self.__run(file_path=ffile, resume=True if mfile is not None else resume, baudrate=baudrate, direct=False, debug=debug, pkgdebug=pkgdebug, verbose=verbose, load_fff=False if mfile else load_fff, mtools=mtools):
884899
if self.__check_br(verbose=verbose, debug=debug):
885-
self.__run(bootrom=True, debug=debug, direct=False, pkgdebug=pkgdebug, verbose=verbose, load_fff=True)
900+
success = self.__run(bootrom=True, debug=debug, direct=False, pkgdebug=pkgdebug, verbose=verbose, load_fff=True)
886901
self.success_message(verbose=verbose, debug=debug)
887902
else:
888903
print('Unable to load updater from {}'.format(mfile))
904+
return success
889905

890906
def upgrade_uart(self, ffh_mode=False, mfile=None, retry=False, resume=False, color=0x050505, debug=False, pkgdebug=False, verbose=False, load_fff=True):
891907
success = False
@@ -896,7 +912,7 @@ def upgrade_uart(self, ffh_mode=False, mfile=None, retry=False, resume=False, co
896912
if not success:
897913
print('Firmware does not support LTE.modem_upgrade_mode()!')
898914
reconnect_uart()
899-
sys.exit(1)
915+
return False
900916
print('Preparing modem for upgrade...')
901917
if not retry and ffh_mode:
902918
success = False
@@ -923,16 +939,16 @@ def upgrade_uart(self, ffh_mode=False, mfile=None, retry=False, resume=False, co
923939
else:
924940
print('Unable to upgrade bootrom.')
925941

926-
def show_info(self, port=None, debug=False, verbose=False):
927-
self.__run(port=port, debug=debug, info_only=True, verbose=verbose)
942+
def show_info(self, port=None, debug=False, verbose=False, fc=False):
943+
self.__run(port=port, debug=debug, info_only=True, verbose=verbose, fc=fc)
928944

929-
def upgrade_ext(self, port, ffile, mfile, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True):
945+
def upgrade_ext(self, port, ffile, mfile, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True, fc=False):
930946
success = True
931947
if mfile is not None:
932948
success = False
933-
success = self.__run(file_path=mfile, load_ffh=True, port=port, debug=debug, pkgdebug=pkgdebug, verbose=verbose)
949+
success = self.__run(file_path=mfile, load_ffh=True, port=port, debug=debug, pkgdebug=pkgdebug, verbose=verbose, fc=fc)
934950
if success:
935-
if self.__run(file_path=ffile, resume=True if mfile is not None else resume, direct=False, port=port, debug=debug, pkgdebug=pkgdebug, verbose=verbose, load_fff=load_fff):
951+
if self.__run(file_path=ffile, resume=True if mfile is not None else resume, direct=False, port=port, debug=debug, pkgdebug=pkgdebug, verbose=verbose, load_fff=load_fff, fc=fc):
936952
self.success_message(port=port, verbose=verbose, debug=debug)
937953
else:
938954
print('Unable to load updater from {}'.format(mfile))
@@ -941,7 +957,7 @@ def detect_error():
941957
print('Could not detect your modem!')
942958
print('Please try to power off your device and restart in safeboot mode.')
943959
reconnect_uart()
944-
sys.exit(1)
960+
return False
945961

946962
def print_welcome():
947963
print('<<< Welcome to the SQN3330 firmware updater [{}] >>>'.format(VERSION))
@@ -973,6 +989,7 @@ def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff
973989
retry = False
974990
resume = False
975991
mtools = False
992+
success = False
976993
sqnup = sqnsupgrade()
977994
if sqnup.check_files(ffile, mfile, debug):
978995
state = sqnup.detect_modem_state(debug=debug, hangup=hangup)
@@ -984,15 +1001,16 @@ def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff
9841001
if mfile is None:
9851002
print('Your modem is in recovery mode. Please specify updater.elf file')
9861003
reconnect_uart()
987-
sys.exit(1)
1004+
return False
9881005
elif state == 4:
9891006
resume = True
9901007
elif state == 1:
9911008
mtools = True
9921009
elif state == -1:
9931010
detect_error()
994-
sqnup.upgrade(ffile=ffile, mfile=mfile, baudrate=baudrate, retry=retry, resume=resume, debug=debug, pkgdebug=False, verbose=verbose, load_fff=load_fff, mtools=mtools)
1011+
success = sqnup.upgrade(ffile=ffile, mfile=mfile, baudrate=baudrate, retry=retry, resume=resume, debug=debug, pkgdebug=False, verbose=verbose, load_fff=load_fff, mtools=mtools)
9951012
reconnect_uart()
1013+
return success
9961014

9971015
def uart(ffh_mode=False, mfile=None, color=0x050505, verbose=False, debug=False, hangup=True):
9981016
print_welcome()
@@ -1054,12 +1072,12 @@ def state(verbose=False, debug=False, retry=5, hangup=False):
10541072
return sqnup.detect_modem_state(debug=debug, hangup=hangup, retry=retry)
10551073

10561074
else:
1057-
def run(port, ffile, mfile=None, resume=False, debug=False, verbose=False, load_fff=True):
1075+
def run(port, ffile, mfile=None, resume=False, debug=False, verbose=False, load_fff=True, fc=False):
10581076
print_welcome()
10591077
sqnup = sqnsupgrade()
10601078
if sqnup.check_files(ffile, mfile, debug):
10611079
sqnup.upgrade_ext(port=port, ffile=ffile, mfile=mfile, resume=resume, debug=debug, pkgdebug=False, verbose=verbose, load_fff=load_fff)
10621080

1063-
def version(port, verbose=False, debug=False):
1081+
def version(port, verbose=False, debug=False, fc=False):
10641082
sqnup = sqnsupgrade()
10651083
sqnup.show_info(port=port, debug=debug, verbose=verbose)

0 commit comments

Comments
 (0)
0