Implement hidden APs

Now APscan is compatible with the new scanNetworks method

+ added bool hidden[] and bool getAPName(int num) to save and retrieve
the "visibility" status of a network.

+ If the ssid of a given network is hidden, getAPName() will return "*
Hidden SSID *"
hidden[] will stay empty.

+ Added debug infos
This commit is contained in:
N0vaPixel
2017-03-03 00:38:09 +01:00
parent eb96986787
commit f53795edb6
2 changed files with 13 additions and 4 deletions

View File

@@ -7,11 +7,11 @@ APScan::APScan(){
bool APScan::start(){ bool APScan::start(){
if(debug){ if(debug){
Serial.println("starting AP scan..."); Serial.println("starting AP scan...");
Serial.println("MAC - Ch - RSSI - Encrypt. - SSID");// - Vendor"); Serial.println("MAC - Ch - RSSI - Encrypt. - SSID - Hidden");// - Vendor");
} }
aps._clear(); aps._clear();
for(int i=0;i<maxAPScanResults;i++) selected[i] = false; for(int i=0;i<maxAPScanResults;i++) selected[i] = false;
results = WiFi.scanNetworks(); results = WiFi.scanNetworks(false, true); // lets scanNetworks return hidden APs. (async = false & show_hidden = true)
for(int i=0;i<results && i<maxAPScanResults;i++){ for(int i=0;i<results && i<maxAPScanResults;i++){
Mac _ap; Mac _ap;
@@ -20,6 +20,7 @@ bool APScan::start(){
channels[i] = WiFi.channel(i); channels[i] = WiFi.channel(i);
rssi[i] = WiFi.RSSI(i); rssi[i] = WiFi.RSSI(i);
encryption[i] = WiFi.encryptionType(i); encryption[i] = WiFi.encryptionType(i);
hidden[i] = WiFi.isHidden(i);
String _ssid = WiFi.SSID(i); String _ssid = WiFi.SSID(i);
_ssid.replace("\"","\\\""); _ssid.replace("\"","\\\"");
_ssid.toCharArray(names[i],33); _ssid.toCharArray(names[i],33);
@@ -34,6 +35,8 @@ bool APScan::start(){
Serial.print(getEncryption(encryption[i])); Serial.print(getEncryption(encryption[i]));
Serial.print(" - "); Serial.print(" - ");
Serial.print(names[i]); Serial.print(names[i]);
Serial.print(" - ");
Serial.print(hidden[i]);
//Serial.print(" - "); //Serial.print(" - ");
//Serial.print(vendors[i]); //Serial.print(vendors[i]);
Serial.println(); Serial.println();
@@ -93,11 +96,15 @@ String APScan::getEncryption(int code){
return "?"; return "?";
} }
String APScan::getAPName(int num){ return names[num]; } String APScan::getAPName(int num){
if(isHidden(num)) return "* Hidden SSID *";
return names[num];
}
String APScan::getAPEncryption(int num){ return getEncryption(encryption[num]); } String APScan::getAPEncryption(int num){ return getEncryption(encryption[num]); }
//String APScan::getAPVendor(int num){ return vendors[num]; } //String APScan::getAPVendor(int num){ return vendors[num]; }
String APScan::getAPMac(int num){ return aps._get(num).toString(); } String APScan::getAPMac(int num){ return aps._get(num).toString(); }
bool APScan::getAPSelected(int num){ return selected[num]; } bool APScan::getAPSelected(int num){ return selected[num]; }
bool APScan::isHidden(int num){ return hidden[num]; }
int APScan::getAPRSSI(int num){ return rssi[num]; } int APScan::getAPRSSI(int num){ return rssi[num]; }
int APScan::getAPChannel(int num){ return channels[num]; } int APScan::getAPChannel(int num){ return channels[num]; }

View File

@@ -23,6 +23,7 @@ class APScan{
//String getAPVendor(int num); //String getAPVendor(int num);
String getAPMac(int num); String getAPMac(int num);
bool getAPSelected(int num); bool getAPSelected(int num);
bool isHidden(int num);
int getAPRSSI(int num); int getAPRSSI(int num);
int getAPChannel(int num); int getAPChannel(int num);
@@ -37,7 +38,8 @@ class APScan{
int rssi[maxAPScanResults]; int rssi[maxAPScanResults];
char names[maxAPScanResults][33]; char names[maxAPScanResults][33];
int encryption[maxAPScanResults]; int encryption[maxAPScanResults];
bool hidden[maxAPScanResults];
String getEncryption(int code); String getEncryption(int code);
bool selected[maxAPScanResults]; bool selected[maxAPScanResults];