45 size_t send(
const uint8_t* data,
size_t len);
52 size_t send(
const char* str);
79 size_t read(uint8_t* buf,
size_t maxLen);
93 void onRxData(
const uint8_t* data,
size_t len);
114 bool initialized_ =
false;
117 uint16_t txCharHandle_ = 0;
125 static constexpr size_t RX_BUFFER_SIZE = 1024;
126 uint8_t rxBuffer_[RX_BUFFER_SIZE] = {};
127 std::atomic<size_t> rxHead_{0};
128 std::atomic<size_t> rxTail_{0};
131 volatile bool txCongested_ =
false;
132 volatile bool txInProgress_ =
false;
static constexpr ListenerToken INVALID_LISTENER
void onConnectionChange(bool connected)
Handles BLE connection state changes.
void setOnConnect(ConnectCallback cb)
void deinit()
Deinitializes BLE UART service runtime state.
int getchar()
Reads one byte from RX ring buffer.
size_t available() const
Returns number of buffered RX bytes.
std::function< void()> ConnectCallback
size_t read(uint8_t *buf, size_t maxLen)
Reads up to maxLen bytes from RX ring buffer.
bool isConnected() const
Returns whether BLE link is currently connected.
void onRxData(const uint8_t *data, size_t len)
Appends received BLE UART data into RX ring buffer.
std::function< void()> DisconnectCallback
bool txReady() const
Returns whether TX path is currently ready.
size_t send(const uint8_t *data, size_t len)
Sends binary payload to connected BLE peer via notifications.
void setOnDisconnect(DisconnectCallback cb)
bool init()
Initializes Nordic UART Service over BLE GATT.
static BleUartService & instance()
Returns singleton BLE UART service instance.
bool isInitialized() const