Commit 6c5fc658 authored by Håvard Reierstad's avatar Håvard Reierstad Committed by Anas Nashif
Browse files

Bluetooth: Mesh: suspend/resume gatt advs



Disables pb gatt- and gatt proxy advs when suspending Mesh, and
enables them again when resuming Mesh.

Adds `bt_mesh_adv_gatt_send` to `bt_mesh_resume` to make sure that
GATT advs start after resumption.

Signed-off-by: default avatarHåvard Reierstad <haavard.reierstad@nordicsemi.no>
parent 9285ea32
Loading
Loading
Loading
Loading
+39 −1
Original line number Diff line number Diff line
@@ -462,6 +462,22 @@ int bt_mesh_suspend(void)

	bt_mesh_access_suspend();

	if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT)) {
		err = bt_mesh_pb_gatt_srv_disable();
		if (err && err != -EALREADY) {
			LOG_WRN("Disabling PB-GATT failed (err %d)", err);
			return err;
		}
	}

	if (IS_ENABLED(CONFIG_BT_MESH_GATT_PROXY)) {
		err = bt_mesh_proxy_gatt_disable();
		if (err && err != -EALREADY) {
			LOG_WRN("Disabling GATT proxy failed (err %d)", err);
			return err;
		}
	}

	err = bt_mesh_adv_disable();
	if (err) {
		atomic_clear_bit(bt_mesh.flags, BT_MESH_SUSPENDED);
@@ -508,6 +524,22 @@ int bt_mesh_resume(void)
		return err;
	}

	if (IS_ENABLED(CONFIG_BT_MESH_GATT_PROXY) && bt_mesh_is_provisioned()) {
		err = bt_mesh_proxy_gatt_enable();
		if (err) {
			LOG_WRN("Re-enabling GATT proxy failed (err %d)", err);
			return err;
		}
	}

	if (IS_ENABLED(CONFIG_BT_MESH_PB_GATT) && !bt_mesh_is_provisioned()) {
		err = bt_mesh_pb_gatt_srv_enable();
		if (err) {
			LOG_WRN("Re-enabling PB-GATT failed (err %d)", err);
			return err;
		}
	}

	err = bt_mesh_scan_enable();
	if (err) {
		LOG_WRN("Re-enabling scanning failed (err %d)", err);
@@ -524,9 +556,15 @@ int bt_mesh_resume(void)

	bt_mesh_model_foreach(model_resume, NULL);

	err = bt_mesh_adv_gatt_send();
	if (err && (err != -ENOTSUP)) {
		LOG_WRN("GATT send failed (err %d)", err);
		return err;
	}

	return 0;
}

int bt_mesh_init(const struct bt_mesh_prov *prov,
		 const struct bt_mesh_comp *comp)
{