@ovok/native 0.3.9 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js +16 -2
- package/lib/commonjs/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js +20 -16
- package/lib/commonjs/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +36 -4
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js +9 -3
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js +31 -10
- package/lib/commonjs/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +19 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +6 -2
- package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/commonjs/modules/helpers/utils/s-log.js +1 -1
- package/lib/commonjs/modules/helpers/utils/s-log.js.map +1 -1
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js +16 -2
- package/lib/module/modules/bt-management/components/bt-provider-child-wrapper.js.map +1 -1
- package/lib/module/modules/bt-management/hooks/use-request-permissions.js +20 -16
- package/lib/module/modules/bt-management/hooks/use-request-permissions.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +35 -4
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js +9 -3
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js +31 -10
- package/lib/module/modules/bt-management/services/devices/bt-connection-handler.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +19 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +6 -2
- package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js +1 -0
- package/lib/module/modules/bt-management/services/devices/f4/f4.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js +1 -0
- package/lib/module/modules/bt-management/services/devices/spo/spo2.device.js.map +1 -1
- package/lib/module/modules/helpers/utils/s-log.js +1 -1
- package/lib/module/modules/helpers/utils/s-log.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +1 -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/devices/bp2/bp2.device.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +6 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -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/f4/f4.device.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/components/bt-provider-child-wrapper.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/hooks/use-request-permissions.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +1 -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/devices/bp2/bp2.device.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-connection-handler.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +6 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +4 -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/f4/f4.device.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/f4/f4.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/spo/spo2.device.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -10,6 +10,7 @@ var _spo2MainServices = require("./spo2.main-services.js");
|
|
|
10
10
|
class SPO2Device extends _btManagedDevice.BTManagedDevice {
|
|
11
11
|
onStreamStart = () => {};
|
|
12
12
|
mainServices = _spo2MainServices.spo2MainServices;
|
|
13
|
+
stuckDataTimeout = 30_000;
|
|
13
14
|
validatePackage = pkg => {
|
|
14
15
|
pkg = pkg.map(b => b.toLowerCase());
|
|
15
16
|
let headIndex = -1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_caseType","require","_btManagedDevice","_spo2MainServices","SPO2Device","BTManagedDevice","onStreamStart","mainServices","spo2MainServices","validatePackage","pkg","map","b","toLowerCase","headIndex","i","length","slice","toNum","hex","parseInt","lengthByte","totalLen","handleSuccessResult","successResult","collectedValues","caseType","CaseType","STREAM","OTHER","measurementTypeKey","onError","Error","handlePulseOximeterResult","error","checkIfHasError","onResult","bloodOxygen","undefined","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.device.ts"],"mappings":";;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAKA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,MAAMG,UAAU,SAASC,gCAAe,CAA2B;EAC9DC,aAAa,GAAeA,CAAA,KAAM,CAAC,CAAC;EAEpCC,YAAY,GAAeC,kCAAgB;
|
|
1
|
+
{"version":3,"names":["_caseType","require","_btManagedDevice","_spo2MainServices","SPO2Device","BTManagedDevice","onStreamStart","mainServices","spo2MainServices","stuckDataTimeout","validatePackage","pkg","map","b","toLowerCase","headIndex","i","length","slice","toNum","hex","parseInt","lengthByte","totalLen","handleSuccessResult","successResult","collectedValues","caseType","CaseType","STREAM","OTHER","measurementTypeKey","onError","Error","handlePulseOximeterResult","error","checkIfHasError","onResult","bloodOxygen","undefined","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/spo/spo2.device.ts"],"mappings":";;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AAKA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,MAAMG,UAAU,SAASC,gCAAe,CAA2B;EAC9DC,aAAa,GAAeA,CAAA,KAAM,CAAC,CAAC;EAEpCC,YAAY,GAAeC,kCAAgB;EAC3CC,gBAAgB,GAAG,MAAM;EAEzBC,eAAe,GAAgCC,GAAG,IAAK;IAC/DA,GAAG,GAAGA,GAAG,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC;IAErC,IAAIC,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;MACvC,IAAIL,GAAG,CAACK,CAAC,CAAC,KAAK,IAAI,IAAIL,GAAG,CAACK,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QAC1CD,SAAS,GAAGC,CAAC;QACb;MACF;IACF;IAEA,IAAID,SAAS,KAAK,CAAC,CAAC,EAAE;MACpB,OAAO,KAAK;IACd;IAEA,IAAIA,SAAS,GAAG,CAAC,EAAE;MACjBJ,GAAG,GAAGA,GAAG,CAACO,KAAK,CAACH,SAAS,CAAC;IAC5B;IAEA,IAAIJ,GAAG,CAACM,MAAM,GAAG,CAAC,EAAE;MAClB,OAAO,KAAK;IACd;IAEA,MAAME,KAAK,GAAIC,GAAY,IAAKC,QAAQ,CAACD,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC;IAE7D,MAAME,UAAU,GAAGH,KAAK,CAACR,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhC,MAAMY,QAAQ,GAAG,CAAC,GAAGD,UAAU;IAE/B,IAAIX,GAAG,CAACM,MAAM,GAAGM,QAAQ,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb,CAAC;EAESC,mBAAmBA,CAC3BC,aAEC,EACDC,eAAyB,EACT;IAChB,IACED,aAAa,CAACE,QAAQ,KAAKC,kBAAQ,CAACC,MAAM,IAC1CJ,aAAa,CAACE,QAAQ,KAAKC,kBAAQ,CAACE,KAAK,EACzC;MACA;IACF;IAEA,IAAI,CAACJ,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,EAAE;MACxC,OAAO,IAAI;IACb;IAEA,IAAI,CAACD,aAAa,CAACM,kBAAkB,EAAE;MACrC,IAAI,CAACC,OAAO,GACV,IAAIC,KAAK,CACP,0CAA0CR,aAAa,CAACE,QAAQ,EAClE,CACF,CAAC;MAED;IACF;IAEA,IAAI,CAACO,yBAAyB,CAACT,aAAa,CAAC;EAC/C;EAEQS,yBAAyBA,CAC/BT,aAAgE,EAC1D;IACN,MAAMU,KAAK,GAAG,IAAI,CAACC,eAAe,CAACX,aAAa,CAAC;IAEjD,IAAIU,KAAK,EAAE;MACT,IAAI,CAACH,OAAO,GAAGG,KAAK,CAAC;MAErB;IACF;IAEA,IAAI,CAACE,QAAQ,GAAGZ,aAAa,CAAC;EAChC;EAEQW,eAAeA,CACrBX,aAAgE,EAC5C;IACpB,IAAI,CAACA,aAAa,CAACa,WAAW,EAAE;MAC9B,OAAO,sDAAsD;IAC/D;IAEA,OAAOC,SAAS;EAClB;AACF;AAACC,OAAA,CAAApC,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -11,7 +11,7 @@ const slog = (error, scope,
|
|
|
11
11
|
additionalData = {}, level = "error") => {
|
|
12
12
|
if (__DEV__) {
|
|
13
13
|
// eslint-disable-next-line no-console
|
|
14
|
-
console.log(error, scope, additionalData, level);
|
|
14
|
+
console.log(error, scope, JSON.stringify(additionalData, null, 2), level);
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
Sentry.captureException(error, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Sentry","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","slog","error","scope","additionalData","level","__DEV__","console","log","captureException","extra","exports"],"sourceRoot":"../../../../../src","sources":["modules/helpers/utils/s-log.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+C,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAExC,MAAMkB,IAAI,GAAGA,CAElBC,KAAU,EACVC,KAAa;AACb;AACAC,cAAmC,GAAG,CAAC,CAAC,EACxCC,KAA6C,GAAG,OAAO,KACpD;EACH,IAAIC,OAAO,EAAE;IACX;IACAC,OAAO,CAACC,GAAG,CAACN,KAAK,EAAEC,KAAK,
|
|
1
|
+
{"version":3,"names":["Sentry","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","slog","error","scope","additionalData","level","__DEV__","console","log","JSON","stringify","captureException","extra","exports"],"sourceRoot":"../../../../../src","sources":["modules/helpers/utils/s-log.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+C,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAExC,MAAMkB,IAAI,GAAGA,CAElBC,KAAU,EACVC,KAAa;AACb;AACAC,cAAmC,GAAG,CAAC,CAAC,EACxCC,KAA6C,GAAG,OAAO,KACpD;EACH,IAAIC,OAAO,EAAE;IACX;IACAC,OAAO,CAACC,GAAG,CAACN,KAAK,EAAEC,KAAK,EAAEM,IAAI,CAACC,SAAS,CAACN,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,EAAEC,KAAK,CAAC;IAEzE;EACF;EAEA1B,MAAM,CAACgC,gBAAgB,CAACT,KAAK,EAAE;IAC7BU,KAAK,EAAE;MACLT,KAAK;MACLC;IACF,CAAC;IACDC;EACF,CAAC,CAAC;AACJ,CAAC;AAACQ,OAAA,CAAAZ,IAAA,GAAAA,IAAA","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as React from "react";
|
|
4
|
+
import { AppState } from "react-native";
|
|
4
5
|
import { useDeviceList } from "../../bt-device/components/hooks/use-device-list.js";
|
|
5
6
|
import { sentryLogger } from "../../helpers/utils/sentry-logger.js";
|
|
6
7
|
import { BTManager } from "../services/bt-manager.js";
|
|
@@ -39,7 +40,8 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
|
|
|
39
40
|
return () => {
|
|
40
41
|
btManagerRef.current?.onDeviceFound(undefined);
|
|
41
42
|
};
|
|
42
|
-
}, [onDeviceFound, acceptedDevices])
|
|
43
|
+
}, [onDeviceFound, acceptedDevices]);
|
|
44
|
+
React.useEffect(() => {
|
|
43
45
|
if (!onError || !acceptedDevices.length) {
|
|
44
46
|
return;
|
|
45
47
|
}
|
|
@@ -47,7 +49,8 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
|
|
|
47
49
|
return () => {
|
|
48
50
|
btManagerRef.current?.onError(undefined);
|
|
49
51
|
};
|
|
50
|
-
}, [onError, acceptedDevices])
|
|
52
|
+
}, [onError, acceptedDevices]);
|
|
53
|
+
React.useEffect(() => {
|
|
51
54
|
if (!onResult || !acceptedDevices.length) {
|
|
52
55
|
return;
|
|
53
56
|
}
|
|
@@ -87,6 +90,17 @@ export const BTProviderChildWrapper = /*#__PURE__*/React.memo(({
|
|
|
87
90
|
btManagerRef.current?.onDeviceStatusChanged(undefined);
|
|
88
91
|
};
|
|
89
92
|
}, [onDeviceStatusChanged, acceptedDevices, setDeviceListItems]);
|
|
93
|
+
React.useEffect(() => {
|
|
94
|
+
const listener = AppState.addEventListener("change", state => {
|
|
95
|
+
if (state !== "active") {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
btManagerRef.current?.startScan();
|
|
99
|
+
});
|
|
100
|
+
return () => {
|
|
101
|
+
listener.remove();
|
|
102
|
+
};
|
|
103
|
+
}, []);
|
|
90
104
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
91
105
|
children: children
|
|
92
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;
|
|
1
|
+
{"version":3,"names":["React","AppState","useDeviceList","sentryLogger","BTManager","Fragment","_Fragment","jsx","_jsx","BTProviderChildWrapper","memo","bleManager","acceptedDevices","children","onDeviceFound","onError","onDeviceStatusChanged","onResult","btManagerRef","useRef","setDeviceListItems","useEffect","length","btManager","current","startScan","destroy","undefined","status","deviceData","measurementTypeKey","prev","newList","index","findIndex","item","deviceType","name","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/components/bt-provider-child-wrapper.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,aAAa,QAAQ,qDAAkD;AAChF,SAASC,YAAY,QAAQ,sCAAmC;AAChE,SAASC,SAAS,QAAQ,2BAAwB;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAInD,OAAO,MAAMC,sBAAsB,gBAAGT,KAAK,CAACU,IAAI,CAC9C,CAAyC;EACvCC,UAAU;EACVC,eAAe,GAAG,EAAkB;EACpCC,QAAQ;EACRC,aAAa;EACbC,OAAO;EACPC,qBAAqB;EACrBC;AACuD,CAAC,KAAK;EAC7D,MAAMC,YAAY,GAAGlB,KAAK,CAACmB,MAAM,CAAsB,IAAI,CAAC;EAC5D,MAAM;IAAEC;EAAmB,CAAC,GAAGlB,aAAa,CAAC,CAAC;EAE9CF,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACT,eAAe,CAACU,MAAM,EAAE;MAC3B;IACF;IACAnB,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAE1C,MAAMoB,SAAS,GAAG,IAAInB,SAAS,CAACO,UAAU,EAAEC,eAAe,CAAC;IAE5DM,YAAY,CAACM,OAAO,GAAGD,SAAS;IAEhCA,SAAS,CAACE,SAAS,CAAC,CAAC;IAErB,OAAO,MAAM;MACXtB,YAAY,CAAC,MAAM,EAAE,yBAAyB,CAAC;MAC/CoB,SAAS,CAACG,OAAO,CAAC,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACd,eAAe,EAAED,UAAU,CAAC,CAAC;EAEjCX,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACP,aAAa,IAAI,CAACF,eAAe,CAACU,MAAM,EAAE;MAC7C;IACF;IACAJ,YAAY,CAACM,OAAO,EAAEV,aAAa,CAACA,aAAa,CAAC;IAElD,OAAO,MAAM;MACXI,YAAY,CAACM,OAAO,EAAEV,aAAa,CAACa,SAAS,CAAC;IAChD,CAAC;EACH,CAAC,EAAE,CAACb,aAAa,EAAEF,eAAe,CAAC,CAAC;EAEpCZ,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACN,OAAO,IAAI,CAACH,eAAe,CAACU,MAAM,EAAE;MACvC;IACF;IACAJ,YAAY,CAACM,OAAO,EAAET,OAAO,CAACA,OAAO,CAAC;IAEtC,OAAO,MAAM;MACXG,YAAY,CAACM,OAAO,EAAET,OAAO,CAACY,SAAS,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,CAACZ,OAAO,EAAEH,eAAe,CAAC,CAAC;EAE9BZ,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACJ,QAAQ,IAAI,CAACL,eAAe,CAACU,MAAM,EAAE;MACxC;IACF;IACAJ,YAAY,CAACM,OAAO,EAAEP,QAAQ,CAACA,QAAQ,CAAC;IAExC,OAAO,MAAM;MACXC,YAAY,CAACM,OAAO,EAAEP,QAAQ,CAACU,SAAS,CAAC;IAC3C,CAAC;EACH,CAAC,EAAE,CAACV,QAAQ,EAAEL,eAAe,CAAC,CAAC;EAE/BZ,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,IAAI,CAACL,qBAAqB,IAAI,CAACJ,eAAe,CAACU,MAAM,EAAE;MACrD;IACF;IAEAJ,YAAY,CAACM,OAAO,EAAER,qBAAqB,CACzC,CAAC;MAAEY,MAAM;MAAEC,UAAU;MAAEC;IAAmB,CAAC,KAAK;MAC9CV,kBAAkB,CAAEW,IAAI,IAAK;QAC3B,MAAMC,OAAO,GAAG,CAAC,GAAGD,IAAI,CAAC;QAEzB,MAAME,KAAK,GAAGD,OAAO,CAACE,SAAS,CAC5BC,IAAI,IAAKA,IAAI,CAACC,UAAU,KAAKP,UAAU,CAACQ,IAC3C,CAAC;QAED,IAAIJ,KAAK,KAAK,CAAC,CAAC,IAAI,CAACD,OAAO,CAACC,KAAK,CAAC,EAAE;UACnC,OAAOD,OAAO;QAChB;QAEAA,OAAO,CAACC,KAAK,CAAC,GAAG;UAAE,GAAGD,OAAO,CAACC,KAAK,CAAC;UAAEL;QAAO,CAAC;QAE9C,OAAOI,OAAO;MAChB,CAAC,CAAC;MAEFhB,qBAAqB,CAAC;QAAEY,MAAM;QAAEC,UAAU;QAAEC;MAAmB,CAAC,CAAC;IACnE,CACF,CAAC;IAED,OAAO,MAAM;MACXZ,YAAY,CAACM,OAAO,EAAER,qBAAqB,CAACW,SAAS,CAAC;IACxD,CAAC;EACH,CAAC,EAAE,CAACX,qBAAqB,EAAEJ,eAAe,EAAEQ,kBAAkB,CAAC,CAAC;EAEhEpB,KAAK,CAACqB,SAAS,CAAC,MAAM;IACpB,MAAMiB,QAAQ,GAAGrC,QAAQ,CAACsC,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MAC9D,IAAIA,KAAK,KAAK,QAAQ,EAAE;QACtB;MACF;MACAtB,YAAY,CAACM,OAAO,EAAEC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,MAAM;MACXa,QAAQ,CAACG,MAAM,CAAC,CAAC;IACnB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBAAOjC,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CACF,CAEsB","ignoreList":[]}
|
|
@@ -14,27 +14,31 @@ export const useRequestPermissions = ({
|
|
|
14
14
|
Linking.openSettings();
|
|
15
15
|
}, []);
|
|
16
16
|
React.useEffect(() => {
|
|
17
|
+
const requestPermissions = async () => {
|
|
18
|
+
const permissions = Platform.select({
|
|
19
|
+
android: [PERMISSIONS.ANDROID.BLUETOOTH_CONNECT, PERMISSIONS.ANDROID.BLUETOOTH_SCAN, PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION],
|
|
20
|
+
ios: [PERMISSIONS.IOS.BLUETOOTH]
|
|
21
|
+
});
|
|
22
|
+
sentryLogger("info", "BT_PROVIDER: Permissions requesting", {
|
|
23
|
+
permissions
|
|
24
|
+
});
|
|
25
|
+
requestMultiple(permissions).then(permissions => {
|
|
26
|
+
const allGranted = Object.values(permissions).some(permission => permission === "granted");
|
|
27
|
+
sentryLogger("info", "BT_PROVIDER: Permissions requested", {
|
|
28
|
+
permissions,
|
|
29
|
+
allGranted
|
|
30
|
+
});
|
|
31
|
+
onChangeRef.current?.(allGranted);
|
|
32
|
+
setAccessPermission(allGranted);
|
|
33
|
+
}).catch(error => slog(error, "bt permission request error"));
|
|
34
|
+
};
|
|
17
35
|
const listener = AppState.addEventListener("change", state => {
|
|
18
36
|
if (state !== "active") {
|
|
19
37
|
return;
|
|
20
38
|
}
|
|
39
|
+
requestPermissions();
|
|
21
40
|
});
|
|
22
|
-
|
|
23
|
-
android: [PERMISSIONS.ANDROID.BLUETOOTH_CONNECT, PERMISSIONS.ANDROID.BLUETOOTH_SCAN, PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION],
|
|
24
|
-
ios: [PERMISSIONS.IOS.BLUETOOTH]
|
|
25
|
-
});
|
|
26
|
-
sentryLogger("info", "BT_PROVIDER: Permissions requesting", {
|
|
27
|
-
permissions
|
|
28
|
-
});
|
|
29
|
-
requestMultiple(permissions).then(permissions => {
|
|
30
|
-
const allGranted = Object.values(permissions).some(permission => permission === "granted");
|
|
31
|
-
sentryLogger("info", "BT_PROVIDER: Permissions requested", {
|
|
32
|
-
permissions,
|
|
33
|
-
allGranted
|
|
34
|
-
});
|
|
35
|
-
onChangeRef.current?.(allGranted);
|
|
36
|
-
setAccessPermission(allGranted);
|
|
37
|
-
}).catch(error => slog(error, "bt permission request error"));
|
|
41
|
+
requestPermissions();
|
|
38
42
|
return () => {
|
|
39
43
|
listener.remove();
|
|
40
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","AppState","Linking","Platform","PERMISSIONS","requestMultiple","slog","sentryLogger","useRequestPermissions","onAccessPermissionChanged","onChangeRef","useRef","accessPermission","setAccessPermission","useState","undefined","openBleSetting","useCallback","openSettings","useEffect","
|
|
1
|
+
{"version":3,"names":["React","AppState","Linking","Platform","PERMISSIONS","requestMultiple","slog","sentryLogger","useRequestPermissions","onAccessPermissionChanged","onChangeRef","useRef","accessPermission","setAccessPermission","useState","undefined","openBleSetting","useCallback","openSettings","useEffect","requestPermissions","permissions","select","android","ANDROID","BLUETOOTH_CONNECT","BLUETOOTH_SCAN","ACCESS_FINE_LOCATION","ios","IOS","BLUETOOTH","then","allGranted","Object","values","some","permission","current","catch","error","listener","addEventListener","state","remove"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/hooks/use-request-permissions.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,cAAc;AAC1D,SAEEC,WAAW,EACXC,eAAe,QACV,0BAA0B;AAEjC,SAASC,IAAI,QAAQ,wBAAe;AACpC,SAASC,YAAY,QAAQ,sCAAmC;AAIhE,OAAO,MAAMC,qBAAqB,GAAGA,CAAC;EACpCC;AACuE,CAAC,KAAK;EAC7E,MAAMC,WAAW,GAAGV,KAAK,CAACW,MAAM,CAC9BF,yBACF,CAAC;EAED,MAAM,CAACG,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGb,KAAK,CAACc,QAAQ,CAE5DC,SAAS,CAAC;EAEZ,MAAMC,cAAc,GAAGhB,KAAK,CAACiB,WAAW,CAAC,MAAM;IAC7Cf,OAAO,CAACgB,YAAY,CAAC,CAAC;EACxB,CAAC,EAAE,EAAE,CAAC;EAENlB,KAAK,CAACmB,SAAS,CAAC,MAAM;IACpB,MAAMC,kBAAkB,GAAG,MAAAA,CAAA,KAAY;MACrC,MAAMC,WAAW,GAAGlB,QAAQ,CAACmB,MAAM,CAAC;QAClCC,OAAO,EAAE,CACPnB,WAAW,CAACoB,OAAO,CAACC,iBAAiB,EACrCrB,WAAW,CAACoB,OAAO,CAACE,cAAc,EAClCtB,WAAW,CAACoB,OAAO,CAACG,oBAAoB,CACzC;QACDC,GAAG,EAAE,CAACxB,WAAW,CAACyB,GAAG,CAACC,SAAS;MACjC,CAAC,CAAiB;MAElBvB,YAAY,CAAC,MAAM,EAAE,qCAAqC,EAAE;QAC1Dc;MACF,CAAC,CAAC;MAEFhB,eAAe,CAACgB,WAAW,CAAC,CACzBU,IAAI,CAAEV,WAAW,IAAK;QACrB,MAAMW,UAAU,GAAGC,MAAM,CAACC,MAAM,CAACb,WAAW,CAAC,CAACc,IAAI,CAC/CC,UAAU,IAAKA,UAAU,KAAK,SACjC,CAAC;QAED7B,YAAY,CAAC,MAAM,EAAE,oCAAoC,EAAE;UACzDc,WAAW;UACXW;QACF,CAAC,CAAC;QACFtB,WAAW,CAAC2B,OAAO,GAAGL,UAAU,CAAC;QACjCnB,mBAAmB,CAACmB,UAAU,CAAC;MACjC,CAAC,CAAC,CACDM,KAAK,CAAEC,KAAK,IAAKjC,IAAI,CAACiC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IACjE,CAAC;IAED,MAAMC,QAAQ,GAAGvC,QAAQ,CAACwC,gBAAgB,CAAC,QAAQ,EAAGC,KAAK,IAAK;MAC9D,IAAIA,KAAK,KAAK,QAAQ,EAAE;QACtB;MACF;MACAtB,kBAAkB,CAAC,CAAC;IACtB,CAAC,CAAC;IAEFA,kBAAkB,CAAC,CAAC;IAEpB,OAAO,MAAM;MACXoB,QAAQ,CAACG,MAAM,CAAC,CAAC;IACnB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN3C,KAAK,CAACmB,SAAS,CAAC,MAAM;IACpBT,WAAW,CAAC2B,OAAO,GAAG5B,yBAAyB;EACjD,CAAC,EAAE,CAACA,yBAAyB,CAAC,CAAC;EAE/B,OAAO;IACLG,gBAAgB;IAChBI;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/* eslint-disable max-lines */
|
|
3
4
|
import { Linking, Platform } from "react-native";
|
|
4
5
|
import { ScanMode, State } from "react-native-ble-plx";
|
|
6
|
+
import { slog } from "../../helpers/index.js";
|
|
5
7
|
import { sentryLogger } from "../../helpers/utils/sentry-logger.js";
|
|
6
8
|
import { DeviceCreator } from "./device-creator.js";
|
|
7
9
|
export class BTManager {
|
|
8
10
|
static MAX_DEVICES = 15; // Safety limit to prevent unbounded growth
|
|
9
11
|
devices = new Map();
|
|
10
12
|
eventSubscriptions = [];
|
|
13
|
+
lastScanTimestamp = 0;
|
|
11
14
|
constructor(bleManager, acceptedDevices) {
|
|
12
15
|
this.bleManager = bleManager;
|
|
13
16
|
this.acceptedDevices = acceptedDevices;
|
|
@@ -22,6 +25,7 @@ export class BTManager {
|
|
|
22
25
|
this.stateChangeListener.remove();
|
|
23
26
|
this.stateChangeListener = undefined;
|
|
24
27
|
}
|
|
28
|
+
this.lastScanTimestamp = 0;
|
|
25
29
|
|
|
26
30
|
// Then clear all callbacks
|
|
27
31
|
this.onErrorCallback = undefined;
|
|
@@ -35,6 +39,12 @@ export class BTManager {
|
|
|
35
39
|
this.deviceCreator.destroy();
|
|
36
40
|
};
|
|
37
41
|
startScan = () => {
|
|
42
|
+
if (Date.now() - this.lastScanTimestamp < 60_000) {
|
|
43
|
+
sentryLogger("warning", "BT_MANAGER: startScan called too frequently, skipping (within 1 min window)");
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.lastScanTimestamp = Date.now();
|
|
47
|
+
|
|
38
48
|
// Remove previous state change listener to prevent accumulation
|
|
39
49
|
if (this.stateChangeListener) {
|
|
40
50
|
this.stateChangeListener.remove();
|
|
@@ -77,6 +87,16 @@ export class BTManager {
|
|
|
77
87
|
// Remove all event subscriptions to prevent memory leaks
|
|
78
88
|
this.eventSubscriptions.forEach(sub => sub.remove());
|
|
79
89
|
this.eventSubscriptions = [];
|
|
90
|
+
|
|
91
|
+
// Clear all callbacks
|
|
92
|
+
this.onErrorCallback = undefined;
|
|
93
|
+
this.onDeviceFoundCallback = undefined;
|
|
94
|
+
this.onResultCallback = undefined;
|
|
95
|
+
this.onDeviceStatusChangedCallback = undefined;
|
|
96
|
+
this.devices.forEach(device => {
|
|
97
|
+
device.destroy();
|
|
98
|
+
});
|
|
99
|
+
this.devices.clear();
|
|
80
100
|
};
|
|
81
101
|
onDeviceFound = callback => {
|
|
82
102
|
sentryLogger("info", "BT_MANAGER: Setting onDeviceFound callback");
|
|
@@ -106,6 +126,9 @@ export class BTManager {
|
|
|
106
126
|
sentryLogger("error", "BT_MANAGER: Scan result error", {
|
|
107
127
|
error
|
|
108
128
|
});
|
|
129
|
+
slog(error, "BT_MANAGER: Scan result error", {
|
|
130
|
+
error
|
|
131
|
+
});
|
|
109
132
|
return;
|
|
110
133
|
}
|
|
111
134
|
if (!device || !device.name) {
|
|
@@ -131,10 +154,13 @@ export class BTManager {
|
|
|
131
154
|
const deviceClass = this.deviceCreator.createDevice({
|
|
132
155
|
device,
|
|
133
156
|
deviceName,
|
|
134
|
-
onError: this.onErrorCallback,
|
|
135
|
-
onDeviceStatusChanged: this.onDeviceStatusChangedCallback,
|
|
136
|
-
onResult: this.onResultCallback,
|
|
137
|
-
onDeviceDisconnected: () =>
|
|
157
|
+
onError: this.onErrorCallback?.bind(this),
|
|
158
|
+
onDeviceStatusChanged: this.onDeviceStatusChangedCallback?.bind(this),
|
|
159
|
+
onResult: this.onResultCallback?.bind(this),
|
|
160
|
+
onDeviceDisconnected: () => {
|
|
161
|
+
this.startScan();
|
|
162
|
+
this.removeDeviceFromFoundedDevices?.bind(this)(device.id);
|
|
163
|
+
}
|
|
138
164
|
});
|
|
139
165
|
this.devices.set(device.id, deviceClass);
|
|
140
166
|
this.onDeviceFoundCallback?.(deviceClass, this);
|
|
@@ -144,6 +170,11 @@ export class BTManager {
|
|
|
144
170
|
deviceId: device?.id,
|
|
145
171
|
deviceName: device?.name
|
|
146
172
|
});
|
|
173
|
+
slog(error, "BT_MANAGER: Error creating device", {
|
|
174
|
+
error,
|
|
175
|
+
deviceId: device?.id,
|
|
176
|
+
deviceName: device?.name
|
|
177
|
+
});
|
|
147
178
|
}
|
|
148
179
|
};
|
|
149
180
|
removeDeviceFromFoundedDevices = deviceId => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Linking","Platform","ScanMode","State","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","
|
|
1
|
+
{"version":3,"names":["Linking","Platform","ScanMode","State","slog","sentryLogger","DeviceCreator","BTManager","MAX_DEVICES","devices","Map","eventSubscriptions","lastScanTimestamp","constructor","bleManager","acceptedDevices","deviceCreator","destroy","stopScan","stateChangeListener","remove","undefined","onErrorCallback","onDeviceFoundCallback","onResultCallback","onDeviceStatusChangedCallback","forEach","device","clear","startScan","Date","now","onStateChange","state","PoweredOn","index","indexOf","splice","startDeviceScan","scanMode","Balanced","onScanResult","OS","sendIntent","enable","push","stopDeviceScan","sub","onDeviceFound","callback","onError","onDeviceStatusChanged","onResult","error","name","has","id","deviceName","getDeviceName","size","deviceId","currentSize","deviceClass","createDevice","bind","onDeviceDisconnected","removeDeviceFromFoundedDevices","set","get","delete"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/services/bt-manager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { MeasurementTypeKey, EcgDiagnosticFlag } from "@ovok/core";
|
|
4
4
|
import { BloodPressureStates } from "@ovok/core/dist/client/observation/types/measurement/BloodPressureStates";
|
|
5
|
+
import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
|
|
5
6
|
import { bloodPressureTranslatedExceptionMap } from "../../../constants/blood-pressure-translated-exception-map.js";
|
|
6
7
|
import { CaseType } from "../../../types/case-type.js";
|
|
7
8
|
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
@@ -15,17 +16,22 @@ export class BP2Device extends BTManagedDevice {
|
|
|
15
16
|
diagramPoints = [];
|
|
16
17
|
duration = 0;
|
|
17
18
|
mainServices = bp2MainServices;
|
|
19
|
+
stuckDataTimeout = 5_000;
|
|
18
20
|
onStreamStart = () => {
|
|
19
21
|
this.collectedValues = [];
|
|
20
22
|
this.diagramPoints = [];
|
|
21
23
|
this.duration = 0;
|
|
22
24
|
};
|
|
23
25
|
validatePackage = pkg => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
if (pkg[0] !== "a5") {
|
|
27
|
+
sentryLogger("info", "BP2_DEVICE: Package does not start with a5");
|
|
28
|
+
const headIndex = pkg.indexOf("a5");
|
|
29
|
+
if (headIndex > 0) {
|
|
30
|
+
pkg = pkg.slice(headIndex);
|
|
31
|
+
}
|
|
27
32
|
}
|
|
28
33
|
if (pkg.length < 7) {
|
|
34
|
+
sentryLogger("info", "BP2_DEVICE: Package is shorter than 7 bytes");
|
|
29
35
|
return false;
|
|
30
36
|
}
|
|
31
37
|
const toNum = hex => parseInt(hex, 16);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","BloodPressureStates","bloodPressureTranslatedExceptionMap","CaseType","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","bp2MainServices","BP2Device","collectedValues","diagramPoints","duration","mainServices","onStreamStart","validatePackage","pkg","headIndex","indexOf","slice","length","toNum","hex","parseInt","lenL","lenH","dataLen","totalLen","handleSuccessResult","successResult","measurementTypeKey","caseType","onError","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","error","checkIfHasErrorForEcg","onResult","handleEcgStream","dataStart","dataEnd","data","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","undefined","diastolic","systolic","heartRate","REGULAR","errorString","get","DEVICE_ERROR","ecgMeasurement","diagnosticResult","POOR_WAVEFORM","LEAD_OFF"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":";;AAAA,SACEA,kBAAkB,EAGlBC,iBAAiB,QACZ,YAAY;AACnB,SAASC,mBAAmB,QAAQ,0EAA0E;AAE9G,SAASC,mCAAmC,QAAQ,+DAA4D;AAChH,SAASC,QAAQ,QAAQ,6BAA0B;AAKnD,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,eAAe,QAAQ,wBAAqB;AAErD,OAAO,MAAMC,SAAS,SAASF,eAAe,CAAwB;EAC5DG,eAAe,GAAa,EAAE;EAC9BC,aAAa,GAAa,EAAE;EAC5BC,QAAQ,GAAW,CAAC;EAElBC,YAAY,GAAeL,eAAe;
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","EcgDiagnosticFlag","BloodPressureStates","sentryLogger","bloodPressureTranslatedExceptionMap","CaseType","hexToByte","i16FromHex","le16FromHex","le32FromHex","BTManagedDevice","bp2MainServices","BP2Device","collectedValues","diagramPoints","duration","mainServices","stuckDataTimeout","onStreamStart","validatePackage","pkg","headIndex","indexOf","slice","length","toNum","hex","parseInt","lenL","lenH","dataLen","totalLen","handleSuccessResult","successResult","measurementTypeKey","caseType","onError","Error","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","RESULT","error","checkIfHasErrorForEcg","onResult","handleEcgStream","dataStart","dataEnd","data","samplingNum","samplesStart","i","byteIndexInData","sampleVal","push","checkIfHasErrorForBloodPressure","bpMeasurement","status","undefined","diastolic","systolic","heartRate","REGULAR","errorString","get","DEVICE_ERROR","ecgMeasurement","diagnosticResult","POOR_WAVEFORM","LEAD_OFF"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { slog } from "../../../helpers/index.js";
|
|
3
4
|
import { sentryLogger } from "../../../helpers/utils/sentry-logger.js";
|
|
4
5
|
import { DeviceStatus } from "../../types/device-status.js";
|
|
5
6
|
import { base64ToHex } from "../../utils/base-64-to-hex.js";
|
|
6
7
|
import { hexToBase64 } from "../../utils/hex-to-base-64.js";
|
|
7
8
|
export class BTConnectionHandler {
|
|
8
9
|
characteristicSubscriptions = [];
|
|
10
|
+
isSendingCommand = false;
|
|
11
|
+
retryCount = 0;
|
|
9
12
|
constructor(device, mainServices, callbacks) {
|
|
10
13
|
this.device = device;
|
|
11
14
|
this.mainServices = mainServices;
|
|
@@ -30,18 +33,22 @@ export class BTConnectionHandler {
|
|
|
30
33
|
destroy = () => {
|
|
31
34
|
this.characteristicSubscriptions.forEach(sub => sub?.remove());
|
|
32
35
|
this.characteristicSubscriptions = [];
|
|
36
|
+
this.isSendingCommand = false;
|
|
37
|
+
this.retryCount = 0;
|
|
33
38
|
this.onDisconnectSubscription?.remove();
|
|
34
39
|
};
|
|
35
40
|
sendCommandToDevice = async () => {
|
|
36
|
-
|
|
37
|
-
if (!isConnected) {
|
|
41
|
+
if (this.isSendingCommand) {
|
|
38
42
|
return;
|
|
39
43
|
}
|
|
44
|
+
this.isSendingCommand = true;
|
|
40
45
|
for (const mainService of this.mainServices) {
|
|
41
46
|
if (mainService.writeUuid) {
|
|
42
47
|
await this.sendCommand(mainService);
|
|
43
48
|
}
|
|
44
49
|
}
|
|
50
|
+
this.isSendingCommand = false;
|
|
51
|
+
this.retryCount = 0;
|
|
45
52
|
};
|
|
46
53
|
connectWithRetries = async () => {
|
|
47
54
|
const maxRetries = 5;
|
|
@@ -124,14 +131,28 @@ export class BTConnectionHandler {
|
|
|
124
131
|
if (!mainService.writeUuid) {
|
|
125
132
|
return;
|
|
126
133
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
while (this.retryCount < 3) {
|
|
135
|
+
try {
|
|
136
|
+
const isConnected = await this.device.isConnected();
|
|
137
|
+
if (!isConnected) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const command = hexToBase64(mainService.writeUuid.mainCommandUuid);
|
|
141
|
+
await this.device.writeCharacteristicWithResponseForService(mainService.uuid, mainService.writeUuid.uuid, command);
|
|
142
|
+
this.retryCount = 0;
|
|
143
|
+
break;
|
|
144
|
+
} catch (error) {
|
|
145
|
+
this.retryCount++;
|
|
146
|
+
sentryLogger("error", "DEVICE: Error sending command", {
|
|
147
|
+
error,
|
|
148
|
+
deviceName: this.device.name
|
|
149
|
+
});
|
|
150
|
+
if (this.retryCount === 3) {
|
|
151
|
+
slog(error, "BT_CONNECTION_HANDLER: Error sending command", {
|
|
152
|
+
deviceName: this.device.name
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
135
156
|
}
|
|
136
157
|
};
|
|
137
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sentryLogger","DeviceStatus","base64ToHex","hexToBase64","BTConnectionHandler","characteristicSubscriptions","constructor","device","mainServices","callbacks","connect","connectWithRetries","onStatusChanged","CONNECTED","discoverAllServicesAndCharacteristics","onDisconnectSubscription","onDisconnected","onDeviceDisconnected","subscribeToAllCharacteristics","error","deviceName","name","onError","DISCONNECTED","destroy","forEach","sub","remove","sendCommandToDevice","
|
|
1
|
+
{"version":3,"names":["slog","sentryLogger","DeviceStatus","base64ToHex","hexToBase64","BTConnectionHandler","characteristicSubscriptions","isSendingCommand","retryCount","constructor","device","mainServices","callbacks","connect","connectWithRetries","onStatusChanged","CONNECTED","discoverAllServicesAndCharacteristics","onDisconnectSubscription","onDisconnected","onDeviceDisconnected","subscribeToAllCharacteristics","error","deviceName","name","onError","DISCONNECTED","destroy","forEach","sub","remove","sendCommandToDevice","mainService","writeUuid","sendCommand","maxRetries","retryDelay","maxDelay","connected","isConnected","deviceId","id","Error","message","String","errorCode","willRetry","Promise","resolve","setTimeout","Math","min","pow","monitorUuid","monitorUuids","subscription","monitorCharacteristicForService","uuid","result","value","hexValue","onDataReceived","push","command","mainCommandUuid","writeCharacteristicWithResponseForService"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-connection-handler.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,16 +6,21 @@ import { parseMeasurement } from "../../utils/parse-measurement.js";
|
|
|
6
6
|
export class BTDataProcessor {
|
|
7
7
|
collectedValues = [];
|
|
8
8
|
isMeasuring = false;
|
|
9
|
-
constructor(mainServices, callbacks) {
|
|
9
|
+
constructor(device, mainServices, stuckDataTimeoutDuration, callbacks) {
|
|
10
|
+
this.device = device;
|
|
10
11
|
this.mainServices = mainServices;
|
|
12
|
+
this.stuckDataTimeoutDuration = stuckDataTimeoutDuration;
|
|
11
13
|
this.callbacks = callbacks;
|
|
12
14
|
}
|
|
13
15
|
destroy = () => {
|
|
14
16
|
this.collectedValues = [];
|
|
15
17
|
this.isMeasuring = false;
|
|
18
|
+
clearTimeout(this.stuckDataTimeout);
|
|
19
|
+
this.stuckDataTimeout = undefined;
|
|
16
20
|
};
|
|
17
21
|
processData = (uuid, hexValue) => {
|
|
18
22
|
this.collectedValues.push(...hexValue);
|
|
23
|
+
this.startStuckTimeout();
|
|
19
24
|
const isValid = this.callbacks.validatePackage(this.collectedValues, uuid);
|
|
20
25
|
if (!isValid) {
|
|
21
26
|
return;
|
|
@@ -103,5 +108,18 @@ export class BTDataProcessor {
|
|
|
103
108
|
this.collectedValues = [];
|
|
104
109
|
this.callbacks.onSendCommandToDevice?.();
|
|
105
110
|
};
|
|
111
|
+
startStuckTimeout = () => {
|
|
112
|
+
if (this.stuckDataTimeout) {
|
|
113
|
+
clearTimeout(this.stuckDataTimeout);
|
|
114
|
+
}
|
|
115
|
+
this.stuckDataTimeout = setTimeout(() => {
|
|
116
|
+
this.callbacks.onError?.(new Error("feedback-messages.measurement.stuck-error", {
|
|
117
|
+
cause: {
|
|
118
|
+
message: "Device is stuck"
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
121
|
+
this.device.cancelConnection?.();
|
|
122
|
+
}, this.stuckDataTimeoutDuration);
|
|
123
|
+
};
|
|
106
124
|
}
|
|
107
125
|
//# sourceMappingURL=bt-data-processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CaseType","DeviceStatus","parseMeasurement","BTDataProcessor","collectedValues","isMeasuring","constructor","mainServices","callbacks","destroy","processData","uuid","hexValue","push","isValid","validatePackage","data","extractData","resetDataAndSendCommandToDevice","handleStatusChanges","parsingModel","findParsingModel","value","caseValuePosition","map","index","join","parsingCase","findParsingCase","parsedData","parseData","measurementTypeKey","mainService","characteristic","monitorUuids","find","e","toLowerCase","caseValue","cases","successResult","caseType","STREAM","onStreamStart","onStatusChanged","MEASURING","OTHER","CONNECTED","skipConnectedChange","onResult","RESULT","onSendCommandToDevice"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["CaseType","DeviceStatus","parseMeasurement","BTDataProcessor","collectedValues","isMeasuring","constructor","device","mainServices","stuckDataTimeoutDuration","callbacks","destroy","clearTimeout","stuckDataTimeout","undefined","processData","uuid","hexValue","push","startStuckTimeout","isValid","validatePackage","data","extractData","resetDataAndSendCommandToDevice","handleStatusChanges","parsingModel","findParsingModel","value","caseValuePosition","map","index","join","parsingCase","findParsingCase","parsedData","parseData","measurementTypeKey","mainService","characteristic","monitorUuids","find","e","toLowerCase","caseValue","cases","successResult","caseType","STREAM","onStreamStart","onStatusChanged","MEASURING","OTHER","CONNECTED","skipConnectedChange","onResult","RESULT","onSendCommandToDevice","setTimeout","onError","Error","cause","message","cancelConnection"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,10 @@ import { DeviceStatus } from "../../types/device-status.js";
|
|
|
5
5
|
import { BTConnectionHandler } from "./bt-connection-handler.js";
|
|
6
6
|
import { BTDataProcessor } from "./bt-data-processor.js";
|
|
7
7
|
export class BTManagedDevice {
|
|
8
|
+
/**
|
|
9
|
+
* The timeout in milliseconds for the stuck data.
|
|
10
|
+
*/
|
|
11
|
+
|
|
8
12
|
constructor(device, {
|
|
9
13
|
deviceName,
|
|
10
14
|
onError: onErrorCallback,
|
|
@@ -97,13 +101,13 @@ export class BTManagedDevice {
|
|
|
97
101
|
this.dataProcessor?.processData(uuid, hexValue);
|
|
98
102
|
}
|
|
99
103
|
});
|
|
100
|
-
this.dataProcessor = new BTDataProcessor(this.mainServices, {
|
|
104
|
+
this.dataProcessor = new BTDataProcessor(this.device, this.mainServices, this.stuckDataTimeout, {
|
|
101
105
|
onStatusChanged: this.onDeviceStatusChanged?.bind(this),
|
|
102
106
|
onStreamStart: this.onStreamStart?.bind(this),
|
|
103
107
|
validatePackage: this.validatePackage.bind(this),
|
|
104
108
|
onResult: (parsedData, collectedValues) => {
|
|
105
109
|
try {
|
|
106
|
-
return this.handleSuccessResult(parsedData, collectedValues);
|
|
110
|
+
return this.handleSuccessResult.bind(this)(parsedData, collectedValues);
|
|
107
111
|
} catch (error) {
|
|
108
112
|
this.onError?.bind(this)(error);
|
|
109
113
|
}
|