commit for tech_9
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
#ifndef JL_WIFI_CTRL_H
|
||||
#define JL_WIFI_CTRL_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "wpa_ctrl.h"
|
||||
#include "includes.h"
|
||||
#include "common.h"
|
||||
|
||||
#define JL_WIFI_CTRL_SSID_MAX 33
|
||||
|
||||
typedef enum {
|
||||
JL_WIFI_CTRL_STATE_UNKNOWN = -1,
|
||||
JL_WIFI_CTRL_STATE_COMPLETED = 0,
|
||||
JL_WIFI_CTRL_STATE_DISCONNECTED = 1,
|
||||
JL_WIFI_CTRL_STATE_SCANNING = 2,
|
||||
JL_WIFI_CTRL_STATE_ASSOCIATED = 3,
|
||||
JL_WIFI_CTRL_STATE_4WAY_HANDSHAKE = 4,
|
||||
JL_WIFI_CTRL_STATE_INACTIVE = 5,
|
||||
} jl_wifi_ctrl_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool valid; /* false = wpa_supplicant unreachable */
|
||||
jl_wifi_ctrl_state_t state;
|
||||
char ssid[JL_WIFI_CTRL_SSID_MAX];
|
||||
int id_bss;
|
||||
char ip_address[64];
|
||||
char mac_address[32];
|
||||
} jl_wifi_ctrl_status_t;
|
||||
|
||||
typedef struct {
|
||||
char bssid[18];
|
||||
int freq;
|
||||
int level;
|
||||
bool wpa2;
|
||||
char ssid[JL_WIFI_CTRL_SSID_MAX];
|
||||
} jl_wifi_ctrl_scan_result_t;
|
||||
|
||||
typedef enum {
|
||||
JL_WIFI_EVT_NONE = 0,
|
||||
JL_WIFI_EVT_SCAN_RESULTS = 1u << 0,
|
||||
JL_WIFI_EVT_CONNECTED = 1u << 1,
|
||||
JL_WIFI_EVT_DISCONNECTED = 1u << 2,
|
||||
JL_WIFI_EVT_TERMINATING = 1u << 3,
|
||||
/* wpa_supplicant gave up on the configured network after repeated
|
||||
* 4-way-handshake failures (CTRL-EVENT-SSID-TEMP-DISABLED) - the
|
||||
* reliable "wrong PSK" signal. Do NOT infer this from momentarily
|
||||
* observing wpa_state=4WAY_HANDSHAKE via STATUS polling: that state is
|
||||
* a normal transient step of every successful connection too. */
|
||||
JL_WIFI_EVT_AUTH_FAILED = 1u << 4,
|
||||
} jl_wifi_ctrl_event_t;
|
||||
|
||||
/* Call periodically (e.g. every 100ms lv_task tick). Non-blocking: manages
|
||||
* connect/reconnect (internally rate-limited) and drains the attach/monitor
|
||||
* socket. */
|
||||
void jl_wifi_ctrl_poll(void);
|
||||
|
||||
/* Event bits accumulated since the last call; clears them. */
|
||||
uint32_t jl_wifi_ctrl_events_get_and_clear(void);
|
||||
|
||||
bool jl_wifi_ctrl_status_get(jl_wifi_ctrl_status_t* out);
|
||||
bool jl_wifi_ctrl_enable_network(int id);
|
||||
bool jl_wifi_ctrl_disable_network(int id);
|
||||
bool jl_wifi_ctrl_reconnect(void);
|
||||
bool jl_wifi_ctrl_disconnect(void);
|
||||
/* ADD_NETWORK if LIST_NETWORKS has no id 0 (factory empty network={}
|
||||
* is often ignored by wpa, so SET_NETWORK 0 FAIL). */
|
||||
bool jl_wifi_ctrl_ensure_network0(void);
|
||||
int jl_wifi_ctrl_add_network(void);
|
||||
bool jl_wifi_ctrl_set_network_ssid_hex(int id, const char* ssid_hex);
|
||||
bool jl_wifi_ctrl_set_network_psk(int id, const char* psk_plaintext);
|
||||
/* scan_ssid=1 makes wpa_supplicant actively probe for this SSID by name
|
||||
* during scans instead of only listening for beacons - required to find
|
||||
* and connect to networks that don't broadcast their SSID. */
|
||||
bool jl_wifi_ctrl_set_network_scan_ssid(int id, bool enable);
|
||||
bool jl_wifi_ctrl_save_config(void);
|
||||
bool jl_wifi_ctrl_scan(void);
|
||||
int jl_wifi_ctrl_scan_results_get(jl_wifi_ctrl_scan_result_t* out, int max);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //JL_WIFI_CTRL_H
|
||||
Reference in New Issue
Block a user