I'm trying to scan for Wi-Fi networks and get the BSSID and RSSI of the available networks.
I have added the following code to Adafruit_CC3000.cpp, but it does not seem to return any useable data.
Code: Select all
uint8_t Adafruit_CC3000::getNextBSSID(uint8_t *rssi, uint8_t *secMode, char *ssidname, uint8_t* bssid) {
uint8_t valid = (SSIDScanResultBuff.rssiByte & (~0xFE));
*rssi = (SSIDScanResultBuff.rssiByte >> 1);
*secMode = (SSIDScanResultBuff.Sec_ssidLen & (~0xFC));
uint8_t ssidLen = (SSIDScanResultBuff.Sec_ssidLen >> 2);
strncpy(ssidname, (char *)SSIDScanResultBuff.ssid_name, ssidLen);
ssidname[ssidLen] = 0;
bssid = (SSIDScanResultBuff.bssid);
CHECK_SUCCESS(wlan_ioctl_get_scan_results(0, (uint8_t* ) &SSIDScanResultBuff),
"Problem with the BSSID scan results", false);
return valid;
}
Code: Select all
void listSSIDResults(void)
{
uint8_t valid, rssi, sec, index;
char ssidname[33];
uint8_t bssid[6];
index = cc3000.startSSIDscan();
Serial.print(F("Networks found: ")); Serial.println(index);
Serial.println(F("================================================"));
while (index) {
index--;
valid = cc3000.getNextBSSID(&rssi, &sec, ssidname, bssid);
Serial.print(F("SSID Name : ")); Serial.print(ssidname);
Serial.println();
Serial.print(F("RSSI : "));
Serial.println(rssi);
Serial.print(F("Security Mode: "));
Serial.println(sec);
Serial.print(F("BSSID: "));
for(byte i = 0; i < 5; i++) {
Serial.print(bssid[i], HEX);
Serial.print(':');
}
Serial.println(bssid[5], HEX);
Serial.println();
}
Serial.println(F("================================================"));
cc3000.stopSSIDscan();
}
Any clue what might be going wrong?
Kind regards,
Arno