Package: adi-study-watch
Study Watch Python SDKThe adi-study-watch provides an object-oriented interface for interacting with ADI's VSM study watch platform.Installationpipinstalladi-study-watchDescriptionA 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 Setuphttps://github.com/analogdevicesinc/study-watch-sdk/blob/main/firmware/Study_Watch_Firmware_Upgrade.pdfGetting started with SDKImport the adi-study-watch module into your application codefromadi_study_watchimportSDKInstantiate the SDK object by passing the com port numbersdk=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.defadxl_cb(data):print(data)Once the call-back function is defined, you can instantiate the application object as shown below.adxl_app=sdk.get_adxl_application()adxl_app.set_callback(adxl_cb)Each application object has various methods that can be called by referring to the application. An example of retrieving
the sensor status is shown below. Almost all method in an application returns result in a dict.packet=adxl_app.get_sensor_status()# returns dictprint(packet)Basic Example:importtimefromdatetimeimportdatetimefromadi_study_watchimportSDK# callback function to receive adxl datadefcallback_data(data):sequence_number=data["payload"]["sequence_number"]forstream_dataindata["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_adxl_application()application.set_callback(callback_data)# quickstart adxl streamapplication.start_sensor()application.enable_csv_logging("adxl.csv")# logging adxl data to csv fileapplication.subscribe_stream()time.sleep(10)application.unsubscribe_stream()application.disable_csv_logging()application.stop_sensor()Permission Issue in Ubuntu1 - 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 tottyanddialoutgroupsudo usermod -aG tty <user>
sudo usermod -aG dialout <user>create a file at/etc/udev/rules.d/with name10-adi-usb.rules:ACTION=="add", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0456", ATTRS{idProduct}=="2cfe", MODE="0666", GROUP="dialout"rebootAll streams packet structure :https://analogdevicesinc.github.io/study-watch-sdk/python/_rst/adi_study_watch.core.packets.html#module-adi_study_watch.core.packets.stream_data_packetsDocumentation :https://analogdevicesinc.github.io/study-watch-sdk/pythonExamples :https://github.com/analogdevicesinc/study-watch-sdk/tree/main/python/samplesLicense :https://github.com/analogdevicesinc/study-watch-sdk/blob/main/LICENSEChangeloghttps://github.com/analogdevicesinc/study-watch-sdk/blob/main/python/CHANGELOG.md