Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit 78777bd

Browse files
committed
Merge branch 'Release/v1.20' into Dev
2 parents 69dd8b5 + 06dfad0 commit 78777bd

File tree

10 files changed

+502
-167
lines changed

10 files changed

+502
-167
lines changed

.gitignore

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,4 @@
1-
# Compiled Sources
2-
###################
3-
*.o
4-
*.a
5-
*.elf
6-
*.bin
7-
*.map
8-
*.hex
9-
*.dis
10-
*.exe
11-
12-
# Packages
1+
# Packages
132
############
143

154
# Logs and Databases
@@ -20,10 +9,13 @@
209
######################
2110
*.swp
2211

23-
# Build directory
12+
# Build directories
2413
######################
25-
build/
26-
build-*/
14+
esp32/build/*
15+
esp32/build-PYBYTES/*
16+
mpy-cross/build/*
17+
# This map file is generated here instead of the build folder...
18+
mpy-cross/*.map
2719

2820
# Test failure outputs
2921
######################

esp32/frozen/LTE/sqnsupgrade.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ def return_code(self, rsp, debug=False):
129129

130130

131131
def wait_for_modem(self, send=True, expected=b'OK', echo_char=None):
132+
self.__serial.read()
132133
rsp = b''
133134
start = time.time()
134135
while True:
@@ -339,13 +340,14 @@ def __get_wait_msg(self, load_fff=True):
339340

340341

341342

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):
343+
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, force_fff=False):
343344
self.__wait_msg = False
344345
mirror = True if atneg_only else mirror
345346
recover = True if atneg_only else load_ffh
346347
resume = True if mirror or recover or atneg_only or info_only else resume
347348
verbose = True if debug else verbose
348349
load_fff = False if bootrom and switch_ffh else load_fff
350+
load_fff = True if force_fff else load_fff
349351
target_baudrate = baudrate
350352
baudrate = self.__modem_speed if self.__speed_detected else baudrate
351353
if debug: print('mirror? {} recover? {} resume? {} direct? {} atneg_only? {} bootrom? {} load_fff? {}'.format(mirror, recover, resume, direct, atneg_only, bootrom, load_fff))
@@ -410,9 +412,9 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
410412
reconnect_uart()
411413
return False
412414
if blobsize > 4194304:
413-
if load_fff:
415+
if load_fff and not force_fff:
414416
print("Firmware file is too big to load via FFF method. Using ON_THE_FLY")
415-
load_fff = False
417+
load_fff = False
416418
blob = open(file_path, "rb")
417419

418420
if not load_ffh:
@@ -550,7 +552,8 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
550552
raise OSError("Invalid answer '%s' from the device" % response)
551553
try:
552554
blob.close()
553-
except:
555+
except Exception as ex:
556+
if debug: print('Exception: {}'.format(ex))
554557
pass
555558

556559
self.__serial.read()
@@ -595,7 +598,8 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
595598
if start == True:
596599
try:
597600
blob.close()
598-
except:
601+
except Exception as ex:
602+
if debug: print('Exception: {}'.format(ex))
599603
pass
600604
self.__serial.read()
601605
if switch_ffh:
@@ -612,15 +616,18 @@ def __run(self, file_path=None, baudrate=921600, port=None, resume=False, load_f
612616
else:
613617
try:
614618
blob.close()
615-
except:
619+
except Exception as ex:
620+
if debug: print('Exception: {}'.format(ex))
616621
pass
617622
print('Code download failed[1], aborting!')
618623
return False
619624
except Exception as ex:
620625
try:
621626
blob.close()
622-
except:
627+
except Exception as ex:
628+
if debug: print('Exception: {}'.format(ex))
623629
pass
630+
624631
print('Exception: {}'.format(ex))
625632
print('Code download failed [2], aborting!')
626633
abort = True
@@ -870,7 +877,7 @@ def success_message(self, port=None, verbose=False, debug=False):
870877
print("Here is the current firmware version:\n")
871878
self.show_info(port=port, verbose=verbose, debug=debug)
872879

873-
def upgrade(self, ffile, mfile=None, baudrate=921600, retry=False, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True, load_only=False, mtools=False):
880+
def upgrade(self, ffile, mfile=None, baudrate=921600, retry=False, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True, load_only=False, mtools=False, force_fff=False):
874881
success = True
875882
if not retry and mfile is not None:
876883
if resume or self.__check_br(br_only=True, verbose=verbose, debug=debug):
@@ -895,7 +902,7 @@ def upgrade(self, ffile, mfile=None, baudrate=921600, retry=False, resume=False,
895902
print('Unable to upgrade bootrom.')
896903
if debug: print('Success2? {}'.format(success))
897904
if success:
898-
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):
905+
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, force_fff=force_fff):
899906
if self.__check_br(verbose=verbose, debug=debug):
900907
success = self.__run(bootrom=True, debug=debug, direct=False, pkgdebug=pkgdebug, verbose=verbose, load_fff=True)
901908
self.success_message(verbose=verbose, debug=debug)
@@ -942,13 +949,13 @@ def upgrade_uart(self, ffh_mode=False, mfile=None, retry=False, resume=False, co
942949
def show_info(self, port=None, debug=False, verbose=False, fc=False):
943950
self.__run(port=port, debug=debug, info_only=True, verbose=verbose, fc=fc)
944951

945-
def upgrade_ext(self, port, ffile, mfile, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True, fc=False):
952+
def upgrade_ext(self, port, ffile, mfile, resume=False, debug=False, pkgdebug=False, verbose=False, load_fff=True, fc=False, force_fff=False):
946953
success = True
947954
if mfile is not None:
948955
success = False
949956
success = self.__run(file_path=mfile, load_ffh=True, port=port, debug=debug, pkgdebug=pkgdebug, verbose=verbose, fc=fc)
950957
if success:
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):
958+
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, force_fff=force_fff):
952959
self.success_message(port=port, verbose=verbose, debug=debug)
953960
else:
954961
print('Unable to load updater from {}'.format(mfile))
@@ -984,7 +991,7 @@ def load(mfile, baudrate=921600, verbose=False, debug=False, hangup=False):
984991
print('Modem must be in recovery mode!')
985992
reconnect_uart()
986993

987-
def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff=True, hangup=True):
994+
def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff=True, hangup=True, force_fff=False):
988995
print_welcome()
989996
retry = False
990997
resume = False
@@ -1008,7 +1015,7 @@ def run(ffile, mfile=None, baudrate=921600, verbose=False, debug=False, load_fff
10081015
mtools = True
10091016
elif state == -1:
10101017
detect_error()
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)
1018+
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, force_fff=force_fff)
10121019
reconnect_uart()
10131020
return success
10141021

@@ -1072,11 +1079,11 @@ def state(verbose=False, debug=False, retry=5, hangup=False):
10721079
return sqnup.detect_modem_state(debug=debug, hangup=hangup, retry=retry)
10731080

10741081
else:
1075-
def run(port, ffile, mfile=None, resume=False, debug=False, verbose=False, load_fff=True, fc=False):
1082+
def run(port, ffile, mfile=None, resume=False, debug=False, verbose=False, load_fff=True, fc=False, force_fff=False):
10761083
print_welcome()
10771084
sqnup = sqnsupgrade()
10781085
if sqnup.check_files(ffile, mfile, debug):
1079-
sqnup.upgrade_ext(port=port, ffile=ffile, mfile=mfile, resume=resume, debug=debug, pkgdebug=False, verbose=verbose, load_fff=load_fff)
1086+
sqnup.upgrade_ext(port=port, ffile=ffile, mfile=mfile, resume=resume, debug=debug, pkgdebug=False, verbose=verbose, load_fff=load_fff, force_fff=force_fff)
10801087

10811088
def version(port, verbose=False, debug=False, fc=False):
10821089
sqnup = sqnsupgrade()

esp32/frozen/Pybytes/_OTA.py

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@
1010
except:
1111
from _pybytes_debug import print_debug
1212

13+
try:
14+
from pybytes_constants import constants
15+
except:
16+
from _pybytes_constants import constants
17+
18+
try:
19+
import urequest
20+
except:
21+
import _urequest as urequest
22+
1323
import network
1424
import socket
1525
import ssl
@@ -22,11 +32,6 @@
2232
import os
2333
from binascii import hexlify
2434

25-
try:
26-
from pybytes_debug import print_debug
27-
except:
28-
from _pybytes_debug import print_debug
29-
3035
# Try to get version number
3136
# try:
3237
# from OTA_VERSION import VERSION
@@ -44,6 +49,9 @@ def connect(self):
4449
def get_data(self, req, dest_path=None, hash=False):
4550
raise NotImplementedError()
4651

52+
def update_device_network_config(self, fcota, config):
53+
raise NotImplementedError()
54+
4755
# OTA methods
4856

4957
def get_current_version(self):
@@ -287,3 +295,47 @@ def get_data(self, req, dest_path=None, hash=False, firmware=False):
287295
return bytes(content)
288296
elif hash:
289297
return hash_val
298+
299+
def update_device_network_config(self, fcota, config):
300+
targetURL = '{}://{}/device/networks/{}'.format(
301+
constants.__DEFAULT_PYCONFIG_PROTOCOL, constants.__DEFAULT_PYCONFIG_DOMAIN, config['device_id']
302+
)
303+
print_debug(6, "request device update URL: {}".format(targetURL))
304+
try:
305+
pybytes_activation = urequest.get(targetURL, headers={'content-type': 'application/json'})
306+
responseDetails = pybytes_activation.json()
307+
pybytes_activation.close()
308+
print_debug(6, "Response Details: {}".format(responseDetails))
309+
self.update_network_config(responseDetails, fcota, config)
310+
machine.reset()
311+
except Exception as ex:
312+
print_debug(1, "error while calling {}!: {}".format(targetURL, ex))
313+
314+
def update_network_config(self, letResp, fcota, config):
315+
try:
316+
if 'networkConfig' in letResp:
317+
netConf = letResp['networkConfig']
318+
config['network_preferences'] = netConf['networkPreferences']
319+
if 'wifi' in netConf:
320+
config['wifi'] = netConf['wifi']
321+
elif 'wifi' in config:
322+
del config['wifi']
323+
324+
if 'lte' in netConf:
325+
config['lte'] = netConf['lte']
326+
elif 'lte' in config:
327+
del config['lte']
328+
329+
if 'lora' in netConf:
330+
config['lora'] = {
331+
'otaa': netConf['lora']['otaa'],
332+
'abp': netConf['lora']['abp']
333+
}
334+
elif 'lora' in config:
335+
del config['lora']
336+
337+
json_string = ujson.dumps(config)
338+
print_debug(1, "update_network_config : {}".format(json_string))
339+
fcota.update_file_content('/flash/pybytes_config.json', json_string)
340+
except Exception as e:
341+
print_debug(1, "error while updating network config pybytes_config.json! {}".format(e))

esp32/frozen/Pybytes/_pybytes.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def connect_lora_abp(self, timeout, nanogateway=False):
9999
self.__check_init()
100100
return self.__pybytes_connection.connect_lora_abp(timeout, nanogateway)
101101

102-
def connect_lora_otta(self, timeout=15, nanogateway=False):
102+
def connect_lora_otta(self, timeout=120, nanogateway=False):
103103
self.__check_init()
104104
return self.__pybytes_connection.connect_lora_otta(timeout, nanogateway)
105105

@@ -213,7 +213,7 @@ def isconnected(self):
213213

214214
def connect(self):
215215
try:
216-
lora_joining_timeout = 15 # seconds to wait for LoRa joining
216+
lora_joining_timeout = 120 # seconds to wait for LoRa joining
217217
if self.__config_updated:
218218
if self.__check_config():
219219
try:
@@ -228,6 +228,7 @@ def connect(self):
228228
print("network_preferences are empty, set it up in /flash/pybytes_config.json first") # noqa
229229

230230
for net in self.__conf['network_preferences']:
231+
print_debug(3,'Attempting to connect with network {}'.format(net))
231232
if net == 'lte' or net == 'nbiot':
232233
if self.connect_lte():
233234
break

0 commit comments

Comments
 (0)