NimBLE-Arduino icon indicating copy to clipboard operation
NimBLE-Arduino copied to clipboard

Added Stream Class Examples. Fixes a couple bugs in Stream Class.

Open doudar opened this issue 1 month ago • 1 comments

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)

doudar avatar Nov 24 '25 16:11 doudar

Nice, thanks!

h2zero avatar Nov 24 '25 20:11 h2zero