@ovok/native 1.16.1-dev.2155 → 1.16.1-dev.2159
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.device.js +12 -7
- package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.device.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.device.js +12 -7
- package/lib/module/modules/bt-management/services/devices/bp2/bp2.device.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.device.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.device.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/blood-glucose/blood-glucose.device.js
CHANGED
|
@@ -5,54 +5,64 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.BloodGlucoseDevice = void 0;
|
|
7
7
|
var _next = require("@ovok/core/next");
|
|
8
|
+
var _noParsingCases = require("../../../constants/no-parsing-cases.js");
|
|
8
9
|
var _caseType = require("../../../types/case-type.js");
|
|
9
10
|
var _integratedDevices = require("../../../types/integrated-devices.js");
|
|
10
|
-
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
11
11
|
var _btManagedDevice = require("../bt-managed-device.js");
|
|
12
12
|
var _taidocProtocol = require("../taidoc/taidoc.protocol.js");
|
|
13
13
|
var _taidocRecords = require("../taidoc/taidoc.records.js");
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
var _telebgmProtocol = require("./telebgm.protocol.js");
|
|
15
|
+
var _telebgmSequencer = require("./telebgm.sequencer.js");
|
|
16
16
|
const GLUCOSE_REQUEST = (0, _taidocProtocol.taidocCommand)(_taidocProtocol.TAIDOC.readingResult).join("");
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
uuid:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
17
|
+
const TELEBGM_SERVICES = [{
|
|
18
|
+
uuid: _telebgmProtocol.TELEBGM_SERVICE,
|
|
19
|
+
monitorUuids: [{
|
|
20
|
+
uuid: _telebgmProtocol.TELEBGM_NOTIFY,
|
|
21
|
+
parsingModel: _noParsingCases.NO_PARSING_CASES
|
|
22
|
+
}]
|
|
23
|
+
}];
|
|
24
|
+
const taidocServices = device => [{
|
|
25
|
+
uuid: _taidocProtocol.TAIDOC_SERVICE,
|
|
26
|
+
monitorUuids: [{
|
|
27
|
+
uuid: _taidocProtocol.TAIDOC_CHARACTERISTIC,
|
|
28
|
+
parsingModel: {
|
|
29
|
+
caseValuePosition: [1],
|
|
30
|
+
cases: [...["46", ...(device === _integratedDevices.IntegratedDevices.GLUCOCHECK ? ["50"] : [])].map(caseValue => ({
|
|
31
|
+
caseType: _caseType.CaseType.OTHER,
|
|
32
|
+
caseValue,
|
|
33
|
+
parseDefinitions: []
|
|
34
|
+
})), {
|
|
35
|
+
measurementTypeKey: _next.MeasurementTypeKey.bloodGlucose,
|
|
36
|
+
caseType: _caseType.CaseType.RESULT,
|
|
37
|
+
caseValue: "26",
|
|
38
|
+
parseDefinitions: [{
|
|
39
|
+
name: "bloodGlucose",
|
|
40
|
+
parseType: "custom",
|
|
41
|
+
byteIndexes: [3, 2],
|
|
42
|
+
parseReference: 16,
|
|
43
|
+
customParserDefinition: value => {
|
|
44
|
+
const raw = parseInt(value, 16);
|
|
45
|
+
return device === _integratedDevices.IntegratedDevices.TAIDOC_GLUCOSE ? Number((raw * 18).toFixed(2)) : raw;
|
|
46
|
+
}
|
|
46
47
|
}]
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
}]
|
|
49
|
+
}
|
|
50
|
+
}],
|
|
51
|
+
writeUuid: {
|
|
52
|
+
uuid: _taidocProtocol.TAIDOC_CHARACTERISTIC,
|
|
53
|
+
mainCommandUuid: GLUCOSE_REQUEST
|
|
54
|
+
}
|
|
55
|
+
}];
|
|
56
|
+
const writesWithoutResponse = async device => {
|
|
57
|
+
try {
|
|
58
|
+
const characteristics = await device.characteristicsForService(_telebgmProtocol.TELEBGM_SERVICE);
|
|
59
|
+
const write = characteristics.find(({
|
|
60
|
+
uuid
|
|
61
|
+
}) => uuid.toLowerCase() === _telebgmProtocol.TELEBGM_WRITE);
|
|
62
|
+
return write?.isWritableWithResponse === false && write.isWritableWithoutResponse;
|
|
63
|
+
} catch {
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
56
66
|
};
|
|
57
67
|
|
|
58
68
|
/** Decodes the legacy TaiDoc, GlucoCheck Gold and TeleBGM glucose protocols. */
|
|
@@ -60,16 +70,26 @@ class BloodGlucoseDevice extends _btManagedDevice.BTManagedDevice {
|
|
|
60
70
|
stuckDataTimeout = 60_000;
|
|
61
71
|
constructor(device, params) {
|
|
62
72
|
super(device, params);
|
|
63
|
-
|
|
73
|
+
if (params.deviceName !== _integratedDevices.IntegratedDevices.BGM) {
|
|
74
|
+
this.mainServices = taidocServices(params.deviceName);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.mainServices = TELEBGM_SERVICES;
|
|
78
|
+
this.frameReader = new _telebgmProtocol.TeleBgmFrameReader();
|
|
79
|
+
this.createCommandSequencer = () => new _telebgmSequencer.TeleBgmSequencer({
|
|
80
|
+
onResult: this.reportResult,
|
|
81
|
+
writesWithoutResponse: () => writesWithoutResponse(device),
|
|
82
|
+
clockSync: params.clockSync
|
|
83
|
+
});
|
|
64
84
|
}
|
|
65
|
-
validatePackage = pkg => pkg.length >=
|
|
85
|
+
validatePackage = pkg => pkg.length >= 8;
|
|
66
86
|
handleSuccessResult(result, frame) {
|
|
67
87
|
if (result.caseType !== _caseType.CaseType.RESULT || result.bloodGlucose === 0) {
|
|
68
88
|
return;
|
|
69
89
|
}
|
|
70
90
|
|
|
71
91
|
// A ketone, cholesterol or control-solution record decodes to a number too; it is not glucose.
|
|
72
|
-
if (
|
|
92
|
+
if (!(0, _taidocRecords.isPatientGlucoseRecord)(frame)) {
|
|
73
93
|
return;
|
|
74
94
|
}
|
|
75
95
|
this.onResult?.(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_next","require","
|
|
1
|
+
{"version":3,"names":["_next","require","_noParsingCases","_caseType","_integratedDevices","_btManagedDevice","_taidocProtocol","_taidocRecords","_telebgmProtocol","_telebgmSequencer","GLUCOSE_REQUEST","taidocCommand","TAIDOC","readingResult","join","TELEBGM_SERVICES","uuid","TELEBGM_SERVICE","monitorUuids","TELEBGM_NOTIFY","parsingModel","NO_PARSING_CASES","taidocServices","device","TAIDOC_SERVICE","TAIDOC_CHARACTERISTIC","caseValuePosition","cases","IntegratedDevices","GLUCOCHECK","map","caseValue","caseType","CaseType","OTHER","parseDefinitions","measurementTypeKey","MeasurementTypeKey","bloodGlucose","RESULT","name","parseType","byteIndexes","parseReference","customParserDefinition","value","raw","parseInt","TAIDOC_GLUCOSE","Number","toFixed","writeUuid","mainCommandUuid","writesWithoutResponse","characteristics","characteristicsForService","write","find","toLowerCase","TELEBGM_WRITE","isWritableWithResponse","isWritableWithoutResponse","BloodGlucoseDevice","BTManagedDevice","stuckDataTimeout","constructor","params","deviceName","BGM","mainServices","frameReader","TeleBgmFrameReader","createCommandSequencer","TeleBgmSequencer","onResult","reportResult","clockSync","validatePackage","pkg","length","handleSuccessResult","result","frame","isPatientGlucoseRecord","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/blood-glucose.device.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.unframe = exports.telebgmFrame = exports.TeleBgmFrameReader = exports.TELEBGM_WRITE = exports.TELEBGM_SERVICE = exports.TELEBGM_PARAMETER = exports.TELEBGM_NOTIFY = exports.TELEBGM_COMMAND = void 0;
|
|
7
|
+
var _bytesToHex = require("../../../utils/bytes-to-hex.js");
|
|
8
|
+
var _calculateCrc16Modbus = require("../../../utils/calculate-crc-16-modbus.js");
|
|
9
|
+
var _frameBytes = require("../../../utils/frame-bytes.js");
|
|
10
|
+
var _frameReadResults = require("../../../utils/frame-read-results.js");
|
|
11
|
+
/* eslint-disable import/group-exports */
|
|
12
|
+
|
|
13
|
+
const TELEBGM_SERVICE = exports.TELEBGM_SERVICE = "0003cdd0-0000-1000-8000-00805f9b0131";
|
|
14
|
+
const TELEBGM_NOTIFY = exports.TELEBGM_NOTIFY = "0003cdd1-0000-1000-8000-00805f9b0131";
|
|
15
|
+
const TELEBGM_WRITE = exports.TELEBGM_WRITE = "0003cdd2-0000-1000-8000-00805f9b0131";
|
|
16
|
+
|
|
17
|
+
/** Command byte of a frame; the meter answers a request with the same byte. */
|
|
18
|
+
const TELEBGM_COMMAND = exports.TELEBGM_COMMAND = {
|
|
19
|
+
testStatus: 0x12,
|
|
20
|
+
setTime: 0x44,
|
|
21
|
+
softwareVersion: 0x66,
|
|
22
|
+
serial: 0x77,
|
|
23
|
+
units: 0xaa,
|
|
24
|
+
historyEnd: 0xd1,
|
|
25
|
+
history: 0xdd,
|
|
26
|
+
transferEnd: 0xf2
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/** Parameter byte of a request, a clock write and an acknowledgement. */
|
|
30
|
+
const TELEBGM_PARAMETER = exports.TELEBGM_PARAMETER = {
|
|
31
|
+
request: 0x55,
|
|
32
|
+
write: 0x66,
|
|
33
|
+
ack: 0x99
|
|
34
|
+
};
|
|
35
|
+
const START = 0x7b;
|
|
36
|
+
const END = 0x7d;
|
|
37
|
+
const APP_ADDRESS = [0x01, 0x10, 0x01, 0x20];
|
|
38
|
+
const COMMAND_INDEX = 5;
|
|
39
|
+
const LENGTH_INDEX = 7;
|
|
40
|
+
const HEADER_BYTES = 9;
|
|
41
|
+
|
|
42
|
+
/** Four CRC nibbles, then the end byte. */
|
|
43
|
+
const TRAILER_BYTES = 5;
|
|
44
|
+
|
|
45
|
+
/** Longer than any reply; a corrupted length would otherwise hold the buffer for ever. */
|
|
46
|
+
const MAX_PAYLOAD_BYTES = 64;
|
|
47
|
+
|
|
48
|
+
/** The CRC of everything between the start byte and the CRC, as four nibbles. */
|
|
49
|
+
const crcNibbles = body => {
|
|
50
|
+
const crc = (0, _calculateCrc16Modbus.calculateCrc16Modbus)(body);
|
|
51
|
+
return [crc & 0xff, crc >> 8].flatMap(byte => [byte >> 4, byte & 0x0f]);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/** `7B 01 10 01 20 <command> <parameter> <length, 2 bytes> <payload> <CRC nibbles> 7D`. */
|
|
55
|
+
const telebgmFrame = (command, parameter, payload = []) => {
|
|
56
|
+
const body = [...APP_ADDRESS, command, parameter, payload.length >> 8, payload.length & 0xff, ...payload];
|
|
57
|
+
return (0, _bytesToHex.bytesToHex)([START, ...body, ...crcNibbles(body), END]);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/** A frame's command byte and payload. */
|
|
61
|
+
exports.telebgmFrame = telebgmFrame;
|
|
62
|
+
const unframe = frame => {
|
|
63
|
+
const bytes = (0, _frameBytes.frameBytes)(frame);
|
|
64
|
+
return {
|
|
65
|
+
command: bytes[COMMAND_INDEX],
|
|
66
|
+
payload: bytes.slice(HEADER_BYTES, -TRAILER_BYTES)
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
exports.unframe = unframe;
|
|
70
|
+
const isIntact = frame => {
|
|
71
|
+
const crcAt = frame.length - TRAILER_BYTES;
|
|
72
|
+
return frame[frame.length - 1] === END && crcNibbles(frame.slice(1, crcAt)).every((nibble, index) => frame[crcAt + index] === nibble);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/** Reads frames by their length field, a record being longer than one notification, and checks their CRC. */
|
|
76
|
+
class TeleBgmFrameReader {
|
|
77
|
+
readFrame(buffer) {
|
|
78
|
+
const values = (0, _frameBytes.frameBytes)(buffer);
|
|
79
|
+
const start = values.indexOf(START);
|
|
80
|
+
if (start === -1) {
|
|
81
|
+
return (0, _frameReadResults.incomplete)(values.length);
|
|
82
|
+
}
|
|
83
|
+
if (start + HEADER_BYTES > values.length) {
|
|
84
|
+
return (0, _frameReadResults.incomplete)(start);
|
|
85
|
+
}
|
|
86
|
+
const payloadBytes = (values[start + LENGTH_INDEX] ?? 0) << 8 | (values[start + LENGTH_INDEX + 1] ?? 0);
|
|
87
|
+
const total = HEADER_BYTES + payloadBytes + TRAILER_BYTES;
|
|
88
|
+
if (payloadBytes > MAX_PAYLOAD_BYTES) {
|
|
89
|
+
return (0, _frameReadResults.corrupt)(start + 1);
|
|
90
|
+
}
|
|
91
|
+
if (start + total > values.length) {
|
|
92
|
+
return (0, _frameReadResults.incomplete)(start);
|
|
93
|
+
}
|
|
94
|
+
return isIntact(values.slice(start, start + total)) ? (0, _frameReadResults.complete)(buffer.slice(start, start + total), start + total) : (0, _frameReadResults.corrupt)(start + 1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.TeleBgmFrameReader = TeleBgmFrameReader;
|
|
98
|
+
//# sourceMappingURL=telebgm.protocol.js.map
|
package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_bytesToHex","require","_calculateCrc16Modbus","_frameBytes","_frameReadResults","TELEBGM_SERVICE","exports","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","calculateCrc16Modbus","flatMap","byte","telebgmFrame","command","parameter","payload","length","bytesToHex","unframe","frame","bytes","frameBytes","slice","isIntact","crcAt","every","nibble","index","TeleBgmFrameReader","readFrame","buffer","values","start","indexOf","incomplete","payloadBytes","total","corrupt","complete"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/telebgm.protocol.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TeleBgmSequencer = void 0;
|
|
7
|
+
var _next = require("@ovok/core/next");
|
|
8
|
+
var _caseType = require("../../../types/case-type.js");
|
|
9
|
+
var _clockSync = require("../../../types/clock-sync.js");
|
|
10
|
+
var _tenthsMmolToMgPerDl = require("../../../utils/tenths-mmol-to-mg-per-dl.js");
|
|
11
|
+
var _telebgmProtocol = require("./telebgm.protocol.js");
|
|
12
|
+
/** Units reply of a meter showing mg/dL; any other shows mmol/L and reports tenths of a mmol/L. */
|
|
13
|
+
const MG_PER_DL_UNITS = 0x11;
|
|
14
|
+
|
|
15
|
+
/** Result type of a control-solution test, which is not the patient's glucose. */
|
|
16
|
+
const CONTROL_SOLUTION = 0x22;
|
|
17
|
+
|
|
18
|
+
/** `YY MM DD hh mm`, the value as hundreds and units, meal flag, result type. */
|
|
19
|
+
const RECORD_BYTES = 9;
|
|
20
|
+
const RESULT_TYPE_INDEX = 8;
|
|
21
|
+
/** A record's wall-clock time, or undefined when a field is out of range. */
|
|
22
|
+
const recordTime = ([year, month, day, hours, minutes], timezone = "local") => {
|
|
23
|
+
const fields = [2000 + (year ?? 0), (month ?? 0) - 1, day ?? 0, hours ?? 0, minutes ?? 0];
|
|
24
|
+
const time = timezone === "utc" ? new Date(Date.UTC(...fields)) : new Date(...fields);
|
|
25
|
+
const parts = (0, _clockSync.getClockParts)(time, timezone);
|
|
26
|
+
return parts.month === month && parts.day === day && parts.hours === hours && parts.minutes === minutes ? time : undefined;
|
|
27
|
+
};
|
|
28
|
+
const readRecord = (payload, reportsMmol, timezone) => {
|
|
29
|
+
if (payload.length < RECORD_BYTES || payload[RESULT_TYPE_INDEX] === CONTROL_SOLUTION) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const value = (payload[5] ?? 0) * 100 + (payload[6] ?? 0);
|
|
33
|
+
const recordedAt = recordTime(payload, timezone);
|
|
34
|
+
return recordedAt && value > 0 ? {
|
|
35
|
+
bloodGlucose: reportsMmol ? (0, _tenthsMmolToMgPerDl.tenthsMmolToMgPerDl)(value) : value,
|
|
36
|
+
recordedAt
|
|
37
|
+
} : undefined;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* TeleBGM Gen1: reads the serial, version and units, sets the clock, then downloads the stored
|
|
42
|
+
* readings. The meter sends a reading only when asked for its history, and expects every
|
|
43
|
+
* test-status frame and the end of a transfer to be acknowledged.
|
|
44
|
+
*/
|
|
45
|
+
class TeleBgmSequencer {
|
|
46
|
+
withoutResponse = false;
|
|
47
|
+
reportsMmol = false;
|
|
48
|
+
finished = false;
|
|
49
|
+
constructor(params) {
|
|
50
|
+
this.params = params;
|
|
51
|
+
}
|
|
52
|
+
initialCommands = async () => {
|
|
53
|
+
this.withoutResponse = await this.params.writesWithoutResponse();
|
|
54
|
+
return [this.request(_telebgmProtocol.TELEBGM_COMMAND.serial)];
|
|
55
|
+
};
|
|
56
|
+
isHistoryTransfer = () => true;
|
|
57
|
+
isNormalDisconnect = () => this.finished;
|
|
58
|
+
nextCommand = frame => {
|
|
59
|
+
const {
|
|
60
|
+
command,
|
|
61
|
+
payload
|
|
62
|
+
} = (0, _telebgmProtocol.unframe)(frame);
|
|
63
|
+
switch (command) {
|
|
64
|
+
case _telebgmProtocol.TELEBGM_COMMAND.testStatus:
|
|
65
|
+
return [this.acknowledge(command)];
|
|
66
|
+
case _telebgmProtocol.TELEBGM_COMMAND.serial:
|
|
67
|
+
return [this.request(_telebgmProtocol.TELEBGM_COMMAND.softwareVersion)];
|
|
68
|
+
case _telebgmProtocol.TELEBGM_COMMAND.softwareVersion:
|
|
69
|
+
return [this.request(_telebgmProtocol.TELEBGM_COMMAND.units)];
|
|
70
|
+
case _telebgmProtocol.TELEBGM_COMMAND.units:
|
|
71
|
+
this.reportsMmol = payload[0] !== MG_PER_DL_UNITS;
|
|
72
|
+
return [this.setClock() ?? this.request(_telebgmProtocol.TELEBGM_COMMAND.history)];
|
|
73
|
+
case _telebgmProtocol.TELEBGM_COMMAND.setTime:
|
|
74
|
+
return [this.request(_telebgmProtocol.TELEBGM_COMMAND.history)];
|
|
75
|
+
case _telebgmProtocol.TELEBGM_COMMAND.history:
|
|
76
|
+
this.report(payload);
|
|
77
|
+
return undefined;
|
|
78
|
+
case _telebgmProtocol.TELEBGM_COMMAND.transferEnd:
|
|
79
|
+
this.finished = true;
|
|
80
|
+
return [this.acknowledge(command)];
|
|
81
|
+
case _telebgmProtocol.TELEBGM_COMMAND.historyEnd:
|
|
82
|
+
this.finished = true;
|
|
83
|
+
return undefined;
|
|
84
|
+
default:
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
report = payload => {
|
|
89
|
+
const reading = readRecord(payload, this.reportsMmol, this.params.clockSync?.timezone);
|
|
90
|
+
if (reading) {
|
|
91
|
+
this.params.onResult({
|
|
92
|
+
caseType: _caseType.CaseType.RESULT,
|
|
93
|
+
measurementTypeKey: _next.MeasurementTypeKey.bloodGlucose,
|
|
94
|
+
...reading
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
setClock = () => {
|
|
99
|
+
const {
|
|
100
|
+
clockSync
|
|
101
|
+
} = this.params;
|
|
102
|
+
if (!(0, _clockSync.isClockSyncEnabled)(clockSync)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const {
|
|
106
|
+
year,
|
|
107
|
+
month,
|
|
108
|
+
day,
|
|
109
|
+
hours,
|
|
110
|
+
minutes,
|
|
111
|
+
seconds
|
|
112
|
+
} = (0, _clockSync.getClockParts)(clockSync?.now?.() ?? new Date(), clockSync?.timezone);
|
|
113
|
+
return this.command((0, _telebgmProtocol.telebgmFrame)(_telebgmProtocol.TELEBGM_COMMAND.setTime, _telebgmProtocol.TELEBGM_PARAMETER.write, [year % 100, month, day, hours, minutes, seconds]));
|
|
114
|
+
};
|
|
115
|
+
request = command => this.command((0, _telebgmProtocol.telebgmFrame)(command, _telebgmProtocol.TELEBGM_PARAMETER.request));
|
|
116
|
+
acknowledge = command => this.command((0, _telebgmProtocol.telebgmFrame)(command, _telebgmProtocol.TELEBGM_PARAMETER.ack));
|
|
117
|
+
command = frame => ({
|
|
118
|
+
serviceUuid: _telebgmProtocol.TELEBGM_SERVICE,
|
|
119
|
+
characteristicUuid: _telebgmProtocol.TELEBGM_WRITE,
|
|
120
|
+
frame,
|
|
121
|
+
...(this.withoutResponse ? {
|
|
122
|
+
withoutResponse: true
|
|
123
|
+
} : {})
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
exports.TeleBgmSequencer = TeleBgmSequencer;
|
|
127
|
+
//# sourceMappingURL=telebgm.sequencer.js.map
|
package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_next","require","_caseType","_clockSync","_tenthsMmolToMgPerDl","_telebgmProtocol","MG_PER_DL_UNITS","CONTROL_SOLUTION","RECORD_BYTES","RESULT_TYPE_INDEX","recordTime","year","month","day","hours","minutes","timezone","fields","time","Date","UTC","parts","getClockParts","undefined","readRecord","payload","reportsMmol","length","value","recordedAt","bloodGlucose","tenthsMmolToMgPerDl","TeleBgmSequencer","withoutResponse","finished","constructor","params","initialCommands","writesWithoutResponse","request","TELEBGM_COMMAND","serial","isHistoryTransfer","isNormalDisconnect","nextCommand","frame","command","unframe","testStatus","acknowledge","softwareVersion","units","setClock","history","setTime","report","transferEnd","historyEnd","reading","clockSync","onResult","caseType","CaseType","RESULT","measurementTypeKey","MeasurementTypeKey","isClockSyncEnabled","seconds","now","telebgmFrame","TELEBGM_PARAMETER","write","ack","serviceUuid","TELEBGM_SERVICE","characteristicUuid","TELEBGM_WRITE","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,8 +29,12 @@ var _bp2MainServices = require("./bp2.main-services.js");
|
|
|
29
29
|
*/
|
|
30
30
|
/** BP2 ECG waveform resolution from the device protocol. */
|
|
31
31
|
const BP2_ECG_MILLIVOLTS_PER_COUNT = exports.BP2_ECG_MILLIVOLTS_PER_COUNT = 0.003098;
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
|
|
33
|
+
/** The realtime ECG stream's rate. */
|
|
34
|
+
const BP2_LIVE_ECG_SAMPLES_PER_SECOND = 250;
|
|
35
|
+
|
|
36
|
+
/** Stored ECG files hold the waveform at half the realtime rate. */
|
|
37
|
+
const BP2_FILE_ECG_SAMPLES_PER_SECOND = 125;
|
|
34
38
|
const BP2_ECG_NO_VALUE = 0x7fff;
|
|
35
39
|
const BP2_BP_NO_VALUE = 0xffff;
|
|
36
40
|
const BP2_PULSE_NO_VALUES = new Set([0xff, 0x1ff, BP2_BP_NO_VALUE]);
|
|
@@ -101,7 +105,7 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
|
|
|
101
105
|
successResult.diagramPoints = this.diagramPoints;
|
|
102
106
|
successResult.duration = this.duration;
|
|
103
107
|
this.addDeviceTimestamp(successResult);
|
|
104
|
-
const error = this.checkIfHasErrorForEcg(successResult);
|
|
108
|
+
const error = this.checkIfHasErrorForEcg(successResult, BP2_LIVE_ECG_SAMPLES_PER_SECOND);
|
|
105
109
|
if (error) {
|
|
106
110
|
this.onError?.(error);
|
|
107
111
|
return;
|
|
@@ -219,7 +223,7 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
|
|
|
219
223
|
...decoded,
|
|
220
224
|
caseType: _caseType.CaseType.RESULT
|
|
221
225
|
};
|
|
222
|
-
const error = result.measurementTypeKey === _next.MeasurementTypeKey.bloodPressure ? this.checkIfHasErrorForBloodPressure(result) : this.checkIfHasErrorForEcg(result);
|
|
226
|
+
const error = result.measurementTypeKey === _next.MeasurementTypeKey.bloodPressure ? this.checkIfHasErrorForBloodPressure(result) : this.checkIfHasErrorForEcg(result, BP2_FILE_ECG_SAMPLES_PER_SECOND);
|
|
223
227
|
if (error) {
|
|
224
228
|
this.onError?.(error);
|
|
225
229
|
return;
|
|
@@ -247,7 +251,7 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
|
|
|
247
251
|
this.pendingResults.forEach(result => this.onResult?.(result));
|
|
248
252
|
this.pendingResults.clear();
|
|
249
253
|
};
|
|
250
|
-
checkIfHasErrorForEcg(successResult) {
|
|
254
|
+
checkIfHasErrorForEcg(successResult, samplesPerSecond) {
|
|
251
255
|
const ecgMeasurement = successResult;
|
|
252
256
|
if (ecgMeasurement.diagnosticResult === _next.EcgDiagnosticFlag.POOR_WAVEFORM) {
|
|
253
257
|
return _measurementFeedback.MeasurementFeedbackKey.POOR_WAVEFORM;
|
|
@@ -272,8 +276,9 @@ class BP2Device extends _btManagedDevice.BTManagedDevice {
|
|
|
272
276
|
return _measurementFeedback.MeasurementFeedbackKey.INSUFFICIENT_DATA_LENGTH;
|
|
273
277
|
}
|
|
274
278
|
if (ecgMeasurement.duration > 0) {
|
|
275
|
-
const expectedSamples = ecgMeasurement.duration *
|
|
276
|
-
|
|
279
|
+
const expectedSamples = ecgMeasurement.duration * samplesPerSecond;
|
|
280
|
+
const toleranceSamples = samplesPerSecond;
|
|
281
|
+
if (ecgMeasurement.diagramPoints.length < expectedSamples - toleranceSamples || ecgMeasurement.diagramPoints.length > expectedSamples + toleranceSamples) {
|
|
277
282
|
return _measurementFeedback.MeasurementFeedbackKey.INSUFFICIENT_DATA_LENGTH;
|
|
278
283
|
}
|
|
279
284
|
} else if (ecgMeasurement.diagramPoints.length < 3500) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_next","require","_sentryLogger","_bloodPressureTranslatedExceptionMap","_measurementFeedback","_preferredMtu","_bloodPressureStates","_caseType","_deviceStatus","_hexToByte","_i16FromHex","_le16FromHex","_le32FromHex","_btManagedDevice","_bp2Files","_bp2FrameReader","_bp2HistorySequencer","_bp2MainServices","BP2_ECG_MILLIVOLTS_PER_COUNT","exports","BP2_ECG_SAMPLES_PER_SECOND","BP2_ECG_SAMPLE_TOLERANCE","BP2_ECG_NO_VALUE","BP2_BP_NO_VALUE","BP2_PULSE_NO_VALUES","Set","BP2Device","BTManagedDevice","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","mainServices","bp2MainServices","stuckDataTimeout","constructor","device","params","clockSync","deliveredFileNames","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","BP2HistorySequencer","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","frameReader","BP2FrameReader","preferredMtu","PREFERRED_MTU","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","MeasurementTypeKey","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","CaseType","RESULT","addDeviceTimestamp","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","hexToByte","lenH","dataLen","dataStart","dataEnd","data","slice","le32FromHex","sentryLogger","onDeviceStatusChanged","DeviceStatus","MEASURING","samplingNum","le16FromHex","samplesStart","i","byteIndexInData","sampleVal","i16FromHex","push","checkIfHasErrorForBloodPressure","result","recordedAt","length","recordedAtFromLocalSeconds","bpMeasurement","status","diastolic","systolic","heartRate","MeasurementFeedbackKey","DEVICE_ERROR","BloodPressureStates","REGULAR","errorString","bloodPressureTranslatedExceptionMap","get","DEVICE_INTERRUPTED","has","signature","signatureFor","set","join","diagnosticResult","file","name","decoded","decodeBP2File","content","pending","add","matchesPendingResult","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","ecgMeasurement","EcgDiagnosticFlag","POOR_WAVEFORM","LEAD_OFF","INSUFFICIENT_DATA_LENGTH","expectedSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_next","require","_sentryLogger","_bloodPressureTranslatedExceptionMap","_measurementFeedback","_preferredMtu","_bloodPressureStates","_caseType","_deviceStatus","_hexToByte","_i16FromHex","_le16FromHex","_le32FromHex","_btManagedDevice","_bp2Files","_bp2FrameReader","_bp2HistorySequencer","_bp2MainServices","BP2_ECG_MILLIVOLTS_PER_COUNT","exports","BP2_LIVE_ECG_SAMPLES_PER_SECOND","BP2_FILE_ECG_SAMPLES_PER_SECOND","BP2_ECG_NO_VALUE","BP2_BP_NO_VALUE","BP2_PULSE_NO_VALUES","Set","BP2Device","BTManagedDevice","collectedValues","diagramPoints","duration","historyMode","historyRequested","pendingResults","Map","reportedFileNames","mainServices","bp2MainServices","stuckDataTimeout","constructor","device","params","clockSync","deliveredFileNames","deliveredEcgFileNames","onStreamStart","lastLiveResultSignature","undefined","createCommandSequencer","clear","service","write","writeUuid","BP2HistorySequencer","serviceUuid","uuid","characteristicUuid","onFile","handleHistoryFile","onError","handleHistoryError","onTransferFinished","reportPendingResults","shouldStartTransfer","onTransferRequested","onOrphanStreamEnd","skipFiles","frameReader","BP2FrameReader","preferredMtu","PREFERRED_MTU","handleSuccessResult","successResult","measurementTypeKey","caseType","Error","MeasurementTypeKey","ecg","handleEcgResult","bloodPressure","handleBloodPressureResult","CaseType","RESULT","addDeviceTimestamp","error","checkIfHasErrorForEcg","queueHistoryResult","onResult","handleEcgStream","lenL","hexToByte","lenH","dataLen","dataStart","dataEnd","data","slice","le32FromHex","sentryLogger","onDeviceStatusChanged","DeviceStatus","MEASURING","samplingNum","le16FromHex","samplesStart","i","byteIndexInData","sampleVal","i16FromHex","push","checkIfHasErrorForBloodPressure","result","recordedAt","length","recordedAtFromLocalSeconds","bpMeasurement","status","diastolic","systolic","heartRate","MeasurementFeedbackKey","DEVICE_ERROR","BloodPressureStates","REGULAR","errorString","bloodPressureTranslatedExceptionMap","get","DEVICE_INTERRUPTED","has","signature","signatureFor","set","join","diagnosticResult","file","name","decoded","decodeBP2File","content","pending","add","matchesPendingResult","delete","pendingBloodPressure","decodedBloodPressure","pendingEcg","decodedEcg","reason","forEach","samplesPerSecond","ecgMeasurement","EcgDiagnosticFlag","POOR_WAVEFORM","LEAD_OFF","INSUFFICIENT_DATA_LENGTH","expectedSamples","toleranceSamples"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.device.ts"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AASA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,oCAAA,GAAAF,OAAA;AACA,IAAAG,oBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,oBAAA,GAAAL,OAAA;AACA,IAAAM,SAAA,GAAAN,OAAA;AAIA,IAAAO,aAAA,GAAAP,OAAA;AAIA,IAAAQ,UAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA;AACA,IAAAY,gBAAA,GAAAZ,OAAA;AAEA,IAAAa,SAAA,GAAAb,OAAA;AACA,IAAAc,eAAA,GAAAd,OAAA;AACA,IAAAe,oBAAA,GAAAf,OAAA;AACA,IAAAgB,gBAAA,GAAAhB,OAAA;AAjCA;;AAmCA;AACA;AACA;AACA;AACA;AACA,MAAMiB,4BAA4B,GAAAC,OAAA,CAAAD,4BAAA,GAAG,QAAQ;;AAE7C;AACA,MAAME,+BAA+B,GAAG,GAAG;;AAE3C;AACA,MAAMC,+BAA+B,GAAG,GAAG;AAC3C,MAAMC,gBAAgB,GAAG,MAAM;AAC/B,MAAMC,eAAe,GAAG,MAAM;AAC9B,MAAMC,mBAAmB,GAAG,IAAIC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAEF,eAAe,CAAC,CAAC;AAEnE,MAAMG,SAAS,SAASC,gCAAe,CAAwB;EACrDC,eAAe,GAAa,EAAE;EAC9BC,aAAa,GAAa,EAAE;EAC5BC,QAAQ,GAAW,CAAC;EACpBC,WAAW,GAAG,KAAK;EACnBC,gBAAgB,GAAG,KAAK;EAIxBC,cAAc,GAAG,IAAIC,GAAG,CAG9B,CAAC;EACKC,iBAAiB,GAAG,IAAIV,GAAG,CAAS,CAAC;EAEnCW,YAAY,GAAeC,gCAAe;EAC1CC,gBAAgB,GAAW,KAAK;EAEnCC,WAAWA,CAChBC,MAAc,EACdC,MAAiD,EACjD;IACA,KAAK,CAACD,MAAM,EAAEC,MAAM,CAAC;IACrB,IAAI,CAACC,SAAS,GAAGD,MAAM,CAACC,SAAS;IACjC,IAAI,CAACC,kBAAkB,GAAG,IAAIlB,GAAG,CAAC,CAChC,IAAIgB,MAAM,CAACG,qBAAqB,IAAI,EAAE,CAAC,EACvC,IAAIH,MAAM,CAACE,kBAAkB,IAAI,EAAE,CAAC,CACrC,CAAC;EACJ;EAEUE,aAAa,GAAeA,CAAA,KAAM;IAC1C,IAAI,CAACjB,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACgB,uBAAuB,GAAGC,SAAS;EAC1C,CAAC;EAESC,sBAAsB,GAAGA,CAAA,KAAwB;IACzD,IAAI,CAACjB,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACc,uBAAuB,GAAGC,SAAS;IACxC,IAAI,CAACd,cAAc,CAACgB,KAAK,CAAC,CAAC;IAC3B,IAAI,CAACd,iBAAiB,CAACc,KAAK,CAAC,CAAC;IAE9B,MAAMC,OAAO,GAAGb,gCAAe,CAAC,CAAC,CAAE;IACnC,MAAMc,KAAK,GAAGD,OAAO,CAACE,SAAU;IAEhC,OAAO,IAAIC,wCAAmB,CAAC;MAC7BF,KAAK,EAAE;QACLG,WAAW,EAAEJ,OAAO,CAACK,IAAI;QACzBC,kBAAkB,EAAEL,KAAK,CAACI;MAC5B,CAAC;MACDE,MAAM,EAAE,IAAI,CAACC,iBAAiB;MAC9BC,OAAO,EAAE,IAAI,CAACC,kBAAkB;MAChCC,kBAAkB,EAAE,IAAI,CAACC,oBAAoB;MAC7CC,mBAAmB,EAAEA,CAAA,KAAM,IAAI,CAAC/B,gBAAgB;MAChDgC,mBAAmB,EAAEA,CAAA,KAAM;QACzB,IAAI,CAAChC,gBAAgB,GAAG,KAAK;MAC/B,CAAC;MACDiC,iBAAiB,EAAEA,CAAA,KAAMlB,SAAS;MAClCmB,SAAS,EAAE,IAAI,CAACvB,kBAAkB;MAClCD,SAAS,EAAE,IAAI,CAACA;IAClB,CAAC,CAAC;EACJ,CAAC;EAESyB,WAAW,GAAmB,IAAIC,8BAAc,CAAC,CAAC;EAClDC,YAAY,GAAWC,2BAAa;EAEpCC,mBAAmBA,CAC3BC,aAEC,EACD5C,eAAyB,EACT;IAChB,IAAI,CAACA,eAAe,GAAGA,eAAe;IAEtC,IAAI,CAAC4C,aAAa,CAACC,kBAAkB,IAAI,CAACD,aAAa,CAACE,QAAQ,EAAE;MAChE,IAAI,CAACf,OAAO,GACV,IAAIgB,KAAK,CACP,0CAA0CH,aAAa,CAACE,QAAQ,EAClE,CACF,CAAC;MAED;IACF;IAEA,IAAIF,aAAa,CAACC,kBAAkB,KAAKG,wBAAkB,CAACC,GAAG,EAAE;MAC/D,OAAO,IAAI,CAACC,eAAe,CAACN,aAAa,CAAC;IAC5C;IAEA,IAAIA,aAAa,CAACC,kBAAkB,KAAKG,wBAAkB,CAACG,aAAa,EAAE;MACzE,OAAO,IAAI,CAACC,yBAAyB,CACnCR,aACF,CAAC;IACH;IAEA;EACF;EAEQM,eAAeA,CACrBN,aAAsD,EAChD;IACN,IAAIA,aAAa,CAACE,QAAQ,KAAKO,kBAAQ,CAACC,MAAM,EAAE;MAC9CV,aAAa,CAAC3C,aAAa,GAAG,IAAI,CAACA,aAAa;MAChD2C,aAAa,CAAC1C,QAAQ,GAAG,IAAI,CAACA,QAAQ;MACtC,IAAI,CAACqD,kBAAkB,CAACX,aAAa,CAAC;MAEtC,MAAMY,KAAK,GAAG,IAAI,CAACC,qBAAqB,CACtCb,aAAa,EACbpD,+BACF,CAAC;MAED,IAAIgE,KAAK,EAAE;QACT,IAAI,CAACzB,OAAO,GAAGyB,KAAK,CAAC;QAErB;MACF;MAEA,IAAI,IAAI,CAACrD,WAAW,EAAE;QACpB,IAAI,CAACuD,kBAAkB,CAACd,aAAa,CAAC;QAEtC;MACF;MAEA,IAAI,CAACe,QAAQ,GAAGf,aAAa,CAAC;MAE9B;IACF;IAEA,IAAI,CAACgB,eAAe,CAAC,CAAC;EACxB;EAEQA,eAAeA,CAAA,EAAS;IAC9B;IACA,MAAMC,IAAI,GAAG,IAAAC,oBAAS,EAAC,IAAI,CAAC9D,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACzD,MAAM+D,IAAI,GAAG,IAAAD,oBAAS,EAAC,IAAI,CAAC9D,eAAe,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;IACzD,MAAMgE,OAAO,GAAGH,IAAI,GAAIE,IAAI,IAAI,CAAE;;IAElC;IACA,MAAME,SAAS,GAAG,IAAI;IACtB,MAAMC,OAAO,GAAGD,SAAS,GAAGD,OAAO;IACnC,MAAMG,IAAI,GAAG,IAAI,CAACnE,eAAe,CAACoE,KAAK,CAACH,SAAS,EAAEC,OAAO,CAAC;;IAE3D;IACA,MAAMhE,QAAQ,GAAG,IAAAmE,wBAAW,EAACF,IAAI,EAAE,IAAI,CAAC;IAExC,IAAIjE,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;MAC5B,IAAAoE,0BAAY,EAAC,MAAM,EAAE,sCAAsC,CAAC;MAC5D,IAAI,CAACrE,aAAa,GAAG,EAAE;MACvB,IAAI,CAACsE,qBAAqB,GACxBC,0BAAY,CAACC,SAAS,EACtBzB,wBAAkB,CAACC,GACrB,CAAC;IACH;IAEA,IAAI,CAAC/C,QAAQ,GAAGA,QAAQ;;IAExB;IACA,MAAMwE,WAAW,GAAG,IAAAC,wBAAW,EAACR,IAAI,EAAE,IAAI,CAAC;;IAE3C;IACA,MAAMS,YAAY,GAAG,IAAI;IAEzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,WAAW,EAAEG,CAAC,EAAE,EAAE;MACpC,MAAMC,eAAe,GAAGF,YAAY,GAAGC,CAAC,GAAG,CAAC;MAC5C,MAAME,SAAS,GAAG,IAAAC,sBAAU,EAACb,IAAI,EAAEW,eAAe,CAAC;MAEnD,IAAI,CAAC7E,aAAa,CAACgF,IAAI,CACrBF,SAAS,KAAKrF,gBAAgB,GAC1B,CAAC,GACDqF,SAAS,GAAGzF,4BAClB,CAAC;IACH;EACF;EAEQ8D,yBAAyBA,CAC/BR,aAAgE,EAC1D;IACN,IAAIA,aAAa,CAACE,QAAQ,KAAKO,kBAAQ,CAACC,MAAM,EAAE;MAC9C;IACF;IACA,IAAI,CAACC,kBAAkB,CAACX,aAAa,CAAC;IACtC,MAAMY,KAAK,GAAG,IAAI,CAAC0B,+BAA+B,CAACtC,aAAa,CAAC;IAEjE,IAAIY,KAAK,EAAE;MACT,IAAI,CAACzB,OAAO,GAAGyB,KAAK,CAAC;MAErB;IACF;IAEA,IAAI,IAAI,CAACrD,WAAW,EAAE;MACpB,IAAI,CAACuD,kBAAkB,CAACd,aAAa,CAAC;MAEtC;IACF;IAEA,IAAI,CAACe,QAAQ,GAAGf,aAAa,CAAC;EAChC;EAEQW,kBAAkB,GAAI4B,MAAmB,IAAW;IAC1D,MAAMC,UAAU,GACd,IAAI,CAACpF,eAAe,CAACqF,MAAM,IAAI,EAAE,GAC7B,IAAAC,oCAA0B,EAAC,IAAAjB,wBAAW,EAAC,IAAI,CAACrE,eAAe,EAAE,EAAE,CAAC,CAAC,GACjEmB,SAAS;IAEf,IAAIiE,UAAU,EAAE;MACdD,MAAM,CAACC,UAAU,GAAGA,UAAU;IAChC;EACF,CAAC;EAEOF,+BAA+BA,CACrCtC,aAAgE,EAC5C;IACpB,MAAM2C,aAAa,GAAG3C,aAAa;;IAEnC;IACA,IACE2C,aAAa,CAACC,MAAM,KAAKrE,SAAS,IAClCoE,aAAa,CAACE,SAAS,KAAKtE,SAAS,IACrCoE,aAAa,CAACG,QAAQ,KAAKvE,SAAS,IACpCoE,aAAa,CAACI,SAAS,KAAKxE,SAAS,EACrC;MACA,OAAOyE,2CAAsB,CAACC,YAAY;IAC5C;;IAEA;IACA,IAAIN,aAAa,CAACC,MAAM,KAAKM,wCAAmB,CAACC,OAAO,EAAE;MACxD,MAAMC,WAAW,GAAGC,wEAAmC,CAACC,GAAG,CACzDX,aAAa,CAACC,MAAM,IAAIM,wCAAmB,CAACD,YAC9C,CAAC;MAED,IAAIG,WAAW,KAAK7E,SAAS,EAAE;QAC7B,OAAO6E,WAAW;MACpB,CAAC,MAAM;QACL,OAAOJ,2CAAsB,CAACC,YAAY;MAC5C;IACF;;IAEA;IACA,IACEN,aAAa,CAACI,SAAS,KAAK,CAAC,IAC7BJ,aAAa,CAACE,SAAS,KAAK,CAAC,IAC7BF,aAAa,CAACG,QAAQ,KAAK,CAAC,EAC5B;MACA,OAAOE,2CAAsB,CAACO,kBAAkB;IAClD;IAEA,IACEZ,aAAa,CAACG,QAAQ,KAAK/F,eAAe,IAC1C4F,aAAa,CAACE,SAAS,KAAK9F,eAAe,IAC1C4F,aAAa,CAACI,SAAS,KAAKxE,SAAS,IACpCvB,mBAAmB,CAACwG,GAAG,CAACb,aAAa,CAACI,SAAS,CAAE,EACnD;MACA,OAAOC,2CAAsB,CAACC,YAAY;IAC5C;IAEA,OAAO1E,SAAS;EAClB;EAEQuC,kBAAkB,GACxByB,MAA4C,IACnC;IACT,MAAMkB,SAAS,GAAG,IAAI,CAACC,YAAY,CAACnB,MAAM,CAAC;IAE3C,IAAIkB,SAAS,KAAK,IAAI,CAACnF,uBAAuB,EAAE;MAC9C;IACF;IAEA,IAAI,CAACA,uBAAuB,GAAGmF,SAAS;IACxC,IAAI,CAAChG,cAAc,CAACkG,GAAG,CAACpB,MAAM,CAACtC,kBAAkB,EAAEsC,MAAM,CAAC;IAC1D,IAAI,CAAC/E,gBAAgB,GAAG,IAAI;EAC9B,CAAC;EAEOkG,YAAY,GAClBnB,MAA4C,IAE5CA,MAAM,CAACtC,kBAAkB,KAAKG,wBAAkB,CAACG,aAAa,GAC1D,CACEgC,MAAM,CAACtC,kBAAkB,EACxBsC,MAAM,CAA8BO,QAAQ,EAC5CP,MAAM,CAA8BM,SAAS,EAC7CN,MAAM,CAA8BQ,SAAS,EAC7CR,MAAM,CAA8BK,MAAM,CAC5C,CAACgB,IAAI,CAAC,GAAG,CAAC,GACX,CACErB,MAAM,CAACtC,kBAAkB,EACxBsC,MAAM,CAAoBQ,SAAS,EACnCR,MAAM,CAAoBsB,gBAAgB,EAC1CtB,MAAM,CAAoBjF,QAAQ,EAClCiF,MAAM,CAAoBlF,aAAa,EAAEuG,IAAI,CAAC,GAAG,CAAC,CACpD,CAACA,IAAI,CAAC,GAAG,CAAC;EAET1E,iBAAiB,GAAI4E,IAG5B,IAAW;IACV,IAAI,IAAI,CAACnG,iBAAiB,CAAC6F,GAAG,CAACM,IAAI,CAACC,IAAI,CAAC,EAAE;MACzC;IACF;IAEA,MAAMC,OAAO,GAAG,IAAAC,uBAAa,EAACH,IAAI,CAACC,IAAI,EAAED,IAAI,CAACI,OAAO,CAAC;IAEtD,IAAI,CAACF,OAAO,EAAE;MACZ;IACF;IAEA,MAAMG,OAAO,GAAG,IAAI,CAAC1G,cAAc,CAAC6F,GAAG,CAACU,OAAO,CAAC/D,kBAAkB,CAAC;IAEnE,IAAI,CAACtC,iBAAiB,CAACyG,GAAG,CAACN,IAAI,CAACC,IAAI,CAAC;IAErC,MAAMxB,MAAM,GAAG;MACb,GAAGyB,OAAO;MACV9D,QAAQ,EAAEO,kBAAQ,CAACC;IACrB,CAAyC;IAEzC,MAAME,KAAK,GACT2B,MAAM,CAACtC,kBAAkB,KAAKG,wBAAkB,CAACG,aAAa,GAC1D,IAAI,CAAC+B,+BAA+B,CAClCC,MACF,CAAC,GACD,IAAI,CAAC1B,qBAAqB,CACxB0B,MAAM,EACN1F,+BACF,CAAC;IAEP,IAAI+D,KAAK,EAAE;MACT,IAAI,CAACzB,OAAO,GAAGyB,KAAK,CAAC;MAErB;IACF;IAEA,IAAIuD,OAAO,IAAI,IAAI,CAACE,oBAAoB,CAACF,OAAO,EAAEH,OAAO,CAAC,EAAE;MAC1D,IAAI,CAACvG,cAAc,CAAC6G,MAAM,CAAC/B,MAAM,CAACtC,kBAAkB,CAAC;IACvD;IACA,IAAI,CAACc,QAAQ,GACXwB,MACF,CAAC;EACH,CAAC;EAEO8B,oBAAoB,GAAGA,CAC7BF,OAA6C,EAC7CH,OAAoB,KACR;IACZ,IAAIA,OAAO,CAAC/D,kBAAkB,KAAKG,wBAAkB,CAACG,aAAa,EAAE;MACnE,MAAMgE,oBAAoB,GAAGJ,OAAmC;MAChE,MAAMK,oBAAoB,GAAGR,OAAmC;MAEhE,OACEO,oBAAoB,CAACzB,QAAQ,KAAK0B,oBAAoB,CAAC1B,QAAQ,IAC/DyB,oBAAoB,CAAC1B,SAAS,KAAK2B,oBAAoB,CAAC3B,SAAS,IACjE0B,oBAAoB,CAACxB,SAAS,KAAKyB,oBAAoB,CAACzB,SAAS,IACjEwB,oBAAoB,CAAC3B,MAAM,KAAK4B,oBAAoB,CAAC5B,MAAM;IAE/D;IAEA,MAAM6B,UAAU,GAAGN,OAAyB;IAC5C,MAAMO,UAAU,GAAGV,OAAyB;IAE5C,OACES,UAAU,CAAC1B,SAAS,KAAK2B,UAAU,CAAC3B,SAAS,IAC7C0B,UAAU,CAACZ,gBAAgB,KAAKa,UAAU,CAACb,gBAAgB,IAC3DY,UAAU,CAACnH,QAAQ,KAAKoH,UAAU,CAACpH,QAAQ;EAE/C,CAAC;EAEO8B,kBAAkB,GAAIuF,MAAc,IAAW;IACrD,IAAI,CAACxF,OAAO,GAAG,IAAIgB,KAAK,CAAC,gBAAgBwE,MAAM,EAAE,CAAC,CAAC;IAEnD,IAAI,CAACrF,oBAAoB,CAAC,CAAC;EAC7B,CAAC;EAEOA,oBAAoB,GAAGA,CAAA,KAAY;IACzC,IAAI,CAAC7B,cAAc,CAACmH,OAAO,CAAErC,MAAM,IACjC,IAAI,CAACxB,QAAQ,GACXwB,MACF,CACF,CAAC;IACD,IAAI,CAAC9E,cAAc,CAACgB,KAAK,CAAC,CAAC;EAC7B,CAAC;EAEOoC,qBAAqBA,CAC3Bb,aAAsD,EACtD6E,gBAAwB,EACJ;IACpB,MAAMC,cAAc,GAAG9E,aAAa;IAEpC,IAAI8E,cAAc,CAACjB,gBAAgB,KAAKkB,uBAAiB,CAACC,aAAa,EAAE;MACvE,OAAOhC,2CAAsB,CAACgC,aAAa;IAC7C;IACA,IAAIF,cAAc,CAACjB,gBAAgB,KAAKkB,uBAAiB,CAACE,QAAQ,EAAE;MAClE,OAAOjC,2CAAsB,CAACiC,QAAQ;IACxC;;IAEA;IACA,IACEH,cAAc,CAACjB,gBAAgB,KAAKtF,SAAS,IAC7CuG,cAAc,CAAC/B,SAAS,KAAKxE,SAAS,IACtCuG,cAAc,CAACzH,aAAa,KAAKkB,SAAS,EAC1C;MACA,OAAOyE,2CAAsB,CAACC,YAAY;IAC5C;;IAEA;IACA,IAAI6B,cAAc,CAAC/B,SAAS,KAAK,CAAC,EAAE;MAClC,OAAOC,2CAAsB,CAACO,kBAAkB;IAClD;IAEA,IAAIuB,cAAc,CAACxH,QAAQ,KAAKiB,SAAS,IAAIuG,cAAc,CAACxH,QAAQ,GAAG,EAAE,EAAE;MACzE,OAAO0F,2CAAsB,CAACkC,wBAAwB;IACxD;IAEA,IAAIJ,cAAc,CAACzH,aAAa,CAACoF,MAAM,KAAK,CAAC,EAAE;MAC7C,OAAOO,2CAAsB,CAACkC,wBAAwB;IACxD;IAEA,IAAIJ,cAAc,CAACxH,QAAQ,GAAG,CAAC,EAAE;MAC/B,MAAM6H,eAAe,GAAGL,cAAc,CAACxH,QAAQ,GAAGuH,gBAAgB;MAClE,MAAMO,gBAAgB,GAAGP,gBAAgB;MAEzC,IACEC,cAAc,CAACzH,aAAa,CAACoF,MAAM,GAAG0C,eAAe,GAAGC,gBAAgB,IACxEN,cAAc,CAACzH,aAAa,CAACoF,MAAM,GAAG0C,eAAe,GAAGC,gBAAgB,EACxE;QACA,OAAOpC,2CAAsB,CAACkC,wBAAwB;MACxD;IACF,CAAC,MAAM,IAAIJ,cAAc,CAACzH,aAAa,CAACoF,MAAM,GAAG,IAAI,EAAE;MACrD,OAAOO,2CAAsB,CAACkC,wBAAwB;IACxD;IAEA,OAAO3G,SAAS;EAClB;AACF;AAAC5B,OAAA,CAAAO,SAAA,GAAAA,SAAA","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.readThermometerText = exports.readKfb06Glucose = exports.readCgh25Glucose = exports.readBpResult = exports.readBpRecord = void 0;
|
|
7
7
|
var _frameBytes = require("../../../utils/frame-bytes.js");
|
|
8
|
+
var _tenthsMmolToMgPerDl = require("../../../utils/tenths-mmol-to-mg-per-dl.js");
|
|
8
9
|
/* eslint-disable import/group-exports */
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -49,15 +50,9 @@ const readBpRecord = body => {
|
|
|
49
50
|
recordedAt
|
|
50
51
|
};
|
|
51
52
|
};
|
|
52
|
-
|
|
53
|
-
/** One mmol/L of glucose (180.16 g/mol) is 18.016 mg/dL, as in the SIG glucose profile. */
|
|
54
53
|
exports.readBpRecord = readBpRecord;
|
|
55
|
-
const MG_PER_DL_PER_MMOL_PER_L = 18.016;
|
|
56
|
-
|
|
57
|
-
/** Tenths of a mmol/L, rounded to whole mg/dL. */
|
|
58
|
-
const mgPerDl = tenthsMmol => Math.round(tenthsMmol / 10 * MG_PER_DL_PER_MMOL_PER_L);
|
|
59
54
|
const glucose = (tenthsMmol, recordedAt) => recordedAt && tenthsMmol > 0 && tenthsMmol < 0xffff ? {
|
|
60
|
-
bloodGlucose:
|
|
55
|
+
bloodGlucose: (0, _tenthsMmolToMgPerDl.tenthsMmolToMgPerDl)(tenthsMmol),
|
|
61
56
|
recordedAt
|
|
62
57
|
} : undefined;
|
|
63
58
|
const KFB06_GLUCOSE_TYPE = 9;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_frameBytes","require","fromBcd","value","undefined","localTime","fields","some","field","year","month","day","hour","minute","second","map","index","time","Date","getMonth","getDate","getHours","getMinutes","getSeconds","readPressures","bytes","length","heartRate","systolic","diastolic","flag","irregularHeartbeat","readBpResult","body","exports","readBpRecord","recordedAt","slice","pressures","
|
|
1
|
+
{"version":3,"names":["_frameBytes","require","_tenthsMmolToMgPerDl","fromBcd","value","undefined","localTime","fields","some","field","year","month","day","hour","minute","second","map","index","time","Date","getMonth","getDate","getHours","getMinutes","getSeconds","readPressures","bytes","length","heartRate","systolic","diastolic","flag","irregularHeartbeat","readBpResult","body","exports","readBpRecord","recordedAt","slice","pressures","glucose","tenthsMmol","bloodGlucose","tenthsMmolToMgPerDl","KFB06_GLUCOSE_TYPE","readKfb06Glucose","readCgh25Glucose","THERMOMETER_TEXT","readThermometerText","frame","text","exec","String","fromCharCode","frameBytes","type","test","hundredths","Number","parseInt"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/cofoe/cofoe.records.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.wbp02SyncTime = exports.wbp02RecordCount = exports.wbp02Record = exports.wbp02Login = exports.wbp02Crc = exports.wbp02Connect = exports.wbp02Command = exports.parseWbp02Record = exports.decodeWbp02Response = exports.Wbp02FrameReader = exports.WBP02_WRITE = exports.WBP02_NOTIFY = exports.WBP02_DATA_SERVICE = exports.WBP02_CONTROL_SERVICE = void 0;
|
|
7
7
|
var _bytesToHex = require("../../../utils/bytes-to-hex.js");
|
|
8
|
+
var _calculateCrc16Modbus = require("../../../utils/calculate-crc-16-modbus.js");
|
|
9
|
+
var _frameBytes = require("../../../utils/frame-bytes.js");
|
|
8
10
|
var _frameReadResults = require("../../../utils/frame-read-results.js");
|
|
9
11
|
var _hexToByte = require("../../../utils/hex-to-byte.js");
|
|
10
12
|
/* eslint-disable import/group-exports */
|
|
@@ -16,13 +18,7 @@ const WBP02_NOTIFY = exports.WBP02_NOTIFY = "0000ffe4-0000-1000-8000-00805f9b34f
|
|
|
16
18
|
|
|
17
19
|
/** CRC-16 used by the WBP-02 service, returned low byte first. */
|
|
18
20
|
const wbp02Crc = bytes => {
|
|
19
|
-
|
|
20
|
-
for (const value of bytes) {
|
|
21
|
-
crc ^= (0, _hexToByte.hexToByte)(value);
|
|
22
|
-
for (let bit = 0; bit < 8; bit += 1) {
|
|
23
|
-
crc = (crc & 1) !== 0 ? crc >>> 1 ^ 0xa001 : crc >>> 1;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
21
|
+
const crc = (0, _calculateCrc16Modbus.calculateCrc16Modbus)((0, _frameBytes.frameBytes)(bytes));
|
|
26
22
|
return [(0, _bytesToHex.byteToHex)(crc), (0, _bytesToHex.byteToHex)(crc >> 8)];
|
|
27
23
|
};
|
|
28
24
|
exports.wbp02Crc = wbp02Crc;
|