@ovok/native 1.6.15 → 1.6.16

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 (17) hide show
  1. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +39 -4
  2. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +39 -1
  4. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  5. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +39 -4
  6. package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
  7. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +39 -1
  8. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  9. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts +5 -0
  10. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  11. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts +7 -0
  12. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  13. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts +5 -0
  14. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
  15. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts +7 -0
  16. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  17. package/package.json +1 -1
@@ -6,8 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.BP2_ECG_MILLIVOLTS_PER_COUNT = exports.BP2Device = void 0;
7
7
  var _core = require("@ovok/core");
8
8
  var _BloodPressureStates = require("@ovok/core/dist/client/observation/types/measurement/BloodPressureStates");
9
+ var _sentryLogger = require("../../../../helpers/utils/sentry-logger.js");
9
10
  var _bloodPressureTranslatedExceptionMap = require("../../../constants/blood-pressure-translated-exception-map.js");
10
11
  var _caseType = require("../../../types/case-type.js");
12
+ var _deviceStatus = require("../../../types/device-status.js");
11
13
  var _hexToByte = require("../../../utils/hex-to-byte.js");
12
14
  var _i16FromHex = require("../../../utils/i-16-from-hex.js");
13
15
  var _le16FromHex = require("../../../utils/le-16-from-hex.js");
@@ -27,16 +29,23 @@ const BP2_PREFERRED_MTU = 247;
27
29
 
28
30
  /** BP2 ECG waveform resolution from the device protocol. */
29
31
  const BP2_ECG_MILLIVOLTS_PER_COUNT = exports.BP2_ECG_MILLIVOLTS_PER_COUNT = 0.003098;
32
+ const BP2_ECG_SAMPLES_PER_SECOND = 250;
33
+ const BP2_ECG_SAMPLE_TOLERANCE = BP2_ECG_SAMPLES_PER_SECOND;
30
34
  class BP2Device extends _btManagedDevice.BTManagedDevice {
31
35
  collectedValues = [];
32
36
  diagramPoints = [];
33
37
  duration = 0;
34
38
  historyMode = false;
35
39
  historyRequested = false;
40
+ orphanHistoryMode = false;
36
41
  pendingResults = new Map();
37
42
  reportedFileNames = new Set();
38
43
  mainServices = _bp2MainServices.bp2MainServices;
39
44
  stuckDataTimeout = 5_000;
45
+ constructor(device, params) {
46
+ super(device, params);
47
+ this.deliveredEcgFileNames = new Set(params.deliveredEcgFileNames ?? []);
48
+ }
40
49
  onStreamStart = () => {
41
50
  this.collectedValues = [];
42
51
  this.diagramPoints = [];
@@ -46,6 +55,7 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
46
55
  createCommandSequencer = () => {
47
56
  this.historyMode = true;
48
57
  this.historyRequested = false;
58
+ this.orphanHistoryMode = false;
49
59
  this.lastLiveResultSignature = undefined;
50
60
  this.pendingResults.clear();
51
61
  this.reportedFileNames.clear();
@@ -62,7 +72,11 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
62
72
  shouldStartTransfer: () => this.historyRequested,
63
73
  onTransferRequested: () => {
64
74
  this.historyRequested = false;
65
- }
75
+ },
76
+ onOrphanStreamEnd: () => {
77
+ this.orphanHistoryMode = true;
78
+ },
79
+ skipFiles: this.deliveredEcgFileNames
66
80
  });
67
81
  };
68
82
  frameReader = new _bp2FrameReader.BP2FrameReader();
@@ -111,7 +125,19 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
111
125
  const data = this.collectedValues.slice(dataStart, dataEnd);
112
126
 
113
127
  // Duration + special_status + pulse_rate + reserved[10]
114
- this.duration = (0, _le32FromHex.le32FromHex)(data, 0x0a);
128
+ const duration = (0, _le32FromHex.le32FromHex)(data, 0x0a);
129
+ if (duration < this.duration) {
130
+ const droppedSamples = this.diagramPoints.length;
131
+ (0, _sentryLogger.sentryLogger)("info", "BT_MANAGER: BP2 ECG stream restarted", {
132
+ deviceId: this.deviceData.id,
133
+ previousDuration: this.duration,
134
+ duration,
135
+ droppedSamples
136
+ });
137
+ this.diagramPoints = [];
138
+ this.onDeviceStatusChanged?.(_deviceStatus.DeviceStatus.MEASURING, _core.MeasurementTypeKey.ecg);
139
+ }
140
+ this.duration = duration;
115
141
 
116
142
  // sampling_num at data[0x1E..0x1F] ➜ Waveform.sampling_num :contentReference[oaicite:10]{index=10}
117
143
  const samplingNum = (0, _le16FromHex.le16FromHex)(data, 0x1e);
@@ -182,7 +208,8 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
182
208
  return;
183
209
  }
184
210
  const pending = this.pendingResults.get(decoded.measurementTypeKey);
