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

main.cpp

Committer:
loopsva
Date:
2016-05-19
Revision:
2:20bc1a7828e4
Parent:
0:66507f292910

File content as of revision 2:20bc1a7828e4:

#include "mbed.h"
#include "EthernetInterface.h"
#include "k64f_EthLink.h"

EthernetInterface eth;
k64fEthLink link;
Serial pc(USBTX, USBRX);

//--------------------------------------------------------------------------------------------------------------------------------------//
// Check for a valid Ethernet Link, print ONLY on status change and keep count of link "downs"

bool EthPhyUpT = false;
int EthUpDownCnt = 0;

int TestEthLink() {
    int EthLinkStat = link.GetELink();
    if((!(EthLinkStat)) && (EthPhyUpT == false)) {
        pc.printf("Eth Link UP\r\n");
        EthPhyUpT = true;
    } else if(((EthLinkStat)) && (EthPhyUpT == true)){
        EthUpDownCnt++;
        pc.printf("Eth Link DOWN, count: %d\r\n", EthUpDownCnt);
        EthPhyUpT = false;
    }
    if(EthLinkStat == MDIO_TIMEOUT) return(MDIO_TIMEOUT);
    if(EthPhyUpT == true) return(PHY_UP);
    return(PHY_DOWN);
}

//--------------------------------------------------------------------------------------------------------------------------------------//

int main() {
    pc.baud(230400);
    pc.printf("\r\n\r\nBasic Ethernet Link Up / Down test for K64F\r\n");
    int EthInitStatus = eth.init();
    
    /* Finish up initialization here!!! */
    
    while(1) {
        Thread::wait(500);
        int i = TestEthLink();
        if(i == MDIO_TIMEOUT) pc.printf("MDIO Timeout!!!\r\n");
    }
}