From d9cdeddecfc0c2bc2c0f9b2727189e47f6b558e6 Mon Sep 17 00:00:00 2001 From: Michael Solinski Date: Thu, 18 Mar 2021 09:46:52 +0100 Subject: [PATCH] Reenable BLE Wifi switching for libpax --- include/cyclic.h | 2 +- include/globals.h | 2 +- include/senddata.h | 2 +- platformio_orig.ini | 2 +- src/blecsan.cpp | 2 +- src/cyclic.cpp | 2 +- src/display.cpp | 8 ++++---- src/libpax_helpers.cpp | 2 +- src/main.cpp | 43 +++++++++++++++++++--------------------- src/paxcounter_orig.conf | 2 +- src/rcommand.cpp | 40 ++++++++++++++----------------------- src/reset.cpp | 2 +- src/senddata.cpp | 10 +++++----- src/wifiscan.cpp | 2 +- 14 files changed, 54 insertions(+), 67 deletions(-) diff --git a/include/cyclic.h b/include/cyclic.h index 0fbbc6ca..03d64b18 100644 --- a/include/cyclic.h +++ b/include/cyclic.h @@ -12,7 +12,7 @@ #include "sdcard.h" #include "macsniff.h" #include "reset.h" -#ifdef LIBPAX +#if LIBPAX #include #endif diff --git a/include/globals.h b/include/globals.h index 272d8b57..950d21b1 100644 --- a/include/globals.h +++ b/include/globals.h @@ -141,7 +141,7 @@ extern uint8_t volatile channel; // wifi channel rotation counter extern uint8_t volatile rf_load; // RF traffic indicator extern uint8_t batt_level; // display value extern uint16_t volatile macs_wifi, macs_ble; // display values -#ifdef LIBPAX +#if LIBPAX extern uint16_t volatile libpax_macs_ble, libpax_macs_wifi; // libpax values #endif extern bool volatile TimePulseTick; // 1sec pps flag set by GPS or RTC diff --git a/include/senddata.h b/include/senddata.h index 98cd4c5d..ea56ac99 100644 --- a/include/senddata.h +++ b/include/senddata.h @@ -14,7 +14,7 @@ #include "corona.h" #endif -#if (LIBPAX) +#if LIBPAX #include extern struct count_payload_t count_from_libpax; diff --git a/platformio_orig.ini b/platformio_orig.ini index 86e1f081..31840a8a 100644 --- a/platformio_orig.ini +++ b/platformio_orig.ini @@ -89,7 +89,7 @@ lib_deps_basic = lewisxhe/AXP202X_Library @ ^1.1.3 geeksville/esp32-micro-sdcard @ ^0.1.1 256dpi/MQTT @ ^2.4.7 - https://github.com/dbSuS/libpax + https://github.com/dbSuS/libpax#v0.1.1 lib_deps_all = ${common.lib_deps_basic} ${common.lib_deps_lora} diff --git a/src/blecsan.cpp b/src/blecsan.cpp index 071a8007..139f7e74 100644 --- a/src/blecsan.cpp +++ b/src/blecsan.cpp @@ -1,4 +1,4 @@ -#ifndef LIBPAX +#if !(LIBPAX) // some code snippets taken from // https://github.com/nkolban/esp32-snippets/tree/master/BLE/scanner diff --git a/src/cyclic.cpp b/src/cyclic.cpp index 61185f0f..40729f3f 100644 --- a/src/cyclic.cpp +++ b/src/cyclic.cpp @@ -136,7 +136,7 @@ uint32_t getFreeRAM() { void reset_counters() { #if ((WIFICOUNTER) || (BLECOUNTER)) -#ifndef LIBPAX +#if !(LIBPAX) macs.clear(); // clear all macs container macs_wifi = 0; macs_ble = 0; diff --git a/src/display.cpp b/src/display.cpp index 711bdc95..e2e1c02c 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -262,7 +262,7 @@ void dp_drawPage(time_t t, bool nextpage) { #if ((WIFICOUNTER) && (BLECOUNTER)) if (cfg.wifiscan) -#ifndef LIBPAX +#if !(LIBPAX) dp_printf("WIFI:%-5d", macs_wifi); #else dp_printf("WIFI:%-5d", libpax_macs_wifi); @@ -275,7 +275,7 @@ void dp_drawPage(time_t t, bool nextpage) { dp_printf(" CWA:%-5d", cwa_report()); else #endif -#ifndef LIBPAX +#if !(LIBPAX) dp_printf("BLTH:%-5d", macs_ble); #else dp_printf("BLTH:%-5d", libpax_macs_ble); @@ -284,7 +284,7 @@ void dp_drawPage(time_t t, bool nextpage) { dp_printf(" BLTH:off"); #elif ((WIFICOUNTER) && (!BLECOUNTER)) if (cfg.wifiscan) -#ifndef LIBPAX +#if !(LIBPAX) dp_printf("WIFI:%-5d", macs_wifi); #else dp_printf("WIFI:%-5d", libpax_macs_wifi); @@ -293,7 +293,7 @@ void dp_drawPage(time_t t, bool nextpage) { dp_printf("WIFI:off"); #elif ((!WIFICOUNTER) && (BLECOUNTER)) if (cfg.blescan) -#ifndef LIBPAX +#if !(LIBPAX) dp_printf("BLTH:%-5d", macs_ble); #else dp_printf("BLTH:%-5d", libpax_macs_ble); diff --git a/src/libpax_helpers.cpp b/src/libpax_helpers.cpp index b5693d65..b02f93d0 100644 --- a/src/libpax_helpers.cpp +++ b/src/libpax_helpers.cpp @@ -1,7 +1,7 @@ #include "libpax_helpers.h" // libpax payload -#ifdef LIBPAX +#if LIBPAX struct count_payload_t count_from_libpax; uint16_t volatile libpax_macs_ble, libpax_macs_wifi; diff --git a/src/main.cpp b/src/main.cpp index 5195e99a..4a86064e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -91,11 +91,11 @@ 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 +#if !(LIBPAX) uint8_t volatile channel = WIFI_CHANNEL_MIN; // channel rotation counter #endif uint8_t volatile rf_load = 0; // RF traffic indicator -#ifndef LIBPAX +#if !(LIBPAX) uint16_t volatile macs_wifi = 0, macs_ble = 0; // globals for display #endif @@ -304,35 +304,31 @@ void setup() { if (RTC_runmode == RUNMODE_MAINTENANCE) start_boot_menu(); -#ifndef LIBPAX +#if !(LIBPAX) // start mac processing task ESP_LOGI(TAG, "Starting MAC processor..."); macQueueInit(); #else -ESP_LOGI(TAG, "Starting libpax..."); + 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.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.wifi_channel_map = WIFI_CHANNEL_ALL; + configuration.wifi_channel_switch_interval = cfg.wifichancycle; + configuration.wifi_rssi_threshold = cfg.rssilimit; - configuration.blescantime = cfg.blescantime; + configuration.blescantime = cfg.blescantime; - int config_update = libpax_update_config(&configuration); - if(config_update != 0) { - ESP_LOGE(TAG, "Error in libpax configuration."); - } else { - init_libpax(); - } + int config_update = libpax_update_config(&configuration); + if(config_update != 0) { + ESP_LOGE(TAG, "Error in libpax configuration."); } else { - ESP_LOGE(TAG, "Error in libpax configuration: Wifi and BLE are not supported at the same time!"); + init_libpax(); } #endif #endif @@ -345,7 +341,7 @@ ESP_LOGI(TAG, "Starting libpax..."); // or remove bluetooth stack from RAM, if option bluetooth is not compiled #if (BLECOUNTER) strcat_P(features, " BLE"); -#ifndef LIBPAX +#if !(LIBPAX) if (cfg.blescan) { ESP_LOGI(TAG, "Starting Bluetooth..."); start_BLEscan(); @@ -354,14 +350,15 @@ ESP_LOGI(TAG, "Starting libpax..."); #endif #else // remove bluetooth stack to gain more free memory -#ifndef LIBPAX +#if !(LIBPAX) btStop(); -#endif esp_bt_mem_release(ESP_BT_MODE_BTDM); esp_coex_preference_set( ESP_COEX_PREFER_WIFI); // configure Wifi/BT coexist lib #endif +#endif + // initialize gps #if (HAS_GPS) strcat_P(features, " GPS"); @@ -466,7 +463,7 @@ ESP_LOGI(TAG, "Starting libpax..."); #if (WIFICOUNTER) strcat_P(features, " WIFI"); -#ifndef LIBPAX +#if !(LIBPAX) // install wifi driver in RAM and start channel hopping wifi_sniffer_init(); // start wifi sniffing, if enabled @@ -485,7 +482,7 @@ ESP_LOGI(TAG, "Starting libpax..."); // 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 +#if !(LIBPAX) reset_counters(); #endif diff --git a/src/paxcounter_orig.conf b/src/paxcounter_orig.conf index 83f8b376..638962a7 100644 --- a/src/paxcounter_orig.conf +++ b/src/paxcounter_orig.conf @@ -30,7 +30,7 @@ #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 +#define LIBPAX 0 // Corona Exposure Notification Service(ENS) counter #define COUNT_ENS 1 // count found number of devices which advertise Exposure Notification Service diff --git a/src/rcommand.cpp b/src/rcommand.cpp index ae0d99b7..1c49f53e 100644 --- a/src/rcommand.cpp +++ b/src/rcommand.cpp @@ -97,7 +97,7 @@ void set_wifichancycle(uint8_t val[]) { void set_blescantime(uint8_t val[]) { cfg.blescantime = val[0]; - #ifndef LIBPAX + #if !(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 @@ -250,24 +250,19 @@ 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"); cfg.blescan = val[0] ? 1 : 0; - #ifndef LIBPAX + #if !(LIBPAX) macs_ble = 0; // clear BLE counter if (cfg.blescan) start_BLEscan(); else stop_BLEscan(); #else - if(cfg.blescan) { - cfg.wifiscan = 0; - // Restart of libpax while switching scannings does not work atm - // libpax_counter_stop(); - // libpax_config_t current_config; - // libpax_get_current_config(¤t_config); - // current_config.wificounter = 0; - // current_config.blecounter = 1; - // libpax_update_config(¤t_config); - // init_libpax(); - } + libpax_counter_stop(); + libpax_config_t current_config; + libpax_get_current_config(¤t_config); + current_config.blecounter = cfg.blescan; + libpax_update_config(¤t_config); + init_libpax(); #endif } @@ -275,21 +270,16 @@ void set_wifiscan(uint8_t val[]) { ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s", val[0] ? "on" : "off"); cfg.wifiscan = val[0] ? 1 : 0; - #ifndef LIBPAX + #if !(LIBPAX) macs_wifi = 0; // clear WIFI counter switch_wifi_sniffer(cfg.wifiscan); #else - if(cfg.wifiscan) { - cfg.blescan = 0; - // Restart of libpax while switching scannings does not work atm - // libpax_counter_stop(); - // libpax_config_t current_config; - // libpax_get_current_config(¤t_config); - // current_config.wificounter = 1; - // current_config.blecounter = 0; - // libpax_update_config(¤t_config); - // init_libpax(); - } + libpax_counter_stop(); + libpax_config_t current_config; + libpax_get_current_config(¤t_config); + current_config.wificounter = cfg.wifiscan; + libpax_update_config(¤t_config); + init_libpax(); #endif } diff --git a/src/reset.cpp b/src/reset.cpp index c15b6c7b..4691b7e6 100644 --- a/src/reset.cpp +++ b/src/reset.cpp @@ -107,7 +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 !(LIBPAX) #if (WIFICOUNTER) switch_wifi_sniffer(0); #endif diff --git a/src/senddata.cpp b/src/senddata.cpp index 28ccd28e..4c1ef4d9 100644 --- a/src/senddata.cpp +++ b/src/senddata.cpp @@ -57,7 +57,7 @@ void SendPayload(uint8_t port) { // write data to sdcard, if present #if (HAS_SDCARD) if (port == COUNTERPORT) { -#ifndef LIBPAX +#if !(LIBPAX) sdcardWriteData(macs_wifi, macs_ble #else sdcardWriteData(libpax_macs_wifi, libpax_macs_ble @@ -91,14 +91,14 @@ void sendData() { case COUNT_DATA: payload.reset(); #if !(PAYLOAD_OPENSENSEBOX) -#ifndef LIBPAX +#if !(LIBPAX) payload.addCount(macs_wifi, MAC_SNIFF_WIFI); #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 +#if !(LIBPAX) payload.addCount(macs_ble, MAC_SNIFF_BLE); #else ESP_LOGI(TAG, "Sending libpax ble count: %d", libpax_macs_ble); @@ -117,14 +117,14 @@ void sendData() { } #endif #if (PAYLOAD_OPENSENSEBOX) -#ifndef LIBPAX +#if !(LIBPAX) payload.addCount(macs_wifi, MAC_SNIFF_WIFI); #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 +#if !(LIBPAX) payload.addCount(macs_ble, MAC_SNIFF_BLE); #else ESP_LOGI(TAG, "Sending libpax ble count: %d", libpax_macs_ble); diff --git a/src/wifiscan.cpp b/src/wifiscan.cpp index 2632bae4..f601489d 100644 --- a/src/wifiscan.cpp +++ b/src/wifiscan.cpp @@ -1,4 +1,4 @@ -#ifndef LIBPAX +#if !(LIBPAX) // Basic Config #include "globals.h" #include "wifiscan.h"