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 Kevin Braun

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

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?

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