8000 MicroPython 1.20.0.rc4 and Pybytes 0.9.4 · pycom/pycom-micropython-sigfox@978c9bb · GitHub
[go: up one dir, main page]

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

Commit 978c9bb

Browse files
Xykonrobert-hh
andcommitted
MicroPython 1.20.0.rc4 and Pybytes 0.9.4
mods/modusocket: use getaddrinfo() instead of n_gethostbyname() in mod_usocket_getaddrinfo() mods/machrtc: Add optional parameter backup_server to specify two NTP servers Updates provided by robert-hh: help: Simplify and extend help() mods/machspi.c: Fix the bug in spi.read() Update IDF libraries to pycom-esp-idf/idf_v3.1 ebff2ed Fix typo in get_idf_libs.py Co-Authored-By: robert-hh <robert-hh@users.noreply.github.com>
1 parent 34c3d66 commit 978c9bb

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+181
-61
lines changed
136 Bytes
Binary file not shown.

esp32/bootloader/lib/liblog.a

8 Bytes
Binary file not shown.

esp32/bootloader/lib/libmicro-ecc.a

4 Bytes
Binary file not shown.

esp32/bootloader/lib/libsoc.a

48 Bytes
Binary file not shown.

esp32/bootloader/lib/libspi_flash.a

4 Bytes
Binary file not shown.

esp32/frozen/LTE/sqnsupgrade.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -188,37 +188,32 @@ def __hangup_modem(self, delay, debug):
188188
self.__serial.read()
189189
if not self.__kill_ppp_ok:
190190
self.__serial.write(b"+++")
191-
time.sleep_ms(delay)
191+
time.sleep_ms(1150)
192192
resp = self.__serial.read()
193193
if debug: print('Response (+++ #1): {}'.format(resp))
194194
self.__check_resp(resp, True)
195195
self.__serial.write(b"AT\r\n")
196-
time.sleep_ms(delay)
196+
time.sleep_ms(250)
197197
resp = self.__serial.read()
198198
if debug: print('Response (AT #1) {}'.format(resp))
199199
self.__check_resp(resp)
200200
if resp is not None:
201201
if b'OK' not in resp and not self.__kill_ppp_ok:
202202
self.__serial.write(b"AT\r\n")
203-
time.sleep_ms(delay)
203+
time.sleep_ms(250)
204204
resp = self.__serial.read()
205205
if debug: print('Response (AT #2) {}'.format(resp))
206206
self.__check_resp(resp)
207207
if resp is not None and b'OK' in resp:
208208
return True
209209
self.__serial.write(b"+++")
210-
time.sleep_ms(delay)
210+
time.sleep_ms(1150)
211211
resp = self.__serial.read()
212212
if debug: print('Response (+++ #2): {}'.format(resp))
213213
self.__check_resp(resp, True)
214214
if resp is not None and b'OK' in resp:
215-
# self.__serial.write(b"ATH\r\n")
216-
# time.sleep_ms(delay)
217-
# resp = self.__serial.read()
218-
# if debug: print('Response (ATH #1) {}'.format(resp))
219-
# self.__check_resp(resp)
220215
self.__serial.write(b"AT\r\n")
221-
time.sleep_ms(delay)
216+
time.sleep_ms(250)
222217
resp = self.__serial.read()
223218
if debug: print('Response (AT #2) {}'.format(resp))
224219
self.__check_resp(resp)

esp32/frozen/Pybytes/_pybytes.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from machine import Timer
23
try:
34
from pybytes_protocol import PybytesProtocol
@@ -7,6 +8,10 @@
78
from pybytes_connection import PybytesConnection
89
except:
910
from _pybytes_connection import PybytesConnection
11+
try:
12+
from pybytes_debug import print_debug
13+
except:
14+
from _pybytes_debug import print_debug
1015

1116
__DEFAULT_HOST = "mqtt.pycom.io"
1217

@@ -27,25 +32,33 @@ class Pybytes:
2732

2833
def __init__(self, config):
2934
self.__conf = config
35+
self.__check_dump_ca()
3036
self.__frozen = globals().get('__name__') == '_pybytes'
3137
self.__pybytes_connection = PybytesConnection(self.__conf, self.__recv_message)
3238
self.__custom_message_callback = None
3339

3440
# START code from the old boot.py
3541
import machine
3642
import micropython
37-
import os
3843
from binascii import hexlify
3944

4045
wmac = hexlify(machine.unique_id()).decode('ascii')
4146
print("WMAC: %s" % wmac.upper())
4247
try:
4348
print("Firmware: %s\nPybytes: %s" % (os.uname().release, os.uname().pybytes))
4449
except:
45-
print("Firmware: %s [%s]" % os.uname().release)
50+
print("Firmware: %s" % os.uname().release)
4651
# print(micropython.mem_info())
4752
# STOP code from the old boot.py
4853

