forked from j3d1/fiatlux
add minimal OTA Update CLI
This commit is contained in:
parent
8874fecf15
commit
09452ef7ab
2 changed files with 45 additions and 0 deletions
|
@ -27,6 +27,7 @@ git submodule update --init --recursive
|
|||
- ncurses-dev libexpat-dev
|
||||
- python3 python3-serial python-dev
|
||||
|
||||
- pip install websocket-client (for otaflash.py, optional)
|
||||
|
||||
### Build Steps
|
||||
|
||||
|
|
44
firmware/otaflash.py
Executable file
44
firmware/otaflash.py
Executable file
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import time
|
||||
import websocket
|
||||
import argparse
|
||||
import zlib
|
||||
|
||||
parser = argparse.ArgumentParser(description='Update fiatlux firmware via websocket.')
|
||||
parser.add_argument("binfile")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.binfile, "rb") as f:
|
||||
try:
|
||||
ws = websocket.WebSocket()
|
||||
ws.connect("ws://172.16.0.1")
|
||||
i = 0
|
||||
rolling = 0
|
||||
total = 0
|
||||
while True:
|
||||
bytes = f.read(512)
|
||||
rolling = zlib.crc32(bytes, rolling)
|
||||
total += len(bytes)
|
||||
msg = b'F\x00\x00\x00'
|
||||
msg += i.to_bytes(2, 'big')
|
||||
msg += len(bytes).to_bytes(2, 'big')
|
||||
msg += (zlib.crc32(bytes) & 0xffffffff).to_bytes(4, 'big')
|
||||
msg += bytes
|
||||
ws.send(msg)
|
||||
reply = ws.recv()
|
||||
time.sleep(0.05)
|
||||
i += 1
|
||||
if len(bytes) != 512:
|
||||
break
|
||||
msg = b'C\x00\x00\x00'
|
||||
msg += total.to_bytes(4, 'big')
|
||||
msg += rolling.to_bytes(4, 'big')
|
||||
ws.send(msg)
|
||||
print(ws.recv())
|
||||
ws.close()
|
||||
except ConnectionResetError:
|
||||
pass
|
||||
except KeyboardInterrupt:
|
||||
pass
|
Loading…
Reference in a new issue