server/ RGB controller

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>&nbsp;<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();


  }
}