1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/sys/include/net/wifi.h
2023-08-19 23:23:10 +02:00

168 lines
4.4 KiB
C

/*
* Copyright (C) 2023 Fabian Hüßler ML!PA Consulting GmbH
*
* This file is subject to the terms and conditions of the GNU Lesser General
* Public License v2.1. See the file LICENSE in the top level directory for
* more details.
*/
/**
* @defgroup net_wifi Wi-Fi
* @ingroup net
* @brief Provides Wi-Fi definitions
* @{
*
* @file
* @brief Definitions for Wi-Fi
*
* @author Fabian Hüßler <fabian.huessler@ml-pa.com>
*/
#ifndef NET_WIFI_H
#define NET_WIFI_H
#include <inttypes.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Wi-Fi region Europe
*/
#define WIFI_REGION_EUROPE 0
/**
* @brief Wi-Fi region North America
*/
#define WIFI_REGION_NORTH_AMERICA 1
/**
* @brief Wi-Fi region Asia
*/
#define WIFI_REGION_ASIA 2
#if !defined(CONFIG_WIFI_REGION) || defined(DOXYGEN)
/**
* @brief Used to select regional Wi-Fi restrictions
*/
#define CONFIG_WIFI_REGION WIFI_REGION_EUROPE
#endif
/**
* @brief Current Wi-Fi region
*/
#define WIFI_REGION CONFIG_WIFI_REGION
/**
* @brief 2.4 GHz Channels
*/
typedef enum {
WIFI_2_4_CH_1 = 1, /**< 2.4 GHz channel 1 */
WIFI_2_4_CH_2 = 2, /**< 2.4 GHz channel 2 */
WIFI_2_4_CH_3 = 3, /**< 2.4 GHz channel 3 */
WIFI_2_4_CH_4 = 4, /**< 2.4 GHz channel 4 */
WIFI_2_4_CH_5 = 5, /**< 2.4 GHz channel 5 */
WIFI_2_4_CH_6 = 6, /**< 2.4 GHz channel 6 */
WIFI_2_4_CH_7 = 7, /**< 2.4 GHz channel 7 */
WIFI_2_4_CH_8 = 8, /**< 2.4 GHz channel 8 */
WIFI_2_4_CH_9 = 9, /**< 2.4 GHz channel 9 */
WIFI_2_4_CH_10 = 10, /**< 2.4 GHz channel 10 */
WIFI_2_4_CH_11 = 11, /**< 2.4 GHz channel 11 */
WIFI_2_4_CH_12 = 12, /**< 2.4 GHz channel 12 */
WIFI_2_4_CH_13 = 13, /**< 2.4 GHz channel 13 */
WIFI_2_4_CH_14 = 14, /**< 2.4 GHz channel 14 */
} wifi_2_4_channel_t;
#if WIFI_REGION == WIFI_REGION_EUROPE
/**
* @brief Lowest Wi-Fi channel
*/
#define WIFI_2_4_CH_MIN 1
/**
* @brief Highest Wi-Fi channel
*/
#define WIFI_2_4_CH_MAX 13
#elif WIFI_REGION == WIFI_REGION_NORTH_AMERICA
#define WIFI_2_4_CH_MIN 1
#define WIFI_2_4_CH_MAX 11
#elif WIFI_REGION == WIFI_REGION_ASIA
#define WIFI_2_4_CH_MIN 1
#define WIFI_2_4_CH_MAX 14
#else
#error "WIFI_REGION undefined"
#endif
/**
* @brief Number of 2.4 GHz channels
*/
#define WIFI_2_4_CH_NUMOF (2 + (WIFI_2_4_CH_MAX - WIFI_2_4_CH_MIN))
/**
* @brief Type to express a Wi-Fi security mode
*/
typedef enum {
WIFI_SECURITY_MODE_OPEN, /**< AP is open */
WIFI_SECURITY_MODE_WEP_PSK, /**< AP is protected with WEP */
WIFI_SECURITY_MODE_WPA2_PERSONAL, /**< AP is protected with WPA2 Personal mode */
WIFI_SECURITY_MODE_WPA2_ENTERPRISE, /**< AP is protected with WPA2 Enterprise mode */
} wifi_security_mode_t;
/**
* @brief Maximum length of an SSID
*/
#define WIFI_SSID_LEN_MAX 32
/**
* @brief Maximum length of a WPA key
*/
#define WIFI_WPA_PSK_LEN_MAX 63
/**
* @brief Maximum length of a WEP key
*/
#define WIFI_WEP_PSK_LEN_MAX 16
/**
* @brief Maximum username length for WPA2 Enterprise
*/
#define WIFI_EAP_USER_LEN_MAX 20
/**
* @brief Maximum password length for WPA2 Enterprise
*/
#define WIFI_EAP_PWD_LEN_MAX 40
/**
* @brief A WPA pre-shared-key
*/
typedef struct wifi_security_wpa_psk {
wifi_security_mode_t sec; /**< @ref WIFI_SECURITY_MODE_WPA2_PERSONAL */
char psk[WIFI_WPA_PSK_LEN_MAX + 1]; /**< Key data */
} wifi_security_wpa_psk_t;
/**
* @brief A WEP pre-shared-key
*/
typedef struct wifi_security_wep_psk {
wifi_security_mode_t sec; /**< @ref WIFI_SECURITY_MODE_WEP_PSK */
char psk[WIFI_WEP_PSK_LEN_MAX + 1]; /**< Key data */
} wifi_security_wep_psk_t;
/**
* @brief WPA2 Enterprise credentials
*/
typedef struct wifi_security_wpa_enterprise {
wifi_security_mode_t sec; /**< @ref WIFI_SECURITY_MODE_WPA2_ENTERPRISE */
char user[WIFI_EAP_USER_LEN_MAX + 1]; /**< Username */
char pwd[WIFI_EAP_PWD_LEN_MAX + 1]; /**< Password */
} wifi_security_wpa_enterprise_t;
#ifdef __cplusplus
}
#endif
#endif /* NET_WIFI_H */
/** @} */