An implementation of an FTMS protocol client. Could be useful for apps that would like to communicate with FTMSTrainers.
Mine does and it works. Will post a link here once it is published.
FTMSModels - no libraries, but honorable mentions to other sources on GitHub:
- https://github.com/gamma/FTMS-Bluetooth/blob/master/Sources/FTMS%20Bluetooth/Utils/Fields.swift
- https://github.com/oesmith/gatt-xml/blob/master/org.bluetooth.characteristic.indoor_bike_data.xml
- https://github.com/gamma/FTMS-Bluetooth/blob/master/Sources/FTMS%20Bluetooth/FTMSUUIDs.swift
FTMSTrainer - uses FTMSModels and:
To use the decoders in your project, add this Swift Package in your project. You can choose the model layer only FTMSModels
, or classes to communicate with the trainer FTMSTrainer
.
Simple example for demonstration:
import FTMSModels
import FTMSTrainer
let scanner = TrainerScanner()
let trainer = scanner.scan()
.filter { $0.count > 0 }
.take(1)
.flatMap { trainers -> FTMSConnectedTrainer in
trainers[0].connect()
}
let disposeBag = DisposeBag()
trainer.controlPointError
.subscribe(onNext: { error in
print("Control point error: %@", error)
}).disposed(by: disposeBag)
let command = TrainingCommand.resume // check Commands.swift for a list of commands
trainer.send(command: command)
.subscribe()
.disposed(by: disposeBag)
- Need to add tests. The project was written quickly, trying with a real trainer what works and what doesn't when communicating with turbo trainer.
- Improving together with my own app, as needed.
- Awaiting potential requests/bug fixes.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.