Example of code that returns information about the status of the Ethernet connection.
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@3:af736e1af4a9, 2014-02-15 (annotated)
- Committer:
- edodm85
- Date:
- Sat Feb 15 13:48:46 2014 +0000
- Revision:
- 3:af736e1af4a9
- Parent:
- 2:922ee74b0192
Fixed the 2nd disconnection of the cable
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
edodm85 | 0:9e8b3fd68f6c | 1 | /* |
edodm85 | 0:9e8b3fd68f6c | 2 | * Author: Edoardo De Marchi |
edodm85 | 2:922ee74b0192 | 3 | * Date: 15/02/14 |
edodm85 | 3:af736e1af4a9 | 4 | * Notes: Checks the Ethernet cable connection |
edodm85 | 0:9e8b3fd68f6c | 5 | */ |
edodm85 | 0:9e8b3fd68f6c | 6 | |
edodm85 | 0:9e8b3fd68f6c | 7 | |
edodm85 | 0:9e8b3fd68f6c | 8 | #include "mbed.h" |
edodm85 | 0:9e8b3fd68f6c | 9 | #include "EthernetInterface.h" |
edodm85 | 0:9e8b3fd68f6c | 10 | #include "eth_status.h" |
edodm85 | 0:9e8b3fd68f6c | 11 | |
edodm85 | 0:9e8b3fd68f6c | 12 | DigitalOut led1(LED1); |
edodm85 | 0:9e8b3fd68f6c | 13 | DigitalOut led2(LED2); |
edodm85 | 0:9e8b3fd68f6c | 14 | DigitalOut led3(LED3); |
edodm85 | 0:9e8b3fd68f6c | 15 | DigitalOut led4(LED4); |
edodm85 | 2:922ee74b0192 | 16 | |
edodm85 | 0:9e8b3fd68f6c | 17 | |
edodm85 | 0:9e8b3fd68f6c | 18 | //ETHERNET |
edodm85 | 0:9e8b3fd68f6c | 19 | #define ECHO_SERVER_PORT 2000 |
edodm85 | 0:9e8b3fd68f6c | 20 | |
edodm85 | 0:9e8b3fd68f6c | 21 | char* ip = "192.168.153.153"; // ip |
edodm85 | 0:9e8b3fd68f6c | 22 | char* mask = "255.255.255.0"; // mask |
edodm85 | 0:9e8b3fd68f6c | 23 | char* gateway = "192.168.153.100"; // gateway |
edodm85 | 0:9e8b3fd68f6c | 24 | EthernetInterface eth; |
edodm85 | 0:9e8b3fd68f6c | 25 | TCPSocketConnection client; |
edodm85 | 0:9e8b3fd68f6c | 26 | TCPSocketServer server; |
edodm85 | 0:9e8b3fd68f6c | 27 | |
edodm85 | 0:9e8b3fd68f6c | 28 | |
edodm85 | 0:9e8b3fd68f6c | 29 | int Init() |
edodm85 | 0:9e8b3fd68f6c | 30 | { |
edodm85 | 0:9e8b3fd68f6c | 31 | led1 = 0; |
edodm85 | 0:9e8b3fd68f6c | 32 | led2 = 0; |
edodm85 | 0:9e8b3fd68f6c | 33 | led3 = 0; |
edodm85 | 0:9e8b3fd68f6c | 34 | led4 = 0; |
edodm85 | 0:9e8b3fd68f6c | 35 | |
edodm85 | 0:9e8b3fd68f6c | 36 | |
edodm85 | 0:9e8b3fd68f6c | 37 | // ETHERNET |
edodm85 | 0:9e8b3fd68f6c | 38 | eth.init(ip, mask, gateway); |
edodm85 | 0:9e8b3fd68f6c | 39 | eth.connect(); |
edodm85 | 0:9e8b3fd68f6c | 40 | server.bind(ECHO_SERVER_PORT); |
edodm85 | 0:9e8b3fd68f6c | 41 | server.listen(1); |
edodm85 | 0:9e8b3fd68f6c | 42 | printf("IP Address is %s\r\n", eth.getIPAddress()); |
edodm85 | 0:9e8b3fd68f6c | 43 | printf("%s - Speed: %d Mbps\n", get_transmission_status(), get_connection_speed()); |
edodm85 | 0:9e8b3fd68f6c | 44 | |
edodm85 | 0:9e8b3fd68f6c | 45 | return 0; |
edodm85 | 0:9e8b3fd68f6c | 46 | } |
edodm85 | 0:9e8b3fd68f6c | 47 | |
edodm85 | 0:9e8b3fd68f6c | 48 | |
edodm85 | 0:9e8b3fd68f6c | 49 | |
edodm85 | 0:9e8b3fd68f6c | 50 | int main() |
edodm85 | 0:9e8b3fd68f6c | 51 | { |
edodm85 | 0:9e8b3fd68f6c | 52 | bool eth_status = false; |
edodm85 | 0:9e8b3fd68f6c | 53 | bool eth_status_temp = true; |
edodm85 | 0:9e8b3fd68f6c | 54 | |
edodm85 | 0:9e8b3fd68f6c | 55 | Init(); |
edodm85 | 0:9e8b3fd68f6c | 56 | |
edodm85 | 0:9e8b3fd68f6c | 57 | |
edodm85 | 0:9e8b3fd68f6c | 58 | while(true) |
edodm85 | 0:9e8b3fd68f6c | 59 | { |
edodm85 | 0:9e8b3fd68f6c | 60 | printf("\nWait for new connection...\n"); |
edodm85 | 0:9e8b3fd68f6c | 61 | server.accept(client); |
edodm85 | 0:9e8b3fd68f6c | 62 | |
edodm85 | 0:9e8b3fd68f6c | 63 | printf("Connection from: %s\n", client.get_address()); |
edodm85 | 0:9e8b3fd68f6c | 64 | |
edodm85 | 0:9e8b3fd68f6c | 65 | while (true) |
edodm85 | 0:9e8b3fd68f6c | 66 | { |
edodm85 | 0:9e8b3fd68f6c | 67 | if(!get_link_status()) |
edodm85 | 0:9e8b3fd68f6c | 68 | { |
edodm85 | 0:9e8b3fd68f6c | 69 | eth_status = true; |
edodm85 | 0:9e8b3fd68f6c | 70 | }else |
edodm85 | 0:9e8b3fd68f6c | 71 | { |
edodm85 | 2:922ee74b0192 | 72 | eth_status = false; |
edodm85 | 2:922ee74b0192 | 73 | eth_status_temp = true; |
edodm85 | 0:9e8b3fd68f6c | 74 | led1 = 0; |
edodm85 | 0:9e8b3fd68f6c | 75 | } |
edodm85 | 0:9e8b3fd68f6c | 76 | |
edodm85 | 0:9e8b3fd68f6c | 77 | if(eth_status == eth_status_temp) |
edodm85 | 0:9e8b3fd68f6c | 78 | { |
edodm85 | 0:9e8b3fd68f6c | 79 | eth_status_temp = !eth_status; |
edodm85 | 0:9e8b3fd68f6c | 80 | printf("Check cable connection\r\n"); |
edodm85 | 0:9e8b3fd68f6c | 81 | led1 = 1; |
edodm85 | 0:9e8b3fd68f6c | 82 | eth_status = false; |
edodm85 | 0:9e8b3fd68f6c | 83 | } |
edodm85 | 0:9e8b3fd68f6c | 84 | led2 = !led2; |
edodm85 | 0:9e8b3fd68f6c | 85 | osDelay(500); |
edodm85 | 0:9e8b3fd68f6c | 86 | } |
edodm85 | 0:9e8b3fd68f6c | 87 | } |
edodm85 | 0:9e8b3fd68f6c | 88 | } |