@nordicsemiconductor/pc-nrfconnect-shared 88.0.0 → 90.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.
Files changed (149) hide show
  1. package/Changelog.md +34 -0
  2. package/config/tsconfig.json +1 -1
  3. package/coverage/cobertura-coverage.xml +2216 -1061
  4. package/ipc/MetaFiles.ts +17 -7
  5. package/nrfutil/device/__mocks__/device.ts +43 -0
  6. package/nrfutil/device/batch.ts +219 -0
  7. package/nrfutil/device/batchTypes.ts +133 -0
  8. package/nrfutil/device/common.ts +274 -0
  9. package/nrfutil/device/device.ts +62 -0
  10. package/nrfutil/device/erase.ts +26 -0
  11. package/nrfutil/device/eraseBatch.ts +28 -0
  12. package/nrfutil/device/firmwareRead.ts +34 -0
  13. package/nrfutil/device/firmwareReadBatch.ts +42 -0
  14. package/nrfutil/device/getCoreInfo.ts +44 -0
  15. package/nrfutil/device/getCoreInfoBatch.ts +29 -0
  16. package/nrfutil/device/getFwInfo.ts +69 -0
  17. package/nrfutil/device/getFwInfoBatch.ts +29 -0
  18. package/nrfutil/device/getProtectionStatus.ts +46 -0
  19. package/nrfutil/device/getProtectionStatusBatch.ts +32 -0
  20. package/nrfutil/device/list.ts +81 -0
  21. package/nrfutil/device/program.ts +186 -0
  22. package/nrfutil/device/programBatch.ts +69 -0
  23. package/nrfutil/device/recover.ts +26 -0
  24. package/nrfutil/device/recoverBatch.ts +28 -0
  25. package/nrfutil/device/reset.ts +41 -0
  26. package/nrfutil/device/resetBatch.ts +30 -0
  27. package/nrfutil/device/setMcuState.ts +27 -0
  28. package/nrfutil/device/setProtectionStatus.ts +27 -0
  29. package/nrfutil/index.ts +25 -0
  30. package/nrfutil/moduleVersion.ts +57 -0
  31. package/nrfutil/nrfutilLogger.ts +15 -0
  32. package/nrfutil/sandbox.ts +504 -0
  33. package/nrfutil/sandboxTypes.ts +178 -0
  34. package/package.json +2 -2
  35. package/scripts/nordic-publish.js +1 -1
  36. package/scripts/nordic-publish.ts +11 -2
  37. package/src/About/SupportCard.tsx +6 -9
  38. package/src/App/App.test.tsx +4 -0
  39. package/src/App/App.tsx +13 -2
  40. package/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.tsx +1 -1
  41. package/src/Device/DeviceSelector/DeviceSelector.test.tsx +39 -31
  42. package/src/Device/DeviceSelector/DeviceSelector.tsx +3 -12
  43. package/src/Device/deviceInfo/deviceInfo.ts +2 -3
  44. package/src/Device/deviceLibWrapper.ts +0 -66
  45. package/src/Device/deviceLister.test.ts +1 -2
  46. package/src/Device/deviceLister.ts +169 -215
  47. package/src/Device/deviceSlice.ts +2 -16
  48. package/src/Device/jprogOperations.ts +21 -69
  49. package/src/Device/sdfuOperations.ts +77 -93
  50. package/src/ErrorBoundary/ErrorBoundary.tsx +1 -1
  51. package/src/Log/LogViewer.tsx +0 -4
  52. package/src/Log/logSlice.ts +4 -7
  53. package/src/logging/sendInitialLogMessages.ts +7 -8
  54. package/src/utils/appDirs.ts +6 -11
  55. package/src/utils/logLibVersions.ts +12 -14
  56. package/src/utils/systemReport.ts +11 -17
  57. package/src/utils/usageData.ts +14 -9
  58. package/tsconfig.json +1 -0
  59. package/typings/generated/ipc/MetaFiles.d.ts +14 -7
  60. package/typings/generated/ipc/MetaFiles.d.ts.map +1 -1
  61. package/typings/generated/nrfutil/device/__mocks__/device.d.ts +23 -0
  62. package/typings/generated/nrfutil/device/__mocks__/device.d.ts.map +1 -0
  63. package/typings/generated/nrfutil/device/batch.d.ts +26 -0
  64. package/typings/generated/nrfutil/device/batch.d.ts.map +1 -0
  65. package/typings/generated/nrfutil/device/batchTypes.d.ts +78 -0
  66. package/typings/generated/nrfutil/device/batchTypes.d.ts.map +1 -0
  67. package/typings/generated/nrfutil/device/common.d.ts +125 -0
  68. package/typings/generated/nrfutil/device/common.d.ts.map +1 -0
  69. package/typings/generated/nrfutil/device/device.d.ts +30 -0
  70. package/typings/generated/nrfutil/device/device.d.ts.map +1 -0
  71. package/typings/generated/nrfutil/device/erase.d.ts +5 -0
  72. package/typings/generated/nrfutil/device/erase.d.ts.map +1 -0
  73. package/typings/generated/nrfutil/device/eraseBatch.d.ts +7 -0
  74. package/typings/generated/nrfutil/device/eraseBatch.d.ts.map +1 -0
  75. package/typings/generated/nrfutil/device/firmwareRead.d.ts +10 -0
  76. package/typings/generated/nrfutil/device/firmwareRead.d.ts.map +1 -0
  77. package/typings/generated/nrfutil/device/firmwareReadBatch.d.ts +9 -0
  78. package/typings/generated/nrfutil/device/firmwareReadBatch.d.ts.map +1 -0
  79. package/typings/generated/nrfutil/device/getCoreInfo.d.ts +22 -0
  80. package/typings/generated/nrfutil/device/getCoreInfo.d.ts.map +1 -0
  81. package/typings/generated/nrfutil/device/getCoreInfoBatch.d.ts +8 -0
  82. package/typings/generated/nrfutil/device/getCoreInfoBatch.d.ts.map +1 -0
  83. package/typings/generated/nrfutil/device/getFwInfo.d.ts +31 -0
  84. package/typings/generated/nrfutil/device/getFwInfo.d.ts.map +1 -0
  85. package/typings/generated/nrfutil/device/getFwInfoBatch.d.ts +8 -0
  86. package/typings/generated/nrfutil/device/getFwInfoBatch.d.ts.map +1 -0
  87. package/typings/generated/nrfutil/device/getProtectionStatus.d.ts +13 -0
  88. package/typings/generated/nrfutil/device/getProtectionStatus.d.ts.map +1 -0
  89. package/typings/generated/nrfutil/device/getProtectionStatusBatch.d.ts +8 -0
  90. package/typings/generated/nrfutil/device/getProtectionStatusBatch.d.ts.map +1 -0
  91. package/typings/generated/nrfutil/device/list.d.ts +19 -0
  92. package/typings/generated/nrfutil/device/list.d.ts.map +1 -0
  93. package/typings/generated/nrfutil/device/program.d.ts +27 -0
  94. package/typings/generated/nrfutil/device/program.d.ts.map +1 -0
  95. package/typings/generated/nrfutil/device/programBatch.d.ts +9 -0
  96. package/typings/generated/nrfutil/device/programBatch.d.ts.map +1 -0
  97. package/typings/generated/nrfutil/device/recover.d.ts +5 -0
  98. package/typings/generated/nrfutil/device/recover.d.ts.map +1 -0
  99. package/typings/generated/nrfutil/device/recoverBatch.d.ts +7 -0
  100. package/typings/generated/nrfutil/device/recoverBatch.d.ts.map +1 -0
  101. package/typings/generated/nrfutil/device/reset.d.ts +5 -0
  102. package/typings/generated/nrfutil/device/reset.d.ts.map +1 -0
  103. package/typings/generated/nrfutil/device/resetBatch.d.ts +8 -0
  104. package/typings/generated/nrfutil/device/resetBatch.d.ts.map +1 -0
  105. package/typings/generated/nrfutil/device/setMcuState.d.ts +6 -0
  106. package/typings/generated/nrfutil/device/setMcuState.d.ts.map +1 -0
  107. package/typings/generated/nrfutil/device/setProtectionStatus.d.ts +5 -0
  108. package/typings/generated/nrfutil/device/setProtectionStatus.d.ts.map +1 -0
  109. package/typings/generated/nrfutil/index.d.ts +11 -0
  110. package/typings/generated/nrfutil/index.d.ts.map +1 -0
  111. package/typings/generated/nrfutil/moduleVersion.d.ts +6 -0
  112. package/typings/generated/nrfutil/moduleVersion.d.ts.map +1 -0
  113. package/typings/generated/nrfutil/nrfutilLogger.d.ts +4 -0
  114. package/typings/generated/nrfutil/nrfutilLogger.d.ts.map +1 -0
  115. package/typings/generated/nrfutil/sandbox.d.ts +36 -0
  116. package/typings/generated/nrfutil/sandbox.d.ts.map +1 -0
  117. package/typings/generated/nrfutil/sandboxTypes.d.ts +135 -0
  118. package/typings/generated/nrfutil/sandboxTypes.d.ts.map +1 -0
  119. package/typings/generated/src/About/SupportCard.d.ts.map +1 -1
  120. package/typings/generated/src/App/App.d.ts.map +1 -1
  121. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.d.ts +2 -6
  122. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.d.ts.map +1 -1
  123. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts +2 -2
  124. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts.map +1 -1
  125. package/typings/generated/src/Device/deviceLibWrapper.d.ts +1 -4
  126. package/typings/generated/src/Device/deviceLibWrapper.d.ts.map +1 -1
  127. package/typings/generated/src/Device/deviceLister.d.ts +11 -16
  128. package/typings/generated/src/Device/deviceLister.d.ts.map +1 -1
  129. package/typings/generated/src/Device/deviceLister.test.d.ts.map +1 -1
  130. package/typings/generated/src/Device/deviceSlice.d.ts +3 -3
  131. package/typings/generated/src/Device/deviceSlice.d.ts.map +1 -1
  132. package/typings/generated/src/Device/jprogOperations.d.ts.map +1 -1
  133. package/typings/generated/src/Device/sdfuOperations.d.ts.map +1 -1
  134. package/typings/generated/src/ErrorBoundary/ErrorBoundary.d.ts +1 -1
  135. package/typings/generated/src/ErrorBoundary/ErrorBoundary.d.ts.map +1 -1
  136. package/typings/generated/src/Log/LogViewer.d.ts.map +1 -1
  137. package/typings/generated/src/Log/logSlice.d.ts +2 -3
  138. package/typings/generated/src/Log/logSlice.d.ts.map +1 -1
  139. package/typings/generated/src/logging/sendInitialLogMessages.d.ts.map +1 -1
  140. package/typings/generated/src/utils/appDirs.d.ts +4 -4
  141. package/typings/generated/src/utils/appDirs.d.ts.map +1 -1
  142. package/typings/generated/src/utils/logLibVersions.d.ts.map +1 -1
  143. package/typings/generated/src/utils/systemReport.d.ts +1 -1
  144. package/typings/generated/src/utils/systemReport.d.ts.map +1 -1
  145. package/typings/generated/src/utils/usageData.d.ts +2 -0
  146. package/typings/generated/src/utils/usageData.d.ts.map +1 -1
  147. package/src/utils/describeVersion.ts +0 -21
  148. package/typings/generated/src/utils/describeVersion.d.ts +0 -4
  149. package/typings/generated/src/utils/describeVersion.d.ts.map +0 -1
