RSDK is a robust and efficient SDK designed to handle everything related to radio connections. This sample project demonstrates its capabilities across multiple platforms.
- Overview
- Packages
- Supported Features
- RadioModel API Reference
- Test Coverage & Results
- Obtaining your own SDK token
The Radio SDK is designed to simplify development by giving clients the guardrails and abstractions they need — so instead of worrying about how the radio works, they can focus entirely on building great features.
RSDK provides a seamless, reliable way to manage radio connections across Android, iOS, and Linux JVM platforms. Its modular architecture and extensive test coverage ensure your applications stay stable and performant, no matter the integration.
A sample app demonstrating the integration of RSDK on Android devices.
Explore how to integrate radio connection features in your Android applications.
A complete sample project showcasing the capabilities of RSDK on iOS devices.
Learn how to seamlessly incorporate radio connectivity into your iOS apps.
A demonstration project for using RSDK in a Linux environment via the JVM.
Discover the versatility of RSDK in server-side or desktop applications.
RSDK delivers a rich set of capabilities to help you build reliable and feature-rich applications across platforms:
- Automatic radio discovery over USB and BLE
- Seamless connection and disconnection handling
- Background polling and health checks to ensure stable communication
- Bidirectional command handling between app and radio
- Support for commands such as:
- GRiP (large data transfer) commands
- Setting the power and bandwidth
- Setting the frequency
- Flashing the LED
- Firmware update with progress tracking
- Validation of minimum firmware version support based on radio type
Encryption is supported by the RSDK, but not implemented by the RSDK. Client applications can apply their own algorithms, rules, conditions, or scenarios for handling the encryption and decryption of data.
- Modular API surface for integrating only what you need
- Extensive test coverage with unit, integration, and system tests
- Detailed logging for debugging and analytics
- Detailed API docs integrated into the IDE when you pull down the dependency
- Scan for radios over USB or BLE
- Connect to a radio with optional LED flash and transmitter configuration on connect
- Disconnect from a radio
- Get a deferred connect operation that can be cancelled
- Get and set network configuration (power, bandwidth, frequency channels) in a single request
- Get and set network mode (listen-only or normal)
- Get and set operation mode for the radio
- Fetch the latest device info from hardware or retrieve cached device info
- Get the current chipset of the connected radio
- Set the SDK token for the radio (auto-performed on connect)
- Add a mesh network channel GID to the radio
- Remove a mesh network channel GID from the radio
- Get and set the LED state (enabled/disabled)
- Trigger a 3-blink LED test to identify the physical device
- Get and set tether mode with a configurable battery threshold
- Flash new firmware to the radio with version validation and configurable timeout
- Get a deferred firmware update operation that can be cancelled
- Cancel an ongoing file/GRiP transfer
- Observe radio events via a shared flow of
RadioResult<RadioCommand> - Observe radio state changes via a state flow
- Monitor connected mesh contacts via a shared flow, purged on disconnect
- Stream log messages via a shared flow
- Send local requests to the radio (processed on-device)
- Send messages over the mesh network with delivery status results
The code in this repository only contains samples for demonstration purposes.
To use the RSDK in your own applications, you will need to obtain an SDK token from goTenna by contacting [email protected].