@nordicsemiconductor/pc-nrfconnect-shared 208.0.0 → 209.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/Changelog.md +10 -0
- package/nrfutil/device/__mocks__/device.ts +3 -0
- package/nrfutil/device/batch.ts +51 -20
- package/nrfutil/device/common.ts +6 -1
- package/nrfutil/device/device.ts +0 -2
- package/nrfutil/device/index.ts +1 -0
- package/nrfutil/device/xRead.ts +133 -0
- package/package.json +1 -1
- package/typings/generated/nrfutil/device/__mocks__/device.d.ts +3 -0
- package/typings/generated/nrfutil/device/__mocks__/device.d.ts.map +1 -1
- package/typings/generated/nrfutil/device/batch.d.ts +2 -2
- package/typings/generated/nrfutil/device/batch.d.ts.map +1 -1
- package/typings/generated/nrfutil/device/common.d.ts +1 -1
- package/typings/generated/nrfutil/device/common.d.ts.map +1 -1
- package/typings/generated/nrfutil/device/device.d.ts +0 -2
- package/typings/generated/nrfutil/device/device.d.ts.map +1 -1
- package/typings/generated/nrfutil/device/index.d.ts +1 -0
- package/typings/generated/nrfutil/device/index.d.ts.map +1 -1
- package/typings/generated/nrfutil/device/xRead.d.ts +20 -0
- package/typings/generated/nrfutil/device/xRead.d.ts.map +1 -0
- package/nrfutil/device/firmwareRead.ts +0 -34
- package/typings/generated/nrfutil/device/firmwareRead.d.ts +0 -10
- package/typings/generated/nrfutil/device/firmwareRead.d.ts.map +0 -1
package/Changelog.md
CHANGED
|
@@ -7,6 +7,16 @@ This project does _not_ adhere to
|
|
|
7
7
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html) but contrary to it
|
|
8
8
|
every new version is a new major version.
|
|
9
9
|
|
|
10
|
+
## 209.0.0 - 2025-04-30
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Nrfutil device use of `fw-read` is replaced with `x-read`.
|
|
15
|
+
|
|
16
|
+
### Steps to upgrade when using this package
|
|
17
|
+
|
|
18
|
+
- Any use of `firmwareRead()` must be replaced with `xRead()`.
|
|
19
|
+
|
|
10
20
|
## 208.0.0 - 2025-04-17
|
|
11
21
|
|
|
12
22
|
### Changed
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import xRead from '../xRead';
|
|
8
|
+
|
|
7
9
|
const program = jest.fn();
|
|
8
10
|
const programBuffer = jest.fn();
|
|
9
11
|
const deviceInfo = jest.fn(() => Promise.resolve({}));
|
|
@@ -38,6 +40,7 @@ export default {
|
|
|
38
40
|
getCoreInfo,
|
|
39
41
|
list,
|
|
40
42
|
firmwareRead,
|
|
43
|
+
xRead,
|
|
41
44
|
onLogging,
|
|
42
45
|
setLogLevel,
|
|
43
46
|
setVerboseLogging,
|
package/nrfutil/device/batch.ts
CHANGED
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
NrfutilDevice,
|
|
20
20
|
ResetKind,
|
|
21
21
|
} from './common';
|
|
22
|
-
import { DeviceBuffer } from './firmwareRead';
|
|
23
22
|
import { DeviceCoreInfo } from './getCoreInfo';
|
|
24
23
|
import { FWInfo } from './getFwInfo';
|
|
25
24
|
import { GetProtectionStatusResult } from './getProtectionStatus';
|
|
@@ -28,6 +27,7 @@ import {
|
|
|
28
27
|
ProgrammingOptions,
|
|
29
28
|
programmingOptionsToArgs,
|
|
30
29
|
} from './program';
|
|
30
|
+
import { MemoryReadRaw, ReadResult, toIntelHex } from './xRead';
|
|
31
31
|
|
|
32
32
|
type BatchOperationWrapperUnknown = BatchOperationWrapper<unknown>;
|
|
33
33
|
type CallbacksUnknown = Callbacks<unknown>;
|
|
@@ -55,7 +55,9 @@ export class Batch {
|
|
|
55
55
|
await box.singleInfoOperationOptionalData<object>(
|
|
56
56
|
command,
|
|
57
57
|
undefined,
|
|
58
|
-
['--generate', '--core', core].concat(
|
|
58
|
+
['--generate', ...(core ? ['--core', core] : [])].concat(
|
|
59
|
+
args
|
|
60
|
+
)
|
|
59
61
|
);
|
|
60
62
|
|
|
61
63
|
return {
|
|
@@ -156,25 +158,54 @@ export class Batch {
|
|
|
156
158
|
return this;
|
|
157
159
|
}
|
|
158
160
|
|
|
159
|
-
public
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
161
|
+
public xRead(
|
|
162
|
+
core: DeviceCore,
|
|
163
|
+
address: number,
|
|
164
|
+
bytes: number,
|
|
165
|
+
width?: 8 | 15 | 32,
|
|
166
|
+
direct?: boolean,
|
|
167
|
+
callbacks?: Callbacks<ReadResult>
|
|
168
|
+
) {
|
|
169
|
+
const args: string[] = [
|
|
170
|
+
'--address',
|
|
171
|
+
address.toString(),
|
|
172
|
+
'--bytes',
|
|
173
|
+
bytes.toString(),
|
|
174
|
+
];
|
|
175
|
+
|
|
176
|
+
if (direct) {
|
|
177
|
+
args.push('--direct');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (width) {
|
|
181
|
+
args.push('--width');
|
|
182
|
+
args.push(width.toString());
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
this.enqueueBatchOperationObject(
|
|
186
|
+
'x-read',
|
|
187
|
+
core,
|
|
188
|
+
{
|
|
189
|
+
...callbacks,
|
|
190
|
+
onTaskEnd: (taskEnd: TaskEnd<MemoryReadRaw>) => {
|
|
191
|
+
if (taskEnd.result === 'success' && taskEnd.data) {
|
|
192
|
+
const data = toIntelHex(taskEnd.data.memoryData);
|
|
193
|
+
|
|
194
|
+
callbacks?.onTaskEnd?.({
|
|
195
|
+
...taskEnd,
|
|
196
|
+
task: {
|
|
197
|
+
...taskEnd.task,
|
|
198
|
+
data,
|
|
199
|
+
},
|
|
169
200
|
data,
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
201
|
+
});
|
|
202
|
+
} else {
|
|
203
|
+
callbacks?.onException?.(new Error('Read failed'));
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
} as CallbacksUnknown,
|
|
207
|
+
args
|
|
208
|
+
);
|
|
178
209
|
|
|
179
210
|
return this;
|
|
180
211
|
}
|
package/nrfutil/device/common.ts
CHANGED
|
@@ -73,7 +73,12 @@ export type VersionType =
|
|
|
73
73
|
| 'NRFDL_VERSION_TYPE_INCREMENTAL'
|
|
74
74
|
| 'NRFDL_VERSION_TYPE_STRING';
|
|
75
75
|
|
|
76
|
-
export type DeviceCore =
|
|
76
|
+
export type DeviceCore =
|
|
77
|
+
| 'Application'
|
|
78
|
+
| 'Modem'
|
|
79
|
+
| 'Network'
|
|
80
|
+
| 'Secure'
|
|
81
|
+
| 'FLPR';
|
|
77
82
|
|
|
78
83
|
export interface DeviceTraits {
|
|
79
84
|
usb?: boolean;
|
package/nrfutil/device/device.ts
CHANGED
|
@@ -10,7 +10,6 @@ import { Batch } from './batch';
|
|
|
10
10
|
import boardController from './boardController';
|
|
11
11
|
import deviceInfo from './deviceInfo';
|
|
12
12
|
import erase from './erase';
|
|
13
|
-
import firmwareRead from './firmwareRead';
|
|
14
13
|
import getBoardControllerConfig from './getBoardControllerConfig';
|
|
15
14
|
import getBoardControllerVersion from './getBoardControllerVersion';
|
|
16
15
|
import getCoreInfo from './getCoreInfo';
|
|
@@ -57,7 +56,6 @@ export default {
|
|
|
57
56
|
setMcuState,
|
|
58
57
|
getCoreInfo,
|
|
59
58
|
list,
|
|
60
|
-
firmwareRead,
|
|
61
59
|
onLogging,
|
|
62
60
|
setLogLevel,
|
|
63
61
|
setVerboseLogging,
|
package/nrfutil/device/index.ts
CHANGED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
3
|
+
*
|
|
4
|
+
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* eslint-disable no-bitwise */
|
|
8
|
+
import { Progress } from '../sandboxTypes';
|
|
9
|
+
import {
|
|
10
|
+
DeviceCore,
|
|
11
|
+
deviceSingleTaskEndOperation,
|
|
12
|
+
NrfutilDevice,
|
|
13
|
+
} from './common';
|
|
14
|
+
|
|
15
|
+
export interface MemoryData {
|
|
16
|
+
startAddress: string;
|
|
17
|
+
values: number[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface MemoryReadRaw {
|
|
21
|
+
name: 'memory-read';
|
|
22
|
+
serialNumber: string;
|
|
23
|
+
memoryData: MemoryData[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type ReadResult = Awaited<ReturnType<typeof xRead>>;
|
|
27
|
+
|
|
28
|
+
export function toIntelHex(memoryData: MemoryData[]) {
|
|
29
|
+
const sections = memoryData.map(d => ({
|
|
30
|
+
startAddress: Number.parseInt(d.startAddress, 16),
|
|
31
|
+
buffer: Buffer.from(d.values),
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
const bytesPerLine = 16;
|
|
35
|
+
|
|
36
|
+
const checksum = (bytes: number[]): number => {
|
|
37
|
+
const sum = bytes.reduce((acc, b) => acc + b, 0);
|
|
38
|
+
return (~sum + 1) & 0xff;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const formatRecord = (record: number[]) =>
|
|
42
|
+
`:${record
|
|
43
|
+
.map(b => b.toString(16).padStart(2, '0').toUpperCase())
|
|
44
|
+
.join('')}`;
|
|
45
|
+
|
|
46
|
+
const records = sections.flatMap(({ startAddress, buffer }) => {
|
|
47
|
+
const totalLines = Math.ceil(buffer.length / bytesPerLine);
|
|
48
|
+
let currentExtAddr = -1;
|
|
49
|
+
|
|
50
|
+
return Array.from({ length: totalLines }).flatMap((_, i) => {
|
|
51
|
+
const offset = i * bytesPerLine;
|
|
52
|
+
const absoluteAddr = startAddress + offset;
|
|
53
|
+
const extAddr = absoluteAddr >>> 16;
|
|
54
|
+
const addr = absoluteAddr & 0xffff;
|
|
55
|
+
const lineBytes = buffer.subarray(offset, offset + bytesPerLine);
|
|
56
|
+
const recordList: string[] = [];
|
|
57
|
+
|
|
58
|
+
if (extAddr !== currentExtAddr) {
|
|
59
|
+
currentExtAddr = extAddr;
|
|
60
|
+
const extRecord = [
|
|
61
|
+
0x02,
|
|
62
|
+
0x00,
|
|
63
|
+
0x00,
|
|
64
|
+
0x04,
|
|
65
|
+
(extAddr >> 8) & 0xff,
|
|
66
|
+
extAddr & 0xff,
|
|
67
|
+
];
|
|
68
|
+
extRecord.push(checksum(extRecord));
|
|
69
|
+
recordList.push(formatRecord(extRecord));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const dataRecord = [
|
|
73
|
+
lineBytes.length,
|
|
74
|
+
(addr >> 8) & 0xff,
|
|
75
|
+
addr & 0xff,
|
|
76
|
+
0x00,
|
|
77
|
+
...lineBytes,
|
|
78
|
+
];
|
|
79
|
+
dataRecord.push(checksum(dataRecord));
|
|
80
|
+
recordList.push(formatRecord(dataRecord));
|
|
81
|
+
|
|
82
|
+
return recordList;
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
records.push(':00000001FF');
|
|
87
|
+
|
|
88
|
+
return { intelHex: records.join('\n') };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const xRead = async (
|
|
92
|
+
device: NrfutilDevice,
|
|
93
|
+
address: number,
|
|
94
|
+
bytes: number,
|
|
95
|
+
core?: DeviceCore,
|
|
96
|
+
width?: 8 | 15 | 32, // defaults to 32
|
|
97
|
+
direct?: boolean,
|
|
98
|
+
onProgress?: (progress: Progress) => void,
|
|
99
|
+
controller?: AbortController
|
|
100
|
+
) => {
|
|
101
|
+
const args: string[] = [
|
|
102
|
+
'--address',
|
|
103
|
+
address.toString(),
|
|
104
|
+
'--bytes',
|
|
105
|
+
bytes.toString(),
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
if (direct) {
|
|
109
|
+
args.push('--direct');
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (width) {
|
|
113
|
+
args.push('--width');
|
|
114
|
+
args.push(width.toString());
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (core) {
|
|
118
|
+
args.push('--core');
|
|
119
|
+
args.push(core);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const result = await deviceSingleTaskEndOperation<MemoryReadRaw>(
|
|
123
|
+
device,
|
|
124
|
+
'x-read',
|
|
125
|
+
onProgress,
|
|
126
|
+
controller,
|
|
127
|
+
args
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
return toIntelHex(result.memoryData);
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export default xRead;
|
package/package.json
CHANGED
|
@@ -15,6 +15,9 @@ declare const _default: {
|
|
|
15
15
|
stop: jest.Mock<any, any, any>;
|
|
16
16
|
}, [], any>;
|
|
17
17
|
firmwareRead: jest.Mock<any, any, any>;
|
|
18
|
+
xRead: (device: import("..").NrfutilDevice, address: number, bytes: number, core?: import("..").DeviceCore | undefined, width?: 8 | 15 | 32 | undefined, direct?: boolean | undefined, onProgress?: ((progress: import("../..").Progress) => void) | undefined, controller?: AbortController | undefined) => Promise<{
|
|
19
|
+
intelHex: string;
|
|
20
|
+
}>;
|
|
18
21
|
onLogging: jest.Mock<any, any, any>;
|
|
19
22
|
setLogLevel: jest.Mock<any, any, any>;
|
|
20
23
|
setVerboseLogging: jest.Mock<any, any, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../../nrfutil/device/__mocks__/device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../../nrfutil/device/__mocks__/device.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,wBAmBE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { TaskEnd } from '../sandboxTypes';
|
|
3
2
|
import { Callbacks } from './batchTypes';
|
|
4
3
|
import { DeviceCore, DeviceTraits, NrfutilDevice, ResetKind } from './common';
|
|
@@ -6,6 +5,7 @@ import { DeviceCoreInfo } from './getCoreInfo';
|
|
|
6
5
|
import { FWInfo } from './getFwInfo';
|
|
7
6
|
import { GetProtectionStatusResult } from './getProtectionStatus';
|
|
8
7
|
import { FirmwareType, ProgrammingOptions } from './program';
|
|
8
|
+
import { ReadResult } from './xRead';
|
|
9
9
|
export declare class Batch {
|
|
10
10
|
private operationBatchGeneration;
|
|
11
11
|
private collectOperations;
|
|
@@ -15,7 +15,7 @@ export declare class Batch {
|
|
|
15
15
|
boardController(data: object, callbacks?: Callbacks): this;
|
|
16
16
|
getBoardControllerConfig(callbacks?: Callbacks): this;
|
|
17
17
|
getBoardControllerVersion(callbacks?: Callbacks): this;
|
|
18
|
-
|
|
18
|
+
xRead(core: DeviceCore, address: number, bytes: number, width?: 8 | 15 | 32, direct?: boolean, callbacks?: Callbacks<ReadResult>): this;
|
|
19
19
|
getCoreInfo(core: DeviceCore, callbacks?: Callbacks<DeviceCoreInfo>): this;
|
|
20
20
|
getFwInfo(core: DeviceCore, callbacks?: Callbacks<FWInfo>): this;
|
|
21
21
|
getProtectionStatus(core: DeviceCore, callbacks?: Callbacks<GetProtectionStatusResult>): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/batch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/batch.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAyB,SAAS,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EACH,UAAU,EACV,YAAY,EAEZ,aAAa,EACb,SAAS,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EACH,YAAY,EACZ,kBAAkB,EAErB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAiB,UAAU,EAAc,MAAM,SAAS,CAAC;AAKhE,qBAAa,KAAK;IACd,OAAO,CAAC,wBAAwB,CACzB;IAEP,OAAO,CAAC,iBAAiB,CAIhB;IAET,OAAO,CAAC,2BAA2B;IA6B5B,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;IAU7D,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS;IAU7C,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS;IAuBnD,wBAAwB,CAAC,SAAS,CAAC,EAAE,SAAS;IAsB9C,yBAAyB,CAAC,SAAS,CAAC,EAAE,SAAS;IAsB/C,KAAK,CACR,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EACnB,MAAM,CAAC,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC;IA8C9B,WAAW,CACd,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC;IAWlC,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;IAUzD,mBAAmB,CACtB,IAAI,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,SAAS,CAAC,yBAAyB,CAAC;IAW7C,OAAO,CACV,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,UAAU,EAChB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,YAAY,CAAC,EAAE,YAAY,EAC3B,SAAS,CAAC,EAAE,SAAS;IA8ClB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS;IAU/C,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS;IAWhE,OAAO,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI;IAW7C,GAAG,CACZ,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,eAAe,GAAG,SAAS,GACzC,OAAO,CAAC,OAAO,EAAE,CAAC;CAqGxB"}
|
|
@@ -26,7 +26,7 @@ export interface NrfutilDevice {
|
|
|
26
26
|
export type DeviceFamily = 'NRF51_FAMILY' | 'NRF52_FAMILY' | 'NRF53_FAMILY' | 'NRF91_FAMILY';
|
|
27
27
|
export type ProtectionStatus = 'NRFDL_PROTECTION_STATUS_NONE' | 'NRFDL_PROTECTION_STATUS_REGION0' | 'NRFDL_PROTECTION_STATUS_REGION0_REGION1' | 'NRFDL_PROTECTION_STATUS_SECURE_REGIONS' | 'NRFDL_PROTECTION_STATUS_ALL';
|
|
28
28
|
export type VersionType = 'NRFDL_VERSION_TYPE_SEMANTIC' | 'NRFDL_VERSION_TYPE_INCREMENTAL' | 'NRFDL_VERSION_TYPE_STRING';
|
|
29
|
-
export type DeviceCore = 'Application' | 'Modem' | 'Network';
|
|
29
|
+
export type DeviceCore = 'Application' | 'Modem' | 'Network' | 'Secure' | 'FLPR';
|
|
30
30
|
export interface DeviceTraits {
|
|
31
31
|
usb?: boolean;
|
|
32
32
|
nordicUsb?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/common.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,eAAO,MAAM,kBAAkB,WAAY,YAAY,aAatD,CAAC;AAEF,MAAM,MAAM,SAAS,GACf,cAAc,GACd,YAAY,GACZ,aAAa,GACb,WAAW,CAAC;AAElB,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,GAAG,CAAC;IAEV,WAAW,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,IAAI,GAAG;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL;AAED,MAAM,MAAM,YAAY,GAClB,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,CAAC;AAErB,MAAM,MAAM,gBAAgB,GACtB,8BAA8B,GAC9B,iCAAiC,GACjC,yCAAyC,GACzC,wCAAwC,GACxC,6BAA6B,CAAC;AAEpC,MAAM,MAAM,WAAW,GACjB,6BAA6B,GAC7B,gCAAgC,GAChC,2BAA2B,CAAC;AAElC,MAAM,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { LogLevel, LogMessage } from '../sandboxTypes';
|
|
3
2
|
import { Batch } from './batch';
|
|
4
3
|
declare const _default: {
|
|
@@ -20,7 +19,6 @@ declare const _default: {
|
|
|
20
19
|
isRunning: () => boolean;
|
|
21
20
|
onClosed: (handler: (error?: Error | undefined) => void) => () => ((error?: Error | undefined) => void)[];
|
|
22
21
|
}>;
|
|
23
|
-
firmwareRead: (device: import("./common").NrfutilDevice, core?: import("./common").DeviceCore | undefined, onProgress?: ((progress: import("..").Progress) => void) | undefined, controller?: AbortController | undefined) => Promise<Buffer>;
|
|
24
22
|
onLogging: (handler: (logging: LogMessage) => void) => Promise<() => ((logging: LogMessage, pid?: number | undefined) => void)[]>;
|
|
25
23
|
setLogLevel: (level: LogLevel) => Promise<void>;
|
|
26
24
|
setVerboseLogging: (verbose: boolean) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/device.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsChC,wBAoBE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as NrfutilDeviceLib } from './device';
|
|
2
2
|
export type { DeviceCore, DeviceTraits, ProtectionStatus, SerialPort as DeviceSerialPort, NrfutilDevice, } from './common';
|
|
3
|
+
export type { ReadResult } from './xRead';
|
|
3
4
|
export type { DeviceInfo } from './deviceInfo';
|
|
4
5
|
export type { DeviceCoreInfo } from './getCoreInfo';
|
|
5
6
|
export type { ImageType } from './getFwInfo';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEvD,YAAY,EACR,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,IAAI,gBAAgB,EAC9B,aAAa,GAChB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,YAAY,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEvD,YAAY,EACR,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,IAAI,gBAAgB,EAC9B,aAAa,GAChB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,YAAY,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Progress } from '../sandboxTypes';
|
|
2
|
+
import { DeviceCore, NrfutilDevice } from './common';
|
|
3
|
+
export interface MemoryData {
|
|
4
|
+
startAddress: string;
|
|
5
|
+
values: number[];
|
|
6
|
+
}
|
|
7
|
+
export interface MemoryReadRaw {
|
|
8
|
+
name: 'memory-read';
|
|
9
|
+
serialNumber: string;
|
|
10
|
+
memoryData: MemoryData[];
|
|
11
|
+
}
|
|
12
|
+
export type ReadResult = Awaited<ReturnType<typeof xRead>>;
|
|
13
|
+
export declare function toIntelHex(memoryData: MemoryData[]): {
|
|
14
|
+
intelHex: string;
|
|
15
|
+
};
|
|
16
|
+
declare const xRead: (device: NrfutilDevice, address: number, bytes: number, core?: DeviceCore, width?: 8 | 15 | 32, direct?: boolean, onProgress?: ((progress: Progress) => void) | undefined, controller?: AbortController) => Promise<{
|
|
17
|
+
intelHex: string;
|
|
18
|
+
}>;
|
|
19
|
+
export default xRead;
|
|
20
|
+
//# sourceMappingURL=xRead.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xRead.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/xRead.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACH,UAAU,EAEV,aAAa,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,UAAU;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AAE3D,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE;;EA6DlD;AAED,QAAA,MAAM,KAAK,WACC,aAAa,WACZ,MAAM,SACR,MAAM,SACN,UAAU,UACT,CAAC,GAAG,EAAE,GAAG,EAAE,WACV,OAAO,2BACQ,QAAQ,KAAK,IAAI,4BAC5B,eAAe;;EAgC/B,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
3
|
-
*
|
|
4
|
-
* SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { Progress } from '../sandboxTypes';
|
|
8
|
-
import {
|
|
9
|
-
DeviceCore,
|
|
10
|
-
deviceSingleTaskEndOperation,
|
|
11
|
-
NrfutilDevice,
|
|
12
|
-
} from './common';
|
|
13
|
-
|
|
14
|
-
export interface DeviceBuffer {
|
|
15
|
-
serialNumber: string;
|
|
16
|
-
buffer: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export default async (
|
|
20
|
-
device: NrfutilDevice,
|
|
21
|
-
core?: DeviceCore,
|
|
22
|
-
onProgress?: (progress: Progress) => void,
|
|
23
|
-
controller?: AbortController
|
|
24
|
-
) => {
|
|
25
|
-
const deviceBuffer = await deviceSingleTaskEndOperation<DeviceBuffer>(
|
|
26
|
-
device,
|
|
27
|
-
'fw-read',
|
|
28
|
-
onProgress,
|
|
29
|
-
controller,
|
|
30
|
-
core ? ['--core', core] : []
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
return Buffer.from(deviceBuffer.buffer, 'base64');
|
|
34
|
-
};
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Progress } from '../sandboxTypes';
|
|
3
|
-
import { DeviceCore, NrfutilDevice } from './common';
|
|
4
|
-
export interface DeviceBuffer {
|
|
5
|
-
serialNumber: string;
|
|
6
|
-
buffer: string;
|
|
7
|
-
}
|
|
8
|
-
declare const _default: (device: NrfutilDevice, core?: DeviceCore, onProgress?: ((progress: Progress) => void) | undefined, controller?: AbortController) => Promise<Buffer>;
|
|
9
|
-
export default _default;
|
|
10
|
-
//# sourceMappingURL=firmwareRead.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"firmwareRead.d.ts","sourceRoot":"","sources":["../../../../nrfutil/device/firmwareRead.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EACH,UAAU,EAEV,aAAa,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,YAAY;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAClB;iCAGW,aAAa,SACd,UAAU,2BACO,QAAQ,KAAK,IAAI,4BAC5B,eAAe;AAJhC,wBAeE"}
|