fetapi/fetapd.py

60 lines
1.8 KiB
Python

import time
from phoneinterface import PhoneInterface, PhoneEvent
from apparatinterface import FeApPinConfiguration, FeApUserInterface
import configreader
import statemachine
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__':
cfg = configreader.ConfigurationReader()
cfg.read('fetap.ini')
phone = PhoneInterface(cfg.phoneconfig)
feap = FeApUserInterface(cfg.pinconfig)
controller = statemachine.StateMachineController(phone, feap, cfg.dialconfig)
phone.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
phone.stop()
feap.set_wecker(False)
c.stop()