W5200(WIZ820io) network interface

Committer:
va009039
Date:
Sat Apr 14 17:21:11 2012 +0000
Revision:
0:61831b843b44
Child:
1:803123933c5a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:61831b843b44 1 // w5200NetIf.cpp 2012/4/13
va009039 0:61831b843b44 2 #include "w5200NetIf.h"
va009039 0:61831b843b44 3 #include "DHCPClient.h"
va009039 0:61831b843b44 4 #include "w5100.h"
va009039 0:61831b843b44 5
va009039 0:61831b843b44 6 w5200NetIf:: w5200NetIf():MyNetIf(), m_netmask(255,255,255,255), m_gateway(), m_hostname(NULL) {
va009039 0:61831b843b44 7 m_hostname = NULL;
va009039 0:61831b843b44 8 m_useDhcp = true;
va009039 0:61831b843b44 9 }
va009039 0:61831b843b44 10
va009039 0:61831b843b44 11 w5200NetIf::w5200NetIf(IpAddr ip, IpAddr netmask, IpAddr gateway, IpAddr dns) :MyNetIf(), m_hostname(NULL) {
va009039 0:61831b843b44 12 m_hostname = NULL;
va009039 0:61831b843b44 13 m_ip = ip;
va009039 0:61831b843b44 14 m_netmask = netmask;
va009039 0:61831b843b44 15 m_gateway = gateway;
va009039 0:61831b843b44 16 m_dns = dns;
va009039 0:61831b843b44 17 m_useDhcp = false;
va009039 0:61831b843b44 18 }
va009039 0:61831b843b44 19
va009039 0:61831b843b44 20 int w5200NetIf::IPrenew(int timeout_ms) {
va009039 0:61831b843b44 21 printf("DHCP Started, waiting for IP...\n");
va009039 0:61831b843b44 22 DHCPClient dhcp;
va009039 0:61831b843b44 23 int err = dhcp.setup(timeout_ms);
va009039 0:61831b843b44 24 if (err == (-1)) {
va009039 0:61831b843b44 25 printf("Timeout.\n");
va009039 0:61831b843b44 26 return err;
va009039 0:61831b843b44 27 }
va009039 0:61831b843b44 28 printf("Connected, IP: %d.%d.%d.%d\n", dhcp.yiaddr[0], dhcp.yiaddr[1], dhcp.yiaddr[2], dhcp.yiaddr[3]);
va009039 0:61831b843b44 29 m_ip = IpAddr(dhcp.yiaddr[0], dhcp.yiaddr[1], dhcp.yiaddr[2], dhcp.yiaddr[3]);
va009039 0:61831b843b44 30 m_netmask = IpAddr(dhcp.netmask[0],dhcp.netmask[1],dhcp.netmask[2],dhcp.netmask[3]);
va009039 0:61831b843b44 31 m_gateway = IpAddr(dhcp.gateway[0],dhcp.gateway[1],dhcp.gateway[2],dhcp.gateway[3]);
va009039 0:61831b843b44 32 uint8_t t[4];
va009039 0:61831b843b44 33 t[0] = m_ip[0];
va009039 0:61831b843b44 34 t[1] = m_ip[1];
va009039 0:61831b843b44 35 t[2] = m_ip[2];
va009039 0:61831b843b44 36 t[3] = m_ip[3];
va009039 0:61831b843b44 37 W5100.writeSIPR(t);
va009039 0:61831b843b44 38 t[0] = m_netmask[0];
va009039 0:61831b843b44 39 t[1] = m_netmask[1];
va009039 0:61831b843b44 40 t[2] = m_netmask[2];
va009039 0:61831b843b44 41 t[3] = m_netmask[3];
va009039 0:61831b843b44 42 W5100.writeSUBR(t);
va009039 0:61831b843b44 43 t[0] = m_gateway[0];
va009039 0:61831b843b44 44 t[1] = m_gateway[1];
va009039 0:61831b843b44 45 t[2] = m_gateway[2];
va009039 0:61831b843b44 46 t[3] = m_gateway[3];
va009039 0:61831b843b44 47 W5100.writeGAR(t);
va009039 0:61831b843b44 48 return err;
va009039 0:61831b843b44 49 }
va009039 0:61831b843b44 50
va009039 0:61831b843b44 51 int w5200NetIf::IPrelease(int timeout_ms) {
va009039 0:61831b843b44 52 return -1;
va009039 0:61831b843b44 53 }
va009039 0:61831b843b44 54
va009039 0:61831b843b44 55 int w5200NetIf::setup(int timeout_ms) {
va009039 0:61831b843b44 56 MyNetIf::init();
va009039 0:61831b843b44 57 uint8_t mac[6] = {0x00,0x00,0x5e,0x00,0x01,0x01};
va009039 0:61831b843b44 58 W5100.setMACAddress(mac);
va009039 0:61831b843b44 59 printf("HW Addr is : %02x:%02x:%02x:%02x:%02x:%02x.\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
va009039 0:61831b843b44 60 if(! m_useDhcp) {
va009039 0:61831b843b44 61 return 0;
va009039 0:61831b843b44 62 }
va009039 0:61831b843b44 63 return IPrenew(timeout_ms);
va009039 0:61831b843b44 64 }