54+
def __check_dump_ca(self):
55+
ssl_params = self.__conf.get('ssl_params')
56+
if self.__conf.get('dump_ca', False) and ssl_params is not None:
57+
try:
58+
stat = os.stat(ssl_params.get('ca_certs', '/flash/cert/pycom-ca.pem'))
59+
except Exception as ex:
60+
self.dump_ca(ssl_params.get('ca_certs', '/flash/cert/pycom-ca.pem'))
61+
4962
def connect_wifi(self, reconnect=True, check_interval=0.5):
5063
return self.__pybytes_connection.connect_wifi(reconnect, check_interval)
5164

@@ -239,3 +252,22 @@ def export_config(self, file='/flash/pybytes_config.json'):
239252
print("Pybytes configuration exported to {}".format(file))
240253
except Exception as e:
241254
print("Error writing to file {}\nException: {}".format(file, e))
255+
256+
def enable_ssl(self, ca_file='/flash/cert/pycom-ca.pem', dump_ca = True):
257+
self.set_config('dump_ca', dump_ca, permanent=False)
258+
if ca_file is not None:
259+
self.set_config('ssl_params', {'ca_certs': ca_file}, permanent=False)
260+
self.set_config('ssl', True)
261+
262+
def dump_ca(self, ca_file='/flash/cert/pycom-ca.pem'):
263+
try:
264+
try:
265+
from _pybytes_ca import PYBYTES_CA
266+
except:
267+
from pybytes_ca import PYBYTES_CA
268+
f = open(ca_file, 'w')
269+
f.write(PYBYTES_CA)
270+
f.close()
271+
print("Successfully created {}".format(ca_file))
272+
except Exception as e:
273+
print("Error creating {}\nException: {}".format(file, e))

esp32/frozen/Pybytes/_pybytes_ca.py

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
PYBYTES_CA = """-----BEGIN CERTIFICATE-----
2+
MIIGnTCCBYWgAwIBAgISA3b4lLk2NubwPvU+nkbtPlWpMA0GCSqGSIb3DQEBCwUA
3+
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
4+
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA1MDcxNTA0MDhaFw0x
5+
ODA4MDUxNTA0MDhaMCMxITAfBgNVBAMTGHB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5p
6+
bzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMCDieKlQiREjtCCSfix
7+
41Jt5sSRDLkueZuV7Z4Hq1dqp+bU6ZMQdNkWoteHO2ZTt9LmsiWbE+FRIt9PsOcM
8+
M4v4biauJ4chTg3SBcaAA6VdX6pY3ETUCH/Sz7CXlBenVjnVGHUsyVdJF185I95i
9+
In+96WwePLXr+tcaI0lxkff9WFUXl0kMQ1G/xwiL7bjjYsBPDm/kJtvSEOd6AlTQ
10+
iTuHeK5V9QHs31gOPQxhxEBTUJE5Jm8w7u10WxAvTQzgliZJDDsOYvjg4hyoy4yK
11+
ZDEK8LJ8rgb6wIY1TdqQip2bNgv6DLhSNz5i33DgjhXRYEXiQkvtJbtYF1umx581
12+
JckCAwEAAaOCA6IwggOeMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEF
13+
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUmpYy+thsOVlN
14+
H5LbIaHCiJ445MIwHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYI
15+
KwYBBQUHAQEEYzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0
16+
c2VuY3J5cHQub3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0
17+
c2VuY3J5cHQub3JnLzCBpAYDVR0RBIGcMIGZghxhcGkucHlieXRlcy1zdGFnaW5n
18+
LnB5Y29tLmlvgh1tcXR0LnB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5pb4IfcHlhdXRo
19+
LnB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5pb4IfcHliaWxsLnB5Ynl0ZXMtc3RhZ2lu
20+
Zy5weWNvbS5pb4IYcHlieXRlcy1zdGFnaW5nLnB5Y29tLmlvMIH+BgNVHSAEgfYw
21+
gfMwCAYGZ4EMAQIBMIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0
22+
cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBD
23+
ZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBh
24+
cnRpZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0
25+
ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3Np
26+
dG9 10000 yeS8wggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgDbdK/uyynssf7KPnFtLOW5
27+
qrs294Rxg8ddnU83th+/ZAAAAWM7WIwtAAAEAwBHMEUCIFO9bdPIus2/A+bhyCYJ
28+
cff90BleBnbnAnfKejQRzw1hAiEAnRdZTFldte+TyLHOYElw4gFpAyPub4AO23S2
29+
HL3y3TMAdgApPFGWVMg5ZbqqUPxYB9S3b79Yeily3KTDDPTlRUf0eAAAAWM7WIw6
30+
AAAEAwBHMEUCIQDvU06t24rrMpfoIF/xCSG5rApExjlsuMA8kAmM2RFsfAIgKckY
31+
46YiHt15bWJc5SBiwLLXsuffSgQTJrCbGggekFEwDQYJKoZIhvcNAQELBQADggEB
32+
ABgGRT2VTT2KuyCEn8T0MpBKlpDoSvzneMPjxevAfRvqVUIteyc3u/0yXhmnuWJo
33+
SKFic6r9wX1tGlN6aGNGx4qp7Dtgc0NPQ84w6h/oVZPUyVS0bOu5/xHm3zLYWWHZ
34+
3N0cVos2ga1f4lyTr6kaOTsrI9bx0HUP9KWFPgl1vV8HrdTljT/IKkvY3s4X60vS
35+
0Tf5MyJOvAxuwEoJkNWke2GgVEpA17p/ZClQMMH3Vxy9NX/7m6L6rPqRSqe8ewmB
36+
nXny+jHmL2ii8xcPfU14Gn59FtFxngc1+mPjlHHqRdUFgZ9T40kKMMIBrvGohAtp
37+
PV/QhEH4ec1uPntPUgfZz7E=
38+
-----END CERTIFICATE-----
39+
-----BEGIN CERTIFICATE-----
40+
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
41+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
42+
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
43+
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
44+
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
45+
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
46+
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
47+
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
48+
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
49+
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
50+
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
51+
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
52+
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
53+
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
54+
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
55+
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
56+
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
57+
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
58+
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
59+
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
60+
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
61+
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
62+
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
63+
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
64+
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
65+
-----END CERTIFICATE-----
66+
-----BEGIN CERTIFICATE-----
67+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
68+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
69+
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
70+
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
71+
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
72+
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
73+
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
74+
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
75+
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
76+
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
77+
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
78+
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
79+
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
80+
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
81+
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
82+
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
83+
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
84+
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
85+
-----END CERTIFICATE-----
86+
"""

