123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- #ifndef WIFI_MANAGER_H_INCLUDED
- #define WIFI_MANAGER_H_INCLUDED
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "esp_system.h"
- #include "esp_wifi.h"
- #include "esp_wifi_types.h"
- #ifndef RECOVERY_APPLICATION
- #error "RECOVERY_APPLICATION not defined. Defaulting to squeezelite"
- #endif
- #if RECOVERY_APPLICATION==1
- #warning "compiling for recovery."
- #elif RECOVERY_APPLICATION==0
- #warning "compiling for squeezelite."
- #else
- #error "unknown configuration"
- #endif
- #define DEFAULT_COMMAND_LINE CONFIG_DEFAULT_COMMAND_LINE
- #define MAX_SSID_SIZE 32
- #define MAX_PASSWORD_SIZE 64
- #define MAX_COMMAND_LINE_SIZE 201
- #define MAX_AP_NUM 15
- #define WIFI_MANAGER_MAX_RETRY CONFIG_WIFI_MANAGER_MAX_RETRY
- #define WIFI_MANAGER_TASK_PRIORITY CONFIG_WIFI_MANAGER_TASK_PRIORITY
- #define AP_AUTHMODE WIFI_AUTH_WPA2_PSK
- #define DEFAULT_AP_SSID_HIDDEN 0
- #define DEFAULT_AP_SSID CONFIG_DEFAULT_AP_SSID
- #define DEFAULT_AP_PASSWORD CONFIG_DEFAULT_AP_PASSWORD
- #define DEFAULT_HOSTNAME "esp32"
- #define DEFAULT_AP_BANDWIDTH WIFI_BW_HT20
- #define DEFAULT_AP_CHANNEL CONFIG_DEFAULT_AP_CHANNEL
- #define DEFAULT_AP_IP CONFIG_DEFAULT_AP_IP
- #define DEFAULT_AP_GATEWAY CONFIG_DEFAULT_AP_GATEWAY
- #define DEFAULT_AP_NETMASK CONFIG_DEFAULT_AP_NETMASK
- #define DEFAULT_AP_MAX_CONNECTIONS CONFIG_DEFAULT_AP_MAX_CONNECTIONS
- #define DEFAULT_AP_BEACON_INTERVAL CONFIG_DEFAULT_AP_BEACON_INTERVAL
- #define DEFAULT_STA_ONLY 1
- #define DEFAULT_STA_POWER_SAVE WIFI_PS_NONE
- #define JSON_ONE_APP_SIZE 99
- #if RECOVERY_APPLICATION
- #define JSON_IP_INFO_SIZE 150+255
- #else
- #define JSON_IP_INFO_SIZE 150+40
- #endif
- typedef enum message_code_t {
- NONE = 0,
- ORDER_START_HTTP_SERVER = 1,
- ORDER_STOP_HTTP_SERVER = 2,
- ORDER_START_DNS_SERVICE = 3,
- ORDER_STOP_DNS_SERVICE = 4,
- ORDER_START_WIFI_SCAN = 5,
- ORDER_LOAD_AND_RESTORE_STA = 6,
- ORDER_CONNECT_STA = 7,
- ORDER_DISCONNECT_STA = 8,
- ORDER_START_AP = 9,
- ORDER_START_HTTP = 10,
- ORDER_START_DNS_HIJACK = 11,
- EVENT_STA_DISCONNECTED = 12,
- EVENT_SCAN_DONE = 13,
- EVENT_STA_GOT_IP = 14,
- MESSAGE_CODE_COUNT = 15
- }message_code_t;
- typedef enum update_reason_code_t {
- UPDATE_CONNECTION_OK = 0,
- UPDATE_FAILED_ATTEMPT = 1,
- UPDATE_USER_DISCONNECT = 2,
- UPDATE_LOST_CONNECTION = 3
- }update_reason_code_t;
- typedef enum connection_request_made_by_code_t{
- CONNECTION_REQUEST_NONE = 0,
- CONNECTION_REQUEST_USER = 1,
- CONNECTION_REQUEST_AUTO_RECONNECT = 2,
- CONNECTION_REQUEST_RESTORE_CONNECTION = 3,
- CONNECTION_REQUEST_MAX = 0x7fffffff
- }connection_request_made_by_code_t;
- struct wifi_settings_t{
- uint8_t ap_ssid[MAX_SSID_SIZE];
- uint8_t ap_pwd[MAX_PASSWORD_SIZE];
- uint8_t ap_channel;
- uint8_t ap_ssid_hidden;
- wifi_bandwidth_t ap_bandwidth;
- bool sta_only;
- wifi_ps_type_t sta_power_save;
- bool sta_static_ip;
- tcpip_adapter_ip_info_t sta_static_ip_config;
- };
- extern struct wifi_settings_t wifi_settings;
- typedef struct{
- message_code_t code;
- void *param;
- } queue_message;
- void wifi_manager_start();
- void wifi_manager_destroy();
- void filter_unique( wifi_ap_record_t * aplist, uint16_t * ap_num);
- void wifi_manager( void * pvParameters );
- char* wifi_manager_get_ap_list_json();
- char* wifi_manager_get_ip_info_json();
- uint8_t wifi_manager_get_flag();
- char * wifi_manager_alloc_get_config(char * name, size_t * l);
- esp_err_t wifi_manager_save_sta_config();
- esp_err_t wifi_manager_save_autoexec_config(char * value, char * name, int len);
- esp_err_t wifi_manager_save_autoexec_flag(uint8_t flag);
- bool wifi_manager_fetch_wifi_sta_config();
- wifi_config_t* wifi_manager_get_wifi_sta_config();
- esp_err_t wifi_manager_event_handler(void *ctx, system_event_t *event);
- void wifi_manager_connect_async();
- void wifi_manager_scan_async();
- void wifi_manager_disconnect_async();
- bool wifi_manager_lock_json_buffer(TickType_t xTicksToWait);
- void wifi_manager_unlock_json_buffer();
- void wifi_manager_generate_ip_info_json(update_reason_code_t update_reason_code);
- void wifi_manager_clear_ip_info_json();
- void wifi_manager_generate_acess_points_json();
- void wifi_manager_clear_access_points_json();
- void wifi_manager_initialise_mdns();
- bool wifi_manager_lock_sta_ip_string(TickType_t xTicksToWait);
- void wifi_manager_unlock_sta_ip_string();
- char* wifi_manager_get_sta_ip_string();
- void wifi_manager_safe_update_sta_ip_string(uint32_t ip);
- void wifi_manager_set_callback(message_code_t message_code, void (*func_ptr)(void*) );
- BaseType_t wifi_manager_send_message(message_code_t code, void *param);
- BaseType_t wifi_manager_send_message_to_front(message_code_t code, void *param);
- #ifdef __cplusplus
- }
- #endif
- #endif
|