void Set_network(void) { uint8 tmp_array[6]; uint8 i; ip_from = IP_FROM_DHCP; //DHCP // MAC ADDRESS for (i = 0 ; i < 6; i++) Config_Msg.Mac[i] = MAC[i]; setSHAR(Config_Msg.Mac); // Set DHCP Config_Msg.DHCP = Enable_DHCP; //Destination IP address for TCP Client //Set PTR and RCR register setRTR(2000); setRCR(5); //Init. TX & RX Memory size sysinit(txsize, rxsize); printf("\r\n----------------------------------------- \r\n"); printf("W5500E01-M3 \r\n"); printf("Network Configuration Information \r\n"); printf("----------------------------------------- "); getSHAR(tmp_array); printf("\r\nMAC : %.2X.%.2X.%.2X.%.2X.%.2X.%.2X\r\n", tmp_array[0],tmp_array[1],tmp_array[2],tmp_array[3],tmp_array[4],tmp_array[5]); }
/* make the common DHCP message */ void makeDHCPMSG(void) { uint8_t bk_mac[6]; uint8_t* ptmp; uint8_t i; getSHAR(bk_mac); pDHCPMSG->op = DHCP_BOOTREQUEST; pDHCPMSG->htype = DHCP_HTYPE10MB; pDHCPMSG->hlen = DHCP_HLENETHERNET; pDHCPMSG->hops = DHCP_HOPS; ptmp = (uint8_t*)(&pDHCPMSG->xid); *(ptmp+0) = (uint8_t)((DHCP_XID & 0xFF000000) >> 24); *(ptmp+1) = (uint8_t)((DHCP_XID & 0x00FF0000) >> 16); *(ptmp+2) = (uint8_t)((DHCP_XID & 0x0000FF00) >> 8); *(ptmp+3) = (uint8_t)((DHCP_XID & 0x000000FF) >> 0); pDHCPMSG->secs = DHCP_SECS; ptmp = (uint8_t*)(&pDHCPMSG->flags); *(ptmp+0) = (uint8_t)((DHCP_FLAGSBROADCAST & 0xFF00) >> 8); *(ptmp+1) = (uint8_t)((DHCP_FLAGSBROADCAST & 0x00FF) >> 0); pDHCPMSG->ciaddr[0] = 0; pDHCPMSG->ciaddr[1] = 0; pDHCPMSG->ciaddr[2] = 0; pDHCPMSG->ciaddr[3] = 0; pDHCPMSG->yiaddr[0] = 0; pDHCPMSG->yiaddr[1] = 0; pDHCPMSG->yiaddr[2] = 0; pDHCPMSG->yiaddr[3] = 0; pDHCPMSG->siaddr[0] = 0; pDHCPMSG->siaddr[1] = 0; pDHCPMSG->siaddr[2] = 0; pDHCPMSG->siaddr[3] = 0; pDHCPMSG->giaddr[0] = 0; pDHCPMSG->giaddr[1] = 0; pDHCPMSG->giaddr[2] = 0; pDHCPMSG->giaddr[3] = 0; pDHCPMSG->chaddr[0] = DHCP_CHADDR[0]; pDHCPMSG->chaddr[1] = DHCP_CHADDR[1]; pDHCPMSG->chaddr[2] = DHCP_CHADDR[2]; pDHCPMSG->chaddr[3] = DHCP_CHADDR[3]; pDHCPMSG->chaddr[4] = DHCP_CHADDR[4]; pDHCPMSG->chaddr[5] = DHCP_CHADDR[5]; for (i = 6; i < 16; i++) pDHCPMSG->chaddr[i] = 0; for (i = 0; i < 64; i++) pDHCPMSG->sname[i] = 0; for (i = 0; i < 128; i++) pDHCPMSG->file[i] = 0; // MAGIC_COOKIE pDHCPMSG->OPT[0] = (uint8_t)((MAGIC_COOKIE & 0xFF000000) >> 24); pDHCPMSG->OPT[1] = (uint8_t)((MAGIC_COOKIE & 0x00FF0000) >> 16); pDHCPMSG->OPT[2] = (uint8_t)((MAGIC_COOKIE & 0x0000FF00) >> 8); pDHCPMSG->OPT[3] = (uint8_t) (MAGIC_COOKIE & 0x000000FF) >> 0; }
void wizchip_getnetinfo(wiz_NetInfo* pnetinfo) { getSHAR(pnetinfo->mac); getGAR(pnetinfo->gw); getSUBR(pnetinfo->sn); getSIPR(pnetinfo->ip); pnetinfo->dns[0]= _DNS_[0]; pnetinfo->dns[1]= _DNS_[1]; pnetinfo->dns[2]= _DNS_[2]; pnetinfo->dns[3]= _DNS_[3]; pnetinfo->dhcp = _DHCP_; }
void wizchip_sw_reset(void) { uint8_t gw[4], sn[4], sip[4]; uint8_t mac[6]; getSHAR(mac); getGAR(gw); getSUBR(sn); getSIPR(sip); setMR(MR_RST); getMR(); // for delay setSHAR(mac); setGAR(gw); setSUBR(sn); setSIPR(sip); }
/******************************************************************************* * 名称: W5500_Init * 功能: 配置W5500的IP地址 * 形参: * 返回: 无 * 说明: ip_from=0,则dhcp,其他则静态IP *******************************************************************************/ void set_w5500_ip(u8 ip_from) { uint8 tmp_array[6]; /*复制定义的配置信息到配置结构体*/ memcpy(Config_Msg.Mac, MAC, 6); /*使用DHCP获取IP参数,需调用DHCP子函数*/ if(ip_from==0) { /*复制DHCP获取的配置信息到配置结构体*/ if(dhcp_ok==1) { printf(" IP from DHCP\r\n"); memcpy(Config_Msg.Lip,DHCP_GET.lip, 4); memcpy(Config_Msg.Sub,DHCP_GET.sub, 4); memcpy(Config_Msg.Gw,DHCP_GET.gw, 4); memcpy(Config_Msg.DNS_Server_IP,DHCP_GET.dns,4); } } else { memcpy(Config_Msg.Lip,IP,4); memcpy(Config_Msg.Sub,SubNet,4); memcpy(Config_Msg.Gw,GateWay,4); memcpy(Config_Msg.DNS_Server_IP,GateWay,4); } memcpy(&g_u32GloablIp,Config_Msg.Lip,4); g_u32GloablIp = htonl(g_u32GloablIp); /*将IP配置信息写入W5500相应寄存器*/ setSUBR(Config_Msg.Sub); setGAR(Config_Msg.Gw); setSIPR(Config_Msg.Lip); getSHAR(tmp_array); printf("\r\nMAC : %.2X.%.2X.%.2X.%.2X.%.2X.%.2X", tmp_array[0],tmp_array[1],tmp_array[2],tmp_array[3],tmp_array[4],tmp_array[5]); getSIPR (tmp_array); printf("\r\nIP : %d.%d.%d.%d", tmp_array[0],tmp_array[1],tmp_array[2],tmp_array[3]); getSUBR(tmp_array); printf("\r\nSN : %d.%d.%d.%d", tmp_array[0],tmp_array[1],tmp_array[2],tmp_array[3]); getGAR(tmp_array); printf("\r\nGW : %d.%d.%d.%d", tmp_array[0],tmp_array[1],tmp_array[2],tmp_array[3]); }
void wizchip_getnetinfo(wiz_NetInfo* pnetinfo) { getSHAR(pnetinfo->mac); getGAR(pnetinfo->gw); getSUBR(pnetinfo->sn); getSIPR(pnetinfo->ip); #if _WIZCHIP_ == 5200 // for W5200 ARP errata pnetinfo->sn[0] = _SUBN_[0]; pnetinfo->sn[1] = _SUBN_[1]; pnetinfo->sn[2] = _SUBN_[2]; pnetinfo->sn[3] = _SUBN_[3]; #endif pnetinfo->dns[0]= _DNS_[0]; pnetinfo->dns[1]= _DNS_[1]; pnetinfo->dns[2]= _DNS_[2]; pnetinfo->dns[3]= _DNS_[3]; pnetinfo->dhcp = _DHCP_; }
/** @brief This function get the network information. @return None. */ void GetNetInfo(wiz_NetInfo *netinfo) { getSHAR(netinfo->Mac); // get local MAC address getSIPR(netinfo->IP); // get local IP address //getSUBR(netinfo->Subnet); // get subnet mask address netinfo->Subnet[0] = Subnet[0]; netinfo->Subnet[1] = Subnet[1]; netinfo->Subnet[2] = Subnet[2]; netinfo->Subnet[3] = Subnet[3]; getGAR(netinfo->Gateway); // get gateway address netinfo->DNSServerIP[0] = DNSServerIP[0]; netinfo->DNSServerIP[1] = DNSServerIP[1]; netinfo->DNSServerIP[2] = DNSServerIP[2]; netinfo->DNSServerIP[3] = DNSServerIP[3]; netinfo->DHCPEnable = DHCPEnable; }
void wizchip_sw_reset(void) { uint8_t gw[4], sn[4], sip[4]; uint8_t mac[6]; //A20150601 #if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ uint16_t mr = (uint16_t)getMR(); setMR(mr | MR_IND); #endif // getSHAR(mac); getGAR(gw); getSUBR(sn); getSIPR(sip); setMR(MR_RST); getMR(); // for delay //A2015051 : For indirect bus mode #if _WIZCHIP_IO_MODE_ == _WIZCHIP_IO_MODE_BUS_INDIR_ setMR(mr | MR_IND); #endif // setSHAR(mac); setGAR(gw); setSUBR(sn); setSIPR(sip); }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x71, 0x72, 0x77}; uint8_t src_addr[4] = {192, 168, 1, 98}; uint8_t gw_addr[4] = {192, 168, 1, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; uint8_t tmp[8]; uint8_t i; /* External Clock */ //CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set Systme init */ SystemInit(); /* UART0 and UART1 configuration*/ //UART_StructInit(&UART_InitStructure); /* Configure UART1 */ //UART_Init(UART1,&UART_InitStructure); S_UART_Init(115200); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* LED configuration */ GPIO_Setting(); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __W7500P__ *(volatile uint32_t *)(0x41003070) = 0x61; *(volatile uint32_t *)(0x41003054) = 0x61; #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); #endif /* Network Configuration (Default setting) */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); /* HTTP Server Initialization */ httpServer_init(TX_BUF, RX_BUF, MAX_HTTPSOCK, socknumlist); // Tx/Rx buffers (1kB) reg_httpServer_cbfunc(NVIC_SystemReset, NULL); // Callback: MCU Reset { /* Web content registration (web content in webpage.h, Example web pages) */ // Index page and netinfo / base64 image demo reg_httpServer_webContent((uint8_t *)"index.html", (uint8_t *)index_page); // index.html : Main page example reg_httpServer_webContent((uint8_t *)"netinfo.html", (uint8_t *)netinfo_page); // netinfo.html : Network information example page reg_httpServer_webContent((uint8_t *)"netinfo.js", (uint8_t *)WIZwiki_W7500_web_netinfo_js); // netinfo.js : JavaScript for Read Network configuration (+ ajax.js) //reg_httpServer_webContent((uint8_t *)"img.html", (uint8_t *)img_page); // img.html : Base64 Image data example page // Example #1 reg_httpServer_webContent((uint8_t *)"dio.html", (uint8_t *)dio_page); // dio.html : Digital I/O control example page reg_httpServer_webContent((uint8_t *)"dio.js", (uint8_t *)WIZwiki_W7500_web_dio_js); // dio.js : JavaScript for digital I/O control (+ ajax.js) // Example #2 //reg_httpServer_webContent((uint8_t *)"ain.html", (uint8_t *)ain_page); // ain.html : Analog input monitor example page //reg_httpServer_webContent((uint8_t *)"ain.js", (uint8_t *)WIZwiki_W7500_web_ain_js); // ain.js : JavaScript for Analog input monitor (+ ajax.js) // Example #3 //reg_httpServer_webContent((uint8_t *)"ain_gauge.html", (uint8_t *)ain_gauge_page); // ain_gauge.html : Analog input monitor example page; using Google Gauge chart //reg_httpServer_webContent((uint8_t *)"ain_gauge.js", (uint8_t *)ain_gauge_js); // ain_gauge.js : JavaScript for Google Gauge chart (+ ajax.js) // AJAX JavaScript functions reg_httpServer_webContent((uint8_t *)"ajax.js", (uint8_t *)WIZwiki_W7500_web_ajax_js); // ajax.js : JavaScript for AJAX request transfer #ifdef _MAIN_DEBUG_ display_reg_webContent_list(); #endif } /* Main loop ***************************************/ while(1) { // TODO: insert user's code here for(i = 0; i < MAX_HTTPSOCK; i++) httpServer_run(i); // HTTP Server handler loopback_tcps(SOCK_TCPS, RX_BUF, 5000); } // End of Main loop }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x71, 0x72, 0x77}; uint8_t src_addr[4] = {192, 168, 77, 9}; uint8_t gw_addr[4] = {192, 168, 77, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server uint8_t tmp[8]; uint32_t toggle = 1; /* External Clock */ //CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set Systme init */ SystemInit(); /* UART0 and UART1 configuration*/ //UART_StructInit(&UART_InitStructure); /* Configure UART0 */ //UART_Init(UART1,&UART_InitStructure); S_UART_Init(115200); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __W7500P__ *(volatile uint32_t *)(0x41003070) = 0x61; *(volatile uint32_t *)(0x41003054) = 0x61; #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); //mdio_error_check(GPIOB, MDC, MDIO); //need verify... /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); #endif /* Network Configuration (Default setting) */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); /* DHCP client Initialization */ DHCP_init(SOCK_DHCP, test_buf); /* DHCP IP allocation and check the DHCP lease time (for IP renewal) */ while(1) { switch(DHCP_run()) { case DHCP_IP_ASSIGN: case DHCP_IP_CHANGED: /* If this block empty, act with default_ip_assign & default_ip_update */ // // This example calls the registered 'my_ip_assign' in the two case. // // Add to ... // // toggle = 1; if(toggle) { getSIPR(tmp); printf("> DHCP IP : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getGAR(tmp); printf("> DHCP GW : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getSUBR(tmp); printf("> DHCP SN : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); toggle = 0; close(SOCK_TCPS); /* If renewal IP address was defferent previous IP address, socket becomes to disconnect or close for new connection. */ } break; case DHCP_IP_LEASED: // if(toggle) { getSIPR(tmp); printf("> DHCP IP : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getGAR(tmp); printf("> DHCP GW : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getSUBR(tmp); printf("> DHCP SN : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); toggle = 0; } // TO DO YOUR NETWORK APPs. loopback_tcps(SOCK_TCPS, test_buf, 5000); break; case DHCP_FAILED: /* ===== Example pseudo code ===== */ // The below code can be replaced your code or omitted. // if omitted, retry to process DHCP my_dhcp_retry++; if(my_dhcp_retry > MY_MAX_DHCP_RETRY) { #if DEBUG_MODE != DEBUG_NO printf(">> DHCP %d Failed\r\n",my_dhcp_retry); #endif my_dhcp_retry = 0; DHCP_stop(); // if restart, recall DHCP_init() } break; default: break; } } }
STATIC void wiznet5k_get_mac_address(wiznet5k_obj_t *self, uint8_t mac[6]) { (void)self; getSHAR(mac); }
void network_get_MAC(uint8_t* macaddr) { getSHAR( macaddr); // get the local MAC address }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0x34}; uint8_t src_addr[4] = {192, 168, 0, 80}; uint8_t gw_addr[4] = {192, 168, 0, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server uint8_t tmp[8]; #if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLOCK int ret; uint8_t sn; #if defined(TEST_TCPC) int32_t loopback_ret; struct sockaddr_in sa; uint32_t s_addr; #endif #endif // For TCP client loopback examples; destination network info //uint8_t destip[4] = {192, 168, 0, 2}; //uint16_t destport = 5000; //int32_t loopback_ret; /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set Systme init */ SystemInit(); /* UART Init */ UART_StructInit(&UART_InitStructure); UART_Init(UART1,&UART_InitStructure); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); printf("\r\n============================================\r\n"); printf(" WIZnet %s EVB Demo v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("============================================\r\n"); printf(" WIZwiki Platform based Loopback Example\r\n"); printf("============================================\r\n"); #endif #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif /* Network Configuration */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); #if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLOCK #if defined(TEST_TCPS) || defined(TEST_TCPC) ret = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); #elif defined(TEST_UDPS) ret = socket(AF_INET, SOCK_STREAM, IPPROTO_UDP); #endif #if defined(TEST_TCPC) memset(&sa, 0, sizeof(sa)); sa.sin_len = (uint16_t)sizeof(sa); sa.sin_family = AF_INET; sa.sin_port = htons(destport); s_addr = (((((destip[0] << 8) | destip[1]) << 8) | destip[2]) << 8) | destip[3]; sa.sin_addr.s_addr = htonl(s_addr); #endif if(ret == -1) { #ifdef _LOOPBACK_DEBUG_ printf("%d:Socket Error\r\n", ret); #endif return ret; } sn = ret; #endif while(1) { /* Loopback Test: TCP Server and UDP */ #if LOOPBACK_MODE == LOOPBACK_MAIN_NOBLOCK #if defined(TEST_TCPS) loopback_tcps_bsd(sn, gDATABUF, TEST_PORT); #elif defined(TEST_UDPS) loopback_udps_bsd(sn, gDATABUF, TEST_PORT); #elif defined(TEST_TCPC) loopback_ret = loopback_tcpc_bsd(sn, gDATABUF, (struct sockaddr*)&sa); if(loopback_ret < 0) printf("loopback ret: %ld\r\n", loopback_ret); // TCP Socket Error code #endif #elif LOOPBACK_MODE == LOOPBACK_MAIN_SAMPLE #if defined(TEST_TCPS) loopback_tcps_bsd(test_buf); #elif defined(TEST_TCPC) loopback_tcpc_bsd(test_buf); #endif #endif } }
/** * It executes example program such as loopback_tcps(), loopback_tcpc(), and loopback_udp(). */ int main() { uint8 tx_mem_conf[8] = {8,8,8,8,8,8,8,8}; // for setting TMSR regsiter uint8 rx_mem_conf[8] = {8,8,8,8,8,8,8,8}; // for setting RMSR regsiter uint8 * data_buf = (uint8 *) 0xA10E0000; // buffer for loopack data uint8 ip[4] = {192,168,111,200}; // for setting SIP register uint8 gw[4] = {192,168,111,1}; // for setting GAR register uint8 sn[4] = {255,255,255,0}; // for setting SUBR register uint8 mac[6] = {0x00,0x08,0xDC,0x00,111,200}; // for setting SHAR register uint8 serverip[4] = {192,168,111,78}; // "TCP SERVER" IP address for loopback_tcpc() status.terminalSpeed = SERIAL_SPEED; status.downloadSpeed = SERIAL_DOWNLOAD_SPEED; data_buf = (uint8*)0xA10F0000; //InitXHyper255A(); // initiate MCU //SerialInit(status.terminalSpeed); // initiate serial port /* initiate W5300 */ printf("BBB");fflush(stdout); iinchip_init(); printf("CCC");fflush(stdout); /* allocate internal TX/RX Memory of W5300 */ if(!sysinit(tx_mem_conf,rx_mem_conf)) { printf("MEMORY CONFIG ERR.\r\n"); while(1); } //setMR(getMR()|MR_FS); // If Little-endian, set MR_FS. setSHAR(mac); // set source hardware address #ifdef __DEF_IINCHIP_PPP__ if(pppinit((uint8*)"test01", 6, (uint8*)"pppoe1000", 9)!=1) { printf("PPPoE fail.\r\n"); while(1); } close(0); #else /* configure network information */ setGAR(gw); // set gateway IP address setSUBR(sn); // set subnet mask address setSIPR(ip); // set source IP address #endif /* verify network information */ getSHAR(mac); // get source hardware address getGAR(gw); // get gateway IP address getSUBR(sn); // get subnet mask address getSIPR(ip); // get source IP address printf("SHAR : %02x:%02x:%02x:%02x:%02x:%02x\r\n",mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]); printf("GWR : %d.%d.%d.%d\r\n",gw[0],gw[1],gw[2],gw[3]); printf("SUBR : %d.%d.%d.%d\r\n",sn[0],sn[1],sn[2],sn[3]); printf("SIPR : %d.%d.%d.%d\r\n",ip[0],ip[1],ip[2],ip[3]); while(1) { loopback_tcps(0,5000,data_buf,0); loopback_tcps(1,5000,data_buf,0); loopback_tcps(2,5000,data_buf,0); loopback_tcps(3,5000,data_buf,0); loopback_tcps(4,5000,data_buf,0); loopback_tcps(5,5000,data_buf,0); loopback_tcpc(6,serverip, 3000, data_buf,0); loopback_udp(7,3000,data_buf,0); } #ifdef __DEF_IINCHIP_PPP__ { uint8 ppp_mac[6]; getPDHAR(ppp_mac); pppterm(ppp_mac, getPSIDR()); } #endif while(1); }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x01, 0x02, 0x03}; uint8_t src_addr[4] = {192, 168, 77, 9}; uint8_t gw_addr[4] = {192, 168, 77, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server uint8_t tmp[8], ret, cid[16]; int i; GPIO_InitTypeDef GPIO_InitDef; /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Clock */ *(volatile uint32_t *)(0x41001014) = 0x000C0200; // 48MHz //*(volatile uint32_t *)(0x41001014) = 0x00050200; // 20MHz, Default //*(volatile uint32_t *)(0x41001014) = 0x00040200; // 16MHz /* Set Systme init */ SystemInit(); /* UART2 Init */ S_UART_Init(115200); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ printf(" GetSystemClock : %d (Hz) \r\n", GetSystemClock()); setTIC100US((GetSystemClock()/10000)); printf(" val: %X, getTIC100US: %X, (%X) \r\n", GetSystemClock(), getTIC100US(), *(uint32_t *)WZTOE_TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif printf("PHY is linked. \r\n"); #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif GPIO_InitDef.GPIO_Pin = (GPIO_Pin_1 | GPIO_Pin_2); GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOA, &GPIO_InitDef); PAD_AFConfig(PAD_PA, (GPIO_Pin_1 | GPIO_Pin_2), PAD_AF1); for(i=0; i<4; i++) { // LED ON GPIO_ResetBits(GPIOA, (GPIO_Pin_1 | GPIO_Pin_2)) ; delay(200); // LED OFF GPIO_SetBits(GPIOA, (GPIO_Pin_1 | GPIO_Pin_2)) ; delay(200); } printf("[DEBUG] SD Card Test\r\n"); bsp_sd_gpio_init(); ret = SD_Init(); switch(SD_Type) { case SD_TYPE_MMC: printf("[DEBUG] init ret : %d , SD Card Type : MMC\r\n", ret); break; case SD_TYPE_V1: printf("[DEBUG] init ret : %d , SD Card Type : SD\r\n", ret); break; case SD_TYPE_V2: printf("[DEBUG] init ret : %d , SD Card Type : SD2\r\n", ret); break; case SD_TYPE_V2HC: printf("[DEBUG] init ret : %d , SD Card Type : SDHC\r\n", ret); break; default: printf("[DEBUG] init ret : %d , SD Card Type : %d\r\n", ret, SD_Type); break; } memset(&cid[0], 0x00, 16); ret = SD_GetCID(cid); if( (cid[0]==0x00) && (cid[1]==0x00) && (cid[2]==0x00) && (cid[3]==0x00) && (cid[4]==0x00) && (cid[5]==0x00) && (cid[6]==0x00) && (cid[7]==0x00) && (cid[8]==0x00) && (cid[9]==0x00) && (cid[10]==0x00) && (cid[11]==0x00) && (cid[12]==0x00) && (cid[13]==0x00) && (cid[14]==0x00) && (cid[15]==0x00) ) { // Turn on LED 1 printf("SD Test Fail!!\r\n"); GPIO_ResetBits(GPIOA, GPIO_Pin_1); } else { // Turn on LED 1 & LED 2 printf("SD Test O.K!!!r\n"); GPIO_ResetBits(GPIOA, (GPIO_Pin_1|GPIO_Pin_2) ); } //printf("[DEBUG] state : %d\r\n", state); printf("[DEBUG] CID / MID : 0x%.2X\r\n", cid[0]); printf("[DEBUG] CID / OID : %c%c\r\n", cid[1], cid[2]); printf("[DEBUG] CID / PNM : %c%c%c%c%c\r\n", cid[3], cid[4], cid[5], cid[6], cid[7]); /* Network Configuration */ setSHAR(mac_addr); getSHAR(tmp); printf(" MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); setSIPR(src_addr); getSIPR(tmp); printf("IP ADDRESS : %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); setGAR(gw_addr); getGAR(tmp); printf("GW ADDRESS : %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); setSUBR(sub_addr); getSUBR(tmp); printf("SN MASK: %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); while(1) { loopback_tcps(0, test_buf, 5000); } }
/** * @brief Main routine for WIZwiki-W7500 * @return Function should not exit. */ int main(void) { uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x71, 0x72, 0x77}; uint8_t src_addr[4] = {192, 168, 77, 9}; uint8_t gw_addr[4] = {192, 168, 77, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; uint8_t tmp[8]; uint32_t toggle = 1; /* Set Systme init */ SystemInit(); /* UART0 and UART1 configuration*/ //UART_StructInit(&UART_InitStructure); /* Configure UART1 */ //UART_Init(UART1,&UART_InitStructure); S_UART_Init(115200); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __W7500P__ *(volatile uint32_t *)(0x41003070) = 0x61; *(volatile uint32_t *)(0x41003054) = 0x61; #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); #endif /* Network Configuration (Default setting) */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); printf("======W%d NET CONF : DHCP======\r\n",_WIZCHIP_); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); /* DHCP client Initialization */ DHCP_init(SOCK_DHCP, test_buf); /* DHCP IP allocation and check the DHCP lease time (for IP renewal) */ while(1) { switch(DHCP_run()) { case DHCP_IP_ASSIGN: case DHCP_IP_CHANGED: /* If this block empty, act with default_ip_assign & default_ip_update */ // // This example calls the registered 'my_ip_assign' in the two case. // // Add to ... // // break; case DHCP_IP_LEASED: // if(toggle) { getSIPR(tmp); printf("> DHCP IP : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getGAR(tmp); printf("> DHCP GW : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); getSUBR(tmp); printf("> DHCP SN : %d.%d.%d.%d\r\n", tmp[0], tmp[1], tmp[2], tmp[3]); toggle = 0; printf("===========================\r\n"); printf("DHCP LEASED TIME : %d Sec\r\n", getDHCPLeasetime()); } // TO DO YOUR NETWORK APPs. while(1) { httpclient(SOCK_HTTPC, gDATABUF, PORT_HTTPC); } break; case DHCP_FAILED: /* ===== Example pseudo code ===== */ // The below code can be replaced your code or omitted. // if omitted, retry to process DHCP my_dhcp_retry++; if(my_dhcp_retry > MY_MAX_DHCP_RETRY) { #if DEBUG_MODE != DEBUG_NO printf(">> DHCP %d Failed\r\n",my_dhcp_retry); #endif my_dhcp_retry = 0; DHCP_stop(); // if restart, recall DHCP_init() } break; default: break; } } }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x01, 0x02, 0x03}; uint8_t src_addr[4] = {192, 168, 77, 123}; uint8_t gw_addr[4] = {192, 168, 77, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; uint8_t tmp[8]; /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set Systme init */ SystemInit(); /* Configure UART2 */ S_UART_Init(115200); printf("run \r\n"); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __W7500P__ *(volatile uint32_t *)(0x41003070) = 0x61; *(volatile uint32_t *)(0x41003054) = 0x61; #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO); //mdio_error_check(GPIOB, MDC, MDIO); //need verify... /* PHY Link Check via gpio mdio */ while( link() == 0x0) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif /* Network Configuration */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); printf("TEST- START \r\n"); while(1) { loopback_tcps(0, test_buf, 5000); } }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x01, 0x02, 0x03}; uint8_t src_addr[4] = {192, 168, 0, 9}; uint8_t gw_addr[4] = {192, 168, 0, 1}; uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server uint8_t tmp[8]; int32_t ret; uint16_t port=5000, size = 0, sentsize=0; uint8_t destip[4]; uint16_t destport; *(volatile uint32_t *)(0x41001014) = 0x0060100; //clock setting 48MHz /* External Clock */ //CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set Systme init */ SystemInit(); SSP0_Initialize(); SSP1_Initialize(); GPIO_Initialize(); GPIO_SetBits(GPIOC, GPIO_Pin_8); // LED red off GPIO_SetBits(GPIOC, GPIO_Pin_9); // LED green off GPIO_ResetBits(GPIOC, GPIO_Pin_6); // Test off /* UART Init */ UART_StructInit(&UART_InitStructure); UART_Init(UART1,&UART_InitStructure); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif printf("PHY is linked. \r\n"); #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); //mdio_error_check(GPIOB, MDC, MDIO); //need verify... /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif /* Network Configuration */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf(" MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %d.%d.%d.%d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); printf(" TEST- START \r\n"); while(1) { switch(getSn_SR(SOCK_NUM)) { case SOCK_ESTABLISHED: if(getSn_IR(SOCK_NUM) & Sn_IR_CON) { getSn_DIPR(SOCK_NUM, destip); destport = getSn_DPORT(SOCK_NUM); printf("%d:Connected - %d.%d.%d.%d : %d\r\n",SOCK_NUM, destip[0], destip[1], destip[2], destip[3], destport); setSn_IR(SOCK_NUM,Sn_IR_CON); } if((size = getSn_RX_RSR(SOCK_NUM)) > 0) // Don't need to check SOCKERR_BUSY because it doesn't not occur. { if(size > DATA_BUF_SIZE) size = DATA_BUF_SIZE; ret = recv(SOCK_NUM, test_buf, size); if(ret <= 0) return ret; // check SOCKERR_BUSY & SOCKERR_XXX. For showing the occurrence of SOCKERR_BUSY. /* Send only data to SSP1 */ for (TxIdx=0; TxIdx<size; TxIdx++) { SSP_SendData(SSP0, test_buf[TxIdx]); while( SSP_GetFlagStatus(SSP0, SSP_FLAG_BSY) ); } /* Receive only data from SSP0 */ while(SSP_GetFlagStatus(SSP1, SSP_FLAG_RNE)) { SSP1_Buffer_Rx[RxIdx] = SSP_ReceiveData(SSP1); RxIdx++; } RxIdx=0; sentsize = 0; while(size != sentsize) { ret = send(SOCK_NUM, SSP1_Buffer_Rx+sentsize, size-sentsize); if(ret < 0) { close(SOCK_NUM); return ret; } sentsize += ret; // Don't care SOCKERR_BUSY, because it is zero. } } break; case SOCK_CLOSE_WAIT: printf("%d:CloseWait\r\n",SOCK_NUM); if((ret = disconnect(SOCK_NUM)) != SOCK_OK) return ret; printf("%d:Socket Closed\r\n", SOCK_NUM); break; case SOCK_INIT: printf("%d:Listen, TCP server loopback, port [%d]\r\n", SOCK_NUM, port); if( (ret = listen(SOCK_NUM)) != SOCK_OK) return ret; break; case SOCK_CLOSED: printf("%d:TCP server loopback start\r\n",SOCK_NUM); if((ret = socket(SOCK_NUM, Sn_MR_TCP, port, 0x00)) != SOCK_NUM) return ret; printf("%d:Socket opened\r\n",SOCK_NUM); break; default: break; } } }
/** * @brief Main program * @param None * @retval None */ int main() { //uint8_t tx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t rx_size[8] = { 2, 2, 2, 2, 2, 2, 2, 2 }; //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0x33}; //uint8_t src_addr[4] = {192, 168, 0, 80}; //uint8_t gw_addr[4] = {192, 168, 0, 1}; //uint8_t sub_addr[4] = {255, 255, 255, 0}; //uint8_t dns_server[4] = {8, 8, 8, 8}; // for Example domain name server //uint8_t tmp[8]; //int ret; /* External Clock */ CRG_PLL_InputFrequencySelect(CRG_OCLK); /* Set System init */ SystemInit(); /* UART Init */ UART_StructInit(&UART_InitStructure); UART_Init(UART_DEBUG,&UART_InitStructure); /* SysTick_Config */ SysTick_Config((GetSystemClock()/1000)); /* Set WZ_100US Register */ setTIC100US((GetSystemClock()/10000)); //getTIC100US(); //printf(" GetSystemClock: %X, getTIC100US: %X, (%X) \r\n", // GetSystemClock, getTIC100US(), *(uint32_t *)TIC100US); LED_Init(LED1); LED_Init(LED2); LED_On(LED1); LED_Off(LED2); BOOT_Pin_Init(); /* Load Configure Information */ load_S2E_Packet_from_storage(); UART_Configuration(); /* Check MAC Address */ check_mac_address(); Timer0_Configuration(); #ifdef _MAIN_DEBUG_ uint8_t tmpstr[6] = {0,}; ctlwizchip(CW_GET_ID,(void*)tmpstr); printf("\r\n============================================\r\n"); printf(" WIZnet %s EVB Demo v%d.%.2d\r\n", tmpstr, VER_H, VER_L); printf("============================================\r\n"); printf(" WIZwiki Platform based TFTP App Example\r\n"); printf("============================================\r\n"); #endif #ifdef __DEF_USED_IC101AG__ //For using IC+101AG *(volatile uint32_t *)(0x41003068) = 0x64; //TXD0 - set PAD strengh and pull-up *(volatile uint32_t *)(0x4100306C) = 0x64; //TXD1 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003070) = 0x64; //TXD2 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003074) = 0x64; //TXD3 - set PAD strengh and pull-up *(volatile uint32_t *)(0x41003050) = 0x64; //TXE - set PAD strengh and pull-up #endif #ifdef __DEF_USED_MDIO__ /* mdio Init */ mdio_init(GPIOB, MDC, MDIO ); /* PHY Link Check via gpio mdio */ while( link() == 0x0 ) { printf("."); delay(500); } printf("PHY is linked. \r\n"); #else delay(1000); delay(1000); #endif #if 0 /* Network Configuration */ setSHAR(mac_addr); setSIPR(src_addr); setGAR(gw_addr); setSUBR(sub_addr); getSHAR(tmp); printf("MAC ADDRESS : %.2X:%.2X:%.2X:%.2X:%.2X:%.2X\r\n",tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],tmp[5]); getSIPR(tmp); printf("IP ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getGAR(tmp); printf("GW ADDRESS : %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); getSUBR(tmp); printf("SN MASK: %.3d.%.3d.%.3d.%.3d\r\n",tmp[0],tmp[1],tmp[2],tmp[3]); /* Set Network Configuration */ //wizchip_init(tx_size, rx_size); #else Net_Conf(); #endif //TFTP_init(SOCK_TFTP, socket_buf); while (1) { if(g_op_mode == NORMAL_MODE) { do_udp_config(SOCK_CONFIG); } else { if(TFTP_run() != TFTP_PROGRESS) g_op_mode = NORMAL_MODE; } } return 0; }