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

DLE (data length extension) and max att_mtu function to application

Hi,

I used sdk 15.2.0 version, I refer to the ATT_MTU Throughput Example to modify the Nordic UART Service (NUS) Application example.

Now I have some questions:

1. How could I check my program is turn on/off DLE or ATT_MTU function?

2. How could I proof turn on 『DLE or ATT_MTU』throughput higher than turn off?

By the way, I try to sniffer packet, but I don't know what different. could you support more document and experiment result for me?

Because I don't know how to show this function for my customer now.

3. The attachment is the sniffer log in Wireshark. You see No. 1090 packet that is to sent 247-byte data. This packet is an individual 27-byte to sent., but I turn on DLE function. I think this wrong that I think the packet is 247-byte by the once sent. (By the way, this test I use Samsung Note5 sent to nrf52)

nrf52_DLE_test_Note5.pcapng

Parents
  • Hi,

    Many of the examples you can find in the nRF5 SDK have the following line of code:

        err_code = nrf_ble_gatt_init(&m_gatt, gatt_evt_handler);
        APP_ERROR_CHECK(err_code);

    You can then get information about the supported lengths in the callback handler:

    /** @brief Function for handling events from the GATT library. */
    void gatt_evt_handler(nrf_ble_gatt_t * p_gatt, nrf_ble_gatt_evt_t const * p_evt)
    {
        if ((m_conn_handle == p_evt->conn_handle) && (p_evt->evt_id == NRF_BLE_GATT_EVT_ATT_MTU_UPDATED))
        {
            m_ble_nus_max_data_len = p_evt->params.att_mtu_effective - OPCODE_LENGTH - HANDLE_LENGTH;
            NRF_LOG_INFO("Data len is set to 0x%X(%d)", m_ble_nus_max_data_len, m_ble_nus_max_data_len);
        }
        NRF_LOG_DEBUG("ATT MTU exchange completed. central 0x%x peripheral 0x%x",
                      p_gatt->att_mtu_desired_central,
                      p_gatt->att_mtu_desired_periph);
    }

    Kenneth

Reply
  • Hi,

    Many of the examples you can find in the nRF5 SDK have the following line of code:

        err_code = nrf_ble_gatt_init(&m_gatt, gatt_evt_handler);
        APP_ERROR_CHECK(err_code);

    You can then get information about the supported lengths in the callback handler:

    /** @brief Function for handling events from the GATT library. */
    void gatt_evt_handler(nrf_ble_gatt_t * p_gatt, nrf_ble_gatt_evt_t const * p_evt)
    {
        if ((m_conn_handle == p_evt->conn_handle) && (p_evt->evt_id == NRF_BLE_GATT_EVT_ATT_MTU_UPDATED))
        {
            m_ble_nus_max_data_len = p_evt->params.att_mtu_effective - OPCODE_LENGTH - HANDLE_LENGTH;
            NRF_LOG_INFO("Data len is set to 0x%X(%d)", m_ble_nus_max_data_len, m_ble_nus_max_data_len);
        }
        NRF_LOG_DEBUG("ATT MTU exchange completed. central 0x%x peripheral 0x%x",
                      p_gatt->att_mtu_desired_central,
                      p_gatt->att_mtu_desired_periph);
    }

    Kenneth

Children
Related