Example of code that returns information about the status of the Ethernet connection.
Dependencies: EthernetInterface mbed-rtos mbed
eth_status.h@0:9e8b3fd68f6c, 2014-01-15 (annotated)
- Committer:
- edodm85
- Date:
- Wed Jan 15 20:37:57 2014 +0000
- Revision:
- 0:9e8b3fd68f6c
- Child:
- 1:67817eb9bb9e
First Version
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:9e8b3fd68f6c | 38 | 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 | } |