webserial-flasher 1.0.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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/autoDetect.d.ts +24 -0
- package/dist/autoDetect.d.ts.map +1 -0
- package/dist/autoDetect.js +66 -0
- package/dist/autoDetect.js.map +1 -0
- package/dist/boards/database.d.ts +17 -0
- package/dist/boards/database.d.ts.map +1 -0
- package/dist/boards/database.js +957 -0
- package/dist/boards/database.js.map +1 -0
- package/dist/core/constants.d.ts +44 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +56 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.d.ts +45 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +92 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/types.d.ts +138 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/protocol/avr109/programmer.d.ts +78 -0
- package/dist/protocol/avr109/programmer.d.ts.map +1 -0
- package/dist/protocol/avr109/programmer.js +324 -0
- package/dist/protocol/avr109/programmer.js.map +1 -0
- package/dist/protocol/hexParser.d.ts +12 -0
- package/dist/protocol/hexParser.d.ts.map +1 -0
- package/dist/protocol/hexParser.js +133 -0
- package/dist/protocol/hexParser.js.map +1 -0
- package/dist/protocol/picoboot/constants.d.ts +65 -0
- package/dist/protocol/picoboot/constants.d.ts.map +1 -0
- package/dist/protocol/picoboot/constants.js +80 -0
- package/dist/protocol/picoboot/constants.js.map +1 -0
- package/dist/protocol/picoboot/programmer.d.ts +73 -0
- package/dist/protocol/picoboot/programmer.d.ts.map +1 -0
- package/dist/protocol/picoboot/programmer.js +278 -0
- package/dist/protocol/picoboot/programmer.js.map +1 -0
- package/dist/protocol/picoboot/uf2.d.ts +51 -0
- package/dist/protocol/picoboot/uf2.d.ts.map +1 -0
- package/dist/protocol/picoboot/uf2.js +119 -0
- package/dist/protocol/picoboot/uf2.js.map +1 -0
- package/dist/protocol/receiveData.d.ts +3 -0
- package/dist/protocol/receiveData.d.ts.map +1 -0
- package/dist/protocol/receiveData.js +72 -0
- package/dist/protocol/receiveData.js.map +1 -0
- package/dist/protocol/sendCommand.d.ts +14 -0
- package/dist/protocol/sendCommand.d.ts.map +1 -0
- package/dist/protocol/sendCommand.js +48 -0
- package/dist/protocol/sendCommand.js.map +1 -0
- package/dist/protocol/stk500v2/constants.d.ts +57 -0
- package/dist/protocol/stk500v2/constants.d.ts.map +1 -0
- package/dist/protocol/stk500v2/constants.js +62 -0
- package/dist/protocol/stk500v2/constants.js.map +1 -0
- package/dist/protocol/stk500v2/frame.d.ts +14 -0
- package/dist/protocol/stk500v2/frame.d.ts.map +1 -0
- package/dist/protocol/stk500v2/frame.js +116 -0
- package/dist/protocol/stk500v2/frame.js.map +1 -0
- package/dist/protocol/stk500v2/programmer.d.ts +92 -0
- package/dist/protocol/stk500v2/programmer.d.ts.map +1 -0
- package/dist/protocol/stk500v2/programmer.js +482 -0
- package/dist/protocol/stk500v2/programmer.js.map +1 -0
- package/dist/protocol/updi/constants.d.ts +107 -0
- package/dist/protocol/updi/constants.d.ts.map +1 -0
- package/dist/protocol/updi/constants.js +130 -0
- package/dist/protocol/updi/constants.js.map +1 -0
- package/dist/protocol/updi/link.d.ts +82 -0
- package/dist/protocol/updi/link.d.ts.map +1 -0
- package/dist/protocol/updi/link.js +241 -0
- package/dist/protocol/updi/link.js.map +1 -0
- package/dist/protocol/updi/programmer.d.ts +89 -0
- package/dist/protocol/updi/programmer.d.ts.map +1 -0
- package/dist/protocol/updi/programmer.js +359 -0
- package/dist/protocol/updi/programmer.js.map +1 -0
- package/dist/stk500.d.ts +101 -0
- package/dist/stk500.d.ts.map +1 -0
- package/dist/stk500.js +426 -0
- package/dist/stk500.js.map +1 -0
- package/dist/transport/IPicobootTransport.d.ts +25 -0
- package/dist/transport/IPicobootTransport.d.ts.map +1 -0
- package/dist/transport/IPicobootTransport.js +10 -0
- package/dist/transport/IPicobootTransport.js.map +1 -0
- package/dist/transport/ITransport.d.ts +33 -0
- package/dist/transport/ITransport.d.ts.map +1 -0
- package/dist/transport/ITransport.js +4 -0
- package/dist/transport/ITransport.js.map +1 -0
- package/dist/transport/NodeSerialTransport.d.ts +35 -0
- package/dist/transport/NodeSerialTransport.d.ts.map +1 -0
- package/dist/transport/NodeSerialTransport.js +102 -0
- package/dist/transport/NodeSerialTransport.js.map +1 -0
- package/dist/transport/NodeUSBTransport.d.ts +24 -0
- package/dist/transport/NodeUSBTransport.d.ts.map +1 -0
- package/dist/transport/NodeUSBTransport.js +146 -0
- package/dist/transport/NodeUSBTransport.js.map +1 -0
- package/dist/transport/WebSerialTransport.d.ts +63 -0
- package/dist/transport/WebSerialTransport.d.ts.map +1 -0
- package/dist/transport/WebSerialTransport.js +159 -0
- package/dist/transport/WebSerialTransport.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/boards/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
declare const Constants: {
|
|
2
|
+
readonly Cmnd_STK_GET_SYNC: 48;
|
|
3
|
+
readonly Cmnd_STK_GET_SIGN_ON: 49;
|
|
4
|
+
readonly Cmnd_STK_SET_PARAMETER: 64;
|
|
5
|
+
readonly Cmnd_STK_GET_PARAMETER: 65;
|
|
6
|
+
readonly Cmnd_STK_SET_DEVICE: 66;
|
|
7
|
+
readonly Cmnd_STK_SET_DEVICE_EXT: 69;
|
|
8
|
+
readonly Cmnd_STK_ENTER_PROGMODE: 80;
|
|
9
|
+
readonly Cmnd_STK_LEAVE_PROGMODE: 81;
|
|
10
|
+
readonly Cmnd_STK_CHIP_ERASE: 82;
|
|
11
|
+
readonly Cmnd_STK_CHECK_AUTOINC: 83;
|
|
12
|
+
readonly Cmnd_STK_LOAD_ADDRESS: 85;
|
|
13
|
+
readonly Cmnd_STK_UNIVERSAL: 86;
|
|
14
|
+
readonly Cmnd_STK_UNIVERSAL_MULTI: 87;
|
|
15
|
+
readonly Cmnd_STK_PROG_FLASH: 96;
|
|
16
|
+
readonly Cmnd_STK_PROG_DATA: 97;
|
|
17
|
+
readonly Cmnd_STK_PROG_FUSE: 98;
|
|
18
|
+
readonly Cmnd_STK_PROG_LOCK: 99;
|
|
19
|
+
readonly Cmnd_STK_PROG_PAGE: 100;
|
|
20
|
+
readonly Cmnd_STK_PROG_FUSE_EXT: 101;
|
|
21
|
+
readonly Cmnd_STK_READ_FLASH: 112;
|
|
22
|
+
readonly Cmnd_STK_READ_DATA: 113;
|
|
23
|
+
readonly Cmnd_STK_READ_FUSE: 114;
|
|
24
|
+
readonly Cmnd_STK_READ_LOCK: 115;
|
|
25
|
+
readonly Cmnd_STK_READ_PAGE: 116;
|
|
26
|
+
readonly Cmnd_STK_READ_SIGN: 117;
|
|
27
|
+
readonly Cmnd_STK_READ_OSCCAL: 118;
|
|
28
|
+
readonly Cmnd_STK_READ_FUSE_EXT: 119;
|
|
29
|
+
readonly Cmnd_STK_READ_OSCCAL_EXT: 120;
|
|
30
|
+
readonly Sync_CRC_EOP: 32;
|
|
31
|
+
readonly Resp_STK_OK: 16;
|
|
32
|
+
readonly Resp_STK_FAILED: 17;
|
|
33
|
+
readonly Resp_STK_UNKNOWN: 18;
|
|
34
|
+
readonly Resp_STK_NODEVICE: 19;
|
|
35
|
+
readonly Resp_STK_INSYNC: 20;
|
|
36
|
+
readonly Resp_STK_NOSYNC: 21;
|
|
37
|
+
readonly Resp_ADC_CHANNEL_ERROR: 22;
|
|
38
|
+
readonly Resp_ADC_MEASURE_OK: 23;
|
|
39
|
+
readonly Resp_PWM_CHANNEL_ERROR: 24;
|
|
40
|
+
readonly Resp_PWM_ADJUST_OK: 25;
|
|
41
|
+
readonly OK_RESPONSE: Uint8Array<ArrayBuffer>;
|
|
42
|
+
};
|
|
43
|
+
export default Constants;
|
|
44
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyDL,CAAC;AAEX,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// STK500v1 protocol constants — complete specification
|
|
2
|
+
// Reference: https://ww1.microchip.com/downloads/en/DeviceDoc/doc2525.pdf
|
|
3
|
+
const Resp_STK_INSYNC = 0x14;
|
|
4
|
+
const Resp_STK_OK = 0x10;
|
|
5
|
+
const Constants = {
|
|
6
|
+
// ── Handshake / Sync ──────────────────────────────────────────────────────
|
|
7
|
+
Cmnd_STK_GET_SYNC: 0x30,
|
|
8
|
+
Cmnd_STK_GET_SIGN_ON: 0x31,
|
|
9
|
+
// ── Configuration ─────────────────────────────────────────────────────────
|
|
10
|
+
Cmnd_STK_SET_PARAMETER: 0x40,
|
|
11
|
+
Cmnd_STK_GET_PARAMETER: 0x41,
|
|
12
|
+
Cmnd_STK_SET_DEVICE: 0x42,
|
|
13
|
+
Cmnd_STK_SET_DEVICE_EXT: 0x45,
|
|
14
|
+
// ── Programming Control ───────────────────────────────────────────────────
|
|
15
|
+
Cmnd_STK_ENTER_PROGMODE: 0x50,
|
|
16
|
+
Cmnd_STK_LEAVE_PROGMODE: 0x51,
|
|
17
|
+
Cmnd_STK_CHIP_ERASE: 0x52,
|
|
18
|
+
Cmnd_STK_CHECK_AUTOINC: 0x53,
|
|
19
|
+
Cmnd_STK_LOAD_ADDRESS: 0x55,
|
|
20
|
+
Cmnd_STK_UNIVERSAL: 0x56,
|
|
21
|
+
Cmnd_STK_UNIVERSAL_MULTI: 0x57,
|
|
22
|
+
// ── Write (Paged) ─────────────────────────────────────────────────────────
|
|
23
|
+
Cmnd_STK_PROG_FLASH: 0x60,
|
|
24
|
+
Cmnd_STK_PROG_DATA: 0x61,
|
|
25
|
+
Cmnd_STK_PROG_FUSE: 0x62,
|
|
26
|
+
Cmnd_STK_PROG_LOCK: 0x63,
|
|
27
|
+
Cmnd_STK_PROG_PAGE: 0x64,
|
|
28
|
+
Cmnd_STK_PROG_FUSE_EXT: 0x65,
|
|
29
|
+
// ── Read ──────────────────────────────────────────────────────────────────
|
|
30
|
+
Cmnd_STK_READ_FLASH: 0x70,
|
|
31
|
+
Cmnd_STK_READ_DATA: 0x71,
|
|
32
|
+
Cmnd_STK_READ_FUSE: 0x72,
|
|
33
|
+
Cmnd_STK_READ_LOCK: 0x73,
|
|
34
|
+
Cmnd_STK_READ_PAGE: 0x74,
|
|
35
|
+
Cmnd_STK_READ_SIGN: 0x75,
|
|
36
|
+
Cmnd_STK_READ_OSCCAL: 0x76,
|
|
37
|
+
Cmnd_STK_READ_FUSE_EXT: 0x77,
|
|
38
|
+
Cmnd_STK_READ_OSCCAL_EXT: 0x78,
|
|
39
|
+
// ── Protocol Framing ──────────────────────────────────────────────────────
|
|
40
|
+
Sync_CRC_EOP: 0x20, // Every command ends with this byte
|
|
41
|
+
// ── Response Codes ────────────────────────────────────────────────────────
|
|
42
|
+
Resp_STK_OK: 0x10,
|
|
43
|
+
Resp_STK_FAILED: 0x11,
|
|
44
|
+
Resp_STK_UNKNOWN: 0x12,
|
|
45
|
+
Resp_STK_NODEVICE: 0x13,
|
|
46
|
+
Resp_STK_INSYNC: 0x14,
|
|
47
|
+
Resp_STK_NOSYNC: 0x15,
|
|
48
|
+
Resp_ADC_CHANNEL_ERROR: 0x16,
|
|
49
|
+
Resp_ADC_MEASURE_OK: 0x17,
|
|
50
|
+
Resp_PWM_CHANNEL_ERROR: 0x18,
|
|
51
|
+
Resp_PWM_ADJUST_OK: 0x19,
|
|
52
|
+
// ── Convenience ───────────────────────────────────────────────────────────
|
|
53
|
+
OK_RESPONSE: new Uint8Array([Resp_STK_INSYNC, Resp_STK_OK]),
|
|
54
|
+
};
|
|
55
|
+
export default Constants;
|
|
56
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,0EAA0E;AAE1E,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,WAAW,GAAO,IAAI,CAAC;AAE7B,MAAM,SAAS,GAAG;IAChB,6EAA6E;IAC7E,iBAAiB,EAAS,IAAI;IAC9B,oBAAoB,EAAM,IAAI;IAE9B,6EAA6E;IAC7E,sBAAsB,EAAI,IAAI;IAC9B,sBAAsB,EAAI,IAAI;IAC9B,mBAAmB,EAAO,IAAI;IAC9B,uBAAuB,EAAG,IAAI;IAE9B,6EAA6E;IAC7E,uBAAuB,EAAG,IAAI;IAC9B,uBAAuB,EAAG,IAAI;IAC9B,mBAAmB,EAAO,IAAI;IAC9B,sBAAsB,EAAI,IAAI;IAC9B,qBAAqB,EAAK,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAE9B,6EAA6E;IAC7E,mBAAmB,EAAO,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,sBAAsB,EAAI,IAAI;IAE9B,6EAA6E;IAC7E,mBAAmB,EAAO,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAC9B,oBAAoB,EAAM,IAAI;IAC9B,sBAAsB,EAAI,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAE9B,6EAA6E;IAC7E,YAAY,EAAc,IAAI,EAAE,oCAAoC;IAEpE,6EAA6E;IAC7E,WAAW,EAAe,IAAI;IAC9B,eAAe,EAAW,IAAI;IAC9B,gBAAgB,EAAU,IAAI;IAC9B,iBAAiB,EAAS,IAAI;IAC9B,eAAe,EAAW,IAAI;IAC9B,eAAe,EAAW,IAAI;IAE9B,sBAAsB,EAAI,IAAI;IAC9B,mBAAmB,EAAO,IAAI;IAC9B,sBAAsB,EAAI,IAAI;IAC9B,kBAAkB,EAAQ,IAAI;IAE9B,6EAA6E;IAC7E,WAAW,EAAE,IAAI,UAAU,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CACnD,CAAC;AAEX,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare enum STK500ErrorCode {
|
|
2
|
+
SYNC_FAILED = "STK_SYNC_FAILED",
|
|
3
|
+
SIGNATURE_MISMATCH = "STK_SIGNATURE_MISMATCH",
|
|
4
|
+
VERIFY_FAILED = "STK_VERIFY_FAILED",
|
|
5
|
+
TIMEOUT = "STK_TIMEOUT",
|
|
6
|
+
PORT_ERROR = "STK_PORT_ERROR",
|
|
7
|
+
INVALID_HEX = "STK_INVALID_HEX",
|
|
8
|
+
PROTOCOL_ERROR = "STK_PROTOCOL_ERROR",
|
|
9
|
+
CHIP_ERASE_FAILED = "STK_CHIP_ERASE_FAILED",
|
|
10
|
+
NOT_SUPPORTED = "STK_NOT_SUPPORTED"
|
|
11
|
+
}
|
|
12
|
+
export declare class STK500Error extends Error {
|
|
13
|
+
readonly code: STK500ErrorCode;
|
|
14
|
+
constructor(code: STK500ErrorCode, message: string);
|
|
15
|
+
}
|
|
16
|
+
export declare class STK500SyncError extends STK500Error {
|
|
17
|
+
readonly attempts: number;
|
|
18
|
+
constructor(attempts: number);
|
|
19
|
+
}
|
|
20
|
+
export declare class STK500SignatureMismatchError extends STK500Error {
|
|
21
|
+
readonly expected: Uint8Array;
|
|
22
|
+
readonly actual: Uint8Array;
|
|
23
|
+
constructor(expected: Uint8Array, actual: Uint8Array);
|
|
24
|
+
}
|
|
25
|
+
export declare class STK500VerifyError extends STK500Error {
|
|
26
|
+
readonly address: number;
|
|
27
|
+
readonly expected: number;
|
|
28
|
+
readonly actual: number;
|
|
29
|
+
constructor(address: number, expected: number, actual: number);
|
|
30
|
+
}
|
|
31
|
+
export declare class STK500TimeoutError extends STK500Error {
|
|
32
|
+
readonly timeoutMs: number;
|
|
33
|
+
constructor(timeoutMs: number, context?: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class STK500ProtocolError extends STK500Error {
|
|
36
|
+
constructor(message: string);
|
|
37
|
+
}
|
|
38
|
+
export declare class STK500InvalidHexError extends STK500Error {
|
|
39
|
+
readonly line?: number | undefined;
|
|
40
|
+
constructor(message: string, line?: number | undefined);
|
|
41
|
+
}
|
|
42
|
+
export declare class STK500PortError extends STK500Error {
|
|
43
|
+
constructor(message: string);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAGA,oBAAY,eAAe;IACzB,WAAW,oBAA4B;IACvC,kBAAkB,2BAA4B;IAC9C,aAAa,sBAA4B;IACzC,OAAO,gBAA4B;IACnC,UAAU,mBAA4B;IACtC,WAAW,oBAA4B;IACvC,cAAc,uBAA4B;IAC1C,iBAAiB,0BAA4B;IAC7C,aAAa,sBAA4B;CAC1C;AAED,qBAAa,WAAY,SAAQ,KAAK;aAElB,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe,EACrC,OAAO,EAAE,MAAM;CAOlB;AAED,qBAAa,eAAgB,SAAQ,WAAW;aAClB,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;CAY7C;AAED,qBAAa,4BAA6B,SAAQ,WAAW;aAEzC,QAAQ,EAAE,UAAU;aACpB,MAAM,EAAE,UAAU;gBADlB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU;CAcrC;AAED,qBAAa,iBAAkB,SAAQ,WAAW;aAE9B,OAAO,EAAE,MAAM;aACf,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBAFd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAYjC;AAED,qBAAa,kBAAmB,SAAQ,WAAW;aAE/B,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM,EACjC,OAAO,CAAC,EAAE,MAAM;CASnB;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;aACP,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA;CAK3D;AAED,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM;CAK5B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// Typed error hierarchy for webserial-flasher
|
|
2
|
+
// Callers can use instanceof to distinguish error types and show appropriate UI
|
|
3
|
+
export var STK500ErrorCode;
|
|
4
|
+
(function (STK500ErrorCode) {
|
|
5
|
+
STK500ErrorCode["SYNC_FAILED"] = "STK_SYNC_FAILED";
|
|
6
|
+
STK500ErrorCode["SIGNATURE_MISMATCH"] = "STK_SIGNATURE_MISMATCH";
|
|
7
|
+
STK500ErrorCode["VERIFY_FAILED"] = "STK_VERIFY_FAILED";
|
|
8
|
+
STK500ErrorCode["TIMEOUT"] = "STK_TIMEOUT";
|
|
9
|
+
STK500ErrorCode["PORT_ERROR"] = "STK_PORT_ERROR";
|
|
10
|
+
STK500ErrorCode["INVALID_HEX"] = "STK_INVALID_HEX";
|
|
11
|
+
STK500ErrorCode["PROTOCOL_ERROR"] = "STK_PROTOCOL_ERROR";
|
|
12
|
+
STK500ErrorCode["CHIP_ERASE_FAILED"] = "STK_CHIP_ERASE_FAILED";
|
|
13
|
+
STK500ErrorCode["NOT_SUPPORTED"] = "STK_NOT_SUPPORTED";
|
|
14
|
+
})(STK500ErrorCode || (STK500ErrorCode = {}));
|
|
15
|
+
export class STK500Error extends Error {
|
|
16
|
+
constructor(code, message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.name = 'STK500Error';
|
|
20
|
+
// Restore prototype chain for correct instanceof checks in transpiled code
|
|
21
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class STK500SyncError extends STK500Error {
|
|
25
|
+
constructor(attempts) {
|
|
26
|
+
super(STK500ErrorCode.SYNC_FAILED, `Sync failed after ${attempts} attempts. ` +
|
|
27
|
+
`Troubleshooting: (1) Is the correct COM port selected? ` +
|
|
28
|
+
`(2) Is the baud rate correct for this board? ` +
|
|
29
|
+
`(3) Is the Arduino connected and powered? ` +
|
|
30
|
+
`(4) Try pressing the Reset button just before flashing if DTR is not available.`);
|
|
31
|
+
this.attempts = attempts;
|
|
32
|
+
this.name = 'STK500SyncError';
|
|
33
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export class STK500SignatureMismatchError extends STK500Error {
|
|
37
|
+
constructor(expected, actual) {
|
|
38
|
+
const fmt = (b) => Array.from(b)
|
|
39
|
+
.map((x) => `0x${x.toString(16).padStart(2, '0')}`)
|
|
40
|
+
.join(', ');
|
|
41
|
+
super(STK500ErrorCode.SIGNATURE_MISMATCH, `Signature mismatch: expected [${fmt(expected)}], got [${fmt(actual)}]. ` +
|
|
42
|
+
`Did you select the wrong board type?`);
|
|
43
|
+
this.expected = expected;
|
|
44
|
+
this.actual = actual;
|
|
45
|
+
this.name = 'STK500SignatureMismatchError';
|
|
46
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export class STK500VerifyError extends STK500Error {
|
|
50
|
+
constructor(address, expected, actual) {
|
|
51
|
+
super(STK500ErrorCode.VERIFY_FAILED, `Verify failed at address 0x${address.toString(16).padStart(4, '0')}: ` +
|
|
52
|
+
`expected 0x${expected.toString(16).padStart(2, '0')}, ` +
|
|
53
|
+
`got 0x${actual.toString(16).padStart(2, '0')}. ` +
|
|
54
|
+
`The flash write may have been corrupted.`);
|
|
55
|
+
this.address = address;
|
|
56
|
+
this.expected = expected;
|
|
57
|
+
this.actual = actual;
|
|
58
|
+
this.name = 'STK500VerifyError';
|
|
59
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class STK500TimeoutError extends STK500Error {
|
|
63
|
+
constructor(timeoutMs, context) {
|
|
64
|
+
super(STK500ErrorCode.TIMEOUT, `Timeout after ${timeoutMs}ms${context ? ` (${context})` : ''}`);
|
|
65
|
+
this.timeoutMs = timeoutMs;
|
|
66
|
+
this.name = 'STK500TimeoutError';
|
|
67
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class STK500ProtocolError extends STK500Error {
|
|
71
|
+
constructor(message) {
|
|
72
|
+
super(STK500ErrorCode.PROTOCOL_ERROR, message);
|
|
73
|
+
this.name = 'STK500ProtocolError';
|
|
74
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export class STK500InvalidHexError extends STK500Error {
|
|
78
|
+
constructor(message, line) {
|
|
79
|
+
super(STK500ErrorCode.INVALID_HEX, message);
|
|
80
|
+
this.line = line;
|
|
81
|
+
this.name = 'STK500InvalidHexError';
|
|
82
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class STK500PortError extends STK500Error {
|
|
86
|
+
constructor(message) {
|
|
87
|
+
super(STK500ErrorCode.PORT_ERROR, message);
|
|
88
|
+
this.name = 'STK500PortError';
|
|
89
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,gFAAgF;AAEhF,MAAM,CAAN,IAAY,eAUX;AAVD,WAAY,eAAe;IACzB,kDAAuC,CAAA;IACvC,gEAA8C,CAAA;IAC9C,sDAAyC,CAAA;IACzC,0CAAmC,CAAA;IACnC,gDAAsC,CAAA;IACtC,kDAAuC,CAAA;IACvC,wDAA0C,CAAA;IAC1C,8DAA6C,CAAA;IAC7C,sDAAyC,CAAA;AAC3C,CAAC,EAVW,eAAe,KAAf,eAAe,QAU1B;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YACkB,IAAqB,EACrC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAiB;QAIrC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,2EAA2E;QAC3E,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAA4B,QAAgB;QAC1C,KAAK,CACH,eAAe,CAAC,WAAW,EAC3B,qBAAqB,QAAQ,aAAa;YACxC,yDAAyD;YACzD,+CAA+C;YAC/C,4CAA4C;YAC5C,iFAAiF,CACpF,CAAC;QARwB,aAAQ,GAAR,QAAQ,CAAQ;QAS1C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,WAAW;IAC3D,YACkB,QAAoB,EACpB,MAAkB;QAElC,MAAM,GAAG,GAAG,CAAC,CAAa,EAAU,EAAE,CACpC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aAClD,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,KAAK,CACH,eAAe,CAAC,kBAAkB,EAClC,iCAAiC,GAAG,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,KAAK;YACvE,sCAAsC,CACzC,CAAC;QAXc,aAAQ,GAAR,QAAQ,CAAY;QACpB,WAAM,GAAN,MAAM,CAAY;QAWlC,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;QAC3C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,YACkB,OAAe,EACf,QAAgB,EAChB,MAAc;QAE9B,KAAK,CACH,eAAe,CAAC,aAAa,EAC7B,8BAA8B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI;YACrE,cAAc,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI;YACxD,SAAS,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI;YACjD,0CAA0C,CAC7C,CAAC;QAVc,YAAO,GAAP,OAAO,CAAQ;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAS9B,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD,YACkB,SAAiB,EACjC,OAAgB;QAEhB,KAAK,CACH,eAAe,CAAC,OAAO,EACvB,iBAAiB,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChE,CAAC;QANc,cAAS,GAAT,SAAS,CAAQ;QAOjC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACpD,YAAY,OAAe,EAAkB,IAAa;QACxD,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QADD,SAAI,GAAJ,IAAI,CAAS;QAExD,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/** ISP programming parameters used by the STK500v2 programmer */
|
|
2
|
+
export interface V2ISPParams {
|
|
3
|
+
/** SPI programming enable timeout (default: 200) */
|
|
4
|
+
timeout?: number;
|
|
5
|
+
/** Stabilisation delay in ms after entering prog mode (default: 100) */
|
|
6
|
+
stabDelay?: number;
|
|
7
|
+
/** Command execution delay in ms (default: 25) */
|
|
8
|
+
cmdexeDelay?: number;
|
|
9
|
+
/** Number of SPI sync loops (default: 32) */
|
|
10
|
+
synchLoops?: number;
|
|
11
|
+
/** Byte-level delay in µs (default: 0) */
|
|
12
|
+
byteDelay?: number;
|
|
13
|
+
/** Expected response poll value (default: 0x53) */
|
|
14
|
+
pollValue?: number;
|
|
15
|
+
/** Byte index of poll value in SPI response (default: 3) */
|
|
16
|
+
pollIndex?: number;
|
|
17
|
+
/** Chip erase delay in ms (default: 55) */
|
|
18
|
+
eraseDelay?: number;
|
|
19
|
+
/** Flash write mode byte for CMD_PROGRAM_FLASH_ISP (default: 0xC1) */
|
|
20
|
+
flashMode?: number;
|
|
21
|
+
/** Flash page write delay in ms (default: 6) */
|
|
22
|
+
flashDelay?: number;
|
|
23
|
+
}
|
|
24
|
+
/** Configuration for a specific Arduino / AVR board */
|
|
25
|
+
export interface Board {
|
|
26
|
+
/** Human-readable board name */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Baud rate for bootloader communication */
|
|
29
|
+
baudRate: number;
|
|
30
|
+
/** 3-byte AVR device signature (from chip datasheet) */
|
|
31
|
+
signature: Uint8Array;
|
|
32
|
+
/** Flash page size in bytes (128 for ATmega328P, 256 for ATmega2560) */
|
|
33
|
+
pageSize: number;
|
|
34
|
+
/** Command timeout in milliseconds */
|
|
35
|
+
timeout: number;
|
|
36
|
+
/**
|
|
37
|
+
* Bootloader protocol to use (default: 'stk500v1').
|
|
38
|
+
* - 'stk500v1' — Classic STK500 protocol (Uno, Nano, Pro Mini, …)
|
|
39
|
+
* - 'stk500v2' — STK500v2 ISP protocol (Mega 2560, wiring bootloader)
|
|
40
|
+
* - 'avr109' — Atmel AVR109 / Caterina CDC protocol (Leonardo, Micro, Pro Micro)
|
|
41
|
+
* - 'updi' — Single-wire UPDI (tinyAVR, ATmega4809, AVR Dx/Ex)
|
|
42
|
+
* - 'picoboot' — USB PICOBOOT protocol (Raspberry Pi Pico RP2040 / RP2350)
|
|
43
|
+
*/
|
|
44
|
+
protocol?: 'stk500v1' | 'stk500v2' | 'avr109' | 'updi' | 'picoboot';
|
|
45
|
+
/** Use 8-bit addresses instead of 16-bit word addresses (e.g. AVR4809) */
|
|
46
|
+
use8BitAddresses?: boolean;
|
|
47
|
+
/** Reset method: 'dtr' (default), 'rts', or 'none' */
|
|
48
|
+
resetMethod?: 'dtr' | 'rts' | 'none';
|
|
49
|
+
/** Delay in ms after DTR/RTS toggle before attempting sync (default: 200) */
|
|
50
|
+
resetDelayMs?: number;
|
|
51
|
+
/** Total flash capacity in bytes (for HEX validation) */
|
|
52
|
+
flashSize?: number;
|
|
53
|
+
/** EEPROM size in bytes */
|
|
54
|
+
eepromSize?: number;
|
|
55
|
+
/** EEPROM page size in bytes (for STK500v2 descriptor, default: 8) */
|
|
56
|
+
eepromPageSize?: number;
|
|
57
|
+
/** Delay in ms after chip erase (STK500v1 only, default: 10) */
|
|
58
|
+
eraseDelayMs?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Open the port at 1200 baud briefly to trigger bootloader entry
|
|
61
|
+
* before programming. Required for Leonardo/Micro/Pro Micro.
|
|
62
|
+
* Handled by the caller (CDCResetHelper) before constructing AVR109.
|
|
63
|
+
*/
|
|
64
|
+
cdc1200BaudReset?: boolean;
|
|
65
|
+
/** Milliseconds to wait for USB re-enumeration after CDC reset (default: 3000) */
|
|
66
|
+
cdcResetWaitMs?: number;
|
|
67
|
+
/** ISP programming parameters for STK500v2 bootloaders */
|
|
68
|
+
ispParams?: V2ISPParams;
|
|
69
|
+
/** Boot section start address in words (for device descriptor) */
|
|
70
|
+
bootAddress?: number;
|
|
71
|
+
/** Boot section size in words (for device descriptor) */
|
|
72
|
+
upperBootSize?: number;
|
|
73
|
+
/** Override the 52-byte STK500v2 device descriptor (expert use) */
|
|
74
|
+
stk500v2Descriptor?: Uint8Array;
|
|
75
|
+
/**
|
|
76
|
+
* USB Vendor ID for PICOBOOT device detection (default: 0x2E8A — Raspberry Pi).
|
|
77
|
+
* Only used when protocol = 'picoboot'.
|
|
78
|
+
*/
|
|
79
|
+
vid?: number;
|
|
80
|
+
/**
|
|
81
|
+
* USB Product ID for PICOBOOT device detection (default: 0x0003 — RP2040 USBBOOT).
|
|
82
|
+
* Only used when protocol = 'picoboot'.
|
|
83
|
+
*/
|
|
84
|
+
pid?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Start byte address of flash in data space.
|
|
87
|
+
* tinyAVR 0/1/2 series: 0x8000
|
|
88
|
+
* megaAVR 0 series (ATmega4809): 0x4000
|
|
89
|
+
*/
|
|
90
|
+
flashBase?: number;
|
|
91
|
+
/** Base address of the signature row (default: 0x1100) */
|
|
92
|
+
sigrowBase?: number;
|
|
93
|
+
deviceCode?: number;
|
|
94
|
+
progType?: number;
|
|
95
|
+
parMode?: number;
|
|
96
|
+
polling?: number;
|
|
97
|
+
selfTimed?: number;
|
|
98
|
+
lockBytes?: number;
|
|
99
|
+
fuseBytes?: number;
|
|
100
|
+
flashPollVal1?: number;
|
|
101
|
+
flashPollVal2?: number;
|
|
102
|
+
eepromPollVal1?: number;
|
|
103
|
+
eepromPollVal2?: number;
|
|
104
|
+
}
|
|
105
|
+
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';
|
|
106
|
+
export type Logger = (level: LogLevel, message: string) => void;
|
|
107
|
+
/** Progress callback for bootload() — status label and 0–100 percentage */
|
|
108
|
+
export type BootloadProgressCallback = (status: string, percentage: number) => void;
|
|
109
|
+
export interface RetryOptions {
|
|
110
|
+
/** How many times to attempt sync before giving up (default: 5) */
|
|
111
|
+
syncAttempts?: number;
|
|
112
|
+
/** Milliseconds to wait between retries (default: 200) */
|
|
113
|
+
retryDelayMs?: number;
|
|
114
|
+
}
|
|
115
|
+
/** Per-stage timeout overrides (all in milliseconds) */
|
|
116
|
+
export interface StageTimeouts {
|
|
117
|
+
/** Timeout for sync / sign-on phase (default: board.timeout) */
|
|
118
|
+
syncMs?: number;
|
|
119
|
+
/** Timeout for signature read (default: board.timeout) */
|
|
120
|
+
signatureMs?: number;
|
|
121
|
+
/** Timeout for chip erase (default: board.timeout) */
|
|
122
|
+
eraseMs?: number;
|
|
123
|
+
/** Timeout for flash upload (default: board.timeout × 3) */
|
|
124
|
+
uploadMs?: number;
|
|
125
|
+
/** Timeout for verify phase (default: board.timeout × 2) */
|
|
126
|
+
verifyMs?: number;
|
|
127
|
+
}
|
|
128
|
+
export interface STK500Options {
|
|
129
|
+
/** Suppress all logging (overrides logger) */
|
|
130
|
+
quiet?: boolean;
|
|
131
|
+
/** Custom logging function. Receives level + message. */
|
|
132
|
+
logger?: Logger;
|
|
133
|
+
/** Retry configuration */
|
|
134
|
+
retry?: RetryOptions;
|
|
135
|
+
/** Per-stage timeout overrides */
|
|
136
|
+
timeouts?: StageTimeouts;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,oDAAoD"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { STK500 } from './stk500.js';
|
|
2
|
+
export { STK500 as default } from './stk500.js';
|
|
3
|
+
export { STK500v2 } from './protocol/stk500v2/programmer.js';
|
|
4
|
+
export { AVR109 } from './protocol/avr109/programmer.js';
|
|
5
|
+
export { UPDI } from './protocol/updi/programmer.js';
|
|
6
|
+
export type { UPDIFuses } from './protocol/updi/programmer.js';
|
|
7
|
+
export { PicoBoot } from './protocol/picoboot/programmer.js';
|
|
8
|
+
export { parseUf2, binaryToUf2, isUf2 } from './protocol/picoboot/uf2.js';
|
|
9
|
+
export type { UF2Block, UF2ParseResult } from './protocol/picoboot/uf2.js';
|
|
10
|
+
export { autoDetect } from './autoDetect.js';
|
|
11
|
+
export type { AutoDetectResult, AutoDetectOptions } from './autoDetect.js';
|
|
12
|
+
export type { Board, V2ISPParams, STK500Options, RetryOptions, StageTimeouts, BootloadProgressCallback, LogLevel, Logger, } from './core/types.js';
|
|
13
|
+
export { STK500ErrorCode, STK500Error, STK500SyncError, STK500SignatureMismatchError, STK500VerifyError, STK500TimeoutError, STK500ProtocolError, STK500InvalidHexError, STK500PortError, } from './core/errors.js';
|
|
14
|
+
export { WebSerialTransport } from './transport/WebSerialTransport.js';
|
|
15
|
+
export { NodeSerialTransport } from './transport/NodeSerialTransport.js';
|
|
16
|
+
export { NodeUSBTransport } from './transport/NodeUSBTransport.js';
|
|
17
|
+
export type { ISTKTransport, SerialSignals } from './transport/ITransport.js';
|
|
18
|
+
export type { IPicobootTransport } from './transport/IPicobootTransport.js';
|
|
19
|
+
export type { WebSerialPortFilter, WebSerialOpenOptions } from './transport/WebSerialTransport.js';
|
|
20
|
+
export type { NodeSerialPortLike } from './transport/NodeSerialTransport.js';
|
|
21
|
+
export { BOARDS, boardFromFqbn, detectBoardBySignature, ARDUINO_USB_VENDOR_IDS, } from './boards/database.js';
|
|
22
|
+
export { parseIntelHex } from './protocol/hexParser.js';
|
|
23
|
+
export type { ParseResult } from './protocol/hexParser.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAQ,iCAAiC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAU,+BAA+B,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI3E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAI3E,YAAY,EACV,KAAK,EACL,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,QAAQ,EACR,MAAM,GACP,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,kBAAkB,EAAE,MAAQ,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAO,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAU,iCAAiC,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAe,2BAA2B,CAAC;AACvF,YAAY,EAAE,kBAAkB,EAAE,MAAyB,mCAAmC,CAAC;AAC/F,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACnG,YAAY,EAAE,kBAAkB,EAAE,MAAyB,oCAAoC,CAAC;AAIhG,OAAO,EACL,MAAM,EACN,aAAa,EACb,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,aAAa,EAAE,MAAW,yBAAyB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAQ,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// webserial-flasher — public API
|
|
2
|
+
//
|
|
3
|
+
// Default export: STK500 class (backward compatible with v1.x)
|
|
4
|
+
// Named exports: everything needed for typed usage across all supported protocols
|
|
5
|
+
// ── Protocol programmers ──────────────────────────────────────────────────
|
|
6
|
+
export { STK500 } from './stk500.js';
|
|
7
|
+
export { STK500 as default } from './stk500.js';
|
|
8
|
+
export { STK500v2 } from './protocol/stk500v2/programmer.js';
|
|
9
|
+
export { AVR109 } from './protocol/avr109/programmer.js';
|
|
10
|
+
export { UPDI } from './protocol/updi/programmer.js';
|
|
11
|
+
export { PicoBoot } from './protocol/picoboot/programmer.js';
|
|
12
|
+
export { parseUf2, binaryToUf2, isUf2 } from './protocol/picoboot/uf2.js';
|
|
13
|
+
// ── Auto-detection ────────────────────────────────────────────────────────
|
|
14
|
+
export { autoDetect } from './autoDetect.js';
|
|
15
|
+
// ── Errors ────────────────────────────────────────────────────────────────
|
|
16
|
+
export { STK500ErrorCode, STK500Error, STK500SyncError, STK500SignatureMismatchError, STK500VerifyError, STK500TimeoutError, STK500ProtocolError, STK500InvalidHexError, STK500PortError, } from './core/errors.js';
|
|
17
|
+
// ── Transport ─────────────────────────────────────────────────────────────
|
|
18
|
+
export { WebSerialTransport } from './transport/WebSerialTransport.js';
|
|
19
|
+
export { NodeSerialTransport } from './transport/NodeSerialTransport.js';
|
|
20
|
+
export { NodeUSBTransport } from './transport/NodeUSBTransport.js';
|
|
21
|
+
// ── Board database ────────────────────────────────────────────────────────
|
|
22
|
+
export { BOARDS, boardFromFqbn, detectBoardBySignature, ARDUINO_USB_VENDOR_IDS, } from './boards/database.js';
|
|
23
|
+
// ── HEX parser (exposed for tooling / testing) ────────────────────────────
|
|
24
|
+
export { parseIntelHex } from './protocol/hexParser.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,+DAA+D;AAC/D,kFAAkF;AAElF,6EAA6E;AAE7E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAQ,iCAAiC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAU,+BAA+B,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAG1E,6EAA6E;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgB7C,6EAA6E;AAE7E,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,6EAA6E;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAQ,mCAAmC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAO,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAU,iCAAiC,CAAC;AAMvE,6EAA6E;AAE7E,OAAO,EACL,MAAM,EACN,aAAa,EACb,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,6EAA6E;AAE7E,OAAO,EAAE,aAAa,EAAE,MAAW,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { Board, STK500Options, BootloadProgressCallback } from '../../core/types.js';
|
|
2
|
+
import type { ISTKTransport } from '../../transport/ITransport.js';
|
|
3
|
+
export declare class AVR109 {
|
|
4
|
+
private readonly transport;
|
|
5
|
+
private readonly board;
|
|
6
|
+
private readonly log;
|
|
7
|
+
constructor(transport: ISTKTransport, board: Board, opts?: STK500Options);
|
|
8
|
+
private write;
|
|
9
|
+
/** Send command bytes and assert the response is CR (0x0D) */
|
|
10
|
+
private writeCR;
|
|
11
|
+
/**
|
|
12
|
+
* Read the software identifier (7 bytes, e.g. "CATERIN" for Caterina).
|
|
13
|
+
* Useful for probing whether the bootloader is running.
|
|
14
|
+
*/
|
|
15
|
+
getSoftwareId(): Promise<string>;
|
|
16
|
+
/** Attempt to get the software ID, retry up to `attempts` times */
|
|
17
|
+
sync(attempts: number): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Read 3-byte device signature (MSB first).
|
|
20
|
+
* Caterina returns: [sig_byte_2, sig_byte_1, sig_byte_0]
|
|
21
|
+
*/
|
|
22
|
+
getSignature(): Promise<Uint8Array>;
|
|
23
|
+
verifySignature(): Promise<void>;
|
|
24
|
+
enterProgMode(): Promise<void>;
|
|
25
|
+
leaveProgMode(): Promise<void>;
|
|
26
|
+
chipErase(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Set the current word address (auto-increment applies to subsequent reads/writes).
|
|
29
|
+
* @param wordAddr Flash word address (= byte_address / 2)
|
|
30
|
+
*/
|
|
31
|
+
setAddress(wordAddr: number): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Write a block to flash ('F') or EEPROM ('E').
|
|
34
|
+
* @param memType 'F' for flash, 'E' for EEPROM
|
|
35
|
+
* @param data Block data (size ≤ board.pageSize)
|
|
36
|
+
*/
|
|
37
|
+
writeBlock(memType: 'F' | 'E', data: Uint8Array): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Read a block from flash ('F') or EEPROM ('E').
|
|
40
|
+
* Address must be set with setAddress() first.
|
|
41
|
+
* @param memType 'F' for flash, 'E' for EEPROM
|
|
42
|
+
* @param size Number of bytes to read
|
|
43
|
+
*/
|
|
44
|
+
readBlock(memType: 'F' | 'E', size: number): Promise<Uint8Array>;
|
|
45
|
+
/**
|
|
46
|
+
* Read the low fuse byte.
|
|
47
|
+
* Caterina command: 'F' (0x46) → 1 byte response
|
|
48
|
+
*/
|
|
49
|
+
readLowFuse(): Promise<number>;
|
|
50
|
+
/**
|
|
51
|
+
* Read the high fuse byte.
|
|
52
|
+
* Caterina command: 'N' (0x4E) → 1 byte response
|
|
53
|
+
*/
|
|
54
|
+
readHighFuse(): Promise<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Read the lock bits.
|
|
57
|
+
* Caterina command: 'r' (0x72) → 1 byte response
|
|
58
|
+
*/
|
|
59
|
+
readLockBits(): Promise<number>;
|
|
60
|
+
/**
|
|
61
|
+
* Read available fuse bytes: low, high, and lock bits.
|
|
62
|
+
* Extended fuse is not accessible via AVR109.
|
|
63
|
+
*/
|
|
64
|
+
readFuses(): Promise<{
|
|
65
|
+
low: number;
|
|
66
|
+
high: number;
|
|
67
|
+
lock: number;
|
|
68
|
+
}>;
|
|
69
|
+
upload(hexData: string | Uint8Array, progressCallback?: (pct: number) => void): Promise<void>;
|
|
70
|
+
verify(hexData: string | Uint8Array, progressCallback?: (pct: number) => void): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Exit the bootloader — device resets and runs the new firmware.
|
|
73
|
+
* No response is expected; device immediately resets on receiving 'Q'.
|
|
74
|
+
*/
|
|
75
|
+
quit(): Promise<void>;
|
|
76
|
+
bootload(hexData: string | Uint8Array, progressCallback?: BootloadProgressCallback): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=programmer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"programmer.d.ts","sourceRoot":"","sources":["../../../src/protocol/avr109/programmer.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,wBAAwB,EAEzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAqDnE,qBAAa,MAAM;IAIf,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAGV,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,KAAK,EAC7B,IAAI,GAAE,aAAkB;YAkBZ,KAAK;IAInB,8DAA8D;YAChD,OAAO;IAarB;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAOtC,mEAAmE;IAC7D,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAQnC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAahC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAOhC;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD;;;;OAIG;IACG,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrE;;;;;OAKG;IACG,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAYtE;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAMpC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAMrC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAMrC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAUjE,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACvC,OAAO,CAAC,IAAI,CAAC;IA4BV,MAAM,CACV,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACvC,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,QAAQ,CACZ,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,gBAAgB,CAAC,EAAE,wBAAwB,GAC1C,OAAO,CAAC,IAAI,CAAC;CAiCjB"}
|