|
import json5
|
|
|
|
|
|
class Config:
|
|
watchdog_address: int = 0x10007000
|
|
uart_base: int = 0x11002000
|
|
payload_address: int = 0x100A00
|
|
var_0: int = None
|
|
var_1: int = 0xA
|
|
payload: str
|
|
crash_method: int = 0
|
|
ptr_usbdl: int = None
|
|
ptr_da: int = None
|
|
|
|
def default(self, hw_code):
|
|
config = open("default_config.json5")
|
|
self.from_file(config, hw_code)
|
|
config.close()
|
|
|
|
return self
|
|
|
|
def from_file(self, config, hw_code):
|
|
hw_code = hex(hw_code)
|
|
|
|
config = json5.load(config)
|
|
|
|
if hw_code in config:
|
|
self.from_dict(config[hw_code])
|
|
else:
|
|
raise NotImplementedError("Can't find {} hw_code in config".format(hw_code))
|
|
|
|
return self
|
|
|
|
def from_dict(self, entry):
|
|
if "watchdog_address" in entry:
|
|
self.watchdog_address = entry["watchdog_address"]
|
|
|
|
if "uart_base" in entry:
|
|
self.uart_base = entry["uart_base"]
|
|
|
|
if "payload_address" in entry:
|
|
self.payload_address = entry["payload_address"]
|
|
|
|
if "var_0" in entry:
|
|
self.var_0 = entry["var_0"]
|
|
|
|
if "var_1" in entry:
|
|
self.var_1 = entry["var_1"]
|
|
|
|
if "crash_method" in entry:
|
|
self.crash_method = entry["crash_method"]
|
|
|
|
if "ptr_usbdl" in entry:
|
|
self.ptr_usbdl = entry["ptr_usbdl"]
|
|
|
|
if "ptr_da" in entry:
|
|
self.ptr_da = entry["ptr_da"]
|
|
|
|
self.payload = entry["payload"]
|
|
|
|
return self
|
|
|