@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.
Files changed (65) hide show
  1. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js +64 -44
  2. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js +98 -0
  4. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map +1 -0
  5. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js +127 -0
  6. package/lib/commonjs/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +5 -3
  8. package/lib/commonjs/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js +10 -2
  10. package/lib/commonjs/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  11. package/lib/commonjs/modules/bt-management/services/devices/cofoe/cofoe.records.js +2 -7
  12. package/lib/commonjs/modules/bt-management/services/devices/cofoe/cofoe.records.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +3 -7
  14. package/lib/commonjs/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -1
  15. package/lib/commonjs/modules/bt-management/utils/calculate-crc-16-modbus.js +23 -0
  16. package/lib/commonjs/modules/bt-management/utils/calculate-crc-16-modbus.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js +13 -0
  18. package/lib/commonjs/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js.map +1 -0
  19. package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js +64 -44
  20. package/lib/module/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.js.map +1 -1
  21. package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js +91 -0
  22. package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.js.map +1 -0
  23. package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js +123 -0
  24. package/lib/module/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.js.map +1 -0
  25. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js +5 -3
  26. package/lib/module/modules/bt-management/services/devices/bp2/bp2.history-sequencer.js.map +1 -1
  27. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js +10 -2
  28. package/lib/module/modules/bt-management/services/devices/bt-data-processor.js.map +1 -1
  29. package/lib/module/modules/bt-management/services/devices/cofoe/cofoe.records.js +2 -7
  30. package/lib/module/modules/bt-management/services/devices/cofoe/cofoe.records.js.map +1 -1
  31. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js +3 -7
  32. package/lib/module/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.js.map +1 -1
  33. package/lib/module/modules/bt-management/utils/calculate-crc-16-modbus.js +18 -0
  34. package/lib/module/modules/bt-management/utils/calculate-crc-16-modbus.js.map +1 -0
  35. package/lib/module/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js +8 -0
  36. package/lib/module/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.js.map +1 -0
  37. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts +34 -0
  39. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts.map +1 -0
  40. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts +32 -0
  41. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts.map +1 -0
  42. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts +2 -0
  44. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/cofoe/cofoe.records.d.ts.map +1 -1
  46. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts +3 -0
  48. package/lib/typescript/commonjs/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts.map +1 -0
  49. package/lib/typescript/commonjs/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts +3 -0
  50. package/lib/typescript/commonjs/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts.map +1 -0
  51. package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/blood-glucose.device.d.ts.map +1 -1
  52. package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts +34 -0
  53. package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.protocol.d.ts.map +1 -0
  54. package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts +32 -0
  55. package/lib/typescript/module/src/modules/bt-management/services/devices/blood-glucose/telebgm.sequencer.d.ts.map +1 -0
  56. package/lib/typescript/module/src/modules/bt-management/services/devices/bp2/bp2.history-sequencer.d.ts.map +1 -1
  57. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts +2 -0
  58. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-data-processor.d.ts.map +1 -1
  59. package/lib/typescript/module/src/modules/bt-management/services/devices/cofoe/cofoe.records.d.ts.map +1 -1
  60. package/lib/typescript/module/src/modules/bt-management/services/devices/viatom/viatom.wbp02.protocol.d.ts.map +1 -1
  61. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts +3 -0
  62. package/lib/typescript/module/src/modules/bt-management/utils/calculate-crc-16-modbus.d.ts.map +1 -0
  63. package/lib/typescript/module/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts +3 -0
  64. package/lib/typescript/module/src/modules/bt-management/utils/tenths-mmol-to-mg-per-dl.d.ts.map +1 -0
  65. package/package.json +1 -1
