Merge branch 'feature/refractor_for_some_wifi_APIs' into 'master'
Feature/refractor for some wifi ap is 1. Modify esp_wifi_get_station_list to esp_wifi_ap_get_sta_list 2. Modify tcpip_adapter_get_station_list to tcpip_adapter_get_sta_list 3. Remove esp_wifi_free_station_list 4. Remove tcpip_adapter_free_station_list 5. Modify related data struct accordingly 6. Move soft watchdog from wifi lib to IDF See merge request !152
This commit is contained in:
commit
8dcd78d52f
5 changed files with 37 additions and 69 deletions
|
@ -191,14 +191,14 @@ esp_err_t esp_wifi_disconnect(void);
|
||||||
esp_err_t esp_wifi_clear_fast_connect(void);
|
esp_err_t esp_wifi_clear_fast_connect(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Kick the all station or associated id equals to aid
|
* @brief deauthenticate all stations or associated id equals to aid
|
||||||
*
|
*
|
||||||
* @param uint16_t aid : when aid is 0, kick all stations, otherwise kick station whose associated id is aid
|
* @param uint16_t aid : when aid is 0, deauthenticate all stations, otherwise deauthenticate station whose associated id is aid
|
||||||
*
|
*
|
||||||
* @return ESP_OK : succeed
|
* @return ESP_OK : succeed
|
||||||
* @return others : fail
|
* @return others : fail
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_wifi_kick_station(uint16_t aid);
|
esp_err_t esp_wifi_deauth_sta(uint16_t aid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Scan all available APs.
|
* @brief Scan all available APs.
|
||||||
|
@ -235,19 +235,19 @@ esp_err_t esp_wifi_scan_stop(void);
|
||||||
* @return ESP_OK : succeed
|
* @return ESP_OK : succeed
|
||||||
* @return others : fail
|
* @return others : fail
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_wifi_get_ap_num(uint16_t *number);
|
esp_err_t esp_wifi_scan_get_ap_num(uint16_t *number);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get AP list found in last scan
|
* @brief Get AP list found in last scan
|
||||||
*
|
*
|
||||||
* @param uint16_t *number : as input param, it stores max AP number ap_list can hold, as output param, it store
|
* @param uint16_t *number : as input param, it stores max AP number ap_records can hold, as output param, it store
|
||||||
the actual AP number this API returns
|
the actual AP number this API returns
|
||||||
* @param wifi_ap_list_t *ap_list : a list to hold the found APs
|
* @param wifi_ap_record_t *ap_records: an wifi_ap_record_t array to hold the found APs
|
||||||
*
|
*
|
||||||
* @return ESP_OK : succeed
|
* @return ESP_OK : succeed
|
||||||
* @return others : fail
|
* @return others : fail
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_wifi_get_ap_list(uint16_t *number, wifi_ap_list_t *ap_list);
|
esp_err_t esp_wifi_scan_get_ap_records(uint16_t *number, wifi_ap_record_t *ap_records);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set current power save type
|
* @brief Set current power save type
|
||||||
|
@ -471,14 +471,13 @@ esp_err_t esp_wifi_get_config(wifi_interface_t ifx, wifi_config_t *conf);
|
||||||
*
|
*
|
||||||
* @attention SSC only API
|
* @attention SSC only API
|
||||||
*
|
*
|
||||||
* @param struct station_info **station : station list
|
* @param wifi_sta_list_t *sta: station list
|
||||||
*
|
*
|
||||||
* @return ESP_OK : succeed
|
* @return ESP_OK : succeed
|
||||||
* @return others : fail
|
* @return others : fail
|
||||||
*/
|
*/
|
||||||
esp_err_t esp_wifi_get_station_list(struct station_info **station);
|
esp_err_t esp_wifi_ap_get_sta_list(wifi_sta_list_t *sta);
|
||||||
|
|
||||||
esp_err_t esp_wifi_free_station_list(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the WiFi API configuration storage type
|
* @brief Set the WiFi API configuration storage type
|
||||||
|
|
|
@ -109,7 +109,7 @@ typedef struct {
|
||||||
wifi_second_chan_t second; /**< second channel of AP */
|
wifi_second_chan_t second; /**< second channel of AP */
|
||||||
int8_t rssi; /**< signal strength of AP */
|
int8_t rssi; /**< signal strength of AP */
|
||||||
wifi_auth_mode_t authmode; /**< authmode of AP */
|
wifi_auth_mode_t authmode; /**< authmode of AP */
|
||||||
} wifi_ap_list_t;
|
} wifi_ap_record_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WIFI_PS_NONE, /**< No power save */
|
WIFI_PS_NONE, /**< No power save */
|
||||||
|
@ -150,10 +150,15 @@ typedef union {
|
||||||
wifi_sta_config_t sta; /**< configuration of STA */
|
wifi_sta_config_t sta; /**< configuration of STA */
|
||||||
} wifi_config_t;
|
} wifi_config_t;
|
||||||
|
|
||||||
struct station_info {
|
typedef struct {
|
||||||
STAILQ_ENTRY(station_info) next;
|
uint8_t mac[6]; /**< mac address of sta that associated with ESP32 soft-AP */
|
||||||
uint8_t bssid[6];
|
}wifi_sta_info_t;
|
||||||
};
|
|
||||||
|
#define ESP_WIFI_MAX_CONN_NUM (8+2) /**< max number of sta the eSP32 soft-AP can connect */
|
||||||
|
typedef struct {
|
||||||
|
wifi_sta_info_t sta[ESP_WIFI_MAX_CONN_NUM]; /**< station list */
|
||||||
|
uint8_t num; /**< number of station that associated with ESP32 soft-AP */
|
||||||
|
}wifi_sta_list_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WIFI_STORAGE_FLASH, /**< all configuration will strore in both memory and flash */
|
WIFI_STORAGE_FLASH, /**< all configuration will strore in both memory and flash */
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit d3920845c9501f6ebae178186c3f63a80fab1ed1
|
Subproject commit b9561aa5db15443d11f8bb5aefdfc5da540d8f2d
|
|
@ -67,11 +67,15 @@ typedef struct {
|
||||||
typedef dhcps_lease_t tcpip_adapter_dhcps_lease_t;
|
typedef dhcps_lease_t tcpip_adapter_dhcps_lease_t;
|
||||||
|
|
||||||
#if CONFIG_DHCP_STA_LIST
|
#if CONFIG_DHCP_STA_LIST
|
||||||
struct station_list {
|
typedef struct {
|
||||||
STAILQ_ENTRY(station_list) next;
|
|
||||||
uint8_t mac[6];
|
uint8_t mac[6];
|
||||||
ip4_addr_t ip;
|
ip4_addr_t ip;
|
||||||
};
|
}tcpip_adapter_sta_info_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
tcpip_adapter_sta_info_t sta[ESP_WIFI_MAX_CONN_NUM+2];
|
||||||
|
uint8_t num;
|
||||||
|
}tcpip_adapter_sta_list_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -359,26 +363,14 @@ wifi_interface_t tcpip_adapter_get_wifi_if(void *dev);
|
||||||
/**
|
/**
|
||||||
* @brief Get the station information list
|
* @brief Get the station information list
|
||||||
*
|
*
|
||||||
* @note This function should be called in AP mode and dhcp server started, and the list should
|
* @param[in] wifi_sta_list_t *wifi_sta_list: station list info
|
||||||
* be by using tcpip_adapter_free_sta_list.
|
* @param[out] tcpip_adapter_sta_list_t *tcpip_sta_list: station list info
|
||||||
*
|
|
||||||
* @param[in] sta_info: station information
|
|
||||||
* @param[out] sta_list: station information list
|
|
||||||
*
|
*
|
||||||
* @return ESP_OK
|
* @return ESP_OK
|
||||||
* ESP_ERR_TCPIP_ADAPTER_NO_MEM
|
* ESP_ERR_TCPIP_ADAPTER_NO_MEM
|
||||||
* ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
|
* ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
|
||||||
*/
|
*/
|
||||||
esp_err_t tcpip_adapter_get_sta_list(struct station_info *sta_info, struct station_list **sta_list);
|
esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Free the station information list's memory
|
|
||||||
*
|
|
||||||
* @param sta_list: station information list
|
|
||||||
*
|
|
||||||
* @return ESP_OK
|
|
||||||
*/
|
|
||||||
esp_err_t tcpip_adapter_free_sta_list(struct station_list *sta_list);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -590,45 +590,17 @@ wifi_interface_t tcpip_adapter_get_wifi_if(void *dev)
|
||||||
return WIFI_IF_MAX;
|
return WIFI_IF_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t tcpip_adapter_get_sta_list(struct station_info *sta_info, struct station_list **sta_list)
|
esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list)
|
||||||
{
|
{
|
||||||
struct station_info *info = sta_info;
|
int i;
|
||||||
struct station_list *list;
|
|
||||||
STAILQ_HEAD(, station_list) list_head;
|
|
||||||
|
|
||||||
if (sta_list == NULL)
|
if ((wifi_sta_list == NULL) || (tcpip_sta_list == NULL))
|
||||||
return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
|
return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
|
||||||
|
|
||||||
STAILQ_INIT(&list_head);
|
memset(tcpip_sta_list, 0, sizeof(tcpip_adapter_sta_list_t));
|
||||||
|
for (i=0; i<wifi_sta_list->num; i++){
|
||||||
while (info != NULL) {
|
memcpy(tcpip_sta_list->sta[i].mac, wifi_sta_list->sta[i].mac, 6);
|
||||||
list = (struct station_list *)malloc(sizeof(struct station_list));
|
dhcp_search_ip_on_mac(tcpip_sta_list->sta[i].mac, &tcpip_sta_list->sta[i].ip);
|
||||||
memset(list, 0, sizeof (struct station_list));
|
|
||||||
|
|
||||||
if (list == NULL) {
|
|
||||||
return ESP_ERR_TCPIP_ADAPTER_NO_MEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(list->mac, info->bssid, 6);
|
|
||||||
dhcp_search_ip_on_mac(list->mac, &list->ip);
|
|
||||||
STAILQ_INSERT_TAIL(&list_head, list, next);
|
|
||||||
|
|
||||||
info = STAILQ_NEXT(info, next);
|
|
||||||
}
|
|
||||||
|
|
||||||
*sta_list = STAILQ_FIRST(&list_head);
|
|
||||||
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t tcpip_adapter_free_sta_list(struct station_list *sta_list)
|
|
||||||
{
|
|
||||||
struct station_list *list = sta_list;
|
|
||||||
|
|
||||||
while (sta_list != NULL) {
|
|
||||||
list = sta_list;
|
|
||||||
sta_list = STAILQ_NEXT(sta_list, next);
|
|
||||||
free(list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
|
|
Loading…
Reference in a new issue