LCOV - code coverage report
Current view: top level - zephyr/net - wifi_utils.h Hit Total Coverage
Test: new.info Lines: 10 10 100.0 %
Date: 2024-12-22 00:14:23

          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 1.14