First attempt at some form of autodiscovery of an mbed based device by periodically broadcasting our IP in a UDP packet.
AutoDiscoveryBroadcaster.cpp
00001 #include "AutoDiscoveryBroadcaster.h" 00002 00003 AutoDiscoveryBroadcaster::AutoDiscoveryBroadcaster() { 00004 running = 0; 00005 // Create the UDP socket 00006 udpSock = new UDPSocket; 00007 } 00008 00009 AutoDiscoveryBroadcaster::~AutoDiscoveryBroadcaster() { 00010 stop(); 00011 udpSock->close(); 00012 // Delete the UDP socket 00013 delete udpSock; 00014 } 00015 00016 void AutoDiscoveryBroadcaster::start(int udpPort, int period) { 00017 if ( !running ) { 00018 msg.init(); 00019 udpSock->bind(Host(IP_ADDR_ANY, udpPort)); 00020 host = Host(IP_ADDR_BROADCAST, udpPort); 00021 //host = Host(IpAddr(192,168,1,141), udpPort); 00022 ticker.attach(this, &AutoDiscoveryBroadcaster::broadcast, period); 00023 running = 1; 00024 // call once now 00025 broadcast(); 00026 } 00027 } 00028 00029 void AutoDiscoveryBroadcaster::stop() { 00030 if ( running ) { 00031 ticker.detach(); 00032 running = 0; 00033 } 00034 } 00035 00036 void AutoDiscoveryBroadcaster::broadcast() { 00037 printf("Sending result = %d\r\n", udpSock->sendto(msg.getBytes(), msg.getLength(), &host)); 00038 }
Generated on Sat Jul 16 2022 15:44:47 by 1.7.2