I wanted to get this working since the USB C iPad Pros do not support ANT+. The iPad version of Zwift does not support the Zwift companion app which bridges an Android phone sensors with a PC. The only other solution would have been to buy a Cable Ant+ to BLE but that is around $63 USD + Shipping + Duty. Now I can use Zwift on my iPad pro with my Android phone bridging the ANT+ Garmin foot pod π.
Notes:
The ANT+ device reports instantaneous speed as m/s, there is an exact field for this in BLE
The ANT+ device reports total strides taken. BLE reports strides per minute. A rolling linked list is used to track the average cadence within the last 10 seconds. When displaying this value it is multiplied by 2 to get cadence.
I didn't support a few features since Zwift doesn't read them and I didn't spend the additional time:
Total distance. It is an optional BLE feature so it is disabled.
BLE supports instantaneous stride length, but ANT+ does not. You could calculate an estimate for the value based on the data you have, but since Zwift doesn't read it so I left it out since I cannot test it.
User Interface Changes:
Added in the new fields in both landscape and portrait
Although the user interface doesn't make as much sense now, it still works π.
Testing Environment:
Android Device: OnePlus 7 Pro with Garmin Ant+ usb
Ant+ Device: Garmin Foot Pod
Bluetooth Device to Connect to: iPad Pro running Zwift
Added in support for running stride SDM sensors (like the Garmin foot pod). This converts the ANT+ Stride SDM sensor to broadcasting a BLE Running Speed and Cadence sensor. I tried to follow the coding style as much as possible in this repo.
I wanted to get this working since the USB C iPad Pros do not support ANT+. The iPad version of Zwift does not support the Zwift companion app which bridges an Android phone sensors with a PC. The only other solution would have been to buy a Cable Ant+ to BLE but that is around $63 USD + Shipping + Duty. Now I can use Zwift on my iPad pro with my Android phone bridging the ANT+ Garmin foot pod π.
Notes:
I didn't support a few features since Zwift doesn't read them and I didn't spend the additional time:
User Interface Changes:
Testing Environment: