|
|
|
@ -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) |
|
|
|
|