microbit: Added funciton to allow the size of the GATT table to be configuraed

from the user's application.

The default ble-nrf51822 library does not provide a mechanism for the user
application to define size of the GATT attribute table size. It is important as
over 1.5K of sram is statically alllocated for SD.
master v2.5.0+mb4
Joe Finney 2016-02-08 01:01:53 +00:00
parent 2b2a9d0fab
commit 0963f913e0
2 changed files with 16 additions and 1 deletions

View File

@ -47,6 +47,7 @@ extern "C" void assert_nrf_callback(uint16_t line_num, const uint8_t *p_file_nam
void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t *p_file_name);
static void btle_handler(ble_evt_t *p_ble_evt);
static uint32_t gatt_table_size = BLE_GATTS_ATTR_TAB_SIZE_DEFAULT;
static void sys_evt_dispatch(uint32_t sys_evt)
{
@ -77,6 +78,18 @@ static uint32_t eventHandler()
return NRF_SUCCESS;
}
error_t
btle_set_gatt_table_size(uint32_t size)
{
if (size >= BLE_GATTS_ATTR_TAB_SIZE_MIN)
{
gatt_table_size = size;
return ERROR_NONE;
}
return ERROR_INVALID_PARAM;
}
error_t btle_init(void)
{
nrf_clock_lfclksrc_t clockSource;
@ -104,7 +117,8 @@ error_t btle_init(void)
static const bool IS_SRVC_CHANGED_CHARACT_PRESENT = true;
ble_enable_params_t enableParams = {
.gatts_enable_params = {
.service_changed = IS_SRVC_CHANGED_CHARACT_PRESENT
.service_changed = IS_SRVC_CHANGED_CHARACT_PRESENT,
.attr_tab_size = gatt_table_size
}
};
if (sd_ble_enable(&enableParams) != NRF_SUCCESS) {

View File

@ -27,6 +27,7 @@ extern "C" {
#include "ble.h"
error_t btle_init(void);
error_t btle_set_gatt_table_size(uint32_t size);
#ifdef __cplusplus
}