#!/usr/bin/python3

# The entry point for the application. Creates the controller and handles
# high-level config e.g. debug level etc. Note the log level can be
# customised by pass an integer on the command line:
#
# Level     Value
# CRITICAL  50
# ERROR     40
# WARNING   30
# INFO      20
# DEBUG     10
# NOTSET    0

import signal
from ptcommon.logger import PTLogger
from ptdm_controller import Controller
from os import environ
from argparse import ArgumentParser

# Set the display env var
environ["DISPLAY"] = ":0.0"

# Create the controller
controller = Controller()


def signal_handler(signal, frame):
    controller.stop()

# Capture and handle interrupts
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

# Process command line
parser = ArgumentParser(description="pi-top hardware manager")
parser.add_argument("--no-journal", help="output to stdout not the journal", action="store_true")
parser.add_argument("--log-level", type=int, help="set the logging level from 10 (more verbose) to 50 (less verbose)", default=20)
args = parser.parse_args()

PTLogger.setup_logging("pt-device-manager", args.log_level, args.no_journal is False)

# Start the controller

controller.initialise()
controller.start()
