Statistics
| Branch: | Revision:

root / arduino-1.0 / libraries / Ethernet / Ethernet.cpp @ 58d82c77

History | View | Annotate | Download (2.46 KB)

1
#include "w5100.h"
2
#include "Ethernet.h"
3
#include "Dhcp.h"
4

    
5
// XXX: don't make assumptions about the value of MAX_SOCK_NUM.
6
uint8_t EthernetClass::_state[MAX_SOCK_NUM] = { 
7
  0, 0, 0, 0 };
8
uint16_t EthernetClass::_server_port[MAX_SOCK_NUM] = { 
9
  0, 0, 0, 0 };
10

    
11
int EthernetClass::begin(uint8_t *mac_address)
12
{
13
  DhcpClass dhcp;
14

    
15
  // Initialise the basic info
16
  W5100.init();
17
  W5100.setMACAddress(mac_address);
18
  W5100.setIPAddress(IPAddress(0,0,0,0).raw_address());
19

    
20
  // Now try to get our config info from a DHCP server
21
  int ret = dhcp.beginWithDHCP(mac_address);
22
  if(ret == 1)
23
  {
24
    // We've successfully found a DHCP server and got our configuration info, so set things
25
    // accordingly
26
    W5100.setIPAddress(dhcp.getLocalIp().raw_address());
27
    W5100.setGatewayIp(dhcp.getGatewayIp().raw_address());
28
    W5100.setSubnetMask(dhcp.getSubnetMask().raw_address());
29
    _dnsServerAddress = dhcp.getDnsServerIp();
30
  }
31

    
32
  return ret;
33
}
34

    
35
void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip)
36
{
37
  // Assume the DNS server will be the machine on the same network as the local IP
38
  // but with last octet being '1'
39
  IPAddress dns_server = local_ip;
40
  dns_server[3] = 1;
41
  begin(mac_address, local_ip, dns_server);
42
}
43

    
44
void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server)
45
{
46
  // Assume the gateway will be the machine on the same network as the local IP
47
  // but with last octet being '1'
48
  IPAddress gateway = local_ip;
49
  gateway[3] = 1;
50
  begin(mac_address, local_ip, dns_server, gateway);
51
}
52

    
53
void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway)
54
{
55
  IPAddress subnet(255, 255, 255, 0);
56
  begin(mac_address, local_ip, dns_server, gateway, subnet);
57
}
58

    
59
void EthernetClass::begin(uint8_t *mac, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet)
60
{
61
  W5100.init();
62
  W5100.setMACAddress(mac);
63
  W5100.setIPAddress(local_ip._address);
64
  W5100.setGatewayIp(gateway._address);
65
  W5100.setSubnetMask(subnet._address);
66
  _dnsServerAddress = dns_server;
67
}
68

    
69
IPAddress EthernetClass::localIP()
70
{
71
  IPAddress ret;
72
  W5100.getIPAddress(ret.raw_address());
73
  return ret;
74
}
75

    
76
IPAddress EthernetClass::subnetMask()
77
{
78
  IPAddress ret;
79
  W5100.getSubnetMask(ret.raw_address());
80
  return ret;
81
}
82

    
83
IPAddress EthernetClass::gatewayIP()
84
{
85
  IPAddress ret;
86
  W5100.getGatewayIp(ret.raw_address());
87
  return ret;
88
}
89

    
90
IPAddress EthernetClass::dnsServerIP()
91
{
92
  return _dnsServerAddress;
93
}
94

    
95
EthernetClass Ethernet;