Getting errors related to logging

The application seems to stop at an instance where I invoke a Send call to send data over to a ble central, and the callstack looks as follows. Any way to narrow down the cause?



I tried the program later and I got the following stack. Thing is: nothing useful gets printed in the debug console

  • delaying sending the notification could've been an option but i'm thinking of a more robust solution.

    does ble_srv_is_notification_enabled() check whether the central has enabled the CCCD?

  • HI Morpho,

    What I meant was not about a specific time delay but more about wait for the write command that enable CCCD before you send the notification. 

    If you have a look into the ble_hrs.c file you can find that the on_write() function is called when BLE_GATTS_EVT_WRITE is received (in ble_hrs_on_ble_evt). 
    In side on_write() it will call on_hrm_cccd_write() if it's the write command to the cccd handle. 

    ble_srv_is_notification_enabled() will check if the value written to the CCCD handle is to enable or disable Notification (not Indication)

    You can implement something similar in your ble event handler of your service. 

  • so I verified that as soon as I tap on the CCCD button in the nRF app, if (p_evt_write->handle == p_hrs->hrm_handles.cccd_handle) condition becomes true.

    I'm developing a custom service. Where/What exactly is hrm_handles.cccd_handle set to?

  • I assume you were testing with the ble_app_hrm example ? The cccd_handle got it value when you call characteristic_add(). The handle is the location of the characteristic inside the attribute table in the softdevice. So when you declare a characteristic it will get a handle value from the softdevice assigned to. 
    Please have a look at characteristic_add() call inside ble_hrs_init(). 

    If you are developing a custom service, I would suggest to have a look at the ble_app_uart example. 

  • Yes I have mostly referred to ble_app_uart that uses ble NUS for reference, and am familiar with it more than HRS.


    After playing around, I realized taking the traditional approach that uses notification_enabled flag may not work since my Send() function doesn't really take in conn_handle for instance, and blcm_link_ctx_get() returned with an error of 14.

    So I tried just getting rid of APP_ERROR_CHECK() from my Send() function to avoid assertions, however now I just don't seem to be getting any event  (ble_cus_on_ble_evt isn't firing) upon pressing the Enable Notification button on the nRF Connect app,

    And its Value field remains N/A 


    Actually, for some weird reason, it seems to be picking up NUS as opposed to my custom service. This seems odd. Do you see what may be happening? I tried reinstalling the app to noa vail

Related