Bladeren bron

update web; fix improper PROGMEM useages

Chris Mullins 8 jaren geleden
bovenliggende
commit
7a4310dd1e

+ 0 - 1
.gitignore

@@ -2,6 +2,5 @@
 .piolibdeps
 .clang_complete
 .gcc-flags.json
-/dist
 /web/node_modules
 /web/build

File diff suppressed because it is too large
+ 2 - 2
dist/index.html.gz.h


+ 1 - 1
lib/MiLight/RgbCctPacketFormatter.h

@@ -35,7 +35,7 @@ enum MiLightRgbCctArguments {
 
 class RgbCctPacketFormatter : public PacketFormatter {
 public:
-  static uint8_t const V2_OFFSETS[][4] PROGMEM;
+  static uint8_t const V2_OFFSETS[][4];
 
   RgbCctPacketFormatter()
     : PacketFormatter(RGB_CCT_PACKET_LEN),

+ 4 - 4
lib/Udp/V6ComamndHandler.cpp

@@ -6,10 +6,10 @@
 #include <Size.h>
 
 V6CommandHandler* V6CommandHandler::ALL_HANDLERS[] = {
-  new V6RgbCctCommandHandler() PROGMEM,
-  new V6RgbwCommandHandler() PROGMEM,
-  new V6RgbCommandHandler() PROGMEM,
-  new V6CctCommandHandler() PROGMEM,
+  new V6RgbCctCommandHandler(),
+  new V6RgbwCommandHandler(),
+  new V6RgbCommandHandler(),
+  new V6CctCommandHandler()
 };
 
 const size_t V6CommandHandler::NUM_HANDLERS = size(ALL_HANDLERS);

+ 1 - 1
lib/Udp/V6CommandHandler.h

@@ -13,7 +13,7 @@ enum V6CommandTypes {
 
 class V6CommandHandler {
 public:
-  static V6CommandHandler* ALL_HANDLERS[] PROGMEM;
+  static V6CommandHandler* ALL_HANDLERS[];
   static const size_t NUM_HANDLERS;
 
   V6CommandHandler(uint16_t commandId, MiLightRadioConfig& radioConfig)

+ 11 - 11
lib/Udp/V6MiLightUdpServer.h

@@ -48,20 +48,20 @@ public:
   static uint8_t* writeInt(const T& value, uint8_t* packet);
 
 protected:
-  static V6CommandDemuxer COMMAND_DEMUXER PROGMEM;
+  static V6CommandDemuxer COMMAND_DEMUXER;
 
-  static uint8_t START_SESSION_COMMAND[] PROGMEM;
-  static uint8_t START_SESSION_RESPONSE[] PROGMEM;
-  static uint8_t COMMAND_HEADER[] PROGMEM;
-  static uint8_t COMMAND_RESPONSE[] PROGMEM;
-  static uint8_t LOCAL_SEARCH_COMMAND[] PROGMEM;
-  static uint8_t HEARTBEAT_HEADER[] PROGMEM;
-  static uint8_t HEARTBEAT_HEADER2[] PROGMEM;
+  static uint8_t START_SESSION_COMMAND[];
+  static uint8_t START_SESSION_RESPONSE[];
+  static uint8_t COMMAND_HEADER[];
+  static uint8_t COMMAND_RESPONSE[];
+  static uint8_t LOCAL_SEARCH_COMMAND[];
+  static uint8_t HEARTBEAT_HEADER[];
+  static uint8_t HEARTBEAT_HEADER2[];
 
-  static uint8_t SEARCH_COMMAND[] PROGMEM;
-  static uint8_t SEARCH_RESPONSE[] PROGMEM;
+  static uint8_t SEARCH_COMMAND[];
+  static uint8_t SEARCH_RESPONSE[];
 
-  static uint8_t OPEN_COMMAND_RESPONSE[] PROGMEM;
+  static uint8_t OPEN_COMMAND_RESPONSE[];
 
   V6Session* firstSession;
   size_t numSessions;

+ 13 - 13
lib/WebServer/MiLightHttpServer.cpp

@@ -24,7 +24,7 @@ void MiLightHttpServer::begin() {
   server.onPattern("/gateways/:device_id/:type/:group_id", HTTP_ANY, [this](const UrlTokenBindings* b) { handleUpdateGroup(b); });
   server.onPattern("/raw_commands/:type", HTTP_ANY, [this](const UrlTokenBindings* b) { handleSendRaw(b); });
   server.onPattern("/download_update/:component", HTTP_GET, [this](const UrlTokenBindings* b) { handleDownloadUpdate(b); });
-  server.on("/web", HTTP_POST, [this]() { server.send(200, TEXT_PLAIN, "success"); }, handleUpdateFile(WEB_INDEX_FILENAME));
+  server.on("/web", HTTP_POST, [this]() { server.send_P(200, TEXT_PLAIN, PSTR("success")); }, handleUpdateFile(WEB_INDEX_FILENAME));
   server.on("/about", HTTP_GET, [this]() { handleAbout(); });
   server.on("/latest_release", HTTP_GET, [this]() { handleGetLatestRelease(); });
   server.on("/system", HTTP_POST, [this]() { handleSystemPost(); });
@@ -127,7 +127,7 @@ void MiLightHttpServer::handleSystemPost() {
   if (request.containsKey("command")) {
     if (request["command"] == "restart") {
       Serial.println(F("Restarting..."));
-      server.send(200, TEXT_PLAIN, "true");
+      server.send_P(200, TEXT_PLAIN, PSTR("true"));
 
       delay(100);
 
@@ -136,7 +136,7 @@ void MiLightHttpServer::handleSystemPost() {
       handled = true;
     } else if (request["command"] == "clear_wifi_config") {
         Serial.println(F("Resetting Wifi and then Restarting..."));
-        server.send(200, TEXT_PLAIN, "true");
+        server.send_P(200, TEXT_PLAIN, PSTR("true"));
 
         delay(100);
         ESP.eraseConfig();
@@ -148,9 +148,9 @@ void MiLightHttpServer::handleSystemPost() {
   }
 
   if (handled) {
-    server.send(200, TEXT_PLAIN, "true");
+    server.send_P(200, TEXT_PLAIN, PSTR("true"));
   } else {
-    server.send(400, TEXT_PLAIN, F("{\"error\":\"Unhandled command\"}"));
+    server.send_P(400, TEXT_PLAIN, PSTR("{\"error\":\"Unhandled command\"}"));
   }
 }
 
@@ -183,11 +183,11 @@ void MiLightHttpServer::handleDownloadUpdate(const UrlTokenBindings* bindings) {
       server.sendHeader("Location", "/");
       server.send(302);
     } else {
-      server.send(500, TEXT_PLAIN, F("Failed to download update from Github. Check serial logs for more information."));
+      server.send_P(500, TEXT_PLAIN, PSTR("Failed to download update from Github. Check serial logs for more information."));
     }
   } else {
     String body = String("Unknown component: ") + component;
-    server.send(400, TEXT_PLAIN, body);
+    server.send(400, "text/plain", body);
   }
 }
 
@@ -308,7 +308,7 @@ void MiLightHttpServer::handleListenGateway(const UrlTokenBindings* bindings) {
     String body = "Unknown device type: ";
     body += bindings->get("type");
 
-    server.send(400, TEXT_PLAIN, body);
+    server.send(400, "text/plain", body);
     return;
   }
 
@@ -345,7 +345,7 @@ void MiLightHttpServer::handleListenGateway(const UrlTokenBindings* bindings) {
   );
   milightClient->formatPacket(packet, responseBuffer);
 
-  server.send(200, TEXT_PLAIN, response);
+  server.send(200, "text/plain", response);
 }
 
 void MiLightHttpServer::handleUpdateGroup(const UrlTokenBindings* urlBindings) {
@@ -353,7 +353,7 @@ void MiLightHttpServer::handleUpdateGroup(const UrlTokenBindings* urlBindings) {
   JsonObject& request = buffer.parse(server.arg("plain"));
 
   if (!request.success()) {
-    server.send(400, TEXT_PLAIN, F("Invalid JSON"));
+    server.send_P(400, TEXT_PLAIN, PSTR("Invalid JSON"));
     return;
   }
 
@@ -382,7 +382,7 @@ void MiLightHttpServer::handleUpdateGroup(const UrlTokenBindings* urlBindings) {
     if (config == NULL) {
       String body = "Unknown device type: ";
       body += String(_radioType);
-      server.send(400, TEXT_PLAIN, body);
+      server.send(400, "text/plain", body);
       return;
     }
 
@@ -416,7 +416,7 @@ void MiLightHttpServer::handleSendRaw(const UrlTokenBindings* bindings) {
     String body = "Unknown device type: ";
     body += bindings->get("type");
 
-    server.send(400, TEXT_PLAIN, body);
+    server.send(400, "text/plain", body);
     return;
   }
 
@@ -435,7 +435,7 @@ void MiLightHttpServer::handleSendRaw(const UrlTokenBindings* bindings) {
     milightClient->write(packet);
   }
 
-  server.send(200, TEXT_PLAIN, "true");
+  server.send_P(200, TEXT_PLAIN, PSTR("true"));
 }
 
 ESP8266WebServer::THandlerFunction MiLightHttpServer::handleServe_P(const char* data, size_t length) {

+ 1 - 1
lib/WebServer/MiLightHttpServer.h

@@ -13,7 +13,7 @@ const char DEFAULT_INDEX_PAGE[] PROGMEM
   = "Web app not installed. Click <a href=\"/download_update/web\">here</a> to attempt to download it from GitHub.";
 
 const char TEXT_PLAIN[] PROGMEM = "text/plain";
-const char APPLICATION_JSON[] PROGMEM = "application/json";
+const char APPLICATION_JSON[] = "application/json";
 
 class MiLightHttpServer {
 public:

+ 4 - 0
platformio.ini

@@ -19,6 +19,8 @@ lib_deps_external =
   PubSubClient
   https://github.com/ratkins/RGBConverter
 build_flags = !python .get_version.py -DMQTT_MAX_PACKET_SIZE=200 -Idist
+extra_script =
+  ; .build_web.py
 # -D MQTT_DEBUG
 # -D MILIGHT_UDP_DEBUG
 # -D DEBUG_PRINTF
@@ -27,7 +29,9 @@ build_flags = !python .get_version.py -DMQTT_MAX_PACKET_SIZE=200 -Idist
 platform = espressif8266
 framework = arduino
 board = nodemcuv2
+; upload_speed = 115200
 build_flags = ${common.build_flags} -Wl,-Tesp8266.flash.4m1m.ld -D FIRMWARE_VARIANT=nodemcuv2
+extra_script = ${common.extra_script}
 lib_deps =
   ${common.lib_deps_builtin}
   ${common.lib_deps_external}

+ 2 - 2
web/gulpfile.js

@@ -28,8 +28,8 @@ gulp.task('buildfs_embeded', ['buildfs_inline'], function() {
 
     var data = fs.readFileSync(source);
 
-    wstream.write('#define index_html_gz_len ' + (data.length+1) + '\n');
-    wstream.write('const char index_html_gz[] PROGMEM = {')
+    wstream.write('#define index_html_gz_len ' + data.length + '\n');
+    wstream.write('static const char index_html_gz[] PROGMEM = {')
 
     for (i=0; i<data.length; i++) {
         wstream.write(data[i].toString());

+ 0 - 23
web/src/index.html

@@ -80,29 +80,6 @@
 
           <h4>Current Version</h4>
           <div id="current-version"></div>
-
-          <div id="latest-version">
-            <h4>Latest Version</h4>
-            <div class="status"></div>
-            <div id="latest-version-info">
-              <label>Version</label>
-              <div class="info-key" data-key="tag_name"></div>
-
-              <label>Release Date</label>
-              <div class="info-key" data-key="published_at"></div>
-
-              <label>Release Notes</label>
-              <pre class="info-key" data-key="body"></pre>
-
-              <div>
-                <a class="info-key" data-prop="href" data-key="html_url">View on GitHub</a>
-              </div>
-
-              <div>
-                <a class="info-key" id="firmware-link">Download Firmware</a>
-              </div>
-            </div>
-          </div>
         </div>
         <div class="modal-footer">
           <a href="/download_update/web" class="btn btn-primary">Update Web UI</a>