[email protected]
I do this in a RT1064/LwIP Ethernet project:
In init phase:
tcpip_init(NULL, NULL);
sys_lock_tcpip_core();
netif_add(&fsl_netif0, &ip_addr, &ip_addr, &ip_addr, &fsl_enet_config0, ethernetif0_init, ethernet_input);
netif_set_default(&fsl_netif0);
netif_set_status_callback(&fsl_netif0, cbETHNetIFStatus);
netif_set_link_callback(&fsl_netif0, cbETHLinkStatus);
sys_unlock_tcpip_core();
In the "main loop" (thread that handles network stuff):
bool link;
static bool oldLink=FALSE;
PHY_GetLinkStatus(ENET, BOARD_ENET0_PHY_ADDRESS, &link);
if (link != oldLink) {
if (link) {
ledMMI(LED_BLUE, LED_ON);
sys_lock_tcpip_core();
netif_set_up(&fsl_netif0);
dhcp_start(&fsl_netif0);
sys_unlock_tcpip_core();
phy_speed_t speed;
phy_duplex_t duplex;
PHY_GetLinkSpeedDuplex(ENET, BOARD_ENET0_PHY_ADDRESS, &speed, &duplex);
messageDebug(DBG_NOTE, __MODULE__, __LINE__, "Link is coming up, speed=%i MBit, duplex=%s", speed==kPHY_Speed100M?100:10, duplex==kPHY_FullDuplex?"Full":"Half");
} else {
ledMMI(LED_BLUE, LED_OFF);
messageDebug(DBG_WAR, __MODULE__, __LINE__, "Link is going down..");
sys_lock_tcpip_core();
dhcp_release_and_stop(&fsl_netif0);
netif_set_down(&fsl_netif0);
sys_unlock_tcpip_core();
}
oldLink=link;
}
Hope it will help you in some way....