NimBLE_Stream_Server

Example of the component h2zero/esp-nimble-cpp v2.4.0
# NimBLE Stream Server Example

This example demonstrates how to use the `NimBLEStreamServer` class to create a BLE GATT server that behaves like a serial port using the familiar Arduino Stream interface.

## Features

- Uses Arduino Stream interface (print, println, read, available, etc.)
- Automatic connection management
- Bidirectional communication
- Buffered TX/RX using ring buffers
- Similar usage to Serial communication

## How it Works

1. Creates a BLE GATT server with a custom service and characteristic
2. Initializes `NimBLEStreamServer` with the characteristic configured for notifications and writes
3. Uses familiar Stream methods like `print()`, `println()`, `read()`, and `available()`
4. Automatically handles connection state and MTU negotiation

## Usage

1. Build and flash this example to your ESP32 using ESP-IDF (`idf.py build flash monitor`)
2. The device will advertise as "NimBLE-Stream"
3. Connect with a BLE client (such as the NimBLE_Stream_Client example or a mobile app)
4. Once connected, the server will:
   - Send periodic messages to the client
   - Echo back any data received from the client
   - Display all communication in `idf.py monitor`

## Service UUIDs

- Service: `6E400001-B5A3-F393-E0A9-E50E24DCCA9E`
- Characteristic: `6E400002-B5A3-F393-E0A9-E50E24DCCA9E`

These are based on the Nordic UART Service (NUS) UUIDs for compatibility with many BLE terminal apps.

## Compatible With

- NimBLE_Stream_Client example
- nRF Connect mobile app
- Serial Bluetooth Terminal apps
- Any BLE client that supports characteristic notifications and writes

To create a project from this example, run:

idf.py create-project-from-example "h2zero/esp-nimble-cpp=2.4.0:NimBLE_Stream_Server"

or download archive (~3.46 KB)