feat: fw library ++

main
Mikhail Yudin 2023-06-14 00:36:47 +07:00
rodzic f35486947e
commit 9232a29a1f
2 zmienionych plików z 16 dodań i 2 usunięć

9
fw.py
Wyświetl plik

@ -1,14 +1,19 @@
#!/usr/bin/env python3
from uvk5 import argv, eprint, Firmware
from uvk5 import UVK5, argv, eprint, Firmware
def main(path):
fw = Firmware.load(path)
argc = len(argv)
eprint('Version:', fw.version)
if len(argv) == 4 and argv[2] == 'mod':
if argc >= 4 and argv[2] == 'mod':
eprint('mods:', argv[3])
fw.apply_mods(argv[3].split(','))
fw.write()
if argc == 5:
with UVK5(argv[4]) as uvk5:
uvk5.get_version()
uvk5.send_firmware(fw)
if __name__ == '__main__':
main(argv[1])

Wyświetl plik

@ -170,6 +170,15 @@ class UVK5(Serial):
self.timestamp = i2b32(time())
super().__init__(port, 38400, timeout=5)
def send_firmware(self, fw:Firmware):
for block, data in enumerate(chunk(fw, UVK5.BLOCK_SIZE)):
offset = block * UVK5.BLOCK_SIZE
self.write_fw(offset, data)
exit(128)
def write_fw(self, offset, data):
eprint('FW write not implemented yet', offset, len(data))
def get_version(self):
return self.cmd(UVK5.CMD_VERSION_REQ)[1][:10].decode().rstrip('\x00')