| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Modules | Data Structures | Macros | Typedefs | Enumerations | Functions
LED Button Service Client
BLE Services

The LED Button Service client can be used to set a LED, and read a button state on a LED button service server. More...

## Modules
| Nordic LED Button Service Client configuration

## Data Structures
struct | ble_button_t
| Structure containing the Button value received from the peer. More...
struct | lbs_db_t
| Structure containing the handles related to the LED Button Service found on the peer. More...
struct | ble_lbs_c_evt_t
| LED Button Event structure. More...
struct | ble_lbs_c_s
| LED Button Client structure. More...
struct | ble_lbs_c_init_t
| LED Button Client initialization structure. More...

## Macros
#define | LBS_UUID_BASE
#define | LBS_UUID_SERVICE 0x1523
#define | LBS_UUID_BUTTON_CHAR 0x1524
#define | LBS_UUID_LED_CHAR 0x1525

## Typedefs
typedef struct ble_lbs_c_s | ble_lbs_c_t
typedef void(* | ble_lbs_c_evt_handler_t )(ble_lbs_c_t *p_ble_lbs_c, ble_lbs_c_evt_t *p_evt)
| Event handler type. More...

## Enumerations
enum | ble_lbs_c_evt_type_t { BLE_LBS_C_EVT_DISCOVERY_COMPLETE = 1, BLE_LBS_C_EVT_BUTTON_NOTIFICATION }
| LBS Client event type. More...

## Functions
uint32_t | ble_lbs_c_init (ble_lbs_c_t *p_ble_lbs_c, ble_lbs_c_init_t *p_ble_lbs_c_init)
| Function for initializing the LED Button client module. More...
void | ble_lbs_c_on_ble_evt (ble_lbs_c_t *p_ble_lbs_c, const ble_evt_t *p_ble_evt)
| Function for handling BLE events from the SoftDevice. More...
uint32_t | ble_lbs_c_button_notif_enable (ble_lbs_c_t *p_ble_lbs_c)
| Function for requesting the peer to start sending notification of the Button Characteristic. More...
void | ble_lbs_on_db_disc_evt (ble_lbs_c_t *p_ble_lbs_c, const ble_db_discovery_evt_t *p_evt)
| Function for handling events from the database discovery module. More...
uint32_t | ble_lbs_c_handles_assign (ble_lbs_c_t *p_ble_lbs_c, uint16_t conn_handle, const lbs_db_t *p_peer_handles)
| Function for assigning a Handles to this instance of lbs_c. More...
uint32_t | ble_lbs_led_status_send (ble_lbs_c_t *p_ble_lbs_c, uint8_t status)
| Function for writing the LED status to the connected server. More...

## Detailed Description

The LED Button Service client can be used to set a LED, and read a button state on a LED button service server.

This module contains the APIs and types exposed by the LED Button Service Client module. These APIs and types can be used by the application to perform discovery of LED Button Service at the peer and interact with it.

Note
  The application must propagate BLE stack events to this module by calling ble_lbs_c_on_ble_evt().

## Macro Definition Documentation

#define LBS_UUID_BASE

Value:
{0x23, 0xD1, 0xBC, 0xEA, 0x5F, 0x78, 0x23, 0x15, \
0xDE, 0xEF, 0x12, 0x12, 0x00, 0x00, 0x00, 0x00}

## Typedef Documentation

typedef void(* ble_lbs_c_evt_handler_t)(ble_lbs_c_t *p_ble_lbs_c, ble_lbs_c_evt_t *p_evt)

Event handler type.

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

## Enumeration Type Documentation

enum ble_lbs_c_evt_type_t

LBS Client event type.

Enumerator
BLE_LBS_C_EVT_DISCOVERY_COMPLETE | Event indicating that the LED Button Service has been discovered at the peer.
BLE_LBS_C_EVT_BUTTON_NOTIFICATION | Event indicating that a notification of the LED Button Button characteristic has been received from the peer.

## Function Documentation

uint32_t ble_lbs_c_button_notif_enable | ( | ble_lbs_c_t * | p_ble_lbs_c | ) |

Function for requesting the peer to start sending notification of the Button Characteristic.

This function will enable to notification of the Button at the peer by writing to the CCCD of the Button Characteristic.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED Button Client structure.

Return values

  NRF_SUCCESS | If the SoftDevice has been requested to write to the CCCD of the peer. Otherwise, an error code. This function propagates the error code returned by the SoftDevice API sd_ble_gattc_write. NRF_ERROR_INVALID_STATE if no connection handle has been assigned (ble_lbs_c_handles_assign) NRF_ERROR_NULL if the given parameter is NULL

uint32_t ble_lbs_c_handles_assign | ( | ble_lbs_c_t * | p_ble_lbs_c,
|  | uint16_t | conn_handle,
|  | const lbs_db_t * | p_peer_handles
| ) |  |

Function for assigning a Handles to this instance of lbs_c.

Call this function when a link has been established with a peer to associate this 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.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED Button client structure instance to associate.
  [in] | conn_handle | Connection handle to associate with the given LED Button Client Instance.
  [in] | p_peer_handles | LED Button Service handles found on the peer (from BLE_LBS_C_EVT_DISCOVERY_COMPLETE event).

uint32_t ble_lbs_c_init | ( | ble_lbs_c_t * | p_ble_lbs_c,
|  | ble_lbs_c_init_t * | p_ble_lbs_c_init
| ) |  |

Function for initializing the LED Button client module.

This function will register with the DB Discovery module. There it registers for the LED Button Service. Doing so will make the DB Discovery module look for the presence of a LED Button Service instance at the peer when a discovery is started.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED Button client structure.
  [in] | p_ble_lbs_c_init | Pointer to the LED Button initialization structure containing the initialization information.

Return values

  NRF_SUCCESS | On successful initialization. Otherwise an error code. This function propagates the error code returned by the Database Discovery module API ble_db_discovery_evt_register.

void ble_lbs_c_on_ble_evt | ( | ble_lbs_c_t * | p_ble_lbs_c,
|  | const ble_evt_t * | p_ble_evt
| ) |  |

Function for handling BLE events from the SoftDevice.

This function will handle the BLE events received from the SoftDevice. If a BLE event is relevant to the LED Button Client module, then it uses it to update interval variables and, if necessary, send events to the application.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED button client structure.
  [in] | p_ble_evt | Pointer to the BLE event.

uint32_t ble_lbs_led_status_send | ( | ble_lbs_c_t * | p_ble_lbs_c,
|  | uint8_t | status
| ) |  |

Function for writing the LED status to the connected server.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED Button client structure.
  [in] | status | LED status to send.

Return values

  NRF_SUCCESS | If the staus was sent successfully. Otherwise, an error code is returned.

void ble_lbs_on_db_disc_evt | ( | ble_lbs_c_t * | p_ble_lbs_c,
|  | const ble_db_discovery_evt_t * | p_evt
| ) |  |

Function for handling events from the database discovery module.

Call this function when getting a callback event from the DB discovery module. This function will handle an event from the database discovery module, and determine if it relates to the discovery of LED Button service at the peer. If so, it will call the application's event handler indicating that the LED Button service has been discovered at the peer. It also populates the event with the service related information before providing it to the application.

Parameters

  [in] | p_ble_lbs_c | Pointer to the LED Button client structure.
  [in] | p_evt | Pointer to the event received from the database discovery module.