esp32tool 1.1.8 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nojekyll +0 -0
- package/README.md +100 -6
- package/apple-touch-icon.png +0 -0
- package/build-electron-cli.cjs +177 -0
- package/build-single-binary.cjs +295 -0
- package/css/light.css +11 -0
- package/css/style.css +225 -35
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +458 -0
- package/dist/esp_loader.d.ts +129 -21
- package/dist/esp_loader.js +1227 -222
- package/dist/index.d.ts +2 -1
- package/dist/index.js +37 -4
- package/dist/node-usb-adapter.d.ts +47 -0
- package/dist/node-usb-adapter.js +725 -0
- package/dist/stubs/index.d.ts +1 -2
- package/dist/stubs/index.js +4 -0
- package/dist/web/index.js +1 -1
- package/electron/cli-main.cjs +74 -0
- package/electron/main.cjs +338 -0
- package/electron/main.js +7 -2
- package/favicon.ico +0 -0
- package/fix-cli-imports.cjs +127 -0
- package/generate-icons.sh +89 -0
- package/icons/icon-128.png +0 -0
- package/icons/icon-144.png +0 -0
- package/icons/icon-152.png +0 -0
- package/icons/icon-192.png +0 -0
- package/icons/icon-384.png +0 -0
- package/icons/icon-512.png +0 -0
- package/icons/icon-72.png +0 -0
- package/icons/icon-96.png +0 -0
- package/index.html +94 -64
- package/install-android.html +411 -0
- package/js/modules/esptool.js +1 -1
- package/js/script.js +165 -160
- package/js/webusb-serial.js +1017 -0
- package/license.md +1 -1
- package/manifest.json +89 -0
- package/package.cli.json +29 -0
- package/package.json +31 -21
- package/screenshots/desktop.png +0 -0
- package/screenshots/mobile.png +0 -0
- package/src/cli.ts +618 -0
- package/src/esp_loader.ts +1438 -254
- package/src/index.ts +69 -3
- package/src/node-usb-adapter.ts +924 -0
- package/src/stubs/index.ts +4 -1
- package/sw.js +155 -0
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,9 @@ import { Logger } from "./const";
|
|
|
2
2
|
import { ESPLoader } from "./esp_loader";
|
|
3
3
|
export type { Logger } from "./const";
|
|
4
4
|
export { ESPLoader } from "./esp_loader";
|
|
5
|
-
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31, } from "./const";
|
|
5
|
+
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31, ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_END, ESP_MEM_DATA, ESP_SYNC, ESP_WRITE_REG, ESP_READ_REG, ESP_ERASE_FLASH, ESP_ERASE_REGION, ESP_READ_FLASH, ESP_SPI_SET_PARAMS, ESP_SPI_ATTACH, ESP_CHANGE_BAUDRATE, ESP_SPI_FLASH_MD5, ESP_GET_SECURITY_INFO, ESP_CHECKSUM_MAGIC, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ROM_INVALID_RECV_MSG, USB_RAM_BLOCK, ESP_RAM_BLOCK, DEFAULT_TIMEOUT, CHIP_ERASE_TIMEOUT, MAX_TIMEOUT, SYNC_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, MEM_END_ROM_TIMEOUT, FLASH_READ_TIMEOUT, } from "./const";
|
|
6
6
|
export declare const connect: (logger: Logger) => Promise<ESPLoader>;
|
|
7
|
+
export declare const connectWithPort: (port: SerialPort, logger: Logger) => Promise<ESPLoader>;
|
|
7
8
|
export { parsePartitionTable, getPartitionTableOffset, formatSize, } from "./partition";
|
|
8
9
|
export type { Partition } from "./partition";
|
|
9
10
|
export { FilesystemType, detectFilesystemType, detectFilesystemFromImage, getDefaultBlockSize, getBlockSizeCandidates, getESP8266FilesystemLayout, scanESP8266Filesystem, LITTLEFS_DEFAULT_BLOCK_SIZE, LITTLEFS_BLOCK_SIZE_CANDIDATES, FATFS_DEFAULT_BLOCK_SIZE, FATFS_BLOCK_SIZE_CANDIDATES, ESP8266_LITTLEFS_BLOCK_SIZE, ESP8266_LITTLEFS_BLOCK_SIZE_CANDIDATES, ESP8266_LITTLEFS_PAGE_SIZE, ESP8266_SPIFFS_PAGE_SIZE, ESP8266_SPIFFS_BLOCK_SIZE, } from "./wasm/filesystems";
|
package/dist/index.js
CHANGED
|
@@ -2,12 +2,45 @@
|
|
|
2
2
|
import { ESP_ROM_BAUD } from "./const";
|
|
3
3
|
import { ESPLoader } from "./esp_loader";
|
|
4
4
|
export { ESPLoader } from "./esp_loader";
|
|
5
|
-
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31,
|
|
5
|
+
export { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP8266, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32H4, CHIP_FAMILY_ESP32H21, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP32S31,
|
|
6
|
+
// Command constants
|
|
7
|
+
ESP_FLASH_BEGIN, ESP_FLASH_DATA, ESP_FLASH_END, ESP_MEM_BEGIN, ESP_MEM_END, ESP_MEM_DATA, ESP_SYNC, ESP_WRITE_REG, ESP_READ_REG, ESP_ERASE_FLASH, ESP_ERASE_REGION, ESP_READ_FLASH, ESP_SPI_SET_PARAMS, ESP_SPI_ATTACH, ESP_CHANGE_BAUDRATE, ESP_SPI_FLASH_MD5, ESP_GET_SECURITY_INFO, ESP_CHECKSUM_MAGIC, ESP_FLASH_DEFL_BEGIN, ESP_FLASH_DEFL_DATA, ESP_FLASH_DEFL_END, ROM_INVALID_RECV_MSG,
|
|
8
|
+
// Block size constants
|
|
9
|
+
USB_RAM_BLOCK, ESP_RAM_BLOCK,
|
|
10
|
+
// Timeout constants
|
|
11
|
+
DEFAULT_TIMEOUT, CHIP_ERASE_TIMEOUT, MAX_TIMEOUT, SYNC_TIMEOUT, ERASE_REGION_TIMEOUT_PER_MB, MEM_END_ROM_TIMEOUT, FLASH_READ_TIMEOUT, } from "./const";
|
|
6
12
|
export const connect = async (logger) => {
|
|
7
13
|
// - Request a port and open a connection.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
14
|
+
// Try to use requestSerialPort if available (supports WebUSB for Android)
|
|
15
|
+
let port;
|
|
16
|
+
const customRequestPort = globalThis.requestSerialPort;
|
|
17
|
+
if (typeof customRequestPort === "function") {
|
|
18
|
+
port = await customRequestPort();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// Check if Web Serial API is available
|
|
22
|
+
if (!navigator.serial) {
|
|
23
|
+
throw new Error("Web Serial API is not supported in this browser. " +
|
|
24
|
+
"Please use Chrome, Edge, or Opera on desktop, or Chrome on Android. " +
|
|
25
|
+
"Note: The page must be served over HTTPS or localhost.");
|
|
26
|
+
}
|
|
27
|
+
port = await navigator.serial.requestPort();
|
|
28
|
+
}
|
|
29
|
+
// Only open if not already open (requestSerialPort may return an opened port)
|
|
30
|
+
if (!port.readable || !port.writable) {
|
|
31
|
+
await port.open({ baudRate: ESP_ROM_BAUD });
|
|
32
|
+
}
|
|
33
|
+
return new ESPLoader(port, logger);
|
|
34
|
+
};
|
|
35
|
+
export const connectWithPort = async (port, logger) => {
|
|
36
|
+
// Connect using an already opened port (useful for WebUSB wrapper)
|
|
37
|
+
if (!port) {
|
|
38
|
+
throw new Error("Port is required");
|
|
39
|
+
}
|
|
40
|
+
// Check if port is already open, if not open it
|
|
41
|
+
if (!port.readable || !port.writable) {
|
|
42
|
+
await port.open({ baudRate: ESP_ROM_BAUD });
|
|
43
|
+
}
|
|
11
44
|
return new ESPLoader(port, logger);
|
|
12
45
|
};
|
|
13
46
|
export { parsePartitionTable, getPartitionTableOffset, formatSize, } from "./partition";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js USB Adapter
|
|
3
|
+
*
|
|
4
|
+
* Uses node-usb to directly control USB-Serial chips (CP2102, CH340, FTDI, etc.)
|
|
5
|
+
* This provides the same level of control as WebUSB and avoids node-serialport issues
|
|
6
|
+
*/
|
|
7
|
+
import { Logger } from "./const";
|
|
8
|
+
import type { Device } from "usb";
|
|
9
|
+
export interface NodeUSBPort {
|
|
10
|
+
readable: ReadableStream<Uint8Array> | null;
|
|
11
|
+
writable: WritableStream<Uint8Array> | null;
|
|
12
|
+
isWebUSB?: boolean;
|
|
13
|
+
open(options: {
|
|
14
|
+
baudRate: number;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
close(): Promise<void>;
|
|
17
|
+
setSignals(signals: {
|
|
18
|
+
dataTerminalReady?: boolean;
|
|
19
|
+
requestToSend?: boolean;
|
|
20
|
+
break?: boolean;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
setBaudRate(baudRate: number): Promise<void>;
|
|
23
|
+
getSignals(): Promise<{
|
|
24
|
+
dataCarrierDetect: boolean;
|
|
25
|
+
clearToSend: boolean;
|
|
26
|
+
ringIndicator: boolean;
|
|
27
|
+
dataSetReady: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
getInfo(): {
|
|
30
|
+
usbVendorId?: number;
|
|
31
|
+
usbProductId?: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a Web Serial API compatible port from node-usb Device
|
|
36
|
+
*/
|
|
37
|
+
export declare function createNodeUSBAdapter(device: Device, logger: Logger): NodeUSBPort;
|
|
38
|
+
/**
|
|
39
|
+
* List available USB serial devices
|
|
40
|
+
*/
|
|
41
|
+
export declare function listUSBPorts(): Promise<Array<{
|
|
42
|
+
path: string;
|
|
43
|
+
manufacturer?: string;
|
|
44
|
+
serialNumber?: string;
|
|
45
|
+
vendorId?: string;
|
|
46
|
+
productId?: string;
|
|
47
|
+
}>>;
|