This is a demo for the WiflyInterface Library.
Dependencies: WiflyInterface mbed
Wifly Firmware Update
Part of the demo will use the software update API to install 1 of 2 versions of the Wifly firmware, from the Microchip web site. You can see in the demo below the commands to install each of the 2 versions.
WiflyInterface - Broadcast packet
Part of the demo will send a broadcast packet to the network.
// TeraTerm monitoring mbed | Windows network monitor // Initializing network interface... | > ReceiveUDP 40000 // Connecting to network... | Receiving datagrams... // Ethernet connected as 192.168.1.188 | // Ethernet MAC is 00:06:66:71:5d:ef | // Connected at 24 Mb/s | // Wifly info: wifly-EZX Ver: 4.75 Build: r1777, | // Oct 2 2015 10:18:50 on RN-171 | // | // ctrl-a to download Wifly firmward v4.41 | // ctrl-b to download Wifly firmward v4.75 | // ctrl-c to send a broadcast message | // | // User types ctrl-c in TeraTerm | // Broadcast sending 'Hello World' on port 40000 | Rx[10.789]: Hello World // done. | // User types ctrl-c in TeraTerm | // Broadcast sending 'Hello World' on port 40000 | Rx[13.673]: Hello World // done. |
main.cpp
- Committer:
- WiredHome
- Date:
- 2015-12-21
- Revision:
- 0:3878b62facf1
File content as of revision 0:3878b62facf1:
#include "mbed.h" #include "RawSerial.h" #include "WiflyInterface.h" // Used later in hw adaptation #define MBED_APP_BOARD 1 /* http://mbed.org/components/mbed-Application-Board/ */ #define SMART_BOARD 2 /* http://mbed.org/users/WiredHome/notebook/SmartBoard-baseboard/ */ // ######################################################################## #define HW_ADAPTER SMART_BOARD /* Which board are we compiling against? */ // ######################################################################## #define SSID "ssid" #define PASS "pass" const char PROGINFO[] = "\r\n\r\nWifly Demo - built " __DATE__ " " __TIME__ "\r\n\r\n"; char Message[] = "Hello World"; char BCASTADDR[] = "255.255.255.255"; int Port = 40000; #if HW_ADAPTER == MBED_APP_BOARD WiflyInterface eth( p9, p10, p30, p29); #elif HW_ADAPTER == SMART_BOARD WiflyInterface eth(p28, p27, p23, p24); #endif RawSerial pc(USBTX, USBRX); DigitalOut myled(LED1); extern "C" void mbed_reset(); void ShowIPAddress(bool show) { pc.printf("Ethernet connected as %s\r\n", show ? eth.getIPAddress() : "---.---.---.---"); } void ShowMACAddress(bool show) { pc.printf("Ethernet MAC is %s\r\n", show ? eth.getMACAddress() : "--.--.--.--.--.--"); } int main() { pc.baud(460800); pc.printf(PROGINFO); pc.printf("Configuration for %s\r\n\r\n", (HW_ADAPTER == SMART_BOARD) ? "SmartBoard" : "mbed Application Board"); eth.SetSecurity(SSID, PASS, WPA); pc.printf("***\r\n"); pc.printf("Initializing network interface...\r\n"); if (0 == eth.init()) { //Use DHCP eth.setName("TestWiFi_01"); do { pc.printf("Connecting to network...\r\n"); if (0 == eth.connect()) { ShowIPAddress(true); ShowMACAddress(true); int speed = eth.get_connection_speed(); pc.printf("Connected at %d Mb/s\r\n", speed); pc.printf("Wifly info: %s\r\n", eth.getWiflyVersionString()); pc.printf("\r\n"); pc.printf(" ctrl-a to download Wifly firmward v4.41\r\n"); pc.printf(" ctrl-b to download Wifly firmward v4.75\r\n"); pc.printf(" ctrl-c to send a broadcast message\r\n"); while (eth.is_connected()) { if (eth.readable()) pc.putc(eth.getc()); else if (pc.readable()) { int c = pc.getc(); if (c == 0x01) { // ctrl-a // Install Software v4.41 pc.printf("Trying to download wifly7-441.mif from microchip...\r\n"); if (eth.SWUpdateWifly("wifly7-441.mif")) { pc.printf(" Success - now rebooting to this Wifly image.\r\n"); wait_ms(100); mbed_reset(); } } else if (c == 0x02) { // ctrl-b // Install Software v4.75 pc.printf("Trying to download wifly7-475.mif from microchip...\r\n"); if (eth.SWUpdateWifly("wifly7-475.mif")){ pc.printf(" Success - now rebooting to this Wifly image.\r\n"); wait_ms(100); mbed_reset(); } } else if (c == 0x03) { // ctrl-c UDPSocket bcast; Endpoint ep; pc.printf("Broadcast sending '%s' on port %d\r\n", Message, Port); int h = ep.set_address(BCASTADDR, Port); int i = bcast.bind(40000); int j = bcast.set_broadcasting(true); int k = bcast.sendTo(ep, Message, strlen(Message)); bcast.close(); pc.printf("done.\r\n"); } else { eth.putc(c); } } } pc.printf("lost connection.\r\n"); ShowIPAddress(false); eth.disconnect(); } else { pc.printf(" ... failed to connect.\r\n"); } } while (1); } else { pc.printf(" ... failed to initialize, rebooting...\r\n"); mbed_reset(); } }