Provides a real-time Ethernet link status for the K64F, since the K64F lacks such a function.
Dependencies: EthernetInterface k64f_EthLink mbed-rtos mbed
Fork of K64F_EthLink_HelloWorld by
Demo program for k64f_EthLink library.
IMPORTANT NOTE: The latest mbed builds (mbed 120, mbed-rtos 115, EthernetInterface 54) broke a few things in the K64F, including the k64f_EthLink - generates MDIO Timeout errors.
I recommend staying with the following mbed library versions until issues with the K64F are resolved.
mbed = 119 mbed-rtos = 111 EthernetInterface = 52
main.cpp@2:20bc1a7828e4, 2016-05-19 (annotated)
- Committer:
- loopsva
- Date:
- Thu May 19 17:37:10 2016 +0000
- Revision:
- 2:20bc1a7828e4
- Parent:
- 0:66507f292910
Updated underlying libraries
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
loopsva | 0:66507f292910 | 1 | #include "mbed.h" |
loopsva | 0:66507f292910 | 2 | #include "EthernetInterface.h" |
loopsva | 0:66507f292910 | 3 | #include "k64f_EthLink.h" |
loopsva | 0:66507f292910 | 4 | |
loopsva | 0:66507f292910 | 5 | EthernetInterface eth; |
loopsva | 0:66507f292910 | 6 | k64fEthLink link; |
loopsva | 0:66507f292910 | 7 | Serial pc(USBTX, USBRX); |
loopsva | 0:66507f292910 | 8 | |
loopsva | 0:66507f292910 | 9 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66507f292910 | 10 | // Check for a valid Ethernet Link, print ONLY on status change and keep count of link "downs" |
loopsva | 0:66507f292910 | 11 | |
loopsva | 0:66507f292910 | 12 | bool EthPhyUpT = false; |
loopsva | 0:66507f292910 | 13 | int EthUpDownCnt = 0; |
loopsva | 0:66507f292910 | 14 | |
loopsva | 0:66507f292910 | 15 | int TestEthLink() { |
loopsva | 0:66507f292910 | 16 | int EthLinkStat = link.GetELink(); |
loopsva | 0:66507f292910 | 17 | if((!(EthLinkStat)) && (EthPhyUpT == false)) { |
loopsva | 0:66507f292910 | 18 | pc.printf("Eth Link UP\r\n"); |
loopsva | 0:66507f292910 | 19 | EthPhyUpT = true; |
loopsva | 0:66507f292910 | 20 | } else if(((EthLinkStat)) && (EthPhyUpT == true)){ |
loopsva | 0:66507f292910 | 21 | EthUpDownCnt++; |
loopsva | 0:66507f292910 | 22 | pc.printf("Eth Link DOWN, count: %d\r\n", EthUpDownCnt); |
loopsva | 0:66507f292910 | 23 | EthPhyUpT = false; |
loopsva | 0:66507f292910 | 24 | } |
loopsva | 0:66507f292910 | 25 | if(EthLinkStat == MDIO_TIMEOUT) return(MDIO_TIMEOUT); |
loopsva | 0:66507f292910 | 26 | if(EthPhyUpT == true) return(PHY_UP); |
loopsva | 0:66507f292910 | 27 | return(PHY_DOWN); |
loopsva | 0:66507f292910 | 28 | } |
loopsva | 0:66507f292910 | 29 | |
loopsva | 0:66507f292910 | 30 | //--------------------------------------------------------------------------------------------------------------------------------------// |
loopsva | 0:66507f292910 | 31 | |
loopsva | 0:66507f292910 | 32 | int main() { |
loopsva | 0:66507f292910 | 33 | pc.baud(230400); |
loopsva | 0:66507f292910 | 34 | pc.printf("\r\n\r\nBasic Ethernet Link Up / Down test for K64F\r\n"); |
loopsva | 0:66507f292910 | 35 | int EthInitStatus = eth.init(); |
loopsva | 0:66507f292910 | 36 | |
loopsva | 0:66507f292910 | 37 | /* Finish up initialization here!!! */ |
loopsva | 0:66507f292910 | 38 | |
loopsva | 0:66507f292910 | 39 | while(1) { |
loopsva | 0:66507f292910 | 40 | Thread::wait(500); |
loopsva | 0:66507f292910 | 41 | int i = TestEthLink(); |
loopsva | 0:66507f292910 | 42 | if(i == MDIO_TIMEOUT) pc.printf("MDIO Timeout!!!\r\n"); |
loopsva | 0:66507f292910 | 43 | } |
loopsva | 0:66507f292910 | 44 | } |