Tryout for on demand switching between BLE and Wifi counting in libpax

This commit is contained in:
Michael Solinski 2021-03-03 14:13:40 +01:00
parent 3f3027aa69
commit 93dcace8bd
4 changed files with 55 additions and 18 deletions

10
include/libpax_helpers.h Normal file
View 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

18
src/libpax_helpers.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "libpax_helpers.h"
// libpax payload
#ifdef 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

View File

@ -86,6 +86,7 @@ triggers pps 1 sec impulse
// Basic Config // Basic Config
#include "main.h" #include "main.h"
#include "libpax_helpers.h"
configData_t cfg; // struct holds current device configuration configData_t cfg; // struct holds current device configuration
char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer for LMIC event message char lmic_event_msg[LMIC_EVENTMSG_LEN]; // display buffer for LMIC event message
@ -96,8 +97,6 @@ uint8_t volatile channel = WIFI_CHANNEL_MIN; // channel rotation counter
uint8_t volatile rf_load = 0; // RF traffic indicator uint8_t volatile rf_load = 0; // RF traffic indicator
#ifndef LIBPAX #ifndef LIBPAX
uint16_t volatile macs_wifi = 0, macs_ble = 0; // globals for display uint16_t volatile macs_wifi = 0, macs_ble = 0; // globals for display
#else
uint16_t volatile libpax_macs_ble, libpax_macs_wifi;
#endif #endif
hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL; hw_timer_t *ppsIRQ = NULL, *displayIRQ = NULL, *matrixDisplayIRQ = NULL;
@ -119,16 +118,6 @@ TimeChangeRule myDST = DAYLIGHT_TIME;
TimeChangeRule mySTD = STANDARD_TIME; TimeChangeRule mySTD = STANDARD_TIME;
Timezone myTZ(myDST, mySTD); 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 // local Tag for logging
static const char TAG[] = __FILE__; static const char TAG[] = __FILE__;
@ -340,8 +329,7 @@ ESP_LOGI(TAG, "Starting libpax...");
if(config_update != 0) { if(config_update != 0) {
ESP_LOGE(TAG, "Error in libpax configuration."); ESP_LOGE(TAG, "Error in libpax configuration.");
} else { } else {
libpax_counter_init(process_count, &count_from_libpax, 60*1000, 1); init_libpax();
libpax_counter_start();
} }
} else { } else {
ESP_LOGE(TAG, "Error in libpax configuration: Wifi and BLE are not supported at the same time!"); ESP_LOGE(TAG, "Error in libpax configuration: Wifi and BLE are not supported at the same time!");

View File

@ -1,6 +1,7 @@
// Basic Config // Basic Config
#include "globals.h" #include "globals.h"
#include "rcommand.h" #include "rcommand.h"
#include "libpax_helpers.h"
// Local logging tag // Local logging tag
static const char TAG[] = __FILE__; static const char TAG[] = __FILE__;
@ -248,27 +249,47 @@ void set_loraadr(uint8_t val[]) {
void set_blescan(uint8_t val[]) { void set_blescan(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: set BLE scanner to %s", val[0] ? "on" : "off"); ESP_LOGI(TAG, "Remote command: set BLE scanner to %s", val[0] ? "on" : "off");
cfg.blescan = val[0] ? 1 : 0;
#ifndef LIBPAX #ifndef LIBPAX
macs_ble = 0; // clear BLE counter macs_ble = 0; // clear BLE counter
cfg.blescan = val[0] ? 1 : 0;
if (cfg.blescan) if (cfg.blescan)
start_BLEscan(); start_BLEscan();
else else
stop_BLEscan(); stop_BLEscan();
#else #else
// TODO update libpax configuration 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(&current_config);
// current_config.wificounter = 0;
// current_config.blecounter = 1;
// libpax_update_config(&current_config);
// init_libpax();
}
#endif #endif
} }
void set_wifiscan(uint8_t val[]) { void set_wifiscan(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s", ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s",
val[0] ? "on" : "off"); val[0] ? "on" : "off");
cfg.wifiscan = val[0] ? 1 : 0;
#ifndef LIBPAX #ifndef LIBPAX
macs_wifi = 0; // clear WIFI counter macs_wifi = 0; // clear WIFI counter
cfg.wifiscan = val[0] ? 1 : 0;
switch_wifi_sniffer(cfg.wifiscan); switch_wifi_sniffer(cfg.wifiscan);
#else #else
// TODO update libpax configuration 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(&current_config);
// current_config.wificounter = 1;
// current_config.blecounter = 0;
// libpax_update_config(&current_config);
// init_libpax();
}
#endif #endif
} }