diff --git a/esp-flasher/EspFlasher.vue b/esp-flasher/EspFlasher.vue index dfa3505..e7fad5a 100644 --- a/esp-flasher/EspFlasher.vue +++ b/esp-flasher/EspFlasher.vue @@ -88,7 +88,7 @@ const programBaudOption = [ ] const connectedBaud = ref("") -const isConnected = ref(false) +const programConnected = ref(false) const serialSupported = ref(false); const imageOption = [ @@ -141,7 +141,7 @@ async function programConnect() { chip.value = await esploader.main(); connectedBaud.value = programBaud.value; - isConnected.value = true; + programConnected.value = true; chip_type.value = esploader.chip.CHIP_NAME; @@ -349,7 +349,7 @@ async function programDisconnect() { await transport.waitForUnlock(1500); } - isConnected.value = false; + programConnected.value = false; chip.value = ""; chip_type.value = ""; connectedBaud.value = ""; @@ -365,6 +365,7 @@ async function resetClick() { } } +/* used for file upload */ async function handleFileChange(e: Event) { const target = e.target as HTMLInputElement const files = target.files @@ -399,6 +400,65 @@ const customColors = [ { color: '#019d30', percentage: 100 }, ] +/* CONSOLE */ +const consoleStarted = ref(false); + +const consoleBaud = ref("115200"); +const consoleBaudOption = [ + {text: '115200', value: '115200'}, + {text: '230400', value: '230400'}, + {text: '460800', value: '460800'}, + {text: '921600', value: '921600'}, +] +const consoleBaudConnected = ref(""); + +async function consoleStartButton() { + if (chip.value === "") { + let port = await navigator.serial.requestPort({}); + transport = new Transport(port, true); + } else { + return; + } + + if (!transport) { + return; + } + + terminal.reset(); + + consoleBaudConnected.value = consoleBaud.value; + await transport.connect(parseInt(consoleBaudConnected.value)); + consoleStarted.value = true; + + while (consoleStarted.value) { + const val = await transport.rawRead(); + if (typeof val !== "undefined") { + terminal.write(val); + } else { + break; + } + } + console.log("quitting console"); +} + +async function consoleStopButton() { + consoleStarted.value = false; + if (transport) { + await transport.disconnect(); + await transport.waitForUnlock(1500); + } + terminal.reset(); + cleanUp(); +} + +async function reset() { + if (transport) { + await transport.setDTR(false); + await new Promise((resolve) => setTimeout(resolve, 100)); + await transport.setDTR(true); + } +} +