Skip to content

Commit 85a6503

Browse files
balloobclaude
andauthored
Use esptool-js reset methods instead of custom implementation (#663)
* Use esptool-js reset methods instead of custom implementation - Replace custom hardReset utility with esploader.after() in flash.ts - Use esptool-js HardReset class in ewt-console.ts for device reset - Remove src/util/reset.ts (no longer needed) - Update esptool-js to 0.5.7 This aligns reset behavior with esptool-js and ensures proper chip-specific reset handling. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * make sure it's a hard reset --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent cda09bb commit 85a6503

File tree

5 files changed

+27
-36
lines changed

5 files changed

+27
-36
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
},
2626
"dependencies": {
2727
"@material/web": "^2.2.0",
28-
"esptool-js": "^0.5.6",
28+
"esptool-js": "^0.5.7",
2929
"improv-wifi-serial-sdk": "^2.5.0",
3030
"lit": "^3.2.1",
3131
"pako": "^2.1.0",

src/components/ewt-console.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { sleep } from "../util/sleep";
33
import { LineBreakTransformer } from "../util/line-break-transformer";
44
import { TimestampTransformer } from "../util/timestamp-transformer";
55
import { Logger } from "../const";
6+
import { Transport, HardReset } from "esptool-js";
67

78
export class EwtConsole extends HTMLElement {
89
public port!: SerialPort;
@@ -144,17 +145,13 @@ export class EwtConsole extends HTMLElement {
144145

145146
public async reset() {
146147
this.logger.debug("Triggering reset");
147-
await this.port.setSignals({
148-
dataTerminalReady: false,
149-
requestToSend: true,
150-
});
151-
await sleep(250);
152-
await this.port.setSignals({
153-
dataTerminalReady: false,
154-
requestToSend: false,
155-
});
156-
await sleep(250);
157-
await new Promise((resolve) => setTimeout(resolve, 1000));
148+
const transport = new Transport(this.port);
149+
// First assert RTS to enter reset state
150+
await transport.setRTS(true);
151+
await sleep(100);
152+
// Use HardReset to release (same as esploader.after())
153+
const resetStrategy = new HardReset(transport);
154+
await resetStrategy.reset();
158155
}
159156
}
160157

src/flash.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,18 @@ import {
66
Manifest,
77
FlashStateType,
88
} from "./const";
9-
import { hardReset } from "./util/reset";
9+
import { sleep } from "./util/sleep";
10+
11+
/**
12+
* Perform a hard reset using esploader's chip-specific reset logic.
13+
* First asserts RTS to enter reset, then calls esploader.after() which
14+
* uses the chip-specific reset procedure to release.
15+
*/
16+
const hardResetDevice = async (transport: Transport, esploader: ESPLoader) => {
17+
await transport.setRTS(true);
18+
await sleep(100);
19+
await esploader.after();
20+
};
1021

1122
export const flash = async (
1223
onEvent: (state: FlashState) => void,
@@ -55,7 +66,7 @@ export const flash = async (
5566
details: { error: FlashError.FAILED_INITIALIZING, details: err },
5667
});
5768

58-
await hardReset(transport);
69+
await hardResetDevice(transport, esploader);
5970
await transport.disconnect();
6071
return;
6172
}
@@ -76,7 +87,7 @@ export const flash = async (
7687
message: `Your ${chipFamily} board is not supported.`,
7788
details: { error: FlashError.NOT_SUPPORTED, details: chipFamily },
7889
});
79-
await hardReset(transport);
90+
await hardResetDevice(transport, esploader);
8091
await transport.disconnect();
8192
return;
8293
}
@@ -123,7 +134,7 @@ export const flash = async (
123134
details: err.message,
124135
},
125136
});
126-
await hardReset(transport);
137+
await hardResetDevice(transport, esploader);
127138
await transport.disconnect();
128139
return;
129140
}
@@ -201,7 +212,7 @@ export const flash = async (
201212
message: err.message,
202213
details: { error: FlashError.WRITE_FAILED, details: err },
203214
});
204-
await hardReset(transport);
215+
await hardResetDevice(transport, esploader);
205216
await transport.disconnect();
206217
return;
207218
}
@@ -216,7 +227,7 @@ export const flash = async (
216227
},
217228
});
218229

219-
await hardReset(transport);
230+
await hardResetDevice(transport, esploader);
220231

221232
console.log("DISCONNECT");
222233
await transport.disconnect();

src/util/reset.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)