Merge pull request #765 from paxexpress/libpax-integration
libpax integration
This commit is contained in:
commit
14b5e7c495
@ -12,6 +12,9 @@
|
||||
#include "sdcard.h"
|
||||
#include "macsniff.h"
|
||||
#include "reset.h"
|
||||
#if LIBPAX
|
||||
#include <libpax_api.h>
|
||||
#endif
|
||||
|
||||
extern Ticker cyclicTimer;
|
||||
|
||||
|
@ -141,6 +141,9 @@ 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
|
||||
#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
|
||||
extern timesource_t timeSource;
|
||||
extern hw_timer_t *displayIRQ, *matrixDisplayIRQ, *ppsIRQ;
|
||||
|
10
include/libpax_helpers.h
Normal file
10
include/libpax_helpers.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef _LIBPAX_HELPERS_H
|
||||
#define _LIBPAX_HELPERS_H
|
||||
|
||||
#include "globals.h"
|
||||
#include <stdio.h>
|
||||
#include <libpax_api.h>
|
||||
|
||||
void init_libpax();
|
||||
|
||||
#endif
|
@ -9,10 +9,18 @@
|
||||
#include "display.h"
|
||||
#include "sdcard.h"
|
||||
|
||||
|
||||
#if (COUNT_ENS)
|
||||
#include "corona.h"
|
||||
#endif
|
||||
|
||||
#if LIBPAX
|
||||
#include <libpax_api.h>
|
||||
|
||||
extern struct count_payload_t count_from_libpax;
|
||||
#endif
|
||||
|
||||
|
||||
extern Ticker sendTimer;
|
||||
|
||||
void SendPayload(uint8_t port);
|
||||
|
@ -89,6 +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#v0.1.1
|
||||
lib_deps_all =
|
||||
${common.lib_deps_basic}
|
||||
${common.lib_deps_lora}
|
||||
@ -105,6 +106,9 @@ build_flags_basic =
|
||||
'-DPROGVERSION="${common.release_version}"'
|
||||
'-Wno-unknown-pragmas'
|
||||
'-Wno-unused-variable'
|
||||
'-D LIBPAX_WIFI'
|
||||
'-D LIBPAX_BLE'
|
||||
'-D LIBPAX_ARDUINO'
|
||||
build_flags_sensors =
|
||||
-Llib/Bosch-BSEC/src/esp32/
|
||||
-lalgobsec
|
||||
|
@ -1,3 +1,4 @@
|
||||
#if !(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
|
@ -134,11 +134,14 @@ uint32_t getFreeRAM() {
|
||||
}
|
||||
|
||||
void reset_counters() {
|
||||
|
||||
#if ((WIFICOUNTER) || (BLECOUNTER))
|
||||
#if !(LIBPAX)
|
||||
macs.clear(); // clear all macs container
|
||||
macs_wifi = 0;
|
||||
macs_ble = 0;
|
||||
renew_salt(); // get new salt
|
||||
#endif
|
||||
#ifdef HAS_DISPLAY
|
||||
dp_plotCurve(0, true);
|
||||
#endif
|
||||
|
@ -262,7 +262,11 @@ void dp_drawPage(time_t t, bool nextpage) {
|
||||
|
||||
#if ((WIFICOUNTER) && (BLECOUNTER))
|
||||
if (cfg.wifiscan)
|
||||
#if !(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
|
||||
#if !(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)
|
||||
#if !(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)
|
||||
#if !(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());
|
||||
|
18
src/libpax_helpers.cpp
Normal file
18
src/libpax_helpers.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
#include "libpax_helpers.h"
|
||||
|
||||
// libpax payload
|
||||
#if LIBPAX
|
||||
struct count_payload_t count_from_libpax;
|
||||
uint16_t volatile libpax_macs_ble, libpax_macs_wifi;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
void init_libpax() {
|
||||
libpax_counter_init(process_count, &count_from_libpax, 60*1000, 1);
|
||||
libpax_counter_start();
|
||||
}
|
||||
#endif
|
41
src/main.cpp
41
src/main.cpp
@ -86,13 +86,18 @@ triggers pps 1 sec impulse
|
||||
|
||||
// Basic Config
|
||||
#include "main.h"
|
||||
#include "libpax_helpers.h"
|
||||
|
||||
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
|
||||
#if !(LIBPAX)
|
||||
uint8_t volatile channel = WIFI_CHANNEL_MIN; // channel rotation counter
|
||||
#endif
|
||||
uint8_t volatile rf_load = 0; // RF traffic indicator
|
||||
#if !(LIBPAX)
|
||||
uint16_t volatile macs_wifi = 0, macs_ble = 0; // globals for display
|
||||
#endif
|
||||
|
||||
hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL;
|
||||
|
||||
@ -113,6 +118,7 @@ TimeChangeRule myDST = DAYLIGHT_TIME;
|
||||
TimeChangeRule mySTD = STANDARD_TIME;
|
||||
Timezone myTZ(myDST, mySTD);
|
||||
|
||||
|
||||
// local Tag for logging
|
||||
static const char TAG[] = __FILE__;
|
||||
|
||||
@ -298,9 +304,34 @@ void setup() {
|
||||
if (RTC_runmode == RUNMODE_MAINTENANCE)
|
||||
start_boot_menu();
|
||||
|
||||
#if !(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);
|
||||
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 {
|
||||
init_libpax();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// start rcommand processing task
|
||||
ESP_LOGI(TAG, "Starting rcommand interpreter...");
|
||||
@ -310,19 +341,24 @@ void setup() {
|
||||
// or remove bluetooth stack from RAM, if option bluetooth is not compiled
|
||||
#if (BLECOUNTER)
|
||||
strcat_P(features, " BLE");
|
||||
#if !(LIBPAX)
|
||||
if (cfg.blescan) {
|
||||
ESP_LOGI(TAG, "Starting Bluetooth...");
|
||||
start_BLEscan();
|
||||
} else
|
||||
btStop();
|
||||
#endif
|
||||
#else
|
||||
// remove bluetooth stack to gain more free memory
|
||||
#if !(LIBPAX)
|
||||
btStop();
|
||||
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");
|
||||
@ -427,6 +463,7 @@ void setup() {
|
||||
|
||||
#if (WIFICOUNTER)
|
||||
strcat_P(features, " WIFI");
|
||||
#if !(LIBPAX)
|
||||
// install wifi driver in RAM and start channel hopping
|
||||
wifi_sniffer_init();
|
||||
// start wifi sniffing, if enabled
|
||||
@ -435,6 +472,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 +482,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
|
||||
#if !(LIBPAX)
|
||||
reset_counters();
|
||||
#endif
|
||||
|
||||
// start state machine
|
||||
ESP_LOGI(TAG, "Starting Interrupt Handler...");
|
||||
|
@ -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 0
|
||||
|
||||
// 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]
|
||||
|
@ -1,6 +1,7 @@
|
||||
// Basic Config
|
||||
#include "globals.h"
|
||||
#include "rcommand.h"
|
||||
#include "libpax_helpers.h"
|
||||
|
||||
// Local logging tag
|
||||
static const char TAG[] = __FILE__;
|
||||
@ -73,6 +74,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)
|
||||
@ -89,10 +91,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];
|
||||
#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
|
||||
@ -100,6 +106,9 @@ void set_blescantime(uint8_t val[]) {
|
||||
stop_BLEscan();
|
||||
start_BLEscan();
|
||||
}
|
||||
#else
|
||||
// TODO update libpax configuration
|
||||
#endif
|
||||
}
|
||||
|
||||
void set_countmode(uint8_t val[]) {
|
||||
@ -241,20 +250,38 @@ 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");
|
||||
macs_ble = 0; // clear BLE counter
|
||||
cfg.blescan = val[0] ? 1 : 0;
|
||||
#if !(LIBPAX)
|
||||
macs_ble = 0; // clear BLE counter
|
||||
if (cfg.blescan)
|
||||
start_BLEscan();
|
||||
else
|
||||
stop_BLEscan();
|
||||
#else
|
||||
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
|
||||
}
|
||||
|
||||
void set_wifiscan(uint8_t val[]) {
|
||||
ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s",
|
||||
val[0] ? "on" : "off");
|
||||
macs_wifi = 0; // clear WIFI counter
|
||||
cfg.wifiscan = val[0] ? 1 : 0;
|
||||
#if !(LIBPAX)
|
||||
macs_wifi = 0; // clear WIFI counter
|
||||
switch_wifi_sniffer(cfg.wifiscan);
|
||||
#else
|
||||
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
|
||||
}
|
||||
|
||||
void set_wifiant(uint8_t val[]) {
|
||||
|
@ -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
|
||||
#if !(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
|
||||
|
@ -57,7 +57,11 @@ void SendPayload(uint8_t port) {
|
||||
// write data to sdcard, if present
|
||||
#if (HAS_SDCARD)
|
||||
if (port == COUNTERPORT) {
|
||||
#if !(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)
|
||||
#if !(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) {
|
||||
#if !(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)
|
||||
#if !(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) {
|
||||
#if !(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);
|
||||
|
@ -1,3 +1,4 @@
|
||||
#if !(LIBPAX)
|
||||
// Basic Config
|
||||
#include "globals.h"
|
||||
#include "wifiscan.h"
|
||||
@ -103,3 +104,4 @@ void switch_wifi_sniffer(uint8_t state) {
|
||||
esp_wifi_stop();
|
||||
}
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user