@ovok/native 1.16.1-dev.2183 → 1.16.1-dev.2187
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/lib/commonjs/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +13 -0
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js +13 -6
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +5 -0
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +31 -5
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +42 -4
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +55 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +2 -2
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +5 -12
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +35 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/le-32-from-hex.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js +13 -1
- package/lib/commonjs/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/connections.js +25 -0
- package/lib/commonjs/modules/next/bluetooth/connections.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/driver.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/errors.js.map +1 -1
- package/lib/commonjs/modules/next/bluetooth/runtime.js +13 -0
- package/lib/commonjs/modules/next/bluetooth/runtime.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/runtime-context.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +13 -0
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +13 -6
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +5 -0
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +31 -5
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js +41 -4
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js +51 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.recording-watch.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +2 -2
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js +3 -10
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js +31 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js.map +1 -0
- package/lib/module/modules/bt-management/utils/le-32-from-hex.js.map +1 -1
- package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js +13 -1
- package/lib/module/modules/next/bluetooth/ble-plx/legacy-driver.js.map +1 -1
- package/lib/module/modules/next/bluetooth/connections.js +25 -0
- package/lib/module/modules/next/bluetooth/connections.js.map +1 -1
- package/lib/module/modules/next/bluetooth/driver.js.map +1 -1
- package/lib/module/modules/next/bluetooth/errors.js.map +1 -1
- package/lib/module/modules/next/bluetooth/runtime.js +13 -0
- package/lib/module/modules/next/bluetooth/runtime.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +23 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +2 -2
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +16 -6
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts +17 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-from-hex.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/utils/le-32-from-hex.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/next/bluetooth/connections.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts +8 -0
- package/lib/typescript/commonjs/src/modules/next/bluetooth/driver.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/errors.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts +15 -1
- package/lib/typescript/commonjs/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/runtime-context.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.ecg-transfer.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts +23 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.recording-watch.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +2 -2
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts +8 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +16 -6
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts +17 -1
- package/lib/typescript/module/src/modules/bt-management/types/device-connection-event.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/utils/le-32-from-hex.d.ts +1 -1
- package/lib/typescript/module/src/modules/bt-management/utils/le-32-from-hex.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/ble-plx/legacy-driver.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts +7 -0
- package/lib/typescript/module/src/modules/next/bluetooth/connections.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts +8 -0
- package/lib/typescript/module/src/modules/next/bluetooth/driver.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/errors.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts +7 -0
- package/lib/typescript/module/src/modules/next/bluetooth/runtime.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts +15 -1
- package/lib/typescript/module/src/modules/next/bluetooth/snapshot.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js +0 -26
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js.map +0 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js +0 -22
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.js.map +0 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts +0 -12
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts.map +0 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts +0 -12
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.record-saved-watch.d.ts.map +0 -1
|
@@ -11,11 +11,14 @@ var _lepuFileTransfer = require("./lepu.file-transfer.js");
|
|
|
11
11
|
var _lepuFrame = require("./lepu.frame.js");
|
|
12
12
|
var _lepuIdentityGate = require("./lepu.identity-gate.js");
|
|
13
13
|
var _lepuResponseType = require("./lepu.response-type.js");
|
|
14
|
+
/* eslint-disable max-lines */
|
|
15
|
+
|
|
14
16
|
/** How long past its delay a poll may go unanswered before it is sent again. */
|
|
15
17
|
const POLL_ANSWER_GRACE_MS = 1_000;
|
|
16
18
|
|
|
17
19
|
/** Lets a device finish writing a record before its file list is read. */
|
|
18
20
|
const FILE_LIST_DELAY_MS = 3_000;
|
|
21
|
+
const hexOf = opcode => `0x${(opcode ?? 0).toString(16).padStart(2, "0")}`;
|
|
19
22
|
|
|
20
23
|
/** Identifies a recorder, sets its local clock, then downloads its stored files. */
|
|
21
24
|
class LepuEcgTransferSequencer {
|
|
@@ -43,6 +46,9 @@ class LepuEcgTransferSequencer {
|
|
|
43
46
|
if (this.phase === "polling" && this.params.pollIntervalMs !== undefined) {
|
|
44
47
|
return this.params.pollIntervalMs + POLL_ANSWER_GRACE_MS;
|
|
45
48
|
}
|
|
49
|
+
if (this.phase === "requested") {
|
|
50
|
+
return _lepuConnectRetry.LEPU_CONNECT_REPLY_TIMEOUT_MS;
|
|
51
|
+
}
|
|
46
52
|
return this.phase === "clock" ? _lepuConnectRetry.LEPU_CONNECT_REPLY_TIMEOUT_MS : undefined;
|
|
47
53
|
};
|
|
48
54
|
|
|
@@ -51,9 +57,12 @@ class LepuEcgTransferSequencer {
|
|
|
51
57
|
if (this.phase === "identity") {
|
|
52
58
|
return this.identity.onCommandTimeout();
|
|
53
59
|
}
|
|
54
|
-
if (this.phase === "
|
|
60
|
+
if (this.phase === "requested") {
|
|
61
|
+
this.params.onError(`the device did not answer command ${hexOf(this.requestedCommand)}`);
|
|
62
|
+
}
|
|
63
|
+
if (this.phase === "polling" || this.phase === "requested") {
|
|
55
64
|
return {
|
|
56
|
-
commands:
|
|
65
|
+
commands: this.resumePolling()
|
|
57
66
|
};
|
|
58
67
|
}
|
|
59
68
|
if (this.phase !== "clock") {
|
|
@@ -67,7 +76,7 @@ class LepuEcgTransferSequencer {
|
|
|
67
76
|
if (this.phase === "identity") {
|
|
68
77
|
return this.identity.commandProgress(frame);
|
|
69
78
|
}
|
|
70
|
-
const awaited = this.phase === "clock" ? _lepuCommands.LepuCommand.SET_TIME : this.phase === "polling" ? this.params.pollCommand : undefined;
|
|
79
|
+
const awaited = this.phase === "clock" ? _lepuCommands.LepuCommand.SET_TIME : this.phase === "polling" ? this.params.pollCommand : this.phase === "requested" ? this.requestedCommand : undefined;
|
|
71
80
|
return awaited !== undefined && (0, _lepuFrame.lepuCommandOf)(frame) !== awaited ? "ignored" : "complete";
|
|
72
81
|
};
|
|
73
82
|
nextCommand = frame => {
|
|
@@ -81,10 +90,39 @@ class LepuEcgTransferSequencer {
|
|
|
81
90
|
if (this.params.pollCommand === undefined || (0, _lepuFrame.lepuCommandOf)(frame) !== this.params.pollCommand) {
|
|
82
91
|
return undefined;
|
|
83
92
|
}
|
|
84
|
-
return this.params.shouldStartTransfer?.(frame) ?? true ? this.startTransfer(FILE_LIST_DELAY_MS) :
|
|
93
|
+
return this.params.shouldStartTransfer?.(frame) ?? true ? this.startTransfer(FILE_LIST_DELAY_MS) : this.requestedOrPoll();
|
|
94
|
+
}
|
|
95
|
+
if (this.phase === "requested") {
|
|
96
|
+
return this.finishRequested(frame);
|
|
85
97
|
}
|
|
86
98
|
return this.transfer?.nextCommand(frame);
|
|
87
99
|
};
|
|
100
|
+
requestedOrPoll = () => {
|
|
101
|
+
const requested = this.params.takeRequestedCommand?.();
|
|
102
|
+
if (requested === undefined) {
|
|
103
|
+
return [this.pollCommand()];
|
|
104
|
+
}
|
|
105
|
+
this.phase = "requested";
|
|
106
|
+
this.requestedCommand = requested;
|
|
107
|
+
return [{
|
|
108
|
+
...this.params.write,
|
|
109
|
+
frame: this.params.builder.build(requested)
|
|
110
|
+
}];
|
|
111
|
+
};
|
|
112
|
+
finishRequested = frame => {
|
|
113
|
+
if ((0, _lepuFrame.lepuCommandOf)(frame) !== this.requestedCommand) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
if (!(0, _lepuResponseType.isLepuSuccess)(frame)) {
|
|
117
|
+
this.params.onError(`the device refused command ${hexOf(this.requestedCommand)}: ${(0, _lepuResponseType.describeLepuResponseType)(frame)}`);
|
|
118
|
+
}
|
|
119
|
+
return this.resumePolling();
|
|
120
|
+
};
|
|
121
|
+
resumePolling = () => {
|
|
122
|
+
this.phase = "polling";
|
|
123
|
+
this.requestedCommand = undefined;
|
|
124
|
+
return [this.pollCommand()];
|
|
125
|
+
};
|
|
88
126
|
startClockOrTransfer = () => {
|
|
89
127
|
if ((0, _clockSync.isClockSyncEnabled)(this.params.clockSync)) {
|
|
90
128
|
this.phase = "clock";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clockSync","require","_lepuCommands","_lepuConnectRetry","_lepuFileTransfer","_lepuFrame","_lepuIdentityGate","_lepuResponseType","POLL_ANSWER_GRACE_MS","FILE_LIST_DELAY_MS","LepuEcgTransferSequencer","phase","clockRetry","LepuConnectRetry","constructor","params","identity","LepuIdentityGate","write","builder","expectedDeviceTypes","manufacturerData","rejectEncryptionAtBytes","onIdentified","onRefused","onAdmitted","startClockOrTransfer","initialCommands","isHistoryTransfer","commandTimeoutMs","pollIntervalMs","undefined","LEPU_CONNECT_REPLY_TIMEOUT_MS","onCommandTimeout","commands","
|
|
1
|
+
{"version":3,"names":["_clockSync","require","_lepuCommands","_lepuConnectRetry","_lepuFileTransfer","_lepuFrame","_lepuIdentityGate","_lepuResponseType","POLL_ANSWER_GRACE_MS","FILE_LIST_DELAY_MS","hexOf","opcode","toString","padStart","LepuEcgTransferSequencer","phase","clockRetry","LepuConnectRetry","constructor","params","identity","LepuIdentityGate","write","builder","expectedDeviceTypes","manufacturerData","rejectEncryptionAtBytes","onIdentified","onRefused","onAdmitted","startClockOrTransfer","initialCommands","isHistoryTransfer","commandTimeoutMs","pollIntervalMs","undefined","LEPU_CONNECT_REPLY_TIMEOUT_MS","onCommandTimeout","onError","requestedCommand","commands","resumePolling","mayRetry","setTimeCommand","startTransfer","commandProgress","frame","awaited","LepuCommand","SET_TIME","pollCommand","lepuCommandOf","nextCommand","finishClock","shouldStartTransfer","requestedOrPoll","finishRequested","transfer","requested","takeRequestedCommand","build","isLepuSuccess","describeLepuResponseType","isClockSyncEnabled","clockSync","started","clockPayload","delayBeforeWriteMs","LepuFileTransfer","onFile","skipFiles","acceptFile","afterTransfer","finishTransfer","onProgress","exports","parts","getClockParts","now","Date","timezone","year","month","day","hours","minutes","seconds"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.ecg-transfer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LepuRecordingWatch = void 0;
|
|
7
|
+
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
8
|
+
var _le32FromHex = require("../../../utils/le-32-from-hex.js");
|
|
9
|
+
const LOW_NIBBLE = 0x0f;
|
|
10
|
+
const CLOSED = "closed";
|
|
11
|
+
/** Follows a recorder's open recording through its poll answers. */
|
|
12
|
+
class LepuRecordingWatch {
|
|
13
|
+
constructor(status, onRecordingChanged) {
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.onRecordingChanged = onRecordingChanged;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** Reads one poll answer; true when it is the first in the saved state, so the files are read. */
|
|
19
|
+
observe = pollAnswer => {
|
|
20
|
+
const previous = this.state;
|
|
21
|
+
this.state = (0, _hexToByte.hexToByte)(pollAnswer[this.status.byteIndex] ?? "00") & LOW_NIBBLE;
|
|
22
|
+
this.leadOffSince = this.isLeadOff() ? this.leadOffSince ?? new Date() : undefined;
|
|
23
|
+
this.report(this.recordingIn(pollAnswer));
|
|
24
|
+
return this.state === this.status.savedState && previous !== this.status.savedState;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** Whether a recording is open, so that stopping it means something. */
|
|
28
|
+
isOpen = () => this.state === this.status.recordingState || this.isLeadOff();
|
|
29
|
+
recordingIn = pollAnswer => {
|
|
30
|
+
if (!this.isOpen()) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const seconds = (0, _le32FromHex.le32FromHex)(pollAnswer, this.status.secondsByteIndex);
|
|
34
|
+
return {
|
|
35
|
+
seconds,
|
|
36
|
+
...(this.leadOffSince ? {
|
|
37
|
+
leadOffSince: this.leadOffSince
|
|
38
|
+
} : {}),
|
|
39
|
+
storesOnStop: seconds >= this.status.minimumStoredSeconds
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
isLeadOff = () => this.state === this.status.leadOffState;
|
|
43
|
+
|
|
44
|
+
/** Reports a change in what the app would act on, not every tick of the seconds. */
|
|
45
|
+
report = recording => {
|
|
46
|
+
const key = recording ? `${recording.leadOffSince !== undefined}:${recording.storesOnStop}` : CLOSED;
|
|
47
|
+
const changed = key !== (this.reported ?? CLOSED);
|
|
48
|
+
this.reported = key;
|
|
49
|
+
if (changed) {
|
|
50
|
+
this.onRecordingChanged(recording);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
exports.LepuRecordingWatch = LepuRecordingWatch;
|
|
55
|
+
//# sourceMappingURL=lepu.recording-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_hexToByte","require","_le32FromHex","LOW_NIBBLE","CLOSED","LepuRecordingWatch","constructor","status","onRecordingChanged","observe","pollAnswer","previous","state","hexToByte","byteIndex","leadOffSince","isLeadOff","Date","undefined","report","recordingIn","savedState","isOpen","recordingState","seconds","le32FromHex","secondsByteIndex","storesOnStop","minimumStoredSeconds","leadOffState","recording","key","changed","reported","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.recording-watch.ts"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,MAAME,UAAU,GAAG,IAAI;AACvB,MAAMC,MAAM,GAAG,QAAQ;AAMvB;AACA,MAAMC,kBAAkB,CAAC;EAKhBC,WAAWA,CACCC,MAAuB,EACvBC,kBAA8D,EAC/E;IAAA,KAFiBD,MAAuB,GAAvBA,MAAuB;IAAA,KACvBC,kBAA8D,GAA9DA,kBAA8D;EAC9E;;EAEH;EACOC,OAAO,GAAIC,UAA6B,IAAc;IAC3D,MAAMC,QAAQ,GAAG,IAAI,CAACC,KAAK;IAE3B,IAAI,CAACA,KAAK,GAAG,IAAAC,oBAAS,EAACH,UAAU,CAAC,IAAI,CAACH,MAAM,CAACO,SAAS,CAAC,IAAI,IAAI,CAAC,GAAGX,UAAU;IAC9E,IAAI,CAACY,YAAY,GAAG,IAAI,CAACC,SAAS,CAAC,CAAC,GAAI,IAAI,CAACD,YAAY,IAAI,IAAIE,IAAI,CAAC,CAAC,GAAIC,SAAS;IACpF,IAAI,CAACC,MAAM,CAAC,IAAI,CAACC,WAAW,CAACV,UAAU,CAAC,CAAC;IAEzC,OAAO,IAAI,CAACE,KAAK,KAAK,IAAI,CAACL,MAAM,CAACc,UAAU,IAAIV,QAAQ,KAAK,IAAI,CAACJ,MAAM,CAACc,UAAU;EACrF,CAAC;;EAED;EACOC,MAAM,GAAGA,CAAA,KACd,IAAI,CAACV,KAAK,KAAK,IAAI,CAACL,MAAM,CAACgB,cAAc,IAAI,IAAI,CAACP,SAAS,CAAC,CAAC;EAEvDI,WAAW,GAAIV,UAA6B,IAA4B;IAC9E,IAAI,CAAC,IAAI,CAACY,MAAM,CAAC,CAAC,EAAE;MAClB,OAAOJ,SAAS;IAClB;IAEA,MAAMM,OAAO,GAAG,IAAAC,wBAAW,EAACf,UAAU,EAAE,IAAI,CAACH,MAAM,CAACmB,gBAAgB,CAAC;IAErE,OAAO;MACLF,OAAO;MACP,IAAI,IAAI,CAACT,YAAY,GAAG;QAAEA,YAAY,EAAE,IAAI,CAACA;MAAa,CAAC,GAAG,CAAC,CAAC,CAAC;MACjEY,YAAY,EAAEH,OAAO,IAAI,IAAI,CAACjB,MAAM,CAACqB;IACvC,CAAC;EACH,CAAC;EAEOZ,SAAS,GAAGA,CAAA,KAAe,IAAI,CAACJ,KAAK,KAAK,IAAI,CAACL,MAAM,CAACsB,YAAY;;EAE1E;EACQV,MAAM,GAAIW,SAAgC,IAAW;IAC3D,MAAMC,GAAG,GAAGD,SAAS,GACjB,GAAGA,SAAS,CAACf,YAAY,KAAKG,SAAS,IAAIY,SAAS,CAACH,YAAY,EAAE,GACnEvB,MAAM;IAEV,MAAM4B,OAAO,GAAGD,GAAG,MAAM,IAAI,CAACE,QAAQ,IAAI7B,MAAM,CAAC;IAEjD,IAAI,CAAC6B,QAAQ,GAAGF,GAAG;IAEnB,IAAIC,OAAO,EAAE;MACX,IAAI,CAACxB,kBAAkB,CAACsB,SAAS,CAAC;IACpC;EACF,CAAC;AACH;AAACI,OAAA,CAAA7B,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -210,8 +210,8 @@ const lepuDevice = params => {
|
|
|
210
210
|
...(params.pollIntervalMs === undefined ? {} : {
|
|
211
211
|
pollIntervalMs: params.pollIntervalMs
|
|
212
212
|
}),
|
|
213
|
-
...(params.
|
|
214
|
-
|
|
213
|
+
...(params.recordingStatus === undefined ? {} : {
|
|
214
|
+
recordingStatus: params.recordingStatus
|
|
215
215
|
}),
|
|
216
216
|
...(params.writeWithoutResponse === undefined ? {} : {
|
|
217
217
|
writeWithoutResponse: params.writeWithoutResponse
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_preferredMtu","require","_defineCustomDevice","_checkmeProtocol","STANDARD_SERVICE","CHECKME_SERVICE","STANDARD_WRITE","CHECKME_WRITE","STANDARD_NOTIFY","CHECKME_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","exports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","PREFERRED_MTU","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","monitor","each","uuid","frame","minLengthBytes","caseSelectorBytes","undefined","cases","services","v2","defineCustomDevice","id","nameMatch","matchByService","stuckDataTimeoutMs","clockSync","sessionPolicy","lepu","startBytes","manufacturerDataProtocol","requestStartByte","rejectEncryptionAtBytes","write","characteristicUuid","expectedDeviceTypes","fileTransfer","ecgFileDecoder","pollCommand","pollIntervalMs","
|
|
1
|
+
{"version":3,"names":["_preferredMtu","require","_defineCustomDevice","_checkmeProtocol","STANDARD_SERVICE","CHECKME_SERVICE","STANDARD_WRITE","CHECKME_WRITE","STANDARD_NOTIFY","CHECKME_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","exports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","PREFERRED_MTU","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","monitor","each","uuid","frame","minLengthBytes","caseSelectorBytes","undefined","cases","services","v2","defineCustomDevice","id","nameMatch","matchByService","stuckDataTimeoutMs","clockSync","sessionPolicy","lepu","startBytes","manufacturerDataProtocol","requestStartByte","rejectEncryptionAtBytes","write","characteristicUuid","expectedDeviceTypes","fileTransfer","ecgFileDecoder","pollCommand","pollIntervalMs","recordingStatus","writeWithoutResponse","setClockBeforeInfo","clockSyncProtocol","map","service","decorateReading","createFrameHandler"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.transports.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ exports.er3Recorder = exports.er2Recorder = exports.er1Recorder = exports.ER3_MO
|
|
|
7
7
|
var _next = require("@ovok/core/next");
|
|
8
8
|
var _lepuNameMatch = require("../lepu/lepu.name-match.js");
|
|
9
9
|
var _lepuTransports = require("../lepu/lepu.transports.js");
|
|
10
|
+
var _viatomEcgRecordingStatus = require("./viatom.ecg-recording-status.js");
|
|
10
11
|
/**
|
|
11
12
|
* The Viatom ECG recorders - ER1, ER2 and ER3.
|
|
12
13
|
*
|
|
@@ -44,11 +45,6 @@ const HEART_RATE_UNIT = "bpm";
|
|
|
44
45
|
|
|
45
46
|
/** The vendor's own client polls realtime at this pace. */
|
|
46
47
|
const POLL_INTERVAL_MS = 500;
|
|
47
|
-
|
|
48
|
-
/** The run status: the current state in the low nibble, the previous one above it. */
|
|
49
|
-
const RUN_STATUS_BYTE = 15;
|
|
50
|
-
const RECORDING = "2";
|
|
51
|
-
const SAVED = 4;
|
|
52
48
|
/** ER1, ER2 and ER3 share one parameter block: the heart rate opens it. */
|
|
53
49
|
const ER_HEART_RATE_BYTES = [7, 8];
|
|
54
50
|
/**
|
|
@@ -69,14 +65,11 @@ const declareRecorder = (advertisedName, profile, params) => (0, _lepuTransports
|
|
|
69
65
|
},
|
|
70
66
|
pollCommand: profile.pollCommand,
|
|
71
67
|
pollIntervalMs: POLL_INTERVAL_MS,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
},
|
|
76
|
-
minLengthBytes: RUN_STATUS_BYTE + 1,
|
|
77
|
-
caseSelectorBytes: [1, RUN_STATUS_BYTE],
|
|
68
|
+
recordingStatus: (0, _viatomEcgRecordingStatus.viatomRecordingStatus)(advertisedName),
|
|
69
|
+
minLengthBytes: _viatomEcgRecordingStatus.RUN_STATUS_BYTE + 1,
|
|
70
|
+
caseSelectorBytes: [1, _viatomEcgRecordingStatus.RUN_STATUS_BYTE],
|
|
78
71
|
cases: [{
|
|
79
|
-
selector: `${byteHex(profile.pollCommand)}?${
|
|
72
|
+
selector: `${byteHex(profile.pollCommand)}?${_viatomEcgRecordingStatus.RECORDING_STATE}`,
|
|
80
73
|
kind: "result",
|
|
81
74
|
measurementTypeKey: _next.MeasurementTypeKey.heartRate,
|
|
82
75
|
description: "Realtime parameters and waveform",
|
package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recorders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_next","require","_lepuNameMatch","_lepuTransports","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","POLL_INTERVAL_MS","
|
|
1
|
+
{"version":3,"names":["_next","require","_lepuNameMatch","_lepuTransports","_viatomEcgRecordingStatus","RT_DATA","ER3_RT_DATA","HEART_RATE_UNIT","POLL_INTERVAL_MS","ER_HEART_RATE_BYTES","byteHex","value","toString","padStart","declareRecorder","advertisedName","profile","params","lepuDevice","id","toLowerCase","replace","nameMatch","lepuNameMatch","transport","clockSync","sessionPolicy","minSamples","emit","pollCommand","pollIntervalMs","recordingStatus","viatomRecordingStatus","minLengthBytes","RUN_STATUS_BYTE","caseSelectorBytes","cases","selector","RECORDING_STATE","kind","measurementTypeKey","MeasurementTypeKey","heartRate","description","fields","name","byteIndexes","heartRateBytes","byteOrder","encoding","unit","expectedDeviceTypes","fileTransfer","undefined","DECODED_ECG_MODEL_NAMES","has","ecgFileDecoder","er1Recorder","exports","er2Recorder","er3Recorder","ER1_MODEL_NAMES","ER2_MODEL_NAMES","Set","ER3_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recorders.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.viatomRecordingStatus = exports.RUN_STATUS_BYTE = exports.RECORDING_STATE = void 0;
|
|
7
|
+
/** The run status, with the current state in its low nibble. */
|
|
8
|
+
const RUN_STATUS_BYTE = exports.RUN_STATUS_BYTE = 15;
|
|
9
|
+
const RECORDING_STATE = exports.RECORDING_STATE = 2;
|
|
10
|
+
const LEAD_OFF_STATE = 7;
|
|
11
|
+
const SAVED_STATE = 4;
|
|
12
|
+
|
|
13
|
+
/** The seconds recorded so far, u32 little-endian, right before the run status. */
|
|
14
|
+
const RECORD_SECONDS_BYTE = 11;
|
|
15
|
+
|
|
16
|
+
/** Ends a recording and stores it when it is long enough. */
|
|
17
|
+
const STOP_MEASUREMENT = 0x05;
|
|
18
|
+
|
|
19
|
+
/** The holter patches keep only recordings of 5 minutes or more; the rest keep 30 s or more. */
|
|
20
|
+
const HOLTER_MODEL_NAMES = new Set(["ER1-W", "ER1-L", "Cardio AI"]);
|
|
21
|
+
const HOLTER_MINIMUM_STORED_SECONDS = 300;
|
|
22
|
+
const MINIMUM_STORED_SECONDS = 30;
|
|
23
|
+
|
|
24
|
+
/** How an ER recorder reports its open recording in the realtime answer. */
|
|
25
|
+
const viatomRecordingStatus = advertisedName => ({
|
|
26
|
+
byteIndex: RUN_STATUS_BYTE,
|
|
27
|
+
secondsByteIndex: RECORD_SECONDS_BYTE,
|
|
28
|
+
recordingState: RECORDING_STATE,
|
|
29
|
+
leadOffState: LEAD_OFF_STATE,
|
|
30
|
+
savedState: SAVED_STATE,
|
|
31
|
+
minimumStoredSeconds: HOLTER_MODEL_NAMES.has(advertisedName) ? HOLTER_MINIMUM_STORED_SECONDS : MINIMUM_STORED_SECONDS,
|
|
32
|
+
stopCommand: STOP_MEASUREMENT
|
|
33
|
+
});
|
|
34
|
+
exports.viatomRecordingStatus = viatomRecordingStatus;
|
|
35
|
+
//# sourceMappingURL=viatom.ecg-recording-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["RUN_STATUS_BYTE","exports","RECORDING_STATE","LEAD_OFF_STATE","SAVED_STATE","RECORD_SECONDS_BYTE","STOP_MEASUREMENT","HOLTER_MODEL_NAMES","Set","HOLTER_MINIMUM_STORED_SECONDS","MINIMUM_STORED_SECONDS","viatomRecordingStatus","advertisedName","byteIndex","secondsByteIndex","recordingState","leadOffState","savedState","minimumStoredSeconds","has","stopCommand"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.ecg-recording-status.ts"],"mappings":";;;;;;AAEA;AACA,MAAMA,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,EAAE;AAC1B,MAAME,eAAe,GAAAD,OAAA,CAAAC,eAAA,GAAG,CAAC;AACzB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,WAAW,GAAG,CAAC;;AAErB;AACA,MAAMC,mBAAmB,GAAG,EAAE;;AAE9B;AACA,MAAMC,gBAAgB,GAAG,IAAI;;AAE7B;AACA,MAAMC,kBAAkB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACnE,MAAMC,6BAA6B,GAAG,GAAG;AACzC,MAAMC,sBAAsB,GAAG,EAAE;;AAEjC;AACA,MAAMC,qBAAqB,GACzBC,cAAsB,KAC8B;EACpDC,SAAS,EAAEb,eAAe;EAC1Bc,gBAAgB,EAAET,mBAAmB;EACrCU,cAAc,EAAEb,eAAe;EAC/Bc,YAAY,EAAEb,cAAc;EAC5Bc,UAAU,EAAEb,WAAW;EACvBc,oBAAoB,EAAEX,kBAAkB,CAACY,GAAG,CAACP,cAAc,CAAC,GACxDH,6BAA6B,GAC7BC,sBAAsB;EAC1BU,WAAW,EAAEd;AACf,CAAC,CAAC;AAACL,OAAA,CAAAU,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_hexToByte","require","le32FromHex","hex","i","b0","hexToByte","b1","b2","b3","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/le-32-from-hex.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEA;AACO,MAAMC,WAAW,GAAGA,CAACC,
|
|
1
|
+
{"version":3,"names":["_hexToByte","require","le32FromHex","hex","i","b0","hexToByte","b1","b2","b3","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/le-32-from-hex.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAEA;AACO,MAAMC,WAAW,GAAGA,CAACC,GAAsB,EAAEC,CAAS,KAAa;EACxE,MAAMC,EAAE,GAAG,IAAAC,oBAAS,EAACH,GAAG,CAACC,CAAC,CAAC,IAAI,GAAG,CAAC;EACnC,MAAMG,EAAE,GAAG,IAAAD,oBAAS,EAACH,GAAG,CAACC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EACvC,MAAMI,EAAE,GAAG,IAAAF,oBAAS,EAACH,GAAG,CAACC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EACvC,MAAMK,EAAE,GAAG,IAAAH,oBAAS,EAACH,GAAG,CAACC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;EAEvC,OAAOC,EAAE,GAAIE,EAAE,IAAI,CAAE,GAAIC,EAAE,IAAI,EAAG,GAAIC,EAAE,IAAI,EAAG;AACjD,CAAC;AAACC,OAAA,CAAAR,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -55,7 +55,19 @@ const legacyDriver = (creator, deviceName) => (peripheral, signal) => {
|
|
|
55
55
|
}) => events.push({
|
|
56
56
|
kind: "error",
|
|
57
57
|
error: (0, _bleErrors.fromBleError)(error)
|
|
58
|
-
})
|
|
58
|
+
}),
|
|
59
|
+
onConnectionEvent: ({
|
|
60
|
+
kind,
|
|
61
|
+
recording
|
|
62
|
+
}) => {
|
|
63
|
+
if (kind === "recording") {
|
|
64
|
+
events.push({
|
|
65
|
+
kind: "recording",
|
|
66
|
+
recording: recording ?? null,
|
|
67
|
+
stop: () => managed.stopRecording()
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
59
71
|
});
|
|
60
72
|
signal.addEventListener("abort", stop, {
|
|
61
73
|
once: true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_deviceStatus","require","_channel","_driver","_bleErrors","_blePeripheral","STATUSES","DeviceStatus","CONNECTED","MEASURING","DISCONNECTED","legacyDriver","creator","deviceName","peripheral","signal","stop","events","end","Channel","removeEventListener","managed","disconnect","createDevice","device","bleDeviceOf","onResult","id","data","reading","push","kind","isTimestamped","onDeviceStatusChanged","status","mapped","onError","error","fromBleError","addEventListener","once","connect","catch","fail","exports"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/legacy-driver.ts"],"mappings":";;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAEA,MAAMK,QAAmF,GAAG;EAC1F,CAACC,0BAAY,CAACC,SAAS,GAAG,WAAW;EACrC,CAACD,0BAAY,CAACE,SAAS,GAAG,WAAW;EACrC,CAACF,0BAAY,CAACG,YAAY,GAAG;AAC/B,CAAC;;AAED;AACA,MAAMC,YAAY,GAAGA,CAACC,OAAiD,EAAEC,UAAqB,KAC5F,CAACC,UAAU,EAAEC,MAAM,KAAK;EACtB,MAAMC,IAAI,GAAGA,CAAA,KAAMC,MAAM,CAACC,GAAG,CAAC,CAAC;EAE/B,MAAMD,MAAM,GAAG,IAAIE,gBAAO,CAAc,MAAM;IAC5CJ,MAAM,CAACK,mBAAmB,CAAC,OAAO,EAAEJ,IAAI,CAAC;IACzC,KAAKK,OAAO,CAACC,UAAU,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMD,OAAO,GAAGT,OAAO,CAACW,YAAY,CAAC;IACnCC,MAAM,EAAE,IAAAC,0BAAW,EAACX,UAAU,CAAC;IAC/BD,UAAU;IACVa,QAAQ,EAAEA,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAK;MAC1B,MAAMC,OAAO,GAAGD,IAAmB;MAEnCX,MAAM,CAACa,IAAI,CAAC;QAAEC,IAAI,EAAE,SAAS;QAAEJ,EAAE,EAAE,IAAAK,qBAAa,EAACH,OAAO,CAAC,GAAGF,EAAE,GAAG,IAAI;QAAEE;MAAQ,CAAC,CAAC;IACnF,CAAC;IACDI,qBAAqB,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAAK;MACrC,MAAMC,MAAM,GAAG7B,QAAQ,CAAC4B,MAAM,CAAC;MAE/B,IAAIC,MAAM,EAAE;QACVlB,MAAM,CAACa,IAAI,CAAC;UAAEC,IAAI,EAAE,QAAQ;UAAEG,MAAM,EAAEC;QAAO,CAAC,CAAC;MACjD;MACA,IAAID,MAAM,KAAK3B,0BAAY,CAACG,YAAY,EAAE;QACxCO,MAAM,CAACC,GAAG,CAAC,CAAC;MACd;IACF,CAAC;IACDkB,OAAO,EAAEA,CAAC;MAAEC;IAAM,CAAC,KAAKpB,MAAM,CAACa,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEM,KAAK,EAAE,IAAAC,uBAAY,EAACD,KAAK;IAAE,CAAC;
|
|
1
|
+
{"version":3,"names":["_deviceStatus","require","_channel","_driver","_bleErrors","_blePeripheral","STATUSES","DeviceStatus","CONNECTED","MEASURING","DISCONNECTED","legacyDriver","creator","deviceName","peripheral","signal","stop","events","end","Channel","removeEventListener","managed","disconnect","createDevice","device","bleDeviceOf","onResult","id","data","reading","push","kind","isTimestamped","onDeviceStatusChanged","status","mapped","onError","error","fromBleError","onConnectionEvent","recording","stopRecording","addEventListener","once","connect","catch","fail","exports"],"sourceRoot":"../../../../../../src","sources":["modules/next/bluetooth/ble-plx/legacy-driver.ts"],"mappings":";;;;;;AAKA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAEA,MAAMK,QAAmF,GAAG;EAC1F,CAACC,0BAAY,CAACC,SAAS,GAAG,WAAW;EACrC,CAACD,0BAAY,CAACE,SAAS,GAAG,WAAW;EACrC,CAACF,0BAAY,CAACG,YAAY,GAAG;AAC/B,CAAC;;AAED;AACA,MAAMC,YAAY,GAAGA,CAACC,OAAiD,EAAEC,UAAqB,KAC5F,CAACC,UAAU,EAAEC,MAAM,KAAK;EACtB,MAAMC,IAAI,GAAGA,CAAA,KAAMC,MAAM,CAACC,GAAG,CAAC,CAAC;EAE/B,MAAMD,MAAM,GAAG,IAAIE,gBAAO,CAAc,MAAM;IAC5CJ,MAAM,CAACK,mBAAmB,CAAC,OAAO,EAAEJ,IAAI,CAAC;IACzC,KAAKK,OAAO,CAACC,UAAU,CAAC,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMD,OAAO,GAAGT,OAAO,CAACW,YAAY,CAAC;IACnCC,MAAM,EAAE,IAAAC,0BAAW,EAACX,UAAU,CAAC;IAC/BD,UAAU;IACVa,QAAQ,EAAEA,CAAC;MAAEC,EAAE;MAAEC;IAAK,CAAC,KAAK;MAC1B,MAAMC,OAAO,GAAGD,IAAmB;MAEnCX,MAAM,CAACa,IAAI,CAAC;QAAEC,IAAI,EAAE,SAAS;QAAEJ,EAAE,EAAE,IAAAK,qBAAa,EAACH,OAAO,CAAC,GAAGF,EAAE,GAAG,IAAI;QAAEE;MAAQ,CAAC,CAAC;IACnF,CAAC;IACDI,qBAAqB,EAAEA,CAAC;MAAEC;IAAO,CAAC,KAAK;MACrC,MAAMC,MAAM,GAAG7B,QAAQ,CAAC4B,MAAM,CAAC;MAE/B,IAAIC,MAAM,EAAE;QACVlB,MAAM,CAACa,IAAI,CAAC;UAAEC,IAAI,EAAE,QAAQ;UAAEG,MAAM,EAAEC;QAAO,CAAC,CAAC;MACjD;MACA,IAAID,MAAM,KAAK3B,0BAAY,CAACG,YAAY,EAAE;QACxCO,MAAM,CAACC,GAAG,CAAC,CAAC;MACd;IACF,CAAC;IACDkB,OAAO,EAAEA,CAAC;MAAEC;IAAM,CAAC,KAAKpB,MAAM,CAACa,IAAI,CAAC;MAAEC,IAAI,EAAE,OAAO;MAAEM,KAAK,EAAE,IAAAC,uBAAY,EAACD,KAAK;IAAE,CAAC,CAAC;IAClFE,iBAAiB,EAAEA,CAAC;MAAER,IAAI;MAAES;IAAU,CAAC,KAAK;MAC1C,IAAIT,IAAI,KAAK,WAAW,EAAE;QACxBd,MAAM,CAACa,IAAI,CAAC;UAAEC,IAAI,EAAE,WAAW;UAAES,SAAS,EAAEA,SAAS,IAAI,IAAI;UAAExB,IAAI,EAAEA,CAAA,KAAMK,OAAO,CAACoB,aAAa,CAAC;QAAE,CAAC,CAAC;MACvG;IACF;EACF,CAAC,CAAC;EAEF1B,MAAM,CAAC2B,gBAAgB,CAAC,OAAO,EAAE1B,IAAI,EAAE;IAAE2B,IAAI,EAAE;EAAK,CAAC,CAAC;EACtDtB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAACC,KAAK,CAAER,KAAc,IAAKpB,MAAM,CAAC6B,IAAI,CAAC,IAAAR,uBAAY,EAACD,KAAK,CAAC,CAAC,CAAC;EAE7E,OAAOpB,MAAM;AACf,CAAC;AAAC8B,OAAA,CAAApC,YAAA,GAAAA,YAAA","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ const endedBeforeConnecting = () => new _errors.BluetoothError("connection-faile
|
|
|
11
11
|
/** One driver run per connected device, its events folded into the snapshot. */
|
|
12
12
|
class Connections {
|
|
13
13
|
sessions = new Map();
|
|
14
|
+
recordingStops = new Map();
|
|
14
15
|
constructor(store, readings, policy, onEnded) {
|
|
15
16
|
this.store = store;
|
|
16
17
|
this.readings = readings;
|
|
@@ -36,6 +37,21 @@ class Connections {
|
|
|
36
37
|
await session?.ended;
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Stops the recording a connected device holds open.
|
|
42
|
+
*
|
|
43
|
+
* @throws BluetoothError `no-open-recording` when the device holds none.
|
|
44
|
+
*/
|
|
45
|
+
async stopRecording(id) {
|
|
46
|
+
const stop = this.recordingStops.get(id);
|
|
47
|
+
if (!stop || !this.store.device(id)?.recording) {
|
|
48
|
+
throw new _errors.BluetoothError("no-open-recording", "The device holds no open recording to stop");
|
|
49
|
+
}
|
|
50
|
+
await stop().catch(error => {
|
|
51
|
+
throw (0, _errors.asBluetoothError)(error, "no-open-recording");
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
39
55
|
/** Disconnects every device; resolves once every connection has ended. */
|
|
40
56
|
async disconnectAll() {
|
|
41
57
|
await Promise.all([...this.sessions.keys()].map(id => this.disconnect(id)));
|
|
@@ -71,6 +87,10 @@ class Connections {
|
|
|
71
87
|
failConnecting(failure);
|
|
72
88
|
}).finally(() => {
|
|
73
89
|
this.sessions.delete(id);
|
|
90
|
+
this.recordingStops.delete(id);
|
|
91
|
+
this.store.updateDevice(id, {
|
|
92
|
+
recording: undefined
|
|
93
|
+
});
|
|
74
94
|
this.onEnded(id);
|
|
75
95
|
});
|
|
76
96
|
const session = {
|
|
@@ -98,6 +118,11 @@ class Connections {
|
|
|
98
118
|
this.store.updateDevice(id, {
|
|
99
119
|
information: event.information
|
|
100
120
|
});
|
|
121
|
+
} else if (event.kind === "recording") {
|
|
122
|
+
this.recordingStops.set(id, event.stop);
|
|
123
|
+
this.store.updateDevice(id, {
|
|
124
|
+
recording: event.recording ?? undefined
|
|
125
|
+
});
|
|
101
126
|
} else if (event.kind === "reading") {
|
|
102
127
|
const device = this.store.device(id);
|
|
103
128
|
if (device) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","
|
|
1
|
+
{"version":3,"names":["_errors","require","_resultPolicy","endedBeforeConnecting","BluetoothError","Connections","sessions","Map","recordingStops","constructor","store","readings","policy","onEnded","isActive","id","has","connect","peripheral","driver","current","get","controller","signal","aborted","ended","start","connected","disconnect","session","abort","stopRecording","stop","device","recording","catch","error","asBluetoothError","disconnectAll","Promise","all","keys","map","AbortController","markConnected","undefined","failConnecting","resolve","reject","updateDevice","connection","run","then","failure","finally","delete","set","event","keepReadings","apply","kind","status","information","receive","reading","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/connections.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_stableHash","require","isTimestamped","reading","temporal","recordedAt","start","end","some","value","Date","exports","readingId","key","peripheral","stableHash","id","gattDriver","protocol","signal","link","openLink","kind","status","deviceInformation","information","close"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/driver.ts"],"mappings":";;;;;;AAKA,IAAAA,WAAA,GAAAC,OAAA;AAGA;;AAiDA;;AAGA;;AAGA;AACA,MAAMC,aAAa,GAAIC,OAAoB,IAAc;EACvD,MAAMC,QAAQ,GAAGD,OAAmE;EAEpF,OAAO,CAACC,QAAQ,CAACC,UAAU,EAAED,QAAQ,CAACE,KAAK,EAAEF,QAAQ,CAACG,GAAG,CAAC,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,YAAYC,IAAI,CAAC;AACnG,CAAC;;AAED;AAAAC,OAAA,CAAAT,aAAA,GAAAA,aAAA;AACA,MAAMU,SAAS,GAAGA,CAACC,GAAW,EAAEC,UAAsB,EAAEX,OAAoB,KAC1ED,aAAa,CAACC,OAAO,CAAC,GAAG,QAAQ,IAAAY,sBAAU,EAAC;EAAEF,GAAG;EAAEC,UAAU,EAAEA,UAAU,CAACE,EAAE;EAAEb;AAAQ,CAAC,CAAC,EAAE,GAAG,IAAI;;AAEnG;AACA,MAAMc,UAAU,GAAGA,CAACJ,GAAW,EAAEK,QAAwB,KACvD,iBAAiBJ,UAAU,EAAEK,MAAM,EAAE;EACnC,MAAMC,IAAI,GAAG,MAAMN,UAAU,CAACO,QAAQ,CAACF,MAAM,CAAC;EAE9C,IAAI;IACF,MAAM;MAAEG,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAY,CAAC;IAC7C,IAAIH,IAAI,CAACI,iBAAiB,EAAE;MAC1B,MAAM;QAAEF,IAAI,EAAE,aAAa;QAAEG,WAAW,EAAEL,IAAI,CAACI;MAAkB,CAAC;IACpE;IACA,WAAW,MAAMrB,OAAO,IAAIe,QAAQ,CAACE,IAAI,CAAC,EAAE;MAC1C,MAAM;QAAEE,IAAI,EAAE,SAAS;QAAEN,EAAE,EAAEJ,SAAS,CAACC,GAAG,EAAEC,UAAU,EAAEX,OAAO,CAAC;QAAEA;MAAQ,CAAC;IAC7E;IACA,MAAM;MAAEmB,IAAI,EAAE,QAAQ;MAAEC,MAAM,EAAE;IAAe,CAAC;EAClD,CAAC,SAAS;IACR,MAAMH,IAAI,CAACM,KAAK,CAAC,CAAC;EACpB;AACF,CAAC;AAACf,OAAA,CAAAM,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BluetoothError","Error","name","constructor","code","message","cause","exports","asBluetoothError","error","String"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/errors.ts"],"mappings":";;;;;;AAAA;;
|
|
1
|
+
{"version":3,"names":["BluetoothError","Error","name","constructor","code","message","cause","exports","asBluetoothError","error","String"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/errors.ts"],"mappings":";;;;;;AAAA;;AAkBA;AACA,MAAMA,cAAc,SAASC,KAAK,CAAC;EACjC;EACgBC,IAAI,GAAG,gBAAgB;EAEhCC,WAAWA,CAEhB;EACgBC,IAAwB,EACxCC,OAAe,EACfC,KAAe,EACf;IACA,KAAK,CAACD,OAAO,EAAE;MAAEC;IAAM,CAAC,CAAC;IAAC,KAJVF,IAAwB,GAAxBA,IAAwB;EAK1C;AACF;;AAEA;AAAAG,OAAA,CAAAP,cAAA,GAAAA,cAAA;AACA,MAAMQ,gBAAgB,GAAGA,CAACC,KAAc,EAAEL,IAAwB,KAChEK,KAAK,YAAYT,cAAc,GAC3BS,KAAK,GACL,IAAIT,cAAc,CAACI,IAAI,EAAEK,KAAK,YAAYR,KAAK,GAAGQ,KAAK,CAACJ,OAAO,GAAGK,MAAM,CAACD,KAAK,CAAC,EAAEA,KAAK,CAAC;AAACF,OAAA,CAAAC,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -13,6 +13,8 @@ var _readings = require("./readings.js");
|
|
|
13
13
|
var _resultPolicy = require("./result-policy.js");
|
|
14
14
|
var _scanLoop = require("./scan-loop.js");
|
|
15
15
|
var _store = require("./store.js");
|
|
16
|
+
/* eslint-disable max-lines */
|
|
17
|
+
|
|
16
18
|
/** What a `BluetoothRuntime` is built from. */
|
|
17
19
|
|
|
18
20
|
/**
|
|
@@ -109,6 +111,17 @@ class BluetoothRuntime {
|
|
|
109
111
|
await this.connections.connect(peripheral, match.driver);
|
|
110
112
|
}
|
|
111
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Stops the recording a connected recorder holds open, for instance once the user confirms it while
|
|
116
|
+
* its `recording.leadOffSince` is set. The stored recording then arrives as a reading.
|
|
117
|
+
*
|
|
118
|
+
* @throws BluetoothError `no-open-recording` when the device holds none; `runtime-disposed` after `dispose`.
|
|
119
|
+
*/
|
|
120
|
+
async stopRecording(deviceId) {
|
|
121
|
+
this.assertLive();
|
|
122
|
+
await this.connections.stopRecording(deviceId);
|
|
123
|
+
}
|
|
124
|
+
|
|
112
125
|
/** Disconnects a device; a paired one stays disconnected until `connect` or `pair` is called again. */
|
|
113
126
|
async disconnect(deviceId) {
|
|
114
127
|
this.held.add(deviceId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_autoConnect","require","_connections","_devices","_errors","_paired","_readings","_resultPolicy","_scanLoop","_store","BluetoothRuntime","store","SnapshotStore","known","Map","held","Set","backoff","AutoConnectBackoff","retryTimers","scanRequest","disposed","constructor","options","readings","ReadingLog","sink","connections","Connections","resultPolicy","everyReading","id","connectionEnded","paired","PairedDevices","set","pairedStorage","scan","ScanLoop","scanner","peripheral","found","unwatchAdapter","watchState","adapter","sync","checkPermission","catch","undefined","getSnapshot","get","subscribe","listener","recordPermission","permissions","check","requestPermission","request","openPermissionSettings","openSettings","startScan","assertLive","permission","BluetoothError","scanning","stopScan","connect","deviceId","match","delete","driver","disconnect","add","pair","forget","remove","retrySaves","dispose","close","forEach","clearTimeout","disconnectAll","matchDevice","devices","advertisement","device","key","name","connection","error","connectIfPaired","waiting","has","isActive","allows","succeeded","restartScan","timer","setTimeout","failed","running","restart","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/runtime.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_autoConnect","require","_connections","_devices","_errors","_paired","_readings","_resultPolicy","_scanLoop","_store","BluetoothRuntime","store","SnapshotStore","known","Map","held","Set","backoff","AutoConnectBackoff","retryTimers","scanRequest","disposed","constructor","options","readings","ReadingLog","sink","connections","Connections","resultPolicy","everyReading","id","connectionEnded","paired","PairedDevices","set","pairedStorage","scan","ScanLoop","scanner","peripheral","found","unwatchAdapter","watchState","adapter","sync","checkPermission","catch","undefined","getSnapshot","get","subscribe","listener","recordPermission","permissions","check","requestPermission","request","openPermissionSettings","openSettings","startScan","assertLive","permission","BluetoothError","scanning","stopScan","connect","deviceId","match","delete","driver","stopRecording","disconnect","add","pair","forget","remove","retrySaves","dispose","close","forEach","clearTimeout","disconnectAll","matchDevice","devices","advertisement","device","key","name","connection","error","connectIfPaired","waiting","has","isActive","allows","succeeded","restartScan","timer","setTimeout","failed","running","restart","exports"],"sourceRoot":"../../../../../src","sources":["modules/next/bluetooth/runtime.ts"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAEA,IAAAK,SAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAP,OAAA;AAGA,IAAAQ,MAAA,GAAAR,OAAA;AAdA;;AAiBA;;AAwBA;AACA;AACA;AACA;AACA,MAAMS,gBAAgB,CAAC;EACJC,KAAK,GAAG,IAAIC,oBAAa,CAAC,CAAC;EAC3BC,KAAK,GAAG,IAAIC,GAAG,CAAsB,CAAC;EACtCC,IAAI,GAAG,IAAIC,GAAG,CAAS,CAAC;EACxBC,OAAO,GAAG,IAAIC,+BAAkB,CAAC,CAAC;EAClCC,WAAW,GAAG,IAAIH,GAAG,CAAgC,CAAC;EAM/DI,WAAW,GAAG,CAAC;EACfC,QAAQ,GAAG,KAAK;EAEjBC,WAAWA,CAAkBC,OAAgC,EAAE;IAAA,KAAlCA,OAAgC,GAAhCA,OAAgC;IAClE,IAAI,CAACC,QAAQ,GAAG,IAAIC,oBAAU,CAAC,IAAI,CAACd,KAAK,EAAEY,OAAO,CAACG,IAAI,CAAC;IACxD,IAAI,CAACC,WAAW,GAAG,IAAIC,wBAAW,CAAC,IAAI,CAACjB,KAAK,EAAE,IAAI,CAACa,QAAQ,EAAED,OAAO,CAACM,YAAY,IAAIC,0BAAY,EAAGC,EAAE,IACrG,IAAI,CAACC,eAAe,CAACD,EAAE,CAAC,CAAC;IAC3B,IAAI,CAACE,MAAM,GAAG,IAAIC,qBAAa,CAAED,MAAM,IAAK,IAAI,CAACtB,KAAK,CAACwB,GAAG,CAAC;MAAEF;IAAO,CAAC,CAAC,EAAEV,OAAO,CAACa,aAAa,CAAC;IAC9F,IAAI,CAACC,IAAI,GAAG,IAAIC,kBAAQ,CAACf,OAAO,CAACgB,OAAO,EAAE,IAAI,CAAC5B,KAAK,EAAG6B,UAAU,IAAK,IAAI,CAACC,KAAK,CAACD,UAAU,CAAC,CAAC;IAC7F,IAAI,CAACE,cAAc,GAAGnB,OAAO,CAACgB,OAAO,CAACI,UAAU,CAAEC,OAAO,IAAK;MAC5D,IAAI,CAACjC,KAAK,CAACwB,GAAG,CAAC;QAAES;MAAQ,CAAC,CAAC;MAC3B,IAAI,CAACP,IAAI,CAACQ,IAAI,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,IAAI,CAACC,eAAe,CAAC,CAAC,CAACC,KAAK,CAAC,MAAMC,SAAS,CAAC;EACpD;;EAEA;EACOC,WAAW,GAAGA,CAAA,KAAyB,IAAI,CAACtC,KAAK,CAACuC,GAAG,CAAC,CAAC;;EAE9D;EACOC,SAAS,GAAIC,QAAoB,IAAmB,IAAI,CAACzC,KAAK,CAACwC,SAAS,CAACC,QAAQ,CAAC;;EAEzF;EACA,MAAaN,eAAeA,CAAA,EAAiC;IAC3D,OAAO,IAAI,CAACO,gBAAgB,CAAC,MAAM,IAAI,CAAC9B,OAAO,CAAC+B,WAAW,CAACC,KAAK,CAAC,CAAC,CAAC;EACtE;;EAEA;EACA,MAAaC,iBAAiBA,CAAA,EAAiC;IAC7D,OAAO,IAAI,CAACH,gBAAgB,CAAC,MAAM,IAAI,CAAC9B,OAAO,CAAC+B,WAAW,CAACG,OAAO,CAAC,CAAC,CAAC;EACxE;;EAEA;EACOC,sBAAsBA,CAAA,EAAkB;IAC7C,OAAO,IAAI,CAACnC,OAAO,CAAC+B,WAAW,CAACK,YAAY,CAAC,CAAC;EAChD;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAaC,SAASA,CAAA,EAAkB;IACtC,IAAI,CAACC,UAAU,CAAC,CAAC;IAEjB,MAAMJ,OAAO,GAAG,EAAE,IAAI,CAACrC,WAAW;IAClC,MAAM0C,UAAU,GAAG,IAAI,CAACnD,KAAK,CAACuC,GAAG,CAAC,CAAC,CAACY,UAAU,KAAK,SAAS,GAAG,SAAS,GAAG,MAAM,IAAI,CAACN,iBAAiB,CAAC,CAAC;IAEzG,IAAIM,UAAU,KAAK,SAAS,EAAE;MAC5B,MAAM,IAAIC,sBAAc,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;IACtF;IACA,IAAIN,OAAO,KAAK,IAAI,CAACrC,WAAW,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;MAClD,IAAI,CAACV,KAAK,CAACwB,GAAG,CAAC;QAAE6B,QAAQ,EAAE;MAAK,CAAC,CAAC;MAClC,IAAI,CAAC3B,IAAI,CAACQ,IAAI,CAAC,CAAC;IAClB;EACF;;EAEA;EACOoB,QAAQA,CAAA,EAAS;IACtB,IAAI,CAAC7C,WAAW,IAAI,CAAC;IACrB,IAAI,CAACT,KAAK,CAACwB,GAAG,CAAC;MAAE6B,QAAQ,EAAE;IAAM,CAAC,CAAC;IACnC,IAAI,CAAC3B,IAAI,CAACQ,IAAI,CAAC,CAAC;EAClB;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAaqB,OAAOA,CAACC,QAAgB,EAAiB;IACpD,IAAI,CAACN,UAAU,CAAC,CAAC;IAEjB,MAAM;MAAErB,UAAU;MAAE4B;IAAM,CAAC,GAAG,IAAI,CAACnE,OAAO,CAACkE,QAAQ,CAAC;IAEpD,IAAI,CAACpD,IAAI,CAACsD,MAAM,CAACF,QAAQ,CAAC;IAC1B,MAAM,IAAI,CAACxC,WAAW,CAACuC,OAAO,CAAC1B,UAAU,EAAE4B,KAAK,CAACE,MAAM,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAaC,aAAaA,CAACJ,QAAgB,EAAiB;IAC1D,IAAI,CAACN,UAAU,CAAC,CAAC;IACjB,MAAM,IAAI,CAAClC,WAAW,CAAC4C,aAAa,CAACJ,QAAQ,CAAC;EAChD;;EAEA;EACA,MAAaK,UAAUA,CAACL,QAAgB,EAAiB;IACvD,IAAI,CAACpD,IAAI,CAAC0D,GAAG,CAACN,QAAQ,CAAC;IACvB,MAAM,IAAI,CAACxC,WAAW,CAAC6C,UAAU,CAACL,QAAQ,CAAC;EAC7C;;EAEA;EACA,MAAaO,IAAIA,CAACP,QAAgB,EAAiB;IACjD,IAAI,CAAClE,OAAO,CAACkE,QAAQ,CAAC;IACtB,MAAM,IAAI,CAAClC,MAAM,CAACwC,GAAG,CAACN,QAAQ,CAAC;IAC/B,MAAM,IAAI,CAACD,OAAO,CAACC,QAAQ,CAAC;EAC9B;;EAEA;EACA,MAAaQ,MAAMA,CAACR,QAAgB,EAAiB;IACnD,MAAM,IAAI,CAAClC,MAAM,CAAC2C,MAAM,CAACT,QAAQ,CAAC;IAClC,MAAM,IAAI,CAACK,UAAU,CAACL,QAAQ,CAAC;EACjC;;EAEA;EACOU,UAAUA,CAAA,EAAkB;IACjC,OAAO,IAAI,CAACrD,QAAQ,CAACqD,UAAU,CAAC,CAAC;EACnC;;EAEA;EACA,MAAaC,OAAOA,CAAA,EAAkB;IACpC,IAAI,IAAI,CAACzD,QAAQ,EAAE;MACjB;IACF;IAEA,IAAI,CAAC4C,QAAQ,CAAC,CAAC;IACf,IAAI,CAAC5C,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACgB,IAAI,CAAC0C,KAAK,CAAC,CAAC;IACjB,IAAI,CAACrC,cAAc,CAAC,CAAC;IACrB,IAAI,CAACvB,WAAW,CAAC6D,OAAO,CAACC,YAAY,CAAC;IACtC,MAAM,IAAI,CAACtD,WAAW,CAACuD,aAAa,CAAC,CAAC;IACtC,IAAI,CAACvE,KAAK,CAACoE,KAAK,CAAC,CAAC;EACpB;EAEQ1B,gBAAgBA,CAACS,UAA+B,EAAuB;IAC7E,IAAI,CAACnD,KAAK,CAACwB,GAAG,CAAC;MAAE2B;IAAW,CAAC,CAAC;IAE9B,OAAOA,UAAU;EACnB;EAEQrB,KAAKA,CAACD,UAAsB,EAAQ;IAC1C,MAAM3B,KAAK,GAAG,IAAI,CAACA,KAAK,CAACqC,GAAG,CAACV,UAAU,CAACT,EAAE,CAAC;IAC3C,MAAMqC,KAAK,GAAGvD,KAAK,EAAEuD,KAAK,IAAI,IAAAe,oBAAW,EAAC,IAAI,CAAC5D,OAAO,CAAC6D,OAAO,EAAE5C,UAAU,CAAC6C,aAAa,CAAC;IAEzF,IAAI,CAACjB,KAAK,EAAE;MACV;IACF;IAEA,IAAI,CAACvD,KAAK,CAACsB,GAAG,CAACK,UAAU,CAACT,EAAE,EAAE;MAAES,UAAU;MAAE4B;IAAM,CAAC,CAAC;IACpD,IAAI,CAACvD,KAAK,EAAE;MACV,MAAMyE,MAAM,GAAG;QAAEvD,EAAE,EAAES,UAAU,CAACT,EAAE;QAAEwD,GAAG,EAAEnB,KAAK,CAACmB,GAAG;QAAEC,IAAI,EAAEhD,UAAU,CAAC6C,aAAa,CAACG;MAAK,CAAC;MAEzF,IAAI,CAAC7E,KAAK,CAACwB,GAAG,CAAC;QAAEiD,OAAO,EAAE,CAAC,GAAG,IAAI,CAACzE,KAAK,CAACuC,GAAG,CAAC,CAAC,CAACkC,OAAO,EAAE;UAAE,GAAGE,MAAM;UAAEG,UAAU,EAAE,MAAM;UAAEC,KAAK,EAAE;QAAK,CAAC;MAAE,CAAC,CAAC;IAC5G;IACA,IAAI,CAACC,eAAe,CAACnD,UAAU,CAACT,EAAE,CAAC;EACrC;EAEQ4D,eAAeA,CAAC5D,EAAU,EAAQ;IACxC,MAAM6D,OAAO,GAAG,IAAI,CAAC7E,IAAI,CAAC8E,GAAG,CAAC9D,EAAE,CAAC,IAAI,IAAI,CAACJ,WAAW,CAACmE,QAAQ,CAAC/D,EAAE,CAAC,IAAI,CAAC,IAAI,CAACd,OAAO,CAAC8E,MAAM,CAAChE,EAAE,CAAC;IAE9F,IAAI,IAAI,CAACE,MAAM,CAAC4D,GAAG,CAAC9D,EAAE,CAAC,IAAI,CAAC6D,OAAO,EAAE;MACnC,IAAI,CAAC1B,OAAO,CAACnC,EAAE,CAAC,CAACgB,KAAK,CAAC,MAAMC,SAAS,CAAC;IACzC;EACF;;EAEA;EACQhB,eAAeA,CAACD,EAAU,EAAQ;IACxC,IAAI,CAAC,IAAI,CAACE,MAAM,CAAC4D,GAAG,CAAC9D,EAAE,CAAC,IAAI,IAAI,CAAChB,IAAI,CAAC8E,GAAG,CAAC9D,EAAE,CAAC,IAAI,IAAI,CAACV,QAAQ,EAAE;MAC9D;IACF;IAEA,IAAI,IAAI,CAACV,KAAK,CAAC2E,MAAM,CAACvD,EAAE,CAAC,EAAE0D,UAAU,KAAK,QAAQ,EAAE;MAClD,IAAI,CAACxE,OAAO,CAAC+E,SAAS,CAACjE,EAAE,CAAC;MAC1B,IAAI,CAACkE,WAAW,CAAC,CAAC;MAElB;IACF;IAEA,MAAMC,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7B,IAAI,CAAChF,WAAW,CAACkD,MAAM,CAAC6B,KAAK,CAAC;MAC9B,IAAI,CAACD,WAAW,CAAC,CAAC;IACpB,CAAC,EAAE,IAAI,CAAChF,OAAO,CAACmF,MAAM,CAACrE,EAAE,CAAC,CAAC;IAE3B,IAAI,CAACZ,WAAW,CAACsD,GAAG,CAACyB,KAAK,CAAC;EAC7B;EAEQD,WAAWA,CAAA,EAAS;IAC1B,IAAI,IAAI,CAAC5D,IAAI,CAACgE,OAAO,EAAE;MACrB,IAAI,CAAChE,IAAI,CAACiE,OAAO,CAAC,CAAC;IACrB;EACF;EAEQrG,OAAOA,CAACkE,QAAgB,EAAe;IAC7C,MAAMmB,MAAM,GAAG,IAAI,CAACzE,KAAK,CAACqC,GAAG,CAACiB,QAAQ,CAAC;IAEvC,IAAI,CAACmB,MAAM,EAAE;MACX,MAAM,IAAIvB,sBAAc,CAAC,kBAAkB,EAAE,aAAaI,QAAQ,wBAAwB,CAAC;IAC7F;IAEA,OAAOmB,MAAM;EACf;EAEQzB,UAAUA,CAAA,EAAS;IACzB,IAAI,IAAI,CAACxC,QAAQ,EAAE;MACjB,MAAM,IAAI0C,sBAAc,CAAC,kBAAkB,EAAE,oCAAoC,CAAC;IACpF;EACF;AACF;AAACwC,OAAA,CAAA7F,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|