@ovok/native/bt-device
Bluetooth device lists, the supported-device catalog and device images.
- Stable unknown
- Release candidate since 1.16.1-rc.3
- Development since 1.16.1-dev.2111+9796905
Bluetooth device lists, the supported-device catalog and device images.
Import from @ovok/native/bt-device.
Components
BTDeviceItem()
function BTDeviceItem(__namedParameters): Element;Pressable device card; compose it with the BTDeviceItem.* sub-components.
Parameters
| Parameter | Type |
|---|---|
__namedParameters | PropsWithChildren<TouchableOpacityProps> |
Returns
Element
BTDeviceList()
function BTDeviceList(__namedParameters): Element;Renders the connectable devices from the device list context as tappable cards with instructions.
Parameters
| Parameter | Type |
|---|---|
__namedParameters | BTDeviceListProps |
Returns
Element
DeviceListProvider()
function DeviceListProvider(__namedParameters): Element;Provides the device list state, seeded with the default catalog, to descendants.
Parameters
| Parameter | Type |
|---|---|
__namedParameters | { children: ReactNode; } |
__namedParameters.children | ReactNode |
Returns
Element
SupportedDeviceList()
function SupportedDeviceList(__namedParameters): Element;Renders the catalog of supported devices with manufacturer and image credit.
Parameters
| Parameter | Type |
|---|---|
__namedParameters | SupportedDeviceListProps |
Returns
Element
Hooks
useDeviceList()
function useDeviceList(): DeviceListContextValue;Returns the device list and its setter; must be used within DeviceListProvider.
Returns
useSupportedDevices()
function useSupportedDevices(filter?): SupportedDeviceDefinition[];The catalog products matching filter, in catalog order: by kind, manufacturer, what they
measure, delivery, key, or a where of your own. Every product without a filter.
Parameters
| Parameter | Type |
|---|---|
filter? | DeviceFilter |
Returns
Functions
deliveryOf()
function deliveryOf(devices): DeviceDelivery;"live" for a device that streams values while connected: one listed in LIVE_DEVICE_KEYS, or a declaration that
keeps a live session (sessionPolicy), such as the O2Ring's. Takes the declarations, or only their keys.
Parameters
Returns
deviceKeyOf()
function deviceKeyOf(device): DeviceKey;The key BTManager reports a device under (deviceData.name): a built-in parser or a declaration id.
Parameters
| Parameter | Type |
|---|---|
device | AcceptedDevice |
Returns
deviceMatches()
function deviceMatches(device, filter?): boolean;Whether a catalog product matches every field of filter.
Parameters
| Parameter | Type |
|---|---|
device | SupportedDeviceDefinition |
filter? | DeviceFilter |
Returns
boolean
filterSupportedDevices()
function filterSupportedDevices(filter?, devices?): SupportedDeviceDefinition[];The catalog products matching filter, in catalog order.
Parameters
| Parameter | Type | Default value |
|---|---|---|
filter? | DeviceFilter | undefined |
devices? | readonly SupportedDeviceDefinition[] | SUPPORTED_DEVICES |
Returns
findSupportedDevice()
function findSupportedDevice(of): SupportedDeviceDefinition | undefined;The catalog product behind a string (a catalog id, else a product name, else a reported key) or
a connected device's deviceData: the product its advertised name identified, else its key's
product. Pass deviceData for a device: a key can also be another product's name.
Parameters
| Parameter | Type |
|---|---|
of | | string | Pick<DeviceData, "name" | "variant"> |
Returns
SupportedDeviceDefinition | undefined
imageCreditOf()
function imageCreditOf(credit): DeviceImageCredit;"Label: https://…" as { label, url }, the URL ending at a space or ; (a note may follow it); an SDK
illustration's note as its first clause.
Parameters
| Parameter | Type |
|---|---|
credit | string |
Returns
kindOf()
function kindOf(types): DeviceKind;Classifies a device by the measurement types it reports.
Parameters
| Parameter | Type |
|---|---|
types | readonly MeasurementTypeKey[] |
Returns
primaryMeasurementOf()
function primaryMeasurementOf(types): MeasurementTypeKey | undefined;The reading a device is for. Heart rate comes along with most readings (a blood pressure, an ECG, a step count), so it is the main one only on a device that measures nothing else.
Parameters
| Parameter | Type |
|---|---|
types | readonly MeasurementTypeKey[] |
Returns
MeasurementTypeKey | undefined
resultPoliciesFor()
function resultPoliciesFor(devices): Record<string, DeviceResultPolicy>;resultPolicies keeping each live device in devices as series (LIVE_RESULT_POLICY); spot devices keep every
reading.
Parameters
| Parameter | Type |
|---|---|
devices | readonly SupportedDeviceDefinition[] |
Returns
Record<string, DeviceResultPolicy>
Interfaces
DeviceListContextValue
Value exposed by the device list context.
Properties
| Property | Type | Description |
|---|---|---|
deviceListItems | DeviceListItem[] | Devices currently shown in the list. |
setDeviceListItems | Dispatch<SetStateAction<DeviceListItem[]>> | Replaces the device list. |
Type Aliases
DeviceDelivery
type DeviceDelivery = "spot" | "live";How a device hands over readings: spot gives one per measurement; live sends values every
second or so for as long as it is connected (a heart-rate strap, a live oximeter, the Lepod).
DeviceFilter
type DeviceFilter = object;Narrows the device catalog. Every field given must match, and a list matches any one of its
values: { kind: "blood-pressure-monitor", manufacturer: "HARTMANN" },
{ measures: MeasurementTypeKey.ecg, delivery: "spot" }, { manufacturer: /yonker/i }.
Properties
delivery?
delivery?: DeviceDelivery;Matches how readings are delivered.
id?
id?: OneOrMany<string>;Matches the product ID.
key?
key?: OneOrMany<DeviceKey>;Reported under any of these keys (deviceData.name).
kind?
kind?: OneOrMany<DeviceKind>;Matches the device kind.
manufacturer?
manufacturer?: TextMatch;Matches the manufacturer name.
measures?
measures?: OneOrMany<MeasurementTypeKey>;Measures any of these.
name?
name?: TextMatch;Matches the product name.
primaryMeasurement?
primaryMeasurement?: OneOrMany<MeasurementTypeKey>;Matches the primary measurement.
shared?
shared?: boolean;Matches whether the parser serves other products.
standardProfile?
standardProfile?: boolean;Matches devices using a standard Bluetooth SIG profile.
where?
where?: (device) => boolean;Anything the fields above don't cover.
Parameters
| Parameter | Type |
|---|---|
device | SupportedDeviceDefinition |
Returns
boolean
DeviceImageCredit
type DeviceImageCredit = object;Who made the catalog image, and where it came from when that is a web page.
Properties
label
label: string;Name of who made the image.
url?
url?: string;Web page the image came from.
DeviceKind
type DeviceKind =
| "blood-pressure-monitor"
| "weight-scale"
| "pulse-oximeter"
| "thermometer"
| "glucose-meter"
| "ecg-recorder"
| "heart-rate-monitor"
| "activity-tracker"
| "urine-analyzer"
| "lipid-analyzer"
| "respiratory-therapy"
| "sleep-monitor"
| "multi-parameter-monitor"
| "other";What a device is for, named after its main measurement.
DeviceListItem
type DeviceListItem = object;One entry of the device list.
Properties
deviceImageUri
deviceImageUri: string;URI of the device image.
deviceType
deviceType: IntegratedDevices;Integrated device this entry represents.
status
status: DeviceStatus;Current connection status.
subtitle
subtitle: string;Translation key of the subtitle.
title
title: string;Translation key of the title.
OneOrMany
type OneOrMany<T> = T | readonly T[];A single value or a list of values.
Type Parameters
SupportedDevice
type SupportedDevice = object;Catalog entry of a supported device.
Properties
creditsForImage
creditsForImage: string;Credit for the image.
logo
logo: string;Image of the product as a URI.
manufacturer
manufacturer: string;Manufacturer name.
manufacturerKey
manufacturerKey: string;Translation key of the manufacturer name.
name
name: string;Product name.
nameKey
nameKey: string;Translation key of the product name.
standardProfile?
standardProfile?: true;Set for devices that use a standard Bluetooth SIG profile.
SupportedDeviceDefinition
type SupportedDeviceDefinition = SupportedDevice & object;Catalog entry extended with its connection and measurement details.
Type Declaration
| Name | Type | Description |
|---|---|---|
acceptedDevices | readonly AcceptedDevice[] | Ready to pass directly to BTProvider.acceptedDevices. |
delivery | DeviceDelivery | One reading per measurement, or values continuously while connected. |
id | string | Unique ID of the product. |
imageCredit | DeviceImageCredit | creditsForImage as a label and, for a web source, its URL. |
keys | readonly DeviceKey[] | Every key BTManager reports this product's devices under (deviceData.name). |
kind | DeviceKind | What the product is for: a blood-pressure monitor, a weight scale, an ECG recorder… |
manualUrl? | string | Link to the user manual. |
measurementTypes | readonly MeasurementTypeKey[] | Measurement types it reports. |
primaryMeasurement? | MeasurementTypeKey | The reading it is for; the rest of measurementTypes come along with it. |
shared | boolean | Its parser also serves other products (rebadged models, a Bluetooth SIG profile), so a connected device may be any of them: deviceData.variant names the one it is, when known. |
SupportedDeviceListProps
type SupportedDeviceListProps = Omit<FlatListProps<SupportedDevice>, "data" | "renderItem"> & object;Props of SupportedDeviceList: FlatList props except data.
Type Declaration
| Name | Type | Description |
|---|---|---|
renderItem? | FlatListProps<SupportedDevice>["renderItem"] | Custom row renderer; defaults to the standard device card. |
TextMatch
type TextMatch = OneOrMany<string> | RegExp;Text to match: a value (in any case), any of several, or a pattern.
Variables
DEVICE_INSTRUCTION_PDFS
const DEVICE_INSTRUCTION_PDFS: Partial<Record<IntegratedDevices, string>>;Instruction manuals for the built-in parsers that have one.
deviceImages
const deviceImages: object;Base64 data-URI images of the supported devices, keyed by device.
Type Declaration
DeviceListContext
const DeviceListContext: Context<DeviceListContextValue | null>;Context carrying the device list state.
deviceListItems
const deviceListItems: DeviceListItem[];Default device list, one disconnected entry per supported device.
Devices
const Devices: readonly [{
creditsForImage: "Viatom official product image: https://www.viatomtech.com/blood-pressure-monitor";
logo: "https://static.wixstatic.com/media/34caa4_9f911afc220e4832a17af0b44e515915~mv2.j…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom BP2";
nameKey: "devices.catalog.viatom-bp2.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/bodyscale";
logo: "https://static.wixstatic.com/media/5118d8_190c0d815e2445b28baa9ca15cbb71fc~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom F4 / Lescale";
nameKey: "devices.catalog.viatom-f4-lescale.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/pulse-oximeter";
logo: "https://static.wixstatic.com/media/5118d8_5424b9d2006a4e918e2f9afc2f038f37~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom OxySmart / PC60WF";
nameKey: "devices.catalog.viatom-oxysmart-pc60wf.name";
}, {
creditsForImage: "Contec official BC401 product page: https://contechealth.com/collections/hot-sal…";
logo: string;
manufacturer: "Contec Medical Systems";
manufacturerKey: "devices.catalog.manufacturers.contec";
name: "Contec BC401 / BC01";
nameKey: "devices.catalog.contec-bc401-bc01.name";
}, {
creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en-za/products/diagno…";
logo: "https://img.hartmann.info/cdn-cgi/image/width%3D412%2Cheight%3D412%2Cquality%3D9…";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval duo control";
nameKey: "devices.catalog.veroval-duo-control.name";
}, {
creditsForImage: "HARTMANN official product image: https://www.hartmann.info/es-es/productos/monit…";
logo: "https://img.hartmann.info/cdn-cgi/image/width%3D412%2Cheight%3D412%2Cquality%3D9…";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval ECG";
nameKey: "devices.catalog.veroval-ecg.name";
}, {
creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnosti…";
logo: "https://cdn.hartmann.info/product/40938_43.jpg";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval compact+ BPU26";
nameKey: "devices.catalog.veroval-compact-bpu26.name";
}, {
creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnosti…";
logo: "https://cdn.hartmann.info/product/40385_43.jpg";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval compact+ BPW26";
nameKey: "devices.catalog.veroval-compact-bpw26.name";
}, {
creditsForImage: "HARTMANN official product image: https://www.hartmann.info/en/products/diagnosti…";
logo: "https://cdn.hartmann.info/product/130436_43.jpg";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval Fusion";
nameKey: "devices.catalog.veroval-fusion.name";
}, {
creditsForImage: "Veroval Medi.Connect app artwork from APKPure: https://apkpure.net/veroval%C2%AE…";
logo: "https://image-eo.winudf.com/v2/image/aW5mby52ZXJvdmFsLm1lZGkuY29ubmVjdF9pY29uXzE…";
manufacturer: "HARTMANN";
manufacturerKey: "devices.catalog.manufacturers.hartmann";
name: "Veroval Activity tracker";
nameKey: "devices.catalog.veroval-activity.name";
}, {
creditsForImage: "Original OVOK SDK illustration; generic smartwatch artwork, not a manufacturer p…";
logo: string;
manufacturer: "Trasense / Shenzhen Pucheng Technology";
manufacturerKey: "devices.catalog.manufacturers.trasense";
name: "Trasense S9 (SH09)";
nameKey: "devices.catalog.trasense-s9.name";
}, {
creditsForImage: "boso official product image: https://www.boso.de/en/products-for-home-users/bloo…";
logo: "https://www.boso.de/fileadmin/_processed_/0/b/csm_medicus_system_1019_9ce057ffcc…";
manufacturer: "BOSCH + SOHN GmbH u. Co. KG";
manufacturerKey: "devices.catalog.manufacturers.boso";
name: "boso medicus system";
nameKey: "devices.catalog.boso-medicus-system.name";
}, {
creditsForImage: "visomat official product image: https://www.visomat.de/produkte/comfort-soft-bt/";
logo: "https://www.visomat.de/wp-content/uploads/2023/10/prd_slider_comfort-soft-BT.jpg";
manufacturer: "UEBE Medical GmbH";
manufacturerKey: "devices.catalog.manufacturers.uebe";
name: "visomat comfort soft BT";
nameKey: "devices.catalog.visomat-comfort-soft-bt.name";
}, {
creditsForImage: "cyclotest official product image: https://www.cyclotest.de/produkt/cyclotest-mys…";
logo: "https://www.cyclotest.de/wp-content/uploads/cyclotest-mysense-basalthermometer-a…";
manufacturer: "UEBE Medical GmbH";
manufacturerKey: "devices.catalog.manufacturers.uebe";
name: "cyclotest mySense";
nameKey: "devices.catalog.cyclotest-mysense.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/thermometer";
logo: "https://static.wixstatic.com/media/34caa4_2b929fc2abc847bba39252b6e2a12a93~mv2.j…";
manufacturer: "AOJ Medical";
manufacturerKey: "devices.catalog.manufacturers.aoj";
name: "AOJ-20A";
nameKey: "devices.catalog.aoj-20a.name";
}, {
creditsForImage: "Viatom official Checkme product image: https://www.viatomtech.com/vital-signs-mo…";
logo: "https://static.wixstatic.com/media/5118d8_c08c5dadeeda4abaa01d032d342b6404~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Checkme";
nameKey: "devices.catalog.checkme.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/blood-pressure-monitor";
logo: "https://static.wixstatic.com/media/34caa4_9f911afc220e4832a17af0b44e515915~mv2.j…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom BP2A / BP2T / BP2W";
nameKey: "devices.catalog.viatom-bp2-family.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/upper-arm-desk-blood-p…";
logo: "https://static.wixstatic.com/media/c3f028_2bf2ec93f3284fff868b2786a64bc8cc~mv2.j…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom BP3 series";
nameKey: "devices.catalog.viatom-bp3-series.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/pulse-oximeter";
logo: "https://static.wixstatic.com/media/5118d8_5424b9d2006a4e918e2f9afc2f038f37~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom O2Ring / Oxyfit / KidsO2 / BabyO2";
nameKey: "devices.catalog.viatom-oximeters.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/ecg-ekg-monitor";
logo: "https://static.wixstatic.com/media/c3f028_1cde982861754abaab00abbaae81a697~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom ER1 / ER2 / ER3";
nameKey: "devices.catalog.viatom-er-family.name";
}, {
creditsForImage: "Viatom official product image: https://www.viatomtech.com/ecg-ekg-monitor";
logo: "https://static.wixstatic.com/media/c3f028_1cde982861754abaab00abbaae81a697~mv2.p…";
manufacturer: "Viatom (Lepu Medical)";
manufacturerKey: "devices.catalog.manufacturers.viatom";
name: "Viatom Lepod / LepodPro";
nameKey: "devices.catalog.viatom-lepod-family.name";
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG blood-pressure devices";
nameKey: "devices.catalog.bluetooth-sig.blood-pressure.name";
standardProfile: true;
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG thermometers";
nameKey: "devices.catalog.bluetooth-sig.thermometers.name";
standardProfile: true;
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG weight scales";
nameKey: "devices.catalog.bluetooth-sig.weight-scales.name";
standardProfile: true;
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG pulse oximeters";
nameKey: "devices.catalog.bluetooth-sig.pulse-oximeters.name";
standardProfile: true;
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG glucose meters";
nameKey: "devices.catalog.bluetooth-sig.glucose-meters.name";
standardProfile: true;
}, {
creditsForImage: "Bluetooth SIG official brand assets: https://www.bluetooth.com/media/";
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPH…";
manufacturer: "Any compliant manufacturer";
manufacturerKey: "devices.catalog.manufacturers.any-compliant";
name: "Bluetooth SIG heart-rate monitors";
nameKey: "devices.catalog.bluetooth-sig.heart-rate.name";
standardProfile: true;
}, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice, SupportedDevice];Concrete devices and device families supported by the Bluetooth module.
The standard Bluetooth SIG entries are included because the SDK exposes factories for those profiles; the application supplies the advertised device name when registering one. Every entry has an image value. Existing product assets are reused where available, while official manufacturer and standards-organization images cover the remaining entries.
LIVE_DEVICE_KEYS
const LIVE_DEVICE_KEYS: ReadonlySet<string>;Built-in devices that send readings continuously while connected rather than one per measurement: the
live oximeters (each value they send is a reading), the PC-100 and PC-300 monitors, the wearable T31
thermometer, the Lepod after its stored recordings, and Bluetooth SIG heart-rate straps (a value a
second). A declaration that keeps a live session (sessionPolicy) is live without being listed.
LIVE_RESULT_POLICY
const LIVE_RESULT_POLICY: DeviceResultPolicy;Keeps a live device's whole stream: every live value goes into a series of one-second slots, reported as one
result when it closes (when the device disconnects, after an hour, or 15 minutes without a value). The single measurements a live device also
takes, a blood pressure, a glucose reading or an ECG recording, are each reported. Pass it in resultPolicies for
live devices (resultPoliciesFor does it for a whole list), with seriesStorage so a series survives the app
closing.
SUPPORTED_ACCEPTED_DEVICES
const SUPPORTED_ACCEPTED_DEVICES: readonly AcceptedDevice[];A de-duplicated list ready to pass directly to BTProvider.acceptedDevices.
SUPPORTED_DEVICES
const SUPPORTED_DEVICES: readonly SupportedDeviceDefinition[] = supportedDevices;Catalog of the supported devices with their metadata.
supportedDevices
const supportedDevices: readonly SupportedDeviceDefinition[];The catalog with what each product is: its kind, main reading, delivery and keys.
Last updated on