This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Avoid service discovery

I am using S130, SDK13 and NRF52832 both on my central and peripheral - custom boards.

I am trying to avoid service discovery on my peripheral. 

I have set the service_changed to 0 when configuring the softdevice.

On my central I do not run service-discovery, but my peripheral does not get a handle to the service even though I run this code when I connect:

void ble_lbs_status_update (ble_alarm_service_t* p_our_service, uint8_t *p_lock_state, uint16_t len) {

    uint32_t err_code = NRF_SUCCESS;

    ble_gatts_value_t gatts_value;

    // Initialize value struct.

    memset(&gatts_value, 0, sizeof(gatts_value));

    gatts_value.len     = sizeof(uint8_t)*len;

    gatts_value.offset  = 0;

    gatts_value.p_value = p_lock_state;

    // new

    // Update database.

    err_code = sd_ble_gatts_value_set (p_our_service->conn_handle, p_our_service->status_char_handles.value_handle, &gatts_value);

    if (err_code != NRF_SUCCESS)

    {

       return err_code;

    }

    //new

if (p_our_service->conn_handle != BLE_CONN_HANDLE_INVALID)

{

uint16_t               len = 5;

ble_gatts_hvx_params_t hvx_params;

memset(&hvx_params, 0, sizeof(hvx_params));

hvx_params.handle = p_our_service->status_char_handles.value_handle;

        hvx_params.type   = BLE_GATT_HVX_NOTIFICATION;

        hvx_params.offset = gatts_value.offset;

        hvx_params.p_len  = &gatts_value.len;

        hvx_params.p_data = gatts_value.p_value;

sd_ble_gatts_hvx(p_our_service->conn_handle, &hvx_params);

}

}

Do you have a check-list of how to avoid service discovery on a peripheral?

Regards
Jens

Parents Reply
  • Unfortunately I am not familiar with that example, but seems like it is written for nRF5 SDK v15, while you are using sdk13? Would it be possible to use the latest Softdevice and SDK version?

    Anyway, Can you check with a sniffer that the write is actually sent on air?

    Did you do a service discovery in nRFConnect?

    Also, could you check in the main ble event handler if you get the write event there?

Children
Related