diff --git a/package-lock.json b/package-lock.json index bc72f6d..beb1b48 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3857,9 +3857,10 @@ } }, "node_modules/esptool-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/esptool-js/-/esptool-js-0.5.3.tgz", - "integrity": "sha512-RAzlZ3+o2a5h+1EZ/ItNEkj4hhBuUtX/BFGiEh7OyF4pSxTIBsBu0oWE2o7THQ+oUgd+bn682SPQQr8Fl2LMDw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/esptool-js/-/esptool-js-0.5.4.tgz", + "integrity": "sha512-B+XcbbPBjfmnMHVGktGlNI85BbEIQs02y4hoYuqM25q6yVPqLE3bxce/KWtKXH4IGruWTkEujqdKxNeWEV2BDg==", + "license": "Apache-2.0", "dependencies": { "atob-lite": "^2.0.0", "pako": "^2.1.0", @@ -7942,9 +7943,9 @@ "dev": true }, "esptool-js": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/esptool-js/-/esptool-js-0.5.3.tgz", - "integrity": "sha512-RAzlZ3+o2a5h+1EZ/ItNEkj4hhBuUtX/BFGiEh7OyF4pSxTIBsBu0oWE2o7THQ+oUgd+bn682SPQQr8Fl2LMDw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/esptool-js/-/esptool-js-0.5.4.tgz", + "integrity": "sha512-B+XcbbPBjfmnMHVGktGlNI85BbEIQs02y4hoYuqM25q6yVPqLE3bxce/KWtKXH4IGruWTkEujqdKxNeWEV2BDg==", "requires": { "atob-lite": "^2.0.0", "pako": "^2.1.0", diff --git a/src/flash.ts b/src/flash.ts index 559d511..0784d6f 100644 --- a/src/flash.ts +++ b/src/flash.ts @@ -6,6 +6,7 @@ import { Manifest, FlashStateType, } from "./const"; +import { hardReset } from "./util/reset"; export const flash = async ( onEvent: (state: FlashState) => void, @@ -53,7 +54,8 @@ export const flash = async ( "Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.", details: { error: FlashError.FAILED_INITIALIZING, details: err }, }); - await esploader.hardReset(); + + await hardReset(transport); await transport.disconnect(); return; } @@ -74,7 +76,7 @@ export const flash = async ( message: `Your ${chipFamily} board is not supported.`, details: { error: FlashError.NOT_SUPPORTED, details: chipFamily }, }); - await esploader.hardReset(); + await hardReset(transport); await transport.disconnect(); return; } @@ -121,7 +123,7 @@ export const flash = async ( details: err.message, }, }); - await esploader.hardReset(); + await hardReset(transport); await transport.disconnect(); return; } @@ -199,7 +201,7 @@ export const flash = async ( message: err.message, details: { error: FlashError.WRITE_FAILED, details: err }, }); - await esploader.hardReset(); + await hardReset(transport); await transport.disconnect(); return; } @@ -214,7 +216,7 @@ export const flash = async ( }, }); - await esploader.hardReset(); + await hardReset(transport); console.log("DISCONNECT"); await transport.disconnect(); diff --git a/src/util/reset.ts b/src/util/reset.ts new file mode 100644 index 0000000..2482518 --- /dev/null +++ b/src/util/reset.ts @@ -0,0 +1,17 @@ +import { Transport } from "esptool-js"; +import { sleep } from "./sleep"; + +export const hardReset = async (transport: Transport) => { + console.log("Triggering reset"); + await transport.device.setSignals({ + dataTerminalReady: false, + requestToSend: true, + }); + await sleep(250); + await transport.device.setSignals({ + dataTerminalReady: false, + requestToSend: false, + }); + await sleep(250); + await new Promise((resolve) => setTimeout(resolve, 1000)); +};