diff --git a/firmware/.idea/firmware.iml b/firmware/.idea/firmware.iml index 91a038c..190a5aa 100644 --- a/firmware/.idea/firmware.iml +++ b/firmware/.idea/firmware.iml @@ -1,4 +1,5 @@ + diff --git a/firmware/webdir/css/style.css b/firmware/webdir/css/style.css index 136393e..c84c3d9 100644 --- a/firmware/webdir/css/style.css +++ b/firmware/webdir/css/style.css @@ -32,8 +32,8 @@ main section:target { } .table > .row > * { - display: table-cell; - padding: .3em 2.4em .3em .6em; + display: table-cell; + padding: .3em .6em .3em .6em; } .table > header.row > * { diff --git a/firmware/webdir/index.html b/firmware/webdir/index.html index 8ceefa7..f769a5a 100644 --- a/firmware/webdir/index.html +++ b/firmware/webdir/index.html @@ -5,6 +5,7 @@ fiatlux v0.2 + @@ -30,6 +31,12 @@ + + + + + @@ -237,7 +244,7 @@ if (cmd === 'G') console.log("LED switched", val); - else if (cmd === 'F') { + else if ((cmd === 'F') || (cmd === "C")) { receive_chunk_confirmation(dv); } else if (cmd === 'V') { voltage.innerHTML = (val * 13 / 1024).toFixed(2); @@ -248,7 +255,7 @@ } function wsOpen() { - var uri = "/stream" + var uri = "/stream"; if (ws === undefined || ws.readyState !== 0) { if (retries) setMsg("warning", "WebSocket timeout, retrying.."); @@ -264,6 +271,12 @@ console.error(evt); setMsg("error", "WebSocket error!"); /*window.location.reload(true);*/ }; + ws.onclose = function (evt) { + msgStyle = "warning"; + if (!evt.wasClean) msgStyle = "error"; + setMsg(msgStyle, "WebSocket closed!"); + setTimeout(() => wsOpen(), 0); + }; ws.onmessage = function (evt) { onMessage(evt); }; @@ -371,10 +384,10 @@ headerview.setInt32(4, buf.byteLength); headerview.setInt32(8, hash); receive_chunk_confirmation = (dv) => { - resolve(i); + resolve(true); } setTimeout(() => { - reject(i); + reject(false); }, 500); wsWrite(frame); }); @@ -386,14 +399,23 @@ (async () => { const ash = crc32(firmware_file); for (var i = 0; i * chunk_size < firmware_file.byteLength; i++) { + update_progress("ota", i * chunk_size / firmware_file.byteLength * 100); await transmit_firmware_chunk(firmware_file, i); } await transmit_firmware_final(firmware_file, crc32(firmware_file)); + update_progress("ota", 100); })().then(() => { console.log("transmit_firmware done"); }) } } + + function update_progress(progressBar, progress) { + var iP = Math.floor(progress); + var dBar = document.getElementById("progress_bar_" + progressBar); + dBar.innerText = iP + "%"; + dBar.style.width = progress + "%"; + }