I think this will be the last step in helping me figure out how to write libraries. Here is the code as it stands now:
sketch:
#include <SPI.h>
#include <Ethernet.h>
#include "eth.h"
Eth eth;
EthernetServer server(80);
void setup(){
Serial.begin(9600);
Serial.println("Setup has begun");
eth.init();
}
void loop(){
//Serial.println("Loop");
eth.servClient();
}
eth.h:
#ifndef eth_h
#define eth_h
#include <SPI.h>
#include <Ethernet.h>
#include "Arduino.h"
class Eth{
public:
void init();
void servClient();
private:
byte mac[5];
};
#endif
eth.cpp:
#include "Arduino.h"
#include "eth.h"
void Eth::init(){
mac[0] = 0xDE;
mac[1] = 0xAD;
mac[2] = 0xBE;
mac[3] = 0xEF;
mac[4] = 0xFE;
mac[5] = 0xED;
IPAddress ip(192,168,1,177);
extern EthernetServer server;
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void Eth::servClient(){
Serial.print("Server is at: ");
Serial.println(Ethernet.localIP());
//Serial.println("servClient called");
extern EthernetServer server;
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><title>Lorens Page</title></head>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
//client.print("Transport is currently: ");
//client.print(stat);
client.println("
");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("
");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
Clients are unable to connect to the server. I have a feeling this has something to do with the way that I have declared "EthernetServer server(80)" and the way I'm using extern.
Are the functions "init" and "serveClient" in the Eth class creating their own instance of server?
Again many many thanks!
Loren