@bota.dev/react-native-app-sdk 2.0.0-beta.1 → 2.0.0-beta.11
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/README.md +115 -4
- package/android/build.gradle +1 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +22 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDiagnostics.kt +53 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +16 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +144 -14
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +150 -29
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +27 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +86 -3
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKPackage.kt +9 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/BotaUploadV2BackendModule.kt +66 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/NativeUpload.kt +400 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadHttp.kt +158 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadJournal.kt +112 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadModels.kt +171 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +35 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +33 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +135 -6
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +236 -10
- package/generated/codegen-contract.json +751 -32
- package/ios/BotaDeviceSDK.mm +114 -0
- package/ios/BotaDeviceSDKAppleBridge.swift +141 -4
- package/ios/BotaDeviceSDKAppleDevices.swift +11 -0
- package/ios/BotaDeviceSDKAppleDiagnostics.swift +40 -0
- package/ios/BotaDeviceSDKAppleLogs.swift +18 -0
- package/ios/BotaDeviceSDKAppleRecordingUploads.swift +138 -6
- package/ios/BotaDeviceSDKAppleRecordings.swift +113 -5
- package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +40 -0
- package/ios/BotaUploadV2Backend.mm +49 -0
- package/ios/UploadBackend/BotaUploadV2BackendBridge.swift +98 -0
- package/ios/UploadBackend/UploadCoordinator.swift +84 -0
- package/ios/UploadBackend/UploadHTTP.swift +82 -0
- package/ios/UploadBackend/UploadJournal.swift +187 -0
- package/ios/UploadBackend/UploadModels.swift +273 -0
- package/ios/UploadBackend/UploadOperation.swift +391 -0
- package/lib/commonjs/BotaClient.js +16 -2
- package/lib/commonjs/BotaClient.js.map +1 -1
- package/lib/commonjs/ble/constants.js +5 -1
- package/lib/commonjs/ble/constants.js.map +1 -1
- package/lib/commonjs/ble/deviceDiagnostics.js +240 -0
- package/lib/commonjs/ble/deviceDiagnostics.js.map +1 -0
- package/lib/commonjs/client.js +183 -28
- package/lib/commonjs/client.js.map +1 -1
- package/lib/commonjs/clientPresence.js +26 -0
- package/lib/commonjs/clientPresence.js.map +1 -0
- package/lib/commonjs/encryptedUploadV2Backend.js +200 -0
- package/lib/commonjs/encryptedUploadV2Backend.js.map +1 -0
- package/lib/commonjs/index.js +34 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/managers/DeviceManager.js +23 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -1
- package/lib/commonjs/managers/NativeUploadQueue.js +386 -0
- package/lib/commonjs/managers/NativeUploadQueue.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +83 -102
- package/lib/commonjs/managers/RecordingManager.js.map +1 -1
- package/lib/commonjs/managers/uploadRecoveryMetadata.js +83 -0
- package/lib/commonjs/managers/uploadRecoveryMetadata.js.map +1 -0
- package/lib/commonjs/sdkIdentity.js +10 -0
- package/lib/commonjs/sdkIdentity.js.map +1 -0
- package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -1
- package/lib/commonjs/specs/NativeBotaUploadV2Backend.js +11 -0
- package/lib/commonjs/specs/NativeBotaUploadV2Backend.js.map +1 -0
- package/lib/commonjs/uploadRecovery.js +68 -0
- package/lib/commonjs/uploadRecovery.js.map +1 -0
- package/lib/module/BotaClient.js +16 -2
- package/lib/module/BotaClient.js.map +1 -1
- package/lib/module/ble/constants.js +4 -0
- package/lib/module/ble/constants.js.map +1 -1
- package/lib/module/ble/deviceDiagnostics.js +234 -0
- package/lib/module/ble/deviceDiagnostics.js.map +1 -0
- package/lib/module/client.js +183 -28
- package/lib/module/client.js.map +1 -1
- package/lib/module/clientPresence.js +22 -0
- package/lib/module/clientPresence.js.map +1 -0
- package/lib/module/encryptedUploadV2Backend.js +196 -0
- package/lib/module/encryptedUploadV2Backend.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/managers/DeviceManager.js +23 -0
- package/lib/module/managers/DeviceManager.js.map +1 -1
- package/lib/module/managers/NativeUploadQueue.js +380 -0
- package/lib/module/managers/NativeUploadQueue.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +83 -102
- package/lib/module/managers/RecordingManager.js.map +1 -1
- package/lib/module/managers/uploadRecoveryMetadata.js +77 -0
- package/lib/module/managers/uploadRecoveryMetadata.js.map +1 -0
- package/lib/module/sdkIdentity.js +6 -0
- package/lib/module/sdkIdentity.js.map +1 -0
- package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -1
- package/lib/module/specs/NativeBotaUploadV2Backend.js +9 -0
- package/lib/module/specs/NativeBotaUploadV2Backend.js.map +1 -0
- package/lib/module/uploadRecovery.js +64 -0
- package/lib/module/uploadRecovery.js.map +1 -0
- package/lib/typescript/BotaClient.d.ts +2 -0
- package/lib/typescript/BotaClient.d.ts.map +1 -1
- package/lib/typescript/ble/constants.d.ts +4 -0
- package/lib/typescript/ble/constants.d.ts.map +1 -1
- package/lib/typescript/ble/deviceDiagnostics.d.ts +10 -0
- package/lib/typescript/ble/deviceDiagnostics.d.ts.map +1 -0
- package/lib/typescript/client.d.ts +24 -3
- package/lib/typescript/client.d.ts.map +1 -1
- package/lib/typescript/clientPresence.d.ts +26 -0
- package/lib/typescript/clientPresence.d.ts.map +1 -0
- package/lib/typescript/encryptedUploadV2Backend.d.ts +41 -0
- package/lib/typescript/encryptedUploadV2Backend.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +13 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/managers/DeviceManager.d.ts +5 -1
- package/lib/typescript/managers/DeviceManager.d.ts.map +1 -1
- package/lib/typescript/managers/NativeUploadQueue.d.ts +41 -0
- package/lib/typescript/managers/NativeUploadQueue.d.ts.map +1 -0
- package/lib/typescript/managers/RecordingManager.d.ts +3 -8
- package/lib/typescript/managers/RecordingManager.d.ts.map +1 -1
- package/lib/typescript/managers/types.d.ts +6 -1
- package/lib/typescript/managers/types.d.ts.map +1 -1
- package/lib/typescript/managers/uploadRecoveryMetadata.d.ts +6 -0
- package/lib/typescript/managers/uploadRecoveryMetadata.d.ts.map +1 -0
- package/lib/typescript/models/Device.d.ts +42 -0
- package/lib/typescript/models/Device.d.ts.map +1 -1
- package/lib/typescript/models/Recording.d.ts +47 -0
- package/lib/typescript/models/Recording.d.ts.map +1 -1
- package/lib/typescript/models/Status.d.ts +5 -1
- package/lib/typescript/models/Status.d.ts.map +1 -1
- package/lib/typescript/sdkIdentity.d.ts +3 -0
- package/lib/typescript/sdkIdentity.d.ts.map +1 -0
- package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +70 -0
- package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -1
- package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts +18 -0
- package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts.map +1 -0
- package/lib/typescript/uploadRecovery.d.ts +27 -0
- package/lib/typescript/uploadRecovery.d.ts.map +1 -0
- package/package.json +1 -1
- package/scripts/bota_device_sdk_spm_workaround.rb +26 -15
- package/src/BotaClient.ts +17 -3
- package/src/ble/constants.ts +5 -0
- package/src/ble/deviceDiagnostics.ts +238 -0
- package/src/client.ts +189 -18
- package/src/clientPresence.ts +33 -0
- package/src/encryptedUploadV2Backend.ts +171 -0
- package/src/index.ts +24 -0
- package/src/managers/DeviceManager.ts +23 -0
- package/src/managers/NativeUploadQueue.ts +330 -0
- package/src/managers/RecordingManager.ts +83 -116
- package/src/managers/types.ts +7 -1
- package/src/managers/uploadRecoveryMetadata.ts +59 -0
- package/src/models/Device.ts +43 -0
- package/src/models/Recording.ts +52 -0
- package/src/models/Status.ts +5 -1
- package/src/sdkIdentity.ts +3 -0
- package/src/specs/NativeBotaDeviceSDK.ts +66 -0
- package/src/specs/NativeBotaUploadV2Backend.ts +19 -0
- package/src/uploadRecovery.ts +66 -0
|
@@ -9,6 +9,7 @@ var _runtime = require("./compatibility/runtime");
|
|
|
9
9
|
var _DeviceManager = require("./managers/DeviceManager");
|
|
10
10
|
var _OTAManager = require("./managers/OTAManager");
|
|
11
11
|
var _RecordingManager = require("./managers/RecordingManager");
|
|
12
|
+
var _uploadRecoveryMetadata = require("./managers/uploadRecoveryMetadata");
|
|
12
13
|
var _errors = require("./utils/errors");
|
|
13
14
|
var _logger = require("./utils/logger");
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -18,9 +19,15 @@ const normalizeConfig = config => ({
|
|
|
18
19
|
backgroundSyncEnabled: config.backgroundSyncEnabled ?? true,
|
|
19
20
|
wifiOnlyUpload: config.wifiOnlyUpload ?? false,
|
|
20
21
|
logLevel: config.logLevel ?? 'warn',
|
|
21
|
-
debug: config.debug ?? false
|
|
22
|
+
debug: config.debug ?? false,
|
|
23
|
+
...(config.uploadRecoveryProvider ? {
|
|
24
|
+
uploadRecoveryProvider: config.uploadRecoveryProvider
|
|
25
|
+
} : {})
|
|
22
26
|
});
|
|
23
27
|
class BotaClientImpl extends _eventemitter.default {
|
|
28
|
+
clientPresence = {
|
|
29
|
+
nextReport: async deviceId => this._deviceManager?.clientPresence.nextReport(deviceId) ?? null
|
|
30
|
+
};
|
|
24
31
|
_config = null;
|
|
25
32
|
_state = 'uninitialized';
|
|
26
33
|
_bluetoothState = 'unknown';
|
|
@@ -60,6 +67,11 @@ class BotaClientImpl extends _eventemitter.default {
|
|
|
60
67
|
return this._otaManager;
|
|
61
68
|
}
|
|
62
69
|
configure(config = {}) {
|
|
70
|
+
try {
|
|
71
|
+
(0, _uploadRecoveryMetadata.rejectRecordingDataStore)(config.recordingDataStore);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
return Promise.reject(error);
|
|
74
|
+
}
|
|
63
75
|
if (this._configurePromise && !this._destroyPromise) {
|
|
64
76
|
return this._configurePromise;
|
|
65
77
|
}
|
|
@@ -140,7 +152,9 @@ class BotaClientImpl extends _eventemitter.default {
|
|
|
140
152
|
this.setBluetoothState(capabilities.bluetooth ? 'poweredOn' : 'unsupported');
|
|
141
153
|
deviceManager = new _DeviceManager.DeviceManager();
|
|
142
154
|
await deviceManager.initialize();
|
|
143
|
-
recordingManager = new _RecordingManager.RecordingManager(
|
|
155
|
+
recordingManager = new _RecordingManager.RecordingManager({
|
|
156
|
+
uploadRecoveryProvider: config.uploadRecoveryProvider
|
|
157
|
+
});
|
|
144
158
|
await recordingManager.initialize();
|
|
145
159
|
otaManager = new _OTAManager.OTAManager(deviceManager);
|
|
146
160
|
this._deviceManager = deviceManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_eventemitter","_interopRequireDefault","require","_runtime","_DeviceManager","_OTAManager","_RecordingManager","_errors","_logger","e","__esModule","default","log","logger","tag","normalizeConfig","config","environment","backgroundSyncEnabled","wifiOnlyUpload","logLevel","debug","BotaClientImpl","EventEmitter","_config","_state","_bluetoothState","_client","
|
|
1
|
+
{"version":3,"names":["_eventemitter","_interopRequireDefault","require","_runtime","_DeviceManager","_OTAManager","_RecordingManager","_uploadRecoveryMetadata","_errors","_logger","e","__esModule","default","log","logger","tag","normalizeConfig","config","environment","backgroundSyncEnabled","wifiOnlyUpload","logLevel","debug","uploadRecoveryProvider","BotaClientImpl","EventEmitter","clientPresence","nextReport","deviceId","_deviceManager","_config","_state","_bluetoothState","_client","_recordingManager","_otaManager","_nativeOwned","_operation","Promise","resolve","_configurePromise","_destroyPromise","state","bluetoothState","isBluetoothReady","isInitialized","devices","SdkError","notInitialized","recordings","ota","configure","rejectRecordingDataStore","recordingDataStore","error","reject","normalized","operation","enqueue","performConfigure","finally","catch","undefined","waitForBluetooth","timeoutMs","BluetoothError","unavailable","deadline","Date","now","setTimeout","capabilities","getCapabilities","bluetooth","setBluetoothState","timeout","setLogLevel","level","setLevel","setLogHandler","handler","setHandler","destroy","releaseOwnerGraph","removeAllListeners","queued","then","warn","setState","client","getCompatibilityClient","deviceManager","recordingManager","otaManager","nativeState","getState","invalidState","DeviceManager","initialize","RecordingManager","OTAManager","info","failure","Error","String","emit","BotaClient","exports"],"sourceRoot":"../../src","sources":["BotaClient.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAIA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AACA,IAAAK,uBAAA,GAAAL,OAAA;AAQA,IAAAM,OAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AAAyD,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEzD,MAAMG,GAAG,GAAGC,cAAM,CAACC,GAAG,CAAC,YAAY,CAAC;AAKpC,MAAMC,eAAe,GAAIC,MAAkB,KAAwB;EACjEC,WAAW,EAAED,MAAM,CAACC,WAAW,IAAI,YAAY;EAC/CC,qBAAqB,EAAEF,MAAM,CAACE,qBAAqB,IAAI,IAAI;EAC3DC,cAAc,EAAEH,MAAM,CAACG,cAAc,IAAI,KAAK;EAC9CC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ,IAAI,MAAM;EACnCC,KAAK,EAAEL,MAAM,CAACK,KAAK,IAAI,KAAK;EAC5B,IAAIL,MAAM,CAACM,sBAAsB,GAAG;IAAEA,sBAAsB,EAAEN,MAAM,CAACM;EAAuB,CAAC,GAAG,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAMC,cAAc,SAASC,qBAAY,CAAmB;EACjDC,cAAc,GAAmB;IACxCC,UAAU,EAAE,MAAOC,QAAQ,IAAK,IAAI,CAACC,cAAc,EAAEH,cAAc,CAACC,UAAU,CAACC,QAAQ,CAAC,IAAI;EAC9F,CAAC;EACOE,OAAO,GAAsB,IAAI;EACjCC,MAAM,GAAa,eAAe;EAClCC,eAAe,GAAmB,SAAS;EAC3CC,OAAO,GAA+B,IAAI;EAC1CJ,cAAc,GAAyB,IAAI;EAC3CK,iBAAiB,GAA4B,IAAI;EACjDC,WAAW,GAAsB,IAAI;EACrCC,YAAY,GAAG,KAAK;EACpBC,UAAU,GAAkBC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC7CC,iBAAiB,GAAyB,IAAI;EAC9CC,eAAe,GAAyB,IAAI;EAEpD,IAAIC,KAAKA,CAAA,EAAa;IACpB,OAAO,IAAI,CAACX,MAAM;EACpB;EAEA,IAAIY,cAAcA,CAAA,EAAmB;IACnC,OAAO,IAAI,CAACX,eAAe;EAC7B;EAEA,IAAIY,gBAAgBA,CAAA,EAAY;IAC9B,OAAO,IAAI,CAACZ,eAAe,KAAK,WAAW;EAC7C;EAEA,IAAIa,aAAaA,CAAA,EAAY;IAC3B,OAAO,IAAI,CAACd,MAAM,KAAK,OAAO;EAChC;EAEA,IAAId,MAAMA,CAAA,EAAsB;IAC9B,OAAO,IAAI,CAACa,OAAO;EACrB;EAEA,IAAIgB,OAAOA,CAAA,EAAkB;IAC3B,IAAI,CAAC,IAAI,CAACjB,cAAc,EAAE,MAAMkB,gBAAQ,CAACC,cAAc,CAAC,CAAC;IACzD,OAAO,IAAI,CAACnB,cAAc;EAC5B;EAEA,IAAIoB,UAAUA,CAAA,EAAqB;IACjC,IAAI,CAAC,IAAI,CAACf,iBAAiB,EAAE,MAAMa,gBAAQ,CAACC,cAAc,CAAC,CAAC;IAC5D,OAAO,IAAI,CAACd,iBAAiB;EAC/B;EAEA,IAAIgB,GAAGA,CAAA,EAAe;IACpB,IAAI,CAAC,IAAI,CAACf,WAAW,EAAE,MAAMY,gBAAQ,CAACC,cAAc,CAAC,CAAC;IACtD,OAAO,IAAI,CAACb,WAAW;EACzB;EAEAgB,SAASA,CAAClC,MAAkB,GAAG,CAAC,CAAC,EAAiB;IAChD,IAAI;MACF,IAAAmC,gDAAwB,EAACnC,MAAM,CAACoC,kBAAkB,CAAC;IACrD,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,OAAOhB,OAAO,CAACiB,MAAM,CAACD,KAAK,CAAC;IAC9B;IACA,IAAI,IAAI,CAACd,iBAAiB,IAAI,CAAC,IAAI,CAACC,eAAe,EAAE;MACnD,OAAO,IAAI,CAACD,iBAAiB;IAC/B;IACA,MAAMgB,UAAU,GAAGxC,eAAe,CAACC,MAAM,CAAC;IAC1C,MAAMwC,SAAS,GAAG,IAAI,CAACC,OAAO,CAAC,MAAM,IAAI,CAACC,gBAAgB,CAACH,UAAU,CAAC,CAAC;IACvE,IAAI,CAAChB,iBAAiB,GAAGiB,SAAS;IAClC,KAAKA,SAAS,CACXG,OAAO,CAAC,MAAM;MACb,IAAI,IAAI,CAACpB,iBAAiB,KAAKiB,SAAS,EAAE,IAAI,CAACjB,iBAAiB,GAAG,IAAI;IACzE,CAAC,CAAC,CACDqB,KAAK,CAAC,MAAMC,SAAS,CAAC;IACzB,OAAOL,SAAS;EAClB;EAEA,MAAMM,gBAAgBA,CAACC,SAAiB,GAAG,KAAK,EAAiB;IAC/D,IAAI,CAAC,IAAI,CAAC/B,OAAO,IAAI,CAAC,IAAI,CAACG,YAAY,EAAE,MAAMW,gBAAQ,CAACC,cAAc,CAAC,CAAC;IACxE,IAAI,IAAI,CAAChB,eAAe,KAAK,WAAW,EAAE;IAC1C,IAAI,IAAI,CAACA,eAAe,KAAK,aAAa,EAAE;MAC1C,MAAMiC,sBAAc,CAACC,WAAW,CAAC,CAAC;IACpC;IAEA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGL,SAAS;IACvC,OAAOI,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,QAAQ,EAAE;MAC5B,MAAM,IAAI7B,OAAO,CAAQC,OAAO,IAAK+B,UAAU,CAAC,MAAM/B,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;MACrE,MAAMgC,YAAY,GAAG,MAAM,IAAI,CAACtC,OAAO,CAACuC,eAAe,CAAC,CAAC;MACzD,MAAM9B,KAAqB,GAAG6B,YAAY,CAACE,SAAS,GAChD,WAAW,GACX,aAAa;MACjB,IAAI,CAACC,iBAAiB,CAAChC,KAAK,CAAC;MAC7B,IAAIA,KAAK,KAAK,WAAW,EAAE;MAC3B,IAAIA,KAAK,KAAK,aAAa,EAAE;QAC3B,MAAMuB,sBAAc,CAACC,WAAW,CAAC,CAAC;MACpC;IACF;IACA,MAAMnB,gBAAQ,CAAC4B,OAAO,CAAC,iBAAiB,CAAC;EAC3C;EAEAC,WAAWA,CAACC,KAAe,EAAQ;IACjC/D,cAAM,CAACgE,QAAQ,CAACD,KAAK,CAAC;IACtB,IAAI,IAAI,CAAC/C,OAAO,EAAE,IAAI,CAACA,OAAO,CAACT,QAAQ,GAAGwD,KAAK;EACjD;EAEAE,aAAaA,CAACC,OAA0B,EAAQ;IAC9ClE,cAAM,CAACmE,UAAU,CAACD,OAAO,CAAC;EAC5B;EAEAE,OAAOA,CAAA,EAAkB;IACvB,IAAI,IAAI,CAACzC,eAAe,EAAE,OAAO,IAAI,CAACA,eAAe;IACrD,MAAMgB,SAAS,GAAG,IAAI,CAACC,OAAO,CAAC,YAAY;MACzC,MAAM,IAAI,CAACyB,iBAAiB,CAAC,CAAC;MAC9B,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,IAAI,CAAC3C,eAAe,GAAGgB,SAAS;IAChC,KAAKA,SAAS,CACXG,OAAO,CAAC,MAAM;MACb,IAAI,IAAI,CAACnB,eAAe,KAAKgB,SAAS,EAAE,IAAI,CAAChB,eAAe,GAAG,IAAI;IACrE,CAAC,CAAC,CACDoB,KAAK,CAAC,MAAMC,SAAS,CAAC;IACzB,OAAOL,SAAS;EAClB;EAEQC,OAAOA,CAACD,SAA8B,EAAiB;IAC7D,MAAM4B,MAAM,GAAG,IAAI,CAAChD,UAAU,CAACwB,KAAK,CAAC,MAAMC,SAAS,CAAC,CAACwB,IAAI,CAAC7B,SAAS,CAAC;IACrE,IAAI,CAACpB,UAAU,GAAGgD,MAAM,CAACxB,KAAK,CAAC,MAAMC,SAAS,CAAC;IAC/C,OAAOuB,MAAM;EACf;EAEA,MAAc1B,gBAAgBA,CAAC1C,MAAwB,EAAiB;IACtE,IAAI,IAAI,CAACc,MAAM,KAAK,eAAe,IAAI,IAAI,CAACK,YAAY,EAAE;MACxDvB,GAAG,CAAC0E,IAAI,CAAC,uCAAuC,CAAC;MACjD,MAAM,IAAI,CAACJ,iBAAiB,CAAC,CAAC;IAChC;IAEA,IAAI,CAACrD,OAAO,GAAGb,MAAM;IACrBH,cAAM,CAACgE,QAAQ,CAAC7D,MAAM,CAACI,QAAQ,CAAC;IAChC,IAAI,CAACmE,QAAQ,CAAC,cAAc,CAAC;IAC7B,MAAMC,MAAM,GAAG,IAAAC,+BAAsB,EAAC,CAAC;IACvC,IAAI,CAACzD,OAAO,GAAGwD,MAAM;IACrB,IAAI,CAACrD,YAAY,GAAG,IAAI;IAExB,IAAIuD,aAAmC,GAAG,IAAI;IAC9C,IAAIC,gBAAyC,GAAG,IAAI;IACpD,IAAIC,UAA6B,GAAG,IAAI;IACxC,IAAI;MACF,MAAMJ,MAAM,CAACtC,SAAS,CAAC;QAAE9B,QAAQ,EAAEJ,MAAM,CAACI;MAAS,CAAC,CAAC;MACrD,MAAMyE,WAAW,GAAG,MAAML,MAAM,CAACM,QAAQ,CAAC,CAAC;MAC3C,IAAID,WAAW,KAAK,OAAO,EAAE;QAC3B,MAAM/C,gBAAQ,CAACiD,YAAY,CAAC,OAAO,EAAEF,WAAW,CAAC;MACnD;MACA,MAAMvB,YAAY,GAAG,MAAMkB,MAAM,CAACjB,eAAe,CAAC,CAAC;MACnD,IAAI,CAACE,iBAAiB,CACpBH,YAAY,CAACE,SAAS,GAAG,WAAW,GAAG,aACzC,CAAC;MAEDkB,aAAa,GAAG,IAAIM,4BAAa,CAAC,CAAC;MACnC,MAAMN,aAAa,CAACO,UAAU,CAAC,CAAC;MAChCN,gBAAgB,GAAG,IAAIO,kCAAgB,CAAC;QAAE5E,sBAAsB,EAAEN,MAAM,CAACM;MAAuB,CAAC,CAAC;MAClG,MAAMqE,gBAAgB,CAACM,UAAU,CAAC,CAAC;MACnCL,UAAU,GAAG,IAAIO,sBAAU,CAACT,aAAa,CAAC;MAE1C,IAAI,CAAC9D,cAAc,GAAG8D,aAAa;MACnC,IAAI,CAACzD,iBAAiB,GAAG0D,gBAAgB;MACzC,IAAI,CAACzD,WAAW,GAAG0D,UAAU;MAC7B,IAAI,CAACL,QAAQ,CAACM,WAAW,CAAC;MAC1BjF,GAAG,CAACwF,IAAI,CAAC,6BAA6B,EAAE;QACtCnF,WAAW,EAAED,MAAM,CAACC,WAAW;QAC/ByB,cAAc,EAAE,IAAI,CAACX;MACvB,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOsB,KAAK,EAAE;MACdqC,aAAa,EAAET,OAAO,CAAC,CAAC;MACxBU,gBAAgB,EAAEV,OAAO,CAAC,CAAC;MAC3BW,UAAU,EAAEX,OAAO,CAAC,CAAC;MACrB,MAAMO,MAAM,CAACP,OAAO,CAAC,CAAC,CAACrB,KAAK,CAAC,MAAMC,SAAS,CAAC;MAC7C,IAAI,CAAC1B,YAAY,GAAG,KAAK;MACzB,IAAI,CAACH,OAAO,GAAG,IAAI;MACnB,IAAI,CAACuD,QAAQ,CAAC,OAAO,CAAC;MACtB,MAAMc,OAAO,GAAGhD,KAAK,YAAYiD,KAAK,GAAGjD,KAAK,GAAG,IAAIiD,KAAK,CAACC,MAAM,CAAClD,KAAK,CAAC,CAAC;MACzEzC,GAAG,CAACyC,KAAK,CAAC,yBAAyB,EAAEgD,OAAO,CAAC;MAC7C,IAAI,CAACG,IAAI,CAAC,OAAO,EAAEH,OAAO,CAAC;MAC3B,MAAMhD,KAAK;IACb;EACF;EAEA,MAAc6B,iBAAiBA,CAAA,EAAkB;IAC/C,IAAI,CAACtD,cAAc,EAAEqD,OAAO,CAAC,CAAC;IAC9B,IAAI,CAAChD,iBAAiB,EAAEgD,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC/C,WAAW,EAAE+C,OAAO,CAAC,CAAC;IAC3B,IAAI,CAACrD,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACK,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACC,WAAW,GAAG,IAAI;IAEvB,MAAMsD,MAAM,GAAG,IAAI,CAACxD,OAAO;IAC3B,IAAI,CAACA,OAAO,GAAG,IAAI;IACnB,IAAIwD,MAAM,IAAI,IAAI,CAACrD,YAAY,EAAE,MAAMqD,MAAM,CAACP,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC9C,YAAY,GAAG,KAAK;IACzB,IAAI,CAACN,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC0D,QAAQ,CAAC,eAAe,CAAC;EAChC;EAEQA,QAAQA,CAAC9C,KAAe,EAAQ;IACtC,IAAIA,KAAK,KAAK,IAAI,CAACX,MAAM,EAAE;IAC3B,IAAI,CAACA,MAAM,GAAGW,KAAK;IACnB,IAAI,CAAC+D,IAAI,CAAC,cAAc,EAAE/D,KAAK,CAAC;EAClC;EAEQgC,iBAAiBA,CAAChC,KAAqB,EAAQ;IACrD,IAAIA,KAAK,KAAK,IAAI,CAACV,eAAe,EAAE;IACpC,IAAI,CAACA,eAAe,GAAGU,KAAK;IAC5B,IAAI,CAAC+D,IAAI,CAAC,uBAAuB,EAAE/D,KAAK,CAAC;EAC3C;AACF;AAEO,MAAMgE,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,IAAIlF,cAAc,CAAC,CAAC","ignoreList":[]}
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DEVICE_LOG_FLAG_DROPPED = exports.DEVICE_LOG_FLAG_BACKLOG = exports.BLE_ERROR_STORAGE_KEY_UNAVAILABLE = void 0;
|
|
6
|
+
exports.DEVICE_LOG_FLAG_DROPPED = exports.DEVICE_LOG_FLAG_BACKLOG = exports.DEVICE_DIAGNOSTICS_EVT_SIGNATURE = exports.DEVICE_DIAGNOSTICS_EVT_META = exports.DEVICE_DIAGNOSTICS_EVT_END = exports.DEVICE_DIAGNOSTICS_EVT_DETAIL = exports.BLE_ERROR_STORAGE_KEY_UNAVAILABLE = void 0;
|
|
7
7
|
const DEVICE_LOG_FLAG_BACKLOG = exports.DEVICE_LOG_FLAG_BACKLOG = 0x01;
|
|
8
8
|
const DEVICE_LOG_FLAG_DROPPED = exports.DEVICE_LOG_FLAG_DROPPED = 0x02;
|
|
9
9
|
const BLE_ERROR_STORAGE_KEY_UNAVAILABLE = exports.BLE_ERROR_STORAGE_KEY_UNAVAILABLE = 0x14;
|
|
10
|
+
const DEVICE_DIAGNOSTICS_EVT_META = exports.DEVICE_DIAGNOSTICS_EVT_META = 0x90;
|
|
11
|
+
const DEVICE_DIAGNOSTICS_EVT_SIGNATURE = exports.DEVICE_DIAGNOSTICS_EVT_SIGNATURE = 0x91;
|
|
12
|
+
const DEVICE_DIAGNOSTICS_EVT_END = exports.DEVICE_DIAGNOSTICS_EVT_END = 0x92;
|
|
13
|
+
const DEVICE_DIAGNOSTICS_EVT_DETAIL = exports.DEVICE_DIAGNOSTICS_EVT_DETAIL = 0x95;
|
|
10
14
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEVICE_LOG_FLAG_BACKLOG","exports","DEVICE_LOG_FLAG_DROPPED","BLE_ERROR_STORAGE_KEY_UNAVAILABLE"],"sourceRoot":"../../../src","sources":["ble/constants.ts"],"mappings":";;;;;;AAAO,MAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAI;AACpC,MAAME,uBAAuB,GAAAD,OAAA,CAAAC,uBAAA,GAAG,IAAI;AACpC,MAAMC,iCAAiC,GAAAF,OAAA,CAAAE,iCAAA,GAAG,IAAI","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DEVICE_LOG_FLAG_BACKLOG","exports","DEVICE_LOG_FLAG_DROPPED","BLE_ERROR_STORAGE_KEY_UNAVAILABLE","DEVICE_DIAGNOSTICS_EVT_META","DEVICE_DIAGNOSTICS_EVT_SIGNATURE","DEVICE_DIAGNOSTICS_EVT_END","DEVICE_DIAGNOSTICS_EVT_DETAIL"],"sourceRoot":"../../../src","sources":["ble/constants.ts"],"mappings":";;;;;;AAAO,MAAMA,uBAAuB,GAAAC,OAAA,CAAAD,uBAAA,GAAG,IAAI;AACpC,MAAME,uBAAuB,GAAAD,OAAA,CAAAC,uBAAA,GAAG,IAAI;AACpC,MAAMC,iCAAiC,GAAAF,OAAA,CAAAE,iCAAA,GAAG,IAAI;AAE9C,MAAMC,2BAA2B,GAAAH,OAAA,CAAAG,2BAAA,GAAG,IAAI;AACxC,MAAMC,gCAAgC,GAAAJ,OAAA,CAAAI,gCAAA,GAAG,IAAI;AAC7C,MAAMC,0BAA0B,GAAAL,OAAA,CAAAK,0BAAA,GAAG,IAAI;AACvC,MAAMC,6BAA6B,GAAAN,OAAA,CAAAM,6BAAA,GAAG,IAAI","ignoreList":[]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DeviceDiagnosticsDecoder = void 0;
|
|
7
|
+
exports.diagnosticEventIdCommand = diagnosticEventIdCommand;
|
|
8
|
+
var _buffer = require("buffer");
|
|
9
|
+
var _constants = require("./constants");
|
|
10
|
+
const EVENT_TYPES = {
|
|
11
|
+
1: 'reset',
|
|
12
|
+
2: 'watchdog',
|
|
13
|
+
3: 'hard_fault',
|
|
14
|
+
4: 'storage',
|
|
15
|
+
5: 'power',
|
|
16
|
+
6: 'radio',
|
|
17
|
+
7: 'security'
|
|
18
|
+
};
|
|
19
|
+
const REASONS = {
|
|
20
|
+
1: 'watchdog_timeout',
|
|
21
|
+
2: 'cpu_illegal_instruction',
|
|
22
|
+
3: 'cpu_misaligned_access',
|
|
23
|
+
4: 'cpu_stack_overflow',
|
|
24
|
+
5: 'cpu_usage_fault',
|
|
25
|
+
6: 'memory_protection_fault',
|
|
26
|
+
7: 'invalid_register_read',
|
|
27
|
+
8: 'invalid_register_write',
|
|
28
|
+
9: 'audio_subsystem_fault',
|
|
29
|
+
10: 'wireless_subsystem_fault',
|
|
30
|
+
11: 'flash_mmu_fault',
|
|
31
|
+
12: 'low_voltage_reset',
|
|
32
|
+
255: 'unknown_cpu_exception'
|
|
33
|
+
};
|
|
34
|
+
const SUBSYSTEMS = {
|
|
35
|
+
0: 'system',
|
|
36
|
+
1: 'audio',
|
|
37
|
+
2: 'wireless',
|
|
38
|
+
3: 'storage',
|
|
39
|
+
4: 'power',
|
|
40
|
+
5: 'security'
|
|
41
|
+
};
|
|
42
|
+
const STATES = {
|
|
43
|
+
0: 'boot',
|
|
44
|
+
1: 'deep_standby',
|
|
45
|
+
2: 'recording',
|
|
46
|
+
3: 'upload_preparing',
|
|
47
|
+
4: 'uploading',
|
|
48
|
+
5: 'error_recovery',
|
|
49
|
+
6: 'full_sleep'
|
|
50
|
+
};
|
|
51
|
+
const BREADCRUMBS = {
|
|
52
|
+
1: 'boot',
|
|
53
|
+
2: 'standby_entered',
|
|
54
|
+
3: 'recording_started',
|
|
55
|
+
4: 'upload_preparing',
|
|
56
|
+
5: 'upload_started',
|
|
57
|
+
6: 'error_recovery',
|
|
58
|
+
7: 'full_sleep'
|
|
59
|
+
};
|
|
60
|
+
const DETAIL_WIRE_SIZE = 176;
|
|
61
|
+
function u64LeHex(bytes) {
|
|
62
|
+
return _buffer.Buffer.from(bytes).reverse().toString('hex').padStart(16, '0');
|
|
63
|
+
}
|
|
64
|
+
function diagnosticEventIdCommand(eventId) {
|
|
65
|
+
if (!/^[0-9a-f]{16}$/.test(eventId)) {
|
|
66
|
+
throw new Error('Diagnostic event_id must be 16 lowercase hex characters');
|
|
67
|
+
}
|
|
68
|
+
return _buffer.Buffer.concat([_buffer.Buffer.from([0x11]), _buffer.Buffer.from(eventId, 'hex').reverse()]);
|
|
69
|
+
}
|
|
70
|
+
function normalizedAddress(value) {
|
|
71
|
+
if (value === 0) return undefined;
|
|
72
|
+
const region = (value & 0x80000000) !== 0 ? 'sdram' : (value & 0x40000000) !== 0 ? 'ram' : 'rom';
|
|
73
|
+
const offset = (value & 0x3fffffff).toString(16).padStart(8, '0');
|
|
74
|
+
return `${region}:${offset}`;
|
|
75
|
+
}
|
|
76
|
+
function fixedHex32(value) {
|
|
77
|
+
return value.toString(16).padStart(8, '0');
|
|
78
|
+
}
|
|
79
|
+
function decodeDetail(bytes) {
|
|
80
|
+
if (bytes.length !== DETAIL_WIRE_SIZE || bytes[0] !== 1) {
|
|
81
|
+
throw new Error('Unsupported diagnostic detail payload');
|
|
82
|
+
}
|
|
83
|
+
const hasReport = (bytes[1] & 1) !== 0;
|
|
84
|
+
const firmwareBuildId = _buffer.Buffer.from(bytes.subarray(2, 14)).toString('ascii');
|
|
85
|
+
if (!/^[0-9a-f]{12}$/.test(firmwareBuildId)) {
|
|
86
|
+
throw new Error('Invalid diagnostic firmware build id');
|
|
87
|
+
}
|
|
88
|
+
const common = {
|
|
89
|
+
firmware_build_id: firmwareBuildId,
|
|
90
|
+
subsystem: SUBSYSTEMS[bytes[14]] ?? 'system',
|
|
91
|
+
state_before_event: STATES[bytes[15]] ?? 'unknown'
|
|
92
|
+
};
|
|
93
|
+
if (!hasReport) return common;
|
|
94
|
+
const pcCount = Math.min(bytes[17], 6);
|
|
95
|
+
const breadcrumbCount = Math.min(bytes[18], 8);
|
|
96
|
+
const runtimeMask = bytes[19];
|
|
97
|
+
const pcTrace = [];
|
|
98
|
+
for (let index = 0; index < pcCount; index++) {
|
|
99
|
+
const address = normalizedAddress(bytes.readUInt32LE(48 + index * 4));
|
|
100
|
+
if (address) pcTrace.push(address);
|
|
101
|
+
}
|
|
102
|
+
const task = _buffer.Buffer.from(bytes.subarray(80, 96)).toString('ascii').replace(/\0.*$/, '');
|
|
103
|
+
const breadcrumbs = [];
|
|
104
|
+
for (let index = 0; index < breadcrumbCount; index++) {
|
|
105
|
+
const offset = 96 + index * 10;
|
|
106
|
+
breadcrumbs.push({
|
|
107
|
+
delta_ms: bytes.readInt32LE(offset),
|
|
108
|
+
code: BREADCRUMBS[bytes.readUInt16LE(offset + 4)] ?? 'state_changed',
|
|
109
|
+
arg0: bytes.readInt32LE(offset + 6)
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const reti = normalizedAddress(bytes.readUInt32LE(40));
|
|
113
|
+
const rets = normalizedAddress(bytes.readUInt32LE(44));
|
|
114
|
+
return {
|
|
115
|
+
...common,
|
|
116
|
+
report: {
|
|
117
|
+
fault: {
|
|
118
|
+
cpu_id: bytes[16],
|
|
119
|
+
cpu_emu: fixedHex32(bytes.readUInt32LE(20)),
|
|
120
|
+
core_emu: fixedHex32(bytes.readUInt32LE(24)),
|
|
121
|
+
hsb_emu: fixedHex32(bytes.readUInt32LE(28)),
|
|
122
|
+
audio_emu: fixedHex32(bytes.readUInt32LE(32)),
|
|
123
|
+
wireless_emu: fixedHex32(bytes.readUInt32LE(36))
|
|
124
|
+
},
|
|
125
|
+
execution: {
|
|
126
|
+
...(task ? {
|
|
127
|
+
task
|
|
128
|
+
} : {}),
|
|
129
|
+
...(reti ? {
|
|
130
|
+
reti
|
|
131
|
+
} : {}),
|
|
132
|
+
...(rets ? {
|
|
133
|
+
rets
|
|
134
|
+
} : {}),
|
|
135
|
+
pc_trace: pcTrace
|
|
136
|
+
},
|
|
137
|
+
...((runtimeMask & 3) !== 0 ? {
|
|
138
|
+
runtime: {
|
|
139
|
+
...((runtimeMask & 1) !== 0 ? {
|
|
140
|
+
heap_free_bytes: bytes.readUInt32LE(72)
|
|
141
|
+
} : {}),
|
|
142
|
+
...((runtimeMask & 2) !== 0 ? {
|
|
143
|
+
task_stack_remaining_bytes: bytes.readUInt32LE(76)
|
|
144
|
+
} : {})
|
|
145
|
+
}
|
|
146
|
+
} : {}),
|
|
147
|
+
...(breadcrumbs.length ? {
|
|
148
|
+
breadcrumbs
|
|
149
|
+
} : {})
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
class DeviceDiagnosticsDecoder {
|
|
154
|
+
events = new Map();
|
|
155
|
+
details = new Map();
|
|
156
|
+
push(packet) {
|
|
157
|
+
if (packet.length === 17 && packet[0] === _constants.DEVICE_DIAGNOSTICS_EVT_META) {
|
|
158
|
+
const type = EVENT_TYPES[packet[2]];
|
|
159
|
+
if (!type) return null;
|
|
160
|
+
this.events.set(packet[1], {
|
|
161
|
+
event_id: u64LeHex(packet.subarray(9, 17)),
|
|
162
|
+
event_type: type,
|
|
163
|
+
reason_code: REASONS[packet.readUInt16LE(3)] ?? 'unknown_cpu_exception',
|
|
164
|
+
uptime_ms: packet.readUInt32LE(5)
|
|
165
|
+
});
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
if (packet.length === 10 && packet[0] === _constants.DEVICE_DIAGNOSTICS_EVT_SIGNATURE) {
|
|
169
|
+
const event = this.events.get(packet[1]);
|
|
170
|
+
if (event) event.signature = u64LeHex(packet.subarray(2, 10));
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
if (packet.length >= 6 && packet.length <= 20 && packet[0] === _constants.DEVICE_DIAGNOSTICS_EVT_DETAIL) {
|
|
174
|
+
const index = packet[1];
|
|
175
|
+
const offset = packet.readUInt16LE(2);
|
|
176
|
+
const total = packet.readUInt16LE(4);
|
|
177
|
+
if (total !== DETAIL_WIRE_SIZE || offset + packet.length - 6 > total) {
|
|
178
|
+
this.reset();
|
|
179
|
+
throw new Error('Invalid diagnostic detail chunk');
|
|
180
|
+
}
|
|
181
|
+
let detail = this.details.get(index);
|
|
182
|
+
if (offset === 0) {
|
|
183
|
+
if (detail) {
|
|
184
|
+
this.reset();
|
|
185
|
+
throw new Error(`Duplicate diagnostic detail at index ${index}`);
|
|
186
|
+
}
|
|
187
|
+
detail = {
|
|
188
|
+
buffer: _buffer.Buffer.alloc(total),
|
|
189
|
+
received: 0
|
|
190
|
+
};
|
|
191
|
+
this.details.set(index, detail);
|
|
192
|
+
}
|
|
193
|
+
if (!detail || detail.received !== offset) {
|
|
194
|
+
this.reset();
|
|
195
|
+
throw new Error(`Out-of-order diagnostic detail at index ${index}`);
|
|
196
|
+
}
|
|
197
|
+
packet.copy(detail.buffer, offset, 6);
|
|
198
|
+
detail.received += packet.length - 6;
|
|
199
|
+
if (detail.received === total) {
|
|
200
|
+
const event = this.events.get(index);
|
|
201
|
+
if (!event) {
|
|
202
|
+
this.reset();
|
|
203
|
+
throw new Error(`Diagnostic detail without metadata at index ${index}`);
|
|
204
|
+
}
|
|
205
|
+
try {
|
|
206
|
+
Object.assign(event, decodeDetail(detail.buffer));
|
|
207
|
+
} catch (error) {
|
|
208
|
+
this.reset();
|
|
209
|
+
throw error;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
if (packet.length === 2 && packet[0] === _constants.DEVICE_DIAGNOSTICS_EVT_END) {
|
|
215
|
+
const expected = packet[1];
|
|
216
|
+
const events = [];
|
|
217
|
+
for (let index = 0; index < expected; index++) {
|
|
218
|
+
const event = this.events.get(index);
|
|
219
|
+
if (!event?.signature || !event.firmware_build_id || !event.subsystem || !event.state_before_event || this.details.get(index)?.received !== DETAIL_WIRE_SIZE) {
|
|
220
|
+
this.reset();
|
|
221
|
+
throw new Error(`Incomplete diagnostic event at index ${index}`);
|
|
222
|
+
}
|
|
223
|
+
events.push(event);
|
|
224
|
+
}
|
|
225
|
+
const batch = {
|
|
226
|
+
schema_version: 1,
|
|
227
|
+
events
|
|
228
|
+
};
|
|
229
|
+
this.reset();
|
|
230
|
+
return batch;
|
|
231
|
+
}
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
reset() {
|
|
235
|
+
this.events.clear();
|
|
236
|
+
this.details.clear();
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.DeviceDiagnosticsDecoder = DeviceDiagnosticsDecoder;
|
|
240
|
+
//# sourceMappingURL=deviceDiagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_buffer","require","_constants","EVENT_TYPES","REASONS","SUBSYSTEMS","STATES","BREADCRUMBS","DETAIL_WIRE_SIZE","u64LeHex","bytes","Buffer","from","reverse","toString","padStart","diagnosticEventIdCommand","eventId","test","Error","concat","normalizedAddress","value","undefined","region","offset","fixedHex32","decodeDetail","length","hasReport","firmwareBuildId","subarray","common","firmware_build_id","subsystem","state_before_event","pcCount","Math","min","breadcrumbCount","runtimeMask","pcTrace","index","address","readUInt32LE","push","task","replace","breadcrumbs","delta_ms","readInt32LE","code","readUInt16LE","arg0","reti","rets","report","fault","cpu_id","cpu_emu","core_emu","hsb_emu","audio_emu","wireless_emu","execution","pc_trace","runtime","heap_free_bytes","task_stack_remaining_bytes","DeviceDiagnosticsDecoder","events","Map","details","packet","DEVICE_DIAGNOSTICS_EVT_META","type","set","event_id","event_type","reason_code","uptime_ms","DEVICE_DIAGNOSTICS_EVT_SIGNATURE","event","get","signature","DEVICE_DIAGNOSTICS_EVT_DETAIL","total","reset","detail","buffer","alloc","received","copy","Object","assign","error","DEVICE_DIAGNOSTICS_EVT_END","expected","batch","schema_version","clear","exports"],"sourceRoot":"../../../src","sources":["ble/deviceDiagnostics.ts"],"mappings":"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","ignoreList":[]}
|