@ovok/native 1.16.1-dev.2131 → 1.16.1-dev.2135

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 (125) hide show
  1. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js +18 -1
  2. package/lib/commonjs/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  3. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js +4 -7
  4. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js.map +1 -1
  5. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js +106 -0
  6. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js.map +1 -0
  7. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +38 -31
  8. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  9. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js +41 -0
  10. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js.map +1 -0
  11. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +22 -24
  12. package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -1
  13. package/lib/commonjs/modules/bt-management/utils/device-user.js +22 -0
  14. package/lib/commonjs/modules/bt-management/utils/device-user.js.map +1 -0
  15. package/lib/commonjs/modules/bt-management/utils/kpa-to-mmhg.js +9 -0
  16. package/lib/commonjs/modules/bt-management/utils/kpa-to-mmhg.js.map +1 -0
  17. package/lib/commonjs/modules/bt-management/utils/result-identity.js +26 -13
  18. package/lib/commonjs/modules/bt-management/utils/result-identity.js.map +1 -1
  19. package/lib/commonjs/modules/bt-management/utils/rr-interval.js +16 -0
  20. package/lib/commonjs/modules/bt-management/utils/rr-interval.js.map +1 -0
  21. package/lib/commonjs/modules/bt-management/utils/temperature-type.js +15 -0
  22. package/lib/commonjs/modules/bt-management/utils/temperature-type.js.map +1 -0
  23. package/lib/commonjs/modules/next/bluetooth/index.js +6 -0
  24. package/lib/commonjs/modules/next/bluetooth/index.js.map +1 -1
  25. package/lib/commonjs/modules/next/bluetooth/result-policy.js +10 -2
  26. package/lib/commonjs/modules/next/bluetooth/result-policy.js.map +1 -1
  27. package/lib/commonjs/modules/next/bluetooth/sig-profiles.js +46 -13
  28. package/lib/commonjs/modules/next/bluetooth/sig-profiles.js.map +1 -1
  29. package/lib/commonjs/modules/next/bluetooth/stable-hash.js +16 -7
  30. package/lib/commonjs/modules/next/bluetooth/stable-hash.js.map +1 -1
  31. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js +19 -2
  32. package/lib/module/modules/bt-management/services/devices/bt-managed-device.js.map +1 -1
  33. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js +1 -4
  34. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.js.map +1 -1
  35. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js +99 -0
  36. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.js.map +1 -0
  37. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +38 -31
  38. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
  39. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js +35 -0
  40. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.js.map +1 -0
  41. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js +18 -20
  42. package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.js.map +1 -1
  43. package/lib/module/modules/bt-management/utils/device-user.js +17 -0
  44. package/lib/module/modules/bt-management/utils/device-user.js.map +1 -0
  45. package/lib/module/modules/bt-management/utils/kpa-to-mmhg.js +6 -0
  46. package/lib/module/modules/bt-management/utils/kpa-to-mmhg.js.map +1 -0
  47. package/lib/module/modules/bt-management/utils/result-identity.js +24 -12
  48. package/lib/module/modules/bt-management/utils/result-identity.js.map +1 -1
  49. package/lib/module/modules/bt-management/utils/rr-interval.js +12 -0
  50. package/lib/module/modules/bt-management/utils/rr-interval.js.map +1 -0
  51. package/lib/module/modules/bt-management/utils/temperature-type.js +11 -0
  52. package/lib/module/modules/bt-management/utils/temperature-type.js.map +1 -0
  53. package/lib/module/modules/next/bluetooth/index.js +1 -1
  54. package/lib/module/modules/next/bluetooth/index.js.map +1 -1
  55. package/lib/module/modules/next/bluetooth/result-policy.js +8 -1
  56. package/lib/module/modules/next/bluetooth/result-policy.js.map +1 -1
  57. package/lib/module/modules/next/bluetooth/sig-profiles.js +44 -11
  58. package/lib/module/modules/next/bluetooth/sig-profiles.js.map +1 -1
  59. package/lib/module/modules/next/bluetooth/stable-hash.js +15 -6
  60. package/lib/module/modules/next/bluetooth/stable-hash.js.map +1 -1
  61. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  62. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.d.ts.map +1 -1
  64. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts +11 -0
  65. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts.map +1 -0
  66. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +5 -2
  67. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts +10 -0
  69. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts.map +1 -0
  70. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +2 -0
  71. package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts +2 -0
  73. package/lib/typescript/commonjs/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts +6 -0
  75. package/lib/typescript/commonjs/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/src/modules/bt-management/utils/device-user.d.ts +6 -0
  77. package/lib/typescript/commonjs/src/modules/bt-management/utils/device-user.d.ts.map +1 -0
  78. package/lib/typescript/commonjs/src/modules/bt-management/utils/kpa-to-mmhg.d.ts +4 -0
  79. package/lib/typescript/commonjs/src/modules/bt-management/utils/kpa-to-mmhg.d.ts.map +1 -0
  80. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  81. package/lib/typescript/commonjs/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/modules/bt-management/utils/rr-interval.d.ts +4 -0
  83. package/lib/typescript/commonjs/src/modules/bt-management/utils/rr-interval.d.ts.map +1 -0
  84. package/lib/typescript/commonjs/src/modules/bt-management/utils/temperature-type.d.ts +7 -0
  85. package/lib/typescript/commonjs/src/modules/bt-management/utils/temperature-type.d.ts.map +1 -0
  86. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts +1 -1
  87. package/lib/typescript/commonjs/src/modules/next/bluetooth/index.d.ts.map +1 -1
  88. package/lib/typescript/commonjs/src/modules/next/bluetooth/result-policy.d.ts +6 -1
  89. package/lib/typescript/commonjs/src/modules/next/bluetooth/result-policy.d.ts.map +1 -1
  90. package/lib/typescript/commonjs/src/modules/next/bluetooth/sig-profiles.d.ts.map +1 -1
  91. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts +5 -2
  92. package/lib/typescript/commonjs/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -1
  93. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts +2 -0
  94. package/lib/typescript/module/src/modules/bt-management/services/devices/bt-managed-device.d.ts.map +1 -1
  95. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.d.ts.map +1 -1
  96. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts +11 -0
  97. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.d.ts.map +1 -0
  98. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +5 -2
  99. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
  100. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts +10 -0
  101. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.d.ts.map +1 -0
  102. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts +2 -0
  103. package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.d.ts.map +1 -1
  104. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts +2 -0
  105. package/lib/typescript/module/src/modules/bt-management/types/result-callback.d.ts.map +1 -1
  106. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts +6 -0
  107. package/lib/typescript/module/src/modules/bt-management/types/result-policy.d.ts.map +1 -1
  108. package/lib/typescript/module/src/modules/bt-management/utils/device-user.d.ts +6 -0
  109. package/lib/typescript/module/src/modules/bt-management/utils/device-user.d.ts.map +1 -0
  110. package/lib/typescript/module/src/modules/bt-management/utils/kpa-to-mmhg.d.ts +4 -0
  111. package/lib/typescript/module/src/modules/bt-management/utils/kpa-to-mmhg.d.ts.map +1 -0
  112. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts +5 -4
  113. package/lib/typescript/module/src/modules/bt-management/utils/result-identity.d.ts.map +1 -1
  114. package/lib/typescript/module/src/modules/bt-management/utils/rr-interval.d.ts +4 -0
  115. package/lib/typescript/module/src/modules/bt-management/utils/rr-interval.d.ts.map +1 -0
  116. package/lib/typescript/module/src/modules/bt-management/utils/temperature-type.d.ts +7 -0
  117. package/lib/typescript/module/src/modules/bt-management/utils/temperature-type.d.ts.map +1 -0
  118. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts +1 -1
  119. package/lib/typescript/module/src/modules/next/bluetooth/index.d.ts.map +1 -1
  120. package/lib/typescript/module/src/modules/next/bluetooth/result-policy.d.ts +6 -1
  121. package/lib/typescript/module/src/modules/next/bluetooth/result-policy.d.ts.map +1 -1
  122. package/lib/typescript/module/src/modules/next/bluetooth/sig-profiles.d.ts.map +1 -1
  123. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts +5 -2
  124. package/lib/typescript/module/src/modules/next/bluetooth/stable-hash.d.ts.map +1 -1
  125. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["sentryLogger","addOvokSpanEvent","recordOvokMetric","dailyTotalDay","BUILT_IN_MEASUREMENT_TYPES","findDeviceVariant","toBluetoothError","clockSyncCapabilityForDevice","DeviceStatus","errorCallbackPayload","createStableResultId","supportedMeasurementTypeKeys","BTConnectionHandler","BTDataProcessor","pollingSequencerFor","BTManagedDevice","connected","destroyed","resultReportedThisConnection","historyTransferActive","bondedEventReported","reportedMeasurementKinds","Set","reportedDailyTotals","historyResultCount","getSupportedMeasurementTypeKeys","declared","mainServices","length","deviceData","name","reportsBondedEvent","handleSuccessResult","_successResult","_collectedValues","handleMeasurementEnd","policyFor","measurementTypeKey","resultPolicy","byMeasurement","default","reportResult","result","onResult","constructor","device","deviceName","onError","onErrorCallback","onDeviceStatusChanged","onDeviceStatusChangedCallback","onResultCallback","onSeriesValue","onSeriesValueCallback","onConnectionEvent","onConnectionEventCallback","onDeviceDisconnected","onDeviceDisconnectedCallback","oneReadingPerConnection","id","localName","manufacturerData","sn","measurementTypes","clockSync","variant","String","manufacturer","model","status","error","normalized","errorCode","code","caseType","_","data","policy","has","add","day","Date","now","key","kind","progress","current","Object","defineProperty","value","enumerable","writable","destroy","connectionHandler","dataProcessor","undefined","disconnect","cancelConnection","connectInternal","clear","sequencer","createCommandSequencer","isHistoryTransfer","onStatusChanged","CONNECTED","bind","DISCONNECTED","event","onDataReceived","uuid","hexValue","processData","onDeviceInfo","info","manufacturerName","serialNumber","onServicesDiscovered","uuids","initialCommands","onCommandSent","armStuckTimeout","armCommandTimeout","isNormalDisconnect","preferredMtu","stuckDataTimeout","onStreamStart","onMeasurementEnd","validatePackage","parsedData","collectedValues","nextCommand","frame","sendCommands","commands","commandTimeoutMs","onCommandTimeout","commandProgress","handleDependentResult","frameReader","connect","Promise","reject","Error","connectionPromise","resolve","finally"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-managed-device.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["sentryLogger","addOvokSpanEvent","recordOvokMetric","dailyTotalDay","BUILT_IN_MEASUREMENT_TYPES","findDeviceVariant","toBluetoothError","clockSyncCapabilityForDevice","DeviceStatus","isFromAcceptedMemorySlot","errorCallbackPayload","createLegacyResultId","createStableResultId","supportedMeasurementTypeKeys","BTConnectionHandler","BTDataProcessor","pollingSequencerFor","BTManagedDevice","connected","destroyed","resultReportedThisConnection","historyTransferActive","bondedEventReported","reportedMeasurementKinds","Set","reportedDailyTotals","historyResultCount","getSupportedMeasurementTypeKeys","declared","mainServices","length","deviceData","name","reportsBondedEvent","handleSuccessResult","_successResult","_collectedValues","handleMeasurementEnd","policyFor","measurementTypeKey","resultPolicy","byMeasurement","default","reportResult","result","onResult","constructor","device","deviceName","onError","onErrorCallback","onDeviceStatusChanged","onDeviceStatusChangedCallback","onResultCallback","onSeriesValue","onSeriesValueCallback","onConnectionEvent","onConnectionEventCallback","onDeviceDisconnected","onDeviceDisconnectedCallback","oneReadingPerConnection","policyPicksDelivery","undefined","id","localName","manufacturerData","sn","measurementTypes","clockSync","variant","String","manufacturer","model","status","error","normalized","errorCode","code","caseType","_","data","acceptedMemorySlots","policy","has","add","day","Date","now","key","kind","progress","current","Object","defineProperty","value","enumerable","writable","destroy","connectionHandler","dataProcessor","disconnect","cancelConnection","connectInternal","clear","sequencer","createCommandSequencer","isHistoryTransfer","onStatusChanged","CONNECTED","bind","DISCONNECTED","event","onDataReceived","uuid","hexValue","processData","onDeviceInfo","info","manufacturerName","serialNumber","onServicesDiscovered","uuids","initialCommands","onCommandSent","armStuckTimeout","armCommandTimeout","isNormalDisconnect","preferredMtu","stuckDataTimeout","onStreamStart","onMeasurementEnd","validatePackage","parsedData","collectedValues","nextCommand","frame","sendCommands","commands","commandTimeoutMs","onCommandTimeout","commandProgress","handleDependentResult","frameReader","connect","Promise","reject","Error","connectionPromise","resolve","finally"],"sourceRoot":"../../../../../../src","sources":["modules/bt-management/services/devices/bt-managed-device.ts"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
2
 
3
- const byteAt = (frame, index, offset) => {
4
- const value = Number.parseInt(frame[index + offset] ?? "", 16);
5
- return Number.isInteger(value) && value >= 0 && value <= 0xff ? value : undefined;
6
- };
3
+ import { byteAt } from "./standard-gatt.frame.js";
7
4
  const bloodPressureStatusFromFrame = (frame, recordOffset = 0) => {
8
5
  const flags = byteAt(frame, 0, recordOffset);
9
6
  if (flags === undefined || (flags & 0x10) === 0) {
@@ -1 +1 @@
1
- {"version":3,"names":["byteAt","frame","index","offset","value","Number","parseInt","isInteger","undefined","bloodPressureStatusFromFrame","recordOffset","flags","cursor","statusLow","statusHigh"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.ts"],"mappings":";;AAAA,MAAMA,MAAM,GAAGA,CACbC,KAAwB,EACxBC,KAAa,EACbC,MAAc,KACS;EACvB,MAAMC,KAAK,GAAGC,MAAM,CAACC,QAAQ,CAACL,KAAK,CAACC,KAAK,GAAGC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EAE9D,OAAOE,MAAM,CAACE,SAAS,CAACH,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,IAAI,GACzDA,KAAK,GACLI,SAAS;AACf,CAAC;AAED,MAAMC,4BAA4B,GAAGA,CACnCR,KAAwB,EACxBS,YAAY,GAAG,CAAC,KACO;EACvB,MAAMC,KAAK,GAAGX,MAAM,CAACC,KAAK,EAAE,CAAC,EAAES,YAAY,CAAC;EAE5C,IAAIC,KAAK,KAAKH,SAAS,IAAI,CAACG,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IAC/C,OAAOH,SAAS;EAClB;EAEA,IAAII,MAAM,GAAG,CAAC;EAEd,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBC,MAAM,IAAI,CAAC;EACb;EAEA,MAAMC,SAAS,GAAGb,MAAM,CAACC,KAAK,EAAEW,MAAM,EAAEF,YAAY,CAAC;EACrD,MAAMI,UAAU,GAAGd,MAAM,CAACC,KAAK,EAAEW,MAAM,GAAG,CAAC,EAAEF,YAAY,CAAC;EAE1D,OAAOG,SAAS,KAAKL,SAAS,IAAIM,UAAU,KAAKN,SAAS,GACtDK,SAAS,GAAIC,UAAU,IAAI,CAAE,GAC7BN,SAAS;AACf,CAAC;AAED,SAASC,4BAA4B","ignoreList":[]}
1
+ {"version":3,"names":["byteAt","bloodPressureStatusFromFrame","frame","recordOffset","flags","undefined","cursor","statusLow","statusHigh"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.blood-pressure-status.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,0BAAuB;AAE9C,MAAMC,4BAA4B,GAAGA,CACnCC,KAAwB,EACxBC,YAAY,GAAG,CAAC,KACO;EACvB,MAAMC,KAAK,GAAGJ,MAAM,CAACE,KAAK,EAAE,CAAC,EAAEC,YAAY,CAAC;EAE5C,IAAIC,KAAK,KAAKC,SAAS,IAAI,CAACD,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IAC/C,OAAOC,SAAS;EAClB;EAEA,IAAIC,MAAM,GAAG,CAAC;EAEd,IAAI,CAACF,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBE,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACF,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBE,MAAM,IAAI,CAAC;EACb;EAEA,IAAI,CAACF,KAAK,GAAG,IAAI,MAAM,CAAC,EAAE;IACxBE,MAAM,IAAI,CAAC;EACb;EAEA,MAAMC,SAAS,GAAGP,MAAM,CAACE,KAAK,EAAEI,MAAM,EAAEH,YAAY,CAAC;EACrD,MAAMK,UAAU,GAAGR,MAAM,CAACE,KAAK,EAAEI,MAAM,GAAG,CAAC,EAAEH,YAAY,CAAC;EAE1D,OAAOI,SAAS,KAAKF,SAAS,IAAIG,UAAU,KAAKH,SAAS,GACtDE,SAAS,GAAIC,UAAU,IAAI,CAAE,GAC7BH,SAAS;AACf,CAAC;AAED,SAASJ,4BAA4B","ignoreList":[]}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ import { memorySlotForDeviceUser } from "../../../utils/device-user.js";
4
+ import { rrIntervalMilliseconds } from "../../../utils/rr-interval.js";
5
+ import { temperatureTypeFromCode } from "../../../utils/temperature-type.js";
6
+ import { byteAt, DATE_TIME_BYTES, dateTimeAt, withDefinedMetadata } from "./standard-gatt.frame.js";
7
+ const TEMPERATURE_TIMESTAMP = 0x02;
8
+ const TEMPERATURE_TYPE = 0x04;
9
+ const TEMPERATURE_FIELDS_INDEX = 5;
10
+ const WEIGHT_TIMESTAMP = 0x02;
11
+ const WEIGHT_USER = 0x04;
12
+ const WEIGHT_FIELDS_INDEX = 3;
13
+
14
+ /** The weight a scale sends when the measurement failed. */
15
+ const WEIGHT_UNSUCCESSFUL = 0xffff;
16
+ const PULSE_OXIMETER_TIMESTAMP = 0x01;
17
+ const PULSE_OXIMETER_FIELDS_INDEX = 5;
18
+ const HEART_RATE_UINT16 = 0x01;
19
+ const HEART_RATE_ENERGY_EXPENDED = 0x08;
20
+ const HEART_RATE_RR_INTERVALS = 0x10;
21
+ const HEART_RATE_FLAGS_BYTES = 1;
22
+ const UINT8_BYTES = 1;
23
+ const UINT16_BYTES = 2;
24
+
25
+ /** Where the optional fields start once the fixed ones and the timestamp are accounted for. */
26
+ const afterTimestamp = (flags, timestampFlag, fieldsIndex) => flags & timestampFlag ? fieldsIndex + DATE_TIME_BYTES : fieldsIndex;
27
+ const littleEndian16 = (frame, index, offset) => {
28
+ const low = byteAt(frame, index, offset);
29
+ const high = byteAt(frame, index + 1, offset);
30
+ return low === undefined || high === undefined ? undefined : low | high << 8;
31
+ };
32
+
33
+ /** Temperature Measurement 0x2A1C: the device's own timestamp and where on the body it measured. */
34
+ const decorateThermometerReading = (reading, frame, recordOffset = 0) => {
35
+ const flags = frame && byteAt(frame, 0, recordOffset);
36
+ if (!frame || flags === undefined) {
37
+ return reading;
38
+ }
39
+ const typeCode = flags & TEMPERATURE_TYPE ? byteAt(frame, afterTimestamp(flags, TEMPERATURE_TIMESTAMP, TEMPERATURE_FIELDS_INDEX), recordOffset) : undefined;
40
+ return withDefinedMetadata(reading, {
41
+ recordedAt: flags & TEMPERATURE_TIMESTAMP ? dateTimeAt(frame, TEMPERATURE_FIELDS_INDEX, recordOffset) : undefined,
42
+ temperatureType: typeCode === undefined ? undefined : temperatureTypeFromCode(typeCode)
43
+ });
44
+ };
45
+
46
+ /** Weight Measurement 0x2A9D: withholds an unsuccessful weight, adds the timestamp and the device user. */
47
+ const decorateWeightReading = (reading, frame, recordOffset = 0) => {
48
+ const flags = frame && byteAt(frame, 0, recordOffset);
49
+ if (!frame || flags === undefined) {
50
+ return reading;
51
+ }
52
+ if (littleEndian16(frame, 1, recordOffset) === WEIGHT_UNSUCCESSFUL) {
53
+ return null;
54
+ }
55
+ const userId = flags & WEIGHT_USER ? byteAt(frame, afterTimestamp(flags, WEIGHT_TIMESTAMP, WEIGHT_FIELDS_INDEX), recordOffset) : undefined;
56
+ return withDefinedMetadata(reading, {
57
+ recordedAt: flags & WEIGHT_TIMESTAMP ? dateTimeAt(frame, WEIGHT_FIELDS_INDEX, recordOffset) : undefined,
58
+ memorySlot: userId === undefined ? undefined : memorySlotForDeviceUser(userId)
59
+ });
60
+ };
61
+
62
+ /** PLX Spot-Check Measurement 0x2A5E: the device's own timestamp. */
63
+ const decoratePulseOximeterReading = (reading, frame, recordOffset = 0) => {
64
+ const flags = frame && byteAt(frame, 0, recordOffset);
65
+ if (!frame || flags === undefined || !(flags & PULSE_OXIMETER_TIMESTAMP)) {
66
+ return reading;
67
+ }
68
+ return withDefinedMetadata(reading, {
69
+ recordedAt: dateTimeAt(frame, PULSE_OXIMETER_FIELDS_INDEX, recordOffset)
70
+ });
71
+ };
72
+
73
+ /** The RR intervals a Heart Rate Measurement carries, in milliseconds and in the order sent. */
74
+ const rrIntervalsFromHeartRateFrame = (frame, flags, recordOffset) => {
75
+ const rrIntervals = [];
76
+ let index = HEART_RATE_FLAGS_BYTES + (flags & HEART_RATE_UINT16 ? UINT16_BYTES : UINT8_BYTES) + (flags & HEART_RATE_ENERGY_EXPENDED ? UINT16_BYTES : 0);
77
+ let counts = littleEndian16(frame, index, recordOffset);
78
+ while (counts !== undefined) {
79
+ rrIntervals.push(rrIntervalMilliseconds(counts));
80
+ index += UINT16_BYTES;
81
+ counts = littleEndian16(frame, index, recordOffset);
82
+ }
83
+ return rrIntervals;
84
+ };
85
+
86
+ /** Heart Rate Measurement 0x2A37: the RR intervals, when the strap sends them. */
87
+ const decorateHeartRateReading = (reading, frame, recordOffset = 0) => {
88
+ const flags = frame && byteAt(frame, 0, recordOffset);
89
+ if (!frame || flags === undefined || !(flags & HEART_RATE_RR_INTERVALS)) {
90
+ return reading;
91
+ }
92
+ const rrIntervals = rrIntervalsFromHeartRateFrame(frame, flags, recordOffset);
93
+ return rrIntervals.length > 0 ? {
94
+ ...reading,
95
+ rrIntervals
96
+ } : reading;
97
+ };
98
+ export { decorateHeartRateReading, decoratePulseOximeterReading, decorateThermometerReading, decorateWeightReading };
99
+ //# sourceMappingURL=standard-gatt.decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["memorySlotForDeviceUser","rrIntervalMilliseconds","temperatureTypeFromCode","byteAt","DATE_TIME_BYTES","dateTimeAt","withDefinedMetadata","TEMPERATURE_TIMESTAMP","TEMPERATURE_TYPE","TEMPERATURE_FIELDS_INDEX","WEIGHT_TIMESTAMP","WEIGHT_USER","WEIGHT_FIELDS_INDEX","WEIGHT_UNSUCCESSFUL","PULSE_OXIMETER_TIMESTAMP","PULSE_OXIMETER_FIELDS_INDEX","HEART_RATE_UINT16","HEART_RATE_ENERGY_EXPENDED","HEART_RATE_RR_INTERVALS","HEART_RATE_FLAGS_BYTES","UINT8_BYTES","UINT16_BYTES","afterTimestamp","flags","timestampFlag","fieldsIndex","littleEndian16","frame","index","offset","low","high","undefined","decorateThermometerReading","reading","recordOffset","typeCode","recordedAt","temperatureType","decorateWeightReading","userId","memorySlot","decoratePulseOximeterReading","rrIntervalsFromHeartRateFrame","rrIntervals","counts","push","decorateHeartRateReading","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.decorators.ts"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,8 @@
4
4
 
5
5
  import { MeasurementTypeKey } from "@ovok/core/next";
6
6
  import { byteToHex } from "../../../utils/bytes-to-hex.js";
7
+ import { KPA_TO_MMHG } from "../../../utils/kpa-to-mmhg.js";
8
+ import { decorateHeartRateReading, decoratePulseOximeterReading, decorateThermometerReading, decorateWeightReading } from "./standard-gatt.decorators.js";
7
9
  import { standardGlucoseDevice } from "./standard-gatt.glucose.js";
8
10
  import { decorateBloodPressureReading, declareProfile, littleEndian } from "./standard-gatt.profile.js";
9
11
 
@@ -18,12 +20,20 @@ import { decorateBloodPressureReading, declareProfile, littleEndian } from "./st
18
20
  * every vendor names its hardware differently. A product declares the profile and supplies
19
21
  * the name its own hardware advertises.
20
22
  *
21
- * Values are little-endian, as the specification requires. Only the layouts using each
22
- * catalog's canonical unit are declared: a device reporting kPa, Fahrenheit or pounds needs
23
- * a conversion a declaration cannot express, and leaving those flag values undeclared means
24
- * such a device yields no reading rather than one that is quietly wrong.
23
+ * Values are little-endian, as the specification requires. A device may report in kPa,
24
+ * Fahrenheit or pounds; each field is then declared with the scale and offset that convert
25
+ * it to the catalog's canonical unit.
25
26
  */
26
27
 
28
+ const BLOOD_PRESSURE_KPA = 0x01;
29
+ const BLOOD_PRESSURE_TIMESTAMP = 0x02;
30
+ const BLOOD_PRESSURE_PULSE = 0x04;
31
+
32
+ /** Bits 0-4 are defined: kPa, timestamp, pulse, user id and measurement status. */
33
+ const BLOOD_PRESSURE_FLAGS = Array.from({
34
+ length: 32
35
+ }, (_, flags) => flags);
36
+
27
37
  /**
28
38
  * Blood Pressure Service 0x1810, Blood Pressure Measurement 0x2A35.
29
39
  *
@@ -33,8 +43,8 @@ import { decorateBloodPressureReading, declareProfile, littleEndian } from "./st
33
43
  * declares the length it needs. A device that reports no pulse still decodes, because the
34
44
  * flags value it sends selects a case that never looks for one.
35
45
  *
36
- * Bit 3 (user id, 0x08) and bit 4 (measurement status, 0x10) follow the pulse, so neither
37
- * moves it. Each shape is declared again with those bits set. Bit 0 (kPa) stays undeclared.
46
+ * Bit 3 (user id) and bit 4 (measurement status) follow the pulse, so neither moves it.
47
+ * Bit 0 says the pressures are in kPa, which is converted to whole mmHg.
38
48
  */
39
49
  /** Bit 2 set, bit 1 clear: the pulse follows the mean pressure. */
40
50
  const pulseAfterMeanPressure = {
@@ -47,35 +57,25 @@ const pulseAfterTimestamp = {
47
57
  fields: [littleEndian("heartRate", [14, 15], "bpm", "sfloat")],
48
58
  minLengthBytes: 16
49
59
  };
60
+ const pressureInKpa = (name, byteIndexes) => ({
61
+ ...littleEndian(name, byteIndexes, "mmHg", "sfloat"),
62
+ scale: KPA_TO_MMHG,
63
+ decimals: 0
64
+ });
65
+ const pressuresInKpa = [pressureInKpa("systolic", [1, 2]), pressureInKpa("diastolic", [3, 4])];
50
66
 
51
67
  /** Declares a Bluetooth SIG blood pressure profile device. */
52
- const standardBloodPressureDevice = params => declareProfile({
53
- ...params,
54
- decorateReading: (reading, frame, recordOffset) => {
55
- const decorated = decorateBloodPressureReading(reading, frame, recordOffset);
56
- if (!decorated) {
57
- return null;
58
- }
59
- return params.decorateReading ? params.decorateReading(decorated, frame, recordOffset) : decorated;
60
- }
61
- }, {
68
+ const standardBloodPressureDevice = params => declareProfile(params, {
62
69
  service: "1810",
63
70
  characteristic: "2a35",
64
71
  minLengthBytes: 7,
65
72
  measurementTypeKey: MeasurementTypeKey.bloodPressure,
66
- /** mmHg. 0x08, 0x10 and 0x18 repeat each shape with bit 3, bit 4, or both. */
67
- selectors: ["00", "08", "10", "18", "02", "0a", "12", "1a", "04", "0c", "14", "1c", "06", "0e", "16", "1e"],
73
+ decorateReading: decorateBloodPressureReading,
74
+ selectors: BLOOD_PRESSURE_FLAGS.map(byteToHex),
75
+ /** mmHg; the kPa shapes override it in `fieldsBySelector`. */
68
76
  fields: [littleEndian("systolic", [1, 2], "mmHg", "sfloat"), littleEndian("diastolic", [3, 4], "mmHg", "sfloat")],
69
- optionalFields: {
70
- "04": pulseAfterMeanPressure,
71
- "0c": pulseAfterMeanPressure,
72
- "14": pulseAfterMeanPressure,
73
- "1c": pulseAfterMeanPressure,
74
- "06": pulseAfterTimestamp,
75
- "0e": pulseAfterTimestamp,
76
- "16": pulseAfterTimestamp,
77
- "1e": pulseAfterTimestamp
78
- }
77
+ fieldsBySelector: Object.fromEntries(BLOOD_PRESSURE_FLAGS.filter(flags => flags & BLOOD_PRESSURE_KPA).map(flags => [byteToHex(flags), pressuresInKpa])),
78
+ optionalFields: Object.fromEntries(BLOOD_PRESSURE_FLAGS.filter(flags => flags & BLOOD_PRESSURE_PULSE).map(flags => [byteToHex(flags), flags & BLOOD_PRESSURE_TIMESTAMP ? pulseAfterTimestamp : pulseAfterMeanPressure]))
79
79
  });
80
80
 
81
81
  /** Health Thermometer Service 0x1809, Temperature Measurement 0x2A1C. */
@@ -84,6 +84,7 @@ const standardThermometerDevice = params => declareProfile(params, {
84
84
  characteristic: "2a1c",
85
85
  minLengthBytes: 5,
86
86
  measurementTypeKey: MeasurementTypeKey.temperature,
87
+ decorateReading: decorateThermometerReading,
87
88
  /** All combinations of Fahrenheit, timestamp and temperature type flags. */
88
89
  selectors: ["00", "02", "04", "06", "01", "03", "05", "07"],
89
90
  fields: [littleEndian("bodyTemp", [1, 2, 3, 4], "Cel", "float")],
@@ -122,12 +123,14 @@ const WEIGHT_KG_PER_COUNT = 0.005;
122
123
  * Weight Scale Service 0x181D, Weight Measurement 0x2A9D.
123
124
  *
124
125
  * The reading is a scaled integer rather than a float, so the resolution is applied here.
126
+ * A weight of 0xFFFF means the measurement failed, so it yields no reading.
125
127
  */
126
128
  const standardWeightScaleDevice = params => declareProfile(params, {
127
129
  service: "181d",
128
130
  characteristic: "2a9d",
129
131
  minLengthBytes: 3,
130
132
  measurementTypeKey: MeasurementTypeKey.bodyWeight,
133
+ decorateReading: decorateWeightReading,
131
134
  /** Unit, timestamp, user-id and BMI/height flags may all follow the value. */
132
135
  selectors: Array.from({
133
136
  length: 16
@@ -153,14 +156,16 @@ const standardWeightScaleDevice = params => declareProfile(params, {
153
156
  * Pulse Oximeter Service 0x1822, PLX Spot-Check Measurement 0x2A5E.
154
157
  *
155
158
  * Saturation and pulse rate are both required by the catalog, which matches the
156
- * specification: a spot-check measurement always carries both.
159
+ * specification: a spot-check measurement always carries both, at bytes 1-4 whatever the
160
+ * flags say, so every flags value selects the same fields. The optional ones follow them.
157
161
  */
158
162
  const standardPulseOximeterDevice = params => declareProfile(params, {
159
163
  service: "1822",
160
164
  characteristic: "2a5e",
161
165
  minLengthBytes: 5,
162
166
  measurementTypeKey: MeasurementTypeKey.bloodOxygenPulseRate,
163
- selectors: ["00"],
167
+ decorateReading: decoratePulseOximeterReading,
168
+ selectors: ["*"],
164
169
  fields: [littleEndian("bloodOxygen", [1, 2], "%", "sfloat"), littleEndian("pulseRate", [3, 4], "bpm", "sfloat")]
165
170
  });
166
171
 
@@ -176,13 +181,15 @@ const UINT16_HEART_RATE_FLAGS = HEART_RATE_FLAGS.filter(flags => (flags & 0x01)
176
181
  * Heart Rate Service 0x180D, Heart Rate Measurement 0x2A37.
177
182
  *
178
183
  * Both heart-rate layouts are declared. A contact-not-detected frame is idle, so it cannot
179
- * become a false reading while the strap is off the body.
184
+ * become a false reading while the strap is off the body. RR intervals, a list of any
185
+ * length, are read from the frame by the decorator and reported as `rrIntervals`.
180
186
  */
181
187
  const standardHeartRateDevice = params => declareProfile(params, {
182
188
  service: "180d",
183
189
  characteristic: "2a37",
184
190
  minLengthBytes: 2,
185
191
  measurementTypeKey: MeasurementTypeKey.heartRate,
192
+ decorateReading: decorateHeartRateReading,
186
193
  selectors: HEART_RATE_FLAGS.map(byteToHex),
187
194
  fields: [{
188
195
  name: "heartRate",
@@ -1 +1 @@
1
- {"version":3,"names":["MeasurementTypeKey","byteToHex","standardGlucoseDevice","decorateBloodPressureReading","declareProfile","littleEndian","pulseAfterMeanPressure","fields","minLengthBytes","pulseAfterTimestamp","standardBloodPressureDevice","params","decorateReading","reading","frame","recordOffset","decorated","service","characteristic","measurementTypeKey","bloodPressure","selectors","optionalFields","standardThermometerDevice","temperature","fieldsBySelector","scale","offset","decimals","WEIGHT_KG_PER_COUNT","standardWeightScaleDevice","bodyWeight","Array","from","length","_","flags","Object","fromEntries","selector","standardPulseOximeterDevice","bloodOxygenPulseRate","HEART_RATE_FLAGS","filter","UINT16_HEART_RATE_FLAGS","standardHeartRateDevice","heartRate","map","name","byteIndexes","encoding","unit","byteOrder"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MeasurementTypeKey","byteToHex","KPA_TO_MMHG","decorateHeartRateReading","decoratePulseOximeterReading","decorateThermometerReading","decorateWeightReading","standardGlucoseDevice","decorateBloodPressureReading","declareProfile","littleEndian","BLOOD_PRESSURE_KPA","BLOOD_PRESSURE_TIMESTAMP","BLOOD_PRESSURE_PULSE","BLOOD_PRESSURE_FLAGS","Array","from","length","_","flags","pulseAfterMeanPressure","fields","minLengthBytes","pulseAfterTimestamp","pressureInKpa","name","byteIndexes","scale","decimals","pressuresInKpa","standardBloodPressureDevice","params","service","characteristic","measurementTypeKey","bloodPressure","decorateReading","selectors","map","fieldsBySelector","Object","fromEntries","filter","optionalFields","standardThermometerDevice","temperature","offset","WEIGHT_KG_PER_COUNT","standardWeightScaleDevice","bodyWeight","selector","standardPulseOximeterDevice","bloodOxygenPulseRate","HEART_RATE_FLAGS","UINT16_HEART_RATE_FLAGS","standardHeartRateDevice","heartRate","encoding","unit","byteOrder"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ /** The Bluetooth SIG Date Time characteristic is seven bytes long. */
4
+ const DATE_TIME_BYTES = 7;
5
+
6
+ /** The byte at `index` of a record that starts at `offset`; undefined when the frame ends first. */
7
+ const byteAt = (frame, index, offset) => {
8
+ const value = Number.parseInt(frame[index + offset] ?? "", 16);
9
+ return Number.isInteger(value) && value >= 0 && value <= 0xff ? value : undefined;
10
+ };
11
+
12
+ /** Reads a SIG Date Time at `index` as a phone-local date; undefined for missing or impossible fields. */
13
+ const dateTimeAt = (frame, index, offset = 0) => {
14
+ const yearLow = byteAt(frame, index, offset);
15
+ const yearHigh = byteAt(frame, index + 1, offset);
16
+ const month = byteAt(frame, index + 2, offset);
17
+ const day = byteAt(frame, index + 3, offset);
18
+ const hour = byteAt(frame, index + 4, offset);
19
+ const minute = byteAt(frame, index + 5, offset);
20
+ const second = byteAt(frame, index + 6, offset);
21
+ if (yearLow === undefined || yearHigh === undefined || month === undefined || day === undefined || hour === undefined || minute === undefined || second === undefined) {
22
+ return undefined;
23
+ }
24
+ const year = yearLow | yearHigh << 8;
25
+ const date = new Date(year, month - 1, day, hour, minute, second);
26
+ return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day && date.getHours() === hour && date.getMinutes() === minute && date.getSeconds() === second ? date : undefined;
27
+ };
28
+
29
+ /** `reading` plus each of `metadata` that has a value. */
30
+ const withDefinedMetadata = (reading, metadata) => ({
31
+ ...reading,
32
+ ...Object.fromEntries(Object.entries(metadata).filter(([, value]) => value !== undefined))
33
+ });
34
+ export { byteAt, DATE_TIME_BYTES, dateTimeAt, withDefinedMetadata };
35
+ //# sourceMappingURL=standard-gatt.frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DATE_TIME_BYTES","byteAt","frame","index","offset","value","Number","parseInt","isInteger","undefined","dateTimeAt","yearLow","yearHigh","month","day","hour","minute","second","year","date","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","withDefinedMetadata","reading","metadata","Object","fromEntries","entries","filter"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.frame.ts"],"mappings":";;AAAA;AACA,MAAMA,eAAe,GAAG,CAAC;;AAEzB;AACA,MAAMC,MAAM,GAAGA,CACbC,KAAwB,EACxBC,KAAa,EACbC,MAAc,KACS;EACvB,MAAMC,KAAK,GAAGC,MAAM,CAACC,QAAQ,CAACL,KAAK,CAACC,KAAK,GAAGC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;EAE9D,OAAOE,MAAM,CAACE,SAAS,CAACH,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,IAAI,GACzDA,KAAK,GACLI,SAAS;AACf,CAAC;;AAED;AACA,MAAMC,UAAU,GAAGA,CACjBR,KAAwB,EACxBC,KAAa,EACbC,MAAM,GAAG,CAAC,KACW;EACrB,MAAMO,OAAO,GAAGV,MAAM,CAACC,KAAK,EAAEC,KAAK,EAAEC,MAAM,CAAC;EAC5C,MAAMQ,QAAQ,GAAGX,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EACjD,MAAMS,KAAK,GAAGZ,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EAC9C,MAAMU,GAAG,GAAGb,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EAC5C,MAAMW,IAAI,GAAGd,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EAC7C,MAAMY,MAAM,GAAGf,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EAC/C,MAAMa,MAAM,GAAGhB,MAAM,CAACC,KAAK,EAAEC,KAAK,GAAG,CAAC,EAAEC,MAAM,CAAC;EAE/C,IACEO,OAAO,KAAKF,SAAS,IACrBG,QAAQ,KAAKH,SAAS,IACtBI,KAAK,KAAKJ,SAAS,IACnBK,GAAG,KAAKL,SAAS,IACjBM,IAAI,KAAKN,SAAS,IAClBO,MAAM,KAAKP,SAAS,IACpBQ,MAAM,KAAKR,SAAS,EACpB;IACA,OAAOA,SAAS;EAClB;EAEA,MAAMS,IAAI,GAAGP,OAAO,GAAIC,QAAQ,IAAI,CAAE;EACtC,MAAMO,IAAI,GAAG,IAAIC,IAAI,CAACF,IAAI,EAAEL,KAAK,GAAG,CAAC,EAAEC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAM,CAAC;EAEjE,OAAOE,IAAI,CAACE,WAAW,CAAC,CAAC,KAAKH,IAAI,IAChCC,IAAI,CAACG,QAAQ,CAAC,CAAC,KAAKT,KAAK,GAAG,CAAC,IAC7BM,IAAI,CAACI,OAAO,CAAC,CAAC,KAAKT,GAAG,IACtBK,IAAI,CAACK,QAAQ,CAAC,CAAC,KAAKT,IAAI,IACxBI,IAAI,CAACM,UAAU,CAAC,CAAC,KAAKT,MAAM,IAC5BG,IAAI,CAACO,UAAU,CAAC,CAAC,KAAKT,MAAM,GAC1BE,IAAI,GACJV,SAAS;AACf,CAAC;;AAED;AACA,MAAMkB,mBAAmB,GAAGA,CAC1BC,OAAU,EACVC,QAA2C,MACpC;EACP,GAAGD,OAAO;EACV,GAAGE,MAAM,CAACC,WAAW,CACnBD,MAAM,CAACE,OAAO,CAACH,QAAQ,CAAC,CAACI,MAAM,CAAC,CAAC,GAAG5B,KAAK,CAAC,KAAKA,KAAK,KAAKI,SAAS,CACpE;AACF,CAAC,CAAC;AAEF,SAASR,MAAM,EAAED,eAAe,EAAEU,UAAU,EAAEiB,mBAAmB","ignoreList":[]}
@@ -1,12 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  import { BloodPressureStates } from "../../../types/blood-pressure-states.js";
4
+ import { memorySlotForDeviceUser } from "../../../utils/device-user.js";
4
5
  import { sigUuid } from "../../../utils/sig-uuid.js";
5
6
  import { defineCustomDevice } from "../../custom/define-custom-device.js";
6
7
  import { bloodPressureStatusFromFrame } from "./standard-gatt.blood-pressure-status.js";
8
+ import { byteAt, dateTimeAt } from "./standard-gatt.frame.js";
7
9
 
8
10
  /** Milliseconds a spot-check device may take to produce its reading. */
9
11
  const SPOT_CHECK_TIMEOUT_MS = 60_000;
12
+ /** Runs `first`, then `second` on what it returns; either may withhold the reading. */
13
+ const chainDecorators = (first, second) => {
14
+ if (!first || !second) {
15
+ return first ?? second;
16
+ }
17
+ return (reading, frame, recordOffset) => {
18
+ const decorated = first(reading, frame, recordOffset);
19
+ return decorated && second(decorated, frame, recordOffset);
20
+ };
21
+ };
22
+
10
23
  /**
11
24
  * The flags byte selects the case, because it decides which optional fields are present and
12
25
  * therefore where the later ones sit. Fields common to every shape are declared once; a
@@ -43,7 +56,7 @@ const declareProfile = (params, profile) => defineCustomDevice({
43
56
  }]
44
57
  }]
45
58
  }, {
46
- decorateReading: params.decorateReading
59
+ decorateReading: chainDecorators(profile.decorateReading, params.decorateReading)
47
60
  });
48
61
  const littleEndian = (name, byteIndexes, unit, encoding) => ({
49
62
  name,
@@ -52,27 +65,11 @@ const littleEndian = (name, byteIndexes, unit, encoding) => ({
52
65
  encoding,
53
66
  unit
54
67
  });
55
- const byteAt = (frame, index, offset) => {
56
- const value = Number.parseInt(frame[index + offset] ?? "", 16);
57
- return Number.isInteger(value) && value >= 0 && value <= 0xff ? value : undefined;
58
- };
59
68
 
60
69
  /** Reads the SIG blood-pressure timestamp as a phone-local date. */
61
70
  const recordedAtFromBloodPressureFrame = (frame, offset = 0) => {
62
71
  const flags = byteAt(frame, 0, offset);
63
- const yearLow = byteAt(frame, 7, offset);
64
- const yearHigh = byteAt(frame, 8, offset);
65
- const month = byteAt(frame, 9, offset);
66
- const day = byteAt(frame, 10, offset);
67
- const hour = byteAt(frame, 11, offset);
68
- const minute = byteAt(frame, 12, offset);
69
- const second = byteAt(frame, 13, offset);
70
- if (flags === undefined || (flags & 0x02) === 0 || yearLow === undefined || yearHigh === undefined || month === undefined || day === undefined || hour === undefined || minute === undefined || second === undefined) {
71
- return undefined;
72
- }
73
- const year = yearLow | yearHigh << 8;
74
- const recordedAt = new Date(year, month - 1, day, hour, minute, second);
75
- return recordedAt.getFullYear() === year && recordedAt.getMonth() === month - 1 && recordedAt.getDate() === day && recordedAt.getHours() === hour && recordedAt.getMinutes() === minute && recordedAt.getSeconds() === second ? recordedAt : undefined;
72
+ return flags !== undefined && (flags & 0x02) !== 0 ? dateTimeAt(frame, 7, offset) : undefined;
76
73
  };
77
74
  const decorateBloodPressureReading = (reading, frame, recordOffset) => {
78
75
  if (!frame) {
@@ -99,8 +96,9 @@ const decorateBloodPressureReading = (reading, frame, recordOffset) => {
99
96
  } : {};
100
97
  if ((flags & 0x08) !== 0) {
101
98
  const userId = byteAt(frame, cursor, offset);
102
- if (userId === 0 || userId === 1) {
103
- metadata.memorySlot = userId + 1;
99
+ const memorySlot = userId === undefined ? undefined : memorySlotForDeviceUser(userId);
100
+ if (memorySlot !== undefined) {
101
+ metadata.memorySlot = memorySlot;
104
102
  }
105
103
  cursor += 1;
106
104
  }
@@ -1 +1 @@
1
- {"version":3,"names":["BloodPressureStates","sigUuid","defineCustomDevice","bloodPressureStatusFromFrame","SPOT_CHECK_TIMEOUT_MS","declareProfile","params","profile","id","measurementTypeKey","nameMatch","matchByService","undefined","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","service","monitor","characteristic","frame","minLengthBytes","caseSelectorBytes","cases","selectors","map","selector","optional","optionalFields","fields","fieldsBySelector","kind","decorateReading","littleEndian","name","byteIndexes","unit","encoding","byteOrder","byteAt","index","offset","value","Number","parseInt","isInteger","recordedAtFromBloodPressureFrame","flags","yearLow","yearHigh","month","day","hour","minute","second","year","recordedAt","Date","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","decorateBloodPressureReading","reading","recordOffset","cursor","metadata","userId","memorySlot","status","DISTURB_DETECTED","LOOSE_SLEEVE","REGULAR","irregularHeartbeat","Object","keys","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BloodPressureStates","memorySlotForDeviceUser","sigUuid","defineCustomDevice","bloodPressureStatusFromFrame","byteAt","dateTimeAt","SPOT_CHECK_TIMEOUT_MS","chainDecorators","first","second","reading","frame","recordOffset","decorated","declareProfile","params","profile","id","measurementTypeKey","nameMatch","matchByService","undefined","oneReadingPerConnection","stuckDataTimeoutMs","services","uuid","service","monitor","characteristic","minLengthBytes","caseSelectorBytes","cases","selectors","map","selector","optional","optionalFields","fields","fieldsBySelector","kind","decorateReading","littleEndian","name","byteIndexes","unit","encoding","byteOrder","recordedAtFromBloodPressureFrame","offset","flags","decorateBloodPressureReading","recordedAt","cursor","metadata","userId","memorySlot","status","DISTURB_DETECTED","LOOSE_SLEEVE","REGULAR","irregularHeartbeat","Object","keys","length"],"sourceRoot":"../../../../../../../src","sources":["modules/bt-management/services/devices/standard-gatt/standard-gatt.profile.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ /** The Bluetooth SIG User Index that means the device does not know whose reading it is. */
4
+ const UNKNOWN_DEVICE_USER = 0xff;
5
+
6
+ /** The memory slot of a SIG device user: users count from 0, slots from 1; the unknown user has none. */
7
+ const memorySlotForDeviceUser = userId => userId === UNKNOWN_DEVICE_USER ? undefined : userId + 1;
8
+
9
+ /** Whether a reading is from one of the device users `slots`; a reading that names no device user is kept. */
10
+ const isFromAcceptedMemorySlot = (reading, slots) => {
11
+ const {
12
+ memorySlot
13
+ } = reading;
14
+ return typeof memorySlot !== "number" || slots.includes(memorySlot);
15
+ };
16
+ export { isFromAcceptedMemorySlot, memorySlotForDeviceUser };
17
+ //# sourceMappingURL=device-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["UNKNOWN_DEVICE_USER","memorySlotForDeviceUser","userId","undefined","isFromAcceptedMemorySlot","reading","slots","memorySlot","includes"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/device-user.ts"],"mappings":";;AAAA;AACA,MAAMA,mBAAmB,GAAG,IAAI;;AAEhC;AACA,MAAMC,uBAAuB,GAAIC,MAAc,IAC7CA,MAAM,KAAKF,mBAAmB,GAAGG,SAAS,GAAGD,MAAM,GAAG,CAAC;;AAEzD;AACA,MAAME,wBAAwB,GAAGA,CAC/BC,OAAe,EACfC,KAAwB,KACZ;EACZ,MAAM;IAAEC;EAAW,CAAC,GAAGF,OAAmC;EAE1D,OAAO,OAAOE,UAAU,KAAK,QAAQ,IAAID,KAAK,CAACE,QAAQ,CAACD,UAAU,CAAC;AACrE,CAAC;AAED,SAASH,wBAAwB,EAAEH,uBAAuB","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ /** Millimetres of mercury in one kilopascal. */
4
+ const KPA_TO_MMHG = 7.50062;
5
+ export { KPA_TO_MMHG };
6
+ //# sourceMappingURL=kpa-to-mmhg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KPA_TO_MMHG"],"sourceRoot":"../../../../../src","sources":["modules/bt-management/utils/kpa-to-mmhg.ts"],"mappings":";;AAAA;AACA,MAAMA,WAAW,GAAG,OAAO;AAE3B,SAASA,WAAW","ignoreList":[]}