From 66e276f15eec83688824e96adfe261f33b93b5d7 Mon Sep 17 00:00:00 2001 From: Empire Phoenix Date: Sun, 11 Aug 2024 19:17:12 +0200 Subject: [PATCH] firmware streaming --- rust/src/webserver/config.html | 5 +-- rust/src_webpack/src/battery.ts | 55 ++++++++++----------------------- rust/src_webpack/src/form.ts | 3 +- 3 files changed, 22 insertions(+), 41 deletions(-) diff --git a/rust/src/webserver/config.html b/rust/src/webserver/config.html index 1df2846..7521a13 100644 --- a/rust/src/webserver/config.html +++ b/rust/src/webserver/config.html @@ -20,9 +20,10 @@

Battery Firmeware (bq34z100 may be R2)


- +
-

+

+

diff --git a/rust/src_webpack/src/battery.ts b/rust/src_webpack/src/battery.ts index 9c3847f..1aa51f7 100644 --- a/rust/src_webpack/src/battery.ts +++ b/rust/src_webpack/src/battery.ts @@ -2,58 +2,37 @@ let battery_flash_button = document.getElementById("battery_flash_button") as HT let battery_flash_file = document.getElementById("battery_flash_file") as HTMLInputElement; let battery_flash_message = document.getElementById("battery_flash_message") as HTMLElement; let battery_flash_progressBar = document.getElementById("battery_flash_progressBar") as HTMLProgressElement; +let battery_flash_loaded_n_total = document.getElementById("battery_flash_loaded_n_total") as HTMLElement; +let battery_flash_status = document.getElementById("battery_flash_status") as HTMLElement; + var ajax = new XMLHttpRequest(); ajax.upload.addEventListener("progress", event => { - loaded_n_total.innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total; + battery_flash_loaded_n_total.innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total; var percent = (event.loaded / event.total) * 100; - progressBar.value = Math.round(percent); - status.innerHTML = Math.round(percent) + "%"; - answer.innerHTML = "in progress"; + battery_flash_progressBar.value = Math.round(percent); + battery_flash_status.innerHTML = Math.round(percent) + "%"; + battery_flash_message.innerHTML = "in progress"; }, false); ajax.addEventListener("load", () => { - status.innerHTML = ajax.responseText; - answer.innerHTML = "finished"; - progressBar.value = 0; + battery_flash_status.innerHTML = ajax.responseText; + battery_flash_message.innerHTML = "finished"; + battery_flash_progressBar.value = 0; }, false); ajax.addEventListener("error", () => { - status.innerHTML = ajax.responseText; - answer.innerHTML = "failed"; + battery_flash_status.innerHTML = ajax.responseText; + battery_flash_message.innerHTML = "failed"; }, false); ajax.addEventListener("abort", () => { - status.innerHTML = ajax.responseText; - answer.innerHTML = "aborted"; + battery_flash_status.innerHTML = ajax.responseText; + battery_flash_message.innerHTML = "aborted"; }, false); -ajax.open("POST", "/ota"); -ajax.send(file); -} -export async function streamToText(stream: ReadableStream): Promise { - let result = ''; - const reader = stream.pipeThrough(new TextDecoderStream()).getReader(); - while (true) { - const { done, value } = await reader.read(); - if (done) { - break; - } - result += value; - battery_flash_message.innerHTML = result; - battery_flash_message.scrollTop = battery_flash_message.scrollHeight; - } - return result; -} + battery_flash_button.onclick = async function (){ - fetch("/flashbattery", { - method :"POST", - body: battery_flash_file.files[0], - headers: { - "Content-Type": "" - }, - }).then((response) => response.body) - .then((body) => { - streamToText(body) - }); + ajax.open("POST", "/flashbattery"); + ajax.send(battery_flash_file.files[0]); }; diff --git a/rust/src_webpack/src/form.ts b/rust/src_webpack/src/form.ts index 5aa72dd..9f4c278 100644 --- a/rust/src_webpack/src/form.ts +++ b/rust/src_webpack/src/form.ts @@ -327,7 +327,8 @@ let fromWrapper = (() => { updateJson() fetch("/set_config", { method :"POST", - body: json.value + body: json.value, + }) .then(response => response.text()) .then(text => submit_status.innerText = text)