mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-04-21 19:05:06 +00:00
Add developer mode
This commit is contained in:
parent
ab94aedd91
commit
278117139e
77
device.py
77
device.py
@ -12,6 +12,8 @@ else:
|
|||||||
shell_color_orange = "\033[93m"
|
shell_color_orange = "\033[93m"
|
||||||
shell_color_reset = "\033[m"
|
shell_color_reset = "\033[m"
|
||||||
|
|
||||||
|
devices_directory = "Boards"
|
||||||
|
|
||||||
def print_warning(message):
|
def print_warning(message):
|
||||||
print(f"{shell_color_orange}WARNING: {message}{shell_color_reset}")
|
print(f"{shell_color_orange}WARNING: {message}{shell_color_reset}")
|
||||||
|
|
||||||
@ -23,13 +25,14 @@ def exit_with_error(message):
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def print_help():
|
def print_help():
|
||||||
print("Usage: python device.py [device_id]\n\n")
|
print("Usage: python device.py [device_id] [arguments]\n\n")
|
||||||
print("\t[device_id] the device identifier (folder name in Boards/)")
|
print(f"\t[device_id] the device identifier (folder name in {devices_directory}/)")
|
||||||
|
print("\n")
|
||||||
|
print("Optional arguments:\n")
|
||||||
|
print("\t--dev developer options (limit to 4MB partition table)")
|
||||||
|
|
||||||
def list_devices():
|
def get_properties_file_path(device_id: str):
|
||||||
boards = os.listdir("Boards")
|
return os.path.join(devices_directory, device_id, "device.properties")
|
||||||
boards.remove("simulator")
|
|
||||||
return boards
|
|
||||||
|
|
||||||
def read_file(path: str):
|
def read_file(path: str):
|
||||||
with open(path, "r") as file:
|
with open(path, "r") as file:
|
||||||
@ -43,7 +46,7 @@ def read_properties_file(path):
|
|||||||
return config
|
return config
|
||||||
|
|
||||||
def read_device_properties(device_id):
|
def read_device_properties(device_id):
|
||||||
device_file_path = os.path.join("Boards", device_id, "device.properties")
|
device_file_path = get_properties_file_path(device_id)
|
||||||
if not os.path.isfile(device_file_path):
|
if not os.path.isfile(device_file_path):
|
||||||
exit_with_error(f"Device file not found: {device_file_path}")
|
exit_with_error(f"Device file not found: {device_file_path}")
|
||||||
return read_properties_file(device_file_path)
|
return read_properties_file(device_file_path)
|
||||||
@ -73,11 +76,14 @@ def write_defaults(output_file):
|
|||||||
default_properties = read_file("Buildscripts/sdkconfig/default.properties")
|
default_properties = read_file("Buildscripts/sdkconfig/default.properties")
|
||||||
output_file.write(default_properties)
|
output_file.write(default_properties)
|
||||||
|
|
||||||
def write_partition_table(output_file, device_properties: ConfigParser):
|
def write_partition_table(output_file, device_properties: ConfigParser, is_dev: bool):
|
||||||
flash_size = get_property_or_exit(device_properties, "hardware", "flashSize")
|
if is_dev:
|
||||||
if not flash_size.endswith("MB"):
|
flash_size_number = 4
|
||||||
exit_with_error("Flash size should be written as xMB or xxMB (e.g. 4MB, 16MB)")
|
else:
|
||||||
flash_size_number = flash_size[:-2]
|
flash_size = get_property_or_exit(device_properties, "hardware", "flashSize")
|
||||||
|
if not flash_size.endswith("MB"):
|
||||||
|
exit_with_error("Flash size should be written as xMB or xxMB (e.g. 4MB, 16MB)")
|
||||||
|
flash_size_number = flash_size[:-2]
|
||||||
output_file.write("# Partition Table\n")
|
output_file.write("# Partition Table\n")
|
||||||
output_file.write("CONFIG_PARTITION_TABLE_CUSTOM=y\n")
|
output_file.write("CONFIG_PARTITION_TABLE_CUSTOM=y\n")
|
||||||
output_file.write(f"CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions-{flash_size_number}mb.csv\"\n")
|
output_file.write(f"CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions-{flash_size_number}mb.csv\"\n")
|
||||||
@ -146,6 +152,12 @@ def write_spiram_variables(output_file, device_properties: ConfigParser):
|
|||||||
# Boot speed optimization
|
# Boot speed optimization
|
||||||
output_file.write("CONFIG_SPIRAM_MEMTEST=n\n")
|
output_file.write("CONFIG_SPIRAM_MEMTEST=n\n")
|
||||||
|
|
||||||
|
def write_rgb_display_glitch_fix(output_file, device_properties: ConfigParser):
|
||||||
|
enabled = get_boolean_property_or_false(device_properties, "hardware", "fixRgbDisplayGlitch")
|
||||||
|
if enabled:
|
||||||
|
output_file.write("# Fixes glitches in the display driver when rendering new screens/apps\n")
|
||||||
|
output_file.write("CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y\n")
|
||||||
|
|
||||||
def write_lvgl_variables(output_file, device_properties: ConfigParser):
|
def write_lvgl_variables(output_file, device_properties: ConfigParser):
|
||||||
dpi = get_property_or_exit(device_properties, "display", "dpi")
|
dpi = get_property_or_exit(device_properties, "display", "dpi")
|
||||||
output_file.write("# LVGL\n")
|
output_file.write("# LVGL\n")
|
||||||
@ -190,45 +202,38 @@ def write_custom_sdkconfig(output_file, device_properties: ConfigParser):
|
|||||||
value = section[key].replace("\"", "\\\"")
|
value = section[key].replace("\"", "\\\"")
|
||||||
output_file.write(f"{key.upper()}={value}\n")
|
output_file.write(f"{key.upper()}={value}\n")
|
||||||
|
|
||||||
def write_rgb_display_glitch_fix(output_file, device_properties: ConfigParser):
|
def write_properties(output_file, device_properties: ConfigParser, device_id: str, is_dev: bool):
|
||||||
enabled = get_boolean_property_or_false(device_properties, "hardware", "fixRgbDisplayGlitch")
|
|
||||||
if enabled:
|
|
||||||
output_file.write("# Fixes glitches in the display driver when rendering new screens/apps\n")
|
|
||||||
output_file.write("CONFIG_ESP32S3_DATA_CACHE_LINE_64B=y\n")
|
|
||||||
|
|
||||||
def write_properties(output_file, device_properties: ConfigParser, device_id: str):
|
|
||||||
write_defaults(output_file)
|
write_defaults(output_file)
|
||||||
output_file.write("\n\n")
|
output_file.write("\n\n")
|
||||||
write_partition_table(output_file, device_properties)
|
write_partition_table(output_file, device_properties, is_dev)
|
||||||
write_tactility_variables(output_file, device_properties, device_id)
|
write_tactility_variables(output_file, device_properties, device_id)
|
||||||
write_target_variables(output_file, device_properties)
|
write_target_variables(output_file, device_properties)
|
||||||
write_flash_variables(output_file, device_properties)
|
write_flash_variables(output_file, device_properties)
|
||||||
write_spiram_variables(output_file, device_properties)
|
write_spiram_variables(output_file, device_properties)
|
||||||
|
write_rgb_display_glitch_fix(output_file, device_properties)
|
||||||
write_lvgl_variables(output_file, device_properties)
|
write_lvgl_variables(output_file, device_properties)
|
||||||
write_iram_fix(output_file, device_properties)
|
write_iram_fix(output_file, device_properties)
|
||||||
write_usb_variables(output_file, device_properties)
|
write_usb_variables(output_file, device_properties)
|
||||||
write_custom_sdkconfig(output_file, device_properties)
|
write_custom_sdkconfig(output_file, device_properties)
|
||||||
write_rgb_display_glitch_fix(output_file, device_properties)
|
|
||||||
|
|
||||||
def main(device_id: str):
|
def main(device_id: str, is_dev: bool):
|
||||||
devices = list_devices()
|
device_properties_path = get_properties_file_path(device_id)
|
||||||
# if device_id not in devices:
|
if not os.path.isfile(device_properties_path):
|
||||||
# exit_with_error(f"{device_id} is not a valid device identifier")
|
exit_with_error(f"{device_id} is not a valid device identifier (could not found {device_properties_path})")
|
||||||
for device_id in devices:
|
output_file_path = "sdkconfig"
|
||||||
print(device_id)
|
if os.path.isfile(output_file_path):
|
||||||
output_file_path = f"sdkconfig.board.{device_id}"
|
os.remove(output_file_path)
|
||||||
if os.path.isfile(output_file_path):
|
device_properties = read_device_properties(device_id)
|
||||||
os.remove(output_file_path)
|
with open(output_file_path, "w") as output_file:
|
||||||
device_properties = read_device_properties(device_id)
|
write_properties(output_file, device_properties, device_id, is_dev)
|
||||||
with open(output_file_path, "w") as output_file:
|
output_file.close()
|
||||||
write_properties(output_file, device_properties, device_id)
|
|
||||||
output_file.close()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
if "--help" in sys.argv:
|
if "--help" in sys.argv:
|
||||||
print_help()
|
print_help()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
if len(sys.argv) != 2:
|
if len(sys.argv) < 2:
|
||||||
print_help()
|
print_help()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
main(sys.argv[1])
|
is_dev = "--dev" in sys.argv
|
||||||
|
main(sys.argv[1], is_dev)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user