UDP echo client using the WiConnect Library and mbed UDP Socket API.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Thu Nov 27 10:27:53 2014 +0000
Revision:
5:f31112eedddd
Parent:
4:9e8c1081a9eb
updated for latest wiconnect

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan_ackme 0:0675bde9bdd5 1
dan_ackme 0:0675bde9bdd5 2 #include "Wiconnect.h"
dan_ackme 0:0675bde9bdd5 3 #include "target_config.h"
dan_ackme 0:0675bde9bdd5 4
dan_ackme 0:0675bde9bdd5 5 #define NETWORK_SSID "<YOUR NETWORK SSID HERE>"
dan_ackme 0:0675bde9bdd5 6 #define NETWORK_PASSWORD "<YOUR NETWORK PASSWORD HERE>"
dan_ackme 0:0675bde9bdd5 7
dan_ackme 5:f31112eedddd 8 #define ECHO_SERVER_ADDRESS "<ECHO Server's IP Addres HERE>"
dan_ackme 0:0675bde9bdd5 9 #define ECHO_SERVER_PORT 7
dan_ackme 0:0675bde9bdd5 10
dan_ackme 0:0675bde9bdd5 11
dan_ackme 5:f31112eedddd 12
dan_ackme 0:0675bde9bdd5 13 static Serial consoleSerial(STDIO_UART_TX, STDIO_UART_RX);
dan_ackme 0:0675bde9bdd5 14
dan_ackme 0:0675bde9bdd5 15 static char in_buffer[256];
dan_ackme 0:0675bde9bdd5 16
dan_ackme 0:0675bde9bdd5 17 int main()
dan_ackme 0:0675bde9bdd5 18 {
dan_ackme 0:0675bde9bdd5 19 WiconnectResult result;
dan_ackme 0:0675bde9bdd5 20 SerialConfig serialConfig(WICONNECT_RX_PIN, WICONNECT_TX_PIN, 256);
dan_ackme 0:0675bde9bdd5 21 Wiconnect wiconnect(serialConfig, 256, NULL, WICONNECT_RESET_PIN);
dan_ackme 0:0675bde9bdd5 22
dan_ackme 0:0675bde9bdd5 23 consoleSerial.baud(115200);
dan_ackme 5:f31112eedddd 24 printf("Initializing WiConnect...\r\n");
dan_ackme 0:0675bde9bdd5 25
dan_ackme 0:0675bde9bdd5 26 if(WICONNECT_FAILED(result, wiconnect.init(true)))
dan_ackme 0:0675bde9bdd5 27 {
dan_ackme 0:0675bde9bdd5 28 printf("Failed to initialize Wiconnect: %s\r\n", Wiconnect::getWiconnectResultStr(result));
dan_ackme 4:9e8c1081a9eb 29 if(result == WICONNECT_FIRMWARE_OUTDATED)
dan_ackme 4:9e8c1081a9eb 30 {
dan_ackme 5:f31112eedddd 31 printf("** The WiFi firmware is not supported. Run the ota example to update the firmware:\r\n");
dan_ackme 5:f31112eedddd 32 printf("https://developer.mbed.org/teams/ACKme/code/wiconnect-ota_example\r\n\r\n");
dan_ackme 4:9e8c1081a9eb 33 }
dan_ackme 0:0675bde9bdd5 34 for(;;);
dan_ackme 0:0675bde9bdd5 35 }
dan_ackme 0:0675bde9bdd5 36 else if(WICONNECT_FAILED(result, wiconnect.join(NETWORK_SSID, NETWORK_PASSWORD)))
dan_ackme 0:0675bde9bdd5 37 {
dan_ackme 0:0675bde9bdd5 38 printf("Failed to join network: %s\r\n", Wiconnect::getWiconnectResultStr(result));
dan_ackme 0:0675bde9bdd5 39 for(;;);
dan_ackme 0:0675bde9bdd5 40 }
dan_ackme 0:0675bde9bdd5 41
dan_ackme 0:0675bde9bdd5 42
dan_ackme 0:0675bde9bdd5 43 UDPSocket sock;
dan_ackme 0:0675bde9bdd5 44 sock.init();
dan_ackme 0:0675bde9bdd5 45
dan_ackme 0:0675bde9bdd5 46 Endpoint echo_server;
dan_ackme 0:0675bde9bdd5 47 echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
dan_ackme 0:0675bde9bdd5 48
dan_ackme 0:0675bde9bdd5 49
dan_ackme 0:0675bde9bdd5 50 char out_buffer[] = "Hello World\n";
dan_ackme 0:0675bde9bdd5 51 if(sock.sendTo(echo_server, out_buffer, sizeof(out_buffer)) == -1)
dan_ackme 0:0675bde9bdd5 52 {
dan_ackme 0:0675bde9bdd5 53 printf("Failed to send data\r\n");
dan_ackme 0:0675bde9bdd5 54 for(;;);
dan_ackme 0:0675bde9bdd5 55 }
dan_ackme 0:0675bde9bdd5 56
dan_ackme 0:0675bde9bdd5 57
dan_ackme 0:0675bde9bdd5 58 int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer));
dan_ackme 0:0675bde9bdd5 59 if(n == -1)
dan_ackme 0:0675bde9bdd5 60 {
dan_ackme 0:0675bde9bdd5 61 printf("Failed to receive data\r\n");
dan_ackme 0:0675bde9bdd5 62 for(;;);
dan_ackme 0:0675bde9bdd5 63 }
dan_ackme 0:0675bde9bdd5 64 in_buffer[n] = '\0';
dan_ackme 0:0675bde9bdd5 65 printf("%s", in_buffer);
dan_ackme 0:0675bde9bdd5 66
dan_ackme 0:0675bde9bdd5 67
dan_ackme 0:0675bde9bdd5 68 sock.close();
dan_ackme 0:0675bde9bdd5 69 wiconnect.deinit();
dan_ackme 0:0675bde9bdd5 70
dan_ackme 0:0675bde9bdd5 71 printf("Finished!");
dan_ackme 0:0675bde9bdd5 72 while(true) {}
dan_ackme 0:0675bde9bdd5 73 }