mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-20 21:01:25 +03:00
Changes on WiFi API after review. Add driver utility implementation
This commit is contained in:
238
WiFi/WiFi.cpp
238
WiFi/WiFi.cpp
@ -1,42 +1,32 @@
|
||||
#include "WProgram.h"
|
||||
#include "WiFi.h"
|
||||
#include <EEPROM.h>
|
||||
#include "HardwareSerial.h"
|
||||
#include "wifi_drv.h"
|
||||
#include "WiFi.h"
|
||||
#include "wiring.h"
|
||||
|
||||
extern "C" {
|
||||
#include "utility/wl_definitions.h"
|
||||
#include "utility/wl_types.h"
|
||||
}
|
||||
|
||||
// XXX: don't make assumptions about the value of MAX_SOCK_NUM.
|
||||
int16_t WiFiClass::_state[MAX_SOCK_NUM] = { 0, 0, 0, 0 };
|
||||
uint16_t WiFiClass::_server_port[MAX_SOCK_NUM] = { 0, 0, 0, 0 };
|
||||
int16_t WiFiClass::_state[MAX_SOCK_NUM] = { 0, 0, 0, 0 };
|
||||
uint16_t WiFiClass::_server_port[MAX_SOCK_NUM] = { 0, 0, 0, 0 };
|
||||
|
||||
char WiFiClass::ssid[WL_SSID_MAX_LENGTH] = { 0 };
|
||||
uint8_t WiFiClass::ssid_len;
|
||||
char WiFiClass::key[13] = { 0 };
|
||||
uint8_t WiFiClass::key_len;
|
||||
char WiFiClass::passph[63] = { 0 };
|
||||
uint8_t WiFiClass::passph_len;
|
||||
wl_status_t WiFiClass::status;
|
||||
char WiFiClass::_ssid[] = { 0 };
|
||||
char WiFiClass::_key[] = { 0 };
|
||||
char WiFiClass::_passph[] = { 0 };
|
||||
wl_status_t WiFiClass::_status;
|
||||
|
||||
void readEEdata(int addr, uint8_t* data, uint8_t len)
|
||||
{
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
data[i]= EEPROM.read(addr);
|
||||
}
|
||||
}
|
||||
|
||||
WiFiClass::WiFiClass()
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
void WiFiClass::init()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
Serial.println("WiFi initializing...");
|
||||
WiFiDrv::wifi_drv_init();
|
||||
WiFiDrv::wifiDriverInit();
|
||||
}
|
||||
|
||||
|
||||
uint8_t WiFiClass::getSocket()
|
||||
{
|
||||
for (uint8_t i = 0; i < MAX_SOCK_NUM; ++i)
|
||||
@ -49,136 +39,118 @@ uint8_t WiFiClass::getSocket()
|
||||
return NO_SOCKET_AVAIL;
|
||||
}
|
||||
|
||||
void WiFiClass::begin()
|
||||
int WiFiClass::begin()
|
||||
{
|
||||
init();
|
||||
Serial.println("WiFi Starting...");
|
||||
ssid_len = EEPROM.read(EE_WIFI_SSID_LEN);
|
||||
if ((ssid_len == 0)||(ssid_len > WL_SSID_MAX_LENGTH))
|
||||
{
|
||||
Serial.println("No SSID in EEPROM");
|
||||
|
||||
status = WL_NO_SSID_AVAIL;
|
||||
return;
|
||||
}
|
||||
readEEdata(EE_WIFI_SSID_DATA, (uint8_t*)&ssid[0], ssid_len);
|
||||
|
||||
Serial.print("SSID: ");
|
||||
Serial.print(ssid_len, 10);
|
||||
Serial.print(" - ");
|
||||
Serial.print(ssid[0]);
|
||||
Serial.println("");
|
||||
key_len = EEPROM.read(EE_WIFI_KEY_LEN);
|
||||
if (key_len == 0)
|
||||
{
|
||||
Serial.println("No PASSPHRASE in EEPROM");
|
||||
|
||||
passph_len = EEPROM.read(EE_WIFI_PASSPH_LEN);
|
||||
if (passph_len == 0)
|
||||
{
|
||||
begin(ssid, ssid_len);
|
||||
}else{
|
||||
readEEdata(EE_WIFI_PASSPH_DATA, (uint8_t*)&passph[0], passph_len);
|
||||
beginp(ssid,ssid_len,&passph[0],passph_len);
|
||||
}
|
||||
}else{
|
||||
Serial.println("No KEY in EEPROM");
|
||||
|
||||
readEEdata(EE_WIFI_KEY_DATA, (uint8_t*)&key[0], key_len);
|
||||
begink(ssid,ssid_len, 0, &key[0],key_len);
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiClass::begin(char* ssid, uint8_t ssid_len)
|
||||
int WiFiClass::begin(char* ssid)
|
||||
{
|
||||
wl_error_code_t result = (wl_error_code_t)WiFiDrv::wifi_set_net(ssid, ssid_len);
|
||||
if (result == WL_SUCCESS)
|
||||
if (WiFiDrv::wifiSetNetwork(ssid, strlen(ssid)) != WL_FAILURE)
|
||||
{
|
||||
status = WL_CONNECTED;
|
||||
Serial.println("WiFi Connected!");
|
||||
}else{
|
||||
status = WL_CONNECT_FAILED;
|
||||
Serial.println("WiFi Connection failed!");
|
||||
delay(WL_DELAY_START_CONNECTION);
|
||||
return WiFiDrv::getConnectionStatus();
|
||||
}else
|
||||
{
|
||||
return WL_CONNECT_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiClass::begink(char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t key_len)
|
||||
int WiFiClass::begin(char* ssid, uint8_t key_idx, const char *key)
|
||||
{
|
||||
// set encryption key
|
||||
wl_error_code_t result = (wl_error_code_t)WiFiDrv::wifi_set_key(ssid, ssid_len, key_idx, key, key_len);
|
||||
if (result == WL_SUCCESS)
|
||||
{
|
||||
//begin(ssid, ssid_len);
|
||||
}else{
|
||||
// Error setting passphrase
|
||||
}
|
||||
|
||||
if (WiFiDrv::wifiSetKey(ssid, strlen(ssid), key_idx, key, strlen(key)) != WL_FAILURE)
|
||||
{
|
||||
delay(WL_DELAY_START_CONNECTION);
|
||||
return WiFiDrv::getConnectionStatus();
|
||||
}else{
|
||||
return WL_CONNECT_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
void WiFiClass::beginp(char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len)
|
||||
int WiFiClass::begin(char* ssid, const char *passphrase)
|
||||
{
|
||||
// set passphrase
|
||||
wl_error_code_t result = (wl_error_code_t)WiFiDrv::wifi_set_passpharse(ssid, ssid_len, passphrase, len);
|
||||
if (result == WL_SUCCESS)
|
||||
if (WiFiDrv::wifiSetPassphrase(ssid, strlen(ssid), passphrase, strlen(passphrase))!= WL_FAILURE)
|
||||
{
|
||||
//begin(ssid, ssid_len);
|
||||
}else{
|
||||
// Error setting passphrase
|
||||
delay(WL_DELAY_START_CONNECTION);
|
||||
return WiFiDrv::getConnectionStatus();
|
||||
}else{
|
||||
return WL_CONNECT_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
wl_status_t WiFiClass::get_status()
|
||||
{
|
||||
return status;
|
||||
}
|
||||
|
||||
uint8_t WiFiClass::get_result(uint8_t dummy)
|
||||
{
|
||||
uint8_t result = WiFiDrv::wifi_get_result(dummy);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void WiFiClass::getIpAddr(uint8_t *ip, uint8_t *mask, uint8_t *gwip)
|
||||
{
|
||||
WiFiDrv::getIpAddr(ip,mask,gwip);
|
||||
}
|
||||
|
||||
|
||||
uint8_t WiFiClass::getMacAddr(uint8_t* mac)
|
||||
{
|
||||
return WiFiDrv::wl_get_mac_addr(mac);
|
||||
}
|
||||
|
||||
void WiFiClass::getSSIDList(char** ssid_list, uint8_t* ssidListNum)
|
||||
{
|
||||
WiFiDrv::getSSIDList(ssid_list, ssidListNum);
|
||||
}
|
||||
|
||||
void WiFiClass::getCurrSSID(char* ssid)
|
||||
{
|
||||
WiFiDrv::getCurrSSID(ssid);
|
||||
}
|
||||
|
||||
void WiFiClass::getCurrBSSID(uint8_t* bssid)
|
||||
{
|
||||
WiFiDrv::getCurrBSSID(bssid);
|
||||
}
|
||||
|
||||
void WiFiClass::getCurrRSSI(int32_t* rssi)
|
||||
{
|
||||
WiFiDrv::getCurrRSSI(rssi);
|
||||
}
|
||||
|
||||
void WiFiClass::getCurrEncType(uint8_t* enc_type)
|
||||
{
|
||||
WiFiDrv::getCurrEncType(enc_type);
|
||||
}
|
||||
|
||||
uint8_t WiFiClass::disconnect()
|
||||
int WiFiClass::disconnect()
|
||||
{
|
||||
return WiFiDrv::disconnect();
|
||||
}
|
||||
|
||||
uint8_t* WiFiClass::macAddress(uint8_t* mac)
|
||||
{
|
||||
mac = WiFiDrv::getMacAddress();
|
||||
return mac;
|
||||
}
|
||||
|
||||
IPAddress WiFiClass::localIp()
|
||||
{
|
||||
IPAddress ret;
|
||||
WiFiDrv::getIpAddress(ret.raw_address());
|
||||
return ret;
|
||||
}
|
||||
|
||||
IPAddress WiFiClass::subnetMask()
|
||||
{
|
||||
IPAddress ret;
|
||||
WiFiDrv::getSubnetMask(ret.raw_address());
|
||||
return ret;
|
||||
}
|
||||
|
||||
IPAddress WiFiClass::gatewayIP()
|
||||
{
|
||||
IPAddress ret;
|
||||
WiFiDrv::getGatewayIP(ret.raw_address());
|
||||
return ret;
|
||||
}
|
||||
|
||||
char* WiFiClass::SSID()
|
||||
{
|
||||
return WiFiDrv::getCurrentSSID();
|
||||
}
|
||||
|
||||
uint8_t* WiFiClass::BSSID(uint8_t* bssid)
|
||||
{
|
||||
bssid = WiFiDrv::getCurrentBSSID();
|
||||
return bssid;
|
||||
}
|
||||
|
||||
int32_t WiFiClass::RSSI()
|
||||
{
|
||||
return WiFiDrv::getCurrentRSSI();
|
||||
}
|
||||
|
||||
uint8_t WiFiClass::encryptionType()
|
||||
{
|
||||
return WiFiDrv::getCurrentEncryptionType();
|
||||
}
|
||||
|
||||
|
||||
uint8_t WiFiClass::scanNetworks()
|
||||
{
|
||||
return WiFiDrv::scanNetworks();
|
||||
}
|
||||
|
||||
char* WiFiClass::SSID(uint8_t networkItem)
|
||||
{
|
||||
return WiFiDrv::getSSIDNetoworks(networkItem);
|
||||
}
|
||||
|
||||
int32_t WiFiClass::RSSI(uint8_t networkItem)
|
||||
{
|
||||
return WiFiDrv::getRSSINetoworks(networkItem);
|
||||
}
|
||||
|
||||
uint8_t WiFiClass::encryptionType(uint8_t networkItem)
|
||||
{
|
||||
return WiFiDrv::getEncTypeNetowrks(networkItem);
|
||||
}
|
||||
|
||||
WiFiClass WiFi;
|
||||
|
Reference in New Issue
Block a user