CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::mod_ble_serial::BleUartService Class Reference

#include <BleUartService.h>

Public Types

using ConnectCallback = std::function<void()>
using DisconnectCallback = std::function<void()>

Public Member Functions

bool init ()
 Initializes Nordic UART Service over BLE GATT.
void deinit ()
 Deinitializes BLE UART service runtime state.
bool isInitialized () const
size_t send (const uint8_t *data, size_t len)
 Sends binary payload to connected BLE peer via notifications.
size_t send (const char *str)
 Sends null-terminated string via BLE UART notifications.
bool txReady () const
 Returns whether TX path is currently ready.
size_t available () const
 Returns number of buffered RX bytes.
int getchar ()
 Reads one byte from RX ring buffer.
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.
void onConnectionChange (bool connected)
 Handles BLE connection state changes.
void setOnConnect (ConnectCallback cb)
void setOnDisconnect (DisconnectCallback cb)

Static Public Member Functions

static BleUartService & instance ()
 Returns singleton BLE UART service instance.

Detailed Description

BLE UART Service (Nordic UART Service compatible)

Provides serial communication over BLE using IBluetoothController API only.

  • Service UUID: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
  • RX UUID: 6E400002-... (Write, Write Without Response)
  • TX UUID: 6E400003-... (Notify)

Definition at line 19 of file BleUartService.h.

Member Typedef Documentation

◆ ConnectCallback

Definition at line 102 of file BleUartService.h.

◆ DisconnectCallback

Definition at line 103 of file BleUartService.h.

Member Function Documentation

◆ available()

size_t cdc::mod_ble_serial::BleUartService::available ( ) const

Returns number of buffered RX bytes.

Check if data is available to read

Returns
Number of bytes available
Available byte count.

Definition at line 202 of file BleUartService.cpp.

Referenced by getchar(), and read().

◆ deinit()

void cdc::mod_ble_serial::BleUartService::deinit ( )

◆ getchar()

int cdc::mod_ble_serial::BleUartService::getchar ( )

Reads one byte from RX ring buffer.

Read single character

Returns
Character or -1 if none available
Byte value or -1 when empty.

Definition at line 219 of file BleUartService.cpp.

References available().

Referenced by read().

◆ init()

◆ instance()

BleUartService & cdc::mod_ble_serial::BleUartService::instance ( )
static

◆ isConnected()

bool cdc::mod_ble_serial::BleUartService::isConnected ( ) const

Returns whether BLE link is currently connected.

Check if a device is connected

Returns
true if controller reports active connection.

Definition at line 252 of file BleUartService.cpp.

References cdc::hal::getBluetoothControllerInstance().

Referenced by send(), and txReady().

◆ isInitialized()

bool cdc::mod_ble_serial::BleUartService::isInitialized ( ) const
inline

Check if service is initialized

Definition at line 35 of file BleUartService.h.

◆ onConnectionChange()

void cdc::mod_ble_serial::BleUartService::onConnectionChange ( bool connected)

Handles BLE connection state changes.

Handle connection state change (called from BLE connection callbacks)

Parameters
connectedNew connection state.

Definition at line 283 of file BleUartService.cpp.

References LOG_I, and TAG.

Referenced by init().

◆ onRxData()

void cdc::mod_ble_serial::BleUartService::onRxData ( const uint8_t * data,
size_t len )

Appends received BLE UART data into RX ring buffer.

Handle incoming RX data (called from GATT write callback)

Parameters
dataReceived payload.
lenPayload length.

Definition at line 262 of file BleUartService.cpp.

Referenced by init().

◆ read()

size_t cdc::mod_ble_serial::BleUartService::read ( uint8_t * buf,
size_t maxLen )

Reads up to maxLen bytes from RX ring buffer.

Read data into buffer

Parameters
bufOutput buffer
maxLenMaximum bytes to read
Returns
Number of bytes read
Parameters
bufOutput buffer.
maxLenMaximum bytes to read.
Returns
Number of bytes read.

Definition at line 236 of file BleUartService.cpp.

References available(), and getchar().

◆ send() [1/2]

size_t cdc::mod_ble_serial::BleUartService::send ( const char * str)

Sends null-terminated string via BLE UART notifications.

Send string to connected device

Parameters
strNull-terminated string
Returns
Number of bytes sent
Parameters
strString to send.
Returns
Number of bytes sent.

Definition at line 185 of file BleUartService.cpp.

References send().

◆ send() [2/2]

size_t cdc::mod_ble_serial::BleUartService::send ( const uint8_t * data,
size_t len )

Sends binary payload to connected BLE peer via notifications.

Send data to connected device

Parameters
dataData to send
lenData length
Returns
Number of bytes sent
Parameters
dataData buffer.
lenData length.
Returns
Number of bytes sent.

Definition at line 138 of file BleUartService.cpp.

References cdc::hal::getBluetoothControllerInstance(), and isConnected().

Referenced by send().

◆ setOnConnect()

void cdc::mod_ble_serial::BleUartService::setOnConnect ( ConnectCallback cb)
inline

Definition at line 105 of file BleUartService.h.

◆ setOnDisconnect()

void cdc::mod_ble_serial::BleUartService::setOnDisconnect ( DisconnectCallback cb)
inline

Definition at line 106 of file BleUartService.h.

◆ txReady()

bool cdc::mod_ble_serial::BleUartService::txReady ( ) const

Returns whether TX path is currently ready.

Check if TX is ready (not congested)

Returns
true when initialized, connected, and uncongested.

Definition at line 194 of file BleUartService.cpp.

References isConnected().


The documentation for this class was generated from the following files: