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

Nus profile seems to cause system reset if the data length too long.

iphone5_b.psdm370_android6_b.psdlong_write_error.pngI using SDK11. I porting nus profile to my system and make a customer's UUID. I use Lightblue on iPhone 5 to connect my system. I sent a data through my customer's UUID. My system work fine when the data length is less than or equal 20 bytes. It will cause system reset if the data length is great than 20 bytes. Was the softdevice error, or I made something wrong?

Parents
  • The system is probably reset because APP_ERROR_CHECK() is called with something else than NRF_SUCCESS (0x00000000) somewhere. If you call ble_nus_string_send() with a longer length than 20 bytes it will return NRF_ERROR_INVALID_PARAM.

    The maximum ATT MTU with the S130 v2 is 23 bytes, the header is 3 bytes, so up to 20 bytes of data is allowed.

  • I use ble_app_uart example to test. I modified code to print event mesaage. The code is as follows.

    static void ble_evt_dispatch(ble_evt_t * p_ble_evt)
    {
        ***printf("event=%d\n", p_ble_evt->header.evt_id);***
        ble_conn_params_on_ble_evt(p_ble_evt);
        ble_nus_on_ble_evt(&m_nus, p_ble_evt);
        on_ble_evt(p_ble_evt);
        ble_advertising_on_ble_evt(p_ble_evt);
        bsp_btn_ble_on_ble_evt(p_ble_evt);
    }
    

    I got some debug mesages from UART as follows:

    UART Start!

    event=16

    event=80 <-- sent sent 5 characters

    12345

    event=80 <-- sent sent 10 characters

    1234567890

    event=80 <-- sent sent 20 characters

    12345678901234567890

    event=2 <-- sent 22 characters BLE disconnect from phone

    The project of ble_app_uart seems same issue.

    Our QA team is makeing critical test. They sent unpredictable data to test it.

Reply
  • I use ble_app_uart example to test. I modified code to print event mesaage. The code is as follows.

    static void ble_evt_dispatch(ble_evt_t * p_ble_evt)
    {
        ***printf("event=%d\n", p_ble_evt->header.evt_id);***
        ble_conn_params_on_ble_evt(p_ble_evt);
        ble_nus_on_ble_evt(&m_nus, p_ble_evt);
        on_ble_evt(p_ble_evt);
        ble_advertising_on_ble_evt(p_ble_evt);
        bsp_btn_ble_on_ble_evt(p_ble_evt);
    }
    

    I got some debug mesages from UART as follows:

    UART Start!

    event=16

    event=80 <-- sent sent 5 characters

    12345

    event=80 <-- sent sent 10 characters

    1234567890

    event=80 <-- sent sent 20 characters

    12345678901234567890

    event=2 <-- sent 22 characters BLE disconnect from phone

    The project of ble_app_uart seems same issue.

    Our QA team is makeing critical test. They sent unpredictable data to test it.

Children
No Data
Related