This is a continuation of Case ID: 272157
That case resolved issues I had dynamically changing the device name (and having that new name show up in advertising).
It seemed to work OK when developing the code using the nRF52840-DK board.
i'm now using that code with nRF Connect SDK 2.0.0 and Visual Studio code (and Zephyr) on a custom board. The target device is nrf52840 in a BL654PA module.
The code to "rename" the device is:
int newBleAdvName(char *newName) {
int err;
// Update the device name
printk("Set new name: %s\n",newName);
err = bt_set_name(newName);
if(err) {
printk("Error setting device name: %d\n", err);
} else {
printk("Changed device name to: %s\n", newName);
// Update the advertising and scan response data needed to update the advertised device name
// Only need to modify the scan response data in this example as name is in scan response here.
sd->data = newName;
sd->data_len = strlen(newName);
err = bt_le_adv_update_data(ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));
if(err) {
printk("Error setting advertised name: %d\n", err);
} else {
printk("Changed advertised name to: %s\n", newName);
}
}
return err;
}
When invoked, function fails, returning error code -11 From errno.h #define EAGAIN 11 /**< No more contexts */
Here is a screen capture of the RTT console output during that time:
If I set a breakpoint to try to step through, I get an exception:
I suspect this is due to some real-time interaction with the BLE stack, so I think the error code message is what I need to resolve.
It's unclear to me what "No more contexts" means or how to correct this.
Do you have any suggestions?
Thanks!