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

about BLE_HIDS_EVT_NOTIF_ENABLED

Hi Nordic team,

I have a simple HID BLE device which send volume+/- multimedia keys to a Android device, it works well if it is first time to pair with the Android device, but if I switch off Bluetooth in Android's setting menu and switch on again, the volume+/- keys no longer working.

I checked and debugged and found it is caused by the BLE device not getting the BLE_HIDS_EVT_NOTIF_ENABLED from the Android phone, so the HVX return code is 0x8 and failed. I also search the forum and found there's no way to enable the notify on peripheral side, I also found there're solutions is to call "sd_ble_gatts_sys_attr_set(m_conn_handle, NULL, 0, 0)", but I'm not sure where to put this function, I have tried that function in "BLE_GAP_EVT_CONNECTED", "BLE_GATTS_EVT_SYS_ATTR_MISSING" events but none of them works.

Any suggestion where am I doing wrong and how to fix this to enable the notify? Thanks very much..

added main.c here: main.c

Parents
  • Hi Anders,

    I rewire the whole project based on ble_app_hid_keyboard and upload the main.c in the first post and do the test again, when BLE keyboard first pair with Android, works fine, when switch off the Bluetooth in Android, BLE disconnected and save the Service context successfully. the problem comes when i switch Bluetooth on again, BLE keyboard re-connected with Android and calls the calling sd_ble_gatts_sys_attr_set function, and got a error code of 0xb(NRF_ERROR_INVALID_DATA), and the second call of sd_ble_gatts_sys_attr_set also same error(0xb).

    One thing to mention, i did see "BLE_GAP_EVT_CONNECTED" this time after re-write the whole project, but still failed on function of sd_ble_gatts_sys_attr_set, is this the reason why my BLE not working after re-connect? This time i got 0x3401 instead of 0x8 error code.

    then i tested with iPhone, it also call sd_ble_gatts_sys_attr_get when disconnect and calls sd_ble_gatts_sys_attr_set when re-connect, the only difference is sd_ble_gatts_sys_attr_set is succeed and BLE keyboard is working after re-connect.

    Any suggestion why cause such result?

    Thanks,

Reply
  • Hi Anders,

    I rewire the whole project based on ble_app_hid_keyboard and upload the main.c in the first post and do the test again, when BLE keyboard first pair with Android, works fine, when switch off the Bluetooth in Android, BLE disconnected and save the Service context successfully. the problem comes when i switch Bluetooth on again, BLE keyboard re-connected with Android and calls the calling sd_ble_gatts_sys_attr_set function, and got a error code of 0xb(NRF_ERROR_INVALID_DATA), and the second call of sd_ble_gatts_sys_attr_set also same error(0xb).

    One thing to mention, i did see "BLE_GAP_EVT_CONNECTED" this time after re-write the whole project, but still failed on function of sd_ble_gatts_sys_attr_set, is this the reason why my BLE not working after re-connect? This time i got 0x3401 instead of 0x8 error code.

    then i tested with iPhone, it also call sd_ble_gatts_sys_attr_get when disconnect and calls sd_ble_gatts_sys_attr_set when re-connect, the only difference is sd_ble_gatts_sys_attr_set is succeed and BLE keyboard is working after re-connect.

    Any suggestion why cause such result?

    Thanks,

Children
No Data
Related