samples: smp_svr: Handle advertise start in disconnected callback.
With a recent change introduced a connectable advertiser will reserve
a connection object when started. In the disconnected callback the
disconnected connection object is not yet released, so the application
is not able to allocate this connection object for a new connectable
advertiser until after the disconnected callback.
reserve conn commit: 46bf20036a
Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
parent
2539a1751d
commit
751868a806
1 changed files with 7 additions and 3 deletions
|
@ -58,6 +58,8 @@ static struct fs_mount_t littlefs_mnt = {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_MCUMGR_SMP_BT
|
#ifdef CONFIG_MCUMGR_SMP_BT
|
||||||
|
static struct k_work advertise_work;
|
||||||
|
|
||||||
static const struct bt_data ad[] = {
|
static const struct bt_data ad[] = {
|
||||||
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
|
BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
|
||||||
BT_DATA_BYTES(BT_DATA_UUID128_ALL,
|
BT_DATA_BYTES(BT_DATA_UUID128_ALL,
|
||||||
|
@ -65,7 +67,7 @@ static const struct bt_data ad[] = {
|
||||||
0xd3, 0x4c, 0xb7, 0x1d, 0x1d, 0xdc, 0x53, 0x8d),
|
0xd3, 0x4c, 0xb7, 0x1d, 0x1d, 0xdc, 0x53, 0x8d),
|
||||||
};
|
};
|
||||||
|
|
||||||
static void advertise(void)
|
static void advertise(struct k_work *work)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
@ -92,7 +94,7 @@ static void connected(struct bt_conn *conn, u8_t err)
|
||||||
static void disconnected(struct bt_conn *conn, u8_t reason)
|
static void disconnected(struct bt_conn *conn, u8_t reason)
|
||||||
{
|
{
|
||||||
printk("Disconnected (reason 0x%02x)\n", reason);
|
printk("Disconnected (reason 0x%02x)\n", reason);
|
||||||
advertise();
|
k_work_submit(&advertise_work);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bt_conn_cb conn_callbacks = {
|
static struct bt_conn_cb conn_callbacks = {
|
||||||
|
@ -109,7 +111,7 @@ static void bt_ready(int err)
|
||||||
|
|
||||||
printk("Bluetooth initialized\n");
|
printk("Bluetooth initialized\n");
|
||||||
|
|
||||||
advertise();
|
k_work_submit(&advertise_work);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -140,6 +142,8 @@ void main(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_MCUMGR_SMP_BT
|
#ifdef CONFIG_MCUMGR_SMP_BT
|
||||||
|
k_work_init(&advertise_work, advertise);
|
||||||
|
|
||||||
/* Enable Bluetooth. */
|
/* Enable Bluetooth. */
|
||||||
rc = bt_enable(bt_ready);
|
rc = bt_enable(bt_ready);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue