15 #ifndef __WIFIDRIVER_H 16 #define __WIFIDRIVER_H 21 #include <netinterface.h> 22 #include <constants.h> 28 #ifndef _STRUCT_PACKED 29 #define _STRUCT_PACKED __attribute__ ((__packed__)) 32 #define WIFI_INTERFACE_NAME "Wlan0" 33 #define MAX_WIFI_INTERFACES 1 34 #define WIFI_TASK_STACK_SIZE 4048 35 #define WIFI_RX_TASK_BASE_PRIO 18 36 #define WIFI_TX_FLOW_OFF_COUNT 120 38 #define CONNECT_RETRIES (5) 39 #define DEFAULT_WIFI_SEC_ALL (255) 40 #define DEFAULT_WIFI_CH_ALL (255) 42 #define STATUS_STALENESS_LIMIT (1*TICKS_PER_SECOND) 43 #define SCAN_STALENESS_LIMIT (20*TICKS_PER_SECOND) 46 #define CONNECT_TIMEOUT (60*TICKS_PER_SECOND) 47 #define SCAN_TIMEOUT (15*TICKS_PER_SECOND) 49 #define PHY_BRDCST_DEST(x) ( (((uint8_t *)(x))[0] == 0xFF)\ 50 && (((uint8_t *)(x))[1] == 0xFF)\ 51 && (((uint8_t *)(x))[2] == 0xFF)\ 52 && (((uint8_t *)(x))[3] == 0xFF)\ 53 && (((uint8_t *)(x))[4] == 0xFF)\ 54 & (((uint8_t *)(x))[5] == 0xFF)) 58 uint32_t FifoSize(
const OS_FIFO *fifo );
60 struct _STRUCT_PACKED nbWifiScanResult {
69 char ssid[SSID_MAX_LEN + 1];
70 struct nbWifiScanResult * next;
87 struct nbWifiDeviceInfo {
88 uint8_t hardwareMajorRev;
89 uint8_t hardwareMinorRev;
90 uint8_t softwareMajorRev;
91 uint8_t softwareMinorRev;
93 uint8_t hardwareTypeLength;
97 struct nbWifiScanResultList {
100 nbWifiScanResult *head;
101 nbWifiScanResult *tail;
103 uint32_t tickLastUpdated;
106 struct nbWifiConnect {
107 char ssid[SSID_MAX_LEN + 1];
110 char psk[PASS_MAX_LEN + 1];
124 void PrintScanResultList( nbWifiScanResult * firstResult );
126 class Wifi :
public ::EtherLikeInterface
130 config_string cfg_ssid{
"",
"SSID"};
131 config_pass cfg_key{
"",
"Password"};
132 config_chooser mode{
"Connection Mode",
"Client",
"Client,Access Point"};
133 config_chooser security{
"Security",
"Open",
"Open,WEP,WPA,WPA2"};
136 volatile bool autoReconnect;
174 virtual int ConnectToAP(
175 const char * ssid =
nullptr,
const char * passwd =
"",
176 uint8_t retryCount = CONNECT_RETRIES,
177 uint8_t security = DEFAULT_WIFI_SEC_ALL
200 virtual int ConnectToAP( nbWifiConnect connect ) = 0;
230 const char * ssid =
nullptr,
231 const char * passwd =
"",
232 uint8_t channel = DEFAULT_TABLE_LABEL_CHANNEL,
233 uint8_t security = DEFAULT_TABLE_LABEL_SEC,
234 uint8_t cipher = DEFAULT_TABLE_LABEL_CIPH,
254 virtual int StartConfigAP(uint8_t channel = DEFAULT_TABLE_LABEL_CHANNEL) = 0;
273 virtual nbWifiScanResult * Scan(
const char * ssid =
nullptr, uint8_t optionCount = 0, uint16_t *optionList =
nullptr) = 0;
281 virtual void Disconnect() = 0;
286 static Wifi *wifiDrivers[MAX_WIFI_INTERFACES];
298 static Wifi * GetDriverByInterfaceNumber(
int interfaceNumber );
305 static void SetDefaultITUCountry(NB::ITU_Country::CountryCode_t country);
314 virtual int SetITUCountry( NB::ITU_Country::CountryCode_t country ) = 0;
322 virtual bool isRegistered()
const = 0;
332 virtual int GetWifiInterfaceNumber()
const = 0;
340 virtual int GetSystemInterfaceNumber()
const = 0;
360 virtual int StoreSSIDPWToConfig(
char *ssid,
char *password,
int ssidLen = 0) = 0;
368 virtual const char * GetDriverName();
382 virtual int GetSSIDFromConfig(
char *returnBuf,
int maxLen ) = 0;
396 virtual int GetKeyFromConfig(
char *returnBuf,
int maxLen ) = 0;
411 virtual int GetCurSSID(
char * buf,
int maxlen) = 0;
419 virtual MACADR GetCurBSSID() = 0;
443 virtual void GetDeviceInformation(nbWifiDeviceInfo *ap) = 0;
455 virtual bool Connected() = 0;
464 virtual int GetSignalStrength() = 0;
474 virtual uint8_t GetCurChannel() = 0;
484 virtual uint8_t GetSecurity() = 0;
494 virtual uint8_t GetCipher() = 0;
507 virtual void TransmitBuffer( PoolPtr txBuffer ) = 0;
517 virtual bool GetLinkStatus() = 0;
531 virtual void enab_multicast( MACADR macAddress, BOOL addAddress ) = 0;
541 virtual int APIStart() = 0;
555 virtual int Start() = 0;
566 virtual void Pause() = 0;
577 virtual void Resume() = 0;
588 virtual void Kill() = 0;
592 Wifi(
const Wifi & rhs );
593 virtual bool UpdateSlaveFirmware( uint32_t imageLength,
const uint8_t *imageBuffer ) = 0;
617 static bool APITaskStarted;
618 static bool APITaskRunning;
619 static bool APIAbortTask;
620 static bool APIPauseTask;
621 static OS_SEM APITaskPauseSem;
622 static ITU_Country::CountryCode_t wifiCountry;
626 nbWifiScanResultList ScanResults;
631 void (*DisconnectCB) (Wifi *wifiIntf);
632 driverStatusStruct connectionState;
635 int resetPinConnector;
643 Wifi(CommBus busType,
int resetPinConnector,
int resetPinMum,
const char * name);
646 virtual bool SetBusSpeed( uint32_t busSpeed ) = 0;
649 friend class WILC1000;
655 uint8_t ssid[SSID_MAX_LEN + 1];
678 int chipEnablePinNum;
679 NB::Wifi* (*GetDriver)();
683 extern NB::Wifi *theWifiIntf;
uint8_t band
Refer to BANDSECTION for defenitions.
Definition: wifiDriver.h:145
A FIFO is used to pass structures from one task to another. Note: Structures to be passed must have a...
Definition: nbrtos.h:736
uint32_t maxTxRate
Max transmit data throughput.
Definition: wifiDriver.h:147
void PrintScanResult(nbWifiScanResult *scanResult)
Print the results of one scan result using iprintf.
Semaphores are used to control access to shared resource critical section, or to communicate between ...
Definition: nbrtos.h:318
uint8_t bssType
refer to OPTIONLISTBSSTYPE for defenitions
Definition: wifiDriver.h:151
NMC1500 IoT Application Interface Internal Types.
Definition: wifiDriver.h:669
uint8_t ssidLength
Length of the SSID string.
Definition: wifiDriver.h:142
Definition: dhcpv6_internal.h:34
Configuration object header file.
Definition: wifiDriver.h:140
uint8_t connected
1 if connected, 0 if disconnected
Definition: wifiDriver.h:141
uint8_t cipher
refer to OPTIONLISTCIPH for defenitions
Definition: wifiDriver.h:149
int16_t rssi
Recieved Signal Strength Indicator.
Definition: wifiDriver.h:144
uint32_t tickLastUpdated
CPU tick count of when this struct was last updated.
Definition: wifiDriver.h:154
uint8_t channel
802.11 channel
Definition: wifiDriver.h:146
char ssid[SSID_MAX_LEN+1]
Placeholder for char array pointer.
Definition: wifiDriver.h:152
uint8_t security
Security used: WEP, WPA, WPA2, open, uknown.
Definition: wifiDriver.h:148
An OS_CRIT object is used to establish critical sections of code that can only be run by one task at ...
Definition: nbrtos.h:893
MACADR bssid
Basic Service Set Identifier.
Definition: wifiDriver.h:150
uint16_t txPower
Transmit power.
Definition: wifiDriver.h:143
Mailboxes are used to communicate between tasks.
Definition: nbrtos.h:391
void SetWifiSPISpeed(int busSpeed)
Set SPI bus speed.