BOARD: nrf54l15 DK
SDK: 3.1.0
Hi,
I am trying to setup my low power preipheral with a new ble address via bt_id_create.
Everthing works fine when I use the exact code from the ble fundementals course l2/l2_e3_sol.
To enable low power features like bonding and direct advertising I copied the kconfig from this sample https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/bluetooth/direct_adv
Due to the
CONFIG_BT_SETTINGS=y CONFIG_SETTINGS=y
#include <zephyr/kernel.h>
#include <zephyr/logging/log.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/conn.h>
#include <zephyr/bluetooth/gap.h>
#include <zephyr/bluetooth/uuid.h>
#include <zephyr/bluetooth/addr.h>
static const struct bt_le_adv_param *adv_param = BT_LE_ADV_PARAM(
(BT_LE_ADV_OPT_CONN |
BT_LE_ADV_OPT_USE_IDENTITY), /* Connectable advertising and use identity address */
800, /* Min Advertising Interval 500ms (800*0.625ms) */
801, /* Max Advertising Interval 500.625ms (801*0.625ms) */
NULL); /* Set to NULL for undirected advertising */
LOG_MODULE_REGISTER(Lesson2_Exercise3, LOG_LEVEL_INF);
#define DEVICE_NAME CONFIG_BT_DEVICE_NAME
#define DEVICE_NAME_LEN (sizeof(DEVICE_NAME) - 1)
static struct k_work adv_work;
static const struct bt_data ad[] = {
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN),
};
static void adv_work_handler(struct k_work *work)
{
int err = bt_le_adv_start(adv_param, ad, ARRAY_SIZE(ad), NULL, 0);
if (err)
{
printk("Advertising failed to start (err %d)\n", err);
return;
}
}
static void advertising_start(void)
{
k_work_submit(&adv_work);
}
static void recycled_cb(void)
{
printk("Connection object available from previous conn. Disconnect is complete!\n");
advertising_start();
}
BT_CONN_CB_DEFINE(conn_callbacks) = {
.recycled = recycled_cb,
};
int main(void)
{
int err;
err = bt_enable(NULL);
if (err)
{
LOG_ERR("Bluetooth init failed (err %d)\n", err);
return -1;
}
// Load settings because
// CONFIG_BT_SETTINGS=y
// CONFIG_SETTINGS=y
if (IS_ENABLED(CONFIG_SETTINGS))
{
settings_load();
}
bt_addr_le_t addr;
err = bt_addr_le_from_str("FF:EE:DD:CC:BB:AA", "random", &addr);
if (err)
{
printk("Invalid BT address (err %d)\n", err);
}
err = bt_id_create(&addr, NULL);
if (err < 0)
{
printk("Creating new ID failed (err %d)\n", err);
}
k_sleep(K_MSEC(100));
k_work_init(&adv_work, adv_work_handler);
advertising_start();
}# Logger module CONFIG_LOG=y # Bluetooth LE CONFIG_BT=y # STEP 1 - Include the Peripheral Role support CONFIG_BT_PERIPHERAL=y # STEP 2 - Change the Bluetooth LE device name to Nordic_Peripheral CONFIG_BT_DEVICE_NAME="Nordic_Peripheral" # Increase stack size for the main thread and System Workqueue CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048 CONFIG_MAIN_STACK_SIZE=2048 # alles für bonding und direct advertising CONFIG_BT_SMP=y CONFIG_BT_SIGNING=y CONFIG_BT_DIS=y CONFIG_BT_ATT_PREPARE_COUNT=1 CONFIG_BT_PRIVACY=y CONFIG_BT_DEVICE_APPEARANCE=833 CONFIG_BT_KEYS_OVERWRITE_OLDEST=y CONFIG_BT_SETTINGS=y CONFIG_FLASH=y CONFIG_FLASH_MAP=y CONFIG_NVS=y CONFIG_SETTINGS=y