@@ -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
- const BGM_SERVICE = "0003cdd0-0000-1000-8000-00805f9b0131";
15
- const BGM_CHARACTERISTIC = "0003cdd1-0000-1000-8000-00805f9b0131";
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 servicesFor = device => {
18
- const isBgm = device === _integratedDevices.IntegratedDevices.BGM;
19
- return [{
20
- uuid: isBgm ? BGM_SERVICE : _taidocProtocol.TAIDOC_SERVICE,
21
- monitorUuids: [{
22
- uuid: isBgm ? BGM_CHARACTERISTIC : _taidocProtocol.TAIDOC_CHARACTERISTIC,
23
- parsingModel: {
24
- caseValuePosition: [isBgm ? 9 : 1],
25
- cases: [...(isBgm ? ["00", "0b", "10", "11", "18", "22", "33", "55"] : ["46", ...(device === _integratedDevices.IntegratedDevices.GLUCOCHECK ? ["50"] : [])]).map(caseValue => ({
26
- caseType: _caseType.CaseType.OTHER,
27
- caseValue,
28
- parseDefinitions: []
29
- })), {
30
- measurementTypeKey: _next.MeasurementTypeKey.bloodGlucose,
31
- caseType: _caseType.CaseType.RESULT,
32
- caseValue: isBgm ? "44" : "26",
33
- parseDefinitions: [{
34
- name: "bloodGlucose",
35
- parseType: "custom",
36
- byteIndexes: isBgm ? [10, 11] : [3, 2],
37
- parseReference: 16,
38
- customParserDefinition: value => {
39
- if (isBgm) {
40
- return (0, _hexToByte.hexToByte)(value.slice(0, 2)) * 100 + (0, _hexToByte.hexToByte)(value.slice(2, 4));
41
- }
42
- const raw = parseInt(value, 16);
43
- return device === _integratedDevices.IntegratedDevices.TAIDOC_GLUCOSE ? Number((raw * 18).toFixed(2)) : raw;
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
- ...(isBgm ? {} : {
50
- writeUuid: {
51
- uuid: _taidocProtocol.TAIDOC_CHARACTERISTIC,
52
- mainCommandUuid: GLUCOSE_REQUEST
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
- this.mainServices = servicesFor(params.deviceName);
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 >= (this.deviceData.name === _integratedDevices.IntegratedDevices.BGM ? 12 : 8);
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 (this.deviceData.name !== _integratedDevices.IntegratedDevices.BGM && !(0, _taidocRecords.isPatientGlucoseRecord)(frame)) {
92
+ if (!(0, _taidocRecords.isPatientGlucoseRecord)(frame)) {
73
93
  return;
74
94
  }
75
95
  this.onResult?.(result);
@@ -1 +1 @@
1
- {"version":3,"names":["_next","require","_caseType","_integratedDevices","_hexToByte","_btManagedDevice","_taidocProtocol","_taidocRecords","BGM_SERVICE","BGM_CHARACTERISTIC","GLUCOSE_REQUEST","taidocCommand","TAIDOC","readingResult","join","servicesFor","device","isBgm","IntegratedDevices","BGM","uuid","TAIDOC_SERVICE","monitorUuids","TAIDOC_CHARACTERISTIC","parsingModel","caseValuePosition","cases","GLUCOCHECK","map","caseValue","caseType","CaseType","OTHER","parseDefinitions","measurementTypeKey","MeasurementTypeKey","bloodGlucose","RESULT","name","parseType","byteIndexes","parseReference","customParserDefinition","value","hexToByte","slice","raw","parseInt","TAIDOC_GLUCOSE","Number","toFixed","writeUuid","mainCommandUuid","BloodGlucoseDevice","BTManagedDevice","stuckDataTimeout","constructor","params","mainServices","deviceName","validatePackage","pkg","length","deviceData","handleSuccessResult","result","frame","isPatientGlucoseRecord","onResult","exports"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/blood-glucose/blood-glucose.device.ts"],"mappings":"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","ignoreList":[]}
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
@@ -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":[]}
@@ -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
@@ -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":[]}
@@ -17,10 +17,12 @@ const BP2_REALTIME_COMMAND = exports.BP2_REALTIME_COMMAND = 0x08;
17
17
  const BP2_RESULT_STATES = new Set(["05", "07", "11"]);
18
18
  const BP2_ECG_STATE = "06";
19
19
  const BP2_IDLE_STATES = new Set(["00", "01", "03"]);
20
- const BP2_POLL_INTERVAL_MS = 200;
21
20
 
22
- /** How long a realtime poll may go unanswered before it is sent again. */
23
- const BP2_POLL_ANSWER_TIMEOUT_MS = 1_000;
21
+ /** The pace of Viatom's own BP2 client, which the device keeps up with while it measures. */
22
+ const BP2_POLL_INTERVAL_MS = 500;
23
+
24
+ /** How long a queued realtime poll may go unanswered before it is sent again. */
25
+ const BP2_POLL_ANSWER_TIMEOUT_MS = BP2_POLL_INTERVAL_MS + 1_000;
24
26
  /** Reads unseen BP2 history on connect and after each realtime result. */
25
27
  class BP2HistorySequencer {
26
28
  builder = new _lepuCommandBuilder.LepuCommandBuilder();
@@ -1 +1 @@
1
- {"version":3,"names":["_sentryLogger","require","_clockSync","_hexToByte","_lepuCommandBuilder","_lepuCommands","_lepuEcgTransfer","_lepuFileTransfer","_lepuFrame","_lepuResponseType","BP2_REALTIME_COMMAND","exports","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2_POLL_INTERVAL_MS","BP2_POLL_ANSWER_TIMEOUT_MS","BP2HistorySequencer","builder","LepuCommandBuilder","lastRunStatusFrameCount","realtimeEcgActive","phase","constructor","params","initialCommands","isClockSyncEnabled","clockSync","write","frame","build","LepuCommand","SET_TIME","clockPayload","startTransfer","isHistoryTransfer","commandTimeoutMs","isPolling","undefined","onCommandTimeout","commands","pollCommand","commandProgress","lepuCommandOf","nextCommand","isLepuSuccess","onError","describeLepuResponseType","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","delayBeforeWriteMs","LepuFileTransfer","onFile","skipFiles","afterTransfer","finishTransfer","onTransferFinished","hexToByte","has","toLowerCase","runStatus","lastRunStatus","sentryLogger"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_sentryLogger","require","_clockSync","_hexToByte","_lepuCommandBuilder","_lepuCommands","_lepuEcgTransfer","_lepuFileTransfer","_lepuFrame","_lepuResponseType","BP2_REALTIME_COMMAND","exports","BP2_RESULT_STATES","Set","BP2_ECG_STATE","BP2_IDLE_STATES","BP2_POLL_INTERVAL_MS","BP2_POLL_ANSWER_TIMEOUT_MS","BP2HistorySequencer","builder","LepuCommandBuilder","lastRunStatusFrameCount","realtimeEcgActive","phase","constructor","params","initialCommands","isClockSyncEnabled","clockSync","write","frame","build","LepuCommand","SET_TIME","clockPayload","startTransfer","isHistoryTransfer","commandTimeoutMs","isPolling","undefined","onCommandTimeout","commands","pollCommand","commandProgress","lepuCommandOf","nextCommand","isLepuSuccess","onError","describeLepuResponseType","transfer","logRunStatus","isResult","isResultFrame","endedWithoutResult","isIdleFrame","onOrphanStreamEnd","shouldStartTransfer","onTransferRequested","delayBeforeWriteMs","LepuFileTransfer","onFile","skipFiles","afterTransfer","finishTransfer","onTransferFinished","hexToByte","has","toLowerCase","runStatus","lastRunStatus","sentryLogger"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/bp2/bp2.history-sequencer.ts"],"mappings":"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","ignoreList":[]}
@@ -179,7 +179,7 @@ class BTDataProcessor {
179
179
  message: "Device is stuck"
180
180
  }
181
181
  }));
182
- this.device.cancelConnection?.();
182
+ this.cancelConnection(_measurementFeedback.MeasurementFeedbackKey.STUCK);
183
183
  }, this.stuckDataTimeoutDuration);
184
184
  };
185
185
  startCommandTimeout = () => {
@@ -198,10 +198,18 @@ class BTDataProcessor {
198
198
  }
199
199
  if (result?.terminal) {
200
200
  this.callbacks.onError?.(new Error(_measurementFeedback.MeasurementFeedbackKey.COMMAND_TIMEOUT));
201
- void this.device.cancelConnection?.();
201
+ this.cancelConnection(_measurementFeedback.MeasurementFeedbackKey.COMMAND_TIMEOUT);
202
202
  }
203
203
  }, duration);
204
204
  };
205
+
206
+ /** Ends the link from this side, logged so it is never mistaken for the device hanging up. */
207
+ cancelConnection = reason => {
208
+ (0, _sentryLogger.sentryLogger)("warning", "BT_MANAGER: Cancelling the connection", {
209
+ reason
210
+ });
211
+ void this.device.cancelConnection?.();
212
+ };
205
213
  }
206
214
  exports.BTDataProcessor = BTDataProcessor;
207
215
  //# sourceMappingURL=bt-data-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_sentryLogger","require","_measurementFeedback","_caseType","_frameReadStatus","_frameParser","_measurementStateMachine","BTDataProcessor","buffers","Map","constructor","device","mainServices","stuckDataTimeoutDuration","callbacks","frameReader","frameParser","FrameParser","measurementState","MeasurementStateMachine","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","FrameReadStatus","COMPLETE","handleFrame","frame","answerFrame","CORRUPT","reportCorruptFrame","validatePackage","progress","commandProgress","commands","nextCommand","sendCommands","data","parse","sentryLogger","frameLength","dependentData","parsingCase","caseType","CaseType","DEPENDENT","handleDependentResult","isMeasuring","measuring","advance","onError","Error","MeasurementFeedbackKey","CORRUPT_FRAME","cause","message","setTimeout","STUCK","cancelConnection","duration","commandTimeoutMs","onCommandTimeout","terminal","COMMAND_TIMEOUT","exports"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_sentryLogger","require","_measurementFeedback","_caseType","_frameReadStatus","_frameParser","_measurementStateMachine","BTDataProcessor","buffers","Map","constructor","device","mainServices","stuckDataTimeoutDuration","callbacks","frameReader","frameParser","FrameParser","measurementState","MeasurementStateMachine","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","FrameReadStatus","COMPLETE","handleFrame","frame","answerFrame","CORRUPT","reportCorruptFrame","validatePackage","progress","commandProgress","commands","nextCommand","sendCommands","data","parse","sentryLogger","frameLength","dependentData","parsingCase","caseType","CaseType","DEPENDENT","handleDependentResult","isMeasuring","measuring","advance","onError","Error","MeasurementFeedbackKey","CORRUPT_FRAME","cause","message","setTimeout","STUCK","cancelConnection","duration","commandTimeoutMs","onCommandTimeout","terminal","COMMAND_TIMEOUT","reason","exports"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-data-processor.ts"],"mappings":"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","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: mgPerDl(tenthsMmol),
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","MG_PER_DL_PER_MMOL_PER_L","mgPerDl","tenthsMmol","Math","round","glucose","bloodGlucose","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":[]}
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
- let crc = 0xffff;
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;