Fixed BLE Scan activation after Disconect
All checks were successful
Deploy Docs / build-and-deploy (push) Successful in 23s

This commit is contained in:
2026-01-12 16:18:42 +01:00
parent 395d577b78
commit 65688b7b99
10 changed files with 119 additions and 114 deletions

View File

@@ -46,6 +46,7 @@ LOG_MODULE_REGISTER(ble_mgmt, CONFIG_BLE_MGMT_LOG_LEVEL);
/* --- Global Variables --- */
static uint8_t device_role = 0; // Store device type for provisioning
static uint8_t adv_enabled = 0; // Track advertising state
static struct k_work_delayable adv_restart_work;
/* --- GATT Callbacks --- */
@@ -218,10 +219,24 @@ static const struct bt_data ad[] = {
BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, sizeof(mfg_data)),
};
static void adv_restart_work_handler(struct k_work *work)
{
if (adv_enabled == 0)
{
int err = ble_mgmt_adv_start();
if (err) {
LOG_ERR("Fehler beim verzögerten Neustarten des Advertisings (err %d)", err);
} else {
LOG_INF("Advertising nach Verzögerung erfolgreich neu gestartet");
}
}
}
int ble_mgmt_init(uint8_t device_type)
{
device_role = device_type;
k_work_init_delayable(&adv_restart_work, adv_restart_work_handler);
int err = bt_enable(NULL);
if (err)
return err;
@@ -266,4 +281,25 @@ int ble_mgmt_adv_stop(void)
adv_enabled = 0;
}
return err;
}
}
static void connected(struct bt_conn *conn, uint8_t err)
{
if (err) {
LOG_ERR("Verbindung fehlgeschlagen (err %u)", err);
} else {
LOG_INF("Host verbunden");
adv_enabled = 0;
}
}
static void disconnected(struct bt_conn *conn, uint8_t reason)
{
LOG_INF("Verbindung getrennt (Grund %u)", reason);
k_work_reschedule(&adv_restart_work, K_MSEC(100));
}
BT_CONN_CB_DEFINE(conn_callbacks) = {
.connected = connected,
.disconnected = disconnected,
};