@ovok/native 1.16.1-dev.2153 → 1.16.1-dev.2157
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/devices/blood-glucose/blood-glucose.device.js +64 -44
- package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js +98 -0
- package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js +127 -0
- package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +5 -3
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +10 -2
- package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/cofoe/cofoe.records.js +2 -7
- package/lib/commonjs/modules/bt-management/services/devices/cofoe/cofoe.records.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +3 -7
- package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -1
- package/lib/commonjs/modules/bt-management/utils/calculate-crc-16-modbus.js +23 -0
- package/lib/commonjs/modules/bt-management/utils/calculate-crc-16-modbus.js.map +1 -0
- package/lib/commonjs/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js +13 -0
- package/lib/commonjs/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js +64 -44
- package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js +91 -0
- package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js +123 -0
- package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +5 -3
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +10 -2
- package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/cofoe/cofoe.records.js +2 -7
- package/lib/module/modules/bt-management/services/devices/cofoe/cofoe.records.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +3 -7
- package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -1
- package/lib/module/modules/bt-management/utils/calculate-crc-16-modbus.js +18 -0
- package/lib/module/modules/bt-management/utils/calculate-crc-16-modbus.js.map +1 -0
- package/lib/module/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js +8 -0
- package/lib/module/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts +34 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts +32 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +2 -0
- 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/cofoe/cofoe.records.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts +34 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts +32 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +2 -0
- 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/cofoe/cofoe.records.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts.map +1 -0
- package/package.json +1 -1
package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_bytesToHex","require","_frameReadResults","_hexToByte","WBP02_CONTROL_SERVICE","exports","WBP02_WRITE","WBP02_DATA_SERVICE","WBP02_NOTIFY","wbp02Crc","bytes","crc","
|
|
1
|
+
{"version":3,"names":["_bytesToHex","require","_calculateCrc16Modbus","_frameBytes","_frameReadResults","_hexToByte","WBP02_CONTROL_SERVICE","exports","WBP02_WRITE","WBP02_DATA_SERVICE","WBP02_NOTIFY","wbp02Crc","bytes","crc","calculateCrc16Modbus","frameBytes","byteToHex","wbp02Command","command","payload","body","length","map","wbp02Connect","wbp02SyncTime","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","wbp02Login","wbp02RecordCount","wbp02Record","index","decodeWbp02Response","frame","hexToByte","undefined","complete","slice","at","content","parseWbp02Record","value","offset","year","month","day","hour","minute","recordedAt","systolic","diastolic","heartRate","recordingId","toISOString","Wbp02FrameReader","readFrame","buffer","start","findIndex","noFrameStart","incomplete","corrupt"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.calculateCrc16Modbus = void 0;
|
|
7
|
+
const INITIAL_VALUE = 0xffff;
|
|
8
|
+
const REFLECTED_POLYNOMIAL = 0xa001;
|
|
9
|
+
const BITS_PER_BYTE = 8;
|
|
10
|
+
|
|
11
|
+
/** CRC-16/MODBUS (reflected polynomial 0xA001, initial value 0xFFFF); its low byte is the one sent first. */
|
|
12
|
+
const calculateCrc16Modbus = bytes => {
|
|
13
|
+
let crc = INITIAL_VALUE;
|
|
14
|
+
for (const value of bytes) {
|
|
15
|
+
crc ^= value;
|
|
16
|
+
for (let bit = 0; bit < BITS_PER_BYTE; bit += 1) {
|
|
17
|
+
crc = (crc & 1) !== 0 ? crc >>> 1 ^ REFLECTED_POLYNOMIAL : crc >>> 1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return crc;
|
|
21
|
+
};
|
|
22
|
+
exports.calculateCrc16Modbus = calculateCrc16Modbus;
|
|
23
|
+
//# sourceMappingURL=calculate-crc-16-modbus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["INITIAL_VALUE","REFLECTED_POLYNOMIAL","BITS_PER_BYTE","calculateCrc16Modbus","bytes","crc","value","bit","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/calculate-crc-16-modbus.ts"],"mappings":";;;;;;AAAA,MAAMA,aAAa,GAAG,MAAM;AAC5B,MAAMC,oBAAoB,GAAG,MAAM;AACnC,MAAMC,aAAa,GAAG,CAAC;;AAEvB;AACO,MAAMC,oBAAoB,GAAIC,KAAwB,IAAa;EACxE,IAAIC,GAAG,GAAGL,aAAa;EAEvB,KAAK,MAAMM,KAAK,IAAIF,KAAK,EAAE;IACzBC,GAAG,IAAIC,KAAK;IACZ,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGL,aAAa,EAAEK,GAAG,IAAI,CAAC,EAAE;MAC/CF,GAAG,GAAG,CAACA,GAAG,GAAG,CAAC,MAAM,CAAC,GAAIA,GAAG,KAAK,CAAC,GAAIJ,oBAAoB,GAAGI,GAAG,KAAK,CAAC;IACxE;EACF;EAEA,OAAOA,GAAG;AACZ,CAAC;AAACG,OAAA,CAAAL,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.tenthsMmolToMgPerDl = void 0;
|
|
7
|
+
/** One mmol/L of glucose (180.16 g/mol) is 18.016 mg/dL, as in the SIG glucose profile. */
|
|
8
|
+
const MG_PER_DL_PER_MMOL_PER_L = 18.016;
|
|
9
|
+
|
|
10
|
+
/** Glucose in tenths of a mmol/L, rounded to whole mg/dL. */
|
|
11
|
+
const tenthsMmolToMgPerDl = tenthsMmol => Math.round(tenthsMmol / 10 * MG_PER_DL_PER_MMOL_PER_L);
|
|
12
|
+
exports.tenthsMmolToMgPerDl = tenthsMmolToMgPerDl;
|
|
13
|
+
//# sourceMappingURL=tenths-mmol-to-mg-per-dl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MG_PER_DL_PER_MMOL_PER_L","tenthsMmolToMgPerDl","tenthsMmol","Math","round","exports"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/tenths-mmol-to-mg-per-dl.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,wBAAwB,GAAG,MAAM;;AAEvC;AACO,MAAMC,mBAAmB,GAAIC,UAAkB,IACpDC,IAAI,CAACC,KAAK,CAAEF,UAAU,GAAG,EAAE,GAAIF,wBAAwB,CAAC;AAACK,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js
CHANGED
|
@@ -1,54 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { MeasurementTypeKey } from "@ovok/core/next";
|
|
4
|
+
import { NO_PARSING_CASES } from "../../../constants/no-parsing-cases.js";
|
|
4
5
|
import { CaseType } from "../../../types/case-type.js";
|
|
5
6
|
import { IntegratedDevices } from "../../../types/integrated-devices.js";
|
|
6
|
-
import { hexToByte } from "../../../utils/hex-to-byte.js";
|
|
7
7
|
import { BTManagedDevice } from "../bt-managed-device.js";
|
|
8
8
|
import { TAIDOC, TAIDOC_CHARACTERISTIC, TAIDOC_SERVICE, taidocCommand } from "../taidoc/taidoc.protocol.js";
|
|
9
9
|
import { isPatientGlucoseRecord } from "../taidoc/taidoc.records.js";
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
import { TELEBGM_NOTIFY, TELEBGM_SERVICE, TELEBGM_WRITE, TeleBgmFrameReader } from "./telebgm.protocol.js";
|
|
11
|
+
import { TeleBgmSequencer } from "./telebgm.sequencer.js";
|
|
12
12
|
const GLUCOSE_REQUEST = taidocCommand(TAIDOC.readingResult).join("");
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
uuid:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
13
|
+
const TELEBGM_SERVICES = [{
|
|
14
|
+
uuid: TELEBGM_SERVICE,
|
|
15
|
+
monitorUuids: [{
|
|
16
|
+
uuid: TELEBGM_NOTIFY,
|
|
17
|
+
parsingModel: NO_PARSING_CASES
|
|
18
|
+
}]
|
|
19
|
+
}];
|
|
20
|
+
const taidocServices = device => [{
|
|
21
|
+
uuid: TAIDOC_SERVICE,
|
|
22
|
+
monitorUuids: [{
|
|
23
|
+
uuid: TAIDOC_CHARACTERISTIC,
|
|
24
|
+
parsingModel: {
|
|
25
|
+
caseValuePosition: [1],
|
|
26
|
+
cases: [...["46", ...(device === IntegratedDevices.GLUCOCHECK ? ["50"] : [])].map(caseValue => ({
|
|
27
|
+
caseType: CaseType.OTHER,
|
|
28
|
+
caseValue,
|
|
29
|
+
parseDefinitions: []
|
|
30
|
+
})), {
|
|
31
|
+
measurementTypeKey: MeasurementTypeKey.bloodGlucose,
|
|
32
|
+
caseType: CaseType.RESULT,
|
|
33
|
+
caseValue: "26",
|
|
34
|
+
parseDefinitions: [{
|
|
35
|
+
name: "bloodGlucose",
|
|
36
|
+
parseType: "custom",
|
|
37
|
+
byteIndexes: [3, 2],
|
|
38
|
+
parseReference: 16,
|
|
39
|
+
customParserDefinition: value => {
|
|
40
|
+
const raw = parseInt(value, 16);
|
|
41
|
+
return device === IntegratedDevices.TAIDOC_GLUCOSE ? Number((raw * 18).toFixed(2)) : raw;
|
|
42
|
+
}
|
|
42
43
|
}]
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
}]
|
|
45
|
+
}
|
|
46
|
+
}],
|
|
47
|
+
writeUuid: {
|
|
48
|
+
uuid: TAIDOC_CHARACTERISTIC,
|
|
49
|
+
mainCommandUuid: GLUCOSE_REQUEST
|
|
50
|
+
}
|
|
51
|
+
}];
|
|
52
|
+
const writesWithoutResponse = async device => {
|
|
53
|
+
try {
|
|
54
|
+
const characteristics = await device.characteristicsForService(TELEBGM_SERVICE);
|
|
55
|
+
const write = characteristics.find(({
|
|
56
|
+
uuid
|
|
57
|
+
}) => uuid.toLowerCase() === TELEBGM_WRITE);
|
|
58
|
+
return write?.isWritableWithResponse === false && write.isWritableWithoutResponse;
|
|
59
|
+
} catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
52
62
|
};
|
|
53
63
|
|
|
54
64
|
/** Decodes the legacy TaiDoc, GlucoCheck Gold and TeleBGM glucose protocols. */
|
|
@@ -56,16 +66,26 @@ export class BloodGlucoseDevice extends BTManagedDevice {
|
|
|
56
66
|
stuckDataTimeout = 60_000;
|
|
57
67
|
constructor(device, params) {
|
|
58
68
|
super(device, params);
|
|
59
|
-
|
|
69
|
+
if (params.deviceName !== IntegratedDevices.BGM) {
|
|
70
|
+
this.mainServices = taidocServices(params.deviceName);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.mainServices = TELEBGM_SERVICES;
|
|
74
|
+
this.frameReader = new TeleBgmFrameReader();
|
|
75
|
+
this.createCommandSequencer = () => new TeleBgmSequencer({
|
|
76
|
+
onResult: this.reportResult,
|
|
77
|
+
writesWithoutResponse: () => writesWithoutResponse(device),
|
|
78
|
+
clockSync: params.clockSync
|
|
79
|
+
});
|
|
60
80
|
}
|
|
61
|
-
validatePackage = pkg => pkg.length >=
|
|
81
|
+
validatePackage = pkg => pkg.length >= 8;
|
|
62
82
|
handleSuccessResult(result, frame) {
|
|
63
83
|
if (result.caseType !== CaseType.RESULT || result.bloodGlucose === 0) {
|
|
64
84
|
return;
|
|
65
85
|
}
|
|
66
86
|
|
|
67
87
|
// A ketone, cholesterol or control-solution record decodes to a number too; it is not glucose.
|
|
68
|
-
if (
|
|
88
|
+
if (!isPatientGlucoseRecord(frame)) {
|
|
69
89
|
return;
|
|
70
90
|
}
|
|
71
91
|
this.onResult?.(result);
|
package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementTypeKey","
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","NO_PARSING_CASES","CaseType","IntegratedDevices","BTManagedDevice","TAIDOC","TAIDOC_CHARACTERISTIC","TAIDOC_SERVICE","taidocCommand","isPatientGlucoseRecord","TELEBGM_NOTIFY","TELEBGM_SERVICE","TELEBGM_WRITE","TeleBgmFrameReader","TeleBgmSequencer","GLUCOSE_REQUEST","readingResult","join","TELEBGM_SERVICES","uuid","monitorUuids","parsingModel","taidocServices","device","caseValuePosition","cases","GLUCOCHECK","map","caseValue","caseType","OTHER","parseDefinitions","measurementTypeKey","bloodGlucose","RESULT","name","parseType","byteIndexes","parseReference","customParserDefinition","value","raw","parseInt","TAIDOC_GLUCOSE","Number","toFixed","writeUuid","mainCommandUuid","writesWithoutResponse","characteristics","characteristicsForService","write","find","toLowerCase","isWritableWithResponse","isWritableWithoutResponse","BloodGlucoseDevice","stuckDataTimeout","constructor","params","deviceName","BGM","mainServices","frameReader","createCommandSequencer","onResult","reportResult","clockSync","validatePackage","pkg","length","handleSuccessResult","result","frame"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/blood-glucose.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/* eslint-disable import/group-exports */
|
|
4
|
+
|
|
5
|
+
import { bytesToHex } from "../../../utils/bytes-to-hex.js";
|
|
6
|
+
import { calculateCrc16Modbus } from "../../../utils/calculate-crc-16-modbus.js";
|
|
7
|
+
import { frameBytes } from "../../../utils/frame-bytes.js";
|
|
8
|
+
import { complete, corrupt, incomplete } from "../../../utils/frame-read-results.js";
|
|
9
|
+
export const TELEBGM_SERVICE = "0003cdd0-0000-1000-8000-00805f9b0131";
|
|
10
|
+
export const TELEBGM_NOTIFY = "0003cdd1-0000-1000-8000-00805f9b0131";
|
|
11
|
+
export const TELEBGM_WRITE = "0003cdd2-0000-1000-8000-00805f9b0131";
|
|
12
|
+
|
|
13
|
+
/** Command byte of a frame; the meter answers a request with the same byte. */
|
|
14
|
+
export const TELEBGM_COMMAND = {
|
|
15
|
+
testStatus: 0x12,
|
|
16
|
+
setTime: 0x44,
|
|
17
|
+
softwareVersion: 0x66,
|
|
18
|
+
serial: 0x77,
|
|
19
|
+
units: 0xaa,
|
|
20
|
+
historyEnd: 0xd1,
|
|
21
|
+
history: 0xdd,
|
|
22
|
+
transferEnd: 0xf2
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/** Parameter byte of a request, a clock write and an acknowledgement. */
|
|
26
|
+
export const TELEBGM_PARAMETER = {
|
|
27
|
+
request: 0x55,
|
|
28
|
+
write: 0x66,
|
|
29
|
+
ack: 0x99
|
|
30
|
+
};
|
|
31
|
+
const START = 0x7b;
|
|
32
|
+
const END = 0x7d;
|
|
33
|
+
const APP_ADDRESS = [0x01, 0x10, 0x01, 0x20];
|
|
34
|
+
const COMMAND_INDEX = 5;
|
|
35
|
+
const LENGTH_INDEX = 7;
|
|
36
|
+
const HEADER_BYTES = 9;
|
|
37
|
+
|
|
38
|
+
/** Four CRC nibbles, then the end byte. */
|
|
39
|
+
const TRAILER_BYTES = 5;
|
|
40
|
+
|
|
41
|
+
/** Longer than any reply; a corrupted length would otherwise hold the buffer for ever. */
|
|
42
|
+
const MAX_PAYLOAD_BYTES = 64;
|
|
43
|
+
|
|
44
|
+
/** The CRC of everything between the start byte and the CRC, as four nibbles. */
|
|
45
|
+
const crcNibbles = body => {
|
|
46
|
+
const crc = calculateCrc16Modbus(body);
|
|
47
|
+
return [crc & 0xff, crc >> 8].flatMap(byte => [byte >> 4, byte & 0x0f]);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/** `7B 01 10 01 20 <command> <parameter> <length, 2 bytes> <payload> <CRC nibbles> 7D`. */
|
|
51
|
+
export const telebgmFrame = (command, parameter, payload = []) => {
|
|
52
|
+
const body = [...APP_ADDRESS, command, parameter, payload.length >> 8, payload.length & 0xff, ...payload];
|
|
53
|
+
return bytesToHex([START, ...body, ...crcNibbles(body), END]);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/** A frame's command byte and payload. */
|
|
57
|
+
export const unframe = frame => {
|
|
58
|
+
const bytes = frameBytes(frame);
|
|
59
|
+
return {
|
|
60
|
+
command: bytes[COMMAND_INDEX],
|
|
61
|
+
payload: bytes.slice(HEADER_BYTES, -TRAILER_BYTES)
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
const isIntact = frame => {
|
|
65
|
+
const crcAt = frame.length - TRAILER_BYTES;
|
|
66
|
+
return frame[frame.length - 1] === END && crcNibbles(frame.slice(1, crcAt)).every((nibble, index) => frame[crcAt + index] === nibble);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/** Reads frames by their length field, a record being longer than one notification, and checks their CRC. */
|
|
70
|
+
export class TeleBgmFrameReader {
|
|
71
|
+
readFrame(buffer) {
|
|
72
|
+
const values = frameBytes(buffer);
|
|
73
|
+
const start = values.indexOf(START);
|
|
74
|
+
if (start === -1) {
|
|
75
|
+
return incomplete(values.length);
|
|
76
|
+
}
|
|
77
|
+
if (start + HEADER_BYTES > values.length) {
|
|
78
|
+
return incomplete(start);
|
|
79
|
+
}
|
|
80
|
+
const payloadBytes = (values[start + LENGTH_INDEX] ?? 0) << 8 | (values[start + LENGTH_INDEX + 1] ?? 0);
|
|
81
|
+
const total = HEADER_BYTES + payloadBytes + TRAILER_BYTES;
|
|
82
|
+
if (payloadBytes > MAX_PAYLOAD_BYTES) {
|
|
83
|
+
return corrupt(start + 1);
|
|
84
|
+
}
|
|
85
|
+
if (start + total > values.length) {
|
|
86
|
+
return incomplete(start);
|
|
87
|
+
}
|
|
88
|
+
return isIntact(values.slice(start, start + total)) ? complete(buffer.slice(start, start + total), start + total) : corrupt(start + 1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=telebgm.protocol.js.map
|
package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["bytesToHex","calculateCrc16Modbus","frameBytes","complete","corrupt","incomplete","TELEBGM_SERVICE","TELEBGM_NOTIFY","TELEBGM_WRITE","TELEBGM_COMMAND","testStatus","setTime","softwareVersion","serial","units","historyEnd","history","transferEnd","TELEBGM_PARAMETER","request","write","ack","START","END","APP_ADDRESS","COMMAND_INDEX","LENGTH_INDEX","HEADER_BYTES","TRAILER_BYTES","MAX_PAYLOAD_BYTES","crcNibbles","body","crc","flatMap","byte","telebgmFrame","command","parameter","payload","length","unframe","frame","bytes","slice","isIntact","crcAt","every","nibble","index","TeleBgmFrameReader","readFrame","buffer","values","start","indexOf","payloadBytes","total"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/telebgm.protocol.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { MeasurementTypeKey } from "@ovok/core/next";
|
|
4
|
+
import { CaseType } from "../../../types/case-type.js";
|
|
5
|
+
import { getClockParts, isClockSyncEnabled } from "../../../types/clock-sync.js";
|
|
6
|
+
import { tenthsMmolToMgPerDl } from "../../../utils/tenths-mmol-to-mg-per-dl.js";
|
|
7
|
+
import { TELEBGM_COMMAND, TELEBGM_PARAMETER, TELEBGM_SERVICE, TELEBGM_WRITE, telebgmFrame, unframe } from "./telebgm.protocol.js";
|
|
8
|
+
|
|
9
|
+
/** Units reply of a meter showing mg/dL; any other shows mmol/L and reports tenths of a mmol/L. */
|
|
10
|
+
const MG_PER_DL_UNITS = 0x11;
|
|
11
|
+
|
|
12
|
+
/** Result type of a control-solution test, which is not the patient's glucose. */
|
|
13
|
+
const CONTROL_SOLUTION = 0x22;
|
|
14
|
+
|
|
15
|
+
/** `YY MM DD hh mm`, the value as hundreds and units, meal flag, result type. */
|
|
16
|
+
const RECORD_BYTES = 9;
|
|
17
|
+
const RESULT_TYPE_INDEX = 8;
|
|
18
|
+
/** A record's wall-clock time, or undefined when a field is out of range. */
|
|
19
|
+
const recordTime = ([year, month, day, hours, minutes], timezone = "local") => {
|
|
20
|
+
const fields = [2000 + (year ?? 0), (month ?? 0) - 1, day ?? 0, hours ?? 0, minutes ?? 0];
|
|
21
|
+
const time = timezone === "utc" ? new Date(Date.UTC(...fields)) : new Date(...fields);
|
|
22
|
+
const parts = getClockParts(time, timezone);
|
|
23
|
+
return parts.month === month && parts.day === day && parts.hours === hours && parts.minutes === minutes ? time : undefined;
|
|
24
|
+
};
|
|
25
|
+
const readRecord = (payload, reportsMmol, timezone) => {
|
|
26
|
+
if (payload.length < RECORD_BYTES || payload[RESULT_TYPE_INDEX] === CONTROL_SOLUTION) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const value = (payload[5] ?? 0) * 100 + (payload[6] ?? 0);
|
|
30
|
+
const recordedAt = recordTime(payload, timezone);
|
|
31
|
+
return recordedAt && value > 0 ? {
|
|
32
|
+
bloodGlucose: reportsMmol ? tenthsMmolToMgPerDl(value) : value,
|
|
33
|
+
recordedAt
|
|
34
|
+
} : undefined;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* TeleBGM Gen1: reads the serial, version and units, sets the clock, then downloads the stored
|
|
39
|
+
* readings. The meter sends a reading only when asked for its history, and expects every
|
|
40
|
+
* test-status frame and the end of a transfer to be acknowledged.
|
|
41
|
+
*/
|
|
42
|
+
export class TeleBgmSequencer {
|
|
43
|
+
withoutResponse = false;
|
|
44
|
+
reportsMmol = false;
|
|
45
|
+
finished = false;
|
|
46
|
+
constructor(params) {
|
|
47
|
+
this.params = params;
|
|
48
|
+
}
|
|
49
|
+
initialCommands = async () => {
|
|
50
|
+
this.withoutResponse = await this.params.writesWithoutResponse();
|
|
51
|
+
return [this.request(TELEBGM_COMMAND.serial)];
|
|
52
|
+
};
|
|
53
|
+
isHistoryTransfer = () => true;
|
|
54
|
+
isNormalDisconnect = () => this.finished;
|
|
55
|
+
nextCommand = frame => {
|
|
56
|
+
const {
|
|
57
|
+
command,
|
|
58
|
+
payload
|
|
59
|
+
} = unframe(frame);
|
|
60
|
+
switch (command) {
|
|
61
|
+
case TELEBGM_COMMAND.testStatus:
|
|
62
|
+
return [this.acknowledge(command)];
|
|
63
|
+
case TELEBGM_COMMAND.serial:
|
|
64
|
+
return [this.request(TELEBGM_COMMAND.softwareVersion)];
|
|
65
|
+
case TELEBGM_COMMAND.softwareVersion:
|
|
66
|
+
return [this.request(TELEBGM_COMMAND.units)];
|
|
67
|
+
case TELEBGM_COMMAND.units:
|
|
68
|
+
this.reportsMmol = payload[0] !== MG_PER_DL_UNITS;
|
|
69
|
+
return [this.setClock() ?? this.request(TELEBGM_COMMAND.history)];
|
|
70
|
+
case TELEBGM_COMMAND.setTime:
|
|
71
|
+
return [this.request(TELEBGM_COMMAND.history)];
|
|
72
|
+
case TELEBGM_COMMAND.history:
|
|
73
|
+
this.report(payload);
|
|
74
|
+
return undefined;
|
|
75
|
+
case TELEBGM_COMMAND.transferEnd:
|
|
76
|
+
this.finished = true;
|
|
77
|
+
return [this.acknowledge(command)];
|
|
78
|
+
case TELEBGM_COMMAND.historyEnd:
|
|
79
|
+
this.finished = true;
|
|
80
|
+
return undefined;
|
|
81
|
+
default:
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
report = payload => {
|
|
86
|
+
const reading = readRecord(payload, this.reportsMmol, this.params.clockSync?.timezone);
|
|
87
|
+
if (reading) {
|
|
88
|
+
this.params.onResult({
|
|
89
|
+
caseType: CaseType.RESULT,
|
|
90
|
+
measurementTypeKey: MeasurementTypeKey.bloodGlucose,
|
|
91
|
+
...reading
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
setClock = () => {
|
|
96
|
+
const {
|
|
97
|
+
clockSync
|
|
98
|
+
} = this.params;
|
|
99
|
+
if (!isClockSyncEnabled(clockSync)) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const {
|
|
103
|
+
year,
|
|
104
|
+
month,
|
|
105
|
+
day,
|
|
106
|
+
hours,
|
|
107
|
+
minutes,
|
|
108
|
+
seconds
|
|
109
|
+
} = getClockParts(clockSync?.now?.() ?? new Date(), clockSync?.timezone);
|
|
110
|
+
return this.command(telebgmFrame(TELEBGM_COMMAND.setTime, TELEBGM_PARAMETER.write, [year % 100, month, day, hours, minutes, seconds]));
|
|
111
|
+
};
|
|
112
|
+
request = command => this.command(telebgmFrame(command, TELEBGM_PARAMETER.request));
|
|
113
|
+
acknowledge = command => this.command(telebgmFrame(command, TELEBGM_PARAMETER.ack));
|
|
114
|
+
command = frame => ({
|
|
115
|
+
serviceUuid: TELEBGM_SERVICE,
|
|
116
|
+
characteristicUuid: TELEBGM_WRITE,
|
|
117
|
+
frame,
|
|
118
|
+
...(this.withoutResponse ? {
|
|
119
|
+
withoutResponse: true
|
|
120
|
+
} : {})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=telebgm.sequencer.js.map
|
package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MeasurementTypeKey","CaseType","getClockParts","isClockSyncEnabled","tenthsMmolToMgPerDl","TELEBGM_COMMAND","TELEBGM_PARAMETER","TELEBGM_SERVICE","TELEBGM_WRITE","telebgmFrame","unframe","MG_PER_DL_UNITS","CONTROL_SOLUTION","RECORD_BYTES","RESULT_TYPE_INDEX","recordTime","year","month","day","hours","minutes","timezone","fields","time","Date","UTC","parts","undefined","readRecord","payload","reportsMmol","length","value","recordedAt","bloodGlucose","TeleBgmSequencer","withoutResponse","finished","constructor","params","initialCommands","writesWithoutResponse","request","serial","isHistoryTransfer","isNormalDisconnect","nextCommand","frame","command","testStatus","acknowledge","softwareVersion","units","setClock","history","setTime","report","transferEnd","historyEnd","reading","clockSync","onResult","caseType","RESULT","measurementTypeKey","seconds","now","write","ack","serviceUuid","characteristicUuid"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,10 +13,12 @@ const BP2_REALTIME_COMMAND = 0x08;
|
|
|
13
13
|
const BP2_RESULT_STATES = new Set(["05", "07", "11"]);
|
|
14
14
|
const BP2_ECG_STATE = "06";
|
|
15
15
|
const BP2_IDLE_STATES = new Set(["00", "01", "03"]);
|
|
16
|
-
const BP2_POLL_INTERVAL_MS = 200;
|
|
17
16
|
|
|
18
|
-
/**
|
|
19
|
-
const
|
|
17
|
+
/** The pace of Viatom's own BP2 client, which the device keeps up with while it measures. */
|
|
18
|
+
const BP2_POLL_INTERVAL_MS = 500;
|
|
19
|
+
|
|
20
|
+
/** How long a queued realtime poll may go unanswered before it is sent again. */
|
|
21
|
+
const BP2_POLL_ANSWER_TIMEOUT_MS = BP2_POLL_INTERVAL_MS + 1_000;
|
|
20
22
|
/** Reads unseen BP2 history on connect and after each realtime result. */
|
|
21
23
|
class BP2HistorySequencer {
|
|
22
24
|
builder = new LepuCommandBuilder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sentryLogger","isClockSyncEnabled","hexToByte","LepuCommandBuilder","LepuCommand","clockPayload","LepuFileTransfer","lepuCommandOf","isLepuSuccess","describeLepuResponseType","BP2_REALTIME_COMMAND","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2_POLL_INTERVAL_MS","BP2_POLL_ANSWER_TIMEOUT_MS","BP2HistorySequencer","builder","lastRunStatusFrameCount","realtimeEcgActive","phase","constructor","params","initialCommands","clockSync","write","frame","build","SET_TIME","startTransfer","isHistoryTransfer","commandTimeoutMs","isPolling","undefined","onCommandTimeout","commands","pollCommand","commandProgress","nextCommand","onError","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","delayBeforeWriteMs","onFile","skipFiles","afterTransfer","finishTransfer","onTransferFinished","has","toLowerCase","runStatus","lastRunStatus"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,4CAAyC;AACtE,SACEC,kBAAkB,QAEb,8BAA2B;AAMlC,SAASC,SAAS,QAAQ,+BAA4B;AACtD,SAASC,kBAAkB,QAAQ,iCAA8B;AACjE,SAASC,WAAW,QAAQ,0BAAuB;AACnD,SAASC,YAAY,QAAQ,8BAA2B;AACxD,SAAmBC,gBAAgB,QAAQ,+BAA4B;AACvE,SAASC,aAAa,QAAQ,uBAAoB;AAClD,SACEC,aAAa,EACbC,wBAAwB,QACnB,+BAA4B;AAEnC,MAAMC,oBAAoB,GAAG,IAAI;AACjC,MAAMC,iBAAiB,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,MAAMC,aAAa,GAAG,IAAI;AAC1B,MAAMC,eAAe,GAAG,IAAIF,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["sentryLogger","isClockSyncEnabled","hexToByte","LepuCommandBuilder","LepuCommand","clockPayload","LepuFileTransfer","lepuCommandOf","isLepuSuccess","describeLepuResponseType","BP2_REALTIME_COMMAND","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2_POLL_INTERVAL_MS","BP2_POLL_ANSWER_TIMEOUT_MS","BP2HistorySequencer","builder","lastRunStatusFrameCount","realtimeEcgActive","phase","constructor","params","initialCommands","clockSync","write","frame","build","SET_TIME","startTransfer","isHistoryTransfer","commandTimeoutMs","isPolling","undefined","onCommandTimeout","commands","pollCommand","commandProgress","nextCommand","onError","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","delayBeforeWriteMs","onFile","skipFiles","afterTransfer","finishTransfer","onTransferFinished","has","toLowerCase","runStatus","lastRunStatus"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -175,7 +175,7 @@ export class BTDataProcessor {
|
|
|
175
175
|
message: "Device is stuck"
|
|
176
176
|
}
|
|
177
177
|
}));
|
|
178
|
-
this.
|
|
178
|
+
this.cancelConnection(MeasurementFeedbackKey.STUCK);
|
|
179
179
|
}, this.stuckDataTimeoutDuration);
|
|
180
180
|
};
|
|
181
181
|
startCommandTimeout = () => {
|
|
@@ -194,9 +194,17 @@ export class BTDataProcessor {
|
|
|
194
194
|
}
|
|
195
195
|
if (result?.terminal) {
|
|
196
196
|
this.callbacks.onError?.(new Error(MeasurementFeedbackKey.COMMAND_TIMEOUT));
|
|
197
|
-
|
|
197
|
+
this.cancelConnection(MeasurementFeedbackKey.COMMAND_TIMEOUT);
|
|
198
198
|
}
|
|
199
199
|
}, duration);
|
|
200
200
|
};
|
|
201
|
+
|
|
202
|
+
/** Ends the link from this side, logged so it is never mistaken for the device hanging up. */
|
|
203
|
+
cancelConnection = reason => {
|
|
204
|
+
sentryLogger("warning", "BT_MANAGER: Cancelling the connection", {
|
|
205
|
+
reason
|
|
206
|
+
});
|
|
207
|
+
void this.device.cancelConnection?.();
|
|
208
|
+
};
|
|
201
209
|
}
|
|
202
210
|
//# sourceMappingURL=bt-data-processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sentryLogger","MeasurementFeedbackKey","CaseType","FrameReadStatus","FrameParser","MeasurementStateMachine","BTDataProcessor","buffers","Map","constructor","device","mainServices","stuckDataTimeoutDuration","callbacks","frameReader","frameParser","measurementState","onStatusChanged","onStreamStart","onMeasurementEnd","onResult","currentUuid","destroy","clear","reset","clearTimeout","stuckDataTimeout","undefined","commandTimeout","processData","uuid","hexValue","String","toLowerCase","buffer","get","push","set","startStuckTimeout","readFramesFromBuffer","readWholeBuffer","armStuckTimeout","armCommandTimeout","startCommandTimeout","reader","length","result","readFrame","hasProgressed","consumedBytes","splice","status","COMPLETE","handleFrame","frame","answerFrame","CORRUPT","reportCorruptFrame","validatePackage","progress","commandProgress","commands","nextCommand","sendCommands","data","parse","frameLength","dependentData","parsingCase","caseType","DEPENDENT","handleDependentResult","isMeasuring","measuring","advance","onError","Error","CORRUPT_FRAME","cause","message","setTimeout","STUCK","cancelConnection","duration","commandTimeoutMs","onCommandTimeout","terminal","COMMAND_TIMEOUT"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["sentryLogger","MeasurementFeedbackKey","CaseType","FrameReadStatus","FrameParser","MeasurementStateMachine","BTDataProcessor","buffers","Map","constructor","device","mainServices","stuckDataTimeoutDuration","callbacks","frameReader","frameParser","measurementState","onStatusChanged","onStreamStart","onMeasurementEnd","onResult","currentUuid","destroy","clear","reset","clearTimeout","stuckDataTimeout","undefined","commandTimeout","processData","uuid","hexValue","String","toLowerCase","buffer","get","push","set","startStuckTimeout","readFramesFromBuffer","readWholeBuffer","armStuckTimeout","armCommandTimeout","startCommandTimeout","reader","length","result","readFrame","hasProgressed","consumedBytes","splice","status","COMPLETE","handleFrame","frame","answerFrame","CORRUPT","reportCorruptFrame","validatePackage","progress","commandProgress","commands","nextCommand","sendCommands","data","parse","frameLength","dependentData","parsingCase","caseType","DEPENDENT","handleDependentResult","isMeasuring","measuring","advance","onError","Error","CORRUPT_FRAME","cause","message","setTimeout","STUCK","cancelConnection","duration","commandTimeoutMs","onCommandTimeout","terminal","COMMAND_TIMEOUT","reason"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":"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","ignoreList":[]}
|