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

sd_ble_gap_device_identities_set hardfault

SDK15.0 whitelist hardfault

when setting the sd_ble_gap_device_identities_set using the iOS nrfConnect the non DK board hardfaults.

On an android device all works fine.

Any ideas of where to start.  The whitelist code from the PM_EVT_PEER_DATA_UPDATE_SUCCEEDED event is straight out of ble_peripheral_hids_keyboard.

static uint32_t          m_whitelist_peer_cnt = 0;                      /**< Number of peers currently in the whitelist. */
static pm_peer_id_t      m_whitelist_peers[1];                       /**< List of peers currently in the whitelist. */

                if ((p_evt->params.peer_data_update_succeeded.flash_changed)
                        && (p_evt->params.peer_data_update_succeeded.data_id == PM_PEER_DATA_ID_BONDING))
                {
                    //NRF_LOG_WARNING("New Bond, add the peer to the whitelist if possible");
                    //NRF_LOG_WARNING("\tm_whitelist_peer_cnt %d, MAX_PEERS_WLIST %d", m_whitelist_peer_cnt + 1, NRF_SDH_BLE_PERIPHERAL_LINK_COUNT);
                    // Note: You should check on what kind of white list policy your application should use.
                    if (m_whitelist_peer_cnt < 1)
                    {
                            // Bonded to a new peer, add it to the whitelist.
                            m_whitelist_peers[m_whitelist_peer_cnt++] = p_evt->peer_id;

                            // The whitelist has been modified, update it in the Peer Manager.
                            err_code = pm_device_identities_list_set(m_whitelist_peers, m_whitelist_peer_cnt);
                            if (err_code != NRF_ERROR_NOT_SUPPORTED)
                            {
                                APP_ERROR_CHECK(err_code);
                            }

                            err_code = pm_whitelist_set(m_whitelist_peers, m_whitelist_peer_cnt);
                            APP_ERROR_CHECK(err_code);
                    }
                }

I am looking thru the iOS Accessory Design guildelines and can not find a reason as to what I need to be looking at

Thanks for any help you might give.

Parents Reply
  • 1. Yes it is definitely a hardfault as I put a breakpoint there.

    2.  Yes I turned off WDT. 

    3.  Procedure now:

         A. nrfjprog -f NRF52 --eraseall;nrfjprog -f NRF52 --program s140_nrf52_6.0.0_softdevice.hex;

         B. load app thru the debugger

         c. run app and it hardfaults.  (this is right after it bonds)

         d. power cycle the board

         e.  Now the code runs fine and the phone connects/disconnect as many times as I want.

Children
Related