MAC processing reworked
This commit is contained in:
parent
1cd9ae16f1
commit
30731f5c0c
@ -19,7 +19,7 @@ uint64_t macConvert(uint8_t *paddr);
|
|||||||
esp_err_t macQueueInit(void);
|
esp_err_t macQueueInit(void);
|
||||||
void mac_process(void *pvParameters);
|
void mac_process(void *pvParameters);
|
||||||
void IRAM_ATTR mac_add(uint8_t *paddr, int8_t rssi, snifftype_t sniff_type);
|
void IRAM_ATTR mac_add(uint8_t *paddr, int8_t rssi, snifftype_t sniff_type);
|
||||||
uint16_t mac_analyze(uint8_t *paddr, int8_t rssi, snifftype_t sniff_type);
|
uint16_t mac_analyze(MacBuffer_t MacBuffer);
|
||||||
void printKey(const char *name, const uint8_t *key, uint8_t len, bool lsb);
|
void printKey(const char *name, const uint8_t *key, uint8_t len, bool lsb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -46,7 +46,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 2.0.3
|
release_version = 2.0.4
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 3
|
debug_level = 3
|
||||||
|
@ -151,13 +151,6 @@ IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
|
|||||||
ESP_LOGV(TAG, "RSSI : %d", p->scan_rst.rssi);
|
ESP_LOGV(TAG, "RSSI : %d", p->scan_rst.rssi);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((cfg.rssilimit) &&
|
|
||||||
(p->scan_rst.rssi < cfg.rssilimit)) { // rssi is negative value
|
|
||||||
ESP_LOGI(TAG, "BLTH RSSI %d -> ignoring (limit: %d)", p->scan_rst.rssi,
|
|
||||||
cfg.rssilimit);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if (VENDORFILTER)
|
#if (VENDORFILTER)
|
||||||
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
||||||
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
||||||
|
163
src/macsniff.cpp
163
src/macsniff.cpp
@ -80,7 +80,7 @@ void mac_process(void *pvParameters) {
|
|||||||
ESP_LOGE(TAG, "Premature return from xQueueReceive() with no data!");
|
ESP_LOGE(TAG, "Premature return from xQueueReceive() with no data!");
|
||||||
continue;
|
continue;
|
||||||
} else
|
} else
|
||||||
mac_analyze(MacBuffer.mac, MacBuffer.rssi, MacBuffer.sniff_type);
|
mac_analyze(MacBuffer);
|
||||||
}
|
}
|
||||||
delay(2); // yield to CPU
|
delay(2); // yield to CPU
|
||||||
}
|
}
|
||||||
@ -95,116 +95,117 @@ void IRAM_ATTR mac_add(uint8_t *paddr, int8_t rssi, snifftype_t sniff_type) {
|
|||||||
memcpy(MacBuffer.mac, paddr, 6);
|
memcpy(MacBuffer.mac, paddr, 6);
|
||||||
|
|
||||||
if (xQueueSendToBackFromISR(MacQueue, (void *)&MacBuffer, (TickType_t)0) !=
|
if (xQueueSendToBackFromISR(MacQueue, (void *)&MacBuffer, (TickType_t)0) !=
|
||||||
pdTRUE)
|
pdPASS)
|
||||||
ESP_LOGW(TAG, "Dense radio traffic, packet lost!");
|
ESP_LOGW(TAG, "Dense radio traffic, packet lost!");
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t mac_analyze(uint8_t *paddr, int8_t rssi, snifftype_t sniff_type) {
|
uint16_t mac_analyze(MacBuffer_t MacBuffer) {
|
||||||
|
|
||||||
if (salt == 0) // ensure we have salt (appears after radio is turned on)
|
if (salt == 0) // ensure we have salt (appears after radio is turned on)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
uint16_t hashedmac = 0; // temporary buffer for generated hash value
|
if ((cfg.rssilimit) &&
|
||||||
char buff[10]; // temporary buffer for printf
|
(MacBuffer.rssi < cfg.rssilimit)) { // rssi is negative value
|
||||||
bool added = false;
|
ESP_LOGI(TAG, "%s RSSI %d -> ignoring (limit: %d)",
|
||||||
int8_t beaconID; // beacon number in test monitor mode
|
(MacBuffer.sniff_type == MAC_SNIFF_WIFI) ? "WIFI" : "BLTH",
|
||||||
uint32_t *mac; // temporary buffer for shortened MAC
|
MacBuffer.rssi, cfg.rssilimit);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// in beacon monitor mode check if seen MAC is a known beacon
|
||||||
|
if (cfg.monitormode) {
|
||||||
|
int8_t beaconID = isBeacon(macConvert(MacBuffer.mac));
|
||||||
|
if (beaconID >= 0) {
|
||||||
|
ESP_LOGI(TAG, "Beacon ID#%d detected", beaconID);
|
||||||
|
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
||||||
|
blink_LED(COLOR_WHITE, 2000);
|
||||||
|
#endif
|
||||||
|
payload.reset();
|
||||||
|
payload.addAlarm(MacBuffer.rssi, beaconID);
|
||||||
|
SendPayload(BEACONPORT, prio_high);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#if (VENDORFILTER)
|
||||||
|
uint32_t *oui; // temporary buffer for vendor OUI
|
||||||
|
oui = (uint32_t *)MacBuffer.mac;
|
||||||
|
// if we find OUI on vendor filter list we don't analyze and return early
|
||||||
|
if (std::find(vendors.begin(), vendors.end(), __builtin_bswap32(*oui) >> 8) !=
|
||||||
|
vendors.end())
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char buff[10]; // temporary buffer for printf
|
||||||
|
uint32_t *mac; // temporary buffer for shortened MAC
|
||||||
|
|
||||||
// only last 3 MAC Address bytes are used for MAC address anonymization
|
// only last 3 MAC Address bytes are used for MAC address anonymization
|
||||||
// but since it's uint32 we take 4 bytes to avoid 1st value to be 0.
|
// but since it's uint32 we take 4 bytes to avoid 1st value to be 0.
|
||||||
// this gets MAC in msb (= reverse) order, but doesn't matter for hashing it.
|
// this gets MAC in msb (= reverse) order, but doesn't matter for hashing it.
|
||||||
mac = (uint32_t *)(paddr + 2);
|
mac = (uint32_t *)(MacBuffer.mac + 2);
|
||||||
|
|
||||||
#if (VENDORFILTER)
|
// salt and hash MAC, and if new unique one, store identifier in container
|
||||||
uint32_t *oui; // temporary buffer for vendor OUI
|
// and increment counter on display
|
||||||
oui = (uint32_t *)paddr;
|
// https://en.wikipedia.org/wiki/MAC_Address_Anonymization
|
||||||
|
|
||||||
// use OUI vendor filter list only on Wifi, not on BLE
|
snprintf(buff, sizeof(buff), "%08X",
|
||||||
if ((sniff_type == MAC_SNIFF_BLE) ||
|
*mac + (uint32_t)salt); // convert unsigned 32-bit salted MAC
|
||||||
std::find(vendors.begin(), vendors.end(), __builtin_bswap32(*oui) >> 8) !=
|
// to 8 digit hex string
|
||||||
vendors.end()) {
|
uint16_t hashedmac = rokkit(&buff[3], 5); // hash MAC 8 digit -> 5 digit
|
||||||
#endif
|
auto newmac = macs.insert(hashedmac); // add hashed MAC, if new unique
|
||||||
|
bool added =
|
||||||
|
newmac.second ? true : false; // true if hashed MAC is unique in container
|
||||||
|
|
||||||
// salt and hash MAC, and if new unique one, store identifier in container
|
// Count only if MAC was not yet seen
|
||||||
// and increment counter on display
|
if (added) {
|
||||||
// https://en.wikipedia.org/wiki/MAC_Address_Anonymization
|
|
||||||
|
|
||||||
snprintf(buff, sizeof(buff), "%08X",
|
switch (MacBuffer.sniff_type) {
|
||||||
*mac + (uint32_t)salt); // convert unsigned 32-bit salted MAC
|
|
||||||
// to 8 digit hex string
|
|
||||||
hashedmac = rokkit(&buff[3], 5); // hash MAC 8 digit -> 5 digit
|
|
||||||
auto newmac = macs.insert(hashedmac); // add hashed MAC, if new unique
|
|
||||||
added = newmac.second ? true
|
|
||||||
: false; // true if hashed MAC is unique in container
|
|
||||||
|
|
||||||
// Count only if MAC was not yet seen
|
|
||||||
if (added) {
|
|
||||||
// increment counter and one blink led
|
|
||||||
if (sniff_type == MAC_SNIFF_WIFI) {
|
|
||||||
macs_wifi++; // increment Wifi MACs counter
|
|
||||||
|
|
||||||
|
case MAC_SNIFF_WIFI:
|
||||||
|
macs_wifi++; // increment Wifi MACs counter
|
||||||
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
||||||
blink_LED(COLOR_GREEN, 50);
|
blink_LED(COLOR_GREEN, 50);
|
||||||
#endif
|
#endif
|
||||||
}
|
break;
|
||||||
|
|
||||||
#if (BLECOUNTER)
|
#if (BLECOUNTER)
|
||||||
else if ((sniff_type == MAC_SNIFF_BLE) ||
|
case MAC_SNIFF_BLE:
|
||||||
(sniff_type = MAC_SNIFF_BLE_ENS)) {
|
macs_ble++; // increment BLE Macs counter
|
||||||
macs_ble++; // increment BLE Macs counter
|
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
||||||
|
blink_LED(COLOR_MAGENTA, 50);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
#if (COUNT_ENS)
|
#if (COUNT_ENS)
|
||||||
if (sniff_type == MAC_SNIFF_BLE_ENS)
|
case MAC_SNIFF_BLE_ENS:
|
||||||
cwa_mac_add(hashedmac);
|
macs_ble++; // increment BLE Macs counter
|
||||||
#endif
|
cwa_mac_add(hashedmac); // process ENS beacon
|
||||||
|
|
||||||
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
||||||
blink_LED(COLOR_MAGENTA, 50);
|
blink_LED(COLOR_WHITE, 50);
|
||||||
#endif
|
#endif
|
||||||
}
|
break;
|
||||||
|
|
||||||
|
#endif // COUNT_ENS
|
||||||
#endif // BLECOUNTER
|
#endif // BLECOUNTER
|
||||||
|
|
||||||
// in beacon monitor mode check if seen MAC is a known beacon
|
} // switch
|
||||||
if (cfg.monitormode) {
|
} // added
|
||||||
beaconID = isBeacon(macConvert(paddr));
|
|
||||||
if (beaconID >= 0) {
|
|
||||||
ESP_LOGI(TAG, "Beacon ID#%d detected", beaconID);
|
|
||||||
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
|
||||||
blink_LED(COLOR_WHITE, 2000);
|
|
||||||
#endif
|
|
||||||
payload.reset();
|
|
||||||
payload.addAlarm(rssi, beaconID);
|
|
||||||
SendPayload(BEACONPORT, prio_high);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
} // added
|
// Log scan result
|
||||||
|
ESP_LOGV(TAG,
|
||||||
// Log scan result
|
"%s %s RSSI %ddBi -> salted MAC %s -> Hash %04X -> WiFi:%d "
|
||||||
ESP_LOGV(TAG,
|
"BLTH:%d "
|
||||||
"%s %s RSSI %ddBi -> salted MAC %s -> Hash %04X -> WiFi:%d "
|
|
||||||
"BLTH:%d "
|
|
||||||
#if (COUNT_ENS)
|
#if (COUNT_ENS)
|
||||||
"(CWA:%d)"
|
"(CWA:%d)"
|
||||||
#endif
|
#endif
|
||||||
"-> %d Bytes left",
|
"-> %d Bytes left",
|
||||||
added ? "new " : "known",
|
added ? "new " : "known",
|
||||||
sniff_type == MAC_SNIFF_WIFI ? "WiFi" : "BLTH", rssi, buff,
|
MacBuffer.sniff_type == MAC_SNIFF_WIFI ? "WiFi" : "BLTH",
|
||||||
hashedmac, macs_wifi, macs_ble,
|
MacBuffer.rssi, buff, hashedmac, macs_wifi, macs_ble,
|
||||||
#if (COUNT_ENS)
|
#if (COUNT_ENS)
|
||||||
cwa_report(),
|
cwa_report(),
|
||||||
#endif
|
#endif
|
||||||
getFreeRAM());
|
getFreeRAM());
|
||||||
|
|
||||||
#if (VENDORFILTER)
|
// if an unknown Wifi or BLE mac was counted, return hash of this mac, else 0
|
||||||
} else {
|
return (added ? hashedmac : 0);
|
||||||
// Very noisy
|
|
||||||
// ESP_LOGD(TAG, "Filtered MAC %02X:%02X:%02X:%02X:%02X:%02X",
|
|
||||||
// paddr[0],paddr[1],paddr[2],paddr[3],paddr[5],paddr[5]);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// if a new and unique Wifi or BLE mac was counted, returs hash of this mac,
|
|
||||||
// else 0
|
|
||||||
return hashedmac;
|
|
||||||
}
|
}
|
@ -14,10 +14,11 @@
|
|||||||
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
||||||
#define COUNTERMODE 0 // 0=cyclic, 1=cumulative, 2=cyclic confirmed
|
#define COUNTERMODE 0 // 0=cyclic, 1=cumulative, 2=cyclic confirmed
|
||||||
|
|
||||||
// Set this to include BLE counting and vendor filter functions, or to switch off WIFI counting
|
// MAC sniffing parameters
|
||||||
#define VENDORFILTER 0 // set to 0 if you want to scan all devices, not filtering smartphone OUIs
|
#define VENDORFILTER 0 // set to 0 if you want to scan all devices, not filtering smartphone OUIs
|
||||||
#define BLECOUNTER 0 // set to 0 if you do not want to install the BLE sniffer
|
#define BLECOUNTER 0 // set to 0 if you do not want to install the BLE sniffer
|
||||||
#define WIFICOUNTER 1 // set to 0 if you do not want to install the WIFI sniffer
|
#define WIFICOUNTER 1 // set to 0 if you do not want to install the WIFI sniffer
|
||||||
|
#define MAC_QUEUE_SIZE 50 // size of MAC processing buffer (number of MACs) [default = 50]
|
||||||
|
|
||||||
// BLE scan parameters
|
// BLE scan parameters
|
||||||
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below
|
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below
|
||||||
@ -29,10 +30,9 @@
|
|||||||
// set to 0 if you do not want to enable this function
|
// set to 0 if you do not want to enable this function
|
||||||
|
|
||||||
// for additional sensors (added by some user)
|
// for additional sensors (added by some user)
|
||||||
#define HAS_SENSOR_1 0 // set to 1 if you want to transmit CWA counter
|
#define HAS_SENSOR_1 0 // set to 1 to enable data transfer of user sensor #1 (also used as ENS counter) [default=0]
|
||||||
#define HAS_SENSOR_2 0 // not used
|
#define HAS_SENSOR_2 0 // set to 1 to enable data transfer of user sensor #2 [default=0]
|
||||||
#define HAS_SENSOR_3 0 // not used
|
#define HAS_SENSOR_3 0 // set to 1 to enable data transfer of user sensor #3 [default=0]
|
||||||
#define HAS_SENSORS (HAS_SENSOR_1 || HAS_SENSOR_2 || HAS_SENSOR_3) // to simplify things
|
|
||||||
|
|
||||||
/* Note: guide for setting bluetooth parameters
|
/* Note: guide for setting bluetooth parameters
|
||||||
*
|
*
|
||||||
|
@ -1,135 +0,0 @@
|
|||||||
; PlatformIO Project Configuration File
|
|
||||||
; NOTE: PlatformIO v4 is needed!
|
|
||||||
;
|
|
||||||
; Please visit documentation for the other options and examples
|
|
||||||
; http://docs.platformio.org/page/projectconf.html
|
|
||||||
|
|
||||||
|
|
||||||
; ---> SELECT THE TARGET PLATFORM HERE! <---
|
|
||||||
[board]
|
|
||||||
halfile = generic.h
|
|
||||||
;halfile = ebox.h
|
|
||||||
;halfile = eboxtube.h
|
|
||||||
;halfile = ecopower.h
|
|
||||||
;halfile = heltec.h
|
|
||||||
;halfile = heltecv2.h
|
|
||||||
;halfile = ttgov1.h
|
|
||||||
;halfile = ttgov2.h
|
|
||||||
;halfile = ttgov21old.h
|
|
||||||
;halfile = ttgov21new.h
|
|
||||||
;halfile = ttgofox.h
|
|
||||||
;halfile = ttgobeam.h
|
|
||||||
;halfile = ttgobeam10.h
|
|
||||||
;halfile = fipy.h
|
|
||||||
;halfile = lopy.h
|
|
||||||
;halfile = lopy4.h
|
|
||||||
;halfile = lolin32litelora.h
|
|
||||||
;halfile = lolin32lora.h
|
|
||||||
;halfile = lolin32lite.h
|
|
||||||
;halfile = wemos32oled.h
|
|
||||||
;halfile = wemos32matrix.h
|
|
||||||
;halfile = octopus32.h
|
|
||||||
;halfile = tinypico.h
|
|
||||||
;halfile = tinypicomatrix.h
|
|
||||||
;halfile = m5core.h
|
|
||||||
;halfile = m5fire.h
|
|
||||||
;halfile = olimexpoeiso.h
|
|
||||||
|
|
||||||
[platformio]
|
|
||||||
; upload firmware to board with usb cable
|
|
||||||
default_envs = usb
|
|
||||||
; upload firmware to a jfrog bintray repository
|
|
||||||
;default_envs = ota
|
|
||||||
; use latest versions of libraries
|
|
||||||
;default_envs = dev
|
|
||||||
description = Paxcounter is a device for metering passenger flows in realtime. It counts how many mobile devices are around.
|
|
||||||
|
|
||||||
[common]
|
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
|
||||||
release_version = 2.0.16
|
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
|
||||||
debug_level = 3
|
|
||||||
extra_scripts = pre:build.py
|
|
||||||
otakeyfile = ota.conf
|
|
||||||
lorakeyfile = loraconf.h
|
|
||||||
lmicconfigfile = lmic_config.h
|
|
||||||
platform_espressif32 = espressif32@2.0.0
|
|
||||||
monitor_speed = 115200
|
|
||||||
upload_speed = 115200 ; set by build.py and taken from hal file
|
|
||||||
display_library = ; set by build.py and taken from hal file
|
|
||||||
lib_deps_lora =
|
|
||||||
mcci-catena/MCCI LoRaWAN LMIC library @ ^3.2.0
|
|
||||||
lib_deps_display =
|
|
||||||
bitbank2/OneBitDisplay @ 1.7.2
|
|
||||||
ricmoo/QRCode @ ^0.0.1
|
|
||||||
bodmer/TFT_eSPI @ ^2.2.20
|
|
||||||
lib_deps_ledmatrix =
|
|
||||||
seeed-studio/Ultrathin_LED_Matrix @ ^1.0.0
|
|
||||||
lib_deps_rgbled =
|
|
||||||
roboticsbrno/SmartLeds @ ^1.2.1
|
|
||||||
lib_deps_gps =
|
|
||||||
mikalhart/TinyGPSPlus @ ^1.0.2
|
|
||||||
lib_deps_sensors =
|
|
||||||
adafruit/Adafruit Unified Sensor @ ^1.1.4
|
|
||||||
adafruit/Adafruit BME280 Library @ ^2.1.1
|
|
||||||
adafruit/Adafruit BMP085 Library @ ^1.1.0
|
|
||||||
boschsensortec/BSEC Software Library @ 1.5.1474
|
|
||||||
https://github.com/ricki-z/SDS011.git
|
|
||||||
lib_deps_basic =
|
|
||||||
bblanchon/ArduinoJson @ <6
|
|
||||||
jchristensen/Timezone @ ^1.2.4
|
|
||||||
makuna/RTC @ ^2.3.5
|
|
||||||
spacehuhn/SimpleButton
|
|
||||||
lewisxhe/AXP202X_Library @ ^1.1.2
|
|
||||||
geeksville/esp32-micro-sdcard @ ^0.1.1
|
|
||||||
256dpi/MQTT @ ^2.4.7
|
|
||||||
lib_deps_all =
|
|
||||||
${common.lib_deps_basic}
|
|
||||||
${common.lib_deps_lora}
|
|
||||||
${common.lib_deps_display}
|
|
||||||
${common.lib_deps_rgbled}
|
|
||||||
${common.lib_deps_gps}
|
|
||||||
${common.lib_deps_sensors}
|
|
||||||
${common.lib_deps_ledmatrix}
|
|
||||||
build_flags_basic =
|
|
||||||
-include "src/hal/${board.halfile}"
|
|
||||||
-include "src/paxcounter.conf"
|
|
||||||
-w
|
|
||||||
'-DCORE_DEBUG_LEVEL=${common.debug_level}'
|
|
||||||
'-DLOG_LOCAL_LEVEL=${common.debug_level}'
|
|
||||||
'-DPROGVERSION="${common.release_version}"'
|
|
||||||
build_flags_sensors =
|
|
||||||
-Llib/Bosch-BSEC/src/esp32/
|
|
||||||
-lalgobsec
|
|
||||||
build_flags_all =
|
|
||||||
${common.build_flags_basic}
|
|
||||||
${common.build_flags_sensors}
|
|
||||||
-mfix-esp32-psram-cache-issue
|
|
||||||
|
|
||||||
[env]
|
|
||||||
lib_ldf_mode = deep ; #632 Fixes compiler error with OneBitDisplay library
|
|
||||||
framework = arduino
|
|
||||||
board = esp32dev
|
|
||||||
board_build.partitions = min_spiffs.csv
|
|
||||||
upload_speed = ${common.upload_speed}
|
|
||||||
;upload_port = COM8
|
|
||||||
platform = ${common.platform_espressif32}
|
|
||||||
lib_deps = ${common.lib_deps_all}
|
|
||||||
build_flags = ${common.build_flags_all}
|
|
||||||
upload_protocol = ${common.upload_protocol}
|
|
||||||
extra_scripts = ${common.extra_scripts}
|
|
||||||
monitor_speed = ${common.monitor_speed}
|
|
||||||
monitor_filters = time, esp32_exception_decoder, default
|
|
||||||
|
|
||||||
[env:ota]
|
|
||||||
upload_protocol = custom
|
|
||||||
|
|
||||||
[env:usb]
|
|
||||||
upload_protocol = esptool
|
|
||||||
|
|
||||||
[env:dev]
|
|
||||||
upload_protocol = esptool
|
|
||||||
build_type = debug
|
|
||||||
platform = https://github.com/platformio/platform-espressif32.git#develop
|
|
||||||
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git
|
|
@ -35,12 +35,8 @@ IRAM_ATTR void wifi_sniffer_packet_handler(void *buff,
|
|||||||
(wifi_ieee80211_packet_t *)ppkt->payload;
|
(wifi_ieee80211_packet_t *)ppkt->payload;
|
||||||
const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr;
|
const wifi_ieee80211_mac_hdr_t *hdr = &ipkt->hdr;
|
||||||
|
|
||||||
if ((cfg.rssilimit) &&
|
// process seen MAC
|
||||||
(ppkt->rx_ctrl.rssi < cfg.rssilimit)) // rssi is negative value
|
mac_add((uint8_t *)hdr->addr2, ppkt->rx_ctrl.rssi, MAC_SNIFF_WIFI);
|
||||||
ESP_LOGD(TAG, "WiFi RSSI %d -> ignoring (limit: %d)", ppkt->rx_ctrl.rssi,
|
|
||||||
cfg.rssilimit);
|
|
||||||
else // count seen MAC
|
|
||||||
mac_add((uint8_t *)hdr->addr2, ppkt->rx_ctrl.rssi, MAC_SNIFF_WIFI);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Software-timer driven Wifi channel rotation callback function
|
// Software-timer driven Wifi channel rotation callback function
|
||||||
|
Loading…
Reference in New Issue
Block a user