esp32/frozen/Pybytes/_pybytes_config.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ def read_config(self, file='/flash/pybytes_config.json'):
5252
sigfox_config = None
5353
pybytes_autostart = True
5454
wlan_antenna = 0
55+
ssl = False
56+
dump_ca = False
57+
ssl_params = None
58+
5559
try:
5660
extra_preferences = pycom.pybytes_extra_preferences().split(':')
5761
for extra_preference in extra_preferences:
@@ -80,6 +84,16 @@ def read_config(self, file='/flash/pybytes_config.json'):
8084
pybytes_autostart = False
8185
elif extra_preference == "ext_ant":
8286
wlan_antenna = 1
87+
elif extra_preference == "ssl":
88+
ssl = True
89+
elif extra_preference == "ca_certs":
90+
index = extra_preferences.index(extra_preference)
91+
if len(extra_preferences[index + 1]) > 0:
92+
ssl_params = { "ssl_params": {"ca_certs": extra_preferences[index + 1] }}
93+
else:
94+
ssl_params = { "ssl_params": {"ca_certs": '/flash/cert/pycom-ca.pem' }}
95+
elif extra_preference == "dump_ca":
96+
dump_ca = True
8397
elif extra_preference == "sigfox":
8498
index = extra_preferences.index(extra_preference)
8599
if len(extra_preferences[index + 1]) > 0 and extra_preferences[index + 1].isdigit():
@@ -131,14 +145,18 @@ def read_config(self, file='/flash/pybytes_config.json'):
131145
'port': 443
132146
},
133147
'pybytes_autostart': pybytes_autostart,
134-
'wlan_antenna': wlan_antenna
148+
'wlan_antenna': wlan_antenna,
149+
'ssl': ssl,
150+
'dump_ca': dump_ca
135151
}
136152
if lora_config is not None:
137153
pybytes_config.update(lora_config)
138154
if lte_config is not None:
139155
pybytes_config.update(lte_config)
140156
if sigfox_config is not None:
141157
pybytes_config.update(sigfox_config)
158+
if ssl_params is not None:
159+
pybytes_config.update(ssl_params)
142160
if (len(pybytes_config['username']) > 4 and len(pybytes_config['device_id']) >= 36 and len(pybytes_config['server']) > 4):
143161
pybytes_config['cfg_msg'] = "Using configuration from config block, written with FW updater"
144162
try:

esp32/frozen/Pybytes/_pybytes_connection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ def connect_lora_abp(self, lora_timeout, nanogateway):
169169
print("This device does not support LoRa connections: %s" % ex)
170170
return False
171171

172-
self.lora.nvram_restore()
173172
self.lora = LoRa(mode=LoRa.LORAWAN)
173+
self.lora.nvram_restore()
174174

175175
dev_addr = self.__conf['lora']['abp']['dev_addr']
176176
nwk_swkey = self.__conf['lora']['abp']['nwk_skey']
@@ -218,8 +218,8 @@ def connect_lora_otta(self, lora_timeout, nanogateway):
218218
app_key = self.__conf['lora']['otaa']['app_key']
219219
timeout_ms = self.__conf.get('lora_timeout',lora_timeout) * 1000
220220

221-
self.lora.nvram_restore()
222221
self.lora = LoRa(mode=LoRa.LORAWAN)
222+
self.lora.nvram_restore()
223223

224224
dev_eui = binascii.unhexlify(dev_eui.replace(' ', ''))
225225
app_eui = binascii.unhexlify(app_eui.replace(' ', ''))

0 commit comments

Comments
 (0)
0