diff --git a/components/ble/ble_services/ble_lbs/ble_lbs.c b/components/ble/ble_services/ble_lbs/ble_lbs.c index 1c83a99..5324428 100644 --- a/components/ble/ble_services/ble_lbs/ble_lbs.c +++ b/components/ble/ble_services/ble_lbs/ble_lbs.c @@ -60,6 +60,24 @@ static void on_write(ble_lbs_t * p_lbs, ble_evt_t const * p_ble_evt) } } +static void on_rw_authorize_request(ble_lbs_t * p_lbs, ble_evt_t const * p_ble_evt) +{ + ble_gatts_rw_authorize_reply_params_t reply_params; + ble_gatts_evt_rw_authorize_request_t const * p_evt_rw_auth = &p_ble_evt->evt.gatts_evt.params.authorize_request; + + memset (&reply_params, 0, sizeof(ble_gatts_rw_authorize_reply_params_t)); + + if ( (p_evt_rw_auth->type == BLE_GATTS_AUTHORIZE_TYPE_READ) && + (p_lbs->button_char_handles.value_handle == p_evt_rw_auth->request.read.handle)) + { + reply_params.type = BLE_GATTS_AUTHORIZE_TYPE_READ; + reply_params.params.read.gatt_status = BLE_GATT_STATUS_SUCCESS; + + (void) sd_ble_gatts_rw_authorize_reply(p_ble_evt->evt.common_evt.conn_handle, &reply_params); + + } + +} void ble_lbs_on_ble_evt(ble_evt_t const * p_ble_evt, void * p_context) { @@ -71,6 +89,10 @@ void ble_lbs_on_ble_evt(ble_evt_t const * p_ble_evt, void * p_context) on_write(p_lbs, p_ble_evt); break; + case BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST: + on_rw_authorize_request(p_lbs, p_ble_evt); + break; + default: // No implementation needed. break; @@ -106,6 +128,8 @@ uint32_t ble_lbs_init(ble_lbs_t * p_lbs, const ble_lbs_init_t * p_lbs_init) add_char_params.max_len = sizeof(uint8_t); add_char_params.char_props.read = 1; add_char_params.char_props.notify = 1; + add_char_params.is_defered_read = 1; + add_char_params.read_access = SEC_OPEN; add_char_params.cccd_write_access = SEC_OPEN;