diff --git a/platformio.ini b/platformio.ini index 8be3a272..f780a017 100644 --- a/platformio.ini +++ b/platformio.ini @@ -38,7 +38,7 @@ build_flags = ; ; override lora settings from LMiC library in lmic/config.h and use main.h instead -D_lmic_config_h_ - -include "src/main.h" + -include "src/paxcounter.conf" [env:heltec_wifi_lora_32] platform = espressif32 diff --git a/src/blecsan.cpp b/src/blecsan.cpp index 4e028aaf..1471f5f6 100644 --- a/src/blecsan.cpp +++ b/src/blecsan.cpp @@ -233,8 +233,10 @@ esp_err_t register_ble_functionality(void) // Main start code running in its own Xtask -void bt_loop(void *ignore) +void bt_loop(void * pvParameters) { + configASSERT( ( ( uint32_t ) pvParameters ) == 1 ); // FreeRTOS check + esp_err_t status; // Initialize BT controller to allocate task and other resource. diff --git a/src/configmanager.cpp b/src/configmanager.cpp index 49341163..fecd37a1 100644 --- a/src/configmanager.cpp +++ b/src/configmanager.cpp @@ -18,7 +18,7 @@ esp_err_t err; // populate cfg vars with factory settings void defaultConfig() { - cfg.lorasf = LORASFDEFAULT; // 7-12, initial lora spreadfactor defined in main.h + cfg.lorasf = LORASFDEFAULT; // 7-12, initial lora spreadfactor defined in paxcounter.conf cfg.txpower = 15; // 2-15, lora tx power cfg.adrmode = 1; // 0=disabled, 1=enabled cfg.screensaver = 0; // 0=disabled, 1=enabled diff --git a/src/globals.h b/src/globals.h index ae9440f9..eb238842 100644 --- a/src/globals.h +++ b/src/globals.h @@ -22,6 +22,7 @@ #include "rgb_led.h" #include "macsniff.h" +#include "main.h" // Struct holding devices's runtime configuration typedef struct { diff --git a/src/macsniff.cpp b/src/macsniff.cpp index 6fb5e9a8..30ada2b5 100644 --- a/src/macsniff.cpp +++ b/src/macsniff.cpp @@ -11,46 +11,44 @@ // Local logging tag static const char *TAG = "macsniff"; -// defined in main.cpp -void set_LED (uint16_t set_color, uint16_t set_blinkduration, uint16_t set_interval, uint8_t set_count); - static wifi_country_t wifi_country = {.cc=WIFI_MY_COUNTRY, .schan=WIFI_CHANNEL_MIN, .nchan=WIFI_CHANNEL_MAX, .policy=WIFI_COUNTRY_POLICY_MANUAL}; +// globals uint16_t salt; -uint16_t salt_reset(void) { - salt = random(65536); // get new 16bit random for salting hashes +uint16_t reset_salt(void) { + salt = random(65536); // get new 16bit random for salting hashes and set global salt var return salt; } bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) { - char buff[16]; // temporary buffer for printf + char buff[16]; // temporary buffer for printf bool added = false; - uint32_t addr2int; - uint32_t vendor2int; - uint16_t hashedmac; + uint32_t addr2int, vendor2int; // temporary buffer for MAC and Vendor OUI + uint16_t hashedmac; // temporary buffer for generated hash value - // 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 addr2int = ( (uint32_t)paddr[2] ) | ( (uint32_t)paddr[3] << 8 ) | ( (uint32_t)paddr[4] << 16 ) | ( (uint32_t)paddr[5] << 24 ); #ifdef VENDORFILTER vendor2int = ( (uint32_t)paddr[2] ) | ( (uint32_t)paddr[1] << 8 ) | ( (uint32_t)paddr[0] << 16 ); // use OUI vendor filter list only on Wifi, not on BLE - if ( (sniff_type==MAC_SNIFF_BLE) || std::find(vendors.begin(), vendors.end(), vendor2int) != vendors.end() ) { + if ( (sniff_type==MAC_SNIFF_BLE) || std::find(vendors.begin(), vendors.end(), vendor2int) != vendors.end() ) + { #endif // salt and hash MAC, and if new unique one, store identifier in container and increment counter on display // https://en.wikipedia.org/wiki/MAC_Address_Anonymization - addr2int += (uint32_t) salt; // add 16-bit salt to pseudo MAC + addr2int += (uint32_t)salt; // add 16-bit salt to pseudo MAC snprintf(buff, sizeof(buff), "%08X", addr2int); // convert unsigned 32-bit salted MAC to 8 digit hex string hashedmac = rokkit(&buff[3], 5); // hash MAC last string value, use 5 chars to fit hash in uint16_t container auto newmac = macs.insert(hashedmac); // add hashed MAC to total container if new unique added = newmac.second ? true:false; // true if hashed MAC is unique in container - // Insert only if it was not found on global count + // Count only if MAC was not yet seen if (added) { if (sniff_type == MAC_SNIFF_WIFI ) { macs_wifi++; // increment Wifi MACs counter @@ -63,12 +61,12 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) { } #endif } - - ESP_LOGI(TAG, "%s RSSI %ddBi -> MAC %s -> Hash %04X -> WiFi:%d BLTH:%d %s", - sniff_type==MAC_SNIFF_WIFI ? "WiFi":"BLTH", - rssi, buff, hashedmac, - macs_wifi, - added ? "new" : "known"); + + // Log scan result + ESP_LOGI(TAG, "%s RSSI %ddBi -> MAC %s -> Hash %04X -> WiFi:%d BLTH:%d %s", + sniff_type==MAC_SNIFF_WIFI ? "WiFi":"BLTH", + rssi, buff, hashedmac, macs_wifi, + added ? "new" : "known"); #ifdef VENDORFILTER } else { diff --git a/src/macsniff.h b/src/macsniff.h index 441ab157..a92046df 100644 --- a/src/macsniff.h +++ b/src/macsniff.h @@ -19,7 +19,7 @@ typedef struct { uint8_t payload[0]; /* network data ended with 4 bytes csum (CRC32) */ } wifi_ieee80211_packet_t; -uint16_t salt_reset(void); +uint16_t reset_salt(void); void wifi_sniffer_init(void); void wifi_sniffer_set_channel(uint8_t channel); void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type); diff --git a/src/main.cpp b/src/main.cpp index 2d8374b1..4f4c0d31 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -32,18 +32,13 @@ Refer to LICENSE.txt file in repository for more details. #include #include -// ESP32 Functions -#include // needed for Wifi event handler -#include // needed for reading ESP32 chip attributes -#include // needed for ESP_LOGx on arduino framework +// ESP32 lib Functions +#include // needed for Wifi event handler +#include // needed for reading ESP32 chip attributes +#include // needed for ESP_LOGx on arduino framework -configData_t cfg; // struct holds current device configuration -osjob_t sendjob, initjob; // LMIC - -enum states { - LED_ON, - LED_OFF -}; +configData_t cfg; // struct holds current device configuration +osjob_t sendjob, initjob; // LMIC jobs // Initialize global variables char display_lora[16], display_lmic[16]; // display buffers @@ -65,6 +60,7 @@ static volatile bool ButtonTriggered = false; static const char *TAG = "paxcnt"; // Note: Log level control seems not working during runtime, // so we need to switch loglevel by compiler build option in platformio.ini + #ifndef VERBOSE int redirect_log(const char * fmt, va_list args) { //do nothing @@ -72,30 +68,6 @@ int redirect_log(const char * fmt, va_list args) { } #endif -//--- Prototypes --- - -// defined in configmanager.cpp -void eraseConfig(void); -void saveConfig(void); -void loadConfig(void); - -// defined in lorawan.cpp -void onEvent(ev_t ev); -void do_send(osjob_t* j); -void gen_lora_deveui(uint8_t * pdeveui); -void RevBytes(unsigned char* b, size_t c); -void get_hard_deveui(uint8_t *pdeveui); - -// defined in wifisniffer.cpp -void wifi_sniffer_init(void); -void wifi_sniffer_set_channel(uint8_t channel); -void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type); - -// defined in blescan.cpp -void bt_loop(void *ignore); - -//--- - void set_LED (uint16_t set_color, uint16_t set_blinkduration, uint16_t set_interval, uint8_t set_count) { color = set_color; // set color for RGB LED LEDBlinkduration = set_blinkduration; // duration on @@ -104,6 +76,13 @@ void set_LED (uint16_t set_color, uint16_t set_blinkduration, uint16_t set_inter LEDState = set_count ? LED_ON : LED_OFF; // sets LED to off if 0 blinks } +void reset_counters() { + macs.clear(); // clear all macs container + macs_total = 0; // reset all counters + macs_wifi = 0; + macs_ble = 0; +} + /* begin LMIC specific parts ------------------------------------------------------------ */ @@ -163,6 +142,7 @@ static void lora_init (osjob_t* j) { // LMIC FreeRTos Task void lorawan_loop(void * pvParameters) { + configASSERT( ( ( uint32_t ) pvParameters ) == 1 ); // FreeRTOS check while(1) { @@ -227,34 +207,31 @@ void lorawan_loop(void * pvParameters) { void sniffer_loop(void * pvParameters) { configASSERT( ( ( uint32_t ) pvParameters ) == 1 ); // FreeRTOS check - channel=0; + char buff[16]; int nloop=0, lorawait=0; - while (true) { + while (1) { nloop++; // actual number of wifi loops, controls cycle when data is sent - vTaskDelay(cfg.wifichancycle*10 / portTICK_PERIOD_MS); - yield(); channel = (channel % WIFI_CHANNEL_MAX) + 1; // rotates variable channel 1..WIFI_CHANNEL_MAX wifi_sniffer_set_channel(channel); ESP_LOGD(TAG, "Wifi set channel %d", channel); // duration of one wifi scan loop reached? then send data and begin new scan cycle if ( nloop >= ( (100 / cfg.wifichancycle) * (cfg.wifiscancycle * 2)) +1 ) { + nloop=0; channel=0; // reset wifi scan + channel loop counter do_send(&sendjob); // Prepare and execute LoRaWAN data upload - vTaskDelay(500/portTICK_PERIOD_MS); - yield(); + + //vTaskDelay(500/portTICK_PERIOD_MS); // tbd - is this delay really needed here? + //yield(); // clear counter if not in cumulative counter mode if (cfg.countermode != 1) { - macs.clear(); // clear all macs container - macs_total = 0; // reset all counters - macs_wifi = 0; - macs_ble = 0; - salt_reset(); // get new salt for salting hashes + reset_counters(); // clear macs container and reset all counters + reset_salt(); // get new salt for salting hashes } // check if payload is sent @@ -275,6 +252,9 @@ void sniffer_loop(void * pvParameters) { } // end of send data cycle + vTaskDelay(cfg.wifichancycle*10 / portTICK_PERIOD_MS); + yield(); + } // end of infinite wifi channel rotation loop } @@ -536,7 +516,7 @@ wifi_sniffer_init(); // setup wifi in monitor mode and start MAC counting // initialize salt value using esp_random() called by random() in arduino-esp32 core // note: do this *after* wifi has started, since gets it's seed from RF noise -salt_reset(); // get new 16bit for salting hashes +reset_salt(); // get new 16bit for salting hashes // run wifi task on core 0 and lora task on core 1 and bt task on core 0 ESP_LOGI(TAG, "Starting Lora task on core 1"); diff --git a/src/main.h b/src/main.h index cd606adb..919550a2 100644 --- a/src/main.h +++ b/src/main.h @@ -1,131 +1,41 @@ #pragma once // program version - note: increment version after modifications to configData_t struct!! -#define PROGVERSION "1.3.1" // use max 10 chars here! +#define PROGVERSION "1.3.2" // use max 10 chars here! #define PROGNAME "PAXCNT" -// Verbose enables serial output -#define VERBOSE 1 // comment out to silence the device, for mute use build option +//--- Declarations --- -// set this to include BLE counting and vendor filter functions -#define VENDORFILTER 1 // comment out if you want to count things, not people -#define BLECOUNTER 1 // comment out if you don't want BLE count +enum states { + LED_ON, + LED_OFF +}; -// BLE scan parameters -#define BLESCANTIME 11 // [seconds] scan duration, see note below -#define BLESCANWINDOW 10 // [milliseconds] scan window, see below, 3 .. 10240, default 10 -#define BLESCANINTERVAL 10 // [milliseconds] how long to wait between scans, 3 .. 10240, default 10 +//--- Prototypes --- -/* Note: guide for setting bluetooth parameters -* -* |< Scan Window > |< Scan Window > |< Scan Window > | -* |< Scan Interval >|< Scan Interval >|< Scan Interval >| -* |< Scan duration >| -* -* Scan duration sets how long scanning should be going on, interrupting a wifi scan cycle. -* Scan window sets how much of the interval should be occupied by scanning. -* Scan interval is how long scanning should be done on each channel. BLE uses 3 channels for advertising. -* -> Adjust these values with power consumption in mind if power is limited. -*/ +// defined in main.cpp +void set_LED (uint16_t set_color, uint16_t set_blinkduration, uint16_t set_interval, uint8_t set_count); +void reset_counters(); -// WiFi scan parameters -#define WIFI_CHANNEL_MIN 1 // start channel number where scan begings -#define WIFI_CHANNEL_MAX 13 // total channel number to scan -#define WIFI_MY_COUNTRY "EU" // select locale for Wifi RF settings -#define WIFI_CHANNEL_SWITCH_INTERVAL 50 // [seconds/100] -> 0,5 sec. +// defined in configmanager.cpp +void eraseConfig(void); +void saveConfig(void); +void loadConfig(void); -// LoRa payload send cycle -//#define SEND_SECS 120 // [seconds/2] -> 240 sec. -#define SEND_SECS 30 // [seconds/2] -> 60 sec. +// defined in lorawan.cpp +void onEvent(ev_t ev); +void do_send(osjob_t* j); +void gen_lora_deveui(uint8_t * pdeveui); +void RevBytes(unsigned char* b, size_t c); +void get_hard_deveui(uint8_t *pdeveui); -// Default LoRa Spreadfactor -#define LORASFDEFAULT 9 // 7 ... 12 SF, according to LoRaWAN specs -#define MAXLORARETRY 500 // maximum count of TX retries if LoRa busy -#define RCMDPORT 2 // LoRaWAN Port on which device listenes for remote commands +// defined in wifisniffer.cpp +void wifi_sniffer_init(void); +void wifi_sniffer_set_channel(uint8_t channel); +void wifi_sniffer_packet_handler(void *buff, wifi_promiscuous_pkt_type_t type); -// Default RGB LED luminosity (in %) -#define RGBLUMINOSITY 30 // 30% +// defined in blescan.cpp +void bt_loop(void *ignore); -// OLED Display refresh cycle (in Milliseconds) -#define DISPLAYREFRESH_MS 40 // e.g. 40ms -> 1000/40 = 25 frames per second - -// LMIC settings -// define hardware independent LMIC settings here, settings of standard library in /lmic/config.h will be ignored -// define hardware specifics settings in platformio.ini as build_flag for hardware environment - -// Select frequency band here according to national regulations -#define CFG_eu868 1 -//#define CFG_us915 1 - -// This is the SX1272/SX1273 radio, which is also used on the HopeRF -// RFM92 boards. -//#define CFG_sx1272_radio 1 -// This is the SX1276/SX1277/SX1278/SX1279 radio, which is also used on -// the HopeRF RFM95 boards. -//#define CFG_sx1276_radio 1 - -// 16 μs per tick -// LMIC requires ticks to be 15.5μs - 100 μs long -#define US_PER_OSTICK_EXPONENT 4 -#define US_PER_OSTICK (1 << US_PER_OSTICK_EXPONENT) -#define OSTICKS_PER_SEC (1000000 / US_PER_OSTICK) - -// Set this to 1 to enable some basic debug output (using printf) about -// RF settings used during transmission and reception. Set to 2 to -// enable more verbose output. Make sure that printf is actually -// configured (e.g. on AVR it is not by default), otherwise using it can -// cause crashing. -//#define LMIC_DEBUG_LEVEL 1 - -// Enable this to allow using printf() to print to the given serial port -// (or any other Print object). This can be easy for debugging. The -// current implementation only works on AVR, though. -//#define LMIC_PRINTF_TO Serial - -// Any runtime assertion failures are printed to this serial port (or -// any other Print object). If this is unset, any failures just silently -// halt execution. -#define LMIC_FAILURE_TO Serial - -// Uncomment this to disable all code related to joining -//#define DISABLE_JOIN -// Uncomment this to disable all code related to ping -#define DISABLE_PING -// Uncomment this to disable all code related to beacon tracking. -// Requires ping to be disabled too -#define DISABLE_BEACONS - -// Uncomment these to disable the corresponding MAC commands. -// Class A -//#define DISABLE_MCMD_DCAP_REQ // duty cycle cap -//#define DISABLE_MCMD_DN2P_SET // 2nd DN window param -//#define DISABLE_MCMD_SNCH_REQ // set new channel -// Class B -//#define DISABLE_MCMD_PING_SET // set ping freq, automatically disabled by DISABLE_PING -//#define DISABLE_MCMD_BCNI_ANS // next beacon start, automatical disabled by DISABLE_BEACON - -// In LoRaWAN, a gateway applies I/Q inversion on TX, and nodes do the -// same on RX. This ensures that gateways can talk to nodes and vice -// versa, but gateways will not hear other gateways and nodes will not -// hear other nodes. By uncommenting this macro, this inversion is -// disabled and this node can hear other nodes. If two nodes both have -// this macro set, they can talk to each other (but they can no longer -// hear gateways). This should probably only be used when debugging -// and/or when talking to the radio directly (e.g. like in the "raw" -// example). -//#define DISABLE_INVERT_IQ_ON_RX - -// This allows choosing between multiple included AES implementations. -// Make sure exactly one of these is uncommented. -// -// This selects the original AES implementation included LMIC. This -// implementation is optimized for speed on 32-bit processors using -// fairly big lookup tables, but it takes up big amounts of flash on the -// AVR architecture. -#define USE_ORIGINAL_AES -// -// This selects the AES implementation written by Ideetroon for their -// own LoRaWAN library. It also uses lookup tables, but smaller -// byte-oriented ones, making it use a lot less flash space (but it is -// also about twice as slow as the original). -// #define USE_IDEETRON_AES +// defined in main.cpp +void reset_counters(void); \ No newline at end of file diff --git a/src/paxcounter.conf b/src/paxcounter.conf new file mode 100644 index 00000000..bfae6146 --- /dev/null +++ b/src/paxcounter.conf @@ -0,0 +1,129 @@ +// ----- Paxcounter user config file ------ +// +// --> adapt to your needs and use case <-- + +// Verbose enables serial output +#define VERBOSE 1 // comment out to silence the device, for mute use build option + +// set this to include BLE counting and vendor filter functions +#define VENDORFILTER 1 // comment out if you want to count things, not people +#define BLECOUNTER 1 // comment out if you don't want BLE count + +// BLE scan parameters +#define BLESCANTIME 11 // [seconds] scan duration, see note below +#define BLESCANWINDOW 10 // [milliseconds] scan window, see below, 3 .. 10240, default 10 +#define BLESCANINTERVAL 10 // [milliseconds] how long to wait between scans, 3 .. 10240, default 10 + +/* Note: guide for setting bluetooth parameters +* +* |< Scan Window > |< Scan Window > |< Scan Window > | +* |< Scan Interval >|< Scan Interval >|< Scan Interval >| +* |< Scan duration >| +* +* Scan duration sets how long scanning should be going on, interrupting a wifi scan cycle. +* Scan window sets how much of the interval should be occupied by scanning. +* Scan interval is how long scanning should be done on each channel. BLE uses 3 channels for advertising. +* -> Adjust these values with power consumption in mind if power is limited. +*/ + +// WiFi scan parameters +#define WIFI_CHANNEL_MIN 1 // start channel number where scan begings +#define WIFI_CHANNEL_MAX 13 // total channel number to scan +#define WIFI_MY_COUNTRY "EU" // select locale for Wifi RF settings +#define WIFI_CHANNEL_SWITCH_INTERVAL 50 // [seconds/100] -> 0,5 sec. + +// LoRa payload send cycle +//#define SEND_SECS 120 // [seconds/2] -> 240 sec. +#define SEND_SECS 30 // [seconds/2] -> 60 sec. + +// Default LoRa Spreadfactor +#define LORASFDEFAULT 9 // 7 ... 12 SF, according to LoRaWAN specs +#define MAXLORARETRY 500 // maximum count of TX retries if LoRa busy +#define RCMDPORT 2 // LoRaWAN Port on which device listenes for remote commands + +// Default RGB LED luminosity (in %) +#define RGBLUMINOSITY 30 // 30% + +// OLED Display refresh cycle (in Milliseconds) +#define DISPLAYREFRESH_MS 40 // e.g. 40ms -> 1000/40 = 25 frames per second + +// LMIC settings +// define hardware independent LMIC settings here, settings of standard library in /lmic/config.h will be ignored +// define hardware specifics settings in platformio.ini as build_flag for hardware environment + +// Select frequency band here according to national regulations +#define CFG_eu868 1 +//#define CFG_us915 1 + +// This is the SX1272/SX1273 radio, which is also used on the HopeRF +// RFM92 boards. +//#define CFG_sx1272_radio 1 +// This is the SX1276/SX1277/SX1278/SX1279 radio, which is also used on +// the HopeRF RFM95 boards. +//#define CFG_sx1276_radio 1 + +// 16 μs per tick +// LMIC requires ticks to be 15.5μs - 100 μs long +#define US_PER_OSTICK_EXPONENT 4 +#define US_PER_OSTICK (1 << US_PER_OSTICK_EXPONENT) +#define OSTICKS_PER_SEC (1000000 / US_PER_OSTICK) + +// Set this to 1 to enable some basic debug output (using printf) about +// RF settings used during transmission and reception. Set to 2 to +// enable more verbose output. Make sure that printf is actually +// configured (e.g. on AVR it is not by default), otherwise using it can +// cause crashing. +//#define LMIC_DEBUG_LEVEL 1 + +// Enable this to allow using printf() to print to the given serial port +// (or any other Print object). This can be easy for debugging. The +// current implementation only works on AVR, though. +//#define LMIC_PRINTF_TO Serial + +// Any runtime assertion failures are printed to this serial port (or +// any other Print object). If this is unset, any failures just silently +// halt execution. +#define LMIC_FAILURE_TO Serial + +// Uncomment this to disable all code related to joining +//#define DISABLE_JOIN +// Uncomment this to disable all code related to ping +#define DISABLE_PING +// Uncomment this to disable all code related to beacon tracking. +// Requires ping to be disabled too +#define DISABLE_BEACONS + +// Uncomment these to disable the corresponding MAC commands. +// Class A +//#define DISABLE_MCMD_DCAP_REQ // duty cycle cap +//#define DISABLE_MCMD_DN2P_SET // 2nd DN window param +//#define DISABLE_MCMD_SNCH_REQ // set new channel +// Class B +//#define DISABLE_MCMD_PING_SET // set ping freq, automatically disabled by DISABLE_PING +//#define DISABLE_MCMD_BCNI_ANS // next beacon start, automatical disabled by DISABLE_BEACON + +// In LoRaWAN, a gateway applies I/Q inversion on TX, and nodes do the +// same on RX. This ensures that gateways can talk to nodes and vice +// versa, but gateways will not hear other gateways and nodes will not +// hear other nodes. By uncommenting this macro, this inversion is +// disabled and this node can hear other nodes. If two nodes both have +// this macro set, they can talk to each other (but they can no longer +// hear gateways). This should probably only be used when debugging +// and/or when talking to the radio directly (e.g. like in the "raw" +// example). +//#define DISABLE_INVERT_IQ_ON_RX + +// This allows choosing between multiple included AES implementations. +// Make sure exactly one of these is uncommented. +// +// This selects the original AES implementation included LMIC. This +// implementation is optimized for speed on 32-bit processors using +// fairly big lookup tables, but it takes up big amounts of flash on the +// AVR architecture. +#define USE_ORIGINAL_AES +// +// This selects the AES implementation written by Ideetroon for their +// own LoRaWAN library. It also uses lookup tables, but smaller +// byte-oriented ones, making it use a lot less flash space (but it is +// also about twice as slow as the original). +// #define USE_IDEETRON_AES diff --git a/src/rcommand.cpp b/src/rcommand.cpp index 6875ad8e..fe73c8aa 100644 --- a/src/rcommand.cpp +++ b/src/rcommand.cpp @@ -19,10 +19,6 @@ typedef struct { const bool store; } cmd_t; -// functions defined in configmanager.cpp -void eraseConfig(void); -void saveConfig(void); - // function defined in antenna.cpp #ifdef HAS_ANTENNA_SWITCH void antenna_select(const int8_t _ant); @@ -64,11 +60,8 @@ void set_reset(int val) { break; case 1: // reset MAC counter ESP_LOGI(TAG, "Remote command: reset MAC counter"); - macs.clear(); // clear all macs container - macs_total = 0; // reset all counters - macs_wifi = 0; - macs_ble = 0; - salt_reset(); // get new 16bit salt + reset_counters(); // clear macs + reset_salt(); // get new salt sprintf(display_lora, "Reset counter"); break; case 2: // reset device to factory settings