nRF5 SDK v17.0.2
Modules | Data Structures | Macros | Typedefs | Enumerations | Functions
Nordic UART Service Client

Nordic UART Service Client module. More...

Modules

 Nordic UART Central Service configuration
 

Data Structures

struct  ble_nus_c_handles_t
 Handles on the connected peer device needed to interact with it. More...
 
struct  ble_nus_c_evt_t
 Structure containing the NUS event data received from the peer. More...
 
struct  ble_nus_c_s
 NUS Client structure. More...
 
struct  ble_nus_c_init_t
 NUS Client initialization structure. More...
 

Macros

#define BLE_NUS_C_DEF(_name)
 Macro for defining a ble_nus_c instance. More...
 
#define BLE_NUS_C_ARRAY_DEF(_name, _cnt)
 Macro for defining multiple ble_nus_c instances. More...
 
#define NUS_BASE_UUID   {{0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E}}
 
#define BLE_UUID_NUS_SERVICE   0x0001
 
#define BLE_UUID_NUS_RX_CHARACTERISTIC   0x0002
 
#define BLE_UUID_NUS_TX_CHARACTERISTIC   0x0003
 
#define OPCODE_LENGTH   1
 
#define HANDLE_LENGTH   2
 
#define BLE_NUS_MAX_DATA_LEN   (BLE_GATT_MTU_SIZE_DEFAULT - OPCODE_LENGTH - HANDLE_LENGTH)
 Maximum length of data (in bytes) that can be transmitted to the peer by the Nordic UART service module.
 

Typedefs

typedef struct ble_nus_c_s ble_nus_c_t
 
typedef void(* ble_nus_c_evt_handler_t )(ble_nus_c_t *p_ble_nus_c, ble_nus_c_evt_t const *p_evt)
 Event handler type. More...
 

Enumerations

enum  ble_nus_c_evt_type_t {
  BLE_NUS_C_EVT_DISCOVERY_COMPLETE,
  BLE_NUS_C_EVT_NUS_TX_EVT,
  BLE_NUS_C_EVT_DISCONNECTED
}
 NUS Client event type. More...
 

Functions

uint32_t ble_nus_c_init (ble_nus_c_t *p_ble_nus_c, ble_nus_c_init_t *p_ble_nus_c_init)
 Function for initializing the Nordic UART client module. More...
 
void ble_nus_c_on_db_disc_evt (ble_nus_c_t *p_ble_nus_c, ble_db_discovery_evt_t *p_evt)
 Function for handling events from the Database Discovery module. More...
 
void ble_nus_c_on_ble_evt (ble_evt_t const *p_ble_evt, void *p_context)
 Function for handling BLE events from the SoftDevice. More...
 
uint32_t ble_nus_c_tx_notif_enable (ble_nus_c_t *p_ble_nus_c)
 Function for requesting the peer to start sending notification of TX characteristic. More...
 
uint32_t ble_nus_c_string_send (ble_nus_c_t *p_ble_nus_c, uint8_t *p_string, uint16_t length)
 Function for sending a string to the server. More...
 
uint32_t ble_nus_c_handles_assign (ble_nus_c_t *p_ble_nus_c, uint16_t conn_handle, ble_nus_c_handles_t const *p_peer_handles)
 Function for assigning handles to this instance of nus_c. More...
 

Detailed Description

Nordic UART Service Client module.

This module contains the APIs and types exposed by the Nordic UART Service Client module. The application can use these APIs and types to perform the discovery of the Nordic UART Service at the peer and to interact with it.

Note
The application must register this module as the BLE event observer by using the NRF_SDH_BLE_OBSERVER macro. Example:

Macro Definition Documentation

#define BLE_NUS_C_ARRAY_DEF (   _name,
  _cnt 
)

Macro for defining multiple ble_nus_c instances.

Parameters
_nameName of the array of instances.
_cntNumber of instances to define.
#define BLE_NUS_C_DEF (   _name)

Macro for defining a ble_nus_c instance.

Parameters
_nameName of the instance.
#define BLE_UUID_NUS_RX_CHARACTERISTIC   0x0002

The UUID of the RX Characteristic.

#define BLE_UUID_NUS_SERVICE   0x0001

The UUID of the Nordic UART Service.

#define BLE_UUID_NUS_TX_CHARACTERISTIC   0x0003

The UUID of the TX Characteristic.

#define NUS_BASE_UUID   {{0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x00, 0x00, 0x40, 0x6E}}

Used vendor-specific UUID.

