Add HTTP fallback mode to Pico communication service
This commit is contained in:
@@ -8,16 +8,30 @@ from .protocol import (
|
||||
|
||||
|
||||
class CommunicationService:
|
||||
def __init__(self, uart_client, app_state):
|
||||
def __init__(self, uart_client, app_state, http_client=None):
|
||||
self.uart_client = uart_client
|
||||
self.http_client = http_client
|
||||
self.app_state = app_state
|
||||
self.last_messages = []
|
||||
self.use_http_fallback = False
|
||||
|
||||
def request_status(self):
|
||||
if self.use_http_fallback and self.http_client:
|
||||
message = self.http_client.get_status()
|
||||
self.handle_message(message)
|
||||
return message
|
||||
|
||||
self.uart_client.send_message(make_status_request())
|
||||
return None
|
||||
|
||||
def set_relay(self, relay, enabled):
|
||||
if self.use_http_fallback and self.http_client:
|
||||
message = self.http_client.set_relay(relay, enabled)
|
||||
self.handle_message(message)
|
||||
return message
|
||||
|
||||
self.uart_client.send_message(make_set_relay(relay, enabled))
|
||||
return None
|
||||
|
||||
def poll(self):
|
||||
messages = self.uart_client.read_available_messages()
|
||||
@@ -28,6 +42,12 @@ class CommunicationService:
|
||||
|
||||
return messages
|
||||
|
||||
def enable_http_fallback(self):
|
||||
self.use_http_fallback = True
|
||||
|
||||
def disable_http_fallback(self):
|
||||
self.use_http_fallback = False
|
||||
|
||||
def handle_message(self, message):
|
||||
if is_status_response(message):
|
||||
self.app_state.update_from_status(message)
|
||||
|
||||
Reference in New Issue
Block a user