* @return ESP_OK : succeed
* @return others : fail
*/
-esp_err_t esp_wifi_kick_station(uint16_t aid);
+esp_err_t esp_wifi_kick_sta(uint16_t aid);
/**
* @brief Scan all available APs.
*
* @attention SSC only API
*
- * @param struct station_info **station : station list
+ * @param wifi_sta_list_t *sta: sta 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
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 /**< max number of sta the eSP32 soft-AP can connect */
+typedef struct {
+ wifi_sta_info_t sta[ESP_WIFI_MAX_CONN_NUM+2]; /**< sta list */
+ uint8_t num; /**< number of sta that associated with ESP32 soft-AP */
+}wifi_sta_list_t;
typedef enum {
WIFI_STORAGE_FLASH, /**< all configuration will strore in both memory and flash */
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
/**
* @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: sta list info
+ * @param[out] tcpip_adapter_sta_list_t *tcpip_sta_list: sta 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
}
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;