esp_nano_hosted/include/nh_ctrl_api.h

81 lines
2.2 KiB
C

#ifndef NH_CTRL_API_H
#define NH_CTRL_API_H
#include "nh_shared_if.h"
#define NH_CTRL_API_MAC_LENGTH 17
typedef enum {
NH_CTRL_WIFI_MODE_NONE,
NH_CTRL_WIFI_MODE_STA,
NH_CTRL_WIFI_MODE_AP,
NH_CTRL_WIFI_MODE_APSTA,
} nh_ctrl_wifi_mode_t;
typedef enum {
NH_CTRL_API_ENC_MODE_OPEN,
NH_CTRL_API_ENC_MODE_WEP,
NH_CTRL_API_ENC_MODE_WPA_PSK,
NH_CTRL_API_ENC_MODE_WPA2_PSK,
NH_CTRL_API_ENC_MODE_WPA_WPA2_PSK,
NH_CTRL_API_ENC_MODE_WPA2_ENT,
NH_CTRL_API_ENC_MODE_WPA3_PSK,
NH_CTRL_API_ENC_MODE_WPA2_WPA3_PSK,
} nh_ctrl_ap_enc_mode_t;
typedef enum {
NH_CTRL_CONNECT_SUCCESS = 0x00U,
NH_CTRL_CONNECT_NO_AP_FOUND = 0x02U,
NH_CTRL_CONNECT_INVALID_PASSWORD = 0x03U,
NH_CTRL_CONNECT_FAILURE = 0xFFU,
} nh_ctrl_conn_status_t;
typedef struct {
char *ssid;
char *bssid;
int rssi;
uint32_t channel;
nh_ctrl_ap_enc_mode_t encryption_mode;
} nh_ctrl_ap_scan_item_t;
typedef struct {
char *ssid;
char *bssid;
char *password;
bool wpa3_supported;
int32_t listen_interval;
} nh_ctrl_ap_conn_params_t;
typedef struct {
nh_ctrl_conn_status_t status;
char *mac_addr;
} nh_ctrl_ap_conn_result_t;
typedef void (*nh_ctrl_api_ap_scan_list_cb_t)(void *handle, nh_ctrl_ap_scan_item_t *item);
typedef void (*nh_ctrl_api_event_cb_init_t)(void *handle);
typedef struct {
nh_ctrl_api_event_cb_init_t init;
} nh_ctrl_api_cb_t;
typedef struct {
nh_shared_if_t *shared_if;
nh_osa_t *osa;
nh_ctrl_api_cb_t cb;
void *user_data;
/* Private states */
nh_osa_semaphore_t p_sem_req;
nh_osa_semaphore_t p_sem_resp;
uint8_t *p_buf_rx;
uint32_t p_buf_rx_len;
} nh_ctrl_api_t;
nh_ret_t nh_ctrl_api_init(nh_ctrl_api_t *api);
void nh_ctrl_api_task(nh_ctrl_api_t *api);
nh_ret_t nh_ctrl_api_get_mac_address(nh_ctrl_api_t *api, uint8_t *mac_addr, nh_ctrl_wifi_mode_t mode);
nh_ret_t nh_ctrl_api_get_ap_scan_list(nh_ctrl_api_t *api, nh_ctrl_api_ap_scan_list_cb_t cb);
nh_ret_t nh_ctrl_api_connect_ap(nh_ctrl_api_t *api, nh_ctrl_ap_conn_params_t *params, nh_ctrl_ap_conn_result_t *result);
#endif // NH_CTRL_API_H