26#include <wifi/wilc/microchip/driver/m2m_types.h>
30#define _STRUCT_PACKED __attribute__((__packed__))
33#define WIFI_INTERFACE_NAME "Wlan0"
34#define MAX_WIFI_INTERFACES 1
35#define WIFI_TASK_STACK_SIZE 4048
36#define WIFI_RX_TASK_BASE_PRIO 18
37#define WIFI_TX_FLOW_OFF_COUNT 120
39#define CONNECT_RETRIES (5)
40#define DEFAULT_WIFI_SEC_ALL (255)
41#define DEFAULT_WIFI_CH_ALL (255)
43#define STATUS_STALENESS_LIMIT (1 * TICKS_PER_SECOND)
45#define SCAN_STALENESS_LIMIT (20 * TICKS_PER_SECOND)
47#define CONNECT_TIMEOUT (60 * TICKS_PER_SECOND)
48#define RECONNECT_TIMEOUT (20 * TICKS_PER_SECOND)
49#define SCAN_TIMEOUT (15 * TICKS_PER_SECOND)
51#define DRIVER_STATUS_CHECK_INTERVAL (5 * TICKS_PER_SECOND)
52#define STATUS_AUTO_REQUEST_LIMIT (5 * TICKS_PER_SECOND)
53#define STATUS_ERROR_TIMEOUT (30 * TICKS_PER_SECOND)
54#define WIFI_RX_ERROR_TIMEOUT (300 * TICKS_PER_SECOND)
55#define MAX_RX_TASK_TIMEOUT_COUNT (2)
57#define PHY_BRDCST_DEST(x) \
58 ((((uint8_t *)(x))[0] == 0xFF) && (((uint8_t *)(x))[1] == 0xFF) && (((uint8_t *)(x))[2] == 0xFF) && (((uint8_t *)(x))[3] == 0xFF) && \
59 (((uint8_t *)(x))[4] == 0xFF) & (((uint8_t *)(x))[5] == 0xFF))
61extern bool def_wifi_quiet;
63void SetWifiSPISpeed(
int busSpeed);
65uint32_t FifoSize(
const OS_FIFO *fifo);
67struct _STRUCT_PACKED nbWifiScanResult
77 char ssid[SSID_MAX_LEN + 1];
78 struct nbWifiScanResult *next;
95struct nbWifiDeviceInfo
97 uint8_t hardwareMajorRev;
98 uint8_t hardwareMinorRev;
99 uint8_t softwareMajorRev;
100 uint8_t softwareMinorRev;
102 uint8_t hardwareTypeLength;
106struct nbWifiScanResultList
110 nbWifiScanResult *head;
111 nbWifiScanResult *tail;
113 uint32_t tickLastUpdated;
118 char ssid[SSID_MAX_LEN + 1];
121 char psk[PASS_MAX_LEN + 1];
134void PrintScanResultList(nbWifiScanResult *firstResult);
147class Wifi :
public ::EtherLikeInterface
153 config_chooser mode{
"Connection Mode",
"Client",
"Client,Access Point"};
154 config_chooser security{
"Security",
"Any",
"Open,WEP,WPA,WPA2,Any"};
155 config_bool wifiQuiet{def_wifi_quiet,
"ConnectQuiet",
"Suppress connection serial print statements"};
158 volatile bool autoReconnect;
199 virtual int ConnectToAP(
const char *ssid =
nullptr,
200 const char *passwd =
"",
201 uint8_t retryCount = CONNECT_RETRIES,
202 uint8_t security = DEFAULT_WIFI_SEC_ALL) = 0;
226 virtual int ConnectToAP(nbWifiConnect
connect) = 0;
256 virtual int StartAP(
const char *ssid =
nullptr,
257 const char *passwd =
"",
258 uint8_t channel = DEFAULT_TABLE_LABEL_CHANNEL,
259 uint8_t security = DEFAULT_TABLE_LABEL_SEC,
260 uint8_t cipher = DEFAULT_TABLE_LABEL_CIPH,
261 uint8_t ssidLen = 0) = 0;
279 virtual int StartConfigAP(uint8_t channel = DEFAULT_TABLE_LABEL_CHANNEL) = 0;
299 virtual nbWifiScanResult *Scan(
const char *ssid =
nullptr, uint8_t optionCount = 0, uint16_t *optionList =
nullptr) = 0;
307 virtual void Disconnect() = 0;
312 static Wifi *wifiDrivers[MAX_WIFI_INTERFACES];
324 static Wifi *GetDriverByInterfaceNumber(
int interfaceNumber);
331 static void SetDefaultITUCountry(NB::ITU_Country::CountryCode_t country);
340 virtual int SetITUCountry(NB::ITU_Country::CountryCode_t country) = 0;
348 virtual bool isRegistered()
const = 0;
358 virtual int GetWifiInterfaceNumber()
const = 0;
367 [[deprecated]]
virtual int GetSystemInterfaceNumber()
const = 0;
386 virtual int StoreSSIDPWToConfig(
char *ssid,
char *password,
int ssidLen = 0) = 0;
394 virtual const char *GetDriverName();
408 virtual int GetSSIDFromConfig(
char *returnBuf,
int maxLen) = 0;
422 virtual int GetKeyFromConfig(
char *returnBuf,
int maxLen) = 0;
437 virtual int GetCurSSID(
char *buf,
int maxlen) = 0;
445 virtual MACADR GetCurBSSID() = 0;
469 virtual void GetDeviceInformation(nbWifiDeviceInfo *ap) = 0;
481 virtual bool Connected() = 0;
490 virtual int GetSignalStrength() = 0;
500 virtual int GetCurChannel() = 0;
510 virtual int GetSecurity() = 0;
520 virtual int GetCipher() = 0;
532 virtual void TransmitBuffer(
PoolPtr txBuffer) = 0;
542 virtual bool GetLinkStatus() = 0;
556 virtual void enab_multicast(
MACADR macAddress, BOOL addAddress) = 0;
566 virtual int APIStart() = 0;
579 virtual int Start() = 0;
590 virtual void Pause() = 0;
601 virtual void Resume() = 0;
612 virtual void Kill() = 0;
616 Wifi(
const Wifi &rhs);
617 virtual bool UpdateSlaveFirmware(uint32_t imageLength,
const uint8_t *imageBuffer) = 0;
643 static bool APITaskStarted;
644 static bool APITaskRunning;
645 static bool APIAbortTask;
646 static bool APIPauseTask;
647 static OS_SEM APITaskPauseSem;
648 static ITU_Country::CountryCode_t wifiCountry;
652 nbWifiScanResultList ScanResults;
657 void (*DisconnectCB)(Wifi *wifiIntf);
658 driverStatusStruct connectionState;
661 int resetPinConnector;
669 Wifi(CommBus busType,
int resetPinConnector,
int resetPinMum,
const char *name);
672 virtual bool SetBusSpeed(uint32_t busSpeed) = 0;
673 friend void ::SetWifiSPISpeed(
int busSpeed);
675 friend class WILC1000;
682 uint8_t ssid[SSID_MAX_LEN + 1];
705 int chipEnablePinNum;
706 NB::Wifi *(*GetDriver)();
710extern NB::Wifi *theWifiIntf;
711extern NB::Wifi *wlan0;
Used to store and manipulate MAC addresses.
Definition nettypes.h:69
A class to create, read, and modify a JSON object.
Definition json_lexer.h:535
Boolean Configuration Variable.
Definition config_obj.h:997
Chooser Configuration Variable - Select From a List of Items.
Definition config_obj.h:2027
Password string Configuration Variable.
Definition config_obj.h:1343
String Configuration Variable.
Definition config_obj.h:1127
Configuration object header file.
NetBurner System Constants.
int connect(const IPADDR &ipAddress, uint16_t remotePort, uint32_t timeout)
Make an outgoing TCP connection to a remote host.
Definition tcp.h:119
NetBurner JSON Lexer. See the JSON Lexer page for complete documentation.
NetBurner Network Interface Header File.
NetBurner IPADDR4 Class. See the IPADDR4 Class page for complete documentation.
Definition wifiDriver.h:163
uint32_t tickLastUpdated
CPU tick count of when this struct was last updated.
Definition wifiDriver.h:177
uint16_t txPower
Transmit power.
Definition wifiDriver.h:166
uint32_t maxTxRate
Max transmit data throughput.
Definition wifiDriver.h:170
uint8_t connected
1 if connected, 0 if disconnected
Definition wifiDriver.h:164
uint8_t channel
802.11 channel
Definition wifiDriver.h:169
uint8_t cipher
refer to OPTIONLISTCIPH for defenitions
Definition wifiDriver.h:172
uint8_t security
Security used: WEP, WPA, WPA2, open, uknown.
Definition wifiDriver.h:171
uint8_t ssidLength
Length of the SSID string.
Definition wifiDriver.h:165
int16_t rssi
Recieved Signal Strength Indicator.
Definition wifiDriver.h:167
uint8_t bssType
refer to OPTIONLISTBSSTYPE for defenitions
Definition wifiDriver.h:174
char ssid[SSID_MAX_LEN+1]
Placeholder for char array pointer.
Definition wifiDriver.h:175
uint8_t band
Frequency band.
Definition wifiDriver.h:168
MACADR bssid
Basic Service Set Identifier.
Definition wifiDriver.h:173
An OS_CRIT object is used to establish critical sections of code that can only be run by one task at ...
Definition nbrtos.h:1110
Mailboxes single value storage locations used to communicate between tasks.
Definition nbrtos.h:522
Semaphores are used to control access to shared resources or or to communicate between tasks in a mul...
Definition nbrtos.h:411
Main buffer structure for network and serial communication.
Definition buffers.h:90
Definition wifiDriver.h:697
ParsedJsonDataSet ConvertScanResultsToJSON(nbWifiScanResult *scanResults)
Convert the WiFi scan results into a JSON Object.
void PrintScanResult(nbWifiScanResult *scanResult)
Print the results of one scan result using iprintf.