LeeT WiFiLamp code and test
Dependencies: ESP8266_WebServer mbed
Fork of WiFiLamp by
Diff: main.cpp
- Revision:
- 26:ea5e0ff46492
- Parent:
- 25:841fc9daffa5
diff -r 841fc9daffa5 -r ea5e0ff46492 main.cpp --- a/main.cpp Tue Jan 06 18:44:43 2015 +0000 +++ b/main.cpp Wed Jan 07 21:36:45 2015 +0000 @@ -52,6 +52,34 @@ ledStrip.write(colors, LED_COUNT); } +void setDiscoColor( ) +{ + for ( int c = 0; c < LED_COUNT; c++ ) + { + colors[c].red = rand()%255; + colors[c].green = rand()%255; + colors[c].blue = rand()%255; + } + + ledStrip.write(colors, LED_COUNT); +} + +Timer DiscoTimer; +#define DiscoDelay 100 + +int lampMode = 0; + +unsigned long heapSize() +{ + char stackVariable; + void *heap; + unsigned long result; + heap = malloc(4); + result = (uint8_t*)&stackVariable - (uint8_t*)heap; + free(heap); + return result; +} + void sendConfigJSONReply(int linkID, const char* result) { sprintf(temp, jsonConfigReply, opMode, stationIP.c_str(), ssid.c_str(), result); server.SendReply(linkID, temp, mimeJSON, 0); @@ -63,7 +91,7 @@ pc.attach(&pcrxint); #endif - pc.printf("WiFi Lamp - %s...\r\n", VERSION); + pc.printf("\r\nWiFi Lamp - %s...\r\n", VERSION); setColor( 25, 0, 0); @@ -73,6 +101,7 @@ wifiSerial.attach(&rxint); #ifdef DEBUG_WIFI server.debugSerial = &pc; + pc.printf("Debug WiFi Enabled!\r\n"); #endif wait_ms(1000); @@ -84,7 +113,6 @@ server.ResetModule(); wifiOn = 1; - std::string fwVer = server.GetFirmwareVersion(); pc.printf("ESP Firmware Version: %s\r\n", fwVer.c_str()); @@ -112,6 +140,9 @@ wait_ms(500); setColor( 0, 0, 0); + pc.printf("Heap Memory %d", heapSize()); + DiscoTimer.start(); + std::string httpReply; while(true) { ESP8266_WebRequest* request = server.GetRequest(); @@ -120,7 +151,7 @@ for( std::map<std::string,std::string>::iterator it = request->Parameters.begin(); it!=request->Parameters.end(); ++it ) { pc.printf("HTTP Parameter %s = %s\r\n", it->first.c_str(), it->second.c_str()); } - if( request->URI == "/" ) { + if( request->URI == "/" || request->URI == "/index.html" ) { httpReply = htmlHead; httpReply += "<table><tr><td align='right'><a href='config'><img src='config.gif' /></a></td></tr>"; httpReply += "<tr><td align='center'>"; @@ -185,11 +216,21 @@ } else if( request->URI == "/wifilamp.css" ) { server.SendReply(request->LinkID, css, strlen(css), mimeCSS); } else if( request->URI == "/colormap.gif" ) { - server.SendReply(request->LinkID, (char*)colormap, sizeof(colormap), mimeGIF); + server.SendReply(request->LinkID, (char*)colorMap, sizeof(colorMap), mimeGIF); } else if( request->URI == "/config.gif" ) { server.SendReply(request->LinkID, (char*)configIcon, sizeof(configIcon), mimeGIF); + } else if( request->URI == "/robtos.txt" ) { + server.SendReply(request->LinkID, robotsTxt, strlen(robotsTxt), mimeText); + } else if( request->URI == "/favicon.ico" ) { + server.SendReply(request->LinkID, (char*)favIcon, sizeof(favIcon), "image/x-icon"); + } else if( request->URI == "/disco" ) { + lampMode = 2; // All colours + DiscoTimer.reset(); + server.SendReply(request->LinkID, "OK", mimeText, 0); } else if( request->URI == "/setcolour" || request->URI == "/setcolor" ) { int r=0, g=0, b=0; + + lampMode = 1; // All LED 1 colour if(request->Parameters.count("r") > 0) r=atoi(request->Parameters["r"].c_str()); if(request->Parameters.count("g") > 0) g=atoi(request->Parameters["g"].c_str()); @@ -206,5 +247,20 @@ pc.printf("\r\nHTTP Reply Sent\r\n"); delete request; } + if( lampMode == 2 && DiscoTimer.read_ms() > DiscoDelay ) { + setDiscoColor(); + // Delay random colour change, else it just looks white + DiscoTimer.reset(); + } +/* + if( lampMode == 3 ) { + // strobe + } + + if( lampMode == 4 ) { + // fade + } + +*/ } } \ No newline at end of file