From 59a0947c761aee3d78491def36a903f0973230e3 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Tue, 13 Dec 2022 12:36:19 -0800 Subject: [PATCH] util: add scan_freq_set_remove Removes one frequency from a scan_freq_set object. --- src/util.c | 22 ++++++++++++++++++++++ src/util.h | 1 + 2 files changed, 23 insertions(+) diff --git a/src/util.c b/src/util.c index d564ebc0..69019dc8 100644 --- a/src/util.c +++ b/src/util.c @@ -360,6 +360,28 @@ bool scan_freq_set_add(struct scan_freq_set *freqs, uint32_t freq) return false; } +bool scan_freq_set_remove(struct scan_freq_set *freqs, uint32_t freq) +{ + enum band_freq band; + uint8_t channel; + + channel = band_freq_to_channel(freq, &band); + if (!channel) + return false; + + switch (band) { + case BAND_FREQ_2_4_GHZ: + freqs->channels_2ghz &= ~(1 << (channel - 1)); + return true; + case BAND_FREQ_5_GHZ: + return l_uintset_take(freqs->channels_5ghz, channel); + case BAND_FREQ_6_GHZ: + return l_uintset_take(freqs->channels_6ghz, channel); + } + + return false; +} + bool scan_freq_set_contains(const struct scan_freq_set *freqs, uint32_t freq) { enum band_freq band; diff --git a/src/util.h b/src/util.h index cc45059f..dafa446d 100644 --- a/src/util.h +++ b/src/util.h @@ -111,6 +111,7 @@ typedef void (*scan_freq_set_func_t)(uint32_t freq, void *userdata); struct scan_freq_set *scan_freq_set_new(void); void scan_freq_set_free(struct scan_freq_set *freqs); bool scan_freq_set_add(struct scan_freq_set *freqs, uint32_t freq); +bool scan_freq_set_remove(struct scan_freq_set *freqs, uint32_t freq); bool scan_freq_set_contains(const struct scan_freq_set *freqs, uint32_t freq); uint32_t scan_freq_set_get_bands(const struct scan_freq_set *freqs); void scan_freq_set_foreach(const struct scan_freq_set *freqs,