import time from phoneinterface import PhoneInterface, PhoneEvent from apparatinterface import FeApPinConfiguration, FeApUserInterface from webinterface import FeTapWeb import configreader import statemachine FeTAp = """ ,ooFeTApFeTApFeTA%=+-,. ,+FeTAp+' `o,, ,oFeTAp+ `, ,ooo' ,oFeTApFeTAp o oo +FeTAp+' `oo, H o o' X o l ,@=@+ o ,,-+*==+-., R o .; ,@=@+ o o' ,/ 22 11 ``, E`ooooo' @@* @@ oo o' / 33 , ` ` , ; T @:n T:@ oo o ; 44 , . \ L uM:m A:K oFeTAp' ;55 , : ; A E:Rn N:t F, | ` : ; | H SC:h K:o e, ` 66 ` , dHHH C A:Ll L:s r, ` 77 `. , . 0 `q/ S ER:a P:U n, \ 88 99 00 ,' L R:Be i:M s `<,,______,-` sZ, E i:T E:r p, `sZ B S:K l:T r, A o:N H:a e, G t:a s:c c, ,x+x+' k:T:@:U:M:R:n; h, ,p+e+r+a+t/ `@:n:M:E:' `T=i=s=c=h=A=p/ """ controller = None def gabelschalter_cb(state): if state == 1: controller.queue_event('gabelschalter_up') else: controller.queue_event('gabelschalter_down') def nummernschalter_active_cb(): controller.queue_event('nummernschalter_active') def nummernschalter_done_cb(digit): controller.queue_event('nummernschalter_input', digit) def phone_cb(event): if event == PhoneEvent.RegInProgress: controller.queue_event('registration_in_progress') elif event == PhoneEvent.RegSuccessfull: controller.queue_event('registration_successful') elif event == PhoneEvent.RegLost: controller.queue_event('registration_lost') elif event == PhoneEvent.CallIncoming: controller.queue_event('incoming_call') elif event == PhoneEvent.CallAccepted: controller.queue_event('call_accepted') elif event == PhoneEvent.CallEnded: controller.queue_event('call_ended') elif event == PhoneEvent.CallRinging: controller.queue_event('call_ringing') elif event == PhoneEvent.CallBusy: controller.queue_event('call_ended') elif event == PhoneEvent.CallInvalidNumber: controller.queue_event('invalid_number') if __name__ == '__main__': print(FeTAp) cfg = configreader.ConfigurationReader() cfg.read('fetap.ini') phone = PhoneInterface(cfg.phoneconfig) feap = FeApUserInterface(cfg.pinconfig) controller = statemachine.StateMachineController(phone, feap, cfg.dialconfig) webinterface = FeTapWeb({}, controller) #controller.publish_state = webinterface.publish_status controller.publish_event = webinterface.on_event controller.publish_transition = webinterface.on_transition # TODO: Use real events from daemon controller.queue_event('registration_in_progress') controller.queue_event('registration_successful') feap.add_gabelschalter_callback(gabelschalter_cb) feap.add_nummernschalter_active_callback(nummernschalter_active_cb) feap.add_nummernschalter_done_callback(nummernschalter_done_cb) phone.add_event_cb(phone_cb) phone.start() webinterface.start() try: while True: time.sleep(1) except KeyboardInterrupt: phone.stop() feap.set_wecker(False) controller.stop()