@@ -0,0 +1,62 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { LogLevel, LogMessage } from '../sandboxTypes';
8
+ import { Batch } from './batch';
9
+ import { getDeviceSandbox } from './common';
10
+ import erase from './erase';
11
+ import firmwareRead from './firmwareRead';
12
+ import getCoreInfo from './getCoreInfo';
13
+ import getFwInfo from './getFwInfo';
14
+ import getProtectionStatus from './getProtectionStatus';
15
+ import list from './list';
16
+ import program from './program';
17
+ import recover from './recover';
18
+ import reset from './reset';
19
+ import setMcuState from './setMcuState';
20
+ import setProtectionStatus from './setProtectionStatus';
21
+
22
+ const onLogging = async (handler: (logging: LogMessage) => void) => {
23
+ const sandbox = await getDeviceSandbox();
24
+ return sandbox.onLogging(handler);
25
+ };
26
+
27
+ const setLogLevel = async (level: LogLevel) => {
28
+ const sandbox = await getDeviceSandbox();
29
+ sandbox.setLogLevel(level);
30
+ };
31
+
32
+ const setVerboseLogging = async (verbose: boolean) => {
33
+ const sandbox = await getDeviceSandbox();
34
+ if (process.env.NODE_ENV === 'production' && !verbose) {
35
+ sandbox.setLogLevel('off');
36
+ } else {
37
+ sandbox.setLogLevel(verbose ? 'trace' : 'error');
38
+ }
39
+ };
40
+ const getModuleVersion = async () => {
41
+ const sandbox = await getDeviceSandbox();
42
+ return sandbox.getModuleVersion();
43
+ };
44
+
45
+ export default {
46
+ program,
47
+ erase,
48
+ recover,
49
+ reset,
50
+ getProtectionStatus,
51
+ setProtectionStatus,
52
+ getFwInfo,
53
+ setMcuState,
54
+ getCoreInfo,
55
+ list,
56
+ firmwareRead,
57
+ onLogging,
58
+ setLogLevel,
59
+ setVerboseLogging,
60
+ getModuleVersion,
61
+ batch: () => new Batch(),
62
+ };
@@ -0,0 +1,26 @@
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
+ deviceSingleTaskEndOperationVoid,
11
+ NrfutilDeviceWithSerialnumber,
12
+ } from './common';
13
+
14
+ export default (
15
+ device: NrfutilDeviceWithSerialnumber,
16
+ core?: DeviceCore,
17
+ onProgress?: (progress: Progress) => void,
18
+ controller?: AbortController
19
+ ) =>
20
+ deviceSingleTaskEndOperationVoid(
21
+ device,
22
+ 'erase',
23
+ onProgress,
24
+ controller,
25
+ core ? ['--core', core] : []
26
+ );
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ BatchOperationWrapper,
9
+ Callbacks,
10
+ convertDeviceCoreType,
11
+ EraseOperation,
12
+ } from './batchTypes';
13
+ import { DeviceCore } from './common';
14
+
15
+ export default (
16
+ core: DeviceCore,
17
+ optionals?: {
18
+ callbacks?: Callbacks;
19
+ }
20
+ ): BatchOperationWrapper<EraseOperation> => ({
21
+ operation: {
22
+ core: convertDeviceCoreType(core),
23
+ operation: {
24
+ type: 'erase',
25
+ },
26
+ },
27
+ ...optionals?.callbacks,
28
+ });
@@ -0,0 +1,34 @@
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
+ NrfutilDeviceWithSerialnumber,
12
+ } from './common';
13
+
14
+ export interface DeviceBuffer {
15
+ serialNumber: string;
16
+ buffer: string;
17
+ }
18
+
19
+ export default async (
20
+ device: NrfutilDeviceWithSerialnumber,
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
+ };
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ BatchOperationWrapper,
9
+ Callbacks,
10
+ convertDeviceCoreType,
11
+ FirmwareReadOperation,
12
+ } from './batchTypes';
13
+ import { DeviceCore } from './common';
14
+ import { DeviceBuffer } from './firmwareRead';
15
+
16
+ export default (
17
+ core: DeviceCore,
18
+ optionals?: {
19
+ callbacks?: Callbacks<Buffer>;
20
+ }
21
+ ): BatchOperationWrapper<FirmwareReadOperation, DeviceBuffer> => ({
22
+ operation: {
23
+ core: convertDeviceCoreType(core),
24
+ operation: {
25
+ type: 'fw-read',
26
+ firmware: {
27
+ buffer: '',
28
+ },
29
+ },
30
+ },
31
+ ...optionals?.callbacks,
32
+ onTaskEnd: taskEnd => {
33
+ if (taskEnd.result === 'success' && taskEnd.data)
34
+ optionals?.callbacks?.onTaskEnd?.({
35
+ ...taskEnd,
36
+ data: Buffer.from(taskEnd.data.buffer, 'base64'),
37
+ });
38
+ else {
39
+ optionals?.callbacks?.onException?.(new Error('Read failed'));
40
+ }
41
+ },
42
+ });
@@ -0,0 +1,44 @@
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
+ NrfutilDeviceWithSerialnumber,
12
+ } from './common';
13
+
14
+ export type DeviceCoreInfo = {
15
+ name: 'core-info';
16
+ codeAddress: number;
17
+ codePageSize: number;
18
+ codeSize: number;
19
+ uicrAddress: number;
20
+ infoPageSize: number;
21
+ codeRamPresent: boolean;
22
+ codeRamAddress: number;
23
+ dataRamAddress: number;
24
+ ramSize: number;
25
+ qspiPresent: boolean;
26
+ xipAddress: number;
27
+ xipSize: number;
28
+ pinResetPin: number;
29
+ serialNumber: string;
30
+ };
31
+
32
+ export default (
33
+ device: NrfutilDeviceWithSerialnumber,
34
+ core?: DeviceCore,
35
+ onProgress?: (progress: Progress) => void,
36
+ controller?: AbortController
37
+ ) =>
38
+ deviceSingleTaskEndOperation<DeviceCoreInfo>(
39
+ device,
40
+ 'core-info',
41
+ onProgress,
42
+ controller,
43
+ core ? ['--core', core] : []
44
+ );
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ BatchOperationWrapper,
9
+ Callbacks,
10
+ convertDeviceCoreType,
11
+ GetCoreInfoOperation,
12
+ } from './batchTypes';
13
+ import { DeviceCore } from './common';
14
+ import { DeviceCoreInfo } from './getCoreInfo';
15
+
16
+ export default (
17
+ core: DeviceCore,
18
+ optionals?: {
19
+ callbacks?: Callbacks<DeviceCoreInfo>;
20
+ }
21
+ ): BatchOperationWrapper<GetCoreInfoOperation, DeviceCoreInfo> => ({
22
+ operation: {
23
+ core: convertDeviceCoreType(core),
24
+ operation: {
25
+ type: 'core-info',
26
+ },
27
+ },
28
+ ...optionals?.callbacks,
29
+ });
@@ -0,0 +1,69 @@
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
+ NrfutilDeviceWithSerialnumber,
12
+ } from './common';
13
+
14
+ type BootloaderType =
15
+ | 'NRFDL_BOOTLOADER_TYPE_NONE'
16
+ | 'NRFDL_BOOTLOADER_TYPE_MCUBOOT'
17
+ | 'NRFDL_BOOTLOADER_TYPE_SDFU'
18
+ | 'NRFDL_BOOTLOADER_TYPE_B0'
19
+ | 'NRFDL_BOOTLOADER_TYPE_UNKNOWN';
20
+
21
+ export type ImageType =
22
+ | 'NRFDL_IMAGE_TYPE_APPLICATION'
23
+ | 'NRFDL_IMAGE_TYPE_BOOTLOADER'
24
+ | 'NRFDL_IMAGE_TYPE_SOFTDEVICE'
25
+ | 'NRFDL_IMAGE_TYPE_OPERATIVE_SYSTEM'
26
+ | 'NRFDL_IMAGE_TYPE_GENERIC'
27
+ | 'NRFDL_IMAGE_TYPE_UNKNOWN';
28
+
29
+ interface ImageLocation {
30
+ address: number;
31
+ size: number;
32
+ }
33
+
34
+ interface SemanticVersion {
35
+ major: number;
36
+ minor: number;
37
+ patch: number;
38
+ pre: string;
39
+ metadata?: string;
40
+ }
41
+
42
+ interface Image {
43
+ imageLocation?: ImageLocation;
44
+ imageType: ImageType;
45
+ version: SemanticVersion | string | number;
46
+ versionFormat: string;
47
+ }
48
+
49
+ export interface FWInfo {
50
+ name: 'fw-read-info';
51
+ bootloaderType: BootloaderType;
52
+ imageInfoList: Image[];
53
+ serialNumber: string;
54
+ operationId?: string;
55
+ }
56
+
57
+ export default (
58
+ device: NrfutilDeviceWithSerialnumber,
59
+ core?: DeviceCore,
60
+ onProgress?: (progress: Progress) => void,
61
+ controller?: AbortController
62
+ ) =>
63
+ deviceSingleTaskEndOperation<FWInfo>(
64
+ device,
65
+ 'fw-info',
66
+ onProgress,
67
+ controller,
68
+ core ? ['--core', core] : []
69
+ );
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ BatchOperationWrapper,
9
+ Callbacks,
10
+ convertDeviceCoreType,
11
+ GetFwInfoOperation,
12
+ } from './batchTypes';
13
+ import { DeviceCore } from './common';
14
+ import { FWInfo } from './getFwInfo';
15
+
16
+ export default (
17
+ core: DeviceCore,
18
+ optionals?: {
19
+ callbacks?: Callbacks<FWInfo>;
20
+ }
21
+ ): BatchOperationWrapper<GetFwInfoOperation, FWInfo> => ({
22
+ operation: {
23
+ core: convertDeviceCoreType(core),
24
+ operation: {
25
+ type: 'fw-info',
26
+ },
27
+ },
28
+ ...optionals?.callbacks,
29
+ });
@@ -0,0 +1,46 @@
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
+ NrfutilDeviceWithSerialnumber,
12
+ } from './common';
13
+
14
+ type DeviceFamily =
15
+ | 'NRF51_FAMILY'
16
+ | 'NRF52_FAMILY'
17
+ | 'NRF53_FAMILY'
18
+ | 'NRF91_FAMILY';
19
+
20
+ type ProtectionStatus =
21
+ | 'NRFDL_PROTECTION_STATUS_NONE'
22
+ | 'NRFDL_PROTECTION_STATUS_REGION0'
23
+ | 'NRFDL_PROTECTION_STATUS_REGION0_REGION1'
24
+ | 'NRFDL_PROTECTION_STATUS_SECURE_REGIONS'
25
+ | 'NRFDL_PROTECTION_STATUS_ALL';
26
+
27
+ export interface GetProtectionStatusResult {
28
+ core: DeviceCore;
29
+ deviceFamily?: DeviceFamily;
30
+ protectionStatus: ProtectionStatus;
31
+ serialNumber: string;
32
+ }
33
+
34
+ export default (
35
+ device: NrfutilDeviceWithSerialnumber,
36
+ core?: DeviceCore,
37
+ onProgress?: (progress: Progress) => void,
38
+ controller?: AbortController
39
+ ) =>
40
+ deviceSingleTaskEndOperation<GetProtectionStatusResult>(
41
+ device,
42
+ 'protection-get',
43
+ onProgress,
44
+ controller,
45
+ core ? ['--core', core] : []
46
+ );
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ BatchOperationWrapper,
9
+ Callbacks,
10
+ convertDeviceCoreType,
11
+ ProtectionGetOperation,
12
+ } from './batchTypes';
13
+ import { DeviceCore } from './common';
14
+ import { GetProtectionStatusResult } from './getProtectionStatus';
15
+
16
+ export default (
17
+ core: DeviceCore,
18
+ optionals?: {
19
+ callbacks?: Callbacks<GetProtectionStatusResult>;
20
+ }
21
+ ): BatchOperationWrapper<
22
+ ProtectionGetOperation,
23
+ GetProtectionStatusResult
24
+ > => ({
25
+ operation: {
26
+ core: convertDeviceCoreType(core),
27
+ operation: {
28
+ type: 'protection-get',
29
+ },
30
+ },
31
+ ...optionals?.callbacks,
32
+ });
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import {
8
+ DeviceTraits,
9
+ deviceTraitsToArgs,
10
+ getDeviceSandbox,
11
+ NrfutilDevice,
12
+ NrfutilDeviceWithSerialnumber,
13
+ } from './common';
14
+
15
+ export interface HotplugEvent {
16
+ id: number;
17
+ event: 'Arrived' | 'Left';
18
+ device?: NrfutilDevice;
19
+ }
20
+
21
+ export interface ListEvent {
22
+ devices: NrfutilDevice[];
23
+ }
24
+
25
+ const isListEvent = (event: HotplugEvent | ListEvent): event is ListEvent =>
26
+ (event as ListEvent).devices !== undefined;
27
+
28
+ const isHotplugEvent = (
29
+ event: HotplugEvent | ListEvent
30
+ ): event is HotplugEvent => (event as HotplugEvent).event !== undefined;
31
+
32
+ export default async (
33
+ traits: DeviceTraits,
34
+ onEnumerated: (devices: NrfutilDeviceWithSerialnumber[]) => void,
35
+ onError: (error: Error) => void,
36
+ onHotplugEvent?: {
37
+ onDeviceArrived: (device: NrfutilDeviceWithSerialnumber) => void;
38
+ onDeviceLeft: (id: number) => void;
39
+ }
40
+ ) => {
41
+ const args: string[] = [];
42
+ args.concat(deviceTraitsToArgs(traits));
43
+
44
+ if (onHotplugEvent) {
45
+ args.push('--hotplug');
46
+ }
47
+
48
+ const onData = (data: HotplugEvent | ListEvent) => {
49
+ if (isListEvent(data)) {
50
+ onEnumerated(
51
+ data.devices.filter(
52
+ d => d.serialNumber
53
+ ) as NrfutilDeviceWithSerialnumber[]
54
+ );
55
+
56
+ return;
57
+ }
58
+
59
+ if (!onHotplugEvent || !isHotplugEvent(data)) {
60
+ return;
61
+ }
62
+
63
+ if (
64
+ data.event === 'Arrived' &&
65
+ data.device &&
66
+ data.device.serialNumber
67
+ ) {
68
+ onHotplugEvent.onDeviceArrived(
69
+ data.device as NrfutilDeviceWithSerialnumber
70
+ );
71
+ } else if (data.event === 'Left') {
72
+ onHotplugEvent.onDeviceLeft(data.id);
73
+ }
74
+ };
75
+
76
+ const sandbox = await getDeviceSandbox();
77
+ return sandbox.execBackgroundSubcommand<HotplugEvent>('list', args, {
78
+ onData,
79
+ onError,
80
+ });
81
+ };