Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions Firmware/RTK_Everywhere/UdpServer.ino
Original file line number Diff line number Diff line change
Expand Up @@ -105,24 +105,26 @@ int32_t udpServerSendDataBroadcast(uint8_t *data, uint16_t length)
return 0;

// Send the data as broadcast
if (settings.enableUdpServer && online.udpServer && wifiIsConnected())
if (settings.enableUdpServer && online.udpServer && networkIsMediaConnected(networkGetUserNetwork(NETWORK_USER_UDP_SERVER)))
{
udpServer->beginPacket(networkGetBroadcastIpAddress(networkGetType(NETWORK_USER_UDP_SERVER)),
settings.udpServerPort);
IPAddress broadcastAddress = networkGetBroadcastIpAddress(networkGetType(NETWORK_USER_UDP_SERVER));
udpServer->beginPacket( broadcastAddress, settings.udpServerPort);
udpServer->write(data, length);
if (udpServer->endPacket())
{
if ((settings.debugUdpServer || PERIODIC_DISPLAY(PD_UDP_SERVER_BROADCAST_DATA)) && (!inMainMenu))
{
systemPrintf("UDP Server wrote %d bytes as broadcast on port %d\r\n", length, settings.udpServerPort);
systemPrintf("UDP Server wrote %d bytes as broadcast (%s) on port %d\r\n", length,
broadcastAddress.toString(), settings.udpServerPort);
PERIODIC_CLEAR(PD_UDP_SERVER_BROADCAST_DATA);
}
}
// Failed to write the data
else if ((settings.debugUdpServer || PERIODIC_DISPLAY(PD_UDP_SERVER_BROADCAST_DATA)) && (!inMainMenu))
{
PERIODIC_CLEAR(PD_UDP_SERVER_BROADCAST_DATA);
systemPrintf("UDP Server failed to write %d bytes as broadcast\r\n", length);
systemPrintf("UDP Server failed to write %d bytes as broadcast (%s) on port %d\r\n", length,
broadcastAddress.toString(), settings.udpServerPort);
length = 0;
}
}
Expand Down Expand Up @@ -204,17 +206,17 @@ void udpServerSetState(uint8_t newState)
if ((settings.debugUdpServer || PERIODIC_DISPLAY(PD_UDP_SERVER_STATE)) && (!inMainMenu))
{
if (udpServerState == newState)
systemPrint("*");
systemPrint("UDP Server: *");
else
systemPrintf("%s --> ", udpServerStateName[udpServerState]);
systemPrintf("UDP Server: %s --> ", udpServerStateName[udpServerState]);
}
udpServerState = newState;
if ((settings.debugUdpServer || PERIODIC_DISPLAY(PD_UDP_SERVER_STATE)) && (!inMainMenu))
{
PERIODIC_CLEAR(PD_UDP_SERVER_STATE);
if (newState >= UDP_SERVER_STATE_MAX)
{
systemPrintf("Unknown UDP Server state: %d\r\n", udpServerState);
systemPrintf("Unknown state: %d\r\n", udpServerState);
reportFatalError("Unknown UDP Server state");
}
else
Expand Down Expand Up @@ -311,7 +313,7 @@ void udpServerUpdate()
// Wait until the UDP server is enabled
case UDP_SERVER_STATE_OFF:
// Determine if the UDP server should be running
if (EQ_RTK_MODE(udpServerMode) && settings.enableUdpServer && (!wifiIsConnected()))
if (EQ_RTK_MODE(udpServerMode) && settings.enableUdpServer) // Was && (!wifiIsConnected())) - TODO check this
{
if (networkUserOpen(NETWORK_USER_UDP_SERVER, NETWORK_TYPE_ACTIVE))
{
Expand Down
15 changes: 15 additions & 0 deletions Firmware/RTK_Everywhere/menuSystem.ino
Original file line number Diff line number Diff line change
Expand Up @@ -1239,6 +1239,15 @@ void menuPeriodicPrint()
systemPrint("55) Provisioning state: ");
systemPrintf("%s\r\n", PERIODIC_SETTING(PD_PROVISIONING_STATE) ? "Enabled" : "Disabled");

systemPrint("56) UDP server state: ");
systemPrintf("%s\r\n", PERIODIC_SETTING(PD_UDP_SERVER_STATE) ? "Enabled" : "Disabled");

systemPrint("57) UDP server data: ");
systemPrintf("%s\r\n", PERIODIC_SETTING(PD_UDP_SERVER_DATA) ? "Enabled" : "Disabled");

systemPrint("58) UDP server broadcast data: ");
systemPrintf("%s\r\n", PERIODIC_SETTING(PD_UDP_SERVER_BROADCAST_DATA) ? "Enabled" : "Disabled");

systemPrintln("------- Tasks ------");
systemPrint("70) btReadTask state: ");
systemPrintf("%s\r\n", PERIODIC_SETTING(PD_TASK_BLUETOOTH_READ) ? "Enabled" : "Disabled");
Expand Down Expand Up @@ -1336,6 +1345,12 @@ void menuPeriodicPrint()
PERIODIC_TOGGLE(PD_HTTP_CLIENT_STATE);
else if (incoming == 55)
PERIODIC_TOGGLE(PD_PROVISIONING_STATE);
else if (incoming == 56)
PERIODIC_TOGGLE(PD_UDP_SERVER_STATE);
else if (incoming == 57)
PERIODIC_TOGGLE(PD_UDP_SERVER_DATA);
else if (incoming == 58)
PERIODIC_TOGGLE(PD_UDP_SERVER_BROADCAST_DATA);

else if (incoming == 70)
PERIODIC_TOGGLE(PD_TASK_BLUETOOTH_READ);
Expand Down
37 changes: 37 additions & 0 deletions Firmware/Tools/UDP_Client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import socket
import argparse
import multiprocessing

def client(server, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.bind((server, port))
while True:
payload = sock.recvfrom(1024)
print(payload[0].decode('latin1'), end='')

if __name__ == "__main__":

parser = argparse.ArgumentParser(
description='UDP Client')

parser.add_argument('-server', type=str, default="",
help='Host Name or IP Address of the UDP Server')

parser.add_argument('-port', type=int, default=10110,
help='UDP Port Number')

args = parser.parse_args()

if (args.server != ""):
print("Connecting to " + args.server + " on port " + str(args.port))
else:
print("Listening on port " + str(args.port))

proc = multiprocessing.Process(target = client, args = (args.server, args.port))
proc.start()

try:
while True:
pass
except KeyboardInterrupt:
proc.terminate()