Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Portions of this code written by Gregory Fenton
- http://labby.co.uk/2012/08/arduino-visual-icmp-ping-server-monitor-icmp-echo-request/
- */
- #include <SPI.h>
- #include <Ethernet.h>
- #include <EthernetUdp.h> // UDP library from: bjoern@cs.stanford.edu 12/30/2008
- #include <ICMPPing.h>
- byte mac[] = {0xDE, 0xAD, 0xBE, 0xDD, 0xFE, 0xED}; // mac address for ethernet shield
- byte ip[] = {192,168,0,177}; // ip address for ethernet shield
- byte pingAddr[] = {192,168,0,10}; // ip address to ping
- bool pingStatus = false;
- SOCKET pingSocket = 0;
- char buffer [256];
- int delayMS = 5 * 1000; // delay between successive pings (60 * 1000 = 60 seconds)
- #define serialOut 1
- #define ledOut 1
- #ifdef ledOut
- #define ledPing 2
- #define ledOk 3
- #define ledFail 4
- #endif
- //udp stuff
- unsigned int localPort = 8888; // local port to listen on
- // buffers for receiving and sending data
- // greg: unused in this code?
- //char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
- //char ReplyBuffer[] = "acknowledged"; // a string to send back
- // An EthernetUDP instance to let us send and receive packets over UDP
- EthernetUDP Udp;
- //end udp stuff
- // greg: unused in this code?
- // int val=0;
- bool connected = false;
- void setup()
- {
- #ifdef serialOut
- // start serial port:
- Serial.begin(9600);
- Serial.println("Starting ethernet connection");
- #endif
- //start Ethernet
- // if (Ethernet.begin(mac) == 0) {
- #ifdef serialOut
- // Serial.println("Failed to configure Ethernet using DHCP");
- #endif
- // DHCP failed, so use a fixed IP address:
- Ethernet.begin(mac, ip);
- // start udp connection
- Udp.begin(localPort);
- // }
- }
- #ifdef serialOut
- void startPing()
- {
- Serial.println("Ping begin");
- }
- void endPing()
- {
- Serial.println("Ping fin");
- }
- #endif
- #ifdef ledOut
- void pingSuccess()
- {
- #ifdef serialOut
- Serial.println("Ping great success");
- #endif
- if(pingStatus == false) // we don't need to constantly turn the light on
- {
- #ifdef serialOut
- Serial.println("Living Room - Sofa light ON");
- #endif
- Udp.beginPacket("192.168.0.7", 9760);
- Udp.write("678,!R2D1F1|");
- Udp.endPacket();
- // greg: unused in this code?
- // val = random(300);
- pingStatus = true;
- }
- }
- void pingFail()
- {
- #ifdef serialOut
- Serial.println("Ping fail");
- #endif
- if(pingStatus == true) // we don't need to constantly turn the light off
- {
- #ifdef serialOut
- Serial.println("Living Room - Sofa light OFF");
- #endif
- Udp.beginPacket("192.168.0.7", 9760);
- Udp.write("678,!R2D1F0|");
- Udp.endPacket();
- // greg: unused in this code?
- // val = random(300);
- pingStatus = false;
- }
- }
- #endif
- void loop()
- {
- bool pingRet; // pingRet stores the ping() success (true/false)
- #ifdef ledOut
- startPing();
- #endif
- ICMPPing ping(pingSocket);
- pingRet = ping(4, pingAddr, buffer);
- #ifdef ledOut
- delay(250);
- endPing();
- #endif
- #ifdef seriallOut
- Serial.println(buffer);
- #endif
- #ifdef ledOut
- if(pingRet) // Failure
- pingSuccess();
- else
- pingFail();
- #endif
- delay(delayMS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement