@ovok/native 1.6.27 → 1.6.28
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/services/custom/compile-custom-lepu.js +11 -1
- package/lib/commonjs/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +47 -20
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js +3 -2
- package/lib/commonjs/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.advertisement.js +33 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.advertisement.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +10 -0
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js +43 -12
- package/lib/commonjs/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.oximeters.js +36 -0
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.oximeters.js.map +1 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js +11 -1
- package/lib/module/modules/bt-management/services/custom/compile-custom-lepu.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js +46 -20
- package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js +4 -3
- package/lib/module/modules/bt-management/services/devices/custom/custom.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.advertisement.js +27 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.advertisement.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js +10 -0
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.identity-gate.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js +43 -12
- package/lib/module/modules/bt-management/services/devices/lepu/lepu.transports.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js +1 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.bp-monitors.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.oximeters.js +36 -0
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.oximeters.js.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +3 -2
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts +7 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +10 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +0 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts +0 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts +4 -1
- package/lib/typescript/commonjs/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/custom/compile-custom-lepu.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts +3 -2
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/custom/custom.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts +7 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.advertisement.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.identity-gate.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts +10 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/lepu/lepu.transports.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts +0 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.bp-monitors.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts +0 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.oximeters.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts +4 -1
- package/lib/typescript/module/src/modules/bt-management/types/custom-lepu-spec.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ const assertProtocol = (id, protocol) => {
|
|
|
16
16
|
};
|
|
17
17
|
const assertStartBytes = (id, startBytes) => {
|
|
18
18
|
if (!Array.isArray(startBytes) || startBytes.length === 0) {
|
|
19
|
-
throw customDeviceError(id, "lepu.startBytes",
|
|
19
|
+
throw customDeviceError(id, "lepu.startBytes", 'must list at least one frame start byte, such as ["a5"]');
|
|
20
20
|
}
|
|
21
21
|
return startBytes.map((byte, index) => {
|
|
22
22
|
const normalized = String(byte).toLowerCase();
|
|
@@ -96,6 +96,10 @@ export const compileCustomLepu = (id, spec, serviceUuids) => {
|
|
|
96
96
|
if (!serviceUuids.includes(serviceUuid)) {
|
|
97
97
|
throw customDeviceError(id, "lepu.write.serviceUuid", `is "${serviceUuid}", which this device does not declare among its services`);
|
|
98
98
|
}
|
|
99
|
+
const rejectEncryptionAtBytes = lepu.rejectEncryptionAtBytes;
|
|
100
|
+
if (rejectEncryptionAtBytes !== undefined && (!Array.isArray(rejectEncryptionAtBytes) || rejectEncryptionAtBytes.some(index => !Number.isInteger(index) || index < 0))) {
|
|
101
|
+
throw customDeviceError(id, "lepu.rejectEncryptionAtBytes", "must be a list of non-negative manufacturer-data byte indexes");
|
|
102
|
+
}
|
|
99
103
|
return {
|
|
100
104
|
...(protocol === undefined ? {} : {
|
|
101
105
|
protocol
|
|
@@ -115,6 +119,12 @@ export const compileCustomLepu = (id, spec, serviceUuids) => {
|
|
|
115
119
|
...(lepu.setClockBeforeInfo === undefined ? {} : {
|
|
116
120
|
setClockBeforeInfo: Boolean(lepu.setClockBeforeInfo)
|
|
117
121
|
}),
|
|
122
|
+
...(lepu.manufacturerDataProtocol === undefined ? {} : {
|
|
123
|
+
manufacturerDataProtocol: lepu.manufacturerDataProtocol
|
|
124
|
+
}),
|
|
125
|
+
...(rejectEncryptionAtBytes === undefined ? {} : {
|
|
126
|
+
rejectEncryptionAtBytes: [...rejectEncryptionAtBytes]
|
|
127
|
+
}),
|
|
118
128
|
write: {
|
|
119
129
|
serviceUuid,
|
|
120
130
|
characteristicUuid: normalizeBleUuid(id, "lepu.write.characteristicUuid", lepu.write?.characteristicUuid)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["customDeviceError","normalizeBleUuid","HEX_BYTE","MAX_OPCODE","MAX_DEVICE_TYPE","assertProtocol","id","protocol","undefined","String","assertStartBytes","startBytes","Array","isArray","length","map","byte","index","normalized","toLowerCase","test","assertDeviceTypes","deviceTypes","deviceType","Number","isInteger","assertPollCommand","lepu","pollCommand","compileCustomLepu","spec","serviceUuids","services","some","service","write","expectedDeviceTypes","ecgFileDecoder","requestStartByte","serviceUuid","includes","writeWithoutResponse","Boolean","setClockBeforeInfo","characteristicUuid"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-lepu.ts"],"mappings":";;AAGA,SAASA,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,gBAAgB,QAAQ,yBAAsB;AAEvD,MAAMC,QAAQ,GAAG,eAAe;AAChC,MAAMC,UAAU,GAAG,IAAI;AACvB,MAAMC,eAAe,GAAG,MAAM;AAE9B,MAAMC,cAAc,GAAGA,CACrBC,EAAU,EACVC,QAAiB,KACsB;EACvC,IAAIA,QAAQ,KAAKC,SAAS,EAAE;IAC1B,OAAOA,SAAS;EAClB;EAEA,IAAID,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,eAAe,EAAE;IACrD,MAAMP,iBAAiB,CACrBM,EAAE,EACF,eAAe,EACf,OAAOG,MAAM,CAACF,QAAQ,CAAC,qCACzB,CAAC;EACH;EAEA,OAAOA,QAAQ;AACjB,CAAC;AAED,MAAMG,gBAAgB,GAAGA,CAACJ,EAAU,EAAEK,UAAmB,KAAe;EACtE,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,UAAU,CAAC,IAAIA,UAAU,CAACG,MAAM,KAAK,CAAC,EAAE;IACzD,MAAMd,iBAAiB,CACrBM,EAAE,EACF,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"names":["customDeviceError","normalizeBleUuid","HEX_BYTE","MAX_OPCODE","MAX_DEVICE_TYPE","assertProtocol","id","protocol","undefined","String","assertStartBytes","startBytes","Array","isArray","length","map","byte","index","normalized","toLowerCase","test","assertDeviceTypes","deviceTypes","deviceType","Number","isInteger","assertPollCommand","lepu","pollCommand","compileCustomLepu","spec","serviceUuids","services","some","service","write","expectedDeviceTypes","ecgFileDecoder","requestStartByte","serviceUuid","includes","rejectEncryptionAtBytes","writeWithoutResponse","Boolean","setClockBeforeInfo","manufacturerDataProtocol","characteristicUuid"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/custom/compile-custom-lepu.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { sentryLogger } from "../../../../helpers/utils/sentry-logger.js";
|
|
4
|
+
import { viatomOxygenUsesV2 } from "../lepu/lepu.advertisement.js";
|
|
4
5
|
import { LepuCommandBuilder } from "../lepu/lepu.command-builder.js";
|
|
5
6
|
import { LepuIdentityGate } from "../lepu/lepu.identity-gate.js";
|
|
7
|
+
import { lepuTransports } from "../lepu/lepu.transports.js";
|
|
6
8
|
|
|
7
9
|
/** Registration guarantees at least one start byte; this keeps the indexed read total. */
|
|
8
10
|
const DEFAULT_START_BYTE = "a5";
|
|
@@ -34,24 +36,48 @@ const recordLepuIdentity = (deviceData, info) => {
|
|
|
34
36
|
protocolMaxLength: info.protocolMaxLength
|
|
35
37
|
});
|
|
36
38
|
};
|
|
37
|
-
const createLepuSequencer = (lepu, report, clockSync) =>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
const createLepuSequencer = (lepu, report, clockSync, manufacturerData) => {
|
|
40
|
+
const selected = selectLepu(lepu, manufacturerData);
|
|
41
|
+
return new LepuIdentityGate({
|
|
42
|
+
write: {
|
|
43
|
+
serviceUuid: selected.write.serviceUuid,
|
|
44
|
+
characteristicUuid: selected.write.characteristicUuid
|
|
45
|
+
},
|
|
46
|
+
builder: new LepuCommandBuilder(selected.requestStartByte ?? selected.startBytes[0] ?? DEFAULT_START_BYTE, {
|
|
47
|
+
fixedSequence: selected.protocol === "viatom-oxygen"
|
|
48
|
+
}),
|
|
49
|
+
protocol: selected.protocol,
|
|
50
|
+
writeWithoutResponse: selected.writeWithoutResponse,
|
|
51
|
+
setClockBeforeInfo: selected.setClockBeforeInfo,
|
|
52
|
+
clockSync,
|
|
53
|
+
expectedDeviceTypes: selected.expectedDeviceTypes,
|
|
54
|
+
...(selected.pollCommand === undefined ? {} : {
|
|
55
|
+
pollCommand: selected.pollCommand
|
|
56
|
+
}),
|
|
57
|
+
manufacturerData,
|
|
58
|
+
rejectEncryptionAtBytes: selected.rejectEncryptionAtBytes,
|
|
59
|
+
onIdentified: report.onIdentified,
|
|
60
|
+
onRefused: report.onRefused
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const selectLepu = (lepu, manufacturerData) => {
|
|
64
|
+
if (lepu.manufacturerDataProtocol !== "viatom-oxygen" || !viatomOxygenUsesV2(manufacturerData)) {
|
|
65
|
+
return lepu;
|
|
66
|
+
}
|
|
67
|
+
const transport = lepuTransports.aw1;
|
|
68
|
+
return {
|
|
69
|
+
...lepu,
|
|
70
|
+
protocol: "v2",
|
|
71
|
+
startBytes: ["a5"],
|
|
72
|
+
requestStartByte: "a5",
|
|
73
|
+
write: {
|
|
74
|
+
serviceUuid: transport.serviceUuid,
|
|
75
|
+
characteristicUuid: transport.writeUuid
|
|
76
|
+
},
|
|
77
|
+
pollCommand: 0x02,
|
|
78
|
+
writeWithoutResponse: true,
|
|
79
|
+
setClockBeforeInfo: false
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
export { createLepuSequencer, recordLepuIdentity, selectLepu };
|
|
57
83
|
//# sourceMappingURL=custom-lepu-sequencer.js.map
|
package/lib/module/modules/bt-management/services/devices/custom/custom-lepu-sequencer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sentryLogger","LepuCommandBuilder","LepuIdentityGate","DEFAULT_START_BYTE","recordLepuIdentity","deviceData","info","sn","serialNumber","deviceId","id","deviceName","name","deviceType","branchCode","protocolMaxLength","createLepuSequencer","lepu","report","clockSync","write","serviceUuid","characteristicUuid","builder","requestStartByte","startBytes","fixedSequence","protocol","writeWithoutResponse","setClockBeforeInfo","expectedDeviceTypes","pollCommand","undefined","onIdentified","onRefused"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4CAAyC;AAKtE,SAASC,kBAAkB,QAAQ,iCAA8B;AAEjE,SAASC,gBAAgB,QAAQ,+BAA4B;;
|
|
1
|
+
{"version":3,"names":["sentryLogger","viatomOxygenUsesV2","LepuCommandBuilder","LepuIdentityGate","lepuTransports","DEFAULT_START_BYTE","recordLepuIdentity","deviceData","info","sn","serialNumber","deviceId","id","deviceName","name","deviceType","branchCode","protocolMaxLength","createLepuSequencer","lepu","report","clockSync","manufacturerData","selected","selectLepu","write","serviceUuid","characteristicUuid","builder","requestStartByte","startBytes","fixedSequence","protocol","writeWithoutResponse","setClockBeforeInfo","expectedDeviceTypes","pollCommand","undefined","rejectEncryptionAtBytes","onIdentified","onRefused","manufacturerDataProtocol","transport","aw1","writeUuid"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4CAAyC;AAKtE,SAASC,kBAAkB,QAAQ,+BAA4B;AAC/D,SAASC,kBAAkB,QAAQ,iCAA8B;AAEjE,SAASC,gBAAgB,QAAQ,+BAA4B;AAC7D,SAASC,cAAc,QAAQ,4BAAyB;;AAExD;AACA,MAAMC,kBAAkB,GAAG,IAAI;AAO/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,GAAGA,CACzBC,UAAsB,EACtBC,IAAoB,KACX;EACTD,UAAU,CAACE,EAAE,GAAGD,IAAI,CAACE,YAAY;EAEjCV,YAAY,CAAC,MAAM,EAAE,sCAAsC,EAAE;IAC3DW,QAAQ,EAAEJ,UAAU,CAACK,EAAE;IACvBC,UAAU,EAAEN,UAAU,CAACO,IAAI;IAC3BC,UAAU,EAAEP,IAAI,CAACO,UAAU;IAC3BC,UAAU,EAAER,IAAI,CAACQ,UAAU;IAC3BC,iBAAiB,EAAET,IAAI,CAACS;EAC1B,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,mBAAmB,GAAGA,CAC1BC,IAAoB,EACpBC,MAAsB,EACtBC,SAA4B,EAC5BC,gBAAyB,KACJ;EACrB,MAAMC,QAAQ,GAAGC,UAAU,CAACL,IAAI,EAAEG,gBAAgB,CAAC;EAEnD,OAAO,IAAInB,gBAAgB,CAAC;IAC1BsB,KAAK,EAAE;MACLC,WAAW,EAAEH,QAAQ,CAACE,KAAK,CAACC,WAAW;MACvCC,kBAAkB,EAAEJ,QAAQ,CAACE,KAAK,CAACE;IACrC,CAAC;IACDC,OAAO,EAAE,IAAI1B,kBAAkB,CAC7BqB,QAAQ,CAACM,gBAAgB,IAAIN,QAAQ,CAACO,UAAU,CAAC,CAAC,CAAC,IAAIzB,kBAAkB,EACzE;MAAE0B,aAAa,EAAER,QAAQ,CAACS,QAAQ,KAAK;IAAgB,CACzD,CAAC;IACDA,QAAQ,EAAET,QAAQ,CAACS,QAAQ;IAC3BC,oBAAoB,EAAEV,QAAQ,CAACU,oBAAoB;IACnDC,kBAAkB,EAAEX,QAAQ,CAACW,kBAAkB;IAC/Cb,SAAS;IACTc,mBAAmB,EAAEZ,QAAQ,CAACY,mBAAmB;IACjD,IAAIZ,QAAQ,CAACa,WAAW,KAAKC,SAAS,GAClC,CAAC,CAAC,GACF;MAAED,WAAW,EAAEb,QAAQ,CAACa;IAAY,CAAC,CAAC;IAC1Cd,gBAAgB;IAChBgB,uBAAuB,EAAEf,QAAQ,CAACe,uBAAuB;IACzDC,YAAY,EAAEnB,MAAM,CAACmB,YAAY;IACjCC,SAAS,EAAEpB,MAAM,CAACoB;EACpB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMhB,UAAU,GAAGA,CACjBL,IAAoB,EACpBG,gBAAyB,KACN;EACnB,IACEH,IAAI,CAACsB,wBAAwB,KAAK,eAAe,IACjD,CAACxC,kBAAkB,CAACqB,gBAAgB,CAAC,EACrC;IACA,OAAOH,IAAI;EACb;EAEA,MAAMuB,SAAS,GAAGtC,cAAc,CAACuC,GAAG;EAEpC,OAAO;IACL,GAAGxB,IAAI;IACPa,QAAQ,EAAE,IAAI;IACdF,UAAU,EAAE,CAAC,IAAI,CAAC;IAClBD,gBAAgB,EAAE,IAAI;IACtBJ,KAAK,EAAE;MACLC,WAAW,EAAEgB,SAAS,CAAChB,WAAW;MAClCC,kBAAkB,EAAEe,SAAS,CAACE;IAChC,CAAC;IACDR,WAAW,EAAE,IAAI;IACjBH,oBAAoB,EAAE,IAAI;IAC1BC,kBAAkB,EAAE;EACtB,CAAC;AACH,CAAC;AAED,SAAShB,mBAAmB,EAAEZ,kBAAkB,EAAEkB,UAAU","ignoreList":[]}
|
|
@@ -11,7 +11,7 @@ import { LepuCommandBuilder } from "../lepu/lepu.command-builder.js";
|
|
|
11
11
|
import { LepuEcgTransferSequencer } from "../lepu/lepu.ecg-transfer.js";
|
|
12
12
|
import { LepuFrameReader } from "../lepu/lepu.frame-reader.js";
|
|
13
13
|
import { decodeViatomEcgRecording, recordedAtFromViatomFileName } from "../viatom/viatom.ecg-files.js";
|
|
14
|
-
import { createLepuSequencer, recordLepuIdentity } from "./custom-lepu-sequencer.js";
|
|
14
|
+
import { createLepuSequencer, recordLepuIdentity, selectLepu } from "./custom-lepu-sequencer.js";
|
|
15
15
|
/**
|
|
16
16
|
* Runs a device registered with defineCustomDevice.
|
|
17
17
|
*
|
|
@@ -31,7 +31,8 @@ export class CustomDevice extends BTManagedDevice {
|
|
|
31
31
|
this.definition = definition;
|
|
32
32
|
this.deviceData.clockSync = definition.clockSync;
|
|
33
33
|
this.deliveredEcgFileNames = new Set(params.deliveredEcgFileNames ?? []);
|
|
34
|
-
|
|
34
|
+
const selectedLepu = definition.lepu ? selectLepu(definition.lepu, device.manufacturerData ?? undefined) : undefined;
|
|
35
|
+
this.mainServices = selectedLepu?.manufacturerDataProtocol === "viatom-oxygen" ? definition.mainServices.filter(service => service.uuid === selectedLepu.write.serviceUuid) : definition.mainServices;
|
|
35
36
|
this.stuckDataTimeout = definition.stuckDataTimeout;
|
|
36
37
|
this.reportsBondedEvent = definition.reportsBondedEvent === true;
|
|
37
38
|
if (definition.preferredMtu !== undefined) {
|
|
@@ -90,7 +91,7 @@ export class CustomDevice extends BTManagedDevice {
|
|
|
90
91
|
return createLepuSequencer(lepu, {
|
|
91
92
|
onIdentified: this.onIdentified,
|
|
92
93
|
onRefused: this.onIdentityRefused
|
|
93
|
-
}, clockSync);
|
|
94
|
+
}, clockSync, this.device.manufacturerData ?? undefined);
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
97
|
reportViatomEcgFile = file => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","BTManagedDevice","LepuCommandBuilder","LepuEcgTransferSequencer","LepuFrameReader","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","CustomDevice","validators","Map","constructor","device","params","definition","oneReadingPerConnection","deviceData","clockSync","deliveredEcgFileNames","Set","mainServices","
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","CaseType","createFrameValidator","parseMeasurement","discardedReadingError","rejectCustomReading","BTManagedDevice","LepuCommandBuilder","LepuEcgTransferSequencer","LepuFrameReader","decodeViatomEcgRecording","recordedAtFromViatomFileName","createLepuSequencer","recordLepuIdentity","selectLepu","CustomDevice","validators","Map","constructor","device","params","definition","oneReadingPerConnection","deviceData","clockSync","deliveredEcgFileNames","Set","selectedLepu","lepu","manufacturerData","undefined","mainServices","manufacturerDataProtocol","filter","service","uuid","write","serviceUuid","stuckDataTimeout","reportsBondedEvent","preferredMtu","declareLepuProtocol","frames","forEach","frame","set","frameReader","startBytes","createCommandSequencer","fileTransfer","characteristicUuid","builder","expectedDeviceTypes","onIdentified","onRefused","onIdentityRefused","onFile","reportViatomEcgFile","skipFiles","acceptFile","name","ecgFileDecoder","test","afterTransfer","pollCommand","build","onError","reason","Error","onProgress","progress","onConnectionEvent","kind","current","receivedBytes","total","totalBytes","file","decoded","content","samples","length","onResult","measurementTypeKey","ecg","caseType","RESULT","diagramPoints","duration","recordedAt","recordingId","info","id","validatePackage","pkg","validate","get","String","toLowerCase","handleDependentResult","data","shouldReportDependentResult","reportFrame","error","parsingCase","OTHER","_data","handleSuccessResult","decorateReading","reading","recordOffset","repeated","repeatedRecords","report","parsedData","records","Math","floor","from","recordBytes","record","measurements","discard","measurement","reportMeasurement","fieldNames","rejection","map","fields","find","message"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/custom/custom.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { base64ToHex } from "../../../utils/base-64-to-hex.js";
|
|
4
|
+
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
5
|
+
const PROTOCOL_MASK = 0x0f;
|
|
6
|
+
const ENCRYPTION_MASK = 0xf0;
|
|
7
|
+
const ENCRYPTION_REQUIRED = 0x20;
|
|
8
|
+
const VIATOM_OXYGEN_V2_BYTES = [3, 4];
|
|
9
|
+
const manufacturerBytes = manufacturerData => {
|
|
10
|
+
if (!manufacturerData) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
return base64ToHex(manufacturerData).map(hexToByte);
|
|
15
|
+
} catch {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const manufacturerByte = (manufacturerData, index) => manufacturerBytes(manufacturerData)[index];
|
|
20
|
+
|
|
21
|
+
/** Returns true when the advertised byte says that only encrypted traffic is accepted. */
|
|
22
|
+
const advertisementRequiresEncryption = (manufacturerData, byteIndexes = []) => byteIndexes.some(index => ((manufacturerByte(manufacturerData, index) ?? 0) & ENCRYPTION_MASK) === ENCRYPTION_REQUIRED);
|
|
23
|
+
|
|
24
|
+
/** The vendor uses the low nibble of byte 3 or 4 to select the OxyII service. */
|
|
25
|
+
const viatomOxygenUsesV2 = manufacturerData => VIATOM_OXYGEN_V2_BYTES.some(index => ((manufacturerByte(manufacturerData, index) ?? 0) & PROTOCOL_MASK) === 2);
|
|
26
|
+
export { advertisementRequiresEncryption, manufacturerBytes, viatomOxygenUsesV2 };
|
|
27
|
+
//# sourceMappingURL=lepu.advertisement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["base64ToHex","hexToByte","PROTOCOL_MASK","ENCRYPTION_MASK","ENCRYPTION_REQUIRED","VIATOM_OXYGEN_V2_BYTES","manufacturerBytes","manufacturerData","map","manufacturerByte","index","advertisementRequiresEncryption","byteIndexes","some","viatomOxygenUsesV2"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.advertisement.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,kCAA+B;AAC3D,SAASC,SAAS,QAAQ,+BAA4B;AAEtD,MAAMC,aAAa,GAAG,IAAI;AAC1B,MAAMC,eAAe,GAAG,IAAI;AAC5B,MAAMC,mBAAmB,GAAG,IAAI;AAChC,MAAMC,sBAAsB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAU;AAE9C,MAAMC,iBAAiB,GAAIC,gBAAyB,IAAe;EACjE,IAAI,CAACA,gBAAgB,EAAE;IACrB,OAAO,EAAE;EACX;EAEA,IAAI;IACF,OAAOP,WAAW,CAACO,gBAAgB,CAAC,CAACC,GAAG,CAACP,SAAS,CAAC;EACrD,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF,CAAC;AAED,MAAMQ,gBAAgB,GAAGA,CACvBF,gBAAoC,EACpCG,KAAa,KACUJ,iBAAiB,CAACC,gBAAgB,CAAC,CAACG,KAAK,CAAC;;AAEnE;AACA,MAAMC,+BAA+B,GAAGA,CACtCJ,gBAAoC,EACpCK,WAA8B,GAAG,EAAE,KAEnCA,WAAW,CAACC,IAAI,CACbH,KAAK,IACJ,CAAC,CAACD,gBAAgB,CAACF,gBAAgB,EAAEG,KAAK,CAAC,IAAI,CAAC,IAAIP,eAAe,MACnEC,mBACJ,CAAC;;AAEH;AACA,MAAMU,kBAAkB,GAAIP,gBAAyB,IACnDF,sBAAsB,CAACQ,IAAI,CACxBH,KAAK,IACJ,CAAC,CAACD,gBAAgB,CAACF,gBAAgB,EAAEG,KAAK,CAAC,IAAI,CAAC,IAAIR,aAAa,MAAM,CAC3E,CAAC;AAEH,SACES,+BAA+B,EAC/BL,iBAAiB,EACjBQ,kBAAkB","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import { getClockParts, isClockSyncEnabled } from "../../../types/clock-sync.js";
|
|
6
6
|
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
7
|
+
import { advertisementRequiresEncryption } from "./lepu.advertisement.js";
|
|
7
8
|
import { LepuCommand } from "./lepu.commands.js";
|
|
8
9
|
import { parseLepuDeviceInfo } from "./lepu.device-info.js";
|
|
9
10
|
import { describeLepuResponseType, isLepuSuccess } from "./lepu.response-type.js";
|
|
@@ -18,6 +19,15 @@ export class LepuIdentityGate {
|
|
|
18
19
|
this.params = params;
|
|
19
20
|
}
|
|
20
21
|
initialCommands = () => {
|
|
22
|
+
if (advertisementRequiresEncryption(this.params.manufacturerData, this.params.rejectEncryptionAtBytes)) {
|
|
23
|
+
return this.refuse("the advertisement requires encrypted communication, which this SDK does not support") ?? [];
|
|
24
|
+
}
|
|
25
|
+
if (this.params.protocol === "v2") {
|
|
26
|
+
const command = this.params.pollCommand ?? 0x02;
|
|
27
|
+
this.pendingCommand = command;
|
|
28
|
+
this.isIdentified = true;
|
|
29
|
+
return [this.commandFor(command)];
|
|
30
|
+
}
|
|
21
31
|
if (this.params.protocol === "viatom-oxygen") {
|
|
22
32
|
const setClock = this.params.setClockBeforeInfo && isClockSyncEnabled(this.params.clockSync);
|
|
23
33
|
const command = setClock ? this.commandFor(0x16, oxyClockPayload(this.params.clockSync)) : this.commandFor(VIATOM_OXYGEN_INFO);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getClockParts","isClockSyncEnabled","hexToByte","LepuCommand","parseLepuDeviceInfo","describeLepuResponseType","isLepuSuccess","COMMAND_INDEX","VIATOM_OXYGEN_INFO","LepuIdentityGate","isIdentified","isRefused","constructor","params","initialCommands","
|
|
1
|
+
{"version":3,"names":["getClockParts","isClockSyncEnabled","hexToByte","advertisementRequiresEncryption","LepuCommand","parseLepuDeviceInfo","describeLepuResponseType","isLepuSuccess","COMMAND_INDEX","VIATOM_OXYGEN_INFO","LepuIdentityGate","isIdentified","isRefused","constructor","params","initialCommands","manufacturerData","rejectEncryptionAtBytes","refuse","protocol","command","pollCommand","pendingCommand","commandFor","setClock","setClockBeforeInfo","clockSync","oxyClockPayload","GET_INFO","nextCommand","frame","nextViatomOxygenCommand","undefined","poll","admit","info","onIdentified","onAdmitted","isNarrowed","expectedDeviceTypes","length","includes","deviceType","branchCode","reason","onRefused","payload","delayBeforeWriteMs","write","builder","build","writeWithoutResponse","withoutResponse","status","toString","padStart","parseViatomOxygenDeviceInfo","parts","now","Date","timezone","pad","value","String","JSON","stringify","SetTIME","year","month","day","hours","minutes","seconds","Array","from","TextEncoder","encode","text","slice","map","byte","fromCharCode","join","replace","parse","Number","Model","isInteger","protocolMaxLength","Branch","serialNumber","SN","SerialNumber"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.identity-gate.ts"],"mappings":";;AAAA;;AAEA,SAEEA,aAAa,EACbC,kBAAkB,QACb,8BAA2B;AAGlC,SAASC,SAAS,QAAQ,+BAA4B;AAEtD,SAASC,+BAA+B,QAAQ,yBAAsB;AAEtE,SAASC,WAAW,QAAQ,oBAAiB;AAC7C,SAAyBC,mBAAmB,QAAQ,uBAAoB;AACxE,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,yBAAsB;AAoC9E,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,kBAAkB,GAAG,IAAI;;AAE/B;AACA,OAAO,MAAMC,gBAAgB,CAA6B;EAChDC,YAAY,GAAG,KAAK;EACpBC,SAAS,GAAG,KAAK;EAGlBC,WAAWA,CAAkBC,MAA8B,EAAE;IAAA,KAAhCA,MAA8B,GAA9BA,MAA8B;EAAG;EAE9DC,eAAe,GAAGA,CAAA,KAAgC;IACvD,IACEZ,+BAA+B,CAC7B,IAAI,CAACW,MAAM,CAACE,gBAAgB,EAC5B,IAAI,CAACF,MAAM,CAACG,uBACd,CAAC,EACD;MACA,OACE,IAAI,CAACC,MAAM,CACT,qFACF,CAAC,IAAI,EAAE;IAEX;IAEA,IAAI,IAAI,CAACJ,MAAM,CAACK,QAAQ,KAAK,IAAI,EAAE;MACjC,MAAMC,OAAO,GAAG,IAAI,CAACN,MAAM,CAACO,WAAW,IAAI,IAAI;MAE/C,IAAI,CAACC,cAAc,GAAGF,OAAO;MAC7B,IAAI,CAACT,YAAY,GAAG,IAAI;MAExB,OAAO,CAAC,IAAI,CAACY,UAAU,CAACH,OAAO,CAAC,CAAC;IACnC;IAEA,IAAI,IAAI,CAACN,MAAM,CAACK,QAAQ,KAAK,eAAe,EAAE;MAC5C,MAAMK,QAAQ,GACZ,IAAI,CAACV,MAAM,CAACW,kBAAkB,IAC9BxB,kBAAkB,CAAC,IAAI,CAACa,MAAM,CAACY,SAAS,CAAC;MAE3C,MAAMN,OAAO,GAAGI,QAAQ,GACpB,IAAI,CAACD,UAAU,CAAC,IAAI,EAAEI,eAAe,CAAC,IAAI,CAACb,MAAM,CAACY,SAAS,CAAC,CAAC,GAC7D,IAAI,CAACH,UAAU,CAACd,kBAAkB,CAAC;MAEvC,IAAI,CAACa,cAAc,GAAGE,QAAQ,GAAG,IAAI,GAAGf,kBAAkB;MAE1D,OAAO,CAACW,OAAO,CAAC;IAClB;IAEA,IAAI,CAACE,cAAc,GAAGlB,WAAW,CAACwB,QAAQ;IAE1C,OAAO,CAAC,IAAI,CAACL,UAAU,CAACnB,WAAW,CAACwB,QAAQ,CAAC,CAAC;EAChD,CAAC;EAEMC,WAAW,GAChBC,KAAwB,IACiB;IACzC,IAAI,IAAI,CAAChB,MAAM,CAACK,QAAQ,KAAK,eAAe,EAAE;MAC5C,OAAO,IAAI,CAACY,uBAAuB,CAACD,KAAK,CAAC;IAC5C;IAEA,IAAI,IAAI,CAAClB,SAAS,EAAE;MAClB,OAAOoB,SAAS;IAClB;IAEA,IAAI,IAAI,CAACrB,YAAY,EAAE;MACrB,OAAO,IAAI,CAACsB,IAAI,CAAC,CAAC;IACpB;IAEA,OAAO,IAAI,CAACC,KAAK,CAACJ,KAAK,CAAC;EAC1B,CAAC;;EAED;EACQI,KAAK,GACXJ,KAAwB,IACiB;IACzC,IAAI5B,SAAS,CAAC4B,KAAK,CAACtB,aAAa,CAAC,IAAI,GAAG,CAAC,KAAKJ,WAAW,CAACwB,QAAQ,EAAE;MACnE,OAAOI,SAAS;IAClB;IAEA,IAAI,CAACzB,aAAa,CAACuB,KAAK,CAAC,EAAE;MACzB,OAAO,IAAI,CAACZ,MAAM,CAChB,wCAAwCZ,wBAAwB,CAACwB,KAAK,CAAC,EACzE,CAAC;IACH;IAEA,MAAMK,IAAI,GAAG9B,mBAAmB,CAACyB,KAAK,CAAC;IAEvC,IAAI,CAACK,IAAI,EAAE;MACT,OAAO,IAAI,CAACjB,MAAM,CAChB,yEACF,CAAC;IACH;IAEA,IAAI,CAACJ,MAAM,CAACsB,YAAY,GAAGD,IAAI,CAAC;IAEhC,IACE,IAAI,CAACrB,MAAM,CAACO,WAAW,KAAKW,SAAS,IACrC,IAAI,CAAClB,MAAM,CAACuB,UAAU,KAAKL,SAAS,EACpC;MACA,OAAOA,SAAS;IAClB;IAEA,MAAMM,UAAU,GAAG,IAAI,CAACxB,MAAM,CAACyB,mBAAmB,CAACC,MAAM,GAAG,CAAC;IAE7D,IACEF,UAAU,IACV,CAAC,IAAI,CAACxB,MAAM,CAACyB,mBAAmB,CAACE,QAAQ,CAACN,IAAI,CAACO,UAAU,CAAC,EAC1D;MACA,OAAO,IAAI,CAACxB,MAAM,CAChB,+BAA+BiB,IAAI,CAACO,UAAU,aAAaP,IAAI,CAACQ,UAAU,gDAC5E,CAAC;IACH;IAEA,IAAI,CAAChC,YAAY,GAAG,IAAI;IAExB,OAAO,IAAI,CAACG,MAAM,CAACuB,UAAU,GAAG,CAAC,IAAI,IAAI,CAACJ,IAAI,CAAC,CAAC;EAClD,CAAC;;EAED;EACQf,MAAM,GAAI0B,MAAc,IAAgB;IAC9C,IAAI,CAAChC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACE,MAAM,CAAC+B,SAAS,CAACD,MAAM,CAAC;IAE7B,OAAOZ,SAAS;EAClB,CAAC;;EAED;EACQC,IAAI,GAAGA,CAAA,KACb,IAAI,CAACnB,MAAM,CAACO,WAAW,KAAKW,SAAS,GACjCA,SAAS,GACT,CAAC,IAAI,CAACT,UAAU,CAAC,IAAI,CAACT,MAAM,CAACO,WAAW,CAAC,CAAC;EAExCE,UAAU,GAAGA,CACnBH,OAAe,EACf0B,OAA0B,GAAG,EAAE,EAC/BC,kBAA2B,MACR;IACnB,GAAG,IAAI,CAACjC,MAAM,CAACkC,KAAK;IACpBlB,KAAK,EAAE,IAAI,CAAChB,MAAM,CAACmC,OAAO,CAACC,KAAK,CAAC9B,OAAO,EAAE0B,OAAO,CAAC;IAClD,IAAI,IAAI,CAAChC,MAAM,CAACqC,oBAAoB,GAAG;MAAEC,eAAe,EAAE;IAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,IAAIL,kBAAkB,KAAKf,SAAS,GAAG,CAAC,CAAC,GAAG;MAAEe;IAAmB,CAAC;EACpE,CAAC,CAAC;EAEMhB,uBAAuB,GAC7BD,KAAwB,IACiB;IACzC,IAAI,IAAI,CAAClB,SAAS,IAAI,IAAI,CAACU,cAAc,KAAKU,SAAS,EAAE;MACvD,OAAOA,SAAS;IAClB;IAEA,MAAMqB,MAAM,GAAGnD,SAAS,CAAC4B,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAE1C,IAAIuB,MAAM,KAAK,CAAC,EAAE;MAChB,IAAI,IAAI,CAAC/B,cAAc,KAAK,IAAI,IAAI,IAAI,CAACX,YAAY,EAAE;QACrD,OAAO,CAAC,IAAI,CAACY,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;MAC3C;MAEA,OAAO,IAAI,CAACL,MAAM,CAChB,iCAAiC,IAAI,CAACI,cAAc,CAACgC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkBF,MAAM,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAC1I,CAAC;IACH;IAEA,QAAQ,IAAI,CAACjC,cAAc;MACzB,KAAK,IAAI;QACP,IAAI,CAACA,cAAc,GAAGb,kBAAkB;QAExC,OAAO,CAAC,IAAI,CAACc,UAAU,CAACd,kBAAkB,CAAC,CAAC;MAE9C,KAAKA,kBAAkB;QAAE;UACvB,MAAM0B,IAAI,GAAGqB,2BAA2B,CAAC1B,KAAK,CAAC;UAE/C,IAAI,CAACK,IAAI,EAAE;YACT,OAAO,IAAI,CAACjB,MAAM,CAChB,sDACF,CAAC;UACH;UAEA,IAAI,CAACJ,MAAM,CAACsB,YAAY,GAAGD,IAAI,CAAC;UAEhC,IACE,IAAI,CAACrB,MAAM,CAACyB,mBAAmB,CAACC,MAAM,GAAG,CAAC,IAC1C,CAAC,IAAI,CAAC1B,MAAM,CAACyB,mBAAmB,CAACE,QAAQ,CAACN,IAAI,CAACO,UAAU,CAAC,EAC1D;YACA,OAAO,IAAI,CAACxB,MAAM,CAChB,+BAA+BiB,IAAI,CAACO,UAAU,8CAChD,CAAC;UACH;UAEA,IAAI,CAAC/B,YAAY,GAAG,IAAI;UACxB,IAAI,CAACW,cAAc,GAAG,IAAI;UAE1B,OAAO,CAAC,IAAI,CAACC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C;MAEA,KAAK,IAAI;QACP,OAAO,CAAC,IAAI,CAACA,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;MAE3C;QACE,OAAOS,SAAS;IACpB;EACF,CAAC;AACH;AAEA,MAAML,eAAe,GAAID,SAA4B,IAAe;EAClE,MAAM+B,KAAK,GAAGzD,aAAa,CACzB0B,SAAS,EAAEgC,GAAG,GAAG,CAAC,IAAI,IAAIC,IAAI,CAAC,CAAC,EAChCjC,SAAS,EAAEkC,QACb,CAAC;EAED,MAAMC,GAAG,GAAIC,KAAa,IAAaC,MAAM,CAACD,KAAK,CAAC,CAACP,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAErE,MAAMT,OAAO,GAAGkB,IAAI,CAACC,SAAS,CAAC;IAC7BC,OAAO,EAAE,GAAGT,KAAK,CAACU,IAAI,IAAIN,GAAG,CAACJ,KAAK,CAACW,KAAK,CAAC,IAAIP,GAAG,CAACJ,KAAK,CAACY,GAAG,CAAC,IAAIR,GAAG,CAACJ,KAAK,CAACa,KAAK,CAAC,IAAIT,GAAG,CAACJ,KAAK,CAACc,OAAO,CAAC,IAAIV,GAAG,CAACJ,KAAK,CAACe,OAAO,CAAC;EAC9H,CAAC,CAAC;EAEF,OAAOC,KAAK,CAACC,IAAI,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAAC9B,OAAO,CAAC,CAAC;AACtD,CAAC;AAED,MAAMU,2BAA2B,GAC/B1B,KAAwB,IACO;EAC/B,IAAI;IACF,MAAM+C,IAAI,GAAG/C,KAAK,CACfgD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACZC,GAAG,CAAEC,IAAI,IAAKjB,MAAM,CAACkB,YAAY,CAAC/E,SAAS,CAAC8E,IAAI,CAAC,CAAC,CAAC,CACnDE,IAAI,CAAC,EAAE,CAAC,CACRC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAEtB,MAAMhD,IAAI,GAAG6B,IAAI,CAACoB,KAAK,CAACP,IAAI,CAA4B;IACxD,MAAMnC,UAAU,GAAG2C,MAAM,CAAClD,IAAI,CAACmD,KAAK,CAAC;IAErC,IAAI,CAACD,MAAM,CAACE,SAAS,CAAC7C,UAAU,CAAC,EAAE;MACjC,OAAOV,SAAS;IAClB;IAEA,OAAO;MACLU,UAAU;MACV8C,iBAAiB,EAAE,CAAC;MACpB7C,UAAU,EAAEoB,MAAM,CAAC5B,IAAI,CAACsD,MAAM,IAAI,EAAE,CAAC;MACrCC,YAAY,EAAE3B,MAAM,CAAC5B,IAAI,CAACwD,EAAE,IAAIxD,IAAI,CAACyD,YAAY,IAAI,EAAE;IACzD,CAAC;EACH,CAAC,CAAC,MAAM;IACN,OAAO5D,SAAS;EAClB;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/* eslint-disable max-lines */
|
|
4
|
+
|
|
3
5
|
import { defineCustomDevice } from "../../custom/define-custom-device.js";
|
|
4
6
|
|
|
5
7
|
/**
|
|
@@ -108,6 +110,33 @@ const COMMAND_BYTE = 1;
|
|
|
108
110
|
const lepuDevice = params => {
|
|
109
111
|
const transport = lepuTransports[params.transport ?? "standard"];
|
|
110
112
|
const viatomOxygen = params.protocol === "viatom-oxygen";
|
|
113
|
+
const monitor = each => ({
|
|
114
|
+
uuid: each.uuid,
|
|
115
|
+
frame: {
|
|
116
|
+
minLengthBytes: each.minLengthBytes
|
|
117
|
+
},
|
|
118
|
+
...(each.caseSelectorBytes === undefined ? {} : {
|
|
119
|
+
caseSelectorBytes: each.caseSelectorBytes
|
|
120
|
+
}),
|
|
121
|
+
cases: each.cases
|
|
122
|
+
});
|
|
123
|
+
const services = [{
|
|
124
|
+
uuid: transport.serviceUuid,
|
|
125
|
+
monitor: [monitor({
|
|
126
|
+
uuid: transport.notifyUuid,
|
|
127
|
+
minLengthBytes: params.minLengthBytes,
|
|
128
|
+
caseSelectorBytes: params.caseSelectorBytes,
|
|
129
|
+
cases: params.cases
|
|
130
|
+
})]
|
|
131
|
+
}, ...(params.v2 === undefined ? [] : [{
|
|
132
|
+
uuid: lepuTransports.aw1.serviceUuid,
|
|
133
|
+
monitor: [monitor({
|
|
134
|
+
uuid: lepuTransports.aw1.notifyUuid,
|
|
135
|
+
minLengthBytes: params.v2.minLengthBytes,
|
|
136
|
+
caseSelectorBytes: params.v2.caseSelectorBytes,
|
|
137
|
+
cases: params.v2.cases
|
|
138
|
+
})]
|
|
139
|
+
}])];
|
|
111
140
|
return defineCustomDevice({
|
|
112
141
|
id: params.id ?? "lepu-device",
|
|
113
142
|
nameMatch: params.nameMatch,
|
|
@@ -119,8 +148,14 @@ const lepuDevice = params => {
|
|
|
119
148
|
}),
|
|
120
149
|
lepu: {
|
|
121
150
|
protocol: params.protocol,
|
|
122
|
-
startBytes: [viatomOxygen ? "55" : START_BYTE],
|
|
151
|
+
startBytes: [...(viatomOxygen && params.manufacturerDataProtocol === "viatom-oxygen" ? ["55", "a5"] : [viatomOxygen ? "55" : START_BYTE])],
|
|
123
152
|
requestStartByte: viatomOxygen ? "aa" : START_BYTE,
|
|
153
|
+
...(params.manufacturerDataProtocol === undefined ? {} : {
|
|
154
|
+
manufacturerDataProtocol: params.manufacturerDataProtocol
|
|
155
|
+
}),
|
|
156
|
+
...(params.rejectEncryptionAtBytes === undefined ? {} : {
|
|
157
|
+
rejectEncryptionAtBytes: params.rejectEncryptionAtBytes
|
|
158
|
+
}),
|
|
124
159
|
write: {
|
|
125
160
|
serviceUuid: transport.serviceUuid,
|
|
126
161
|
characteristicUuid: transport.writeUuid
|
|
@@ -142,17 +177,13 @@ const lepuDevice = params => {
|
|
|
142
177
|
setClockBeforeInfo: params.setClockBeforeInfo
|
|
143
178
|
})
|
|
144
179
|
},
|
|
145
|
-
services:
|
|
146
|
-
|
|
147
|
-
monitor:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
caseSelectorBytes: params.caseSelectorBytes ?? [COMMAND_BYTE],
|
|
153
|
-
cases: params.cases
|
|
154
|
-
}]
|
|
155
|
-
}]
|
|
180
|
+
services: services.map(service => ({
|
|
181
|
+
...service,
|
|
182
|
+
monitor: service.monitor.map(each => ({
|
|
183
|
+
...each,
|
|
184
|
+
caseSelectorBytes: each.caseSelectorBytes ?? [COMMAND_BYTE]
|
|
185
|
+
}))
|
|
186
|
+
}))
|
|
156
187
|
}, params.decorateReading === undefined ? {} : {
|
|
157
188
|
decorateReading: params.decorateReading
|
|
158
189
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defineCustomDevice","STANDARD_SERVICE","STANDARD_WRITE","STANDARD_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","PREFERRED_MTU","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","
|
|
1
|
+
{"version":3,"names":["defineCustomDevice","STANDARD_SERVICE","STANDARD_WRITE","STANDARD_NOTIFY","AW1_SERVICE","AW1_WRITE","AW1_NOTIFY","DING_SERVICE","DING_WRITE","DING_NOTIFY","AI_TELE_SERVICE","AI_TELE_WRITE","AI_TELE_NOTIFY","PREFERRED_MTU","MINIMUM_MTU","DEFAULT_STUCK_TIMEOUT_MS","START_BYTE","lepuTransports","standard","serviceUuid","notifyUuid","writeUuid","preferredMtu","standardSmallMtu","aw1","ding","aiTele","COMMAND_BYTE","lepuDevice","params","transport","viatomOxygen","protocol","monitor","each","uuid","frame","minLengthBytes","caseSelectorBytes","undefined","cases","services","v2","id","nameMatch","matchByService","stuckDataTimeoutMs","clockSync","lepu","startBytes","manufacturerDataProtocol","requestStartByte","rejectEncryptionAtBytes","write","characteristicUuid","expectedDeviceTypes","fileTransfer","ecgFileDecoder","pollCommand","writeWithoutResponse","setClockBeforeInfo","map","service","decorateReading"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/lepu/lepu.transports.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -93,6 +93,7 @@ const BP2_CASES = [...["00", "01", "02", "03", "0a", "14", "ff"].map(state => ({
|
|
|
93
93
|
const viatomBpMonitor = (advertisedName, params) => lepuDevice({
|
|
94
94
|
id: params.id ?? `viatom-${advertisedName.toLowerCase().replace(/[^a-z0-9]+/g, "-")}`,
|
|
95
95
|
nameMatch: params.nameMatch ?? lepuNameMatch(advertisedName),
|
|
96
|
+
rejectEncryptionAtBytes: [4],
|
|
96
97
|
pollCommand: RT_DATA,
|
|
97
98
|
minLengthBytes: MIN_LENGTH_BYTES,
|
|
98
99
|
caseSelectorBytes: CASE_SELECTOR_BYTES,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","RESULT_CODE_INDEX","READING","name","byteIndexes","byteOrder","encoding","unit","result","selector","description","kind","measurementTypeKey","bloodPressure","fields","measuring","rejectFailedResult","reading","frame","resultCode","Number","parseInt","Error","toString","padStart","BP2_CASES","map","state","viatomBpMonitor","advertisedName","params","id","toLowerCase","replace","nameMatch","pollCommand","minLengthBytes","caseSelectorBytes","cases","each","decorateReading","expectedDeviceTypes","bp2aMonitor","bp2tMonitor","bp2wMonitor","BP3_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bp-monitors.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAQ/C,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,UAAU,QAAQ,4BAAyB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMC,OAAO,GAAG,IAAI;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;AAElC;AACA,MAAMC,gBAAgB,GAAG,EAAE;AAC3B,MAAMC,iBAAiB,GAAG,EAAE;AAE5B,MAAMC,OAA0B,GAAG,CACjC;EACEC,IAAI,EAAE,UAAU;EAChBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,EACD;EACEJ,IAAI,EAAE,WAAW;EACjBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,EACD;EACEJ,IAAI,EAAE,WAAW;EACjBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,CACF;AAED,MAAMC,MAAM,GAAGA,CAACC,QAAgB,EAAEC,WAAmB,MAAsB;EACzED,QAAQ;EACRE,IAAI,EAAE,QAAQ;EACdC,kBAAkB,EAAEjB,kBAAkB,CAACkB,aAAa;EACpDC,MAAM,EAAE,CAAC,GAAGZ,OAAO,CAAC;EACpBQ;AACF,CAAC,CAAC;AAEF,MAAMK,SAAS,GAAGA,CAACN,QAAgB,EAAEC,WAAmB,MAAsB;EAC5ED,QAAQ;EACRE,IAAI,EAAE,QAAQ;EACdD;AACF,CAAC,CAAC;AAEF,MAAMM,kBAA0C,GAAGA,CAACC,OAAO,EAAEC,KAAK,KAAK;EACrE,MAAMC,UAAU,GAAGC,MAAM,CAACC,QAAQ,CAACH,KAAK,GAAGjB,iBAAiB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;EAE1E,IAAIkB,UAAU,KAAK,CAAC,EAAE;IACpB,MAAM,IAAIG,KAAK,CACb,+DAA+DH,UAAU,CACtEI,QAAQ,CAAC,EAAE,CAAC,CACZC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,CAAC;EACH;EAEA,OAAOP,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,SAA2B,GAAG,CAClC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAACC,GAAG,CAAEC,KAAK,KAAM;EAC5DlB,QAAQ,EAAE,KAAKkB,KAAK,EAAE;EACtBhB,IAAI,EAAE,MAAe;EACrBD,WAAW,EAAE;AACf,CAAC,CAAC,CAAC,EACHK,SAAS,CAAC,MAAM,EAAE,6BAA6B,CAAC,EAChDP,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACtCO,SAAS,CAAC,MAAM,EAAE,6CAA6C,CAAC,EAChEA,SAAS,CAAC,MAAM,EAAE,6CAA6C,CAAC,EAChEP,MAAM,CAAC,MAAM,EAAE,mDAAmD,CAAC,CACpE;
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_DATA","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","RESULT_CODE_INDEX","READING","name","byteIndexes","byteOrder","encoding","unit","result","selector","description","kind","measurementTypeKey","bloodPressure","fields","measuring","rejectFailedResult","reading","frame","resultCode","Number","parseInt","Error","toString","padStart","BP2_CASES","map","state","viatomBpMonitor","advertisedName","params","id","toLowerCase","replace","nameMatch","rejectEncryptionAtBytes","pollCommand","minLengthBytes","caseSelectorBytes","cases","each","decorateReading","expectedDeviceTypes","bp2aMonitor","bp2tMonitor","bp2wMonitor","BP3_MODEL_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.bp-monitors.ts"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,YAAY;AAQ/C,SAASC,aAAa,QAAQ,4BAAyB;AACvD,SAASC,UAAU,QAAQ,4BAAyB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAMC,OAAO,GAAG,IAAI;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,mBAAmB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;AAElC;AACA,MAAMC,gBAAgB,GAAG,EAAE;AAC3B,MAAMC,iBAAiB,GAAG,EAAE;AAE5B,MAAMC,OAA0B,GAAG,CACjC;EACEC,IAAI,EAAE,UAAU;EAChBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,EACD;EACEJ,IAAI,EAAE,WAAW;EACjBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,EACD;EACEJ,IAAI,EAAE,WAAW;EACjBC,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;EACrBC,SAAS,EAAE,QAAQ;EACnBC,QAAQ,EAAE,MAAM;EAChBC,IAAI,EAAE;AACR,CAAC,CACF;AAED,MAAMC,MAAM,GAAGA,CAACC,QAAgB,EAAEC,WAAmB,MAAsB;EACzED,QAAQ;EACRE,IAAI,EAAE,QAAQ;EACdC,kBAAkB,EAAEjB,kBAAkB,CAACkB,aAAa;EACpDC,MAAM,EAAE,CAAC,GAAGZ,OAAO,CAAC;EACpBQ;AACF,CAAC,CAAC;AAEF,MAAMK,SAAS,GAAGA,CAACN,QAAgB,EAAEC,WAAmB,MAAsB;EAC5ED,QAAQ;EACRE,IAAI,EAAE,QAAQ;EACdD;AACF,CAAC,CAAC;AAEF,MAAMM,kBAA0C,GAAGA,CAACC,OAAO,EAAEC,KAAK,KAAK;EACrE,MAAMC,UAAU,GAAGC,MAAM,CAACC,QAAQ,CAACH,KAAK,GAAGjB,iBAAiB,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;EAE1E,IAAIkB,UAAU,KAAK,CAAC,EAAE;IACpB,MAAM,IAAIG,KAAK,CACb,+DAA+DH,UAAU,CACtEI,QAAQ,CAAC,EAAE,CAAC,CACZC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,CAAC;EACH;EAEA,OAAOP,OAAO;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,SAA2B,GAAG,CAClC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAACC,GAAG,CAAEC,KAAK,KAAM;EAC5DlB,QAAQ,EAAE,KAAKkB,KAAK,EAAE;EACtBhB,IAAI,EAAE,MAAe;EACrBD,WAAW,EAAE;AACf,CAAC,CAAC,CAAC,EACHK,SAAS,CAAC,MAAM,EAAE,6BAA6B,CAAC,EAChDP,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EACtCO,SAAS,CAAC,MAAM,EAAE,6CAA6C,CAAC,EAChEA,SAAS,CAAC,MAAM,EAAE,6CAA6C,CAAC,EAChEP,MAAM,CAAC,MAAM,EAAE,mDAAmD,CAAC,CACpE;AAkBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMoB,eAAe,GAAGA,CACtBC,cAAsB,EACtBC,MAAsB,KAEtBjC,UAAU,CAAC;EACTkC,EAAE,EACAD,MAAM,CAACC,EAAE,IACT,UAAUF,cAAc,CAACG,WAAW,CAAC,CAAC,CAACC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;EACtEC,SAAS,EAAEJ,MAAM,CAACI,SAAS,IAAItC,aAAa,CAACiC,cAAc,CAAC;EAC5DM,uBAAuB,EAAE,CAAC,CAAC,CAAC;EAC5BC,WAAW,EAAEtC,OAAO;EACpBuC,cAAc,EAAErC,gBAAgB;EAChCsC,iBAAiB,EAAEvC,mBAAmB;EACtCwC,KAAK,EAAEd,SAAS,CAACC,GAAG,CAAEc,IAAI,KAAM;IAAE,GAAGA;EAAK,CAAC,CAAC,CAAC;EAC7CC,eAAe,EAAEzB,kBAAkB;EACnC,IAAIc,MAAM,CAACY,mBAAmB,GAC1B;IAAEA,mBAAmB,EAAEZ,MAAM,CAACY;EAAoB,CAAC,GACnD,CAAC,CAAC;AACR,CAAC,CAAC;;AAEJ;AACA,MAAMC,WAAW,GAAIb,MAAsB,IACzCF,eAAe,CAAC,MAAM,EAAEE,MAAM,CAAC;;AAEjC;AACA,MAAMc,WAAW,GAAId,MAAsB,IACzCF,eAAe,CAAC,MAAM,EAAEE,MAAM,CAAC;;AAEjC;AACA,MAAMe,WAAW,GAAIf,MAAsB,IACzCF,eAAe,CAAC,MAAM,EAAEE,MAAM,CAAC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMgB,eAAkC,GAAG,CACzC,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,CACP;AAED,SACEH,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,eAAe,EACflB,eAAe","ignoreList":[]}
|
|
@@ -24,6 +24,35 @@ const CASE_SELECTOR_BYTES = [1, 5, 6, 7, 8, 9, 18];
|
|
|
24
24
|
const MIN_LENGTH_BYTES = 21;
|
|
25
25
|
const PAYLOAD = 7;
|
|
26
26
|
const SPOT_CHECK_TIMEOUT_MS = 60_000;
|
|
27
|
+
|
|
28
|
+
/** OxyII realtime-parameter replies carry the values after the seven-byte frame header. */
|
|
29
|
+
const OXYII_MIN_LENGTH_BYTES = 18;
|
|
30
|
+
const OXYII_CASE_SELECTOR_BYTES = [1];
|
|
31
|
+
const OXYII_CASES = [{
|
|
32
|
+
selector: "02",
|
|
33
|
+
kind: "result",
|
|
34
|
+
measurementTypeKey: MeasurementTypeKey.bloodOxygenPulseRate,
|
|
35
|
+
description: "OxyII realtime parameters",
|
|
36
|
+
fields: [{
|
|
37
|
+
name: "bloodOxygen",
|
|
38
|
+
byteIndexes: [13],
|
|
39
|
+
encoding: "uint",
|
|
40
|
+
unit: "%"
|
|
41
|
+
}, {
|
|
42
|
+
name: "perfusionIndex",
|
|
43
|
+
byteIndexes: [14],
|
|
44
|
+
encoding: "uint",
|
|
45
|
+
scale: 0.1,
|
|
46
|
+
decimals: 1,
|
|
47
|
+
unit: "%"
|
|
48
|
+
}, {
|
|
49
|
+
name: "pulseRate",
|
|
50
|
+
byteIndexes: [15, 16],
|
|
51
|
+
byteOrder: "little",
|
|
52
|
+
encoding: "uint",
|
|
53
|
+
unit: "bpm"
|
|
54
|
+
}]
|
|
55
|
+
}];
|
|
27
56
|
/**
|
|
28
57
|
* Declares one oximeter of the range.
|
|
29
58
|
*
|
|
@@ -39,6 +68,13 @@ const viatomOximeter = (advertisedName, params) => {
|
|
|
39
68
|
nameMatch: params.nameMatch ?? lepuNameMatch(advertisedName),
|
|
40
69
|
stuckDataTimeoutMs: SPOT_CHECK_TIMEOUT_MS,
|
|
41
70
|
protocol: "viatom-oxygen",
|
|
71
|
+
manufacturerDataProtocol: "viatom-oxygen",
|
|
72
|
+
rejectEncryptionAtBytes: [3, 4],
|
|
73
|
+
v2: {
|
|
74
|
+
minLengthBytes: OXYII_MIN_LENGTH_BYTES,
|
|
75
|
+
caseSelectorBytes: OXYII_CASE_SELECTOR_BYTES,
|
|
76
|
+
cases: OXYII_CASES
|
|
77
|
+
},
|
|
42
78
|
setClockBeforeInfo: advertisedName === "O2Ring",
|
|
43
79
|
writeWithoutResponse: true,
|
|
44
80
|
pollCommand: RT_PARAM,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_PARAM","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","PAYLOAD","SPOT_CHECK_TIMEOUT_MS","
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","lepuNameMatch","lepuDevice","RT_PARAM","CASE_SELECTOR_BYTES","MIN_LENGTH_BYTES","PAYLOAD","SPOT_CHECK_TIMEOUT_MS","OXYII_MIN_LENGTH_BYTES","OXYII_CASE_SELECTOR_BYTES","OXYII_CASES","selector","kind","measurementTypeKey","bloodOxygenPulseRate","description","fields","name","byteIndexes","encoding","unit","scale","decimals","byteOrder","viatomOximeter","advertisedName","params","expectedDeviceTypes","undefined","id","toLowerCase","replace","nameMatch","stuckDataTimeoutMs","protocol","manufacturerDataProtocol","rejectEncryptionAtBytes","v2","minLengthBytes","caseSelectorBytes","cases","setClockBeforeInfo","writeWithoutResponse","pollCommand","VIATOM_OXIMETER_NAMES"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.oximeters.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-custom-lepu.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/custom/compile-custom-lepu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqH9D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,MAAM,EACV,MAAM,gBAAgB,EACtB,cAAc,SAAS,MAAM,EAAE,KAC9B,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"compile-custom-lepu.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-management/services/custom/compile-custom-lepu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAqH9D;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,IAAI,MAAM,EACV,MAAM,gBAAgB,EACtB,cAAc,SAAS,MAAM,EAAE,KAC9B,cAAc,GAAG,SAgGnB,CAAC"}
|
|
@@ -26,6 +26,7 @@ interface IdentityReport {
|
|
|
26
26
|
* connecting once and reading this line.
|
|
27
27
|
*/
|
|
28
28
|
declare const recordLepuIdentity: (deviceData: DeviceData, info: LepuDeviceInfo) => void;
|
|
29
|
-
declare const createLepuSequencer: (lepu: CustomLepuSpec, report: IdentityReport, clockSync?: ClockSyncOptions) => CommandSequencer;
|
|
30
|
-
|
|
29
|
+
declare const createLepuSequencer: (lepu: CustomLepuSpec, report: IdentityReport, clockSync?: ClockSyncOptions, manufacturerData?: string) => CommandSequencer;
|
|
30
|
+
declare const selectLepu: (lepu: CustomLepuSpec, manufacturerData?: string) => CustomLepuSpec;
|
|
31
|
+
export { createLepuSequencer, recordLepuIdentity, selectLepu };
|
|
31
32
|
//# sourceMappingURL=custom-lepu-sequencer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-lepu-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"custom-lepu-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/custom/custom-lepu-sequencer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO1D,UAAU,cAAc;IACtB,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH;;;;;;GAMG;AACH,QAAA,MAAM,kBAAkB,GACtB,YAAY,UAAU,EACtB,MAAM,cAAc,KACnB,IAUF,CAAC;AAEF,QAAA,MAAM,mBAAmB,GACvB,MAAM,cAAc,EACpB,QAAQ,cAAc,EACtB,YAAY,gBAAgB,EAC5B,mBAAmB,MAAM,KACxB,gBAyBF,CAAC;AAEF,QAAA,MAAM,UAAU,GACd,MAAM,cAAc,EACpB,mBAAmB,MAAM,KACxB,cAuBF,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC"}
|