Repositories
bleRPC is organized into a main monorepo and several protocol library packages for each supported language.
Main Repository
tdaira/blerpc
The main monorepo containing firmware, central clients, code generators, and tests.
| Directory | Description |
|---|---|
peripheral/ | Zephyr peripheral firmware (C) — nRF54L15 & EFR32xG22E |
peripheral_py/ | Python peripheral (bless) for role-reversal testing |
central/ | Python central client (bleak) + integration tests |
central_fw/ | Zephyr central firmware (C) for device-to-device communication |
central_android/ | Android central app (Kotlin) with test runner |
central_ios/ | iOS central app (Swift) with test runner |
proto/ | Protocol Buffers definitions (blerpc.proto) |
src/ | Shared C source (container, command, BLE service) |
tools/generate-handlers/ | Code generator (Go) — generates handlers and clients for all languages |
boards/ | Custom board definitions (EFR32xG22E) |
tests/ | Standalone C unit tests |
Protocol Libraries
Platform-independent protocol encoding/decoding libraries, published as separate packages for each language.
blerpc-protocol
Python C
Container splitting/reassembly and command encoding/decoding. The Python package is installable via pip. The C implementation is header-only for embedded use.
pip install git+https://github.com/tdaira/blerpc-protocol.git
blerpc-protocol-swift
Swift
Swift Package for iOS and macOS. Zero external dependencies (Foundation only). Supports iOS 16+ and macOS 13+.
// Swift Package Manager
.package(url: "https://github.com/tdaira/blerpc-protocol-swift", from: "0.1.0")
blerpc-protocol-kt
Kotlin
Kotlin library for Android. Published to GitHub Packages (Maven).
implementation("com.blerpc:blerpc-protocol-kt:0.1.0")
Architecture Overview
How the repositories relate to each other:
bleRPC (monorepo)
+-----------------------------------------+
| |
| proto/blerpc.proto |
| | |
| v |
| tools/generate-handlers (Go) |
| | |
| +---> peripheral/src/ |
| | generated_handlers.{c,h} |
| | |
| +---> central/blerpc/generated/ |
| | generated_client.py |
| | |
| +---> central_android/.../ |
| | GeneratedClient.kt |
| | |
| +---> central_ios/.../ |
| GeneratedClient.swift |
| |
+-----------------------------------------+
| | |
v v v
blerpc-protocol blerpc- blerpc-
(Python + C) protocol-kt protocol-swift
CI / CD
Each repository has GitHub Actions CI that runs on every push and pull request:
| Repository | CI Checks |
|---|---|
| blerpc | C standalone tests, Python tests + ruff lint, Go lint + build, Peripheral firmware build (nRF54L15 + EFR32xG22E), iOS build, Android build |
| blerpc-protocol | Python tests + lint, C tests |
| blerpc-protocol-swift | swift build, swift test, SwiftLint |
| blerpc-protocol-kt | Gradle build, Gradle test, ktlint |
License
All bleRPC repositories are licensed under the GNU Lesser General Public License v3.0 (LGPL-3.0).