@ovok/native 1.0.0 → 1.2.0
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/LICENSE +8 -667
- package/lib/commonjs/modules/bt-device/components/btdevice-list.js +3 -1
- package/lib/commonjs/modules/bt-device/components/btdevice-list.js.map +1 -1
- package/lib/commonjs/modules/bt-device/components/item/status.js +17 -5
- package/lib/commonjs/modules/bt-device/components/item/status.js.map +1 -1
- package/lib/commonjs/modules/bt-device/components/supported-device-list.js +93 -0
- package/lib/commonjs/modules/bt-device/components/supported-device-list.js.map +1 -0
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js +182 -0
- package/lib/commonjs/modules/bt-device/constants/supported-devices.js.map +1 -0
- package/lib/commonjs/modules/bt-device/index.js +33 -0
- package/lib/commonjs/modules/bt-device/index.js.map +1 -1
- package/lib/commonjs/modules/bt-device/types/supported-device-list-props.js +6 -0
- package/lib/commonjs/modules/bt-device/types/supported-device-list-props.js.map +1 -0
- package/lib/commonjs/modules/bt-management/index.js +22 -0
- package/lib/commonjs/modules/bt-management/index.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/bt-manager.js +15 -13
- package/lib/commonjs/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js +7 -1
- package/lib/commonjs/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-command-sequencer.js +184 -0
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-command-sequencer.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +114 -0
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js +113 -51
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.main-services.js +41 -77
- package/lib/commonjs/modules/bt-management/services/devices/bc01/bc01.main-services.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/boso/boso.medicus.js +29 -0
- package/lib/commonjs/modules/bt-management/services/devices/boso/boso.medicus.js.map +1 -0
- package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +24 -12
- package/lib/commonjs/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
- package/lib/commonjs/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.js +25 -0
- package/lib/commonjs/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.js.map +1 -0
- package/lib/module/modules/bt-device/components/btdevice-list.js +3 -1
- package/lib/module/modules/bt-device/components/btdevice-list.js.map +1 -1
- package/lib/module/modules/bt-device/components/item/status.js +17 -5
- package/lib/module/modules/bt-device/components/item/status.js.map +1 -1
- package/lib/module/modules/bt-device/components/supported-device-list.js +87 -0
- package/lib/module/modules/bt-device/components/supported-device-list.js.map +1 -0
- package/lib/module/modules/bt-device/constants/supported-devices.js +178 -0
- package/lib/module/modules/bt-device/constants/supported-devices.js.map +1 -0
- package/lib/module/modules/bt-device/index.js +3 -0
- package/lib/module/modules/bt-device/index.js.map +1 -1
- package/lib/module/modules/bt-device/types/supported-device-list-props.js +4 -0
- package/lib/module/modules/bt-device/types/supported-device-list-props.js.map +1 -0
- package/lib/module/modules/bt-management/index.js +2 -0
- package/lib/module/modules/bt-management/index.js.map +1 -1
- package/lib/module/modules/bt-management/services/bt-manager.js +15 -13
- package/lib/module/modules/bt-management/services/bt-manager.js.map +1 -1
- package/lib/module/modules/bt-management/services/device-creator.js +7 -1
- package/lib/module/modules/bt-management/services/device-creator.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01-command-sequencer.js +180 -0
- package/lib/module/modules/bt-management/services/devices/bc01/bc01-command-sequencer.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js +110 -0
- package/lib/module/modules/bt-management/services/devices/bc01/bc01-frame-parser.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js +113 -51
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.device.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.main-services.js +41 -77
- package/lib/module/modules/bt-management/services/devices/bc01/bc01.main-services.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/boso/boso.medicus.js +26 -0
- package/lib/module/modules/bt-management/services/devices/boso/boso.medicus.js.map +1 -0
- package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js +24 -12
- package/lib/module/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.js.map +1 -1
- package/lib/module/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.js +22 -0
- package/lib/module/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.js.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/components/btdevice-list.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/components/item/status.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/components/supported-device-list.d.ts +4 -0
- package/lib/typescript/commonjs/src/modules/bt-device/components/supported-device-list.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts +165 -0
- package/lib/typescript/commonjs/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts +3 -0
- package/lib/typescript/commonjs/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-device/types/supported-device-list-props.d.ts +6 -0
- package/lib/typescript/commonjs/src/modules/bt-device/types/supported-device-list-props.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts +0 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-command-sequencer.d.ts +53 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-command-sequencer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +53 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts +33 -13
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts +11 -17
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/boso/boso.medicus.d.ts +26 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/boso/boso.medicus.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +0 -25
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.d.ts +22 -0
- package/lib/typescript/commonjs/src/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/components/btdevice-list.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/components/item/status.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/components/supported-device-list.d.ts +4 -0
- package/lib/typescript/module/src/modules/bt-device/components/supported-device-list.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts +165 -0
- package/lib/typescript/module/src/modules/bt-device/constants/supported-devices.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts +3 -0
- package/lib/typescript/module/src/modules/bt-device/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-device/types/supported-device-list-props.d.ts +6 -0
- package/lib/typescript/module/src/modules/bt-device/types/supported-device-list-props.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts +2 -0
- package/lib/typescript/module/src/modules/bt-management/index.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts +0 -1
- package/lib/typescript/module/src/modules/bt-management/services/bt-manager.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/device-creator.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-command-sequencer.d.ts +53 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-command-sequencer.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts +53 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01-frame-parser.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts +33 -13
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts +11 -17
- package/lib/typescript/module/src/modules/bt-management/services/devices/bc01/bc01.main-services.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/boso/boso.medicus.d.ts +26 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/boso/boso.medicus.d.ts.map +1 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts +0 -25
- package/lib/typescript/module/src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.d.ts.map +1 -1
- package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.d.ts +22 -0
- package/lib/typescript/module/src/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CommandSequencer } from "../../../types/command-sequencer";
|
|
2
|
+
import { DeviceCommand } from "../../../types/device-command";
|
|
3
|
+
interface Bc01SequencerParams {
|
|
4
|
+
/** The write channel every command goes out on. FF01 for a real BC401. */
|
|
5
|
+
write: Omit<DeviceCommand, "frame">;
|
|
6
|
+
/**
|
|
7
|
+
* Called with why the exchange stopped. Optional; a refusal here does not
|
|
8
|
+
* end the connection because the device continues to accept fresh commands
|
|
9
|
+
* even after a bad handshake step. The parent driver decides what to do.
|
|
10
|
+
*/
|
|
11
|
+
onRefused?: (reason: string) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Walks the BC401 through its post-reset handshake and pulls every stored
|
|
15
|
+
* record.
|
|
16
|
+
*
|
|
17
|
+
* The device is self-clocking: it answers each command with a single frame,
|
|
18
|
+
* and the first byte of that frame names what it is. So the sequencer keeps
|
|
19
|
+
* no counter of its own — it looks at the reply, decides what belongs next,
|
|
20
|
+
* and returns that. A frame whose opcode is not part of the handshake is left
|
|
21
|
+
* unanswered so the driver's stuck-data watchdog surfaces the stall rather
|
|
22
|
+
* than the sequencer sending a command the device did not ask for.
|
|
23
|
+
*
|
|
24
|
+
* `initialCommands()` returns only the reset. The rest of the handshake -
|
|
25
|
+
* VERSION, SET_TIME, GET_COUNT, GET_RECORDS - is driven entirely by the
|
|
26
|
+
* device's own replies, because sending them any earlier would race the
|
|
27
|
+
* firmware boot the reset triggers.
|
|
28
|
+
*/
|
|
29
|
+
export declare class Bc01CommandSequencer implements CommandSequencer {
|
|
30
|
+
private readonly params;
|
|
31
|
+
private isDone;
|
|
32
|
+
/** Injectable for tests; production reads `Date.now()`. */
|
|
33
|
+
private readonly clock;
|
|
34
|
+
constructor(params: Bc01SequencerParams, clock?: () => Date);
|
|
35
|
+
initialCommands: () => readonly DeviceCommand[];
|
|
36
|
+
nextCommand: (frame: readonly string[]) => readonly DeviceCommand[] | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* The device pages every record it holds, one 16-byte frame at a time. Only
|
|
39
|
+
* the frame whose flags byte carries `0x40` needs an acknowledgement; every
|
|
40
|
+
* other page is a status update we let ride while the transfer continues.
|
|
41
|
+
*/
|
|
42
|
+
private answerStoredRecord;
|
|
43
|
+
private commandFor;
|
|
44
|
+
}
|
|
45
|
+
export declare const bc01CommandSequencerInternals: {
|
|
46
|
+
bc401Checksum: (bytes: readonly number[]) => number;
|
|
47
|
+
buildCommand: (opcode: number, arg: number) => number[];
|
|
48
|
+
buildResetCommand: () => number[];
|
|
49
|
+
buildRequestVersionCommand: () => number[];
|
|
50
|
+
buildSetTimeCommand: (now: Date) => number[];
|
|
51
|
+
};
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=bc01-command-sequencer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bc01-command-sequencer.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01-command-sequencer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAuC9D,UAAU,mBAAmB;IAE3B,0EAA0E;IAC1E,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAEpC;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAqED;;;;;;;;;;;;;;;GAeG;AAEH,qBAAa,oBAAqB,YAAW,gBAAgB;IAOzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,MAAM,CAAS;IAEvB,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;gBAGhB,MAAM,EAAE,mBAAmB,EAC5C,KAAK,GAAE,MAAM,IAAuB;IAK/B,eAAe,QAAO,SAAS,aAAa,EAAE,CAEnD;IAEK,WAAW,GAChB,OAAO,SAAS,MAAM,EAAE,KACvB,SAAS,aAAa,EAAE,GAAG,SAAS,CAoCrC;IAEF;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAUxB;IAEF,OAAO,CAAC,UAAU,CAIf;CACJ;AAGD,eAAO,MAAM,6BAA6B;2BA3JZ,SAAS,MAAM,EAAE,KAAG,MAAM;2BAQ1B,MAAM,OAAO,MAAM,KAAG,MAAM,EAAE;6BAW9B,MAAM,EAAE;sCAQC,MAAM,EAAE;+BAYb,IAAI,KAAG,MAAM,EAAE;CA0HhD,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** BC401 stored-record frame is always sixteen bytes: header, timestamp, analytes, checksum. */
|
|
2
|
+
declare const BC01_RECORD_LENGTH = 16;
|
|
3
|
+
/** The two opcodes the firmware uses for a stored URS-7 record. */
|
|
4
|
+
declare const BC01_URS_OPCODE = 225;
|
|
5
|
+
declare const BC01_PAGED_URS_OPCODE = 226;
|
|
6
|
+
/**
|
|
7
|
+
* The bit `0x40` of the flags byte marks the last record of a paginated set.
|
|
8
|
+
* The sequencer keys off it to send the `[0x92, 0x7E, chk]` acknowledgement.
|
|
9
|
+
*/
|
|
10
|
+
declare const BC01_LAST_OF_SET_BIT = 64;
|
|
11
|
+
/**
|
|
12
|
+
* URS-7 pad names, in the exact order they occupy the packed 3-bit slots
|
|
13
|
+
* across bytes 8..14 (see M1/a.java). The eleventh slot is a Contec-firmware
|
|
14
|
+
* field the vendor's own catalog calls "vc" and no other name is documented.
|
|
15
|
+
*/
|
|
16
|
+
declare const BC01_ANALYTE_ORDER: readonly ["uro", "bld", "bil", "ket", "glu", "pro", "ph", "nit", "leu", "sg", "vc"];
|
|
17
|
+
/** The result of decoding one 16-byte record. `lastOfSet` is what the sequencer keys on. */
|
|
18
|
+
interface Bc01ParsedRecord {
|
|
19
|
+
/** Local wall-clock time the device recorded, with millisecond precision unavailable. */
|
|
20
|
+
timestamp: Date;
|
|
21
|
+
/** True when the flags byte set bit 0x40 — this is the frame that must be acknowledged. */
|
|
22
|
+
lastOfSet: boolean;
|
|
23
|
+
/** Low nibble of the flags byte; the page counter the firmware writes. */
|
|
24
|
+
pageIndex: number;
|
|
25
|
+
/**
|
|
26
|
+
* Analyte level indices, absent for any pad the strip did not measure.
|
|
27
|
+
* A pad the strip did measure carries a value in [0, 6]; the vendor's own
|
|
28
|
+
* lookup tables translate that to a categorical result per analyte.
|
|
29
|
+
*/
|
|
30
|
+
values: Partial<Record<(typeof BC01_ANALYTE_ORDER)[number], number>>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Decodes a 16-byte E1 or E2 frame into its timestamp and analyte indices.
|
|
34
|
+
*
|
|
35
|
+
* Returns `undefined` for any frame that is not the right length or does not
|
|
36
|
+
* open with an E1/E2 opcode — the caller is not asked to guess whether a
|
|
37
|
+
* frame is a record or a heartbeat, and a frame that fails these checks is
|
|
38
|
+
* skipped rather than parsed into a plausible-looking wrong reading.
|
|
39
|
+
*
|
|
40
|
+
* The checksum byte is not verified here: the SDK's read path already ensures
|
|
41
|
+
* frame integrity before the parser sees the bytes, and a URS-7 pad value can
|
|
42
|
+
* only land in [0, 7] anyway — a corrupt payload would fail the pad-value
|
|
43
|
+
* check before it made it into a measurement.
|
|
44
|
+
*/
|
|
45
|
+
declare const parseBc01Record: (frame: readonly string[]) => Bc01ParsedRecord | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* True when the buffer holds a complete BC401 stored record. Used by the
|
|
48
|
+
* driver's `validatePackage` hook so the SDK's read path only advances once
|
|
49
|
+
* the notification carries a whole 16-byte frame.
|
|
50
|
+
*/
|
|
51
|
+
declare const isBc01Record: (frame: readonly string[]) => boolean;
|
|
52
|
+
export { BC01_ANALYTE_ORDER, BC01_LAST_OF_SET_BIT, BC01_PAGED_URS_OPCODE, BC01_RECORD_LENGTH, BC01_URS_OPCODE, Bc01ParsedRecord, isBc01Record, parseBc01Record, };
|
|
53
|
+
//# sourceMappingURL=bc01-frame-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bc01-frame-parser.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01-frame-parser.ts"],"names":[],"mappings":"AAIA,gGAAgG;AAChG,QAAA,MAAM,kBAAkB,KAAK,CAAC;AAE9B,mEAAmE;AACnE,QAAA,MAAM,eAAe,MAAO,CAAC;AAC7B,QAAA,MAAM,qBAAqB,MAAO,CAAC;AAEnC;;;GAGG;AACH,QAAA,MAAM,oBAAoB,KAAO,CAAC;AAelC;;;;GAIG;AACH,QAAA,MAAM,kBAAkB,qFAYuC,CAAC;AAKhE,4FAA4F;AAC5F,UAAU,gBAAgB;IAExB,yFAAyF;IACzF,SAAS,EAAE,IAAI,CAAC;IAEhB,2FAA2F;IAC3F,SAAS,EAAE,OAAO,CAAC;IAEnB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACtE;AAUD;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,eAAe,GACnB,OAAO,SAAS,MAAM,EAAE,KACvB,gBAAgB,GAAG,SA0CrB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAI,OAAO,SAAS,MAAM,EAAE,KAAG,OAQhD,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,GAChB,CAAC"}
|
package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts
CHANGED
|
@@ -1,33 +1,53 @@
|
|
|
1
|
+
import { Device } from "react-native-ble-plx";
|
|
2
|
+
import { CreateDeviceParams } from "../../../types/create-device-params";
|
|
3
|
+
import { DependentResultHandlerParams } from "../../../types/dependent-result-handler-params";
|
|
1
4
|
import { MeasurementTypeForDevices } from "../../../types/device-measurement-map";
|
|
2
5
|
import { IntegratedDevices } from "../../../types/integrated-devices";
|
|
3
|
-
import { MeasurementWithCaseType } from "../../../types/measurement-with-case-type";
|
|
4
6
|
import { IService } from "../../../types/service.type";
|
|
5
7
|
import { BTManagedDevice } from "../bt-managed-device";
|
|
6
8
|
/**
|
|
7
9
|
* Contec BC401 (BC01) urine analyzer driver.
|
|
8
10
|
*
|
|
9
|
-
* The BC401 is a
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* The BC401 is a memory device, not a live stream: every measurement the
|
|
12
|
+
* patient takes is written to onboard 500-slot flash the moment the strip
|
|
13
|
+
* finishes reacting, and the app pulls stored records over BLE only after the
|
|
14
|
+
* host walks the reset → version → set-time → count → get-records handshake
|
|
15
|
+
* documented in `bc01-command-sequencer.ts`. Every record arrives as one
|
|
16
|
+
* 16-byte E1/E2 frame on 0xFF02.
|
|
13
17
|
*/
|
|
14
18
|
export declare class BC01Device extends BTManagedDevice<IntegratedDevices.BC01> {
|
|
15
19
|
protected onStreamStart: () => void;
|
|
16
20
|
protected mainServices: IService[];
|
|
17
21
|
/**
|
|
18
22
|
* 90 s covers the maximum firmware-side reagent-pad settle time on a URS-7
|
|
19
|
-
* strip
|
|
20
|
-
*
|
|
23
|
+
* strip and leaves headroom for a bulk memory dump of every stored record.
|
|
24
|
+
* If the device does not push a frame within that window the data processor
|
|
25
|
+
* times out and the driver surfaces "device unreachable".
|
|
21
26
|
*/
|
|
22
27
|
protected stuckDataTimeout: number;
|
|
28
|
+
constructor(device: Device, params: CreateDeviceParams<IntegratedDevices.BC01>);
|
|
29
|
+
/**
|
|
30
|
+
* Returns true once the notification buffer holds a complete BC401 frame,
|
|
31
|
+
* classified by its opening opcode. Anything else — a heartbeat opcode we
|
|
32
|
+
* do not recognise, or a partial buffer — is held back until enough bytes
|
|
33
|
+
* arrive to make sense of it. There is no aa55 header on this hardware.
|
|
34
|
+
*/
|
|
23
35
|
protected validatePackage: (pkg: string[]) => boolean;
|
|
24
|
-
protected handleSuccessResult(successResult: MeasurementWithCaseType<MeasurementTypeForDevices<[IntegratedDevices.BC01]>>): void | boolean;
|
|
25
|
-
private handleUrinalysisResult;
|
|
26
36
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
37
|
+
* The parsing model declares every E1/E2 frame as `DEPENDENT`, so this hook
|
|
38
|
+
* runs for each record. We decode the raw bytes here — the packed 3-bits-per
|
|
39
|
+
* -pad layout is not expressible in the declaration parser — and report the
|
|
40
|
+
* reading directly through `onResult`. The frame is then handed back as
|
|
41
|
+
* `OTHER` so the state machine does not report it a second time and does
|
|
42
|
+
* not dedupe consecutive records that happen to share the same opcode.
|
|
43
|
+
*/
|
|
44
|
+
protected handleDependentResult: (data: DependentResultHandlerParams<MeasurementTypeForDevices<[IntegratedDevices.BC01]>>) => DependentResultHandlerParams<MeasurementTypeForDevices<[IntegratedDevices.BC01]>>;
|
|
45
|
+
/**
|
|
46
|
+
* Nothing to do here for the BC401. Every reading arrives through the
|
|
47
|
+
* dependent-result path, and the state machine sees only the `OTHER`-typed
|
|
48
|
+
* echo we return from `handleDependentResult`.
|
|
30
49
|
*/
|
|
31
|
-
|
|
50
|
+
protected handleSuccessResult(): void | boolean;
|
|
51
|
+
private reportUrsRecord;
|
|
32
52
|
}
|
|
33
53
|
//# sourceMappingURL=bc01.device.d.ts.map
|
package/lib/typescript/commonjs/src/modules/bt-management/services/devices/bc01/bc01.device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bc01.device.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.device.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmBvD;;;;;;;;;GASG;AACH,qBAAa,UAAW,SAAQ,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;IACrE,SAAS,CAAC,aAAa,EAAE,MAAM,IAAI,CAAY;IAE/C,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAoB;IAEtD;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,SAAU;gBAExB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAqB9E;;;;;OAKG;IACH,SAAS,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAanD;IAEF;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,GAC7B,MAAM,4BAA4B,CAChC,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,KACA,4BAA4B,CAC7B,yBAAyB,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACpD,CASC;IAEF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI,GAAG,OAAO;IAI/C,OAAO,CAAC,eAAe;CAqCxB"}
|
|
@@ -2,26 +2,20 @@ import { IService } from "../../../types/service.type";
|
|
|
2
2
|
/**
|
|
3
3
|
* Contec BC401 (a.k.a. BC01) urine analyzer — GATT profile.
|
|
4
4
|
*
|
|
5
|
-
* The BC401 uses Contec's proprietary FF12 service, shared across their
|
|
6
|
-
* medical devices.
|
|
7
|
-
*
|
|
5
|
+
* The BC401 uses Contec's proprietary FF12 service, shared across their
|
|
6
|
+
* consumer medical devices. Every stored URS-7 measurement is pushed as a
|
|
7
|
+
* 16-byte record on 0xFF02 after the host has walked the handshake documented
|
|
8
|
+
* in `bc01-command-sequencer.ts`.
|
|
8
9
|
*
|
|
9
10
|
* Service 0xFF12
|
|
10
|
-
* Notify (result)
|
|
11
|
-
* Write (command)
|
|
11
|
+
* Notify (result) 0xFF02 — CCCD 0x2902 must be written 01 00 to enable
|
|
12
|
+
* Write (command) 0xFF01 — RESET / SET_TIME / GET_COUNT / GET_RECORDS
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* [5..15] values one byte per analyte, encoding the discrete
|
|
19
|
-
* level index into diagnosticResults[key]
|
|
20
|
-
* [16] checksum xor over [2..15]
|
|
21
|
-
*
|
|
22
|
-
* Byte positions calibrated against PHMS 3.0.03 Android app; older firmware
|
|
23
|
-
* (< 1.2.x) uses a different command byte and is not supported by this driver
|
|
24
|
-
* (the validator will reject those frames).
|
|
14
|
+
* On the wire a stored URS record opens with 0xE1 (single) or 0xE2 (paginated).
|
|
15
|
+
* The remaining fifteen bytes carry the flags nibble, timestamp, seven bytes of
|
|
16
|
+
* packed 3-bit analyte indices, and a checksum. `bc01-frame-parser.ts` decodes
|
|
17
|
+
* them; this file just declares the GATT surface and hands every E1/E2 frame
|
|
18
|
+
* to the driver's dependent-result path so the parser can run.
|
|
25
19
|
*/
|
|
26
20
|
export declare const bc01MainServices: IService[];
|
|
27
21
|
//# sourceMappingURL=bc01.main-services.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD
|
|
1
|
+
{"version":3,"file":"bc01.main-services.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/bc01/bc01.main-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB,EAAE,QAAQ,EAgDtC,CAAC"}
|
package/lib/typescript/commonjs/src/modules/bt-management/services/devices/boso/boso.medicus.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CustomDeviceDefinition } from "../../../types/custom-device-definition";
|
|
2
|
+
/**
|
|
3
|
+
* The boso medicus system uses the Bluetooth SIG Blood Pressure Service and Measurement
|
|
4
|
+
* characteristic. Its vendor-specific identity is the advertised name, which carries a
|
|
5
|
+
* six-character hexadecimal suffix, for example `boso medicus 312B5D`.
|
|
6
|
+
*/
|
|
7
|
+
declare const BOSO_MEDICUS_NAME_MATCH: RegExp;
|
|
8
|
+
interface BosoMedicusParams {
|
|
9
|
+
/** Reported back as deviceData.name for the registered declaration. */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Overrides the documented name matcher for firmware or test fixtures. */
|
|
12
|
+
nameMatch?: string | RegExp;
|
|
13
|
+
/** Overrides the default settle time for a slower monitor. */
|
|
14
|
+
stuckDataTimeoutMs?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Declares a boso medicus system monitor.
|
|
18
|
+
*
|
|
19
|
+
* The monitor stores readings and sends them through the standard 0x1810/0x2A35 profile after
|
|
20
|
+
* pairing. The shared profile declaration handles mmHg, optional timestamps, pulse rate and
|
|
21
|
+
* the profile's user/status bytes without inventing a boso-specific wire format.
|
|
22
|
+
*/
|
|
23
|
+
declare const bosoMedicusMonitor: (params: BosoMedicusParams) => CustomDeviceDefinition;
|
|
24
|
+
export { BOSO_MEDICUS_NAME_MATCH, bosoMedicusMonitor };
|
|
25
|
+
export type { BosoMedicusParams };
|
|
26
|
+
//# sourceMappingURL=boso.medicus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boso.medicus.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/boso/boso.medicus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF;;;;GAIG;AACH,QAAA,MAAM,uBAAuB,QAAgC,CAAC;AAE9D,UAAU,iBAAiB;IAEzB,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IAEX,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,QAAA,MAAM,kBAAkB,GACtB,QAAQ,iBAAiB,KACxB,sBAOC,CAAC;AAEL,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,30 +1,5 @@
|
|
|
1
1
|
import { CustomDeviceDefinition } from "../../../types/custom-device-definition";
|
|
2
2
|
import { StandardDeviceParams } from "./standard-gatt.profile";
|
|
3
|
-
/**
|
|
4
|
-
* Declarations for the Bluetooth SIG vital-signs profiles.
|
|
5
|
-
*
|
|
6
|
-
* These are the profiles a compliant patient device implements, and their layouts come from
|
|
7
|
-
* the public specification rather than from reading a vendor's app, so they can be written
|
|
8
|
-
* down exactly instead of inferred.
|
|
9
|
-
*
|
|
10
|
-
* The advertised name stays the caller's, because the SDK matches a scan result by name and
|
|
11
|
-
* every vendor names its hardware differently. A product declares the profile and supplies
|
|
12
|
-
* the name its own hardware advertises.
|
|
13
|
-
*
|
|
14
|
-
* Values are little-endian, as the specification requires. Only the layouts using each
|
|
15
|
-
* catalog's canonical unit are declared: a device reporting kPa, Fahrenheit or pounds needs
|
|
16
|
-
* a conversion a declaration cannot express, and leaving those flag values undeclared means
|
|
17
|
-
* such a device yields no reading rather than one that is quietly wrong.
|
|
18
|
-
*/
|
|
19
|
-
/**
|
|
20
|
-
* Blood Pressure Service 0x1810, Blood Pressure Measurement 0x2A35.
|
|
21
|
-
*
|
|
22
|
-
* The pressures sit at bytes 1-4 whatever the flags say. The pulse rate sits behind two of
|
|
23
|
-
* them: bit 1 puts a seven-byte timestamp in front of it and bit 2 says whether it is there
|
|
24
|
-
* at all, so it is read at byte 7 in one shape and byte 14 in the other, and each shape
|
|
25
|
-
* declares the length it needs. A device that reports no pulse still decodes, because the
|
|
26
|
-
* flags value it sends selects a case that never looks for one.
|
|
27
|
-
*/
|
|
28
3
|
declare const standardBloodPressureDevice: (params: StandardDeviceParams) => CustomDeviceDefinition;
|
|
29
4
|
/** Health Thermometer Service 0x1809, Temperature Measurement 0x2A1C. */
|
|
30
5
|
declare const standardThermometerDevice: (params: StandardDeviceParams) => CustomDeviceDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standard-gatt.devices.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAGL,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"standard-gatt.devices.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/standard-gatt/standard-gatt.devices.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF,OAAO,EAGL,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AA2CjC,QAAA,MAAM,2BAA2B,GAC/B,QAAQ,oBAAoB,KAC3B,sBAwCC,CAAC;AAEL,yEAAyE;AACzE,QAAA,MAAM,yBAAyB,GAC7B,QAAQ,oBAAoB,KAC3B,sBAUC,CAAC;AAKL;;;;GAIG;AACH,QAAA,MAAM,yBAAyB,GAC7B,QAAQ,oBAAoB,KAC3B,sBAgBC,CAAC;AAEL;;;;;GAKG;AACH,QAAA,MAAM,2BAA2B,GAC/B,QAAQ,oBAAoB,KAC3B,sBAWC,CAAC;AAEL;;;;;;GAMG;AACH,QAAA,MAAM,uBAAuB,GAC3B,QAAQ,oBAAoB,KAC3B,sBAUC,CAAC;AAEL,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,GAC1B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CustomDeviceDefinition } from "../../../types/custom-device-definition";
|
|
2
|
+
/** The product name used by the visomat comfort soft BT monitor while advertising. */
|
|
3
|
+
declare const VISOMAT_COMFORT_SOFT_BT_NAME_MATCH: RegExp;
|
|
4
|
+
interface VisomatComfortSoftBtParams {
|
|
5
|
+
/** Reported back as deviceData.name for the registered declaration. */
|
|
6
|
+
id: string;
|
|
7
|
+
/** Overrides the product-name matcher for firmware variants or test fixtures. */
|
|
8
|
+
nameMatch?: string | RegExp;
|
|
9
|
+
/** Overrides the default settle time for a slower monitor. */
|
|
10
|
+
stuckDataTimeoutMs?: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Declares the visomat comfort soft BT upper-arm monitor.
|
|
14
|
+
*
|
|
15
|
+
* The monitor uses the Bluetooth SIG Blood Pressure Service and Measurement characteristic,
|
|
16
|
+
* so the shared profile handles the 0x2A35 measurement without a vendor-specific command or
|
|
17
|
+
* pairing flow.
|
|
18
|
+
*/
|
|
19
|
+
declare const visomatComfortSoftBtMonitor: (params: VisomatComfortSoftBtParams) => CustomDeviceDefinition;
|
|
20
|
+
export { VISOMAT_COMFORT_SOFT_BT_NAME_MATCH, visomatComfortSoftBtMonitor, };
|
|
21
|
+
export type { VisomatComfortSoftBtParams };
|
|
22
|
+
//# sourceMappingURL=visomat.comfort-soft-bt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visomat.comfort-soft-bt.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/modules/bt-management/services/devices/uebe/visomat.comfort-soft-bt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAGjF,sFAAsF;AACtF,QAAA,MAAM,kCAAkC,QAAqC,CAAC;AAE9E,UAAU,0BAA0B;IAElC,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IAEX,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE5B,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,QAAA,MAAM,2BAA2B,GAC/B,QAAQ,0BAA0B,KACjC,sBAOC,CAAC;AAEL,OAAO,EACL,kCAAkC,EAClC,2BAA2B,GAC5B,CAAC;AACF,YAAY,EAAE,0BAA0B,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"btdevice-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/components/btdevice-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMjE,eAAO,MAAM,YAAY,GAAI,yBAAyB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"btdevice-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/components/btdevice-list.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAMjE,eAAO,MAAM,YAAY,GAAI,yBAAyB,iBAAiB,sBAkDtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-device/components/item/status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../../../../../../src/modules/bt-device/components/item/status.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAQ,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,eAAe,EAAE,sBAG/C,uBAAuB,CAAC,CAAC,CAAC,sBAmC5B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { SupportedDeviceListProps } from "../types/supported-device-list-props";
|
|
3
|
+
export declare const SupportedDeviceList: ({ renderItem, contentContainerStyle, ...props }: SupportedDeviceListProps) => React.JSX.Element;
|
|
4
|
+
//# sourceMappingURL=supported-device-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-device-list.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/components/supported-device-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAIhF,eAAO,MAAM,mBAAmB,GAAI,iDAIjC,wBAAwB,sBAkD1B,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export type SupportedDevice = {
|
|
2
|
+
name: string;
|
|
3
|
+
nameKey: string;
|
|
4
|
+
manufacturer: string;
|
|
5
|
+
manufacturerKey: string;
|
|
6
|
+
logo: string;
|
|
7
|
+
creditsForImage: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Concrete devices and device families supported by the Bluetooth module.
|
|
11
|
+
*
|
|
12
|
+
* The standard Bluetooth SIG entries are included because the SDK exposes factories for
|
|
13
|
+
* those profiles; the application supplies the advertised device name when registering one.
|
|
14
|
+
* Every entry has an image value. Existing product assets are reused where available, while
|
|
15
|
+
* official manufacturer and standards-organization images cover the remaining entries.
|
|
16
|
+
*/
|
|
17
|
+
export declare const Devices: readonly [{
|
|
18
|
+
readonly name: "Viatom BP2";
|
|
19
|
+
readonly nameKey: "devices.catalog.viatom-bp2.name";
|
|
20
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
21
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
22
|
+
readonly logo: string;
|
|
23
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
24
|
+
}, {
|
|
25
|
+
readonly name: "Viatom F4 / Lescale";
|
|
26
|
+
readonly nameKey: "devices.catalog.viatom-f4-lescale.name";
|
|
27
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
28
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
29
|
+
readonly logo: string;
|
|
30
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
31
|
+
}, {
|
|
32
|
+
readonly name: "Viatom OxySmart / PC60WF";
|
|
33
|
+
readonly nameKey: "devices.catalog.viatom-oxysmart-pc60wf.name";
|
|
34
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
35
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
36
|
+
readonly logo: string;
|
|
37
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
38
|
+
}, {
|
|
39
|
+
readonly name: "Contec BC401 / BC01";
|
|
40
|
+
readonly nameKey: "devices.catalog.contec-bc401-bc01.name";
|
|
41
|
+
readonly manufacturer: "Contec Medical Systems";
|
|
42
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.contec";
|
|
43
|
+
readonly logo: string;
|
|
44
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
45
|
+
}, {
|
|
46
|
+
readonly name: "Veroval duo control";
|
|
47
|
+
readonly nameKey: "devices.catalog.veroval-duo-control.name";
|
|
48
|
+
readonly manufacturer: "HARTMANN";
|
|
49
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
|
|
50
|
+
readonly logo: "https://img.hartmann.info/cdn-cgi/image/width%3D412%2Cheight%3D412%2Cquality%3D95%2Cfit%3Dcrop%2Cgravity%3Dauto/product/44853_4K.jpg";
|
|
51
|
+
readonly creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en-za/products/diagnostics/blood-pressure-monitors/upper-arm-products/veroval%C2%AE-duo-control";
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "Veroval ECG";
|
|
54
|
+
readonly nameKey: "devices.catalog.veroval-ecg.name";
|
|
55
|
+
readonly manufacturer: "HARTMANN";
|
|
56
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
|
|
57
|
+
readonly logo: "https://img.hartmann.info/cdn-cgi/image/width%3D412%2Cheight%3D412%2Cquality%3D95%2Cfit%3Dcrop%2Cgravity%3Dauto/product/46955_4K.jpg";
|
|
58
|
+
readonly creditsForImage: "HARTMANN official product image: https://www.hartmann.info/es-es/productos/monitorizaci%C3%B3n/electrocardiograma/veroval%C2%AE-ecg";
|
|
59
|
+
}, {
|
|
60
|
+
readonly name: "Veroval compact+ BPU26";
|
|
61
|
+
readonly nameKey: "devices.catalog.veroval-compact-bpu26.name";
|
|
62
|
+
readonly manufacturer: "HARTMANN";
|
|
63
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
|
|
64
|
+
readonly logo: "https://cdn.hartmann.info/product/40938_43.jpg";
|
|
65
|
+
readonly creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnostics/blood-pressure-monitors/upper-arm-products/veroval%C2%AE-compact-%2C-pl-%2C-upper-arm-blood-pressure-monitor";
|
|
66
|
+
}, {
|
|
67
|
+
readonly name: "Veroval compact+ BPW26";
|
|
68
|
+
readonly nameKey: "devices.catalog.veroval-compact-bpw26.name";
|
|
69
|
+
readonly manufacturer: "HARTMANN";
|
|
70
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.hartmann";
|
|
71
|
+
readonly logo: "https://cdn.hartmann.info/product/40385_43.jpg";
|
|
72
|
+
readonly creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnostics/blood-pressure-monitors/wrist-products/veroval%C2%AE-compact-%2C-pl-%2C-wrist-blood-pressure-monitor";
|
|
73
|
+
}, {
|
|
74
|
+
readonly name: "boso medicus system";
|
|
75
|
+
readonly nameKey: "devices.catalog.boso-medicus-system.name";
|
|
76
|
+
readonly manufacturer: "BOSCH + SOHN GmbH u. Co. KG";
|
|
77
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.boso";
|
|
78
|
+
readonly logo: "https://www.boso.de/fileadmin/_processed_/0/b/csm_medicus_system_1019_9ce057ffcc.png";
|
|
79
|
+
readonly creditsForImage: "boso official product image: https://www.boso.de/en/products-for-home-users/blood-pressure-instruments/boso-medicus-system";
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "visomat comfort soft BT";
|
|
82
|
+
readonly nameKey: "devices.catalog.visomat-comfort-soft-bt.name";
|
|
83
|
+
readonly manufacturer: "UEBE Medical GmbH";
|
|
84
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.uebe";
|
|
85
|
+
readonly logo: "https://www.visomat.de/wp-content/uploads/2023/10/prd_slider_comfort-soft-BT.jpg";
|
|
86
|
+
readonly creditsForImage: "visomat official product image: https://www.visomat.de/produkte/comfort-soft-bt/";
|
|
87
|
+
}, {
|
|
88
|
+
readonly name: "AOJ-20A";
|
|
89
|
+
readonly nameKey: "devices.catalog.aoj-20a.name";
|
|
90
|
+
readonly manufacturer: "AOJ Medical";
|
|
91
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.aoj";
|
|
92
|
+
readonly logo: string;
|
|
93
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
94
|
+
}, {
|
|
95
|
+
readonly name: "Viatom BP2A / BP2T / BP2W";
|
|
96
|
+
readonly nameKey: "devices.catalog.viatom-bp2-family.name";
|
|
97
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
98
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
99
|
+
readonly logo: string;
|
|
100
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
101
|
+
}, {
|
|
102
|
+
readonly name: "Viatom BP3 series";
|
|
103
|
+
readonly nameKey: "devices.catalog.viatom-bp3-series.name";
|
|
104
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
105
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
106
|
+
readonly logo: string;
|
|
107
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "Viatom O2Ring / Oxyfit / KidsO2 / BabyO2";
|
|
110
|
+
readonly nameKey: "devices.catalog.viatom-oximeters.name";
|
|
111
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
112
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
113
|
+
readonly logo: string;
|
|
114
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
115
|
+
}, {
|
|
116
|
+
readonly name: "Viatom ER1 / ER2 / ER3";
|
|
117
|
+
readonly nameKey: "devices.catalog.viatom-er-family.name";
|
|
118
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
119
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
120
|
+
readonly logo: string;
|
|
121
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
122
|
+
}, {
|
|
123
|
+
readonly name: "Viatom Lepod / LepodPro";
|
|
124
|
+
readonly nameKey: "devices.catalog.viatom-lepod-family.name";
|
|
125
|
+
readonly manufacturer: "Viatom (Lepu Medical)";
|
|
126
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.viatom";
|
|
127
|
+
readonly logo: string;
|
|
128
|
+
readonly creditsForImage: "OVOK Mobile SDK bundled image asset: src/modules/bt-device/constants/device-images.ts";
|
|
129
|
+
}, {
|
|
130
|
+
readonly name: "Bluetooth SIG blood-pressure devices";
|
|
131
|
+
readonly nameKey: "devices.catalog.bluetooth-sig.blood-pressure.name";
|
|
132
|
+
readonly manufacturer: "Any compliant manufacturer";
|
|
133
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.any-compliant";
|
|
134
|
+
readonly logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ibG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzYwIDE0NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA4MmZjOwogICAgICB9CgogICAgICAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8ZyBpZD0iQmx1ZXRvb3RoIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTk0LjE3LDc1LjE5aDMuMjZjNi4wMiwwLDguMywzLjAxLDguMyw5LjAzcy0xLjk1LDkuMDMtNy4zMiw5LjAzaC00LjIzdi0xOC4wN2gwWk05NC4xNyw1MS4xaDMuODNjNC40OCwwLDYuNTksMi44NSw2LjU5LDguMywwLDQuODgtMi45Myw3LjQ5LTYuNzUsNy40OWgtMy42NnYtMTUuNzloMFpNODQuMDgsMTAxLjU2aDE1Ljk1YzExLjQ3LDAsMTUuNzktNy4zMiwxNS43OS0xNy4wMSwwLTcuNTctMy4wMS0xMS42NC04LjE0LTEzLjkyLDQuODgtMS45NSw3LTcuMjQsNy0xMi4yOSwwLTEwLjAxLTQuOC0xNS41NC0xNS42My0xNS41NGgtMTQuOTd2NTguNzZoMFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTI4LjkyIDEwMS41NiAxMjguOTIgNDIuOCAxMTkuODEgNDIuOCAxMTkuODEgMTAxLjU2IDEyOC45MiAxMDEuNTYgMTI4LjkyIDEwMS41NiIvPgogICAgPHBhdGggZD0iTTE1My4zMyw1Ny43N3YzNC4zNGMtMi4xMiwxLjU1LTMuOTEsMi43Ny01Ljg2LDIuNzdzLTMuMjYtLjk4LTMuMjYtMy4xN3YtMzMuOTRoLTkuMTF2MzUuNGMwLDUuNywyLjg1LDkuMiw3LjY1LDkuMiw1LjI5LDAsNy4yNC0xLjk1LDExLjA3LTUuMjF2NC4zOWg4LjYzdi00My43OGgtOS4xMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3Ny4xNiw3My44OXYtMi4yOGMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djIuMjhoLTEwLjA5Wk0xOTYuMzcsNzMuMjRjMC05LjYtMy43NC0xNi4yOC0xNC4xNi0xNi4yOHMtMTQuMTYsNi42Ny0xNC4xNiwxNi4yOHYxMi44NmMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LTYuMzUsMTQtMTUuNjNoLTkuMTF2Ljk4YzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di02LjM1aDE5LjIxdi04LjE0aDBaIi8+CiAgICA8cGF0aCBkPSJNMzUzLjg4LDQ5LjA5YzAsMy40OC0yLjk2LDYuNDEtNi40NCw2LjQxcy02LjQxLTIuODEtNi40MS02LjQxLDIuODctNi40MSw2LjQxLTYuNDEsNi40NCwyLjc4LDYuNDQsNi40MVpNMzQyLjQ2LDQ5LjAzYzAsMi43NSwyLjIzLDUuMTMsNC45OCw1LjEzczQuOTgtMi4yNiw0Ljk4LTUuMDEtMi4yLTUuMTMtNC45OC01LjEzLTQuOTgsMi4yNi00Ljk4LDUuMDFaTTM0OC42Myw1Mi41N2wtMS45NS0zLjExaC0uMDl2My4xMWgtMS4yMnYtNy4wNWgyLjE0YzEuNjgsMCwyLjM1LjcsMi4zNSwxLjc3LDAsMS4xOS0uNzMsMS45Mi0xLjg2LDIuMDUuMTUuMTguNDMuNTguNywxLjAxbDEuNDYsMi4yM2gtMS41M1pNMzQ3LjM4LDQ2LjVoLS43OXYyLjE3aC40OWMxLjEzLDAsMS41LS42NCwxLjUtMS4yMiwwLS42Ny0uMy0uOTUtMS4xOS0uOTVaIi8+CiAgICA8cGF0aCBkPSJNMjA0LjQxLDY1LjI2djI3LjI2YzAsNi42NywzLjgyLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjExdjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQyLjY0LDg3LjcyYzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di0xNi4xMWMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djE2LjExaDBaTTIyMy40Myw4Ni4wOWMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LjE2LTYuNjcsMTQuMTYtMTYuMjh2LTEyLjg2YzAtOS42LTMuNzQtMTYuMjgtMTQuMTYtMTYuMjhzLTE0LjE2LDYuNjctMTQuMTYsMTYuMjh2MTIuODZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI3NS43NCw4Ny43MmMwLDUuMDUtMS43OSw3LjE2LTUuMDUsNy4xNnMtNS4wNS0yLjEyLTUuMDUtNy4xNnYtMTYuMTFjMC01LjA1LDEuNzktNy4xNiw1LjA1LTcuMTZzNS4wNSwyLjEyLDUuMDUsNy4xNnYxNi4xMWgwWk0yNTYuNTQsODYuMDljMCw5LjYsMy43NCwxNi4yOCwxNC4xNiwxNi4yOHMxNC4xNi02LjY3LDE0LjE2LTE2LjI4di0xMi44NmMwLTkuNi0zLjc0LTE2LjI4LTE0LjE2LTE2LjI4cy0xNC4xNiw2LjY3LTE0LjE2LDE2LjI4djEyLjg2aDBaIi8+CiAgICA8cGF0aCBkPSJNMjkyLjY1LDY1LjI2djI3LjI2YzAsNi42NywzLjgzLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjEydjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggZD0iTTMyMi42NiwxMDEuNTZ2LTM0LjM0YzIuMTItMS41NSwzLjkxLTIuNzcsNS44Ni0yLjc3czMuMjYuOTgsMy4yNiwzLjE3djMzLjk0aDkuMTF2LTM1LjRjMC01LjctMi44NS05LjItNy42NS05LjItNS4yOSwwLTcuMjQsMS45NS0xMC41OCw0Ljg4di0xOS4wNGgtOS4xMnY1OC43Nmg5LjEyWiIvPgogIDwvZz4KICA8ZyBpZD0iQnVnIj4KICAgIDxlbGxpcHNlIGNsYXNzPSJjbHMtMSIgY3g9IjM4LjQxIiBjeT0iNzEuNzgiIHJ4PSIyNC4zMSIgcnk9IjQwLjIyIi8+CiAgICA8cGF0aCBpZD0iQnVnLTIiIGRhdGEtbmFtZT0iQnVnIiBjbGFzcz0iY2xzLTIiIGQ9Ik00MS44Miw1MC42MWw3LjA0LDcuMDQtNy4wMyw3LjAzdi0xNC4wN2gwWk00MS44Miw5My43MWw3LjA0LTcuMDQtNy4wMy03LjAzdjE0LjA3aDBaTTM0LjMxLDcyLjE2bC0xNS4yMi0xNS4yNiw0LjQxLTQuNDEsMTIuMTMsMTIuMTN2LTI5LjA2bDIyLjA1LDIyLjA1LTE0LjU2LDE0LjU2LDE0LjU2LDE0LjU2LTIyLjA1LDIyLjA1di0yOS4wNmwtMTIuMTMsMTIuMTMtNC40MS00LjQxLDE1LjIyLTE1LjI2aDBaTTM4LjM5LDExNC43M2MxOC41OSwwLDMxLjQtOC44MywzMS40LTQyLjU3cy0xMi44MS00Mi41Ny0zMS40LTM0LjU3UzYuOTgsMzguNDIsNi45OCw3Mi4xNnMxMi44Miw0Mi41NywzMS40MSw0Mi41N2gwWiIvPgogIDwvZz4KPC9zdmc+";
|
|
135
|
+
readonly creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
|
|
136
|
+
}, {
|
|
137
|
+
readonly name: "Bluetooth SIG thermometers";
|
|
138
|
+
readonly nameKey: "devices.catalog.bluetooth-sig.thermometers.name";
|
|
139
|
+
readonly manufacturer: "Any compliant manufacturer";
|
|
140
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.any-compliant";
|
|
141
|
+
readonly logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ibG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzYwIDE0NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA4MmZjOwogICAgICB9CgogICAgICAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8ZyBpZD0iQmx1ZXRvb3RoIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTk0LjE3LDc1LjE5aDMuMjZjNi4wMiwwLDguMywzLjAxLDguMyw5LjAzcy0xLjk1LDkuMDMtNy4zMiw5LjAzaC00LjIzdi0xOC4wN2gwWk05NC4xNyw1MS4xaDMuODNjNC40OCwwLDYuNTksMi44NSw2LjU5LDguMywwLDQuODgtMi45Myw3LjQ5LTYuNzUsNy40OWgtMy42NnYtMTUuNzloMFpNODQuMDgsMTAxLjU2aDE1Ljk1YzExLjQ3LDAsMTUuNzktNy4zMiwxNS43OS0xNy4wMSwwLTcuNTctMy4wMS0xMS42NC04LjE0LTEzLjkyLDQuODgtMS45NSw3LTcuMjQsNy0xMi4yOSwwLTEwLjAxLTQuOC0xNS41NC0xNS42My0xNS41NGgtMTQuOTd2NTguNzZoMFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTI4LjkyIDEwMS41NiAxMjguOTIgNDIuOCAxMTkuODEgNDIuOCAxMTkuODEgMTAxLjU2IDEyOC45MiAxMDEuNTYgMTI4LjkyIDEwMS41NiIvPgogICAgPHBhdGggZD0iTTE1My4zMyw1Ny43N3YzNC4zNGMtMi4xMiwxLjU1LTMuOTEsMi43Ny01Ljg2LDIuNzdzLTMuMjYtLjk4LTMuMjYtMy4xN3YtMzMuOTRoLTkuMTF2MzUuNGMwLDUuNywyLjg1LDkuMiw3LjY1LDkuMiw1LjI5LDAsNy4yNC0xLjk1LDExLjA3LTUuMjF2NC4zOWg4LjYzdi00My43OGgtOS4xMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3Ny4xNiw3My44OXYtMi4yOGMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djIuMjhoLTEwLjA5Wk0xOTYuMzcsNzMuMjRjMC05LjYtMy43NC0xNi4yOC0xNC4xNi0xNi4yOHMtMTQuMTYsNi42Ny0xNC4xNiwxNi4yOHYxMi44NmMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LTYuMzUsMTQtMTUuNjNoLTkuMTF2Ljk4YzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di02LjM1aDE5LjIxdi04LjE0aDBaIi8+CiAgICA8cGF0aCBkPSJNMzUzLjg4LDQ5LjA5YzAsMy40OC0yLjk2LDYuNDEtNi40NCw2LjQxcy02LjQxLTIuODEtNi40MS02LjQxLDIuODctNi40MSw2LjQxLTYuNDEsNi40NCwyLjc4LDYuNDQsNi40MVpNMzQyLjQ2LDQ5LjAzYzAsMi43NSwyLjIzLDUuMTMsNC45OCw1LjEzczQuOTgtMi4yNiw0Ljk4LTUuMDEtMi4yLTUuMTMtNC45OC01LjEzLTQuOTgsMi4yNi00Ljk4LDUuMDFaTTM0OC42Myw1Mi41N2wtMS45NS0zLjExaC0uMDl2My4xMWgtMS4yMnYtNy4wNWgyLjE0YzEuNjgsMCwyLjM1LjcsMi4zNSwxLjc3LDAsMS4xOS0uNzMsMS45Mi0xLjg2LDIuMDUuMTUuMTguNDMuNTguNywxLjAxbDEuNDYsMi4yM2gtMS41M1pNMzQ3LjM4LDQ2LjVoLS43OXYyLjE3aC40OWMxLjEzLDAsMS41LS42NCwxLjUtMS4yMiwwLS42Ny0uMy0uOTUtMS4xOS0uOTVaIi8+CiAgICA8cGF0aCBkPSJNMjA0LjQxLDY1LjI2djI3LjI2YzAsNi42NywzLjgyLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjExdjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQyLjY0LDg3LjcyYzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di0xNi4xMWMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djE2LjExaDBaTTIyMy40Myw4Ni4wOWMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LjE2LTYuNjcsMTQuMTYtMTYuMjh2LTEyLjg2YzAtOS42LTMuNzQtMTYuMjgtMTQuMTYtMTYuMjhzLTE0LjE2LDYuNjctMTQuMTYsMTYuMjh2MTIuODZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI3NS43NCw4Ny43MmMwLDUuMDUtMS43OSw3LjE2LTUuMDUsNy4xNnMtNS4wNS0yLjEyLTUuMDUtNy4xNnYtMTYuMTFjMC01LjA1LDEuNzktNy4xNiw1LjA1LTcuMTZzNS4wNSwyLjEyLDUuMDUsNy4xNnYxNi4xMWgwWk0yNTYuNTQsODYuMDljMCw5LjYsMy43NCwxNi4yOCwxNC4xNiwxNi4yOHMxNC4xNi02LjY3LDE0LjE2LTE2LjI4di0xMi44NmMwLTkuNi0zLjc0LTE2LjI4LTE0LjE2LTE2LjI4cy0xNC4xNiw2LjY3LTE0LjE2LDE2LjI4djEyLjg2aDBaIi8+CiAgICA8cGF0aCBkPSJNMjkyLjY1LDY1LjI2djI3LjI2YzAsNi42NywzLjgzLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjEydjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggZD0iTTMyMi42NiwxMDEuNTZ2LTM0LjM0YzIuMTItMS41NSwzLjkxLTIuNzcsNS44Ni0yLjc3czMuMjYuOTgsMy4yNiwzLjE3djMzLjk0aDkuMTF2LTM1LjRjMC01LjctMi44NS05LjItNy42NS05LjItNS4yOSwwLTcuMjQsMS45NS0xMC41OCw0Ljg4di0xOS4wNGgtOS4xMnY1OC43Nmg5LjEyWiIvPgogIDwvZz4KICA8ZyBpZD0iQnVnIj4KICAgIDxlbGxpcHNlIGNsYXNzPSJjbHMtMSIgY3g9IjM4LjQxIiBjeT0iNzEuNzgiIHJ4PSIyNC4zMSIgcnk9IjQwLjIyIi8+CiAgICA8cGF0aCBpZD0iQnVnLTIiIGRhdGEtbmFtZT0iQnVnIiBjbGFzcz0iY2xzLTIiIGQ9Ik00MS44Miw1MC42MWw3LjA0LDcuMDQtNy4wMyw3LjAzdi0xNC4wN2gwWk00MS44Miw5My43MWw3LjA0LTcuMDQtNy4wMy03LjAzdjE0LjA3aDBaTTM0LjMxLDcyLjE2bC0xNS4yMi0xNS4yNiw0LjQxLTQuNDEsMTIuMTMsMTIuMTN2LTI5LjA2bDIyLjA1LDIyLjA1LTE0LjU2LDE0LjU2LDE0LjU2LDE0LjU2LTIyLjA1LDIyLjA1di0yOS4wNmwtMTIuMTMsMTIuMTMtNC40MS00LjQxLDE1LjIyLTE1LjI2aDBaTTM4LjM5LDExNC43M2MxOC41OSwwLDMxLjQtOC44MywzMS40LTQyLjU3cy0xMi44MS00Mi41Ny0zMS40LTM0LjU3UzYuOTgsMzguNDIsNi45OCw3Mi4xNnMxMi44Miw0Mi41NywzMS40MSw0Mi41N2gwWiIvPgogIDwvZz4KPC9zdmc+";
|
|
142
|
+
readonly creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
|
|
143
|
+
}, {
|
|
144
|
+
readonly name: "Bluetooth SIG weight scales";
|
|
145
|
+
readonly nameKey: "devices.catalog.bluetooth-sig.weight-scales.name";
|
|
146
|
+
readonly manufacturer: "Any compliant manufacturer";
|
|
147
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.any-compliant";
|
|
148
|
+
readonly logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ibG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzYwIDE0NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA4MmZjOwogICAgICB9CgogICAgICAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8ZyBpZD0iQmx1ZXRvb3RoIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTk0LjE3LDc1LjE5aDMuMjZjNi4wMiwwLDguMywzLjAxLDguMyw5LjAzcy0xLjk1LDkuMDMtNy4zMiw5LjAzaC00LjIzdi0xOC4wN2gwWk05NC4xNyw1MS4xaDMuODNjNC40OCwwLDYuNTksMi44NSw2LjU5LDguMywwLDQuODgtMi45Myw3LjQ5LTYuNzUsNy40OWgtMy42NnYtMTUuNzloMFpNODQuMDgsMTAxLjU2aDE1Ljk1YzExLjQ3LDAsMTUuNzktNy4zMiwxNS43OS0xNy4wMSwwLTcuNTctMy4wMS0xMS42NC04LjE0LTEzLjkyLDQuODgtMS45NSw3LTcuMjQsNy0xMi4yOSwwLTEwLjAxLTQuOC0xNS41NC0xNS42My0xNS41NGgtMTQuOTd2NTguNzZoMFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTI4LjkyIDEwMS41NiAxMjguOTIgNDIuOCAxMTkuODEgNDIuOCAxMTkuODEgMTAxLjU2IDEyOC45MiAxMDEuNTYgMTI4LjkyIDEwMS41NiIvPgogICAgPHBhdGggZD0iTTE1My4zMyw1Ny43N3YzNC4zNGMtMi4xMiwxLjU1LTMuOTEsMi43Ny01Ljg2LDIuNzdzLTMuMjYtLjk4LTMuMjYtMy4xN3YtMzMuOTRoLTkuMTF2MzUuNGMwLDUuNywyLjg1LDkuMiw3LjY1LDkuMiw1LjI5LDAsNy4yNC0xLjk1LDExLjA3LTUuMjF2NC4zOWg4LjYzdi00My43OGgtOS4xMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3Ny4xNiw3My44OXYtMi4yOGMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djIuMjhoLTEwLjA5Wk0xOTYuMzcsNzMuMjRjMC05LjYtMy43NC0xNi4yOC0xNC4xNi0xNi4yOHMtMTQuMTYsNi42Ny0xNC4xNiwxNi4yOHYxMi44NmMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LTYuMzUsMTQtMTUuNjNoLTkuMTF2Ljk4YzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di02LjM1aDE5LjIxdi04LjE0aDBaIi8+CiAgICA8cGF0aCBkPSJNMzUzLjg4LDQ5LjA5YzAsMy40OC0yLjk2LDYuNDEtNi40NCw2LjQxcy02LjQxLTIuODEtNi40MS02LjQxLDIuODctNi40MSw2LjQxLTYuNDEsNi40NCwyLjc4LDYuNDQsNi40MVpNMzQyLjQ2LDQ5LjAzYzAsMi43NSwyLjIzLDUuMTMsNC45OCw1LjEzczQuOTgtMi4yNiw0Ljk4LTUuMDEtMi4yLTUuMTMtNC45OC01LjEzLTQuOTgsMi4yNi00Ljk4LDUuMDFaTTM0OC42Myw1Mi41N2wtMS45NS0zLjExaC0uMDl2My4xMWgtMS4yMnYtNy4wNWgyLjE0YzEuNjgsMCwyLjM1LjcsMi4zNSwxLjc3LDAsMS4xOS0uNzMsMS45Mi0xLjg2LDIuMDUuMTUuMTguNDMuNTguNywxLjAxbDEuNDYsMi4yM2gtMS41M1pNMzQ3LjM4LDQ2LjVoLS43OXYyLjE3aC40OWMxLjEzLDAsMS41LS42NCwxLjUtMS4yMiwwLS42Ny0uMy0uOTUtMS4xOS0uOTVaIi8+CiAgICA8cGF0aCBkPSJNMjA0LjQxLDY1LjI2djI3LjI2YzAsNi42NywzLjgyLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjExdjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQyLjY0LDg3LjcyYzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di0xNi4xMWMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djE2LjExaDBaTTIyMy40Myw4Ni4wOWMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LjE2LTYuNjcsMTQuMTYtMTYuMjh2LTEyLjg2YzAtOS42LTMuNzQtMTYuMjgtMTQuMTYtMTYuMjhzLTE0LjE2LDYuNjctMTQuMTYsMTYuMjh2MTIuODZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI3NS43NCw4Ny43MmMwLDUuMDUtMS43OSw3LjE2LTUuMDUsNy4xNnMtNS4wNS0yLjEyLTUuMDUtNy4xNnYtMTYuMTFjMC01LjA1LDEuNzktNy4xNiw1LjA1LTcuMTZzNS4wNSwyLjEyLDUuMDUsNy4xNnYxNi4xMWgwWk0yNTYuNTQsODYuMDljMCw5LjYsMy43NCwxNi4yOCwxNC4xNiwxNi4yOHMxNC4xNi02LjY3LDE0LjE2LTE2LjI4di0xMi44NmMwLTkuNi0zLjc0LTE2LjI4LTE0LjE2LTE2LjI4cy0xNC4xNiw2LjY3LTE0LjE2LDE2LjI4djEyLjg2aDBaIi8+CiAgICA8cGF0aCBkPSJNMjkyLjY1LDY1LjI2djI3LjI2YzAsNi42NywzLjgzLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjEydjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggZD0iTTMyMi42NiwxMDEuNTZ2LTM0LjM0YzIuMTItMS41NSwzLjkxLTIuNzcsNS44Ni0yLjc3czMuMjYuOTgsMy4yNiwzLjE3djMzLjk0aDkuMTF2LTM1LjRjMC01LjctMi44NS05LjItNy42NS05LjItNS4yOSwwLTcuMjQsMS45NS0xMC41OCw0Ljg4di0xOS4wNGgtOS4xMnY1OC43Nmg5LjEyWiIvPgogIDwvZz4KICA8ZyBpZD0iQnVnIj4KICAgIDxlbGxpcHNlIGNsYXNzPSJjbHMtMSIgY3g9IjM4LjQxIiBjeT0iNzEuNzgiIHJ4PSIyNC4zMSIgcnk9IjQwLjIyIi8+CiAgICA8cGF0aCBpZD0iQnVnLTIiIGRhdGEtbmFtZT0iQnVnIiBjbGFzcz0iY2xzLTIiIGQ9Ik00MS44Miw1MC42MWw3LjA0LDcuMDQtNy4wMyw3LjAzdi0xNC4wN2gwWk00MS44Miw5My43MWw3LjA0LTcuMDQtNy4wMy03LjAzdjE0LjA3aDBaTTM0LjMxLDcyLjE2bC0xNS4yMi0xNS4yNiw0LjQxLTQuNDEsMTIuMTMsMTIuMTN2LTI5LjA2bDIyLjA1LDIyLjA1LTE0LjU2LDE0LjU2LDE0LjU2LDE0LjU2LTIyLjA1LDIyLjA1di0yOS4wNmwtMTIuMTMsMTIuMTMtNC40MS00LjQxLDE1LjIyLTE1LjI2aDBaTTM4LjM5LDExNC43M2MxOC41OSwwLDMxLjQtOC44MywzMS40LTQyLjU3cy0xMi44MS00Mi41Ny0zMS40LTM0LjU3UzYuOTgsMzguNDIsNi45OCw3Mi4xNnMxMi44Miw0Mi41NywzMS40MSw0Mi41N2gwWiIvPgogIDwvZz4KPC9zdmc+";
|
|
149
|
+
readonly creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
|
|
150
|
+
}, {
|
|
151
|
+
readonly name: "Bluetooth SIG pulse oximeters";
|
|
152
|
+
readonly nameKey: "devices.catalog.bluetooth-sig.pulse-oximeters.name";
|
|
153
|
+
readonly manufacturer: "Any compliant manufacturer";
|
|
154
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.any-compliant";
|
|
155
|
+
readonly logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ibG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzYwIDE0NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA4MmZjOwogICAgICB9CgogICAgICAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8ZyBpZD0iQmx1ZXRvb3RoIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTk0LjE3LDc1LjE5aDMuMjZjNi4wMiwwLDguMywzLjAxLDguMyw5LjAzcy0xLjk1LDkuMDMtNy4zMiw5LjAzaC00LjIzdi0xOC4wN2gwWk05NC4xNyw1MS4xaDMuODNjNC40OCwwLDYuNTksMi44NSw2LjU5LDguMywwLDQuODgtMi45Myw3LjQ5LTYuNzUsNy40OWgtMy42NnYtMTUuNzloMFpNODQuMDgsMTAxLjU2aDE1Ljk1YzExLjQ3LDAsMTUuNzktNy4zMiwxNS43OS0xNy4wMSwwLTcuNTctMy4wMS0xMS42NC04LjE0LTEzLjkyLDQuODgtMS45NSw3LTcuMjQsNy0xMi4yOSwwLTEwLjAxLTQuOC0xNS41NC0xNS42My0xNS41NGgtMTQuOTd2NTguNzZoMFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTI4LjkyIDEwMS41NiAxMjguOTIgNDIuOCAxMTkuODEgNDIuOCAxMTkuODEgMTAxLjU2IDEyOC45MiAxMDEuNTYgMTI4LjkyIDEwMS41NiIvPgogICAgPHBhdGggZD0iTTE1My4zMyw1Ny43N3YzNC4zNGMtMi4xMiwxLjU1LTMuOTEsMi43Ny01Ljg2LDIuNzdzLTMuMjYtLjk4LTMuMjYtMy4xN3YtMzMuOTRoLTkuMTF2MzUuNGMwLDUuNywyLjg1LDkuMiw3LjY1LDkuMiw1LjI5LDAsNy4yNC0xLjk1LDExLjA3LTUuMjF2NC4zOWg4LjYzdi00My43OGgtOS4xMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3Ny4xNiw3My44OXYtMi4yOGMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djIuMjhoLTEwLjA5Wk0xOTYuMzcsNzMuMjRjMC05LjYtMy43NC0xNi4yOC0xNC4xNi0xNi4yOHMtMTQuMTYsNi42Ny0xNC4xNiwxNi4yOHYxMi44NmMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LTYuMzUsMTQtMTUuNjNoLTkuMTF2Ljk4YzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di02LjM1aDE5LjIxdi04LjE0aDBaIi8+CiAgICA8cGF0aCBkPSJNMzUzLjg4LDQ5LjA5YzAsMy40OC0yLjk2LDYuNDEtNi40NCw2LjQxcy02LjQxLTIuODEtNi40MS02LjQxLDIuODctNi40MSw2LjQxLTYuNDEsNi40NCwyLjc4LDYuNDQsNi40MVpNMzQyLjQ2LDQ5LjAzYzAsMi43NSwyLjIzLDUuMTMsNC45OCw1LjEzczQuOTgtMi4yNiw0Ljk4LTUuMDEtMi4yLTUuMTMtNC45OC01LjEzLTQuOTgsMi4yNi00Ljk4LDUuMDFaTTM0OC42Myw1Mi41N2wtMS45NS0zLjExaC0uMDl2My4xMWgtMS4yMnYtNy4wNWgyLjE0YzEuNjgsMCwyLjM1LjcsMi4zNSwxLjc3LDAsMS4xOS0uNzMsMS45Mi0xLjg2LDIuMDUuMTUuMTguNDMuNTguNywxLjAxbDEuNDYsMi4yM2gtMS41M1pNMzQ3LjM4LDQ2LjVoLS43OXYyLjE3aC40OWMxLjEzLDAsMS41LS42NCwxLjUtMS4yMiwwLS42Ny0uMy0uOTUtMS4xOS0uOTVaIi8+CiAgICA8cGF0aCBkPSJNMjA0LjQxLDY1LjI2djI3LjI2YzAsNi42NywzLjgyLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjExdjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQyLjY0LDg3LjcyYzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di0xNi4xMWMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djE2LjExaDBaTTIyMy40Myw4Ni4wOWMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LjE2LTYuNjcsMTQuMTYtMTYuMjh2LTEyLjg2YzAtOS42LTMuNzQtMTYuMjgtMTQuMTYtMTYuMjhzLTE0LjE2LDYuNjctMTQuMTYsMTYuMjh2MTIuODZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI3NS43NCw4Ny43MmMwLDUuMDUtMS43OSw3LjE2LTUuMDUsNy4xNnMtNS4wNS0yLjEyLTUuMDUtNy4xNnYtMTYuMTFjMC01LjA1LDEuNzktNy4xNiw1LjA1LTcuMTZzNS4wNSwyLjEyLDUuMDUsNy4xNnYxNi4xMWgwWk0yNTYuNTQsODYuMDljMCw5LjYsMy43NCwxNi4yOCwxNC4xNiwxNi4yOHMxNC4xNi02LjY3LDE0LjE2LTE2LjI4di0xMi44NmMwLTkuNi0zLjc0LTE2LjI4LTE0LjE2LTE2LjI4cy0xNC4xNiw2LjY3LTE0LjE2LDE2LjI4djEyLjg2aDBaIi8+CiAgICA8cGF0aCBkPSJNMjkyLjY1LDY1LjI2djI3LjI2YzAsNi42NywzLjgzLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjEydjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggZD0iTTMyMi42NiwxMDEuNTZ2LTM0LjM0YzIuMTItMS41NSwzLjkxLTIuNzcsNS44Ni0yLjc3czMuMjYuOTgsMy4yNiwzLjE3djMzLjk0aDkuMTF2LTM1LjRjMC01LjctMi44NS05LjItNy42NS05LjItNS4yOSwwLTcuMjQsMS45NS0xMC41OCw0Ljg4di0xOS4wNGgtOS4xMnY1OC43Nmg5LjEyWiIvPgogIDwvZz4KICA8ZyBpZD0iQnVnIj4KICAgIDxlbGxpcHNlIGNsYXNzPSJjbHMtMSIgY3g9IjM4LjQxIiBjeT0iNzEuNzgiIHJ4PSIyNC4zMSIgcnk9IjQwLjIyIi8+CiAgICA8cGF0aCBpZD0iQnVnLTIiIGRhdGEtbmFtZT0iQnVnIiBjbGFzcz0iY2xzLTIiIGQ9Ik00MS44Miw1MC42MWw3LjA0LDcuMDQtNy4wMyw3LjAzdi0xNC4wN2gwWk00MS44Miw5My43MWw3LjA0LTcuMDQtNy4wMy03LjAzdjE0LjA3aDBaTTM0LjMxLDcyLjE2bC0xNS4yMi0xNS4yNiw0LjQxLTQuNDEsMTIuMTMsMTIuMTN2LTI5LjA2bDIyLjA1LDIyLjA1LTE0LjU2LDE0LjU2LDE0LjU2LDE0LjU2LTIyLjA1LDIyLjA1di0yOS4wNmwtMTIuMTMsMTIuMTMtNC40MS00LjQxLDE1LjIyLTE1LjI2aDBaTTM4LjM5LDExNC43M2MxOC41OSwwLDMxLjQtOC44MywzMS40LTQyLjU3cy0xMi44MS00Mi41Ny0zMS40LTM0LjU3UzYuOTgsMzguNDIsNi45OCw3Mi4xNnMxMi44Miw0Mi41NywzMS40MSw0Mi41N2gwWiIvPgogIDwvZz4KPC9zdmc+";
|
|
156
|
+
readonly creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
|
|
157
|
+
}, {
|
|
158
|
+
readonly name: "Bluetooth SIG heart-rate monitors";
|
|
159
|
+
readonly nameKey: "devices.catalog.bluetooth-sig.heart-rate.name";
|
|
160
|
+
readonly manufacturer: "Any compliant manufacturer";
|
|
161
|
+
readonly manufacturerKey: "devices.catalog.manufacturers.any-compliant";
|
|
162
|
+
readonly logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ibG9nbyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzYwIDE0NCI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIC5jbHMtMSB7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgfQoKICAgICAgLmNscy0yIHsKICAgICAgICBmaWxsOiAjMDA4MmZjOwogICAgICB9CgogICAgICAuY2xzLTIsIC5jbHMtMyB7CiAgICAgICAgZmlsbC1ydWxlOiBldmVub2RkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvZGVmcz4KICA8ZyBpZD0iQmx1ZXRvb3RoIj4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTk0LjE3LDc1LjE5aDMuMjZjNi4wMiwwLDguMywzLjAxLDguMyw5LjAzcy0xLjk1LDkuMDMtNy4zMiw5LjAzaC00LjIzdi0xOC4wN2gwWk05NC4xNyw1MS4xaDMuODNjNC40OCwwLDYuNTksMi44NSw2LjU5LDguMywwLDQuODgtMi45Myw3LjQ5LTYuNzUsNy40OWgtMy42NnYtMTUuNzloMFpNODQuMDgsMTAxLjU2aDE1Ljk1YzExLjQ3LDAsMTUuNzktNy4zMiwxNS43OS0xNy4wMSwwLTcuNTctMy4wMS0xMS42NC04LjE0LTEzLjkyLDQuODgtMS45NSw3LTcuMjQsNy0xMi4yOSwwLTEwLjAxLTQuOC0xNS41NC0xNS42My0xNS41NGgtMTQuOTd2NTguNzZoMFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMTI4LjkyIDEwMS41NiAxMjguOTIgNDIuOCAxMTkuODEgNDIuOCAxMTkuODEgMTAxLjU2IDEyOC45MiAxMDEuNTYgMTI4LjkyIDEwMS41NiIvPgogICAgPHBhdGggZD0iTTE1My4zMyw1Ny43N3YzNC4zNGMtMi4xMiwxLjU1LTMuOTEsMi43Ny01Ljg2LDIuNzdzLTMuMjYtLjk4LTMuMjYtMy4xN3YtMzMuOTRoLTkuMTF2MzUuNGMwLDUuNywyLjg1LDkuMiw3LjY1LDkuMiw1LjI5LDAsNy4yNC0xLjk1LDExLjA3LTUuMjF2NC4zOWg4LjYzdi00My43OGgtOS4xMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3Ny4xNiw3My44OXYtMi4yOGMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djIuMjhoLTEwLjA5Wk0xOTYuMzcsNzMuMjRjMC05LjYtMy43NC0xNi4yOC0xNC4xNi0xNi4yOHMtMTQuMTYsNi42Ny0xNC4xNiwxNi4yOHYxMi44NmMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LTYuMzUsMTQtMTUuNjNoLTkuMTF2Ljk4YzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di02LjM1aDE5LjIxdi04LjE0aDBaIi8+CiAgICA8cGF0aCBkPSJNMzUzLjg4LDQ5LjA5YzAsMy40OC0yLjk2LDYuNDEtNi40NCw2LjQxcy02LjQxLTIuODEtNi40MS02LjQxLDIuODctNi40MSw2LjQxLTYuNDEsNi40NCwyLjc4LDYuNDQsNi40MVpNMzQyLjQ2LDQ5LjAzYzAsMi43NSwyLjIzLDUuMTMsNC45OCw1LjEzczQuOTgtMi4yNiw0Ljk4LTUuMDEtMi4yLTUuMTMtNC45OC01LjEzLTQuOTgsMi4yNi00Ljk4LDUuMDFaTTM0OC42Myw1Mi41N2wtMS45NS0zLjExaC0uMDl2My4xMWgtMS4yMnYtNy4wNWgyLjE0YzEuNjgsMCwyLjM1LjcsMi4zNSwxLjc3LDAsMS4xOS0uNzMsMS45Mi0xLjg2LDIuMDUuMTUuMTguNDMuNTguNywxLjAxbDEuNDYsMi4yM2gtMS41M1pNMzQ3LjM4LDQ2LjVoLS43OXYyLjE3aC40OWMxLjEzLDAsMS41LS42NCwxLjUtMS4yMiwwLS42Ny0uMy0uOTUtMS4xOS0uOTVaIi8+CiAgICA8cGF0aCBkPSJNMjA0LjQxLDY1LjI2djI3LjI2YzAsNi42NywzLjgyLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjExdjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQyLjY0LDg3LjcyYzAsNS4wNS0xLjc5LDcuMTYtNS4wNSw3LjE2cy01LjA1LTIuMTItNS4wNS03LjE2di0xNi4xMWMwLTUuMDUsMS43OS03LjE2LDUuMDUtNy4xNnM1LjA1LDIuMTIsNS4wNSw3LjE2djE2LjExaDBaTTIyMy40Myw4Ni4wOWMwLDkuNiwzLjc0LDE2LjI4LDE0LjE2LDE2LjI4czE0LjE2LTYuNjcsMTQuMTYtMTYuMjh2LTEyLjg2YzAtOS42LTMuNzQtMTYuMjgtMTQuMTYtMTYuMjhzLTE0LjE2LDYuNjctMTQuMTYsMTYuMjh2MTIuODZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTI3NS43NCw4Ny43MmMwLDUuMDUtMS43OSw3LjE2LTUuMDUsNy4xNnMtNS4wNS0yLjEyLTUuMDUtNy4xNnYtMTYuMTFjMC01LjA1LDEuNzktNy4xNiw1LjA1LTcuMTZzNS4wNSwyLjEyLDUuMDUsNy4xNnYxNi4xMWgwWk0yNTYuNTQsODYuMDljMCw5LjYsMy43NCwxNi4yOCwxNC4xNiwxNi4yOHMxNC4xNi02LjY3LDE0LjE2LTE2LjI4di0xMi44NmMwLTkuNi0zLjc0LTE2LjI4LTE0LjE2LTE2LjI4cy0xNC4xNiw2LjY3LTE0LjE2LDE2LjI4djEyLjg2aDBaIi8+CiAgICA8cGF0aCBkPSJNMjkyLjY1LDY1LjI2djI3LjI2YzAsNi42NywzLjgzLDkuODUsMTAuNjYsOS44NSwyLjI4LDAsMy4zNC0uMTYsNC41Ni0uNDl2LTcuODFoLTMuMDFjLTIuMTIsMC0zLjA5LTEuMy0zLjA5LTMuNTh2LTI1LjIzaDYuMXYtNy40OWgtNi4xdi0xMS44aC05LjEydjExLjhoLTUuMDV2Ny40OWg1LjA1WiIvPgogICAgPHBhdGggZD0iTTMyMi42NiwxMDEuNTZ2LTM0LjM0YzIuMTItMS41NSwzLjkxLTIuNzcsNS44Ni0yLjc3czMuMjYuOTgsMy4yNiwzLjE3djMzLjk0aDkuMTF2LTM1LjRjMC01LjctMi44NS05LjItNy42NS05LjItNS4yOSwwLTcuMjQsMS45NS0xMC41OCw0Ljg4di0xOS4wNGgtOS4xMnY1OC43Nmg5LjEyWiIvPgogIDwvZz4KICA8ZyBpZD0iQnVnIj4KICAgIDxlbGxpcHNlIGNsYXNzPSJjbHMtMSIgY3g9IjM4LjQxIiBjeT0iNzEuNzgiIHJ4PSIyNC4zMSIgcnk9IjQwLjIyIi8+CiAgICA8cGF0aCBpZD0iQnVnLTIiIGRhdGEtbmFtZT0iQnVnIiBjbGFzcz0iY2xzLTIiIGQ9Ik00MS44Miw1MC42MWw3LjA0LDcuMDQtNy4wMyw3LjAzdi0xNC4wN2gwWk00MS44Miw5My43MWw3LjA0LTcuMDQtNy4wMy03LjAzdjE0LjA3aDBaTTM0LjMxLDcyLjE2bC0xNS4yMi0xNS4yNiw0LjQxLTQuNDEsMTIuMTMsMTIuMTN2LTI5LjA2bDIyLjA1LDIyLjA1LTE0LjU2LDE0LjU2LDE0LjU2LDE0LjU2LTIyLjA1LDIyLjA1di0yOS4wNmwtMTIuMTMsMTIuMTMtNC40MS00LjQxLDE1LjIyLTE1LjI2aDBaTTM4LjM5LDExNC43M2MxOC41OSwwLDMxLjQtOC44MywzMS40LTQyLjU3cy0xMi44MS00Mi41Ny0zMS40LTM0LjU3UzYuOTgsMzguNDIsNi45OCw3Mi4xNnMxMi44Miw0Mi41NywzMS40MSw0Mi41N2gwWiIvPgogIDwvZz4KPC9zdmc+";
|
|
163
|
+
readonly creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
|
|
164
|
+
}];
|
|
165
|
+
//# sourceMappingURL=supported-devices.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supported-devices.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/bt-device/constants/supported-devices.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AA8CF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyK2B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./components/btdevice-list";
|
|
2
|
+
export * from "./components/supported-device-list";
|
|
2
3
|
export * from "./components/btdevice-instruction";
|
|
3
4
|
export * from "./components/item/btdevice-item";
|
|
4
5
|
export * from "./components/device-list-provider";
|
|
@@ -7,6 +8,8 @@ export * from "./contexts/device-list-context";
|
|
|
7
8
|
export * from "./constants/device-list-items";
|
|
8
9
|
export * from "./constants/device-instruction-pdfs";
|
|
9
10
|
export * from "./constants/device-images";
|
|
11
|
+
export * from "./constants/supported-devices";
|
|
10
12
|
export * from "./types/device-list-item";
|
|
13
|
+
export * from "./types/supported-device-list-props";
|
|
11
14
|
export * from "./types/btdevice-instruction-props";
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-device/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/bt-device/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FlatListProps } from "react-native";
|
|
2
|
+
import { SupportedDevice } from "../constants/supported-devices";
|
|
3
|
+
export type SupportedDeviceListProps = Omit<FlatListProps<SupportedDevice>, "data" | "renderItem"> & {
|
|
4
|
+
renderItem?: FlatListProps<SupportedDevice>["renderItem"];
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=supported-device-list-props.d.ts.map
|