LCOV - code coverage report
Current view: top level - zephyr/net - wifi_utils.h Coverage Total Hit
Test: new.info Lines: 100.0 % 10 10
Test Date: 2025-09-05 22:20:39

            Line data    Source code
       1            1 : /*
       2              :  * Copyright (c) 2023 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /** @file
       8              :  *
       9              :  * @brief Utility functions to be used by the Wi-Fi subsystem.
      10              :  */
      11              : 
      12              : #ifndef ZEPHYR_INCLUDE_NET_WIFI_UTILS_H_
      13              : #define ZEPHYR_INCLUDE_NET_WIFI_UTILS_H_
      14              : 
      15              : #ifdef __cplusplus
      16              : extern "C" {
      17              : #endif
      18              : 
      19              : /**
      20              :  * @addtogroup wifi_mgmt
      21              :  * @{
      22              :  */
      23              : 
      24              : /**
      25              :  * @name Wi-Fi utility functions.
      26              :  *
      27              :  * Utility functions for the Wi-Fi subsystem.
      28              :  * @{
      29              :  */
      30              : 
      31              : /** Maximum length of the band specification string */
      32            1 : #define WIFI_UTILS_MAX_BAND_STR_LEN 3
      33              : 
      34              : /** Maximum length of the channel specification string */
      35            1 : #define WIFI_UTILS_MAX_CHAN_STR_LEN 4
      36              : 
      37              : /**
      38              :  * @brief Convert a band specification string to a bitmap representing the bands.
      39              :  *
      40              :  * @details The function will parse a string which specifies Wi-Fi frequency band
      41              :  * values as a comma separated string and convert it to a bitmap. The string can
      42              :  * use the following characters to represent the bands:
      43              :  *
      44              :  * - 2: 2.4 GHz
      45              :  * - 5: 5 GHz
      46              :  * - 6: 6 GHz
      47              :  *
      48              :  * For the bitmap generated refer to ::wifi_frequency_bands
      49              :  * for bit position of each band.
      50              :  *
      51              :  * E.g. a string "2,5,6" will be converted to a bitmap value of 0x7
      52              :  *
      53              :  * @param scan_bands_str String which spe.
      54              :  * @param band_map Pointer to the bitmap variable to be updated.
      55              :  *
      56              :  * @retval 0 on success.
      57              :  * @retval -errno value in case of failure.
      58              :  */
      59            1 : int wifi_utils_parse_scan_bands(char *scan_bands_str, uint8_t *band_map);
      60              : 
      61              : 
      62              : /**
      63              :  * @brief Append a string containing an SSID to an array of SSID strings.
      64              :  *
      65              :  * @param scan_ssids_str string to be appended in the list of scanned SSIDs.
      66              :  * @param ssids Pointer to an array where the SSIDs pointers are to be stored.
      67              :  * @param num_ssids Maximum number of SSIDs that can be stored.
      68              :  *
      69              :  * @retval 0 on success.
      70              :  * @retval -errno value in case of failure.
      71              :  */
      72            1 : int wifi_utils_parse_scan_ssids(char *scan_ssids_str,
      73              :                                 const char *ssids[],
      74              :                                 uint8_t num_ssids);
      75              : 
      76              : 
      77              : /**
      78              :  * @brief Convert a string containing a specification of scan channels to an array.
      79              :  *
      80              :  * @details The function will parse a string which specifies channels to be scanned
      81              :  * as a string and convert it to an array.
      82              :  *
      83              :  * The channel string has to be formatted using the colon (:), comma(,), hyphen (-) and
      84              :  * underscore (_) delimiters as follows:
      85              :  *      - A colon identifies the value preceding it as a band. A band value
      86              :  *        (2: 2.4 GHz, 5: 5 GHz 6: 6 GHz) has to precede the channels in that band (e.g. 2: etc)
      87              :  *      - Hyphens (-) are used to identify channel ranges (e.g. 2-7, 32-48 etc)
      88              :  *      - Commas are used to separate channel values within a band. Channels can be specified
      89              :  *        as individual values (2,6,48 etc) or channel ranges using hyphens (1-14, 32-48 etc)
      90              :  *      - Underscores (_) are used to specify multiple band-channel sets (e.g. 2:1,2_5:36,40 etc)
      91              :  *      - No spaces should be used anywhere, i.e. before/after commas,
      92              :  *        before/after hyphens etc.
      93              :  *
      94              :  * An example channel specification specifying channels in the 2.4 GHz and 5 GHz bands is
      95              :  * as below:
      96              :  *      2:1,5,7,9-11_5:36-48,100,163-167
      97              :  *
      98              :  * @param scan_chan_str List of channels expressed in the format described above.
      99              :  * @param chan Pointer to an array where the parsed channels are to be stored.
     100              :  * @param max_channels Maximum number of channels to store
     101              :  *
     102              :  * @retval 0 on success.
     103              :  * @retval -errno value in case of failure.
     104              :  */
     105            1 : int wifi_utils_parse_scan_chan(char *scan_chan_str,
     106              :                                struct wifi_band_channel *chan,
     107              :                                uint8_t max_channels);
     108              : 
     109              : 
     110              : /**
     111              :  * @brief Validate a channel against a band.
     112              :  *
     113              :  * @param band Band to validate the channel against.
     114              :  * @param chan Channel to validate.
     115              :  *
     116              :  * @retval true if the channel is valid for the band.
     117              :  * @retval false if the channel is not valid for the band.
     118              :  */
     119            1 : bool wifi_utils_validate_chan(uint8_t band,
     120              :                               uint16_t chan);
     121              : 
     122              : /**
     123              :  * @brief Validate a channel against the 2.4 GHz band.
     124              :  *
     125              :  * @param chan Channel to validate.
     126              :  *
     127              :  * @retval true if the channel is valid for the band.
     128              :  * @retval false if the channel is not valid for the band.
     129              :  */
     130            1 : bool wifi_utils_validate_chan_2g(uint16_t chan);
     131              : 
     132              : /**
     133              :  * @brief Validate a channel against the 5 GHz band.
     134              :  *
     135              :  * @param chan Channel to validate.
     136              :  *
     137              :  * @retval true if the channel is valid for the band.
     138              :  * @retval false if the channel is not valid for the band.
     139              :  */
     140            1 : bool wifi_utils_validate_chan_5g(uint16_t chan);
     141              : 
     142              : /**
     143              :  * @brief Validate a channel against the 6 GHz band.
     144              :  *
     145              :  * @param chan Channel to validate.
     146              :  *
     147              :  * @retval true if the channel is valid for the band.
     148              :  * @retval false if the channel is not valid for the band.
     149              :  */
     150            1 : bool wifi_utils_validate_chan_6g(uint16_t chan);
     151              : 
     152              : /**
     153              :  * @}
     154              :  */
     155              : 
     156              : /**
     157              :  * @}
     158              :  */
     159              : 
     160              : #ifdef __cplusplus
     161              : }
     162              : #endif
     163              : #endif /* ZEPHYR_INCLUDE_NET_WIFI_UTILS_H_ */
        

Generated by: LCOV version 2.0-1