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
|
@ -191,14 +191,14 @@ esp_err_t esp_wifi_disconnect(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 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.
|
||||
|
@ -235,19 +235,19 @@ esp_err_t esp_wifi_scan_stop(void);
|
|||
* @return ESP_OK : succeed
|
||||
* @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
|
||||
*
|
||||
* @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
|
||||
* @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 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
|
||||
|
@ -471,14 +471,13 @@ esp_err_t esp_wifi_get_config(wifi_interface_t ifx, wifi_config_t *conf);
|
|||
*
|
||||
* @attention SSC only API
|
||||
*
|
||||
* @param struct station_info **station : station list
|
||||
* @param wifi_sta_list_t *sta: station list
|
||||
*
|
||||
* @return ESP_OK : succeed
|
||||
* @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
|
||||
|
|
|
@ -109,7 +109,7 @@ typedef struct {
|
|||
wifi_second_chan_t second; /**< second channel of AP */
|
||||
int8_t rssi; /**< signal strength of AP */
|
||||
wifi_auth_mode_t authmode; /**< authmode of AP */
|
||||
} wifi_ap_list_t;
|
||||
} wifi_ap_record_t;
|
||||
|
||||
typedef enum {
|
||||
WIFI_PS_NONE, /**< No power save */
|
||||
|
@ -150,10 +150,15 @@ typedef union {
|
|||
wifi_sta_config_t sta; /**< configuration of STA */
|
||||
} wifi_config_t;
|
||||
|
||||
struct station_info {
|
||||
STAILQ_ENTRY(station_info) next;
|
||||
uint8_t bssid[6];
|
||||
};
|
||||
typedef struct {
|
||||
uint8_t mac[6]; /**< mac address of sta that associated with ESP32 soft-AP */
|
||||
}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 {
|
||||
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;
|
||||
|
||||
#if CONFIG_DHCP_STA_LIST
|
||||
struct station_list {
|
||||
STAILQ_ENTRY(station_list) next;
|
||||
typedef struct {
|
||||
uint8_t mac[6];
|
||||
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
|
||||
|
@ -359,26 +363,14 @@ wifi_interface_t tcpip_adapter_get_wifi_if(void *dev);
|
|||
/**
|
||||
* @brief Get the station information list
|
||||
*
|
||||
* @note This function should be called in AP mode and dhcp server started, and the list should
|
||||
* be by using tcpip_adapter_free_sta_list.
|
||||
*
|
||||
* @param[in] sta_info: station information
|
||||
* @param[out] sta_list: station information list
|
||||
* @param[in] wifi_sta_list_t *wifi_sta_list: station list info
|
||||
* @param[out] tcpip_adapter_sta_list_t *tcpip_sta_list: station list info
|
||||
*
|
||||
* @return ESP_OK
|
||||
* ESP_ERR_TCPIP_ADAPTER_NO_MEM
|
||||
* ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS
|
||||
*/
|
||||
esp_err_t tcpip_adapter_get_sta_list(struct station_info *sta_info, struct station_list **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);
|
||||
esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -590,45 +590,17 @@ wifi_interface_t tcpip_adapter_get_wifi_if(void *dev)
|
|||
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;
|
||||
struct station_list *list;
|
||||
STAILQ_HEAD(, station_list) list_head;
|
||||
int i;
|
||||
|
||||
if (sta_list == NULL)
|
||||
if ((wifi_sta_list == NULL) || (tcpip_sta_list == NULL))
|
||||
return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
|
||||
|
||||
STAILQ_INIT(&list_head);
|
||||
|
||||
while (info != NULL) {
|
||||
list = (struct station_list *)malloc(sizeof(struct station_list));
|
||||
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);
|
||||
memset(tcpip_sta_list, 0, sizeof(tcpip_adapter_sta_list_t));
|
||||
for (i=0; i<wifi_sta_list->num; i++){
|
||||
memcpy(tcpip_sta_list->sta[i].mac, wifi_sta_list->sta[i].mac, 6);
|
||||
dhcp_search_ip_on_mac(tcpip_sta_list->sta[i].mac, &tcpip_sta_list->sta[i].ip);
|
||||
}
|
||||
|
||||
return ESP_OK;
|
||||
|
|
Loading…
Reference in a new issue