|
|
|
@ -6,76 +6,6 @@ from statemachine import InitState, RegisteringState, IdleState, SchelltState, A
|
|
|
|
|
import threading
|
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
class WebInitState(InitState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebRegisteringState(RegisteringState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebIdleState(IdleState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
def on_incoming_call(self):
|
|
|
|
|
super().on_incoming_call()
|
|
|
|
|
remote_number = self.web.controller.phone.get_remote_number()
|
|
|
|
|
self.web.send_event({"event": "incoming_call", "data": {"from": remote_number}})
|
|
|
|
|
|
|
|
|
|
class WebSchelltState(SchelltState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebAcceptingState(AcceptingState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebCallTerminatingState(CallTerminatingState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebForgottenState(ForgottenState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebBusyBeepingState(BusyBeepingState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebCallRunningState(CallRunningState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebWecktState(WecktState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebConnectingState(ConnectingState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
class WebDialingState(DialingState):
|
|
|
|
|
def __init__(self, web):
|
|
|
|
|
self.web = web
|
|
|
|
|
super().__init__(web.controller)
|
|
|
|
|
|
|
|
|
|
def on_nummernschalter_input(self, num):
|
|
|
|
|
super().on_nummernschalter_input(num)
|
|
|
|
|
self.web.send_event({"event": "num_entered", "data": {"number": int(num)}})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FeTapWeb():
|
|
|
|
|
def __init__(self, config, statemachine_controller):
|
|
|
|
|
self.config = config
|
|
|
|
@ -90,14 +20,22 @@ class FeTapWeb():
|
|
|
|
|
def root(self):
|
|
|
|
|
return "<h1>Hello world!</h1>"
|
|
|
|
|
|
|
|
|
|
def publish_status(self):
|
|
|
|
|
state_name = self.controller.state.__class__.__name__
|
|
|
|
|
new_state = eval("Web" + state_name)(self)
|
|
|
|
|
self.controller.state = new_state
|
|
|
|
|
def on_event(self, state, event, evargs, evkwargs):
|
|
|
|
|
if event == "incoming_call":
|
|
|
|
|
remote_number = self.controller.phone.get_remote_number()
|
|
|
|
|
self.send_event({"event": "incoming_call", "data": {"from": remote_number}})
|
|
|
|
|
elif event == "nummernschalter_input":
|
|
|
|
|
self.send_event({"event": "num_entered", "data": {"number": int(evargs[0])}})
|
|
|
|
|
else:
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
print(state, event, evargs, evkwargs)
|
|
|
|
|
|
|
|
|
|
def on_transition(self, ostate, nstate, event, evargs, evkwargs):
|
|
|
|
|
state_name = nstate.__class__.__name__
|
|
|
|
|
data = {"state": state_name}
|
|
|
|
|
data = json.dumps(data)
|
|
|
|
|
for ws in self.websockets:
|
|
|
|
|
ws.send(data)
|
|
|
|
|
self.send_event(data)
|
|
|
|
|
print(ostate, nstate, event, evargs, evkwargs)
|
|
|
|
|
|
|
|
|
|
def send_event(self, js_event):
|
|
|
|
|
data = json.dumps(js_event)
|
|
|
|
|