mirror of
https://github.com/meshtastic/firmware.git
synced 2025-06-23 21:45:07 +00:00
udp-multicast: remove the thread from the multicast thread API (#6685)
* udp-multicast: remove the thread from the multicast thread API The whole API is parallel & asynchronous we don't need to start a thread ourself, the implementation probably does when we call start listening already. * Take copilot advice and call it a handler --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
This commit is contained in:
parent
216fbf2343
commit
a7ef9e9c08
@ -124,8 +124,8 @@ extern void tftSetup(void);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_UDP_MULTICAST
|
#ifdef HAS_UDP_MULTICAST
|
||||||
#include "mesh/udp/UdpMulticastThread.h"
|
#include "mesh/udp/UdpMulticastHandler.h"
|
||||||
UdpMulticastThread *udpThread = nullptr;
|
UdpMulticastHandler *udpHandler = nullptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(TCXO_OPTIONAL)
|
#if defined(TCXO_OPTIONAL)
|
||||||
@ -918,12 +918,12 @@ void setup()
|
|||||||
|
|
||||||
#ifdef HAS_UDP_MULTICAST
|
#ifdef HAS_UDP_MULTICAST
|
||||||
LOG_DEBUG("Start multicast thread");
|
LOG_DEBUG("Start multicast thread");
|
||||||
udpThread = new UdpMulticastThread();
|
udpHandler = new UdpMulticastHandler();
|
||||||
#ifdef ARCH_PORTDUINO
|
#ifdef ARCH_PORTDUINO
|
||||||
// FIXME: portduino does not ever call onNetworkConnected so call it here because I don't know what happen if I call
|
// FIXME: portduino does not ever call onNetworkConnected so call it here because I don't know what happen if I call
|
||||||
// onNetworkConnected there
|
// onNetworkConnected there
|
||||||
if (config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
if (config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
||||||
udpThread->start();
|
udpHandler->start();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -51,8 +51,8 @@ extern AudioThread *audioThread;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_UDP_MULTICAST
|
#ifdef HAS_UDP_MULTICAST
|
||||||
#include "mesh/udp/UdpMulticastThread.h"
|
#include "mesh/udp/UdpMulticastHandler.h"
|
||||||
extern UdpMulticastThread *udpThread;
|
extern UdpMulticastHandler *udpHandler;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Global Screen singleton.
|
// Global Screen singleton.
|
||||||
|
@ -293,8 +293,8 @@ ErrorCode Router::send(meshtastic_MeshPacket *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_UDP_MULTICAST
|
#if HAS_UDP_MULTICAST
|
||||||
if (udpThread && config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
if (udpHandler && config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
||||||
udpThread->onSend(const_cast<meshtastic_MeshPacket *>(p));
|
udpHandler->onSend(const_cast<meshtastic_MeshPacket *>(p));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -13,12 +13,11 @@
|
|||||||
#endif // HAS_ETHERNET
|
#endif // HAS_ETHERNET
|
||||||
|
|
||||||
#define UDP_MULTICAST_DEFAUL_PORT 4403 // Default port for UDP multicast is same as TCP api server
|
#define UDP_MULTICAST_DEFAUL_PORT 4403 // Default port for UDP multicast is same as TCP api server
|
||||||
#define UDP_MULTICAST_THREAD_INTERVAL_MS 15000
|
|
||||||
|
|
||||||
class UdpMulticastThread : public concurrency::OSThread
|
class UdpMulticastHandler final
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UdpMulticastThread() : OSThread("UdpMulticast") { udpIpAddress = IPAddress(224, 0, 0, 69); }
|
UdpMulticastHandler() { udpIpAddress = IPAddress(224, 0, 0, 69); }
|
||||||
|
|
||||||
void start()
|
void start()
|
||||||
{
|
{
|
||||||
@ -71,14 +70,6 @@ class UdpMulticastThread : public concurrency::OSThread
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
|
||||||
int32_t runOnce() override
|
|
||||||
{
|
|
||||||
canSleep = true;
|
|
||||||
// TODO: Implement nodeinfo broadcast
|
|
||||||
return UDP_MULTICAST_THREAD_INTERVAL_MS;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
IPAddress udpIpAddress;
|
IPAddress udpIpAddress;
|
||||||
AsyncUDP udp;
|
AsyncUDP udp;
|
@ -133,8 +133,8 @@ static void onNetworkConnected()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if HAS_UDP_MULTICAST
|
#if HAS_UDP_MULTICAST
|
||||||
if (udpThread && config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
if (udpHandler && config.network.enabled_protocols & meshtastic_Config_NetworkConfig_ProtocolFlags_UDP_BROADCAST) {
|
||||||
udpThread->start();
|
udpHandler->start();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user