Revised to prevent DHCPClient::discover from hanging.
Fork of WIZ820ioInterface by
Diff: WIZ820ioInterface.cpp
- Revision:
- 6:c466db1cd20b
- Parent:
- 5:fb15c35d1e28
- Child:
- 9:c1722862c13b
--- a/WIZ820ioInterface.cpp Tue Aug 27 12:50:11 2013 +0000 +++ b/WIZ820ioInterface.cpp Sun Dec 01 18:40:14 2013 +0000 @@ -41,33 +41,56 @@ return r; } } - return join(); + if (WIZ820io::join() == false) return -1; + return 0; } int WIZ820ioInterface::disconnect() { - return WIZ820io::disconnect(); + if (WIZ820io::disconnect() == false) return -1; + return 0; } char* WIZ820ioInterface::getIPAddress() { uint32_t ip = reg_rd<uint32_t>(SIPR); - snprintf(ip_string, sizeof(ip_string), "%d.%d.%d.%d", (ip>>24)&0xff,(ip>>16)&0xff,(ip>>8)&0xff,ip&0xff); - ip_set = true; + snprintf(ip_string, sizeof(ip_string), "%d.%d.%d.%d", (ip>>24)&0xff, (ip>>16)&0xff, (ip>>8)&0xff, ip&0xff); return ip_string; } +char* WIZ820ioInterface::getNetworkMask() +{ + uint32_t ip = reg_rd<uint32_t>(SUBR); + snprintf(mask_string, sizeof(mask_string), "%d.%d.%d.%d", (ip>>24)&0xff, (ip>>16)&0xff, (ip>>8)&0xff, ip&0xff); + return mask_string; +} + +char* WIZ820ioInterface::getGateway() +{ + uint32_t ip = reg_rd<uint32_t>(GAR); + snprintf(gw_string, sizeof(gw_string), "%d.%d.%d.%d", (ip>>24)&0xff, (ip>>16)&0xff, (ip>>8)&0xff, ip&0xff); + return gw_string; +} + +char* WIZ820ioInterface::getMACAddress() +{ + uint8_t mac[6]; + reg_rd_mac(SHAR, mac); + snprintf(mac_string, sizeof(mac_string), "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + return mac_string; +} + int WIZ820ioInterface::IPrenew(int timeout_ms) { - printf("DHCP Started, waiting for IP...\n"); +// printf("DHCP Started, waiting for IP...\n"); DHCPClient dhcp; int err = dhcp.setup(timeout_ms); if (err == (-1)) { - printf("Timeout.\n"); +// printf("Timeout.\n"); return -1; } - printf("Connected, IP: %d.%d.%d.%d\n", dhcp.yiaddr[0], dhcp.yiaddr[1], dhcp.yiaddr[2], dhcp.yiaddr[3]); - ip = (dhcp.yiaddr[0]<<24) | (dhcp.yiaddr[1]<<16) | (dhcp.yiaddr[2]<<8) | dhcp.yiaddr[3]; +// printf("Connected, IP: %d.%d.%d.%d\n", dhcp.yiaddr[0], dhcp.yiaddr[1], dhcp.yiaddr[2], dhcp.yiaddr[3]); + ip = (dhcp.yiaddr[0] <<24) | (dhcp.yiaddr[1] <<16) | (dhcp.yiaddr[2] <<8) | dhcp.yiaddr[3]; gateway = (dhcp.gateway[0]<<24) | (dhcp.gateway[1]<<16) | (dhcp.gateway[2]<<8) | dhcp.gateway[3]; netmask = (dhcp.netmask[0]<<24) | (dhcp.netmask[1]<<16) | (dhcp.netmask[2]<<8) | dhcp.netmask[3]; dnsaddr = (dhcp.dnsaddr[0]<<24) | (dhcp.dnsaddr[1]<<16) | (dhcp.dnsaddr[2]<<8) | dhcp.dnsaddr[3];