59 lines
1.6 KiB
C++
59 lines
1.6 KiB
C++
// Example of EtherCard usage, contributed by Will Rose, 2012-07-05.
|
|
|
|
#include <EtherCard.h>
|
|
|
|
#define BUF_SIZE 512
|
|
|
|
byte mac[] = { 0x00, 0x04, 0xA3, 0x21, 0xCA, 0x38 }; // Nanode MAC address.
|
|
|
|
uint8_t ip[] = { 192, 168, 1, 8 }; // The fallback board address.
|
|
uint8_t dns[] = { 192, 168, 1, 20 }; // The DNS server address.
|
|
uint8_t gateway[] = { 192, 168, 1, 20 }; // The gateway router address.
|
|
uint8_t subnet[] = { 255, 255, 255, 0 }; // The subnet mask.
|
|
byte Ethernet::buffer[BUF_SIZE];
|
|
byte fixed; // Address fixed, no DHCP
|
|
|
|
void setup(void)
|
|
{
|
|
Serial.begin(57600);
|
|
delay(2000);
|
|
|
|
/* Check that the Ethernet controller exists */
|
|
Serial.println("Initialising the Ethernet controller");
|
|
if (ether.begin(sizeof Ethernet::buffer, mac, 8) == 0) {
|
|
Serial.println( "Ethernet controller NOT initialised");
|
|
while (true)
|
|
/* MT */ ;
|
|
}
|
|
|
|
/* Get a DHCP connection */
|
|
Serial.println("Attempting to get an IP address using DHCP");
|
|
fixed = false;
|
|
if (ether.dhcpSetup()) {
|
|
ether.printIp("Got an IP address using DHCP: ", ether.myip);
|
|
}
|
|
/* If DHCP fails, start with a hard-coded address */
|
|
else {
|
|
ether.staticSetup(ip, gateway, dns);
|
|
ether.printIp("DHCP FAILED, using fixed address: ", ether.myip);
|
|
fixed = true;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
void loop(void)
|
|
{
|
|
word rc;
|
|
|
|
/* These function calls are required if ICMP packets are to be accepted */
|
|
rc = ether.packetLoop(ether.packetReceive());
|
|
Serial.print("ether.packetLoop() returned ");
|
|
Serial.println(rc, DEC);
|
|
|
|
// For debugging
|
|
delay(5000);
|
|
|
|
return;
|
|
}
|