We have ANT bike trainer which acts both as master when broadcasting FE-C messages and as slave when receiving power and heart rate data from sensors.
We are experiencing two message collision issues:
1) When trainer is searching for power sensor and FE-C is broadcasting at the same time, open display is not able
to send any control command to trainer within acknowledge message. ANT stack notifies about this with EVENT_CHANNEL_COLLISION event.
When power sensor is connected (no searching), both FE-C control command and power sensor commands are received.
Power sensor search channel is already configured with lowest priority, so I would expect that broadcast has higher priority during collision and acknowledge packets should be received successfully.
Below is example of search channel configuration for power sensor:
ant_search_config_t ride_search_config =
{
.channel_number = channel_number,
.low_priority_timeout = ANT_LOW_PRIORITY_TIMEOUT,
.high_priority_timeout = ANT_HIGH_PRIORITY_TIMEOUT,
.search_sharing_cycles = SEARCH_SHARING_CYCLES,
.search_priority = ANT_SEARCH_PRIORITY_LOWEST,
.waveform = ANT_WAVEFORM_DEFAULT
};
ant_search_init(&ride;_search_config);
Is it possible to configure scanning to not impact FE-C?
2) Another issue is that when FE-C is active and power sensor is sending power events (already conencted), power sensor events are often dropped. ANT stack notifies about error with EVENT_RX_FAIL event. Both FE-C and power sensor sampling period is 4Hz which I think is the reason we have power drops.
What is the best way to avoid this power drops?