Last active
August 13, 2016 08:23
-
-
Save izumogeiger/117f37a40167cf964d0264dd1e0b0f6d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Ping a remote server, also uses DHCP and DNS. | |
// 2011-06-12 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php | |
#include <EtherCard.h> | |
// ethernet interface mac address, must be unique on the LAN | |
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x32,0x31 }; | |
byte Ethernet::buffer[700]; | |
static uint32_t timer; | |
// called when a ping comes in (replies to it are automatic) | |
static void gotPinged (byte* ptr) { | |
ether.printIp(">>> ping from: ", ptr); | |
} | |
void setup () { | |
Serial.begin(9600); | |
Serial.println("\n[pings]"); | |
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) | |
Serial.println(F("Failed to access Ethernet controller")); | |
if (!ether.dhcpSetup()) | |
Serial.println(F("DHCP failed")); | |
ether.printIp("IP: ", ether.myip); | |
ether.printIp("GW: ", ether.gwip); | |
#if 1 | |
// use DNS to locate the IP address we want to ping | |
if (!ether.dnsLookup(PSTR("www.google.com"))) | |
Serial.println("DNS failed"); | |
#else | |
ether.parseIp(ether.hisip, "74.125.77.99"); | |
#endif | |
ether.printIp("SRV: ", ether.hisip); | |
// call this to report others pinging us | |
ether.registerPingCallback(gotPinged); | |
timer = -9999999; // start timing out right away | |
Serial.println(); | |
} | |
void loop () { | |
word len = ether.packetReceive(); // go receive new packets | |
word pos = ether.packetLoop(len); // respond to incoming pings | |
// report whenever a reply to our outgoing ping comes back | |
if (len > 0 && ether.packetLoopIcmpCheckReply(ether.hisip)) { | |
Serial.print(" "); | |
Serial.print((micros() - timer) * 0.001, 3); | |
Serial.println(" ms"); | |
} | |
// ping a remote server once every few seconds | |
if (micros() - timer >= 5000000) { | |
ether.printIp("Pinging: ", ether.hisip); | |
timer = micros(); | |
ether.clientIcmpRequest(ether.hisip); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This is a demo of the RBBB running as webserver with the Ether Card | |
// 2010-05-28 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php | |
#include <EtherCard.h> | |
// ethernet interface mac address, must be unique on the LAN | |
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x32,0x33 }; | |
static byte myip[] = { 192,168,1,222 }; | |
byte Ethernet::buffer[500]; | |
BufferFiller bfill; | |
void setup () { | |
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0) | |
Serial.println(F("Failed to access Ethernet controller")); | |
ether.staticSetup(myip); | |
} | |
static word homePage() { | |
long t = millis() / 1000; | |
word h = t / 3600; | |
byte m = (t / 60) % 60; | |
byte s = t % 60; | |
bfill = ether.tcpOffset(); | |
bfill.emit_p(PSTR( | |
"HTTP/1.0 200 OK\r\n" | |
"Content-Type: text/html\r\n" | |
"Pragma: no-cache\r\n" | |
"\r\n" | |
"<meta http-equiv='refresh' content='1'/>" | |
"<title>RBBB server</title>" | |
"<h1>$D$D:$D$D:$D$D</h1>"), | |
h/10, h%10, m/10, m%10, s/10, s%10); | |
return bfill.position(); | |
} | |
void loop () { | |
word len = ether.packetReceive(); | |
word pos = ether.packetLoop(len); | |
if (pos) // check if valid tcp data is received | |
ether.httpServerReply(homePage()); // send web page data | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment