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

# 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()