def __init__(self): self.__obs = Observable() conf = Configuration() self.__rfid = RfidReader(conf.rfid.serialPort) self.__acceptor = CoinAcceptor(conf.coinAcceptor.serialPort, conf.coinAcceptor.inhibitPin, conf.coinMap) self.__memberService = MemberService(conf.db.username, conf.db.password, conf.db.hostname, conf.db.port, conf.db.database) self.__popMachine = PopMachine(conf.popMachine.relayPin) self.__webService = WebService(conf.web.bindAddress, conf.web.port) self.__acceptor.inhibit(True) self.__popCost = self.__popMachine.getPopCost() self.__obs.on("CardSwiped", self.__onCardRead) self.__obs.on("CoinAccepted", self.__onCoinAccepted) self.__obs.on("MemberNotFound", self.__onMemberNotFound) self.__obs.on("PopPaid", self.__onPopPaid) self.__obs.on("CreditCompleted", self.__onCreditCompleted) self.__creditOnlyPin = conf.general.creditOnlyPin GPIO.setup(self.__creditOnlyPin, GPIO.IN)