#!/usr/bin/python3
import RPi.GPIO as GPIO
import statemachine, actor, pins, tysock, waker
from libtuer import logger
import argparse

# Parse arguments
parser = argparse.ArgumentParser(description='Run a door')
parser.add_argument("-d", "--debug",
					action="store_true", dest="debug",
					help="Don't send emails")
args = parser.parse_args()
if args.debug:
	import libtuer
	libtuer.mailAddress = []

# initialize GPIO stuff
GPIO.setmode(GPIO.BOARD)

# bring 'em all up
the_actor = actor.Actor()
the_machine = statemachine.StateMachine(the_actor)
the_socket = tysock.TySocket(the_machine)
the_pins = pins.PinsWatcher(the_machine)
the_waker = waker.Waker(the_machine)

# we do the socket accept thing in the main thread
try:
	the_socket.accept()
except KeyboardInterrupt:
	# this is what we waited for!
	logger.info("Got SIGINT, terminating...")
	pass

# bring 'em all down
the_waker.stop()
the_pins.stop()
the_machine.stop()
the_actor.stop()

# shutdown GPIO stuff
GPIO.cleanup()