Typedef Documentation

typedef void(* ble_nus_c_evt_handler_t)(ble_nus_c_t *p_ble_nus_c, ble_nus_c_evt_t const *p_evt)

Event handler type.

This is the type of the event handler that is to be provided by the application of this module to receive events.

Enumeration Type Documentation

NUS Client event type.

Enumerator
BLE_NUS_C_EVT_DISCOVERY_COMPLETE 

Event indicating that the NUS service and its characteristics were found.

BLE_NUS_C_EVT_NUS_TX_EVT 

Event indicating that the central received something from a peer.

BLE_NUS_C_EVT_DISCONNECTED 

Event indicating that the NUS server disconnected.

Function Documentation

uint32_t ble_nus_c_handles_assign ( ble_nus_c_t p_ble_nus_c,
uint16_t  conn_handle,
ble_nus_c_handles_t const *  p_peer_handles 
)

Function for assigning handles to this instance of nus_c.

Call this function when a link has been established with a peer to associate the link to this instance of the module. This makes it possible to handle several links and associate each link to a particular instance of this module. The connection handle and attribute handles are provided from the discovery event BLE_NUS_C_EVT_DISCOVERY_COMPLETE.

Parameters
[in]p_ble_nus_cPointer to the NUS client structure instance to associate with these handles.
[in]conn_handleConnection handle to associated with the given NUS Instance.
[in]p_peer_handlesAttribute handles on the NUS server that you want this NUS client to interact with.
Return values
NRF_SUCCESSIf the operation was successful.
NRF_ERROR_NULLIf a p_nus was a NULL pointer.
err_codeOtherwise, this API propagates the error code returned by function nrf_ble_gq_item_add.
uint32_t ble_nus_c_init ( ble_nus_c_t p_ble_nus_c,
ble_nus_c_init_t p_ble_nus_c_init 
)

Function for initializing the Nordic UART client module.

This function registers with the Database Discovery module for the NUS. The Database Discovery module looks for the presence of a NUS instance at the peer when a discovery is started.

Parameters
[in]p_ble_nus_cPointer to the NUS client structure.
[in]p_ble_nus_c_initPointer to the NUS initialization structure that contains the initialization information.
Return values
NRF_SUCCESSIf the module was initialized successfully.
err_codeOtherwise, this function propagates the error code returned by the Database Discovery module API ble_db_discovery_evt_register.
void ble_nus_c_on_ble_evt ( ble_evt_t const *  p_ble_evt,
void *  p_context 
)

Function for handling BLE events from the SoftDevice.

This function handles the BLE events received from the SoftDevice. If a BLE event is relevant to the NUS module, the function uses the event's data to update internal variables and, if necessary, send events to the application.

Parameters
[in]p_ble_evtPointer to the BLE event.
[in]p_contextPointer to the NUS client structure.
void ble_nus_c_on_db_disc_evt ( ble_nus_c_t p_ble_nus_c,
ble_db_discovery_evt_t p_evt 
)

Function for handling events from the Database Discovery module.

This function handles an event from the Database Discovery module, and determines whether it relates to the discovery of NUS at the peer. If it does, the function calls the application's event handler to indicate that NUS was discovered at the peer. The function also populates the event with service-related information before providing it to the application.

Parameters
[in]p_ble_nus_cPointer to the NUS client structure.
[in]p_evtPointer to the event received from the Database Discovery module.
uint32_t ble_nus_c_string_send ( ble_nus_c_t p_ble_nus_c,
uint8_t *  p_string,
uint16_t  length 
)

Function for sending a string to the server.

This function writes the RX characteristic of the server.

Parameters
[in]p_ble_nus_cPointer to the NUS client structure.
[in]p_stringString to be sent.
[in]lengthLength of the string.
Return values
NRF_SUCCESSIf the string was sent successfully.
err_codeOtherwise, this API propagates the error code returned by function nrf_ble_gq_item_add.
uint32_t ble_nus_c_tx_notif_enable ( ble_nus_c_t p_ble_nus_c)

Function for requesting the peer to start sending notification of TX characteristic.

This function enables notifications of the NUS TX characteristic at the peer by writing to the CCCD of the NUS TX characteristic.

Parameters
p_ble_nus_cPointer to the NUS client structure.
Return values
NRF_SUCCESSIf the operation was successful.
err_codeOtherwise, this API propagates the error code returned by function nrf_ble_gq_item_add.

Documentation feedback | Developer Zone | Subscribe | Updated