int main_thread() { #if LWIP_DHCP==1 int mscnt = 0; #endif /* initialize lwIP before calling sys_thread_new */ lwip_init(); /* any thread using lwIP should be created using sys_thread_new */ sys_thread_new("NW_THRD", network_thread, NULL, THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); #if LWIP_DHCP==1 while (1) { #ifdef OS_IS_FREERTOS vTaskDelay(DHCP_FINE_TIMER_MSECS / portTICK_RATE_MS); #else sleep(DHCP_FINE_TIMER_MSECS); #endif if (server_netif.ip_addr.addr) { xil_printf("DHCP request success\r\n"); print_ip_settings(&(server_netif.ip_addr), &(server_netif.netmask), &(server_netif.gw)); /* print all application headers */ print_headers(); /* now we can start application threads */ launch_app_threads(); break; } mscnt += DHCP_FINE_TIMER_MSECS; if (mscnt >= 10000) { xil_printf("ERROR: DHCP request timed out\r\n"); xil_printf("Configuring default IP of 192.168.1.10\r\n"); IP4_ADDR(&(server_netif.ip_addr), 192, 168, 1, 10); IP4_ADDR(&(server_netif.netmask), 255, 255, 255, 0); IP4_ADDR(&(server_netif.gw), 192, 168, 1, 1); print_ip_settings(&(server_netif.ip_addr), &(server_netif.netmask), &(server_netif.gw)); /* print all application headers */ print_headers(); launch_app_threads(); break; } } #ifdef OS_IS_FREERTOS vTaskDelete(NULL); #endif #endif return 0; }
void network_thread(void *p) { struct netif *netif; struct ip_addr ipaddr, netmask, gw; /* the mac address of the board. this should be unique per board */ unsigned char mac_ethernet_address[] = { 0x00, 0x0A, 0x35, 0x02, 0x2D, 0x8C }; netif = &server_netif; //xil_printf("Inside NW_THREAD\r\n"); #if 1 /* initliaze IP addresses to be used */ //IP4_ADDR(&ipaddr, 192, 168, 1, 10); //IP4_ADDR(&netmask, 255, 255, 255, 0); //IP4_ADDR(&gw, 192, 168, 1, 1); IP4_ADDR(&ipaddr, 10, 0, 18, 100); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 10, 0, 18, 1); #else IP4_ADDR(&ipaddr, 172, 16, 0, 10); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 172, 16, 0, 1); #endif /* print out IP settings of the board */ print("\r\n\r\n"); print("-----BPM Server Application ------\r\n\n"); print_ip_settings(&ipaddr, &netmask, &gw); /* print all application headers */ print_headers(); /* Add network interface to the netif_list, and set it as default */ if (!xemac_add(netif, &ipaddr, &netmask, &gw, mac_ethernet_address, PLATFORM_EMAC_BASEADDR)) { xil_printf("Error adding N/W interface\r\n"); return; } netif_set_default(netif); /* specify that the network if is up */ netif_set_up(netif); /* start packet receive thread - required for lwIP operation */ sys_thread_new("xemacif_input_thread", (void(*)(void*))xemacif_input_thread, netif, THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); /* now we can start application threads */ launch_app_threads(); return; }
void network_thread(void *p) { struct netif *netif; struct ip_addr ipaddr, netmask, gw; #if LWIP_DHCP==1 int mscnt = 0; #endif /* the mac address of the board. this should be unique per board */ unsigned char mac_ethernet_address[] = { 0x00, 0x0a, 0x35, 0x00, 0x01, 0x02 }; netif = &server_netif; #if LWIP_DHCP==0 /* initliaze IP addresses to be used */ IP4_ADDR(&ipaddr, 192, 168, 1, 10); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gw, 192, 168, 1, 1); #endif /* print out IP settings of the board */ print("\r\n\r\n"); print("-----lwIP Socket Mode Demo Application ------\r\n"); #if LWIP_DHCP==0 print_ip_settings(&ipaddr, &netmask, &gw); /* print all application headers */ #endif #if LWIP_DHCP==1 ipaddr.addr = 0; gw.addr = 0; netmask.addr = 0; #endif /* Add network interface to the netif_list, and set it as default */ if (!xemac_add(netif, &ipaddr, &netmask, &gw, mac_ethernet_address, PLATFORM_EMAC_BASEADDR)) { xil_printf("Error adding N/W interface\r\n"); return; } netif_set_default(netif); /* specify that the network if is up */ netif_set_up(netif); /* start packet receive thread - required for lwIP operation */ sys_thread_new("xemacif_input_thread", (void(*)(void*))xemacif_input_thread, netif, THREAD_STACKSIZE, DEFAULT_THREAD_PRIO); #if LWIP_DHCP==1 dhcp_start(netif); while (1) { #ifdef OS_IS_FREERTOS vTaskDelay(DHCP_FINE_TIMER_MSECS / portTICK_RATE_MS); #else sleep(DHCP_FINE_TIMER_MSECS); #endif dhcp_fine_tmr(); mscnt += DHCP_FINE_TIMER_MSECS; if (mscnt >= DHCP_COARSE_TIMER_SECS*1000) { dhcp_coarse_tmr(); mscnt = 0; } } #else print_headers(); launch_app_threads(); #ifdef OS_IS_FREERTOS vTaskDelete(NULL); #endif #endif return; }