added buffer functions and fixed APScan issue

This commit is contained in:
Stefan Kremser
2017-03-16 22:36:34 +01:00
parent 705decc3d3
commit a71946d09a
4 changed files with 114 additions and 10 deletions

View File

@@ -26,6 +26,8 @@ bool APScan::start(){
_ssid.toCharArray(names[i],33);
//data_getVendor(WiFi.BSSID(i)[0],WiFi.BSSID(i)[1],WiFi.BSSID(i)[2]).toCharArray(vendors[i],9);
if(debug){
Serial.print((String)i);
Serial.print(" - ");
_ap._print();
Serial.print(" - ");
Serial.print(channels[i]);
@@ -44,7 +46,8 @@ bool APScan::start(){
}
//for debugging the APScan crash bug
/*if(debug){
/*
if(debug){
for(int i=results;i<maxAPScanResults;i++){
Mac _ap;
_ap.set(random(255),random(255),random(255),random(255),random(255),random(255));
@@ -55,6 +58,8 @@ bool APScan::start(){
String _ssid = "test_dbeJwq3tPtJsuWtgULgShD9dxXV";
_ssid.toCharArray(names[i],33);
Serial.print((String)i);
Serial.print(" - ");
_ap._print();
Serial.print(" - ");
Serial.print(channels[i]);
@@ -68,10 +73,10 @@ bool APScan::start(){
results++;
}
}*/
}
*/
if(debug) Serial.println("scan done");
if(debug) Serial.println(getResults());
return true;
}
@@ -115,6 +120,67 @@ int APScan::getFirstTarget(){
return -1;
}
void APScan::sendResults(){
if(debug) Serial.print("sending AP scan result JSON ");
size_t _size = 10; // {"aps":[]}
for(int i=0;i<results && i<maxAPScanResults;i++){
/*
_size++; // {
_size += 5; // "i": ,
_size += String(i).length();
_size += 5; // "c": ,
_size += String(getAPChannel(i)).length();
_size += 24; // "m":"d4:21:22:da:85:f3",
_size += 8; // "ss":" ",
_size += getAPName(i).length();
_size += 5; // "r": ,
_size += String(getAPRSSI(i)).length();
_size += 6; // "e": ,
_size += 6; // "se":0
_size++; // }*/
_size += 61;
_size += String(i).length();
_size += String(getAPChannel(i)).length();
_size += getAPName(i).length();
_size += String(getAPRSSI(i)).length();
if((i!=results-1) && (i!=maxAPScanResults-1)) _size++; // ,
}
sendHeader(200, "text/json", _size);
String json;
int bufc = 0; //bufferCounter
json = "{\"aps\":[";
sendToBuffer(json);
for(int i=0;i<results && i<maxAPScanResults;i++){
if(debug) Serial.print(".");
json = "{";
json += "\"i\":"+(String)i+",";
json += "\"c\":"+(String)getAPChannel(i)+",";
json += "\"m\":\""+getAPMac(i)+"\",";
json += "\"ss\":\""+getAPName(i)+"\",";
json += "\"r\":"+(String)getAPRSSI(i)+",";
json += "\"e\":"+(String)encryption[i]+",";
//json += "\"v\":\""+getAPVendor(i)+"\",";
json += "\"se\":"+(String)getAPSelected(i);
json += "}";
if((i!=results-1) && (i!=maxAPScanResults-1)) json += ",";
sendToBuffer(json);
}
json = "]}";
sendToBuffer(json);
sendBuffer();
if(debug) Serial.println("done");
}
String APScan::getResults(){
if(debug) Serial.print("getting AP scan result JSON ");
String json = "{ \"aps\":[ ";
@@ -175,4 +241,4 @@ void APScan::select(int num){
bool APScan::isSelected(int num){
return selected[num];
}
}

View File

@@ -1,14 +1,19 @@
#ifndef APScan_h
#define APScan_h
#define maxAPScanResults 30
#define maxAPScanResults 80
#include <ESP8266WiFi.h>
#include "Mac.h"
#include "MacList.h"
#include "Settings.h"
#include <ESP8266WebServer.h>
extern String data_getVendor(uint8_t first,uint8_t second,uint8_t third);
extern ESP8266WebServer server;
extern void sendBuffer();
extern void sendToBuffer(String str);
extern void sendHeader(int code, String type, size_t _size);
extern const bool debug;
extern Settings settings;
@@ -21,6 +26,7 @@ class APScan{
String getResults();
String getResult(int i);
void select(int num);
void sendResults();
String getAPName(int num);
String getAPEncryption(int num);
@@ -38,6 +44,7 @@ class APScan{
int selectedSum;
MacList aps;
private:
int channels[maxAPScanResults];
int rssi[maxAPScanResults];
char names[maxAPScanResults][33];
@@ -47,6 +54,7 @@ class APScan{
String getEncryption(int code);
bool selected[maxAPScanResults];
};
#endif
#endif

File diff suppressed because one or more lines are too long

View File

@@ -8,6 +8,8 @@ extern "C" {
#include "user_interface.h"
}
ESP8266WebServer server(80);
#include <EEPROM.h>
#include "data.h"
#include "NameList.h"
@@ -21,8 +23,6 @@ extern "C" {
const bool debug = true;
/* ========== DEBUG ========== */
ESP8266WebServer server(80);
NameList nameList;
APScan apScan;
@@ -71,12 +71,14 @@ void startAPScan() {
}
void sendAPResults() {
apScan.sendResults();
/*
if (server.hasArg("apid")) {
int apid = server.arg("apid").toInt();
server.send ( 200, "text/json", apScan.getResult(apid));
} else {
server.send ( 200, "text/json", apScan.getResults());
}
}*/
}
void selectAP() {