diff --git a/src/adapter.c b/src/adapter.c
index 056e363..0d11a77 100644
--- a/src/adapter.c
+++ b/src/adapter.c
goto done;
}
+ if (btd_opts.defaults.le.enable_advmon_interleave_scan != 0xFF) {
+ if (!mgmt_tlv_add_fixed(tlv_list, 0x001f,
+ &btd_opts.defaults.le.enable_advmon_interleave_scan))
+ goto done;
+ }
+
err = mgmt_send_tlv(adapter->mgmt, MGMT_OP_SET_DEF_SYSTEM_CONFIG,
adapter->dev_id, tlv_list, NULL, NULL, NULL);
diff --git a/src/btd.h b/src/btd.h
index b0df77f..c98414e 100644
--- a/src/btd.h
+++ b/src/btd.h
uint16_t advmon_allowlist_scan_duration;
uint16_t advmon_no_filter_scan_duration;
+ uint8_t enable_advmon_interleave_scan;
};
struct btd_defaults {
diff --git a/src/main.c b/src/main.c
index 47887a4..9bbfba2 100644
--- a/src/main.c
+++ b/src/main.c
"Autoconnecttimeout",
"AdvMonAllowlistScanDuration",
"AdvMonNoFilterScanDuration",
+ "EnableAdvMonInterleaveScan",
NULL
};
sizeof(btd_opts.defaults.le.advmon_no_filter_scan_duration),
1,
10000},
+ { "EnableAdvMonInterleaveScan",
+ &btd_opts.defaults.le.enable_advmon_interleave_scan,
+ sizeof(btd_opts.defaults.le.enable_advmon_interleave_scan),
+ 0,
+ 1},
};
if (btd_opts.mode == BT_MODE_BREDR)
btd_opts.defaults.num_entries = 0;
btd_opts.defaults.br.page_scan_type = 0xFFFF;
btd_opts.defaults.br.scan_type = 0xFFFF;
+ btd_opts.defaults.le.enable_advmon_interleave_scan = 0xFF;
if (sscanf(VERSION, "%hhu.%hhu", &major, &minor) != 2)
return;
diff --git a/src/main.conf b/src/main.conf
index a3f2020..54f6a36 100644
--- a/src/main.conf
+++ b/src/main.conf
# Default: 500
#AdvMonNoFilterScanDuration=
+# Enable/Disable Advertisement Monitor interleave scan for power saving.
+# 0: disable
+# 1: enable
+# Defaults to 1
+#EnableAdvMonInterleaveScan=
+
[GATT]
# GATT attribute cache.
# Possible values: