TCP echo client using the WiConnect library and mbed TCP Socket API.

Dependencies:   WiConnect mbed

Committer:
dan_ackme
Date:
Thu Nov 27 10:28:46 2014 +0000
Revision:
7:f70f91038918
Parent:
6:b425959b75f0
updated for latest wiconnect

Who changed what in which revision?

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