Issue with some ANT generic channels not able to connect - 8 data fields, each one with one specific Ant channel

Hi.

Because I can not connect to an ANT generic channel to receive 8 bytes and then share that data with different data fields, I did read that each data field should communicate with an ANT unique channel. I did that, I am writing my own firmware for a board with NRF52840 and I am using the simulator as also an Edge 830 for testing.

The data fields work as expected, mainly if is only one but as soon I start to add more to my screen, in the limit of 8 or 10, they are not able to connect, just some connect but others do not . Also there is a lot of dropping - not receiving messages like for 5 seconds while should receive 2 messages for second.

Please help me to have ANT on 10 different data fields.

On my code I am checking for receiving a message every xx seconds and if not, I close and then open again the ANT channel. I am checking this only after the amount of seconds for searching timeout.

NOTE: Added to the ANT generic channels, I also have ANT+ LEV and Bluetooth, all working simultaneous.

----

After more days testing different code and seeing others code CIQ on Github for Ant generic channels, I found the ANT+ LEV data fields (but this fields for ANT+ LEV are Garmin native ones!!) never drops - quick connects and never drops, but my fields take long time to connect and drop randomly.

To be clear, I implemented both the ANT+ LEV firmware as also ANT generic channels and I did follow the Nordic SDK for that. For the Garmin Edge data fields, the difference is that ANT+ LEV is native implemented from Garmin and the ANT generic was implemented by me, after looking at the Garmin SDK and many examples on Github from other developers with their apps on the Garmin store. 

After all this days testing and testing, I do not have more ideas and I think the issue may be Garmin limiting the time / power on the ANT for the apps we develop but giving full priority to their own native apps :-(

----

My code: https://github.com/OpenSourceEBike/TSDZ2_wireless/tree/Garmin_test/EBike_wireless_Garmin/source

And the firmware here: https://github.com/OpenSourceEBike/TSDZ2_wireless/blob/Garmin_test/EBike_wireless_TSDZ2/firmware/main.c

I am developing technology for EBikes, to give the motors wireless communications and the project is OpenSource here: https://opensourceebike.github.io/ 

  • I seem to recall there's a limit of about 8 ANT connections per Garmin device, so your implementation is maxing that out, and that also likely means you can't connect something like an ANT HRM at the same time.  Your safest bet would be to have all data come across a single channel.  Moving to BLE won't help, as there you are limited to 3 services.  

    Instead of a number of different DFs (you are limited to two CIQ DFs per activity on most watches, and on edge devices it's often 10), maybe just have one where you can use settings to define what/how things are displayed.

  • Thank you.

    I forgot to mention that I am also using ANT+ LEV in addition to that ANT generic channels and everything seems to work if I use only 1 data field but the more I increase, the more problem for them to connect and drop the connection...

    I do not want to have one data field only, that does not make sense as I need to use 2 data fields on a page where there is the navigation map, and also other data fields on a page that have a big HR graph.

  • You're pretty much confirming that you're hitting the max for ANT connections on the device.

  • I have not much experience with ANT and I did expect to have near perfect working, like 1 or 2 seconds connection and no drops, for the 10 connections. Now with my experience on this project, I had a bad opinion on ANT... does not make sense for if I use 2 or 3 sensors and it start to fail.

    Do you have any idea how to improve? maybe changing the frequency of each channel?

  • Try it, but I suspect there will still be a problem with the number of connections you're trying to use.  I'd look at a single DF and one connection.  Within the DF, you can check for a big enough one, and put up a message if the dc is too small for what you want to display.

  • Well, I also did not mention but I also have Bluetooth, other than the ANT+ LEV and the 10 ANT generic channels.
    I disable the Bluetooh and I saw clearly an improvement. So I wounder if it is possible to improve suing different radio frequencies or such.

  • After more days testing different code and seeing others code CIQ on Github for Ant generic channels, I found the ANT+ LEV data fields (but this fields for ANT+ LEV are Garmin native ones!!) never drops - quick connects and never drops, but my fields take long time to connect and drop randomly.

    To be clear, I implemented both the ANT+ LEV firmware as also ANT generic channels and I did follow the Nordic SDK for that. For the Garmin Edge data fields, the difference is that ANT+ LEV is native implemented from Garmin and the ANT generic was implemented by me, after looking at the Garmin SDK and many examples on Github from other developers with their apps on the Garmin store. 

    After all this days testing and testing, I do not have more ideas and I think the issue may be Garmin limiting the time / power on the ANT for the apps we develop but giving full priority to their own native apps :-(