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

nRF5_SDK_17.0.2_d674dde\examples\dfu\secure_bootloader\pca10056_s140_ble_debug\ses won't advertise DfuTarg name

So I now have nRF 52840 dk and I'm working through the secure bootloader example. I am using SES. (Windows).

So I built and flashed the the app and it looks fine, it has Leds 1 and 2 lit and the software layout looks fine (in nRF Connect)

In trying to use the Connect J-Link, I see the output (in part)

<debug> nrf_dfu_ble: Enabling the BLE stack.
<debug> nrf_dfu_ble: No advertising name found
<debug> nrf_dfu_ble: Using default advertising name
<debug> nrf_dfu_ble: Advertising...

As far as I know the advertising name is defined in the sdk_config.h?

// <s> NRF_DFU_BLE_ADV_NAME - Default advertising name.
#ifndef NRF_DFU_BLE_ADV_NAME
#define NRF_DFU_BLE_ADV_NAME "DfuTarg"
#endif

I've tried following the code and stepping into, but it's a rabbit warren and I got lost.

Can you help please.

Gordon

Parents
  • And just as a matter of interest has anyone ever considered that it might be rather helpful to have some code comments that actually EXPLAIN what each c file is doing and it's purpose. This code is hopeless. How many variables and definitions and names do you actually need to just get an advertisement name... ? Honestly, it's a security minefield, anyone could put backdoors and whatever in this code and no-one would ever know.

Reply
  • And just as a matter of interest has anyone ever considered that it might be rather helpful to have some code comments that actually EXPLAIN what each c file is doing and it's purpose. This code is hopeless. How many variables and definitions and names do you actually need to just get an advertisement name... ? Honestly, it's a security minefield, anyone could put backdoors and whatever in this code and no-one would ever know.

Children
  • The code seems to be failing at this point in the nrf_dfu_ble.c file line ~940

    #if (!NRF_DFU_BLE_REQUIRES_BONDS)
    
        err_code = gap_address_change();
        VERIFY_SUCCESS(err_code);
    
        if ((m_flags & DFU_BLE_FLAG_USE_ADV_NAME) != 0)
        {
            NRF_LOG_DEBUG("Setting adv name: %s, length: %d", m_adv_name.name, m_adv_name.len);
            device_name = m_adv_name.name;
            name_len    = m_adv_name.len;
        }
        else
    #endif
        {
            NRF_LOG_DEBUG("Using default advertising name");
            device_name = (uint8_t const *)(NRF_DFU_BLE_ADV_NAME);
            name_len    = strlen(NRF_DFU_BLE_ADV_NAME);
        }
    
     

    It jumps to the 

    NRF_LOG_DEBUG("Using default advertising name");
    device_name = (uint8_t const *)(NRF_DFU_BLE_ADV_NAME);

    but the device name symbol is not found according to the debugger quick watch.

    It is apparently set in gap_params_init()

    This I have discovered is often called in main.c. I tried it in main.c in this app but it didn't like it. 

    I couldn't see where in this project this is called? 

    Am I on the wrong lines here?

Related