
ok
Dependencies: EthernetInterfaceAA mbed-rtos mbed
main.cpp@0:28aa4f51f1e2, 2014-03-27 (annotated)
- Committer:
- avnisha
- Date:
- Thu Mar 27 20:21:51 2014 +0000
- Revision:
- 0:28aa4f51f1e2
ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
avnisha | 0:28aa4f51f1e2 | 1 | |
avnisha | 0:28aa4f51f1e2 | 2 | #include "mbed.h" |
avnisha | 0:28aa4f51f1e2 | 3 | #include "EthernetInterface.h" |
avnisha | 0:28aa4f51f1e2 | 4 | #include "Socket.h" |
avnisha | 0:28aa4f51f1e2 | 5 | #include "TCPSocketServer.h" |
avnisha | 0:28aa4f51f1e2 | 6 | #include "TCPSocketConnection.h" |
avnisha | 0:28aa4f51f1e2 | 7 | |
avnisha | 0:28aa4f51f1e2 | 8 | DigitalOut myled(LED1); |
avnisha | 0:28aa4f51f1e2 | 9 | Serial tty_pc(USBTX, USBRX); |
avnisha | 0:28aa4f51f1e2 | 10 | |
avnisha | 0:28aa4f51f1e2 | 11 | void eth_main(const void *context) |
avnisha | 0:28aa4f51f1e2 | 12 | { |
avnisha | 0:28aa4f51f1e2 | 13 | puts("Starting " __FILE__ " " __DATE__ " " __TIME__); |
avnisha | 0:28aa4f51f1e2 | 14 | |
avnisha | 0:28aa4f51f1e2 | 15 | Ethernet eth; |
avnisha | 0:28aa4f51f1e2 | 16 | eth.set_link(eth.AutoNegotiate); |
avnisha | 0:28aa4f51f1e2 | 17 | |
avnisha | 0:28aa4f51f1e2 | 18 | EthernetInterface ethif; |
avnisha | 0:28aa4f51f1e2 | 19 | ethif.init(); |
avnisha | 0:28aa4f51f1e2 | 20 | ethif.connect(); |
avnisha | 0:28aa4f51f1e2 | 21 | |
avnisha | 0:28aa4f51f1e2 | 22 | printf("IP %s\n", ethif.getIPAddress()); |
avnisha | 0:28aa4f51f1e2 | 23 | |
avnisha | 0:28aa4f51f1e2 | 24 | TCPSocketServer server; |
avnisha | 0:28aa4f51f1e2 | 25 | TCPSocketConnection sock; |
avnisha | 0:28aa4f51f1e2 | 26 | bool active = false; |
avnisha | 0:28aa4f51f1e2 | 27 | unsigned short port = 8000; |
avnisha | 0:28aa4f51f1e2 | 28 | |
avnisha | 0:28aa4f51f1e2 | 29 | server.bind(port); |
avnisha | 0:28aa4f51f1e2 | 30 | server.listen(); |
avnisha | 0:28aa4f51f1e2 | 31 | |
avnisha | 0:28aa4f51f1e2 | 32 | server.set_blocking(false, 500); // SET NON-BLOCKING |
avnisha | 0:28aa4f51f1e2 | 33 | |
avnisha | 0:28aa4f51f1e2 | 34 | printf("listening at %s:%hu\n", ethif.getIPAddress(), port); |
avnisha | 0:28aa4f51f1e2 | 35 | |
avnisha | 0:28aa4f51f1e2 | 36 | while(true) |
avnisha | 0:28aa4f51f1e2 | 37 | { |
avnisha | 0:28aa4f51f1e2 | 38 | myled = eth.link(); |
avnisha | 0:28aa4f51f1e2 | 39 | |
avnisha | 0:28aa4f51f1e2 | 40 | if (active) |
avnisha | 0:28aa4f51f1e2 | 41 | { |
avnisha | 0:28aa4f51f1e2 | 42 | |
avnisha | 0:28aa4f51f1e2 | 43 | #ifdef OLD |
avnisha | 0:28aa4f51f1e2 | 44 | char c; |
avnisha | 0:28aa4f51f1e2 | 45 | if (sock.receive(&c, 1) <= 0) // NON-BLOCKING (!?) RECEIVE TO CHECK IF SOCKET ACTIVE |
avnisha | 0:28aa4f51f1e2 | 46 | Thread::wait(500); |
avnisha | 0:28aa4f51f1e2 | 47 | #endif |
avnisha | 0:28aa4f51f1e2 | 48 | if (!sock.is_connected()) |
avnisha | 0:28aa4f51f1e2 | 49 | { |
avnisha | 0:28aa4f51f1e2 | 50 | puts("connection closed"); |
avnisha | 0:28aa4f51f1e2 | 51 | sock.close(true); |
avnisha | 0:28aa4f51f1e2 | 52 | active = false; |
avnisha | 0:28aa4f51f1e2 | 53 | server.bind(port); |
avnisha | 0:28aa4f51f1e2 | 54 | server.listen(); |
avnisha | 0:28aa4f51f1e2 | 55 | printf("listening at %s:%hd\n", ethif.getIPAddress(), port); |
avnisha | 0:28aa4f51f1e2 | 56 | } |
avnisha | 0:28aa4f51f1e2 | 57 | } |
avnisha | 0:28aa4f51f1e2 | 58 | else |
avnisha | 0:28aa4f51f1e2 | 59 | { |
avnisha | 0:28aa4f51f1e2 | 60 | if (server.accept(sock) == 0) |
avnisha | 0:28aa4f51f1e2 | 61 | { |
avnisha | 0:28aa4f51f1e2 | 62 | active = true; |
avnisha | 0:28aa4f51f1e2 | 63 | server.close(); |
avnisha | 0:28aa4f51f1e2 | 64 | puts("connection established"); |
avnisha | 0:28aa4f51f1e2 | 65 | } |
avnisha | 0:28aa4f51f1e2 | 66 | } |
avnisha | 0:28aa4f51f1e2 | 67 | } |
avnisha | 0:28aa4f51f1e2 | 68 | } |
avnisha | 0:28aa4f51f1e2 | 69 | |
avnisha | 0:28aa4f51f1e2 | 70 | int main() |
avnisha | 0:28aa4f51f1e2 | 71 | { |
avnisha | 0:28aa4f51f1e2 | 72 | Thread eth_thread(eth_main, 0); |
avnisha | 0:28aa4f51f1e2 | 73 | |
avnisha | 0:28aa4f51f1e2 | 74 | while (1) |
avnisha | 0:28aa4f51f1e2 | 75 | { |
avnisha | 0:28aa4f51f1e2 | 76 | // forever |
avnisha | 0:28aa4f51f1e2 | 77 | } |
avnisha | 0:28aa4f51f1e2 | 78 | } |