NimBLE-Arduino
NimBLE-Arduino copied to clipboard
Added Stream Class Examples. Fixes a couple bugs in Stream Class.
Creates examples demonstrating the new NimBLEStream classes that provide Arduino Stream interface (print(), println(), read(), available()) over BLE characteristics. Examples Added
NimBLE_Stream_Echo - Minimal echo server (52 lines), demonstrates basic API
NimBLE_Stream_Server - Full server implementation with connection management, MTU negotiation, bidirectional communication
NimBLE_Stream_Client - Client with automatic discovery, reconnection, pairs with server example
Usage
NimBLEStreamServer bleStream;
void setup() { NimBLEDevice::init("BLE-Device"); NimBLEDevice::createServer();
// Initialize with custom UUIDs, enable writes
bleStream.init(serviceUUID, charUUID, true, false);
bleStream.begin();
NimBLEDevice::getAdvertising()->start();
}
void loop() { if (bleStream.hasSubscriber()) { bleStream.println("Hello via BLE"); // Just like Serial
if (bleStream.available()) {
char c = bleStream.read();
bleStream.write(c); // Echo back
}
}
}
Documentation
Individual README per example with usage instructions
STREAM_EXAMPLES.md overview covering API, use cases, troubleshooting
Source Fixes
Fixed issues in merged NimBLEStream implementation:
Missing <cstring> include when Arduino unavailable
Incorrect return value in uart_log_printfv (returned calculated length instead of written bytes)
Format specifier mismatch (%u → %zu for size_t)
Nice, thanks!