# The MIT License (MIT)

# Copyright (c) 2021 Tom J. Sun

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
import machine
from pmu import axp192
from context import Context
from login import Login
from home import Home
import settings

pmu = axp192()

# Enable power management so that if power button is held down 6 secs,
# it shuts off as expected
pmu.enablePMICSleepMode(True)

ctx = Context()

ctx.display.flash_text(settings.load('splash', ( 'Krux' ), strip=False))

while True:
    if not Login(ctx).run():
        break

    if not Home(ctx).run():
        break

ctx.display.flash_text(( 'Shutting down..' ))

ctx.clear()

pmu.setEnterSleepMode()
machine.reset()

[((29, 6, 29, 14), 'pmu.axp192', 'axp192', ({}, {}), '()', False, 'from pmu import axp192\n'), ((35, 6, 35, 15), 'context.Context', 'Context', ({}, {}), '()', False, 'from context import Context\n'), ((51, 0, 51, 15), 'machine.reset', 'machine.reset', ({}, {}), '()', False, 'import machine\n'), ((37, 23, 37, 71), 'settings.load', 'settings.load', (), '', False, 'import settings\n'), ((40, 11, 40, 21), 'login.Login', 'Login', ({(40, 17, 40, 20): 'ctx'}, {}), '(ctx)', False, 'from login import Login\n'), ((43, 11, 43, 20), 'home.Home', 'Home', ({(43, 16, 43, 19): 'ctx'}, {}), '(ctx)', False, 'from home import Home\n')]