From 3154aa9439130a2e84330749354787445d887bbb Mon Sep 17 00:00:00 2001 From: Brian Ignacio Date: Tue, 22 Nov 2022 12:35:34 +0800 Subject: [PATCH] add review changes --- .github/workflows/publish.yml | 2 +- favicon.ico | Bin 0 -> 15406 bytes index.js | 24 ++++++++++++------------ package-lock.json | 29 +++++++++++++++++++++-------- package.json | 1 + src/espLoader.ts | 31 ++++++++++++++++--------------- src/index.ts | 6 ++---- src/targets/esp32.ts | 16 ++++++++-------- src/targets/esp32c3.ts | 16 ++++++++-------- src/targets/esp32s2.ts | 14 +++++++------- src/targets/esp32s3.ts | 14 +++++++------- src/targets/esp8266.ts | 12 ++++++------ src/targets/rom.ts | 30 ++---------------------------- tsconfig.json | 7 ++++--- 14 files changed, 95 insertions(+), 107 deletions(-) create mode 100644 favicon.ico diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3521f20..3689298 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,7 +13,7 @@ jobs: node-version: '14.x' registry-url: 'https://registry.npmjs.org' - name: Install dependencies and build 🔧 - run: npm install && npm run build + run: npm ci && npm run build - name: Run tests run: npm run test - name: Package .vsix diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..520ef4b6ce60bd65945d67d75b5933497eb5c247 GIT binary patch literal 15406 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 setTimeout(resolve, ms)); } -function terminalClearFn() { - term.clear(); -} - -function terminalWrite(data) { - term.write(data); -} - -function terminalWriteLn(data) { - term.writeln(data); +let espLoaderTerminal = { + clean() { + term.clear(); + }, + writeLine(data) { + term.writeln(data); + }, + write(data) { + term.write(data) + } } connectButton.onclick = async () => { @@ -101,7 +101,7 @@ connectButton.onclick = async () => { } try { - esploader = new ESPLoader(transport, baudrates.value, terminalClearFn, terminalWriteLn, terminalWrite); + esploader = new ESPLoader(transport, baudrates.value, espLoaderTerminal); connected = true; chip = await esploader.main_fn(); diff --git a/package-lock.json b/package-lock.json index 29b89d1..0b7d989 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "crypto-js": "^4.0.0", "pako": "^2.1.0", + "tslib": "^2.4.1", "xterm": "^4.13.0" }, "devDependencies": { @@ -3333,10 +3334,9 @@ } }, "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -3353,6 +3353,12 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -5982,10 +5988,9 @@ } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" }, "tsutils": { "version": "3.21.0", @@ -5994,6 +5999,14 @@ "dev": true, "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "type-check": { diff --git a/package.json b/package.json index 16a1d28..a331c34 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "dependencies": { "crypto-js": "^4.0.0", "pako": "^2.1.0", + "tslib": "^2.4.1", "xterm": "^4.13.0" }, "devDependencies": { diff --git a/src/espLoader.ts b/src/espLoader.ts index 13033cc..e2ddd0d 100644 --- a/src/espLoader.ts +++ b/src/espLoader.ts @@ -17,12 +17,18 @@ const MAGIC_TO_CHIP: { [key: number]: ROM } = { 0xfff0c101: new ESP8266ROM(), }; -interface ESPBinFile { +export interface ESPBinFile { data: string; address: number; } -class ESPLoader { +export interface IEspLoaderTerminal { + clean: () => void; + writeLine: (data: string) => void; + write: (data: string) => void; +} + +export class ESPLoader { ESP_RAM_BLOCK = 0x1800; ESP_FLASH_BEGIN = 0x02; ESP_FLASH_DATA = 0x03; @@ -76,17 +82,14 @@ class ESPLoader { constructor( public transport: Transport, private baudrate: number, - private terminalCleanFn: () => void, - private terminalWriteLineFn: (data: string) => void, - private terminalWriteFn: (data: string) => void, + private terminal: IEspLoaderTerminal, private rom_baudrate = 115200, ) { this.IS_STUB = false; - this.chip = new ESP32ROM(); + this.chip = null; this.FLASH_WRITE_SIZE = 0x4000; - - if (this.terminalCleanFn) { - this.terminalCleanFn(); + if (this.terminal) { + this.terminal.clean(); } this.log("esptool.js v0.1-dev"); @@ -98,16 +101,16 @@ class ESPLoader { } log(str: string) { - if (this.terminalWriteLineFn) { - this.terminalWriteLineFn(str); + if (this.terminal) { + this.terminal.writeLine(str); } else { // eslint-disable-next-line no-console console.log(str); } } write_char(str: string) { - if (this.terminalWriteFn) { - this.terminalWriteFn(str); + if (this.terminal) { + this.terminal.write(str); } else { // eslint-disable-next-line no-console console.log(str); @@ -1004,5 +1007,3 @@ class ESPLoader { } } } - -export default ESPLoader; diff --git a/src/index.ts b/src/index.ts index 2bc03a1..2f01753 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,2 @@ -import ESPLoader from "./espLoader"; -import { Transport } from "./webserial"; - -export default { ESPLoader, Transport }; +export { IEspLoaderTerminal, ESPLoader } from "./esploader"; +export { Transport } from "./webserial"; diff --git a/src/targets/esp32.ts b/src/targets/esp32.ts index 7464844..5a314c4 100644 --- a/src/targets/esp32.ts +++ b/src/targets/esp32.ts @@ -1,4 +1,4 @@ -import ESPLoader from "../espLoader"; +import { ESPLoader } from "../esploader"; import { ROM } from "./rom"; export default class ESP32ROM extends ROM { @@ -96,20 +96,20 @@ export default class ESP32ROM extends ROM { "YjiDW+mNANzr1LUT2ElJKyOShBjc24Bubh7Lmjp/Eifg5awjAiP9ZbJfx620qNfq" + "wqvdldrZOj9LCYJ8mer+L0DR4a0UDQAA"; - public read_efuse = async (loader: ESPLoader, offset: number) => { + public async read_efuse(loader: ESPLoader, offset: number) { const addr = this.EFUSE_RD_REG_BASE + 4 * offset; loader.log("Read efuse " + addr); return await loader.read_reg(addr); }; - public get_pkg_version = async (loader: ESPLoader) => { + public async get_pkg_version(loader: ESPLoader) { const word3 = await this.read_efuse(loader, 3); let pkg_version = (word3 >> 9) & 0x07; pkg_version += ((word3 >> 2) & 0x1) << 3; return pkg_version; }; - public get_chip_revision = async (loader: ESPLoader) => { + public async get_chip_revision(loader: ESPLoader) { const word3 = await this.read_efuse(loader, 3); const word5 = await this.read_efuse(loader, 5); const apb_ctl_date = await loader.read_reg(this.DR_REG_SYSCON_BASE + 0x7c); @@ -131,7 +131,7 @@ export default class ESP32ROM extends ROM { return 0; }; - public get_chip_description = async (loader: ESPLoader) => { + public async get_chip_description(loader: ESPLoader) { const chip_desc = [ "ESP32-D0WDQ6", "ESP32-D0WD", @@ -166,7 +166,7 @@ export default class ESP32ROM extends ROM { return chip_name + " (revision " + chip_revision + ")"; }; - public get_chip_features = async (loader: ESPLoader) => { + public async get_chip_features(loader: ESPLoader) { const features = ["Wi-Fi"]; const word3 = await this.read_efuse(loader, 3); @@ -220,7 +220,7 @@ export default class ESP32ROM extends ROM { return features; }; - public get_crystal_freq = async (loader: ESPLoader) => { + public async get_crystal_freq(loader: ESPLoader) { const uart_div = (await loader.read_reg(this.UART_CLKDIV_REG)) & this.UART_CLKDIV_MASK; const ets_xtal = (loader.transport.baudrate * uart_div) / 1000000 / this.XTAL_CLK_DIVIDER; let norm_xtal; @@ -240,7 +240,7 @@ export default class ESP32ROM extends ROM { return h.length === 1 ? "0" + h : h; } - public read_mac = async (loader: ESPLoader) => { + public async read_mac(loader: ESPLoader) { let mac0 = await this.read_efuse(loader, 1); mac0 = mac0 >>> 0; let mac1 = await this.read_efuse(loader, 2); diff --git a/src/targets/esp32c3.ts b/src/targets/esp32c3.ts index edd1fab..9967e7f 100644 --- a/src/targets/esp32c3.ts +++ b/src/targets/esp32c3.ts @@ -1,4 +1,4 @@ -import ESPLoader from "../espLoader"; +import { ESPLoader } from "../esploader"; import { ROM } from "./rom"; export default class ESP32C3ROM extends ROM { @@ -94,7 +94,7 @@ export default class ESP32C3ROM extends ROM { "pnltVv+9jvHXkU4sXKfxG0NqhL7U68N6/PpKeyfjl0o+XMA5N/wc9+g6UfWl9s83" + "J279YCuxbUpfYBg26DI+z0jM/CCTyLqft1P4h/4HprTSLAwNAAA="; - public get_pkg_version = async (loader: ESPLoader) => { + public async get_pkg_version(loader: ESPLoader) { const num_word = 3; const block1_addr = this.EFUSE_BASE + 0x044; const addr = block1_addr + 4 * num_word; @@ -103,7 +103,7 @@ export default class ESP32C3ROM extends ROM { return pkg_version; }; - public get_chip_revision = async (loader: ESPLoader) => { + public async get_chip_revision(loader: ESPLoader) { const block1_addr = this.EFUSE_BASE + 0x044; const num_word = 3; const pos = 18; @@ -112,7 +112,7 @@ export default class ESP32C3ROM extends ROM { return ret; }; - public get_chip_description = async (loader: ESPLoader) => { + public async get_chip_description(loader: ESPLoader) { let desc; const pkg_ver = await this.get_pkg_version(loader); if (pkg_ver === 0) { @@ -125,11 +125,11 @@ export default class ESP32C3ROM extends ROM { return desc; }; - public get_chip_features = async (loader: ESPLoader) => { + public async get_chip_features(loader: ESPLoader) { return ["Wi-Fi"]; }; - public get_crystal_freq = async (loader: ESPLoader) => { + public async get_crystal_freq(loader: ESPLoader) { return 40; }; @@ -138,7 +138,7 @@ export default class ESP32C3ROM extends ROM { return h.length === 1 ? "0" + h : h; } - public read_mac = async (loader: ESPLoader) => { + public async read_mac(loader: ESPLoader) { let mac0 = await loader.read_reg(this.MAC_EFUSE_REG); mac0 = mac0 >>> 0; let mac1 = await loader.read_reg(this.MAC_EFUSE_REG + 4); @@ -166,7 +166,7 @@ export default class ESP32C3ROM extends ROM { ); }; - public get_erase_size = function (offset: number, size: number) { + public get_erase_size(offset: number, size: number) { return size; }; } diff --git a/src/targets/esp32s2.ts b/src/targets/esp32s2.ts index 61acd83..9812c58 100644 --- a/src/targets/esp32s2.ts +++ b/src/targets/esp32s2.ts @@ -1,4 +1,4 @@ -import ESPLoader from "../espLoader"; +import { ESPLoader } from "../esploader"; import { ROM } from "./rom"; export default class ESP32S2ROM extends ROM { @@ -104,7 +104,7 @@ export default class ESP32S2ROM extends ROM { "5lUGBV+inIf/Am8w8EfhMoci6RMleHnQiuD71XzwevARlL/cmi84gg9/L+TC1aFI" + "PhaAOeuxgvFPCyIcXl5oXscBJKBdOTgbirB0QdA+obr/HyfMWQisDwAA"; - public get_pkg_version = async (loader: ESPLoader) => { + public async get_pkg_version(loader: ESPLoader) { const num_word = 3; const block1_addr = this.EFUSE_BASE + 0x044; const addr = block1_addr + 4 * num_word; @@ -113,7 +113,7 @@ export default class ESP32S2ROM extends ROM { return pkg_version; }; - public get_chip_description = async (loader: ESPLoader) => { + public async get_chip_description(loader: ESPLoader) { const chip_desc = ["ESP32-S2", "ESP32-S2FH16", "ESP32-S2FH32"]; const pkg_ver = await this.get_pkg_version(loader); if (pkg_ver >= 0 && pkg_ver <= 2) { @@ -123,7 +123,7 @@ export default class ESP32S2ROM extends ROM { } }; - public get_chip_features = async (loader: ESPLoader) => { + public async get_chip_features(loader: ESPLoader) { const features = ["Wi-Fi"]; const pkg_ver = await this.get_pkg_version(loader); if (pkg_ver == 1) { @@ -143,14 +143,14 @@ export default class ESP32S2ROM extends ROM { return features; }; - public get_crystal_freq = async (loader: ESPLoader) => { + public async get_crystal_freq(loader: ESPLoader) { return 40; }; public _d2h(d: number) { const h = (+d).toString(16); return h.length === 1 ? "0" + h : h; } - public read_mac = async (loader: ESPLoader) => { + public async read_mac(loader: ESPLoader) { let mac0 = await loader.read_reg(this.MAC_EFUSE_REG); mac0 = mac0 >>> 0; let mac1 = await loader.read_reg(this.MAC_EFUSE_REG + 4); @@ -178,7 +178,7 @@ export default class ESP32S2ROM extends ROM { ); }; - public override get_erase_size(offset: number, size: number) { + public get_erase_size(offset: number, size: number) { return size; } } diff --git a/src/targets/esp32s3.ts b/src/targets/esp32s3.ts index c621fab..fe38ea9 100644 --- a/src/targets/esp32s3.ts +++ b/src/targets/esp32s3.ts @@ -1,4 +1,4 @@ -import ESPLoader from "../espLoader"; +import { ESPLoader } from "../esploader"; import { ROM } from "./rom"; export default class ESP32S3ROM extends ROM { @@ -119,13 +119,13 @@ export default class ESP32S3ROM extends ROM { "A6EOOkSXLzPI/0905+E35NsMZL5N2dQx7VQhTldrENTvyi1fQDWenT4lm8tQK+l3" + "KW+3NnXYMAdbYwkNHP1ZTgd8RtiVeVq1Sv50vbRlrKlDTZc48SKV/f8Zky2A"; - public get_chip_description = async (loader: ESPLoader) => { + public async get_chip_description(loader: ESPLoader) { return "ESP32-S3"; }; - public get_chip_features = async (loader: ESPLoader) => { + public async get_chip_features(loader: ESPLoader) { return ["Wi-Fi", "BLE"]; }; - public get_crystal_freq = async (loader: ESPLoader) => { + public async get_crystal_freq(loader: ESPLoader) { return 40; }; public _d2h(d: number) { @@ -133,7 +133,7 @@ export default class ESP32S3ROM extends ROM { return h.length === 1 ? "0" + h : h; } - public _post_connect = async (loader: ESPLoader) => { + public async _post_connect(loader: ESPLoader) { const buf_no = (await loader.read_reg(this.UARTDEV_BUF_NO)) & 0xff; console.log("In _post_connect " + buf_no); if (buf_no == this.UARTDEV_BUF_NO_USB) { @@ -141,7 +141,7 @@ export default class ESP32S3ROM extends ROM { } }; - public read_mac = async (loader: ESPLoader) => { + public async read_mac(loader: ESPLoader) { let mac0 = await loader.read_reg(this.MAC_EFUSE_REG); mac0 = mac0 >>> 0; let mac1 = await loader.read_reg(this.MAC_EFUSE_REG + 4); @@ -169,7 +169,7 @@ export default class ESP32S3ROM extends ROM { ); }; - public get_erase_size = function (offset: number, size: number) { + public get_erase_size(offset: number, size: number) { return size; }; } diff --git a/src/targets/esp8266.ts b/src/targets/esp8266.ts index e0ad876..716af2f 100644 --- a/src/targets/esp8266.ts +++ b/src/targets/esp8266.ts @@ -1,4 +1,4 @@ -import ESPLoader from "../espLoader"; +import { ESPLoader } from "../esploader"; import { ROM } from "./rom"; export default class ESP8266ROM extends ROM { @@ -185,13 +185,13 @@ export default class ESP8266ROM extends ROM { "J4beSjfPH4hJ+tFtSdkibccBEOH+kJSrSew2MdSz8C5GWch459cfjuMcT0Pvo0yI" + "bcqT/wWthFLmqB8AAA=="; - public read_efuse = async (loader: ESPLoader, offset: number) => { + public async read_efuse(loader: ESPLoader, offset: number) { const addr = this.EFUSE_RD_REG_BASE + 4 * offset; console.log("Read efuse " + addr); return await loader.read_reg(addr); }; - public get_chip_description = async (loader: ESPLoader) => { + public async get_chip_description(loader: ESPLoader) { const efuse3 = await this.read_efuse(loader, 2); const efuse0 = await this.read_efuse(loader, 0); @@ -205,7 +205,7 @@ export default class ESP8266ROM extends ROM { return features; }; - public get_crystal_freq = async (loader: ESPLoader) => { + public async get_crystal_freq(loader: ESPLoader) { const uart_div = (await loader.read_reg(this.UART_CLKDIV_REG)) & this.UART_CLKDIV_MASK; const ets_xtal = (loader.transport.baudrate * uart_div) / 1000000 / this.XTAL_CLK_DIVIDER; let norm_xtal; @@ -231,7 +231,7 @@ export default class ESP8266ROM extends ROM { return h.length === 1 ? "0" + h : h; } - public read_mac = async (loader: ESPLoader) => { + public async read_mac(loader: ESPLoader) { let mac0 = await this.read_efuse(loader, 0); mac0 = mac0 >>> 0; let mac1 = await this.read_efuse(loader, 1); @@ -275,7 +275,7 @@ export default class ESP8266ROM extends ROM { ); }; - public get_erase_size = function (offset: number, size: number) { + public get_erase_size(offset: number, size: number) { return size; }; } diff --git a/src/targets/rom.ts b/src/targets/rom.ts index 4d6c3b6..b055ed3 100644 --- a/src/targets/rom.ts +++ b/src/targets/rom.ts @@ -1,24 +1,4 @@ -import ESPLoader from "../espLoader"; - -export enum FLASH_SIZES { - "1MB" = 0x00, - "2MB" = 0x10, - "4MB" = 0x20, - "8MB" = 0x30, - "16MB" = 0x40, -} - -export enum ESP8266_FLASH_SIZES { - "512KB" = 0x00, - "256KB" = 0x10, - "1MB" = 0x20, - "2MB" = 0x30, - "4MB" = 0x40, - "2MB-c1" = 0x50, - "4MB-c1" = 0x60, - "8MB" = 0x80, - "16MB" = 0x90, -} +import { ESPLoader } from "../esploader"; export abstract class ROM { // abstract read_efuse(loader: ESPLoader, offset: number): Promise; //esp32 @@ -43,13 +23,7 @@ export abstract class ROM { return size; } - FLASH_SIZES: { [key: string]: number } = { - "1MB": 0x00, - "2MB": 0x10, - "4MB": 0x20, - "8MB": 0x30, - "16MB": 0x40, - }; + abstract FLASH_SIZES: { [key: string]: number }; abstract BOOTLOADER_FLASH_OFFSET: number; abstract CHIP_NAME: string; diff --git a/tsconfig.json b/tsconfig.json index 0186fa6..46d7e86 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,12 +1,13 @@ { "compilerOptions": { - "module": "commonjs", - "target": "ES5", + "module": "ES2020", + "target": "ES2019", "declaration": true, "allowSyntheticDefaultImports": true, "outDir": "./lib", "moduleResolution": "node", - "lib": ["ES2020", "DOM"] + "lib": ["ES2020", "DOM"], + "importHelpers": true }, "include": ["src/**/*"] } \ No newline at end of file