185
- if (!pending || !this.matchesPendingResult(pending, decoded)) {
211
+ const isOrphanEcg = this.orphanHistoryMode && decoded.measurementTypeKey === _core.MeasurementTypeKey.ecg;
212
+ if (!isOrphanEcg && (!pending || !this.matchesPendingResult(pending, decoded))) {
186
213
  return;
187
214
  }
188
215
  this.reportedFileNames.add(file.name);
@@ -237,7 +264,15 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
237
264
  if (ecgMeasurement.duration === undefined || ecgMeasurement.duration < 10) {
238
265
  return "feedback-messages.measurement.insufficient-data-length";
239
266
  }
240
- if (ecgMeasurement.diagramPoints.length === 0 || ecgMeasurement.diagramPoints.length < 3500) {
267
+ if (ecgMeasurement.diagramPoints.length === 0) {
268
+ return "feedback-messages.measurement.insufficient-data-length";
269
+ }
270
+ if (ecgMeasurement.duration > 0) {
271
+ const expectedSamples = ecgMeasurement.duration * BP2_ECG_SAMPLES_PER_SECOND;
272
+ if (ecgMeasurement.diagramPoints.length < expectedSamples - BP2_ECG_SAMPLE_TOLERANCE || ecgMeasurement.diagramPoints.length > expectedSamples + BP2_ECG_SAMPLE_TOLERANCE) {
273
+ return "feedback-messages.measurement.insufficient-data-length";
274
+ }
275
+ } else if (ecgMeasurement.diagramPoints.length < 3500) {
241
276
  return "feedback-messages.measurement.insufficient-data-length";
242
277
  }
243
278
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["_core","require","_BloodPressureStates","_bloodPressureTranslatedExceptionMap","_caseType","_hexToByte","_i16FromHex","_le16FromHex","_le32FromHex","_btManagedDevice","_bp2Files","_bp2FrameReader","_bp2HistorySequencer","_bp2MainServices","BP2_PREFERRED_MTU","BP2_ECG_MILLIVOLTS_PER_COUNT","exports","BP2Device","BTManagedDevice","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","Set","mainServices","bp2MainServices","stuckDataTimeout","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","BP2HistorySequencer","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","frameReader","BP2FrameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","MeasurementTypeKey","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","CaseType","RESULT","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","hexToByte","lenH","dataLen","dataStart","dataEnd","data","slice","le32FromHex","samplingNum","le16FromHex","samplesStart","i","byteIndexInData","sampleVal","i16FromHex","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","diastolic","systolic","heartRate","BloodPressureStates","REGULAR","errorString","bloodPressureTranslatedExceptionMap","get","DEVICE_ERROR","result","signature","signatureFor","set","join","diagnosticResult","file","has","name","decoded","decodeBP2File","content","pending","matchesPendingResult","add","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","ecgMeasurement","EcgDiagnosticFlag","POOR_WAVEFORM","LEAD_OFF","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_BloodPressureStates","_sentryLogger","_bloodPressureTranslatedExceptionMap","_caseType","_deviceStatus","_hexToByte","_i16FromHex","_le16FromHex","_le32FromHex","_btManagedDevice","_bp2Files","_bp2FrameReader","_bp2HistorySequencer","_bp2MainServices","BP2_PREFERRED_MTU","BP2_ECG_MILLIVOLTS_PER_COUNT","exports","BP2_ECG_SAMPLES_PER_SECOND","BP2_ECG_SAMPLE_TOLERANCE","BP2Device","BTManagedDevice","collectedValues","diagramPoints","duration","historyMode","historyRequested","orphanHistoryMode","pendingResults","Map","reportedFileNames","Set","mainServices","bp2MainServices","stuckDataTimeout","constructor","device","params","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","BP2HistorySequencer","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","frameReader","BP2FrameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","MeasurementTypeKey","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","CaseType","RESULT","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","hexToByte","lenH","dataLen","dataStart","dataEnd","data","slice","le32FromHex","droppedSamples","length","sentryLogger","deviceId","deviceData","id","previousDuration","onDeviceStatusChanged","DeviceStatus","MEASURING","samplingNum","le16FromHex","samplesStart","i","byteIndexInData","sampleVal","i16FromHex","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","diastolic","systolic","heartRate","BloodPressureStates","REGULAR","errorString","bloodPressureTranslatedExceptionMap","get","DEVICE_ERROR","result","signature","signatureFor","set","join","diagnosticResult","file","has","name","decoded","decodeBP2File","content","pending","isOrphanEcg","matchesPendingResult","add","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","ecgMeasurement","EcgDiagnosticFlag","POOR_WAVEFORM","LEAD_OFF","expectedSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
@@ -4,14 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.BP2_REALTIME_COMMAND = exports.BP2HistorySequencer = void 0;
7
+ var _sentryLogger = require("../../../../helpers/utils/sentry-logger.js");
7
8
  var _hexToByte = require("../../../utils/hex-to-byte.js");
8
9
  var _lepuCommandBuilder = require("../lepu/lepu.command-builder.js");
9
10
  var _lepuFileTransfer = require("../lepu/lepu.file-transfer.js");
10
11
  const BP2_REALTIME_COMMAND = exports.BP2_REALTIME_COMMAND = 0x08;
11
12
  const BP2_RESULT_STATES = new Set(["05", "07", "11"]);
13
+ const BP2_ECG_STATE = "06";
14
+ const BP2_IDLE_STATES = new Set(["00", "01", "03"]);
12
15
  /** Reads BP2 history only after a realtime result asks for its device timestamp. */
13
16
  class BP2HistorySequencer {
14
17
  builder = new _lepuCommandBuilder.LepuCommandBuilder();
18
+ lastRunStatusFrameCount = 0;
19
+ realtimeEcgActive = false;
15
20
  constructor(params) {
16
21
  this.params = params;
17
22
  }
@@ -21,7 +26,16 @@ class BP2HistorySequencer {
21
26
  if (this.transfer) {
22
27
  return this.transfer.nextCommand(frame);
23
28
  }
24
- if (this.params.shouldStartTransfer() && this.isResultFrame(frame)) {
29
+ this.logRunStatus(frame);
30
+ const isResult = this.isResultFrame(frame);
31
+ const endedWithoutResult = this.realtimeEcgActive && this.isIdleFrame(frame);
32
+ if (isResult) {
33
+ this.realtimeEcgActive = false;
34
+ } else if (endedWithoutResult) {
35
+ this.realtimeEcgActive = false;
36
+ this.params.onOrphanStreamEnd();
37
+ }
38
+ if (this.params.shouldStartTransfer() || endedWithoutResult) {
25
39
  this.params.onTransferRequested();
26
40
  return this.startTransfer();
27
41
  }
@@ -33,6 +47,7 @@ class BP2HistorySequencer {
33
47
  builder: this.builder,
34
48
  onFile: this.params.onFile,
35
49
  onError: this.params.onError,
50
+ skipFiles: this.params.skipFiles,
36
51
  afterTransfer: this.finishTransfer
37
52
  });
38
53
  return this.transfer.initialCommands();
@@ -47,6 +62,29 @@ class BP2HistorySequencer {
47
62
  frame: this.builder.build(BP2_REALTIME_COMMAND)
48
63
  });
49
64
  isResultFrame = frame => (0, _hexToByte.hexToByte)(frame[1] ?? "0") === BP2_REALTIME_COMMAND && BP2_RESULT_STATES.has((frame[7] ?? "").toLowerCase());
65
+ isIdleFrame = frame => (0, _hexToByte.hexToByte)(frame[1] ?? "0") === BP2_REALTIME_COMMAND && BP2_IDLE_STATES.has((frame[7] ?? "").toLowerCase());
66
+ logRunStatus = frame => {
67
+ if ((0, _hexToByte.hexToByte)(frame[1] ?? "0") !== BP2_REALTIME_COMMAND) {
68
+ return;
69
+ }
70
+ const runStatus = (frame[7] ?? "").toLowerCase();
71
+ if (runStatus === BP2_ECG_STATE) {
72
+ this.realtimeEcgActive = true;
73
+ }
74
+ if (runStatus === this.lastRunStatus) {
75
+ this.lastRunStatusFrameCount++;
76
+ return;
77
+ }
78
+ if (this.lastRunStatus !== undefined) {
79
+ (0, _sentryLogger.sentryLogger)("info", "BT_MANAGER: BP2 run status changed", {
80
+ from: this.lastRunStatus,
81
+ to: runStatus,
82
+ previousFrameCount: this.lastRunStatusFrameCount
83
+ });
84
+ }
85
+ this.lastRunStatus = runStatus;
86
+ this.lastRunStatusFrameCount = 1;
87
+ };
50
88
  }
51
89
  exports.BP2HistorySequencer = BP2HistorySequencer;
52
90
  //# sourceMappingURL=bp2.history-sequencer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_hexToByte","require","_lepuCommandBuilder","_lepuFileTransfer","BP2_REALTIME_COMMAND","exports","BP2_RESULT_STATES","Set","BP2HistorySequencer","builder","LepuCommandBuilder","constructor","params","initialCommands","pollCommand","isHistoryTransfer","nextCommand","frame","transfer","shouldStartTransfer","isResultFrame","onTransferRequested","startTransfer","undefined","LepuFileTransfer","write","onFile","onError","afterTransfer","finishTransfer","onTransferFinished","build","hexToByte","has","toLowerCase"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":";;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEA,MAAMG,oBAAoB,GAAAC,OAAA,CAAAD,oBAAA,GAAG,IAAI;AACjC,MAAME,iBAAiB,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAWrD;AACA,MAAMC,mBAAmB,CAA6B;EACnCC,OAAO,GAAG,IAAIC,sCAAkB,CAAC,CAAC;EAG5CC,WAAWA,CAAkBC,MAAiC,EAAE;IAAA,KAAnCA,MAAiC,GAAjCA,MAAiC;EAAG;EAEjEC,eAAe,GAAGA,CAAA,KAAgC,CACvD,IAAI,CAACC,WAAW,CAAC,CAAC,CACnB;EAEMC,iBAAiB,GAAGA,CAAA,KAAe,IAAI;EAEvCC,WAAW,GAChBC,KAAwB,IACiB;IACzC,IAAI,IAAI,CAACC,QAAQ,EAAE;MACjB,OAAO,IAAI,CAACA,QAAQ,CAACF,WAAW,CAACC,KAAK,CAAC;IACzC;IAEA,IACE,IAAI,CAACL,MAAM,CAACO,mBAAmB,CAAC,CAAC,IACjC,IAAI,CAACC,aAAa,CAACH,KAAK,CAAC,EACzB;MACA,IAAI,CAACL,MAAM,CAACS,mBAAmB,CAAC,CAAC;MAEjC,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC;IAC7B;IAEA,OAAOC,SAAS;EAClB,CAAC;EAEOD,aAAa,GAAGA,CAAA,KAAgC;IACtD,IAAI,CAACJ,QAAQ,GAAG,IAAIM,kCAAgB,CAAC;MACnCC,KAAK,EAAE,IAAI,CAACb,MAAM,CAACa,KAAK;MACxBhB,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBiB,MAAM,EAAE,IAAI,CAACd,MAAM,CAACc,MAAM;MAC1BC,OAAO,EAAE,IAAI,CAACf,MAAM,CAACe,OAAO;MAC5BC,aAAa,EAAE,IAAI,CAACC;IACtB,CAAC,CAAC;IAEF,OAAO,IAAI,CAACX,QAAQ,CAACL,eAAe,CAAC,CAAC;EACxC,CAAC;EAEOgB,cAAc,GAAGA,CAAA,KAAgC;IACvD,IAAI,CAACX,QAAQ,GAAGK,SAAS;IACzB,IAAI,CAACX,MAAM,CAACkB,kBAAkB,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,CAAChB,WAAW,CAAC,CAAC,CAAC;EAC7B,CAAC;EAEOA,WAAW,GAAGA,CAAA,MAAsB;IAC1C,GAAG,IAAI,CAACF,MAAM,CAACa,KAAK;IACpBR,KAAK,EAAE,IAAI,CAACR,OAAO,CAACsB,KAAK,CAAC3B,oBAAoB;EAChD,CAAC,CAAC;EAEMgB,aAAa,GAAIH,KAAwB,IAC/C,IAAAe,oBAAS,EAACf,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAKb,oBAAoB,IACnDE,iBAAiB,CAAC2B,GAAG,CAAC,CAAChB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAEiB,WAAW,CAAC,CAAC,CAAC;AACzD;AAAC7B,OAAA,CAAAG,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_sentryLogger","require","_hexToByte","_lepuCommandBuilder","_lepuFileTransfer","BP2_REALTIME_COMMAND","exports","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2HistorySequencer","builder","LepuCommandBuilder","lastRunStatusFrameCount","realtimeEcgActive","constructor","params","initialCommands","pollCommand","isHistoryTransfer","nextCommand","frame","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","startTransfer","undefined","LepuFileTransfer","write","onFile","onError","skipFiles","afterTransfer","finishTransfer","onTransferFinished","build","hexToByte","has","toLowerCase","runStatus","lastRunStatus","sentryLogger","from","to","previousFrameCount"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -4,8 +4,10 @@
4
4
 
5
5
  import { MeasurementTypeKey, EcgDiagnosticFlag } from "@ovok/core";
6
6
  import { BloodPressureStates } from "@ovok/core/dist/client/observation/types/measurement/BloodPressureStates";
7
+ import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
7
8
  import { bloodPressureTranslatedExceptionMap } from "../../../constants/blood-pressure-translated-exception-map.js";
8
9
  import { CaseType } from "../../../types/case-type.js";
10
+ import { DeviceStatus } from "../../../types/device-status.js";
9
11
  import { hexToByte } from "../../../utils/hex-to-byte.js";
10
12
  import { i16FromHex } from "../../../utils/i-16-from-hex.js";
11
13
  import { le16FromHex } from "../../../utils/le-16-from-hex.js";
@@ -24,16 +26,23 @@ const BP2_PREFERRED_MTU = 247;
24
26
 
25
27
  /** BP2 ECG waveform resolution from the device protocol. */
26
28
  const BP2_ECG_MILLIVOLTS_PER_COUNT = 0.003098;
29
+ const BP2_ECG_SAMPLES_PER_SECOND = 250;
30
+ const BP2_ECG_SAMPLE_TOLERANCE = BP2_ECG_SAMPLES_PER_SECOND;
27
31
  class BP2Device extends BTManagedDevice {
28
32
  collectedValues = [];
29
33
  diagramPoints = [];
30
34
  duration = 0;
31
35
  historyMode = false;
32
36
  historyRequested = false;
37
+ orphanHistoryMode = false;
33
38
  pendingResults = new Map();
34
39
  reportedFileNames = new Set();
35
40
  mainServices = bp2MainServices;
36
41
  stuckDataTimeout = 5_000;
42
+ constructor(device, params) {
43
+ super(device, params);
44
+ this.deliveredEcgFileNames = new Set(params.deliveredEcgFileNames ?? []);
45
+ }
37
46
  onStreamStart = () => {
38
47
  this.collectedValues = [];
39
48
  this.diagramPoints = [];
@@ -43,6 +52,7 @@ class BP2Device extends BTManagedDevice {
43
52
  createCommandSequencer = () => {
44
53
  this.historyMode = true;
45
54
  this.historyRequested = false;
55
+ this.orphanHistoryMode = false;
46
56
  this.lastLiveResultSignature = undefined;
47
57
  this.pendingResults.clear();
48
58
  this.reportedFileNames.clear();
@@ -59,7 +69,11 @@ class BP2Device extends BTManagedDevice {
59
69
  shouldStartTransfer: () => this.historyRequested,
60
70
  onTransferRequested: () => {
61
71
  this.historyRequested = false;
62
- }
72
+ },
73
+ onOrphanStreamEnd: () => {
74
+ this.orphanHistoryMode = true;
75
+ },
76
+ skipFiles: this.deliveredEcgFileNames
63
77
  });
64
78
  };
65
79
  frameReader = new BP2FrameReader();
@@ -108,7 +122,19 @@ class BP2Device extends BTManagedDevice {
108
122
  const data = this.collectedValues.slice(dataStart, dataEnd);
109
123
 
110
124
  // Duration + special_status + pulse_rate + reserved[10]
111
- this.duration = le32FromHex(data, 0x0a);
125
+ const duration = le32FromHex(data, 0x0a);
126
+ if (duration < this.duration) {
127
+ const droppedSamples = this.diagramPoints.length;
128
+ sentryLogger("info", "BT_MANAGER: BP2 ECG stream restarted", {
129
+ deviceId: this.deviceData.id,
130
+ previousDuration: this.duration,
131
+ duration,
132
+ droppedSamples
133
+ });
134
+ this.diagramPoints = [];
135
+ this.onDeviceStatusChanged?.(DeviceStatus.MEASURING, MeasurementTypeKey.ecg);
136
+ }
137
+ this.duration = duration;
112
138
 
113
139
  // sampling_num at data[0x1E..0x1F] ➜ Waveform.sampling_num :contentReference[oaicite:10]{index=10}
114
140
  const samplingNum = le16FromHex(data, 0x1e);
@@ -179,7 +205,8 @@ class BP2Device extends BTManagedDevice {
179
205
  return;
180
206
  }
181
207
  const pending = this.pendingResults.get(decoded.measurementTypeKey);
182
- if (!pending || !this.matchesPendingResult(pending, decoded)) {
208
+ const isOrphanEcg = this.orphanHistoryMode && decoded.measurementTypeKey === MeasurementTypeKey.ecg;
209
+ if (!isOrphanEcg && (!pending || !this.matchesPendingResult(pending, decoded))) {
183
210
  return;
184
211
  }
185
212
  this.reportedFileNames.add(file.name);
@@ -234,7 +261,15 @@ class BP2Device extends BTManagedDevice {
234
261
  if (ecgMeasurement.duration === undefined || ecgMeasurement.duration < 10) {
235
262
  return "feedback-messages.measurement.insufficient-data-length";
236
263
  }
237
- if (ecgMeasurement.diagramPoints.length === 0 || ecgMeasurement.diagramPoints.length < 3500) {
264
+ if (ecgMeasurement.diagramPoints.length === 0) {
265
+ return "feedback-messages.measurement.insufficient-data-length";
266
+ }
267
+ if (ecgMeasurement.duration > 0) {
268
+ const expectedSamples = ecgMeasurement.duration * BP2_ECG_SAMPLES_PER_SECOND;
269
+ if (ecgMeasurement.diagramPoints.length < expectedSamples - BP2_ECG_SAMPLE_TOLERANCE || ecgMeasurement.diagramPoints.length > expectedSamples + BP2_ECG_SAMPLE_TOLERANCE) {
270
+ return "feedback-messages.measurement.insufficient-data-length";
271
+ }
272
+ } else if (ecgMeasurement.diagramPoints.length < 3500) {
238
273
  return "feedback-messages.measurement.insufficient-data-length";
239
274
  }
240
275
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","BloodPressureStates","bloodPressureTranslatedExceptionMap","CaseType","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","decodeBP2File","BP2FrameReader","BP2HistorySequencer","bp2MainServices","BP2_PREFERRED_MTU","BP2_ECG_MILLIVOLTS_PER_COUNT","BP2Device","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","Set","mainServices","stuckDataTimeout","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","frameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","lenH","dataLen","dataStart","dataEnd","data","slice","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","diastolic","systolic","heartRate","REGULAR","errorString","get","DEVICE_ERROR","result","signature","signatureFor","set","join","diagnosticResult","file","has","name","decoded","content","pending","matchesPendingResult","add","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","ecgMeasurement","POOR_WAVEFORM","LEAD_OFF","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":";;AAAA;;AAEA,SAEEA,kBAAkB,EAGlBC,iBAAiB,QACZ,YAAY;AACnB,SAASC,mBAAmB,QAAQ,0EAA0E;AAE9G,SAASC,mCAAmC,QAAQ,+DAA4D;AAChH,SAASC,QAAQ,QAAQ,6BAA0B;AAMnD,SAASC,SAAS,QAAQ,+BAA4B;AACtD,SAASC,UAAU,QAAQ,iCAA8B;AACzD,SAASC,WAAW,QAAQ,kCAA+B;AAC3D,SAASC,WAAW,QAAQ,kCAA+B;AAC3D,SAASC,eAAe,QAAQ,yBAAsB;AAEtD,SAASC,aAAa,QAAQ,gBAAa;AAC3C,SAASC,cAAc,QAAQ,uBAAoB;AACnD,SAASC,mBAAmB,QAAQ,4BAAyB;AAC7D,SAASC,eAAe,QAAQ,wBAAqB;;AAErD;AACA;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,GAAG;;AAE7B;AACA,MAAMC,4BAA4B,GAAG,QAAQ;AAE7C,MAAMC,SAAS,SAASP,eAAe,CAAwB;EACrDQ,eAAe,GAAa,EAAE;EAC9BC,aAAa,GAAa,EAAE;EAC5BC,QAAQ,GAAW,CAAC;EACpBC,WAAW,GAAG,KAAK;EACnBC,gBAAgB,GAAG,KAAK;EAExBC,cAAc,GAAG,IAAIC,GAAG,CAG9B,CAAC;EACKC,iBAAiB,GAAG,IAAIC,GAAG,CAAS,CAAC;EAEnCC,YAAY,GAAeb,eAAe;EAC1Cc,gBAAgB,GAAW,KAAK;EAEhCC,aAAa,GAAeA,CAAA,KAAM;IAC1C,IAAI,CAACX,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACU,uBAAuB,GAAGC,SAAS;EAC1C,CAAC;EAESC,sBAAsB,GAAGA,CAAA,KAAwB;IACzD,IAAI,CAACX,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACQ,uBAAuB,GAAGC,SAAS;IACxC,IAAI,CAACR,cAAc,CAACU,KAAK,CAAC,CAAC;IAC3B,IAAI,CAACR,iBAAiB,CAACQ,KAAK,CAAC,CAAC;IAE9B,MAAMC,OAAO,GAAGpB,eAAe,CAAC,CAAC,CAAE;IACnC,MAAMqB,KAAK,GAAGD,OAAO,CAACE,SAAU;IAEhC,OAAO,IAAIvB,mBAAmB,CAAC;MAC7BsB,KAAK,EAAE;QACLE,WAAW,EAAEH,OAAO,CAACI,IAAI;QACzBC,kBAAkB,EAAEJ,KAAK,CAACG;MAC5B,CAAC;MACDE,MAAM,EAAE,IAAI,CAACC,iBAAiB;MAC9BC,OAAO,EAAE,IAAI,CAACC,kBAAkB;MAChCC,kBAAkB,EAAE,IAAI,CAACC,oBAAoB;MAC7CC,mBAAmB,EAAEA,CAAA,KAAM,IAAI,CAACxB,gBAAgB;MAChDyB,mBAAmB,EAAEA,CAAA,KAAM;QACzB,IAAI,CAACzB,gBAAgB,GAAG,KAAK;MAC/B;IACF,CAAC,CAAC;EACJ,CAAC;EAES0B,WAAW,GAAmB,IAAIpC,cAAc,CAAC,CAAC;EAClDqC,YAAY,GAAWlC,iBAAiB;EAExCmC,mBAAmBA,CAC3BC,aAEC,EACDjC,eAAyB,EACT;IAChB,IAAI,CAACA,eAAe,GAAGA,eAAe;IAEtC,IAAI,CAACiC,aAAa,CAACC,kBAAkB,IAAI,CAACD,aAAa,CAACE,QAAQ,EAAE;MAChE,IAAI,CAACX,OAAO,GACV,IAAIY,KAAK,CACP,0CAA0CH,aAAa,CAACE,QAAQ,EAClE,CACF,CAAC;MAED;IACF;IAEA,IAAIF,aAAa,CAACC,kBAAkB,KAAKnD,kBAAkB,CAACsD,GAAG,EAAE;MAC/D,OAAO,IAAI,CAACC,eAAe,CAACL,aAAa,CAAC;IAC5C;IAEA,IAAIA,aAAa,CAACC,kBAAkB,KAAKnD,kBAAkB,CAACwD,aAAa,EAAE;MACzE,OAAO,IAAI,CAACC,yBAAyB,CACnCP,aACF,CAAC;IACH;IAEA;EACF;EAEQK,eAAeA,CACrBL,aAAsD,EAChD;IACN,IAAIA,aAAa,CAACE,QAAQ,KAAKhD,QAAQ,CAACsD,MAAM,EAAE;MAC9CR,aAAa,CAAChC,aAAa,GAAG,IAAI,CAACA,aAAa;MAChDgC,aAAa,CAAC/B,QAAQ,GAAG,IAAI,CAACA,QAAQ;MAEtC,MAAMwC,KAAK,GAAG,IAAI,CAACC,qBAAqB,CAACV,aAAa,CAAC;MAEvD,IAAIS,KAAK,EAAE;QACT,IAAI,CAAClB,OAAO,GAAGkB,KAAK,CAAC;QAErB;MACF;MAEA,IAAI,IAAI,CAACvC,WAAW,EAAE;QACpB,IAAI,CAACyC,kBAAkB,CAACX,aAAa,CAAC;QAEtC;MACF;MAEA,IAAI,CAACY,QAAQ,GAAGZ,aAAa,CAAC;MAE9B;IACF;IAEA,IAAI,CAACa,eAAe,CAAC,CAAC;EACxB;EAEQA,eAAeA,CAAA,EAAS;IAC9B;IACA,MAAMC,IAAI,GAAG3D,SAAS,CAAC,IAAI,CAACY,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACzD,MAAMgD,IAAI,GAAG5D,SAAS,CAAC,IAAI,CAACY,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACzD,MAAMiD,OAAO,GAAGF,IAAI,GAAIC,IAAI,IAAI,CAAE;;IAElC;IACA,MAAME,SAAS,GAAG,IAAI;IACtB,MAAMC,OAAO,GAAGD,SAAS,GAAGD,OAAO;IACnC,MAAMG,IAAI,GAAG,IAAI,CAACpD,eAAe,CAACqD,KAAK,CAACH,SAAS,EAAEC,OAAO,CAAC;;IAE3D;IACA,IAAI,CAACjD,QAAQ,GAAGX,WAAW,CAAC6D,IAAI,EAAE,IAAI,CAAC;;IAEvC;IACA,MAAME,WAAW,GAAGhE,WAAW,CAAC8D,IAAI,EAAE,IAAI,CAAC;;IAE3C;IACA,MAAMG,YAAY,GAAG,IAAI;IAEzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,WAAW,EAAEE,CAAC,EAAE,EAAE;MACpC,MAAMC,eAAe,GAAGF,YAAY,GAAGC,CAAC,GAAG,CAAC;MAC5C,MAAME,SAAS,GAAGrE,UAAU,CAAC+D,IAAI,EAAEK,eAAe,CAAC;MAEnD,IAAI,CAACxD,aAAa,CAAC0D,IAAI,CAACD,SAAS,GAAG5D,4BAA4B,CAAC;IACnE;EACF;EAEQ0C,yBAAyBA,CAC/BP,aAAgE,EAC1D;IACN,IAAIA,aAAa,CAACE,QAAQ,KAAKhD,QAAQ,CAACsD,MAAM,EAAE;MAC9C;IACF;IACA,MAAMC,KAAK,GAAG,IAAI,CAACkB,+BAA+B,CAAC3B,aAAa,CAAC;IAEjE,IAAIS,KAAK,EAAE;MACT,IAAI,CAAClB,OAAO,GAAGkB,KAAK,CAAC;MAErB;IACF;IAEA,IAAI,IAAI,CAACvC,WAAW,EAAE;MACpB,IAAI,CAACyC,kBAAkB,CAACX,aAAa,CAAC;MAEtC;IACF;IAEA,IAAI,CAACY,QAAQ,GAAGZ,aAAa,CAAC;EAChC;EAEQ2B,+BAA+BA,CACrC3B,aAAgE,EAC5C;IACpB,MAAM4B,aAAa,GAAG5B,aAAa;;IAEnC;IACA,IACE4B,aAAa,CAACC,MAAM,KAAKjD,SAAS,IAClCgD,aAAa,CAACE,SAAS,KAAKlD,SAAS,IACrCgD,aAAa,CAACG,QAAQ,KAAKnD,SAAS,IACpCgD,aAAa,CAACI,SAAS,KAAKpD,SAAS,EACrC;MACA,OAAO,4CAA4C;IACrD;;IAEA;IACA,IAAIgD,aAAa,CAACC,MAAM,KAAK7E,mBAAmB,CAACiF,OAAO,EAAE;MACxD,MAAMC,WAAW,GAAGjF,mCAAmC,CAACkF,GAAG,CACzDP,aAAa,CAACC,MAAM,IAAI7E,mBAAmB,CAACoF,YAC9C,CAAC;MAED,IAAIF,WAAW,KAAKtD,SAAS,EAAE;QAC7B,OAAOsD,WAAW;MACpB,CAAC,MAAM;QACL,OAAO,4CAA4C;MACrD;IACF;;IAEA;IACA,IACEN,aAAa,CAACI,SAAS,KAAK,CAAC,IAC7BJ,aAAa,CAACE,SAAS,KAAK,CAAC,IAC7BF,aAAa,CAACG,QAAQ,KAAK,CAAC,EAC5B;MACA,OAAO,kDAAkD;IAC3D;IAEA,OAAOnD,SAAS;EAClB;EAEQ+B,kBAAkB,GACxB0B,MAA4C,IACnC;IACT,MAAMC,SAAS,GAAG,IAAI,CAACC,YAAY,CAACF,MAAM,CAAC;IAE3C,IAAIC,SAAS,KAAK,IAAI,CAAC3D,uBAAuB,EAAE;MAC9C;IACF;IAEA,IAAI,CAACA,uBAAuB,GAAG2D,SAAS;IACxC,IAAI,CAAClE,cAAc,CAACoE,GAAG,CAACH,MAAM,CAACpC,kBAAkB,EAAEoC,MAAM,CAAC;IAC1D,IAAI,CAAClE,gBAAgB,GAAG,IAAI;EAC9B,CAAC;EAEOoE,YAAY,GAAIF,MAA4C,IAClEA,MAAM,CAACpC,kBAAkB,KAAKnD,kBAAkB,CAACwD,aAAa,GAC1D,CACE+B,MAAM,CAACpC,kBAAkB,EACxBoC,MAAM,CAA8BN,QAAQ,EAC5CM,MAAM,CAA8BP,SAAS,EAC7CO,MAAM,CAA8BL,SAAS,EAC7CK,MAAM,CAA8BR,MAAM,CAC5C,CAACY,IAAI,CAAC,GAAG,CAAC,GACX,CACEJ,MAAM,CAACpC,kBAAkB,EACxBoC,MAAM,CAAoBL,SAAS,EACnCK,MAAM,CAAoBK,gBAAgB,EAC1CL,MAAM,CAAoBpE,QAAQ,EAClCoE,MAAM,CAAoBrE,aAAa,EAAEyE,IAAI,CAAC,GAAG,CAAC,CACpD,CAACA,IAAI,CAAC,GAAG,CAAC;EAETnD,iBAAiB,GAAIqD,IAG5B,IAAW;IACV,IAAI,IAAI,CAACrE,iBAAiB,CAACsE,GAAG,CAACD,IAAI,CAACE,IAAI,CAAC,EAAE;MACzC;IACF;IAEA,MAAMC,OAAO,GAAGtF,aAAa,CAACmF,IAAI,CAACE,IAAI,EAAEF,IAAI,CAACI,OAAO,CAAC;IAEtD,IAAI,CAACD,OAAO,EAAE;MACZ;IACF;IAEA,MAAME,OAAO,GAAG,IAAI,CAAC5E,cAAc,CAAC+D,GAAG,CAACW,OAAO,CAAC7C,kBAAkB,CAAC;IAEnE,IAAI,CAAC+C,OAAO,IAAI,CAAC,IAAI,CAACC,oBAAoB,CAACD,OAAO,EAAEF,OAAO,CAAC,EAAE;MAC5D;IACF;IAEA,IAAI,CAACxE,iBAAiB,CAAC4E,GAAG,CAACP,IAAI,CAACE,IAAI,CAAC;IAErC,MAAMR,MAAM,GAAG;MACb,GAAGS,OAAO;MACV5C,QAAQ,EAAEhD,QAAQ,CAACsD;IACrB,CAAyC;IAEzC,MAAMC,KAAK,GACT4B,MAAM,CAACpC,kBAAkB,KAAKnD,kBAAkB,CAACwD,aAAa,GAC1D,IAAI,CAACqB,+BAA+B,CAClCU,MACF,CAAC,GACD,IAAI,CAAC3B,qBAAqB,CACxB2B,MACF,CAAC;IAEP,IAAI5B,KAAK,EAAE;MACT,IAAI,CAAClB,OAAO,GAAGkB,KAAK,CAAC;MAErB;IACF;IAEA,IAAI,CAACrC,cAAc,CAAC+E,MAAM,CAACd,MAAM,CAACpC,kBAAkB,CAAC;IACrD,IAAI,CAACW,QAAQ,GACXyB,MACF,CAAC;EACH,CAAC;EAEOY,oBAAoB,GAAGA,CAC7BD,OAA6C,EAC7CF,OAAoB,KACR;IACZ,IAAIA,OAAO,CAAC7C,kBAAkB,KAAKnD,kBAAkB,CAACwD,aAAa,EAAE;MACnE,MAAM8C,oBAAoB,GAAGJ,OAAmC;MAChE,MAAMK,oBAAoB,GAAGP,OAAmC;MAEhE,OACEM,oBAAoB,CAACrB,QAAQ,KAAKsB,oBAAoB,CAACtB,QAAQ,IAC/DqB,oBAAoB,CAACtB,SAAS,KAAKuB,oBAAoB,CAACvB,SAAS,IACjEsB,oBAAoB,CAACpB,SAAS,KAAKqB,oBAAoB,CAACrB,SAAS,IACjEoB,oBAAoB,CAACvB,MAAM,KAAKwB,oBAAoB,CAACxB,MAAM;IAE/D;IAEA,MAAMyB,UAAU,GAAGN,OAAyB;IAC5C,MAAMO,UAAU,GAAGT,OAAyB;IAE5C,OACEQ,UAAU,CAACtB,SAAS,KAAKuB,UAAU,CAACvB,SAAS,IAC7CsB,UAAU,CAACZ,gBAAgB,KAAKa,UAAU,CAACb,gBAAgB,IAC3DY,UAAU,CAACrF,QAAQ,KAAKsF,UAAU,CAACtF,QAAQ;EAE/C,CAAC;EAEOuB,kBAAkB,GAAIgE,MAAc,IAAW;IACrD,IAAI,CAACjE,OAAO,GAAG,IAAIY,KAAK,CAAC,gBAAgBqD,MAAM,EAAE,CAAC,CAAC;IAEnD,IAAI,CAAC9D,oBAAoB,CAAC,CAAC;EAC7B,CAAC;EAEOA,oBAAoB,GAAGA,CAAA,KAAY;IACzC,IAAI,CAACtB,cAAc,CAACqF,OAAO,CAAEpB,MAAM,IACjC,IAAI,CAACzB,QAAQ,GACXyB,MACF,CACF,CAAC;IACD,IAAI,CAACjE,cAAc,CAACU,KAAK,CAAC,CAAC;EAC7B,CAAC;EAEO4B,qBAAqBA,CAC3BV,aAAsD,EAClC;IACpB,MAAM0D,cAAc,GAAG1D,aAAa;IAEpC,IAAI0D,cAAc,CAAChB,gBAAgB,KAAK3F,iBAAiB,CAAC4G,aAAa,EAAE;MACvE,OAAO,mDAAmD;IAC5D;IACA,IAAID,cAAc,CAAChB,gBAAgB,KAAK3F,iBAAiB,CAAC6G,QAAQ,EAAE;MAClE,OAAO,8CAA8C;IACvD;;IAEA;IACA,IACEF,cAAc,CAAChB,gBAAgB,KAAK9D,SAAS,IAC7C8E,cAAc,CAAC1B,SAAS,KAAKpD,SAAS,IACtC8E,cAAc,CAAC1F,aAAa,KAAKY,SAAS,EAC1C;MACA,OAAO,4CAA4C;IACrD;;IAEA;IACA,IAAI8E,cAAc,CAAC1B,SAAS,KAAK,CAAC,EAAE;MAClC,OAAO,kDAAkD;IAC3D;IAEA,IAAI0B,cAAc,CAACzF,QAAQ,KAAKW,SAAS,IAAI8E,cAAc,CAACzF,QAAQ,GAAG,EAAE,EAAE;MACzE,OAAO,wDAAwD;IACjE;IAEA,IACEyF,cAAc,CAAC1F,aAAa,CAAC6F,MAAM,KAAK,CAAC,IACzCH,cAAc,CAAC1F,aAAa,CAAC6F,MAAM,GAAG,IAAI,EAC1C;MACA,OAAO,wDAAwD;IACjE;IAEA,OAAOjF,SAAS;EAClB;AACF;AAEA,SAASd,SAAS,EAAED,4BAA4B","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","BloodPressureStates","sentryLogger","bloodPressureTranslatedExceptionMap","CaseType","DeviceStatus","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","decodeBP2File","BP2FrameReader","BP2HistorySequencer","bp2MainServices","BP2_PREFERRED_MTU","BP2_ECG_MILLIVOLTS_PER_COUNT","BP2_ECG_SAMPLES_PER_SECOND","BP2_ECG_SAMPLE_TOLERANCE","BP2Device","collectedValues","diagramPoints","duration","historyMode","historyRequested","orphanHistoryMode","pendingResults","Map","reportedFileNames","Set","mainServices","stuckDataTimeout","constructor","device","params","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","frameReader","preferredMtu","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","lenH","dataLen","dataStart","dataEnd","data","slice","droppedSamples","length","deviceId","deviceData","id","previousDuration","onDeviceStatusChanged","MEASURING","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","diastolic","systolic","heartRate","REGULAR","errorString","get","DEVICE_ERROR","result","signature","signatureFor","set","join","diagnosticResult","file","has","name","decoded","content","pending","isOrphanEcg","matchesPendingResult","add","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","ecgMeasurement","POOR_WAVEFORM","LEAD_OFF","expectedSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,18 @@
1
1
  "use strict";
2
2
 
3
+ import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
3
4
  import { hexToByte } from "../../../utils/hex-to-byte.js";
4
5
  import { LepuCommandBuilder } from "../lepu/lepu.command-builder.js";
5
6
  import { LepuFileTransfer } from "../lepu/lepu.file-transfer.js";
6
7
  const BP2_REALTIME_COMMAND = 0x08;
7
8
  const BP2_RESULT_STATES = new Set(["05", "07", "11"]);
9
+ const BP2_ECG_STATE = "06";
10
+ const BP2_IDLE_STATES = new Set(["00", "01", "03"]);
8
11
  /** Reads BP2 history only after a realtime result asks for its device timestamp. */
9
12
  class BP2HistorySequencer {
10
13
  builder = new LepuCommandBuilder();
14
+ lastRunStatusFrameCount = 0;
15
+ realtimeEcgActive = false;
11
16
  constructor(params) {
12
17
  this.params = params;
13
18
  }
@@ -17,7 +22,16 @@ class BP2HistorySequencer {
17
22
  if (this.transfer) {
18
23
  return this.transfer.nextCommand(frame);
19
24
  }
20
- if (this.params.shouldStartTransfer() && this.isResultFrame(frame)) {
25
+ this.logRunStatus(frame);
26
+ const isResult = this.isResultFrame(frame);
27
+ const endedWithoutResult = this.realtimeEcgActive && this.isIdleFrame(frame);
28
+ if (isResult) {
29
+ this.realtimeEcgActive = false;
30
+ } else if (endedWithoutResult) {
31
+ this.realtimeEcgActive = false;
32
+ this.params.onOrphanStreamEnd();
33
+ }
34
+ if (this.params.shouldStartTransfer() || endedWithoutResult) {
21
35
  this.params.onTransferRequested();
22
36
  return this.startTransfer();
23
37
  }
@@ -29,6 +43,7 @@ class BP2HistorySequencer {
29
43
  builder: this.builder,
30
44
  onFile: this.params.onFile,
31
45
  onError: this.params.onError,
46
+ skipFiles: this.params.skipFiles,
32
47
  afterTransfer: this.finishTransfer
33
48
  });
34
49
  return this.transfer.initialCommands();
@@ -43,6 +58,29 @@ class BP2HistorySequencer {
43
58
  frame: this.builder.build(BP2_REALTIME_COMMAND)
44
59
  });
45
60
  isResultFrame = frame => hexToByte(frame[1] ?? "0") === BP2_REALTIME_COMMAND && BP2_RESULT_STATES.has((frame[7] ?? "").toLowerCase());
61
+ isIdleFrame = frame => hexToByte(frame[1] ?? "0") === BP2_REALTIME_COMMAND && BP2_IDLE_STATES.has((frame[7] ?? "").toLowerCase());
62
+ logRunStatus = frame => {
63
+ if (hexToByte(frame[1] ?? "0") !== BP2_REALTIME_COMMAND) {
64
+ return;
65
+ }
66
+ const runStatus = (frame[7] ?? "").toLowerCase();
67
+ if (runStatus === BP2_ECG_STATE) {
68
+ this.realtimeEcgActive = true;
69
+ }
70
+ if (runStatus === this.lastRunStatus) {
71
+ this.lastRunStatusFrameCount++;
72
+ return;
73
+ }
74
+ if (this.lastRunStatus !== undefined) {
75
+ sentryLogger("info", "BT_MANAGER: BP2 run status changed", {
76
+ from: this.lastRunStatus,
77
+ to: runStatus,
78
+ previousFrameCount: this.lastRunStatusFrameCount
79
+ });
80
+ }
81
+ this.lastRunStatus = runStatus;
82
+ this.lastRunStatusFrameCount = 1;
83
+ };
46
84
  }
47
85
  export { BP2HistorySequencer, BP2_REALTIME_COMMAND };
48
86
  //# sourceMappingURL=bp2.history-sequencer.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["hexToByte","LepuCommandBuilder","LepuFileTransfer","BP2_REALTIME_COMMAND","BP2_RESULT_STATES","Set","BP2HistorySequencer","builder","constructor","params","initialCommands","pollCommand","isHistoryTransfer","nextCommand","frame","transfer","shouldStartTransfer","isResultFrame","onTransferRequested","startTransfer","undefined","write","onFile","onError","afterTransfer","finishTransfer","onTransferFinished","build","has","toLowerCase"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":";;AAEA,SAASA,SAAS,QAAQ,+BAA4B;AACtD,SAASC,kBAAkB,QAAQ,iCAA8B;AACjE,SAAmBC,gBAAgB,QAAQ,+BAA4B;AAEvE,MAAMC,oBAAoB,GAAG,IAAI;AACjC,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAWrD;AACA,MAAMC,mBAAmB,CAA6B;EACnCC,OAAO,GAAG,IAAIN,kBAAkB,CAAC,CAAC;EAG5CO,WAAWA,CAAkBC,MAAiC,EAAE;IAAA,KAAnCA,MAAiC,GAAjCA,MAAiC;EAAG;EAEjEC,eAAe,GAAGA,CAAA,KAAgC,CACvD,IAAI,CAACC,WAAW,CAAC,CAAC,CACnB;EAEMC,iBAAiB,GAAGA,CAAA,KAAe,IAAI;EAEvCC,WAAW,GAChBC,KAAwB,IACiB;IACzC,IAAI,IAAI,CAACC,QAAQ,EAAE;MACjB,OAAO,IAAI,CAACA,QAAQ,CAACF,WAAW,CAACC,KAAK,CAAC;IACzC;IAEA,IACE,IAAI,CAACL,MAAM,CAACO,mBAAmB,CAAC,CAAC,IACjC,IAAI,CAACC,aAAa,CAACH,KAAK,CAAC,EACzB;MACA,IAAI,CAACL,MAAM,CAACS,mBAAmB,CAAC,CAAC;MAEjC,OAAO,IAAI,CAACC,aAAa,CAAC,CAAC;IAC7B;IAEA,OAAOC,SAAS;EAClB,CAAC;EAEOD,aAAa,GAAGA,CAAA,KAAgC;IACtD,IAAI,CAACJ,QAAQ,GAAG,IAAIb,gBAAgB,CAAC;MACnCmB,KAAK,EAAE,IAAI,CAACZ,MAAM,CAACY,KAAK;MACxBd,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBe,MAAM,EAAE,IAAI,CAACb,MAAM,CAACa,MAAM;MAC1BC,OAAO,EAAE,IAAI,CAACd,MAAM,CAACc,OAAO;MAC5BC,aAAa,EAAE,IAAI,CAACC;IACtB,CAAC,CAAC;IAEF,OAAO,IAAI,CAACV,QAAQ,CAACL,eAAe,CAAC,CAAC;EACxC,CAAC;EAEOe,cAAc,GAAGA,CAAA,KAAgC;IACvD,IAAI,CAACV,QAAQ,GAAGK,SAAS;IACzB,IAAI,CAACX,MAAM,CAACiB,kBAAkB,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,CAACf,WAAW,CAAC,CAAC,CAAC;EAC7B,CAAC;EAEOA,WAAW,GAAGA,CAAA,MAAsB;IAC1C,GAAG,IAAI,CAACF,MAAM,CAACY,KAAK;IACpBP,KAAK,EAAE,IAAI,CAACP,OAAO,CAACoB,KAAK,CAACxB,oBAAoB;EAChD,CAAC,CAAC;EAEMc,aAAa,GAAIH,KAAwB,IAC/Cd,SAAS,CAACc,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAKX,oBAAoB,IACnDC,iBAAiB,CAACwB,GAAG,CAAC,CAACd,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAEe,WAAW,CAAC,CAAC,CAAC;AACzD;AAEA,SAASvB,mBAAmB,EAAEH,oBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["sentryLogger","hexToByte","LepuCommandBuilder","LepuFileTransfer","BP2_REALTIME_COMMAND","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2HistorySequencer","builder","lastRunStatusFrameCount","realtimeEcgActive","constructor","params","initialCommands","pollCommand","isHistoryTransfer","nextCommand","frame","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","startTransfer","undefined","write","onFile","onError","skipFiles","afterTransfer","finishTransfer","onTransferFinished","build","has","toLowerCase","runStatus","lastRunStatus","from","to","previousFrameCount"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,6 @@
1
+ import { Device } from "react-native-ble-plx";
1
2
  import { CommandSequencer } from "../../../types/command-sequencer";
3
+ import { CreateDeviceParams } from "../../../types/create-device-params";
2
4
  import { MeasurementTypeForDevices } from "../../../types/device-measurement-map";
3
5
  import { IntegratedDevices } from "../../../types/integrated-devices";
4
6
  import { MeasurementWithCaseType } from "../../../types/measurement-with-case-type";
@@ -14,10 +16,13 @@ declare class BP2Device extends BTManagedDevice<IntegratedDevices.BP2> {
14
16
  private historyMode;
15
17
  private historyRequested;
16
18
  private lastLiveResultSignature;
19
+ private orphanHistoryMode;
20
+ private readonly deliveredEcgFileNames;
17
21
  private pendingResults;
18
22
  private reportedFileNames;
19
23
  protected mainServices: IService[];
20
24
  protected stuckDataTimeout: number;
25
+ constructor(device: Device, params: CreateDeviceParams<IntegratedDevices.BP2>);
21
26
  protected onStreamStart: () => void;
22
27
  protected createCommandSequencer: () => CommandSequencer;
23
28
  protected frameReader: BP2FrameReader;
@@ -1 +1 @@
1
- {"version":3,"file":"bp2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.device.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,WAAW,CAAC;AAE9C,cAAM,SAAU,SAAQ,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC5D,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,cAAc,CAGlB;IACJ,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAmB;IACrD,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAS;IAE3C,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAKjC;IAEF,SAAS,CAAC,sBAAsB,QAAO,gBAAgB,CAuBrD;IAEF,SAAS,CAAC,WAAW,EAAE,cAAc,CAAwB;IAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,CAAqB;IAEnD,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACnD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IA0BjB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,+BAA+B;IAwCvC,OAAO,CAAC,kBAAkB,CAYxB;IAEF,OAAO,CAAC,YAAY,CAeF;IAElB,OAAO,CAAC,iBAAiB,CA8CvB;IAEF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF,OAAO,CAAC,kBAAkB,CAIxB;IAEF,OAAO,CAAC,oBAAoB,CAO1B;IAEF,OAAO,CAAC,qBAAqB;CAuC9B;AAED,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC"}
1
+ {"version":3,"file":"bp2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.device.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,WAAW,CAAC;AAI9C,cAAM,SAAU,SAAQ,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC5D,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,cAAc,CAGlB;IACJ,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAmB;IACrD,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAS;gBAGzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAMnD,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAKjC;IAEF,SAAS,CAAC,sBAAsB,QAAO,gBAAgB,CA4BrD;IAEF,SAAS,CAAC,WAAW,EAAE,cAAc,CAAwB;IAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,CAAqB;IAEnD,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACnD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IA0BjB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,+BAA+B;IAwCvC,OAAO,CAAC,kBAAkB,CAYxB;IAEF,OAAO,CAAC,YAAY,CAeF;IAElB,OAAO,CAAC,iBAAiB,CAkDvB;IAEF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF,OAAO,CAAC,kBAAkB,CAIxB;IAEF,OAAO,CAAC,oBAAoB,CAO1B;IAEF,OAAO,CAAC,qBAAqB;CAoD9B;AAED,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC"}
@@ -9,12 +9,17 @@ interface BP2HistorySequencerParams {
9
9
  onTransferFinished: () => void;
10
10
  shouldStartTransfer: () => boolean;
11
11
  onTransferRequested: () => void;
12
+ onOrphanStreamEnd: () => void;
13
+ skipFiles: ReadonlySet<string>;
12
14
  }
13
15
  /** Reads BP2 history only after a realtime result asks for its device timestamp. */
14
16
  declare class BP2HistorySequencer implements CommandSequencer {
15
17
  private readonly params;
16
18
  private readonly builder;
17
19
  private transfer;
20
+ private lastRunStatus;
21
+ private lastRunStatusFrameCount;
22
+ private realtimeEcgActive;
18
23
  constructor(params: BP2HistorySequencerParams);
19
24
  initialCommands: () => readonly DeviceCommand[];
20
25
  isHistoryTransfer: () => boolean;
@@ -23,6 +28,8 @@ declare class BP2HistorySequencer implements CommandSequencer {
23
28
  private finishTransfer;
24
29
  private pollCommand;
25
30
  private isResultFrame;
31
+ private isIdleFrame;
32
+ private logRunStatus;
26
33
  }
27
34
  export { BP2HistorySequencer, BP2_REALTIME_COMMAND };
28
35
  //# sourceMappingURL=bp2.history-sequencer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bp2.history-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAoB,MAAM,4BAA4B,CAAC;AAExE,QAAA,MAAM,oBAAoB,IAAO,CAAC;AAGlC,UAAU,yBAAyB;IACjC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,oFAAoF;AACpF,cAAM,mBAAoB,YAAW,gBAAgB;IAIhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAH1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAA+B;gBAEX,MAAM,EAAE,yBAAyB;IAE9D,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,iBAAiB,QAAO,OAAO,CAAS;IAExC,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAerC;IAEF,OAAO,CAAC,aAAa,CAUnB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,WAAW,CAGhB;IAEH,OAAO,CAAC,aAAa,CAEmC;CACzD;AAED,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"bp2.history-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAoB,MAAM,4BAA4B,CAAC;AAExE,QAAA,MAAM,oBAAoB,IAAO,CAAC;AAKlC,UAAU,yBAAyB;IACjC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,oFAAoF;AACpF,cAAM,mBAAoB,YAAW,gBAAgB;IAOhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAN1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,iBAAiB,CAAS;gBAEE,MAAM,EAAE,yBAAyB;IAE9D,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,iBAAiB,QAAO,OAAO,CAAS;IAExC,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CA0BrC;IAEF,OAAO,CAAC,aAAa,CAWnB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,WAAW,CAGhB;IAEH,OAAO,CAAC,aAAa,CAEmC;IAExD,OAAO,CAAC,WAAW,CAEmC;IAEtD,OAAO,CAAC,YAAY,CA4BlB;CACH;AAED,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { Device } from "react-native-ble-plx";
1
2
  import { CommandSequencer } from "../../../types/command-sequencer";
3
+ import { CreateDeviceParams } from "../../../types/create-device-params";
2
4
  import { MeasurementTypeForDevices } from "../../../types/device-measurement-map";
3
5
  import { IntegratedDevices } from "../../../types/integrated-devices";
4
6
  import { MeasurementWithCaseType } from "../../../types/measurement-with-case-type";
@@ -14,10 +16,13 @@ declare class BP2Device extends BTManagedDevice<IntegratedDevices.BP2> {
14
16
  private historyMode;
15
17
  private historyRequested;
16
18
  private lastLiveResultSignature;
19
+ private orphanHistoryMode;
20
+ private readonly deliveredEcgFileNames;
17
21
  private pendingResults;
18
22
  private reportedFileNames;
19
23
  protected mainServices: IService[];
20
24
  protected stuckDataTimeout: number;
25
+ constructor(device: Device, params: CreateDeviceParams<IntegratedDevices.BP2>);
21
26
  protected onStreamStart: () => void;
22
27
  protected createCommandSequencer: () => CommandSequencer;
23
28
  protected frameReader: BP2FrameReader;
@@ -1 +1 @@
1
- {"version":3,"file":"bp2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.device.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,WAAW,CAAC;AAE9C,cAAM,SAAU,SAAQ,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC5D,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,cAAc,CAGlB;IACJ,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAmB;IACrD,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAS;IAE3C,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAKjC;IAEF,SAAS,CAAC,sBAAsB,QAAO,gBAAgB,CAuBrD;IAEF,SAAS,CAAC,WAAW,EAAE,cAAc,CAAwB;IAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,CAAqB;IAEnD,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACnD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IA0BjB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,+BAA+B;IAwCvC,OAAO,CAAC,kBAAkB,CAYxB;IAEF,OAAO,CAAC,YAAY,CAeF;IAElB,OAAO,CAAC,iBAAiB,CA8CvB;IAEF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF,OAAO,CAAC,kBAAkB,CAIxB;IAEF,OAAO,CAAC,oBAAoB,CAO1B;IAEF,OAAO,CAAC,qBAAqB;CAuC9B;AAED,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC"}
1
+ {"version":3,"file":"bp2.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.device.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAKvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAUpD,4DAA4D;AAC5D,QAAA,MAAM,4BAA4B,WAAW,CAAC;AAI9C,cAAM,SAAU,SAAQ,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAC5D,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,cAAc,CAGlB;IACJ,OAAO,CAAC,iBAAiB,CAAqB;IAE9C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAmB;IACrD,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAS;gBAGzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAMnD,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAKjC;IAEF,SAAS,CAAC,sBAAsB,QAAO,gBAAgB,CA4BrD;IAEF,SAAS,CAAC,WAAW,EAAE,cAAc,CAAwB;IAC7D,SAAS,CAAC,YAAY,EAAE,MAAM,CAAqB;IAEnD,SAAS,CAAC,mBAAmB,CAC3B,aAAa,EAAE,uBAAuB,CACpC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CACnD,EACD,eAAe,EAAE,MAAM,EAAE,GACxB,IAAI,GAAG,OAAO;IA0BjB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,eAAe;IA2CvB,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,+BAA+B;IAwCvC,OAAO,CAAC,kBAAkB,CAYxB;IAEF,OAAO,CAAC,YAAY,CAeF;IAElB,OAAO,CAAC,iBAAiB,CAkDvB;IAEF,OAAO,CAAC,oBAAoB,CAwB1B;IAEF,OAAO,CAAC,kBAAkB,CAIxB;IAEF,OAAO,CAAC,oBAAoB,CAO1B;IAEF,OAAO,CAAC,qBAAqB;CAoD9B;AAED,OAAO,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC"}
@@ -9,12 +9,17 @@ interface BP2HistorySequencerParams {
9
9
  onTransferFinished: () => void;
10
10
  shouldStartTransfer: () => boolean;
11
11
  onTransferRequested: () => void;
12
+ onOrphanStreamEnd: () => void;
13
+ skipFiles: ReadonlySet<string>;
12
14
  }
13
15
  /** Reads BP2 history only after a realtime result asks for its device timestamp. */
14
16
  declare class BP2HistorySequencer implements CommandSequencer {
15
17
  private readonly params;
16
18
  private readonly builder;
17
19
  private transfer;
20
+ private lastRunStatus;
21
+ private lastRunStatusFrameCount;
22
+ private realtimeEcgActive;
18
23
  constructor(params: BP2HistorySequencerParams);
19
24
  initialCommands: () => readonly DeviceCommand[];
20
25
  isHistoryTransfer: () => boolean;
@@ -23,6 +28,8 @@ declare class BP2HistorySequencer implements CommandSequencer {
23
28
  private finishTransfer;
24
29
  private pollCommand;
25
30
  private isResultFrame;
31
+ private isIdleFrame;
32
+ private logRunStatus;
26
33
  }
27
34
  export { BP2HistorySequencer, BP2_REALTIME_COMMAND };
28
35
  //# sourceMappingURL=bp2.history-sequencer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bp2.history-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAoB,MAAM,4BAA4B,CAAC;AAExE,QAAA,MAAM,oBAAoB,IAAO,CAAC;AAGlC,UAAU,yBAAyB;IACjC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,oFAAoF;AACpF,cAAM,mBAAoB,YAAW,gBAAgB;IAIhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAH1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAA+B;gBAEX,MAAM,EAAE,yBAAyB;IAE9D,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,iBAAiB,QAAO,OAAO,CAAS;IAExC,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAerC;IAEF,OAAO,CAAC,aAAa,CAUnB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,WAAW,CAGhB;IAEH,OAAO,CAAC,aAAa,CAEmC;CACzD;AAED,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"bp2.history-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAG9D,OAAO,EAAE,QAAQ,EAAoB,MAAM,4BAA4B,CAAC;AAExE,QAAA,MAAM,oBAAoB,IAAO,CAAC;AAKlC,UAAU,yBAAyB;IACjC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,OAAO,CAAC;IACnC,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,oFAAoF;AACpF,cAAM,mBAAoB,YAAW,gBAAgB;IAOhC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAN1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,iBAAiB,CAAS;gBAEE,MAAM,EAAE,yBAAyB;IAE9D,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,iBAAiB,QAAO,OAAO,CAAS;IAExC,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CA0BrC;IAEF,OAAO,CAAC,aAAa,CAWnB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,WAAW,CAGhB;IAEH,OAAO,CAAC,aAAa,CAEmC;IAExD,OAAO,CAAC,WAAW,CAEmC;IAEtD,OAAO,CAAC,YAAY,CA4BlB;CACH;AAED,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ovok/native",
3
- "version": "1.6.15",
3
+ "version": "1.6.16",
4
4
  "description": "React native component sdk for OVOK",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",