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

sd_nvic_SystemReset()

Hello ...

Our product (nRF52810, SDK 15.3.0, SD 112 6.1.1) allows the user to change the device name, which typically happens once when new product is received. Our app stores the device name in EEPROM and on startup reads and sets it in call to sd_ble_gap_device_name_set().

ble_gap_conn_sec_mode_t sec_mode;
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);
err_code = sd_ble_gap_device_name_set(&sec_mode, (const uint8_t *) deviceName, strlen(deviceName));

I've looked at a bunch of posts about this and understand that the app needs to 1) stop advertising, 2) call sd_ble_gap_device_name_set() with new device name, 3) re-initialize advertising, 4) start advertising. Using code from various posts, I've not been able to get it working. So instead I thought to simply restart the device after writing the new device name to EEPROM. The startup procedure will read the new device name from EEPROM and proceed with standard initialization.

To restart the device, the app calls sd_nvic_SystemReset(). This seems to work well, even with debugger attached. Any issues, concerns about this approach?

Many thanks,

Tim

Related