84 lines
No EOL
2.2 KiB
Python
84 lines
No EOL
2.2 KiB
Python
#
|
|
# Petcard Bootloader - v1.0
|
|
# Copyright (c) 2025 FreedTapestry21
|
|
#
|
|
# Licensed under the MIT license
|
|
#
|
|
|
|
#
|
|
# Importing libraries
|
|
#
|
|
|
|
from machine import Pin
|
|
import time
|
|
|
|
#
|
|
# Define global variables
|
|
#
|
|
|
|
CONSOLE_WELCOME = """
|
|
Petcard Bootloader - v1.0
|
|
Copyright (c) 2025 FreedTapestry21
|
|
|
|
Licensed under the MIT license
|
|
"""
|
|
|
|
# Initialize OK button (with pull down resistor)
|
|
ok = Pin(1, Pin.IN, Pin.PULL_DOWN)
|
|
|
|
#
|
|
# Function(s)
|
|
#
|
|
|
|
def main():
|
|
# Check if a boot interuption was triggered (you can trigger this by holding down the OK button) and wait for 10 seconds
|
|
# In later revisions I'd like this to trigger some kind of update screen to easily update the Petcard
|
|
INTERUPT = False
|
|
if ok.value() == 1:
|
|
INTERUPT = True
|
|
|
|
if INTERUPT == True: return 1
|
|
else: return 0
|
|
|
|
#
|
|
# Classes
|
|
#
|
|
|
|
class Instance:
|
|
def __init__(self):
|
|
self.config_manager = system.ConfigurationManager()
|
|
self.logger = system.Logger(self.config_manager.config)
|
|
self.input_controller = system.InputController(self.config_manager.config["controls"], self.logger)
|
|
|
|
# Select display driver
|
|
if self.config_manager.config["display"] == "SSD1306":
|
|
self.display_driver = system.SSD1306Driver()
|
|
else:
|
|
self.logger.log(f"No available driver was found for display {self.config_manager.config['display']}!", 0)
|
|
self.display_driver = system.DisplayDriver() # DO NOT REMOVE
|
|
|
|
self.display = system.Display(self.display_driver, 128, 64, self.logger)
|
|
self.ui = system.UserInterface(self.display, self.input_controller, self.logger)
|
|
self.power = system.Power(self.display, self.input_controller, self.logger)
|
|
|
|
#
|
|
# Entry point
|
|
#
|
|
|
|
if __name__ == '__main__':
|
|
if main() == 1:
|
|
time.sleep(10)
|
|
machine.soft_reset()
|
|
print(CONSOLE_WELCOME)
|
|
print("Importing SYSTEM module...")
|
|
import system
|
|
print("Importing APP module...")
|
|
import petcard
|
|
print("Starting Petcard")
|
|
instance = Instance()
|
|
app = petcard.Application(instance.config_manager, instance.logger, instance.display_driver, instance.display, instance.input_controller, instance.ui, instance.power)
|
|
app.run()
|
|
|
|
#
|
|
# End Of File (EOF)
|
|
# |