diff --git a/NewExtInst_Zynq_Net/Debug/NewExtInst_Zynq_Net.elf b/NewExtInst_Zynq_Net/Debug/NewExtInst_Zynq_Net.elf index 00ef499..2fe859a 100755 Binary files a/NewExtInst_Zynq_Net/Debug/NewExtInst_Zynq_Net.elf and b/NewExtInst_Zynq_Net/Debug/NewExtInst_Zynq_Net.elf differ diff --git a/NewExtInst_Zynq_Net/src/main.c b/NewExtInst_Zynq_Net/src/main.c index af8b33f..218e8c0 100644 --- a/NewExtInst_Zynq_Net/src/main.c +++ b/NewExtInst_Zynq_Net/src/main.c @@ -35,12 +35,6 @@ #endif #include "xil_cache.h" - -#include "GPIO_Driv.h" -#include "SPI_Driv.h" -#include "cal_meas.h" -#include "uart_IO.h" - #include "lwip/tcp.h" extern void tcp_tmr(void); /* declared in tcp_priv.h, not in public tcp.h */ #include "xil_cache.h" @@ -49,6 +43,12 @@ extern void tcp_tmr(void); /* declared in tcp_priv.h, not in public tcp.h */ #include "lwip/dhcp.h" #endif +#include "GPIO_Driv.h" +#include "SPI_Driv.h" +#include "cal_meas.h" +#include "uart_IO.h" +#include "lwip_server.h" + u8 recvbuffer[1024] = {0}; /* defined by each RAW mode application */ @@ -84,6 +84,17 @@ void print_ip_settings(ip_addr_t *ip, ip_addr_t *mask, ip_addr_t *gw) print_ip("Gateway : ", gw); } +static int net_is_available(void) +{ + if (echo_netif == NULL) + return 0; + if (!netif_is_up(echo_netif)) + return 0; + if (echo_netif->ip_addr.addr == 0) + return 0; + return 1; +} + int main() { int iMainCom = 1; @@ -150,8 +161,18 @@ int main() print_ip_settings(&ipaddr, &netmask, &gw); + /* start the application (web server, rxtest, txtest, etc..) */ + start_application(); + //LWIP Related Init END - xil_printf("=====================\r\n[I] System Init Done!\r\n"); + + /* Check if network is actually available, fallback to UART if not */ + if (!net_is_available()) { + xil_printf("[W] Network unavailable, falling back to UART\r\n"); + iMainCom = 0; + } + + xil_printf("=====================\r\n[I] System Init Done!=====================\r\n"); @@ -170,12 +191,7 @@ int main() interface_initial(CPLD_U2); interface_initial(CPLD_U3); - - - xil_printf("[I] Board Init Complete!\r\n[I] Waiting for Command...\r\n"); - - /* start the application (web server, rxtest, txtest, etc..) */ - start_application(); + xil_printf("\r\n=====================[I] Board Init Complete!\r\n=====================[I] Waiting for Command...\r\n"); /* receive and process Instructions */ if (iMainCom == 1) diff --git a/NewExtInst_Zynq_Net_system/Debug/sd_card/BOOT.BIN b/NewExtInst_Zynq_Net_system/Debug/sd_card/BOOT.BIN index 070e7e4..adc30c6 100644 Binary files a/NewExtInst_Zynq_Net_system/Debug/sd_card/BOOT.BIN and b/NewExtInst_Zynq_Net_system/Debug/sd_card/BOOT.BIN differ