Fix(boards): 修复mp下无线广播块在接收特定消息时有时生成的回调函数名异常

This commit is contained in:
王立帮
2025-02-18 00:21:33 +08:00
parent e6aefe12dc
commit 4600a7fa92
21 changed files with 113 additions and 61 deletions

View File

@@ -20,6 +20,7 @@ class ESPNow(espnow.ESPNow):
self.active(True)
self._channel = channel
self._txpower = txpower
self._on_handle = {}
self._nic = network.WLAN(network.STA_IF) #if version else network.WLAN(network.AP_IF)
self._nic.active(True)
self._nic.config(channel=self._channel, txpower=self._txpower)
@@ -77,6 +78,13 @@ class ESPNow(espnow.ESPNow):
func(hexlify(data[0]).decode(), data[1].decode())
else:
func(hexlify(data[0]).decode(), data[1].decode())
elif isinstance(self._on_handle, dict):
mac = hexlify(data[0]).decode()
decoded_msg = str(data[1].decode())
if '__all__' in self._on_handle:
self._on_handle['__all__'](mac, decoded_msg)
if decoded_msg in self._on_handle:
self._on_handle[decoded_msg](mac, decoded_msg)
else:
self._on_handle(hexlify(data[0]).decode(), data[1].decode())
@@ -93,13 +101,23 @@ class ESPNow(espnow.ESPNow):
func(hexlify(host).decode(), msg.decode())
else:
func(hexlify(host).decode(), msg.decode())
elif isinstance(self._on_handle, dict):
mac = hexlify(host).decode()
decoded_msg = str(msg.decode())
if '__all__' in self._on_handle:
self._on_handle['__all__'](mac, decoded_msg)
if decoded_msg in self._on_handle:
self._on_handle[decoded_msg](mac, decoded_msg)
else:
self._on_handle(hexlify(host).decode(), msg.decode())
def recv_cb(self, recv_cbs):
def recv_cb(self, *args):
'''Receive callback'''
self._on_handle = recv_cbs
if recv_cbs:
if isinstance(args[0], str):
self._on_handle[args[0]] = args[1]
else:
self._on_handle = args[0]
if args[0]:
if version == 0:
self.irq(self._cb_handle0)
else: