libpax integration

This commit is contained in:
Michael Solinski committed 2021-03-22 15:39:44 +01:00
1 parent 731bbfb8d1
commit 3f3027aa69
13 files changed
+149 -6

No files matched your search

+2
View File
@@ -1,3 +1,4 @@
#ifndef LIBPAX
// some code snippets taken from
// https://github.com/nkolban/esp32-snippets/tree/master/BLE/scanner
@@ -300,3 +301,4 @@ void stop_BLEscan(void) {
ESP_LOGI(TAG, "Bluetooth scanner stopped");
#endif // BLECOUNTER
} // stop_BLEscan
#endif
+4 -1
View File
@@ -134,11 +134,14 @@ uint32_t getFreeRAM() {
}
void reset_counters() {
#if ((WIFICOUNTER) || (BLECOUNTER))
#ifndef LIBPAX
macs.clear(); // clear all macs container
macs_wifi = 0;
macs_ble = 0;
renew_salt(); // get new salt
renew_salt(); // get new salt
#endif
#ifdef HAS_DISPLAY
dp_plotCurve(0, true);
#endif
+17 -1
View File
@@ -262,7 +262,11 @@ void dp_drawPage(time_t t, bool nextpage) {
#if ((WIFICOUNTER) && (BLECOUNTER))
if (cfg.wifiscan)
#ifndef LIBPAX
dp_printf("WIFI:%-5d", macs_wifi);
#else
dp_printf("WIFI:%-5d", libpax_macs_wifi);
#endif
else
dp_printf("WIFI:off");
if (cfg.blescan)
@@ -271,17 +275,29 @@ void dp_drawPage(time_t t, bool nextpage) {
dp_printf(" CWA:%-5d", cwa_report());
else
#endif
dp_printf("BLTH:%-5d", macs_ble);
#ifndef LIBPAX
dp_printf("BLTH:%-5d", macs_ble);
#else
dp_printf("BLTH:%-5d", libpax_macs_ble);
#endif
else
dp_printf(" BLTH:off");
#elif ((WIFICOUNTER) && (!BLECOUNTER))
if (cfg.wifiscan)
#ifndef LIBPAX
dp_printf("WIFI:%-5d", macs_wifi);
#else
dp_printf("WIFI:%-5d", libpax_macs_wifi);
#endif
else
dp_printf("WIFI:off");
#elif ((!WIFICOUNTER) && (BLECOUNTER))
if (cfg.blescan)
#ifndef LIBPAX
dp_printf("BLTH:%-5d", macs_ble);
#else
dp_printf("BLTH:%-5d", libpax_macs_ble);
#endif
#if (COUNT_ENS)
if (cfg.enscount)
dp_printf("(CWA:%d)", cwa_report());
+56
View File
@@ -90,9 +90,15 @@ triggers pps 1 sec impulse
configData_t cfg; // struct holds current device configuration
char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer for LMIC event message
uint8_t batt_level = 0; // display value
#ifndef LIBPAX
uint8_t volatile channel = WIFI_CHANNEL_MIN; // channel rotation counter
#endif
uint8_t volatile rf_load = 0; // RF traffic indicator
#ifndef LIBPAX
uint16_t volatile macs_wifi = 0, macs_ble = 0; // globals for display
#else
uint16_t volatile libpax_macs_ble, libpax_macs_wifi;
#endif
hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL;
@@ -113,6 +119,17 @@ TimeChangeRule myDST = DAYLIGHT_TIME;
TimeChangeRule mySTD = STANDARD_TIME;
Timezone myTZ(myDST, mySTD);
// libpax payload
#ifdef LIBPAX
struct count_payload_t count_from_libpax;
void process_count(void) {
printf("pax: %d; %d; %d;\n", count_from_libpax.pax, count_from_libpax.wifi_count, count_from_libpax.ble_count);
libpax_macs_ble = count_from_libpax.ble_count;
libpax_macs_wifi = count_from_libpax.wifi_count;
}
#endif
// local Tag for logging
static const char TAG[] = __FILE__;
@@ -298,9 +315,39 @@ void setup() {
if (RTC_runmode == RUNMODE_MAINTENANCE)
start_boot_menu();
#ifndef LIBPAX
// start mac processing task
ESP_LOGI(TAG, "Starting MAC processor...");
macQueueInit();
#else
ESP_LOGI(TAG, "Starting libpax...");
#if (defined WIFICOUNTER || defined BLECOUNTER)
struct libpax_config_t configuration;
libpax_default_config(&configuration);
ESP_LOGI(TAG, "BLESCAN: %d", cfg.blescan);
ESP_LOGI(TAG, "WIFISCAN: %d", cfg.wifiscan);
if(!(cfg.blescan && cfg.wifiscan)) {
configuration.wificounter = cfg.wifiscan;
configuration.blecounter = cfg.blescan;
configuration.wifi_channel_map = WIFI_CHANNEL_ALL;
configuration.wifi_channel_switch_interval = cfg.wifichancycle;
configuration.wifi_rssi_threshold = cfg.rssilimit;
configuration.blescantime = cfg.blescantime;
int config_update = libpax_update_config(&configuration);
if(config_update != 0) {
ESP_LOGE(TAG, "Error in libpax configuration.");
} else {
libpax_counter_init(process_count, &count_from_libpax, 60*1000, 1);
libpax_counter_start();
}
} else {
ESP_LOGE(TAG, "Error in libpax configuration: Wifi and BLE are not supported at the same time!");
}
#endif
#endif
// start rcommand processing task
ESP_LOGI(TAG, "Starting rcommand interpreter...");
@@ -310,14 +357,18 @@ void setup() {
// or remove bluetooth stack from RAM, if option bluetooth is not compiled
#if (BLECOUNTER)
strcat_P(features, " BLE");
#ifndef LIBPAX
if (cfg.blescan) {
ESP_LOGI(TAG, "Starting Bluetooth...");
start_BLEscan();
} else
btStop();
#endif
#else
// remove bluetooth stack to gain more free memory
#ifndef LIBPAX
btStop();
#endif
esp_bt_mem_release(ESP_BT_MODE_BTDM);
esp_coex_preference_set(
ESP_COEX_PREFER_WIFI); // configure Wifi/BT coexist lib
@@ -427,6 +478,7 @@ void setup() {
#if (WIFICOUNTER)
strcat_P(features, " WIFI");
#ifndef LIBPAX
// install wifi driver in RAM and start channel hopping
wifi_sniffer_init();
// start wifi sniffing, if enabled
@@ -435,6 +487,8 @@ void setup() {
switch_wifi_sniffer(1);
} else
switch_wifi_sniffer(0);
#endif
#else
// remove wifi driver from RAM, if option wifi not compiled
esp_wifi_deinit();
@@ -443,7 +497,9 @@ void setup() {
// initialize salt value using esp_random() called by random() in
// arduino-esp32 core. Note: do this *after* wifi has started, since
// function gets it's seed from RF noise
#ifndef LIBPAX
reset_counters();
#endif
// start state machine
ESP_LOGI(TAG, "Starting Interrupt Handler...");
+4 -1
View File
@@ -20,7 +20,7 @@
// MAC sniffing parameters
#define MACFILTER 1 // set to 0 if you want to scan all devices, 1 to scan only devices with random MACs (aka smartphones) [default = 1]
#define BLECOUNTER 1 // 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 MAC_QUEUE_SIZE 50 // size of MAC processing buffer (number of MACs) [default = 50]
@@ -29,6 +29,9 @@
#define BLESCANWINDOW 80 // [milliseconds] scan window, see below, 3 .. 10240, default 80ms
#define BLESCANINTERVAL 80 // [illiseconds] scan interval, see below, 3 .. 10240, default 80ms = 100% duty cycle
// Use libpax instead of default counting algorithms
#define LIBPAX 1
// Corona Exposure Notification Service(ENS) counter
#define COUNT_ENS 1 // count found number of devices which advertise Exposure Notification Service
// set to 1 if you want to enable this function [default=0]
+16
View File
@@ -72,6 +72,7 @@ void set_sleepcycle(uint8_t val[]) {
void set_wifichancycle(uint8_t val[]) {
cfg.wifichancycle = val[0];
#ifndef LIBAPX
// update Wifi channel rotation timer period
if (cfg.wifichancycle > 0) {
if (xTimerIsTimerActive(WifiChanTimer) == pdFALSE)
@@ -88,10 +89,14 @@ void set_wifichancycle(uint8_t val[]) {
channel = WIFI_CHANNEL_MIN;
ESP_LOGI(TAG, "Remote command: set Wifi channel hopping to off");
}
#else
// TODO update libpax configuration
#endif
}
void set_blescantime(uint8_t val[]) {
cfg.blescantime = val[0];
#ifndef LIBPAX
ESP_LOGI(TAG, "Remote command: set BLE scan time to %.1f seconds",
cfg.blescantime / float(100));
// stop & restart BLE scan task to apply new parameter
@@ -99,6 +104,9 @@ void set_blescantime(uint8_t val[]) {
stop_BLEscan();
start_BLEscan();
}
#else
// TODO update libpax configuration
#endif
}
void set_countmode(uint8_t val[]) {
@@ -240,20 +248,28 @@ void set_loraadr(uint8_t val[]) {
void set_blescan(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: set BLE scanner to %s", val[0] ? "on" : "off");
#ifndef LIBPAX
macs_ble = 0; // clear BLE counter
cfg.blescan = val[0] ? 1 : 0;
if (cfg.blescan)
start_BLEscan();
else
stop_BLEscan();
#else
// TODO update libpax configuration
#endif
}
void set_wifiscan(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s",
val[0] ? "on" : "off");
#ifndef LIBPAX
macs_wifi = 0; // clear WIFI counter
cfg.wifiscan = val[0] ? 1 : 0;
switch_wifi_sniffer(cfg.wifiscan);
#else
// TODO update libpax configuration
#endif
}
void set_wifiant(uint8_t val[]) {
+2
View File
@@ -107,6 +107,7 @@ void enter_deepsleep(const uint64_t wakeup_sec, gpio_num_t wakeup_gpio) {
sendTimer.detach();
// switch off radio and other power consuming hardware
#ifndef LIBPAX
#if (WIFICOUNTER)
switch_wifi_sniffer(0);
#endif
@@ -114,6 +115,7 @@ void enter_deepsleep(const uint64_t wakeup_sec, gpio_num_t wakeup_gpio) {
stop_BLEscan();
btStop();
#endif
#endif
#if (HAS_SDS011)
sds011_sleep(void);
#endif
+27 -2
View File
@@ -57,7 +57,11 @@ void SendPayload(uint8_t port) {
// write data to sdcard, if present
#if (HAS_SDCARD)
if (port == COUNTERPORT) {
#ifndef LIBPAX
sdcardWriteData(macs_wifi, macs_ble
#else
sdcardWriteData(libpax_macs_wifi, libpax_macs_ble
#endif
#if (COUNT_ENS)
,
cwa_report()
@@ -87,9 +91,20 @@ void sendData() {
case COUNT_DATA:
payload.reset();
#if !(PAYLOAD_OPENSENSEBOX)
#ifndef LIBPAX
payload.addCount(macs_wifi, MAC_SNIFF_WIFI);
if (cfg.blescan)
#else
ESP_LOGI(TAG, "Sending libpax wifi count: %d", libpax_macs_wifi);
payload.addCount(libpax_macs_wifi, MAC_SNIFF_WIFI);
#endif
if (cfg.blescan) {
#ifndef LIBPAX
payload.addCount(macs_ble, MAC_SNIFF_BLE);
#else
ESP_LOGI(TAG, "Sending libpax ble count: %d", libpax_macs_ble);
payload.addCount(libpax_macs_ble, MAC_SNIFF_BLE);
#endif
}
#endif
#if (HAS_GPS)
if (GPSPORT == COUNTERPORT) {
@@ -102,9 +117,19 @@ void sendData() {
}
#endif
#if (PAYLOAD_OPENSENSEBOX)
#ifndef LIBPAX
payload.addCount(macs_wifi, MAC_SNIFF_WIFI);
if (cfg.blescan)
#else
ESP_LOGI(TAG, "Sending libpax wifi count: %d", libpax_macs_wifi);
payload.addCount(libpax_macs_wifi, MAC_SNIFF_WIFI);
#endif
if (cfg.blescan) {
#ifndef LIBPAX
payload.addCount(macs_ble, MAC_SNIFF_BLE);
#else
ESP_LOGI(TAG, "Sending libpax ble count: %d", libpax_macs_ble);
payload.addCount(libpax_macs_ble, MAC_SNIFF_BLE);
#endif
#endif
#if (HAS_SDS011)
sds011_store(&sds_status);
+3 -1
View File
@@ -1,3 +1,4 @@
#ifndef LIBPAX
// Basic Config
#include "globals.h"
#include "wifiscan.h"
@@ -102,4 +103,5 @@ void switch_wifi_sniffer(uint8_t state) {
esp_wifi_set_promiscuous(false);
esp_wifi_stop();
}
}
}
#endif