From abe298b3003c0d9a2817dda8cbf1e2e514f14bfd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 26 May 2021 14:22:00 -0700 Subject: [PATCH] Defer initialize --- js/script.js | 32 ++++++++++++++++++++++++-------- src/esp_loader.ts | 2 +- src/index.ts | 9 +-------- src/util.ts | 5 ----- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/js/script.js b/js/script.js index 71071eb..c851cdb 100644 --- a/js/script.js +++ b/js/script.js @@ -26,7 +26,7 @@ document.addEventListener("DOMContentLoaded", () => { butConnect.addEventListener("click", () => { clickConnect().catch(async (e) => { console.error(e); - errorMsg(e.message); + errorMsg(e.message || e); if (espStub) { await espStub.disconnect(); } @@ -161,6 +161,12 @@ function enableStyleSheet(node, enabled) { node.disabled = !enabled; } +function formatMacAddr(macAddr) { + return macAddr + .map((value) => value.toString(16).toUpperCase().padStart(2, "0")) + .join(":"); +} + /** * @name clickConnect * Click handler for the connect/disconnect button. @@ -180,13 +186,23 @@ async function clickConnect() { debug: (...args) => debugMsg(...args), error: (...args) => errorMsg(...args), }); - espStub = await esploader.runStub(); - toggleUIConnected(true); - toggleUIToolbar(true); - espStub.addEventListener("disconnect", () => { - toggleUIConnected(false); - espStub = false; - }); + try { + await esploader.initialize(); + + logMsg("Connected to " + esploader.chipName); + logMsg("MAC Address: " + formatMacAddr(esploader.macAddr())); + + espStub = await esploader.runStub(); + toggleUIConnected(true); + toggleUIToolbar(true); + espStub.addEventListener("disconnect", () => { + toggleUIConnected(false); + espStub = false; + }); + } catch (err) { + await esploader.disconnect(); + throw err; + } } /** diff --git a/src/esp_loader.ts b/src/esp_loader.ts index a8ef271..4c3aa7f 100644 --- a/src/esp_loader.ts +++ b/src/esp_loader.ts @@ -528,7 +528,7 @@ export class ESPLoader extends EventTarget { ) { let filesize = binaryData.byteLength; this.logger.log("\nWriting data with filesize:" + filesize); - let blocks = await this.flashBegin(filesize, offset); + await this.flashBegin(filesize, offset); let block = []; let seq = 0; let written = 0; diff --git a/src/index.ts b/src/index.ts index f527abf..19a0675 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ import { ESP_ROM_BAUD, Logger } from "./const"; import { ESPLoader } from "./esp_loader"; -import { formatMacAddr } from "./util"; export { CHIP_FAMILY_ESP32, @@ -17,11 +16,5 @@ export const connect = async (logger: Logger) => { logger.log("Connected successfully."); - const esploader = new ESPLoader(port, logger); - await esploader.initialize(); - - logger.log("Connected to " + esploader.chipName); - logger.log("MAC Address: " + formatMacAddr(esploader.macAddr())); - - return esploader; + return new ESPLoader(port, logger); }; diff --git a/src/util.ts b/src/util.ts index 7677fab..357a066 100644 --- a/src/util.ts +++ b/src/util.ts @@ -105,8 +105,3 @@ export const toHex = (value: number, size = 2) => { export const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); - -export const formatMacAddr = (macAddr: number[]) => - macAddr - .map((value) => value.toString(16).toUpperCase().padStart(2, "0")) - .join(":");