/*-----------------------------------------------------------------------------------*/ void tcp_init(void) { /* initialise the TCP PCB hashtables & lists */ tcp_pcb_init(); /* Register memory reclaim function */ #if MEM_RECLAIM mem_register_reclaim((mem_reclaim_func)tcp_mem_reclaim, NULL); #endif /* MEM_RECLAIM */ #if MEMP_RECLAIM memp_register_reclaim(MEMP_PBUF, (memp_reclaim_func)tcp_memp_reclaim, NULL); memp_register_reclaim(MEMP_TCP_SEG, (memp_reclaim_func)tcp_memp_reclaim, NULL); memp_register_reclaim(MEMP_TCP_PCB, (memp_reclaim_func)tcp_memp_reclaim, NULL); #endif /* MEMP_RECLAIM */ /* initialize timer */ tcp_ticks = 0; tcp_timer = 0; }
UINT32 WiFiService(void) { static uint APScanStartTime; uint32 ret = -1; int temp; //////////////////////////////////////////////////////////////////////////////////////////////// //WIFI Scan if (GetMsg(MSG_WIFI_SCAN_START)) { if (wl_do_escan()) { SendMsg(MSG_WIFI_SCAN_ERR); } else { SendMsg(MSG_WIFI_SCAN); APScanStartTime = SysTickCounter;//SysTickCounter unit is 0.5ms printf("APScanStartTime:%d\n", APScanStartTime); } } if (CheckMsg(MSG_WIFI_SCAN)) { if (GetScanEventOpen()) { if (SDC_GetSdioEvent(0) == SDC_SUCCESS) { process_sdio_pending_irqs(); } /* check the scan process..*/ temp = rk_scan_work(); if ((temp > 0) || /* check the scan timeout.*/ (SysTickCounter > APScanStartTime + AP_SCAN_TIMEOUT)) { printf("scan tout\n"); ClearMsg(MSG_WIFI_SCAN); SendMsg(MSG_WIFI_SCAN_OK); } } else { ClearMsg(MSG_WIFI_SCAN); } } //WIFI Scan end //////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////// if (GetMsg(MSG_WIFI_CONNECT)) { int APScanclrTail; ClearMsg(MSG_WIFI_APPW_JUMP); ClearMsg(MSG_WIFI_SCAN); ModuleOverlay(MODULE_ID_WIFI_WPA, MODULE_OVERLAY_DATA | MODULE_OVERLAY_BSS); //goto scan code rk_printf_save_ap(); if (0 != rk_wifi_connect_pro(gSysConfig.WiFiConfig.ssid, gSysConfig.WiFiConfig.password, strlen(gSysConfig.WiFiConfig.password))) { SendMsg(MSG_WIFI_CONN_FAILURE); } else { NETIF *netif; uint32 timeout; IP_ADDR3 * pIp; int i; if (GetMsg(MSG_WIFI_NO_ENCODE)) { MSG_SET_WPA_SH(); } ModuleOverlay(MODULE_ID_WIFI_LWIP, MODULE_OVERLAY_ALL); ModuleOverlay(MODULE_ID_WIFI_DHCP, MODULE_OVERLAY_ALL); for (i=0; i<3; i++) { tcp_pcb_init(); udp_pcb_init(); arp_list_init(); netif = netif_add(NULL, NULL, NULL); eth_tickinit(); dhcp_start(netif); udp_user_use(); dns_init(); timeout = SysTickCounter; while(1) { if (netif_is_up()) { netif->dhcp = NULL; SendMsg(MSG_WIFI_CONN_SUCCESS); return TRUE; } if(SysTickCounter > (timeout + 2000)) { break; } /* Ethernet data packet received procession....*/ //printf("fle-->eth service\n"); eth_service(FALSE); } } SendMsg(MSG_WIFI_CONN_FAILURE); } } if (CheckMsg(MSG_WIFI_TCP_CONNECTING)) { UserIsrDisable(); eth_service(0); UserIsrEnable(1); } if(CheckMsg(MSG_QPW_ENABLE)) { QpwNumber++; if(QpwNumber > 0x780000) { // 1 min QpwNumber = 0; upload_connect(C_QPW); } } return ret; }