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:
1:67817eb9bb9e
Fixed the 2nd disconnection of the cable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:9e8b3fd68f6c 1 #include "lpc_phy.h"
edodm85 0:9e8b3fd68f6c 2
edodm85 0:9e8b3fd68f6c 3 /** \brief DP83848 PHY status definitions */
edodm85 0:9e8b3fd68f6c 4 #define DP8_REMOTEFAULT (1 << 6) /**< Remote fault */
edodm85 0:9e8b3fd68f6c 5 #define DP8_FULLDUPLEX (1 << 2) /**< 1=full duplex */
edodm85 0:9e8b3fd68f6c 6 #define DP8_SPEED10MBPS (1 << 1) /**< 1=10MBps speed */
edodm85 0:9e8b3fd68f6c 7 #define DP8_VALID_LINK (1 << 0) /**< 1=Link active */
edodm85 0:9e8b3fd68f6c 8
edodm85 0:9e8b3fd68f6c 9
edodm85 0:9e8b3fd68f6c 10 // This function returns the current status of connection.
edodm85 0:9e8b3fd68f6c 11 static bool get_link_status()
edodm85 0:9e8b3fd68f6c 12 {
edodm85 0:9e8b3fd68f6c 13 u32_t tmp = lpc_mii_read_data();
edodm85 0:9e8b3fd68f6c 14 return (tmp & DP8_VALID_LINK) ? true : false;
edodm85 0:9e8b3fd68f6c 15 }
edodm85 0:9e8b3fd68f6c 16
edodm85 0:9e8b3fd68f6c 17 // This function returns the status of transmission.
edodm85 0:9e8b3fd68f6c 18 static char* get_transmission_status()
edodm85 0:9e8b3fd68f6c 19 {
edodm85 0:9e8b3fd68f6c 20 u32_t tmp = lpc_mii_read_data();
edodm85 0:9e8b3fd68f6c 21 if(tmp & DP8_FULLDUPLEX)
edodm85 0:9e8b3fd68f6c 22 {
edodm85 0:9e8b3fd68f6c 23 return "FULL DUPLEX";
edodm85 0:9e8b3fd68f6c 24 }else
edodm85 0:9e8b3fd68f6c 25 {
edodm85 0:9e8b3fd68f6c 26 return "HALF DUPLEX";
edodm85 0:9e8b3fd68f6c 27 }
edodm85 0:9e8b3fd68f6c 28 }
edodm85 0:9e8b3fd68f6c 29
edodm85 0:9e8b3fd68f6c 30 // This function returns the speed of the connection.
edodm85 0:9e8b3fd68f6c 31 static int get_connection_speed()
edodm85 0:9e8b3fd68f6c 32 {
edodm85 0:9e8b3fd68f6c 33 u32_t tmp = lpc_mii_read_data();
edodm85 0:9e8b3fd68f6c 34 return (tmp & DP8_SPEED10MBPS) ? 10 : 100;
edodm85 0:9e8b3fd68f6c 35 }
edodm85 0:9e8b3fd68f6c 36
edodm85 0:9e8b3fd68f6c 37 // This function returns the current value in the MII data register.
edodm85 1:67817eb9bb9e 38 static u32_t mii_read_data()
edodm85 0:9e8b3fd68f6c 39 {
edodm85 0:9e8b3fd68f6c 40 return lpc_mii_read_data(); // 16-bit MRDD - address 0x2008 4030
edodm85 0:9e8b3fd68f6c 41 }