@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 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,
@@ -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(args)
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 firmwareRead(core: DeviceCore, callbacks?: Callbacks<Buffer>) {
160
- this.enqueueBatchOperationObject('fw-read', core, {
161
- ...callbacks,
162
- onTaskEnd: (taskEnd: TaskEnd<DeviceBuffer>) => {
163
- if (taskEnd.result === 'success' && taskEnd.data) {
164
- const data = Buffer.from(taskEnd.data.buffer, 'base64');
165
- callbacks?.onTaskEnd?.({
166
- ...taskEnd,
167
- task: {
168
- ...taskEnd.task,
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
- data,
172
- });
173
- } else {
174
- callbacks?.onException?.(new Error('Read failed'));
175
- }
176
- },
177
- } as CallbacksUnknown);
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
  }
@@ -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 = 'Application' | 'Modem' | 'Network';
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;
@@ -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,
@@ -14,6 +14,7 @@ export type {
14
14
  NrfutilDevice,
15
15
  } from './common';
16
16
 
17
+ export type { ReadResult } from './xRead';
17
18
  export type { DeviceInfo } from './deviceInfo';
18
19
  export type { DeviceCoreInfo } from './getCoreInfo';
19
20
  export type { ImageType } from './getFwInfo';
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordicsemiconductor/pc-nrfconnect-shared",
3
- "version": "208.0.0",
3
+ "version": "209.0.0",
4
4
  "description": "Shared commodities for developing pc-nrfconnect-* packages",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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":";;;;;;;;;;;;;;;;;;;;;;AA0BA,wBAkBE"}
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
- firmwareRead(core: DeviceCore, callbacks?: Callbacks<Buffer>): this;
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":";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;AAElB,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;AAKnB,qBAAa,KAAK;IACd,OAAO,CAAC,wBAAwB,CACzB;IAEP,OAAO,CAAC,iBAAiB,CAIhB;IAET,OAAO,CAAC,2BAA2B;IA2B5B,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,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC;IAuB5D,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"}
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":"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"}
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":";AAOA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuChC,wBAqBE"}
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"}