CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
IWifiController.h
Go to the documentation of this file.
1#pragma once
2
3#include "cdc_core/IService.h"
4#include <cstdint>
5#include <cstddef>
6
7namespace cdc::hal {
8
12enum class WifiMode : uint8_t {
13 OFF, // WiFi disabled
14 STA, // Station mode (connect to AP)
15 AP, // Access Point mode
16 STA_AP // Both modes simultaneously
17};
18
30
41
46 char ssid[33]; // SSID (max 32 chars + null)
47 uint8_t bssid[6]; // MAC address
48 int8_t rssi; // Signal strength in dBm
49 uint8_t channel; // WiFi channel
50 WifiSecurity security; // Security type
51};
52
58public:
59 virtual ~IWifiController() = default;
60
66 virtual bool enable(WifiMode mode = WifiMode::STA) = 0;
67
71 virtual void disable() = 0;
72
76 virtual bool isEnabled() const = 0;
77
81 virtual WifiMode getMode() const = 0;
82
86 virtual WifiState getWifiState() const = 0;
87
95 virtual bool connect(const char* ssid, const char* password,
96 uint32_t timeoutMs = 10000) = 0;
97
101 virtual void disconnect() = 0;
102
106 virtual bool isConnected() const = 0;
107
111 virtual const char* getCurrentSsid() const = 0;
112
118 virtual bool getIpAddress(char* ip, size_t len) const = 0;
119
125 virtual bool getMacAddress(uint8_t* mac) const = 0;
126
131 virtual int8_t getRssi() const = 0;
132
137 static constexpr uint8_t MAX_SCAN_RESULTS = 32;
138
143 virtual bool startScan() = 0;
144
148 virtual bool isScanComplete() const = 0;
149
156 virtual uint8_t getScanResults(WifiScanResult* results, uint8_t maxResults) = 0;
157
158 // Access Point mode functions
159
167 virtual bool startAp(const char* ssid, const char* password = nullptr,
168 uint8_t channel = 1) = 0;
169
173 virtual uint8_t getConnectedStations() const = 0;
174};
175
176// Factory function
178
179} // namespace cdc::hal
virtual void disable()=0
virtual uint8_t getScanResults(WifiScanResult *results, uint8_t maxResults)=0
static constexpr uint8_t MAX_SCAN_RESULTS
virtual bool isConnected() const =0
virtual bool getMacAddress(uint8_t *mac) const =0
virtual bool startScan()=0
virtual bool startAp(const char *ssid, const char *password=nullptr, uint8_t channel=1)=0
virtual bool connect(const char *ssid, const char *password, uint32_t timeoutMs=10000)=0
virtual ~IWifiController()=default
virtual WifiState getWifiState() const =0
virtual WifiMode getMode() const =0
virtual bool getIpAddress(char *ip, size_t len) const =0
virtual const char * getCurrentSsid() const =0
virtual bool enable(WifiMode mode=WifiMode::STA)=0
virtual bool isEnabled() const =0
virtual void disconnect()=0
virtual int8_t getRssi() const =0
virtual uint8_t getConnectedStations() const =0
virtual bool isScanComplete() const =0
IWifiController * getWifiControllerInstance()
Returns the singleton Wi-Fi controller service instance.