Skip to main content

ADI SpO2 Watch Python SDK

Project description

SpO2 Watch Python SDK

The adi-spo2-watch provides an object-oriented interface for interacting with ADI's VSM Study Watch 4.5 platform (SpO2 Watch).

Installation

pip install adi-spo2-watch

Description

A user application can use the SDK to receive complete packets of bytes over a physical interface (USB or BLE) and decode it. The functionality is organized into applications, some of which own sensors, some own system-level functionality (i.e. file system), and while others own algorithms. The hierarchy of objects within the SDK mirrors the applications present on the device. Each application has its own object within the SDK hierarchy, which is used to interact with that application. A brief guide on using the SDK and few examples have been added below.

Firmware Setup

https://github.com/analogdevicesinc/spo2-watch-sdk/blob/main/firmware/Firmware_update_guide.pdf

Getting started with SDK

Import the adi-spo2-watch module into your application code

from adi_spo2_watch import SDK

Instantiate the SDK object by passing the com port number

sdk = SDK('COM28')

The application objects can be instantiated from the sdk object. In order to instantiate an application object, we'll have to pass a call-back function as an input argument which can be used to retrieve the data from the application object. Define a callback function as displayed below.

def callback_data(data):
    print(data)

Once the call-back function is defined, you can instantiate the application object as shown below.

application = sdk.get_sensorhub_application()
application.set_callback(callback_data, stream=application.SH_ADXL_STREAM)

Each application object has various methods that can be called by referring to the application. Almost all method in an application returns result in a dict.

Basic Example:

import time
from datetime import datetime
from adi_spo2_watch import SDK

# Callback function to receive adxl data
def callback_data(data):
    sequence_number = data["payload"]["sequence_number"]
    for stream_data in data["payload"]["stream_data"]:
        dt_object = datetime.fromtimestamp(stream_data['timestamp'] / 1000)  # convert timestamp from ms to sec.
        print(f"seq :{sequence_number} timestamp: {dt_object} x,y,z :: ({stream_data['x']}, "
                f"{stream_data['y']}, {stream_data['z']})")


if __name__ == "__main__":
    sdk = SDK("COM4")
    application = sdk.get_sensorhub_application()

    # Quickstart adxl stream
    application.set_callback(callback_data, stream=application.SH_ADXL_STREAM)
    application.enable_csv_logging("adxl.csv", stream=application.SH_ADXL_STREAM) # Logging adxl data to csv file
    application.subscribe_stream(stream=application.SH_ADXL_STREAM)
    application.set_operation_mode(application.SH_CONFIG_ADXL_MODE)
    application.start_sensor()
    time.sleep(10)
    application.stop_sensor()
    application.unsubscribe_stream(stream=application.SH_ADXL_STREAM)
    application.disable_csv_logging(stream=application.SH_ADXL_STREAM)

Permission Issue in Ubuntu

1 - You can run your script with admin (sudo).

2 - If you don't want to run scripts as admin follows the steps below:

  • add user to tty and dialout group
sudo usermod -aG tty <user>
sudo usermod -aG dialout <user>
  • create a file at /etc/udev/rules.d/ with name 10-adi-usb.rules:
ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="2cfe", MODE="0666", GROUP="dialout"
  • reboot

All streams packet structure : https://analogdevicesinc.github.io/spo2-watch-sdk/python/_rst/adi_spo2_watch.core.packets.html#module-adi_spo2_watch.core.packets.stream_data_packets

Documentation : https://analogdevicesinc.github.io/spo2-watch-sdk/python

Examples : https://github.com/analogdevicesinc/spo2-watch-sdk/tree/main/python/samples

License : https://github.com/analogdevicesinc/spo2-watch-sdk/blob/main/LICENSE

Changelog https://github.com/analogdevicesinc/spo2-watch-sdk/blob/main/python/CHANGELOG.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

adi_spo2_watch-6.6.0.tar.gz (137.3 kB view details)

Uploaded Source

Built Distribution

adi_spo2_watch-6.6.0-py3-none-any.whl (240.7 kB view details)

Uploaded Python 3

File details

Details for the file adi_spo2_watch-6.6.0.tar.gz.

File metadata

  • Download URL: adi_spo2_watch-6.6.0.tar.gz
  • Upload date:
  • Size: 137.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.13

File hashes

Hashes for adi_spo2_watch-6.6.0.tar.gz
Algorithm Hash digest
SHA256 a2eec518ece806fd0fed66e983c5212077d7f74bc633f317fa2566374b0ef4dc
MD5 11673a5b4293656940fce00a3e197de9
BLAKE2b-256 c6769b5ec0a901154ae3a99aae66d5f4db3ad698fabbf6b3236ce1f717b0d19d

See more details on using hashes here.

File details

Details for the file adi_spo2_watch-6.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for adi_spo2_watch-6.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 63151aaf956103d0ca653322ccc331edfb5c0050b76b2e09f6a2abca8db6b0e8
MD5 a0839df8f0be314754120721ec78eed4
BLAKE2b-256 d54e1a645367b28a8f366d730ce3da8212e88b00c947f0f2ef3cb8d3f4c5ffa4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page