Choose a language
All nine packages implement FTMS protocol bytes without owning your Bluetooth connection. Choose the language used by your application; do not choose by tag spelling or assume matching package versions imply identical convenience APIs. Integrate each package through the project-wide consumer adapter seam: native transport conversion, session lifecycle, application policy and control safety remain consumer-owned.
Install and decode your first packet
Section titled “Install and decode your first packet”Use the installation directory for latest-selection commands and the verified concrete dependencies required by C, Swift and Kotlin. Repository verification examples remain pinned; they are not a requirement to start new apps on an old version.
Follow your language’s guide for the published dependency, a decoding example, and its actual value/error representation. TypeScript and C also have runnable installed-consumer quickstarts. No equipment connection is required for those examples.
| Language | Install and start | Package guide / API entry point |
|---|---|---|
| C | Installed-library quickstart | C guide; installation options |
| C# | Install and decode | API reference |
| Dart | Install and decode | Dart guide; Flutter integration |
| Go | Install and decode | Go guide |
| Kotlin/JVM | Install and decode | Kotlin and Java examples |
| Python | Install and decode | Python guide |
| Rust | Install and decode | Rust guide |
| Swift | Install and decode | Swift guide |
| TypeScript | Installed-package quickstart | TypeScript guide |
Understand the result
Section titled “Understand the result”- Check each guide’s units: raw wire integers are not necessarily display units.
- Treat missing values, malformed input and unknown fields according to that package’s documented contract, not another language’s return types.
- A capability report is evidence, not permission to operate equipment.
- Keep discovery, security, connection lifecycle and control safety in the application.
See current verified releases for exact published versions and prerelease status. The 1.0 milestone is a preparation checklist, not an available package family.
Next steps
Section titled “Next steps”- API references by language
- TypeScript and C cookbook
- Transport recipes: JavaScript and C
- Consumer adapter seam
- Support profiles and protocol coverage
- Troubleshooting
Working on a port
Section titled “Working on a port”Start with contributing, architecture
and the conformance runner contract.
Sources, manifests, tests and language-specific tooling remain package-owned;
ports consume canonical shared assets rather than other ports or fixture copies.
The root pnpm workspace verifies TypeScript and the site, not native packages.
SwiftPM’s thin root Package.swift is an ecosystem-required entry point into
package-owned Swift sources. See the release process for
each port’s independent runbook and gates.