Example of code that returns information about the status of the Ethernet connection.

Dependencies:   EthernetInterface mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }