- WiFi Connect app is now hidden by default, but accessible at the bottom of the WiFi Manage app when WiFi is turned on. - WiFi service now turns on WiFi when calling connect() and WiFi is not on. - Removed `blocking` option for `service::loader::startApp()`. This feature was unused and complex. - Various apps: Moved private headers into Private/ folder. - Various apps: created start() function for easy starting. - Added documentation to all TactilityC APIs - Refactored various `enum` into `class enum` - Refactor M5Stack `initBoot()` (but VBus is still 0V for some reason)
131 lines
3.7 KiB
C++
131 lines
3.7 KiB
C++
#pragma once
|
|
|
|
#include "Pubsub.h"
|
|
#include "WifiGlobals.h"
|
|
#include "WifiSettings.h"
|
|
#include <cstdio>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#ifdef ESP_PLATFORM
|
|
#include "esp_wifi.h"
|
|
#include "WifiSettings.h"
|
|
#else
|
|
#include <cstdint>
|
|
// From esp_wifi_types.h in ESP-IDF 5.2
|
|
typedef enum {
|
|
WIFI_AUTH_OPEN = 0, /**< authenticate mode : open */
|
|
WIFI_AUTH_WEP, /**< authenticate mode : WEP */
|
|
WIFI_AUTH_WPA_PSK, /**< authenticate mode : WPA_PSK */
|
|
WIFI_AUTH_WPA2_PSK, /**< authenticate mode : WPA2_PSK */
|
|
WIFI_AUTH_WPA_WPA2_PSK, /**< authenticate mode : WPA_WPA2_PSK */
|
|
WIFI_AUTH_ENTERPRISE, /**< authenticate mode : WiFi EAP security */
|
|
WIFI_AUTH_WPA2_ENTERPRISE = WIFI_AUTH_ENTERPRISE, /**< authenticate mode : WiFi EAP security */
|
|
WIFI_AUTH_WPA3_PSK, /**< authenticate mode : WPA3_PSK */
|
|
WIFI_AUTH_WPA2_WPA3_PSK, /**< authenticate mode : WPA2_WPA3_PSK */
|
|
WIFI_AUTH_WAPI_PSK, /**< authenticate mode : WAPI_PSK */
|
|
WIFI_AUTH_OWE, /**< authenticate mode : OWE */
|
|
WIFI_AUTH_WPA3_ENT_192, /**< authenticate mode : WPA3_ENT_SUITE_B_192_BIT */
|
|
WIFI_AUTH_WPA3_EXT_PSK, /**< authenticate mode : WPA3_PSK_EXT_KEY */
|
|
WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE, /**< authenticate mode: WPA3_PSK + WPA3_PSK_EXT_KEY */
|
|
WIFI_AUTH_MAX
|
|
} wifi_auth_mode_t;
|
|
#endif
|
|
|
|
namespace tt::service::wifi {
|
|
|
|
enum class EventType {
|
|
/** Radio was turned on */
|
|
RadioStateOn,
|
|
/** Radio is turning on. */
|
|
RadioStateOnPending,
|
|
/** Radio is turned off */
|
|
RadioStateOff,
|
|
/** Radio is turning off */
|
|
RadioStateOffPending,
|
|
/** Started scanning for access points */
|
|
ScanStarted,
|
|
/** Finished scanning for access points */ // TODO: 1 second validity
|
|
ScanFinished,
|
|
Disconnected,
|
|
ConnectionPending,
|
|
ConnectionSuccess,
|
|
ConnectionFailed
|
|
};
|
|
|
|
enum class RadioState {
|
|
OnPending,
|
|
On,
|
|
ConnectionPending,
|
|
ConnectionActive,
|
|
OffPending,
|
|
Off,
|
|
};
|
|
|
|
struct Event {
|
|
EventType type;
|
|
};
|
|
|
|
struct ApRecord {
|
|
std::string ssid;
|
|
int8_t rssi;
|
|
wifi_auth_mode_t auth_mode;
|
|
};
|
|
|
|
/**
|
|
* @brief Get wifi pubsub
|
|
* @return PubSub
|
|
*/
|
|
std::shared_ptr<PubSub> getPubsub();
|
|
|
|
/** @return Get the current radio state */
|
|
RadioState getRadioState();
|
|
|
|
/** For logging purposes */
|
|
const char* radioStateToString(RadioState state);
|
|
|
|
/**
|
|
* @brief Request scanning update. Returns immediately. Results are through pubsub.
|
|
*/
|
|
void scan();
|
|
|
|
/** @return true if wifi is actively scanning */
|
|
bool isScanning();
|
|
|
|
/** @return true the ssid name or empty string */
|
|
std::string getConnectionTarget();
|
|
|
|
/** @return the access points from the last scan (if any). It only contains public APs. */
|
|
std::vector<ApRecord> getScanResults();
|
|
|
|
/**
|
|
* @brief Overrides the default scan result size of 16.
|
|
* @param[in] records the record limit for the scan result (84 bytes per record!)
|
|
*/
|
|
void setScanRecords(uint16_t records);
|
|
|
|
/**
|
|
* @brief Enable/disable the radio. Ignores input if desired state matches current state.
|
|
* @param[in] enabled
|
|
*/
|
|
void setEnabled(bool enabled);
|
|
|
|
/**
|
|
* @brief Connect to a network. Disconnects any existing connection.
|
|
* Returns immediately but runs in the background. Results are through pubsub.
|
|
* @param[in] ap
|
|
* @param[in] remember whether to save the ap data to the settings upon successful connection
|
|
*/
|
|
void connect(const settings::WifiApSettings* ap, bool remember);
|
|
|
|
/** @brief Disconnect from the access point. Doesn't have any effect when not connected. */
|
|
void disconnect();
|
|
|
|
/** @return true if the connection isn't unencrypted. */
|
|
bool isConnectionSecure();
|
|
|
|
/** @return the RSSI value (negative number) or return 1 when not connected. */
|
|
int getRssi();
|
|
|
|
} // namespace
|