# # 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.pet = system.Pet(self.config_manager, self.logger) 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.config_manager, 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.pet, instance.display_driver, instance.display, instance.input_controller, instance.ui, instance.power) app.run() # # End Of File (EOF) #