Files
OpenEPaperLink/zbs243_AP_FW/packagebinaries.py
Nic Limper 28f8667baa Painter
- new paint option for freehand drawing and quick texts
- added gamma correction on rendering
- option to turn dither on/off on jpg upload
- python version for packagebinaries (same output as the php version)
2023-05-16 15:34:51 +02:00

58 lines
1.6 KiB
Python

import os
import json
types = {
0x00: "AP_FW_1.54.bin",
0x01: "AP_FW_2.9.bin",
0xF0: "AP_FW_Segmented_UK.bin",
0xFF: "AP_FW_Nodisplay.bin"
}
binpath = "../binaries/"
tocmaxsize = 512
toc = []
output = bytearray(tocmaxsize)
# Read version from main.c
with open("main.c") as file:
lines = file.readlines()
version_line = next(line for line in lines if "version" in line and "uint16_t" in line)
_, version = version_line.split("= 0x")
version = int(version.strip().split(";")[0], 16)
binaries = [file for file in os.listdir(binpath) if file.startswith("AP_FW") and not file.endswith("Pack")]
for file in binaries:
file = file.strip()
type_id = -1
for typeid, typefile in types.items():
if typefile == file:
type_id = typeid
break
if type_id == -1:
raise ValueError("We don't recognize filetype <{}>, sorry...".format(file))
with open(os.path.join(binpath, file), "rb") as binary_file:
binary = binary_file.read()
length = len(binary)
offset = len(output)
subarr = {
'type': type_id,
'version': version,
'name': file,
'offset': offset,
'length': length
}
toc.append(subarr)
output.extend(binary)
jtoc = json.dumps(toc)
tocsize = len(jtoc)
if tocsize > tocmaxsize:
raise ValueError("TOC is too big! Adjust size and try again.")
output[:len(jtoc)] = jtoc.encode()
with open(os.path.join(binpath, "AP_FW_Pack.bin"), "wb") as output_file:
output_file.write(bytes(output))
print(toc)
print("All done.")