Loop
//***************************************LOOP**********************************************
void loop()
{
// Serial.println(str);
// Serial.print("freeMemory()=");
// Serial.println(freeMemory());
// delay(2000);
int bufLength;
Client client = server.available();
if (client) {
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (inString.length() < maxLength) {
//inString.append(c);
inString += c;
}
if (c == '\n' && current_line_is_blank) {
if (inString.indexOf("?") > -1) {
int Pos_r = inString.indexOf("r");
int Pos_g = inString.indexOf("g", Pos_r);
int Pos_b = inString.indexOf("b", Pos_g);
int End = inString.indexOf("H", Pos_b);
if(End < 0){
End = inString.length() + 1;
}
bufLength = ((Pos_g) - (Pos_r+2));
if(bufLength > 4){ //dont overflow the buffer
bufLength = 4;
}
inString.substring((Pos_r+2), (Pos_g-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
r = atoi(colorBuff);
bufLength = ((Pos_b) - (Pos_g+2));
if(bufLength > 4){ //dont overflow the buffer
bufLength = 4;
}
inString.substring((Pos_g+2), (Pos_b-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
g = atoi(colorBuff);
bufLength = ((End) - (Pos_b+2));
if(bufLength > 4){ //dont overflow the buffer
bufLength = 4;
}
inString.substring((Pos_b+2), (End-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
b = atoi(colorBuff);
/* remnant from having 4 channels
if (c == '\n' && current_line_is_blank) {
if (inString.indexOf("?") > -1) {
int Pos_r = inString.indexOf("r");
int Pos_g = inString.indexOf("g", Pos_r);
int Pos_b = inString.indexOf("b", Pos_g);
int Pos_w = inString.indexOf("w", Pos_b);
int End = inString.indexOf("H", Pos_w);
if(End < 0){
End = inString.length() + 1;
}
bufLength = ((Pos_g) - (Pos_r+2));
if(bufLength > 5){ //dont overflow the buffer
bufLength = 5;
}
inString.substring((Pos_r+2), (Pos_g-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
r = atoi(colorBuff);
bufLength = ((Pos_b) - (Pos_g+2));
if(bufLength > 5){ //dont overflow the buffer
bufLength = 5;
}
inString.substring((Pos_g+2), (Pos_b-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
g = atoi(colorBuff);
bufLength = ((Pos_w) - (Pos_b+2));
if(bufLength > 5){ //dont overflow the buffer
bufLength = 5;
}
inString.substring((Pos_b+2), (Pos_w-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
b = atoi(colorBuff);
bufLength = ((End) - (Pos_w+2));
if(bufLength > 5){ //dont overflow the buffer
bufLength = 5;
}
inString.substring((Pos_w+2), (End-1)).toCharArray(colorBuff, bufLength); //transfer substring to buffer
w = atoi(colorBuff);
// if(bufLength > 5){ //dont overflow the buffer
// bufLength = 5;
*/
}
client.println("<html>");
client.println("<head>");
client.print("<title> LEDLink GUI</title>");
client.println("</head>");
client.println();
client.println("<body>");
// client.println("<center>");
client.print("<h2><font face=verdana color=green>LEDLink</font></h2> ");
client.println();
client.print("<font face=verdana>");
client.print("<h3><a href=\"http://www.advill.com\"<"
"target=\"_blank\">Advanced Illumination</a></h3>");
// client.println("</center>");
client.println();
client.println("<fieldset style=width:275>");
client.println("<legend>Channel Settings</legend>");
client.println("<table>");
client.println("<tr></td>Enter Values 0-255<td></tr></td>");
client.println();
client.println("
");
client.println("
");
client.println("<tr><td><form method=get>Channel 0: <input type=text size=10 name=r />""</tr></td>");
client.println("<tr><td><form method=get>Channel 1: <input type=text size=10 name=g />""</tr></td>");
client.println("<tr><td><form method=get>Channel 2: <input type=text size=10 name=b />""</tr></td>");
// client.println("<tr><td><form method=get>Channel 3: <input type=text size=10 name=w/>""</tr></td>");
client.println("<tr><td> <input name=H type=submit value=Program align=RIGHT></form></tr></table>");
setChannelPower();
// TODO: Move this to a function to set channel power
// function should check for value between 0-255
// if >255, set value to 255
client.println("</fieldset>");
client.println("
");
client.println();
client.println("<fieldset style=width:275>");
client.println("<legend>Status/Information</legend>");
client.println("
");
client.println();
client.println("Channel 0: ");
client.print(r,DEC);
client.println("
");
client.println();
client.println("Channel 1: ");
client.print(g,DEC);
client.println("
");
client.println();
client.println("Channel 2: ");
client.print(b,DEC);
client.println("
");
client.println();
client.println("
");
client.println();
/*
client.println("Channel 3: ");
client.print(w);
client.println("
");
client.println();
client.println("
");
client.println();
*/
client.println(" Software Version: ");
client.print(swVer);
client.println("
");
client.println();
client.println(" Firmware Version: ");
client.print(fwVer);
client.println("
");
client.println();
client.println(" Serial Number: ");
client.print(serialNum);
client.println("
");
client.println();
client.println("</fieldset>");
client.print("</font>");
client.println("</body></html>");
break;
}
if (c == '\n') {
current_line_is_blank = true;
}
else if (c != '\r') {
current_line_is_blank = false;
}
}
}
delay(1);
inString = "";
client.stop();
}
}