lpc1768-picotcp-eth to revision 8, PicoTCP to revision 41 (mbed-rtos to revision 12, mbed to revision 63)

Dependencies:   PicoTCP lpc1768-picotcp-eth mbed-rtos mbed

Fork of TCPSocket_HelloWorldTest by Daniel Peter

Committer:
mbed714
Date:
Fri Jul 19 09:35:44 2013 +0000
Revision:
16:ac10f2f5ca42
Parent:
14:c3694118dd57
Added send_result printf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:bb128f0e952f 1 #include "mbed.h"
donatien 0:bb128f0e952f 2 #include "EthernetInterface.h"
donatien 0:bb128f0e952f 3
mbed714 12:9bef73198a53 4 #define RETRIES_ALLOWED 5
mbed714 12:9bef73198a53 5
mbed714 14:c3694118dd57 6 Serial pc2(USBTX, USBRX);
mbed714 12:9bef73198a53 7 EthernetInterface eth;
mbed714 12:9bef73198a53 8 DigitalOut led1(LED1);
mbed714 12:9bef73198a53 9
mbed714 12:9bef73198a53 10 int main()
mbed714 12:9bef73198a53 11 {
mbed714 12:9bef73198a53 12
mbed714 14:c3694118dd57 13 pc2.baud(115200);
mbed714 12:9bef73198a53 14 printf("Initialising...\n");
mbed714 12:9bef73198a53 15 set_time(0);
mbed714 12:9bef73198a53 16
mbed714 12:9bef73198a53 17 // use DHCP
mbed714 12:9bef73198a53 18 eth.init();
mbed714 12:9bef73198a53 19
mbed714 12:9bef73198a53 20 // attempt DHCP and if timing out then try again
mbed714 12:9bef73198a53 21 while (eth.connect()) {
mbed714 12:9bef73198a53 22 printf("DHCP timeout\n");
mbed714 12:9bef73198a53 23 };
mbed714 12:9bef73198a53 24
mbed714 12:9bef73198a53 25 // successful DHCP
emilmont 2:e087e9b789e9 26 printf("IP Address is %s\n", eth.getIPAddress());
mbed714 12:9bef73198a53 27
mbed714 12:9bef73198a53 28 // loop forever
emilmont 7:65188f4a8c25 29 while (true) {
mbed714 12:9bef73198a53 30
mbed714 12:9bef73198a53 31 // new non blocking socket
mbed714 12:9bef73198a53 32 TCPSocketConnection sock;
mbed714 12:9bef73198a53 33 sock.set_blocking(false);
mbed714 12:9bef73198a53 34
mbed714 12:9bef73198a53 35 // toggle led to indicate activity
mbed714 12:9bef73198a53 36 led1 = !led1;
mbed714 12:9bef73198a53 37
mbed714 12:9bef73198a53 38 // attempt socket connection and if failure then loop again
mbed714 12:9bef73198a53 39 if (sock.connect("mbed.org", 80)) {
mbed714 12:9bef73198a53 40 printf("Socket connect timeout\n");
mbed714 12:9bef73198a53 41 continue;
mbed714 12:9bef73198a53 42 }
mbed714 12:9bef73198a53 43
mbed714 12:9bef73198a53 44 // send command
mbed714 12:9bef73198a53 45 printf("Sending at %d seconds\n", time(NULL));
mbed714 12:9bef73198a53 46 char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\n\n";
mbed714 16:ac10f2f5ca42 47 int send_result = sock.send_all(http_cmd, sizeof(http_cmd) - 1);
mbed714 16:ac10f2f5ca42 48 if (send_result <= 0)
mbed714 16:ac10f2f5ca42 49 printf("Internal stack error : %d\n", pico_err);
mbed714 12:9bef73198a53 50
mbed714 12:9bef73198a53 51 // receive response
mbed714 12:9bef73198a53 52 int received = 0;
mbed714 12:9bef73198a53 53 int retries = 0;
mbed714 12:9bef73198a53 54 while (true) {
mbed714 12:9bef73198a53 55
mbed714 12:9bef73198a53 56 int result;
mbed714 12:9bef73198a53 57 char buffer[256];
mbed714 12:9bef73198a53 58
mbed714 12:9bef73198a53 59 result = sock.receive(buffer, sizeof(buffer) - 1);
mbed714 12:9bef73198a53 60 printf("Received: %d %d %d\n", result, received, retries);
mbed714 12:9bef73198a53 61
mbed714 12:9bef73198a53 62 // if timeout or no data
mbed714 12:9bef73198a53 63 if (result <= 0) {
mbed714 12:9bef73198a53 64
mbed714 12:9bef73198a53 65 // if data previously received then stop receiving
mbed714 12:9bef73198a53 66 if (received > 0)
mbed714 12:9bef73198a53 67 break;
mbed714 12:9bef73198a53 68
mbed714 12:9bef73198a53 69 // if incremented retries exceeded then no response and stop receiving
mbed714 12:9bef73198a53 70 if (++retries > RETRIES_ALLOWED) {
mbed714 12:9bef73198a53 71 break;
mbed714 12:9bef73198a53 72 }
mbed714 12:9bef73198a53 73
mbed714 12:9bef73198a53 74 } else {
mbed714 12:9bef73198a53 75
mbed714 12:9bef73198a53 76 // zero terminate the buffer
mbed714 12:9bef73198a53 77 buffer[result] = '\0';
mbed714 12:9bef73198a53 78
mbed714 12:9bef73198a53 79 // total size of data received
mbed714 12:9bef73198a53 80 received += result;
mbed714 12:9bef73198a53 81 }
mbed714 12:9bef73198a53 82
mbed714 12:9bef73198a53 83 }
mbed714 12:9bef73198a53 84
mbed714 12:9bef73198a53 85 // close socket at end of send and receive
mbed714 12:9bef73198a53 86 sock.close();
mbed714 12:9bef73198a53 87
mbed714 12:9bef73198a53 88 // wait before repeating
mbed714 12:9bef73198a53 89 Thread::wait(1000);
mbed714 12:9bef73198a53 90
emilmont 7:65188f4a8c25 91 }
mbed714 12:9bef73198a53 92 }