System 8 sensor pairing for ANT

I started to get reports from users who participate in beta program and have already upgraded their device to system8 that my datafield stopped working. My datafield uses ANT with GenericChannel (see code below).

I wonder if anyone managed to do whatever changes we need to do in our apps? If yes, can you share the insights?

The only information I found regarding this is from the announcement: https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/system-8-beta-now-available :

Sensor Pairing

If your device application or data field communicates wirelessly with a sensor or peripheral using ANT, ANT plus, or Bluetooth Low Energy (BLE), then you will need to implement a pairing process. Connect IQ allows you to implement a Sensors.SensorDelegate that allows you to have your device pair as part of the device’s sensor paring UI flow. See the SensorDelegate 

In my datafield I specifically ask the users not to pair or at least disconnect their ANT HR band from the device's Sensors menu, and I connect to it from the datafield using Ant.GenericChannel:

Ant.GenericChannel.initialize(method(:onMessage), new Ant.ChannelAssignment(
    Ant.CHANNEL_TYPE_RX_NOT_TX, // Bidirectional Receive (Slave)
    Ant.NETWORK_PLUS)
);

var devCfg = new Ant.DeviceConfig( {
    :deviceNumber => 0,                    // Set to 0 to use wildcard search
    :deviceType => 0x78,                   // Heart Rate Sensors: 0x78 = 120
    :transmissionType => 0,                // Set to 0 to use wildcard search
    :messagePeriod => 32280,               // 4Hz: 8070, 2Hz: 16140, 1Hz: 32280
    :radioFrequency => 57,                 // ANT+ Frequency 2.457GHz
    :searchTimeoutLowPriority => 10,       // Timeout in 25s
    :searchThreshold => 0} );              // Pair to all transmitting sensors
GenericChannel.setDeviceConfig(devCfg);

GenericChannel.open();
  • Garmin hasn't always been the greatest at having sample apps for brand new stuff, and it takes time, head scratching, and testing to figure out how to use it.  Complications is one that comes to mind.  Both publisher and subscriber.

  • I hope you're right, and both new devices with old sensors, new sensors with old devices and even new sensors with new devices (?!) will continue to work as today with today's code, and all the new pairing thing is optional. However the logic tells me this can't all be true, especially not the 3rd one, otherwise why would Garmin do all this?

  • I really doubt Garmin would break old device and new sensors, new devices with old sensors, and for your third point, check out the the HRM 200.  It's ANT, BLE, and Secure BLE the way it looks from the doc I've seen

    And they won't do something that breaks many existing apps in the store.

  • My fr955 is running beta firmware with CIQ 5.1.0, and I also use the Stryd Zones data field app, which makes a "direct" ANT+ connection to the Stryd sensor using GenericChannel (as I understand it). Either you enter the ANT+ ID of your Stryd in the app settings, or the app will automatically find a nearby Stryd.

    I don't think I've updated Stryd Zones since my watch was updated to CIQ 5.1.0, but even if I had, I don't think it would matter, since it's not possible for anybody to use the new pairing process in the beta SDK until that SDK is released to production.

    Even more to the point, I just tried your ANT+ HRM data field, and it works fine. The following versions worked for me:

    - 2.4.0 (2024-03-27, according to your changelog)

    - 2.5.3.2 (latest)

    I'm not discounting that something may be going on, but I don't see it (idk if that's a good thing or bad thing).

    I do find the new sensor delegate thing to be very interesting.

  • I know you didn't read it

    evergreen comment

    This thread is about System 8 functionality.

    You're telling OP what his own thread is about?

    This is what it's about: his existing app is apparently breaking on devices which are upgraded to System 8

    I started to get reports from users who participate in beta program and have already upgraded their device to system8 that my datafield stopped working.
  • How to extend a class that may be absent on some devices?