fix(transport): disable UART ESP-NOW bridge by default
Require serial_enabled true in settings to open serial_port; default false in set_defaults for Wi-Fi-only and dev machines. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -33,6 +33,13 @@ async def _to_thread(func, *args):
|
|||||||
return await loop.run_in_executor(None, func, *args)
|
return await loop.run_in_executor(None, func, *args)
|
||||||
|
|
||||||
|
|
||||||
|
class NullSender:
|
||||||
|
"""Used when no ESP-NOW UART bridge is configured or the port cannot be opened."""
|
||||||
|
|
||||||
|
async def send(self, data, addr=None):
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class SerialSender:
|
class SerialSender:
|
||||||
def __init__(self, port, baudrate, default_addr=None):
|
def __init__(self, port, baudrate, default_addr=None):
|
||||||
import serial
|
import serial
|
||||||
@@ -62,7 +69,22 @@ def get_current_sender():
|
|||||||
|
|
||||||
|
|
||||||
def get_sender(settings):
|
def get_sender(settings):
|
||||||
|
# Serial ESP-NOW bridge is opt-in (serial_enabled true); default off for dev / Wi-Fi-only.
|
||||||
|
if not settings.get("serial_enabled"):
|
||||||
|
print("[startup] serial bridge disabled (set serial_enabled true in settings.json to enable)")
|
||||||
|
return NullSender()
|
||||||
port = settings.get("serial_port", "/dev/ttyS0")
|
port = settings.get("serial_port", "/dev/ttyS0")
|
||||||
|
raw_port = str(port).strip() if port is not None else ""
|
||||||
|
if not raw_port or raw_port.lower() in ("none", "off"):
|
||||||
|
print("[startup] serial bridge disabled (empty serial_port)")
|
||||||
|
return NullSender()
|
||||||
baudrate = settings.get("serial_baudrate", 912000)
|
baudrate = settings.get("serial_baudrate", 912000)
|
||||||
default_addr = settings.get("serial_destination_mac", "ffffffffffff")
|
default_addr = settings.get("serial_destination_mac", "ffffffffffff")
|
||||||
return SerialSender(port, baudrate, default_addr=default_addr)
|
try:
|
||||||
|
return SerialSender(raw_port, baudrate, default_addr=default_addr)
|
||||||
|
except Exception as e:
|
||||||
|
print(
|
||||||
|
f"[startup] serial open failed ({raw_port!r}): {e}; "
|
||||||
|
"continuing without ESP-NOW bridge (Wi-Fi drivers unchanged)"
|
||||||
|
)
|
||||||
|
return NullSender()
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ class Settings(dict):
|
|||||||
# down (0 disables). Helps drivers that reconnect after seeing traffic on 8766.
|
# down (0 disables). Helps drivers that reconnect after seeing traffic on 8766.
|
||||||
if 'wifi_driver_hello_interval_s' not in self:
|
if 'wifi_driver_hello_interval_s' not in self:
|
||||||
self['wifi_driver_hello_interval_s'] = 10.0
|
self['wifi_driver_hello_interval_s'] = 10.0
|
||||||
|
# UART to ESP32 ESP-NOW bridge; default off (Wi-Fi drivers need no serial).
|
||||||
|
if 'serial_enabled' not in self:
|
||||||
|
self['serial_enabled'] = False
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user