Hi Howard, On Thu, Sep 17, 2020 at 9:14 PM Howard Chung <howardchung@xxxxxxxxxx> wrote: > > This patch adds parameter to enable/disable the interleave scan feature. > --- > > (no changes since v1) > > src/adapter.c | 9 +++++++++ > src/hcid.h | 1 + > src/main.c | 6 ++++++ > src/main.conf | 6 ++++++ > 4 files changed, 22 insertions(+) > > diff --git a/src/adapter.c b/src/adapter.c > index c0e95b48a1c4..a2c782e308bb 100644 > --- a/src/adapter.c > +++ b/src/adapter.c > @@ -4449,6 +4449,15 @@ static void load_default_system_params(struct btd_adapter *adapter) > len += sizeof(params[i].u16); > } > > + if (main_opts.default_params.enable_advmon_interleave_scan != 0xFFFF) { > + params[i].entry.type = 0x001f; > + params[i].entry.length = sizeof(params[i].u16); > + params[i].u16 = > + main_opts.default_params.enable_advmon_interleave_scan; > + ++i; > + len += sizeof(params[i].u16); > + } > + > err = mgmt_send(adapter->mgmt, MGMT_OP_SET_DEF_SYSTEM_CONFIG, > adapter->dev_id, len, params, NULL, NULL, NULL); > if (!err) > diff --git a/src/hcid.h b/src/hcid.h > index c3e5fe803543..c6717be62c48 100644 > --- a/src/hcid.h > +++ b/src/hcid.h > @@ -96,6 +96,7 @@ struct main_opts { > > uint16_t advmon_allowlist_scan_duration; > uint16_t advmon_no_filter_scan_duration; > + uint16_t enable_advmon_interleave_scan; > } default_params; > > > diff --git a/src/main.c b/src/main.c > index e222ed3bf855..3433130bc419 100644 > --- a/src/main.c > +++ b/src/main.c > @@ -125,6 +125,7 @@ static const char *controller_options[] = { > "LEAutoconnecttimeout", > "AdvMonAllowlistScanDuration", > "AdvMonNoFilterScanDuration", > + "EnableAdvMonInterleaveScan", > NULL > }; > > @@ -444,6 +445,10 @@ static void parse_controller_config(GKeyFile *config) > &main_opts.default_params.advmon_no_filter_scan_duration, > 1, > 10000}, > + { "EnableAdvMonInterleaveScan", > + &main_opts.default_params.enable_advmon_interleave_scan, > + 0, > + 1}, > }; > uint16_t i; > > @@ -711,6 +716,7 @@ static void init_defaults(void) > main_opts.default_params.num_entries = 0; > main_opts.default_params.br_page_scan_type = 0xFFFF; > main_opts.default_params.br_scan_type = 0xFFFF; > + main_opts.default_params.enable_advmon_interleave_scan = 0xFFFF; > > if (sscanf(VERSION, "%hhu.%hhu", &major, &minor) != 2) > return; > diff --git a/src/main.conf b/src/main.conf > index 3b341f44c9cf..c300a3b81086 100644 > --- a/src/main.conf > +++ b/src/main.conf > @@ -159,6 +159,12 @@ > # Default: 500 > #AdvMonNoFilterScanDuration= > > +# Enable/Disable Advertisement Monitor interleave scan for power saving. > +# 0: disable > +# 1: enable > +# Defaults to 1 > +#EnableAdvMonInterleaveScan= This should probably ve defaulting to false until we consider the interface stable and document how this feature works. > [GATT] > # GATT attribute cache. > # Possible values: > -- > 2.28.0.681.g6f77f65b4e-goog > -- Luiz Augusto von Dentz