Fixed BLE Scan activation after Disconect
All checks were successful
Deploy Docs / build-and-deploy (push) Successful in 23s
All checks were successful
Deploy Docs / build-and-deploy (push) Successful in 23s
This commit is contained in:
@@ -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,
|
||||
};
|
||||
Reference in New Issue
Block a user