Receiving UDP broadcast on mbed LPC1768/Mbed OS5
.
- Hardware - mbed LPC1768
- OS - Mbed OS 5
- Separate node broadcasting UDP packet to MY_PORT
Information: - LPC176X target code sets flags for broadcast in default. So we can receive broadcast packets without setting additional flag(for LPC1768 register RxFilterCtrl, bit AcceptBroadcastEn)
mbed-os/targets/TARGET_NXP/TARGET_LPC176X/ethenet_api.c ethenet_init()
int ethernet_init() { ... LPC_EMAC->RxFilterCtrl = RFC_UCAST_EN | RFC_MCAST_EN | RFC_BCAST_EN | RFC_PERFECT_EN; /* Receive Broadcast, Perfect Match Packets */ ... }
code example here:
Import programreceive_udp_broadcast_os5
this code demonstrate how to receive broadcast packet with mbed-os (Mbed OS 5). (tested on LPC1768)
you may need this python snippet on your pc to broadcast test message
import sys import time import socket import netifaces as net BROADCAST_INTERVAL_SEC = 5 HOST = '' PORT = 58083 interfaces = [] for name in net.interfaces(): data = net.ifaddresses(name) d = data.get(net.AF_INET) if d is not None: interfaces.append(d[0]) address = None broadcast_addresses = [] for each in interfaces: if 'broadcast' in each.keys(): broadcast_addresses.append(each['broadcast']) address = each['addr'] sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) sock.bind((HOST, PORT)) for each in broadcast_addresses: msg = "broadcast from " + address sock.sendto(bytes(msg.encode()), (each, PORT))
Please log in to post comments.