This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Heart Rate collector example - how is it suppose to work?

Hi, 

i'm running the Heart Rate collector example and have a question. What is the expected behaviour? From the description on the infocenter I read that it should print out the HR reading from the connected HRM. And while it does so the first time I run it on a fresh dongle, it doesn't do it the next time or any other time for that matter. I cannot figure out the difference and don't know what is going on. The following runs only print out the following info on the log:

00> <info> app_timer: RTC: initialized.
00> 
00> <info> app: Heart Rate collector example started.
00> 
00> <info> app: Starting scan.
00> 
00> <info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update, no change
00> 
00> <info> app: Connected.
00> 
00> <info> app: GATT ATT MTU on connection 0x0 changed to 23.
00> 
00> <info> peer_manager_handler: Connection secured: role: Central, conn_handle: 0, procedure: Encryption
00> 
00> <info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update, no change
00> 
00> <info> app: Data length for connection 0x0 updated to 27.
00> 
00> <info> peer_manager_handler: Connection secured: role: Central, conn_handle: 0, procedure: Encryption
00> 
00> <info> peer_manager_handler: Peer data updated in flash: peer_id: 0, data_id: Peer rank, action: Update, no change
00> 
00> <info> app: Battery Level Read as 85 %.

PS: I use the NRF52 dongle together with a j-link debugger and I'm displyaing the logs via RTT. I use the example from the SDK 17.0.2, with SD 340.

Parents
  • Hi Lukasz, 

    The Heartrate collector should send a write command to enable notification to receive HRM data update. 
    We need to figure out if it's the peripheral didn't send the notification or it's the central didn't send the write command or didn't display the HRM update. 

    The best way to debug this is to use a sniffer and capture what happened over the air. 
    You can also debug the peripheral to check if it receive the write command to enable CCCD and if it send the notification after connection or not. 

  • Hello Again after a while. I was digging more into this topic, sisnce also other HRM's did't work - only one HRM Dual from Garmin. The other HRM dual did not work and also some HRM's from Polar also did't work H7/H9/H10. 

    At the end of our investigation previously we concluded that the one HRM dual that didn't work had be faulty. But this turns out to be false. They all differ. For one the Heart Rate Measurement CCCD value handle is 0x0028 (and this one worked), and for the other it was 0x10 or 0x11. If I change it manually in the code, the programs works for this particular HRM (and stops working for the Garmin HRM for which it worked). I also noticed that the UUID is always 2a37.

    The question is - can I somehow tell the request to use the UUID, not the handle? 

    Or maybe I should somehow read the value of the handle first? How?

    Thanks

Reply
  • Hello Again after a while. I was digging more into this topic, sisnce also other HRM's did't work - only one HRM Dual from Garmin. The other HRM dual did not work and also some HRM's from Polar also did't work H7/H9/H10. 

    At the end of our investigation previously we concluded that the one HRM dual that didn't work had be faulty. But this turns out to be false. They all differ. For one the Heart Rate Measurement CCCD value handle is 0x0028 (and this one worked), and for the other it was 0x10 or 0x11. If I change it manually in the code, the programs works for this particular HRM (and stops working for the Garmin HRM for which it worked). I also noticed that the UUID is always 2a37.

    The question is - can I somehow tell the request to use the UUID, not the handle? 

    Or maybe I should somehow read the value of the handle first? How?

    Thanks

Children
Related