Boron BLE connection to 3rd party Blood Pressure device

Greetings,

I followed the example here:
https://docs.particle.io/tutorials/device-os/bluetooth-le/#heart-rate-central

In this example, Argon (or any Gen3 device for that matter) is connected to a 3rd party Heart Rate monitor. Following the same steps, I am trying to connect to 3rd party blood pressure device to read the blood pressure data. Unlike the example, Boron (in my case) does not connect to the blood pressure device.

I am using a TI BLE sniffer tool and I can see that the packets being broadcasted from the blood pressure device but the connection does not happen. The same sniffer tool showed that the packets were broadcasted from the Heart Rate Monitor as well and Boron was able to connect and read the data. Anybody here has any experience in the area?

Thanks,
SYED

Hi,

I played with the setup again and used the “Device Nearby” example.

https://docs.particle.io/tutorials/device-os/bluetooth-le/#device-nearby

I commented out the Company ID check and Boron was able to detect the BLE packet from the Blood Pressure device.

I added the code to initiate a connection (copied from “Heart Rate Central” example) and I was able to make Boron connect with the Blood Pressure device via BLE. So, that part is good!

So, basically the scan API from the “Device Nearby” example works as it returns the correct length which is 7 (as described in the example).

len = scanResults[ii].advertisingData.get(BleAdvertisingDataType:: MANUFACTURER_SPECIFIC_DATA , buf, BLE_MAX_ADV_DATA_LEN);

But it does NOT work from the “Heart Rate Central” example as the len is always zero. Code is expecting a value > 0.

len = scanResults[ii].advertisingData.get(BleAdvertisingDataType:: SERVICE_UUID_16BIT_COMPLETE , buf, BLE_MAX_ADV_DATA_LEN);

I believe the issue is with the BleAdvertisingDataType. The reference has a long list of datatypes but I am not sure which one to try?

image.png

Thanks,

SYED

Hi,

I am continuing my debugging on this scenario.

Looks like I am able to make the connection from Boron to Omron via BLE. Successful network connection is captured below:

image.png

So, basically, this scan command works:

len = scanResults[ii].advertisingData.get(BleAdvertisingDataType:: MANUFACTURER_SPECIFIC_DATA , buf, BLE_MAX_ADV_DATA_LEN)

It returns 7 or 25 data lengths.

I used each of these lengths to make the connection. But, characteristic 0x2A35 is not firing the event to the call back API onDataReceived() as shown in the example “Heart Rate Central”.

Probably, I have to do a manual read of the data rather than relying on the event. Not sure how to do that though?

Please let me know if you have any suggestions.

Thanks,

SYED

Your image links seem broken.
You can directly upload the images without needing an intermediate host.

I can see all the images in the post. But I am uploading it again per the request!


Hi,

I think I know why the “onDataReceived” callback API is not firing up.

It has to do with the BleCharacteristicProperty()

https://docs.particle.io/reference/device-os/firmware/boron/#blecharacteristicproperty

The HeartRate Monitor device sends out beacons using BleCharacteristicProperty::NOTIFY (0x10)

The BloodPressure Monitor sends out beacons using BleCharacteristicProperty::INDICATE (0x20)

HeartRate.PNG

BloodPressure.PNG

I think HeartRate Monitor example is configured to get “Notify” events not “Indicate” events. So, I need to know how to configure BLE stack to get “Indicate” events?

I tried using the getValue() API but since the characteristic does not have "read " property, it resulted in an error.

readNotAllowed.png

Your images are not visible to the public (again).
You may have access to that location but probably noone else :wink:

By popular demand, I am uploading the pics again!

Greetings,

After trying various vendors for the blood pressure monitor support, I was finally able to get Beurer Blood Pressure Monitor working. So, I think the issue was with the Omron Blood Pressure device where even after the successful BLE connection, it was not able to fire the blood pressure characteristic event (0x2A35) but with the same FW on the Boron side, Beurer Blood Pressure device did.

This should help others who are struggling in this area.

Thanks!

1 Like