Example program for the Ethernet Shield V2.0 by SeeedStudio. The example gets an IP address via DHCP and then requests http://mbed.org/media/uploads/mbed_official/hello.txt

Dependencies:   WIZ820ioInterface mbed

Committer:
screamer
Date:
Mon Jun 09 13:23:14 2014 +0000
Revision:
4:14045b8557cb
Parent:
3:2d0986d5542e
Child:
6:4bb23453ce91
Detect and retry socket connect on failure; Update to the latest mbed SDK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 0:1e952439b254 1 #include "mbed.h"
screamer 0:1e952439b254 2 #include "WIZ820ioInterface.h"
screamer 0:1e952439b254 3
screamer 0:1e952439b254 4 Serial pc(USBTX, USBRX);
screamer 2:3b6c391a682d 5
screamer 2:3b6c391a682d 6 /**
screamer 2:3b6c391a682d 7 * D11 - MOSI pin
screamer 2:3b6c391a682d 8 * D12 - MISO pin
screamer 2:3b6c391a682d 9 * D13 - SCK pin
screamer 2:3b6c391a682d 10 * D10 - SEL pin
screamer 3:2d0986d5542e 11 * NC - Reset pin; use D5 otherwise the shield might get into reset loop
screamer 2:3b6c391a682d 12 */
screamer 3:2d0986d5542e 13 WIZ820ioInterface eth(D11, D12, D13, D10, D5);
screamer 0:1e952439b254 14
screamer 0:1e952439b254 15 int main()
screamer 0:1e952439b254 16 {
screamer 0:1e952439b254 17 wait(3);
screamer 1:bb040724d21b 18
screamer 1:bb040724d21b 19 // Initialize the interface.
screamer 1:bb040724d21b 20 // If no param is passed to init() then DHCP will be used on connect()
screamer 1:bb040724d21b 21 int s = eth.init();
screamer 0:1e952439b254 22 if (s != NULL) {
screamer 3:2d0986d5542e 23 printf(">>> Could not initialise. Halting!\n");
screamer 0:1e952439b254 24 exit(0);
screamer 0:1e952439b254 25 }
screamer 0:1e952439b254 26
screamer 3:2d0986d5542e 27 printf(">>> Get IP address...\n");
screamer 0:1e952439b254 28 while (1) {
screamer 1:bb040724d21b 29 s = eth.connect(); // Connect to network
screamer 0:1e952439b254 30
screamer 0:1e952439b254 31 if (s == false || s < 0) {
screamer 4:14045b8557cb 32 printf(">>> Could not connect to network! Retrying ...\n");
screamer 0:1e952439b254 33 wait(3);
screamer 0:1e952439b254 34 } else {
screamer 0:1e952439b254 35 break;
screamer 0:1e952439b254 36 }
screamer 0:1e952439b254 37 }
screamer 3:2d0986d5542e 38 printf(">>> Got IP address: %s\n", eth.getIPAddress());
screamer 0:1e952439b254 39
screamer 1:bb040724d21b 40 // Prepare the http request to mbed.org
screamer 4:14045b8557cb 41 printf(">>> Open socket to mbed.org:80\n");
screamer 0:1e952439b254 42 char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\n\n";
screamer 0:1e952439b254 43 TCPSocketConnection sock;
screamer 4:14045b8557cb 44
screamer 4:14045b8557cb 45 while (sock.connect("mbed.org", 80) == -1) {
screamer 4:14045b8557cb 46 printf(">>> Unable to open socket! Retrying ...\n");
screamer 4:14045b8557cb 47 };
screamer 4:14045b8557cb 48
screamer 4:14045b8557cb 49 printf(">>> Request %s\n", http_cmd);
screamer 0:1e952439b254 50 sock.send_all(http_cmd, sizeof(http_cmd)-1);
screamer 0:1e952439b254 51
screamer 1:bb040724d21b 52 // Read the response
screamer 0:1e952439b254 53 char buffer[300];
screamer 0:1e952439b254 54 int ret;
screamer 0:1e952439b254 55 while (true) {
screamer 0:1e952439b254 56 ret = sock.receive(buffer, sizeof(buffer)-1);
screamer 0:1e952439b254 57 if (ret <= 0)
screamer 0:1e952439b254 58 break;
screamer 0:1e952439b254 59 buffer[ret] = '\0';
screamer 3:2d0986d5542e 60 printf(">>> Received %d chars from mbed.org:\n%s\n", ret, buffer);
screamer 0:1e952439b254 61 }
screamer 4:14045b8557cb 62
screamer 4:14045b8557cb 63 printf(">>> Close socket\n");
screamer 0:1e952439b254 64 sock.close();
screamer 0:1e952439b254 65
screamer 1:bb040724d21b 66 // Disconnect from network
screamer 4:14045b8557cb 67 printf(">>> Disconnect from network\n");
screamer 0:1e952439b254 68 eth.disconnect();
screamer 4:14045b8557cb 69
screamer 0:1e952439b254 70 return 0;
screamer 0:1e952439b254 71 }