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

ANT extended device numbers

Hi,

I am developing an ANT+ embedded device (nrf52832, SDK14.2) , that (among other things) acts as a BSC receiver.
I have a BCS sensor that is seen in Garmin Edge as 136150 speed sensor, so in order to get data from the sensor, I set in my device:
Transmission type 0x21 (as 136150 = 0x213D6, MSB is 0x2 so in transmission type upper nibble is 0x2, lower nibble is 0x1)
Device ID 0x13D6

#define BSC_A_CHANNEL_NUM 1
#define BSC_A_CHAN_ID_TRANS_TYPE 0x21
#define BSC_A_DISPLAY_TYPE 123
#define BSC_A_CHAN_ID_DEV_NUM 0x13D6
#define ANTPLUS_NETWORK_NUM 0

but the receiver does NOT recognize the sensor.

I decided to EMULATE the sensor and created a BSC TX with the same parameters. The TX is recognized by Garmin Edge as (surprise) 136150.

So it seems, there are "different kinds" of the same number.

My hypothesis is that Garmin Edge displays only a part of the Device ID.

So, the questions is: what Transmission Types and Device ID parameters should I use to recognize the sensor that is displayed as 136150 in Garmin Edge?

Parents Reply Children
  • Here is what happens: when adding Transmission type, you have to know not only the upper nibble, but also the lower nibble. There is no way to wildcard lower nibble while hard coding upper one.

    That's the limitation of current library implementation, because if I want to set the extended device id (i.e. Device ID + upper nibble of the Transmission type) I should also set transmission type set by lower nibble.

    In my example I was searching for device ID (0x13D6 + 0x2) with transmission type 0x1, while my sensor had different transmision type.

    The not_so_ideal workaround I am using is to search for ID 0x13D6, while wildcarding transmission type (0), but that means that devices with extended ID consisting of 0x13D6 + 0x1, 0x2...0xF will be able to connect as well.

Related