Merge pull request #351 from cyberman54/development

Fix battery function & new option WIFI off
This commit is contained in:
Verkehrsrot 2019-04-13 19:23:35 +02:00 committed by GitHub
commit 92007a84e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 36 additions and 19 deletions

View File

@ -139,7 +139,7 @@ extern time_t userUTCTime;
#include "button.h" #include "button.h"
#endif #endif
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
#include "battery.h" #include "battery.h"
#endif #endif

View File

@ -3,7 +3,7 @@
// Local logging tag // Local logging tag
static const char TAG[] = __FILE__; static const char TAG[] = __FILE__;
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
esp_adc_cal_characteristics_t *adc_characs = esp_adc_cal_characteristics_t *adc_characs =
(esp_adc_cal_characteristics_t *)calloc( (esp_adc_cal_characteristics_t *)calloc(
1, sizeof(esp_adc_cal_characteristics_t)); 1, sizeof(esp_adc_cal_characteristics_t));
@ -14,7 +14,7 @@ static const adc_unit_t unit = ADC_UNIT_1;
#endif #endif
void calibrate_voltage(void) { void calibrate_voltage(void) {
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
// configure ADC // configure ADC
ESP_ERROR_CHECK(adc1_config_width(ADC_WIDTH_BIT_12)); ESP_ERROR_CHECK(adc1_config_width(ADC_WIDTH_BIT_12));
ESP_ERROR_CHECK(adc1_config_channel_atten(adc_channel, atten)); ESP_ERROR_CHECK(adc1_config_channel_atten(adc_channel, atten));
@ -35,7 +35,7 @@ void calibrate_voltage(void) {
} }
uint16_t read_voltage() { uint16_t read_voltage() {
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
// multisample ADC // multisample ADC
uint32_t adc_reading = 0; uint32_t adc_reading = 0;
for (int i = 0; i < NO_OF_SAMPLES; i++) { for (int i = 0; i < NO_OF_SAMPLES; i++) {

View File

@ -9,7 +9,9 @@ static const char TAG[] = __FILE__;
Ticker housekeeper; Ticker housekeeper;
void housekeeping() { xTaskNotifyFromISR(irqHandlerTask, CYCLIC_IRQ, eSetBits, NULL); } void housekeeping() {
xTaskNotifyFromISR(irqHandlerTask, CYCLIC_IRQ, eSetBits, NULL);
}
// do all housekeeping // do all housekeeping
void doHousekeeping() { void doHousekeeping() {
@ -24,7 +26,7 @@ void doHousekeeping() {
#ifdef HAS_SPI #ifdef HAS_SPI
spi_housekeeping(); spi_housekeeping();
#endif #endif
#if(HAS_LORA) #if (HAS_LORA)
lora_housekeeping(); lora_housekeeping();
#endif #endif
@ -32,7 +34,7 @@ void doHousekeeping() {
ESP_LOGD(TAG, "IRQhandler %d bytes left | Taskstate = %d", ESP_LOGD(TAG, "IRQhandler %d bytes left | Taskstate = %d",
uxTaskGetStackHighWaterMark(irqHandlerTask), uxTaskGetStackHighWaterMark(irqHandlerTask),
eTaskGetState(irqHandlerTask)); eTaskGetState(irqHandlerTask));
#if(HAS_GPS) #if (HAS_GPS)
ESP_LOGD(TAG, "Gpsloop %d bytes left | Taskstate = %d", ESP_LOGD(TAG, "Gpsloop %d bytes left | Taskstate = %d",
uxTaskGetStackHighWaterMark(GpsTask), eTaskGetState(GpsTask)); uxTaskGetStackHighWaterMark(GpsTask), eTaskGetState(GpsTask));
#endif #endif
@ -52,7 +54,7 @@ void doHousekeeping() {
#endif #endif
// read battery voltage into global variable // read battery voltage into global variable
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
batt_voltage = read_voltage(); batt_voltage = read_voltage();
ESP_LOGI(TAG, "Voltage: %dmV", batt_voltage); ESP_LOGI(TAG, "Voltage: %dmV", batt_voltage);
#endif #endif
@ -115,8 +117,10 @@ uint32_t getFreeRAM() {
} }
void reset_counters() { void reset_counters() {
#if ((WIFICOUNTER) || (BLECOUNTER))
macs.clear(); // clear all macs container macs.clear(); // clear all macs container
macs_total = 0; // reset all counters macs_total = 0; // reset all counters
macs_wifi = 0; macs_wifi = 0;
macs_ble = 0; macs_ble = 0;
#endif
} }

View File

@ -185,7 +185,7 @@ void draw_page(time_t t, uint8_t page) {
case 0: case 0:
// update Battery status (line 2) // update Battery status (line 2)
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
u8x8.setCursor(0, 2); u8x8.setCursor(0, 2);
u8x8.printf("B:%.2fV", batt_voltage / 1000.0); u8x8.printf("B:%.2fV", batt_voltage / 1000.0);
#endif #endif

View File

@ -346,9 +346,8 @@ void setup() {
strcat_P(features, " IF482"); strcat_P(features, " IF482");
#endif #endif
// show compiled features #if (WIFICOUNTER)
ESP_LOGI(TAG, "Features:%s", features); strcat_P(features, " WIFI");
// start wifi in monitor mode and start channel rotation timer // start wifi in monitor mode and start channel rotation timer
ESP_LOGI(TAG, "Starting Wifi..."); ESP_LOGI(TAG, "Starting Wifi...");
wifi_sniffer_init(); wifi_sniffer_init();
@ -356,6 +355,15 @@ void setup() {
// arduino-esp32 core. Note: do this *after* wifi has started, since // arduino-esp32 core. Note: do this *after* wifi has started, since
// function gets it's seed from RF noise // function gets it's seed from RF noise
get_salt(); // get new 16bit for salting hashes get_salt(); // get new 16bit for salting hashes
#else
// switch off wifi
WiFi.mode(WIFI_OFF);
esp_wifi_stop();
esp_wifi_deinit();
#endif
// show compiled features
ESP_LOGI(TAG, "Features:%s", features);
// start state machine // start state machine
ESP_LOGI(TAG, "Starting Interrupt Handler..."); ESP_LOGI(TAG, "Starting Interrupt Handler...");
@ -400,7 +408,7 @@ void setup() {
timerAlarmEnable(displayIRQ); timerAlarmEnable(displayIRQ);
#endif #endif
// cyclic function interrupts // cyclic function interrupts
sendcycler.attach(SENDCYCLE * 2, sendcycle); sendcycler.attach(SENDCYCLE * 2, sendcycle);
housekeeper.attach(HOMECYCLE, housekeeping); housekeeper.attach(HOMECYCLE, housekeeping);

View File

@ -13,9 +13,10 @@
#define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255 #define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed #define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
// Set this to include BLE counting and vendor filter functions // Set this to include BLE counting and vendor filter functions, or to switch off WIFI counting
#define VENDORFILTER 1 // set to 0 if you want to count things, not people #define VENDORFILTER 1 // set to 0 if you want to count things, not people
#define BLECOUNTER 0 // set it to 1 if you want to use BLE count, at expense of memory #define BLECOUNTER 0 // set it to 1 if you want to use BLE count, at expense of power & memory
#define WIFICOUNTER 1 // set it to 0 if you want to switch off WIFI count
// BLE scan parameters // BLE scan parameters
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below #define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below

View File

@ -366,7 +366,7 @@ void PayloadConvert::addStatus(uint16_t voltage, uint64_t uptime, float celsius,
uint32_t mem, uint8_t reset1, uint8_t reset2) { uint32_t mem, uint8_t reset1, uint8_t reset2) {
uint16_t temp = celsius * 10; uint16_t temp = celsius * 10;
uint16_t volt = voltage / 10; uint16_t volt = voltage / 10;
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
#if (PAYLOAD_ENCODER == 3) #if (PAYLOAD_ENCODER == 3)
buffer[cursor++] = LPP_BATT_CHANNEL; buffer[cursor++] = LPP_BATT_CHANNEL;
#endif #endif

View File

@ -239,7 +239,7 @@ void get_config(uint8_t val[]) {
void get_status(uint8_t val[]) { void get_status(uint8_t val[]) {
ESP_LOGI(TAG, "Remote command: get device status"); ESP_LOGI(TAG, "Remote command: get device status");
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
uint16_t voltage = read_voltage(); uint16_t voltage = read_voltage();
#else #else
uint16_t voltage = 0; uint16_t voltage = 0;

View File

@ -3,7 +3,9 @@
Ticker sendcycler; Ticker sendcycler;
void sendcycle() { xTaskNotifyFromISR(irqHandlerTask, SENDCYCLE_IRQ, eSetBits, NULL); } void sendcycle() {
xTaskNotifyFromISR(irqHandlerTask, SENDCYCLE_IRQ, eSetBits, NULL);
}
// put data to send in RTos Queues used for transmit over channels Lora and SPI // put data to send in RTos Queues used for transmit over channels Lora and SPI
void SendPayload(uint8_t port, sendprio_t prio) { void SendPayload(uint8_t port, sendprio_t prio) {
@ -57,6 +59,7 @@ void sendCounter() {
while (bitmask) { while (bitmask) {
switch (bitmask & mask) { switch (bitmask & mask) {
#if ((WIFICOUNTER) || (BLECOUNTER))
case COUNT_DATA: case COUNT_DATA:
payload.reset(); payload.reset();
payload.addCount(macs_wifi, MAC_SNIFF_WIFI); payload.addCount(macs_wifi, MAC_SNIFF_WIFI);
@ -70,6 +73,7 @@ void sendCounter() {
ESP_LOGI(TAG, "Counter cleared"); ESP_LOGI(TAG, "Counter cleared");
} }
break; break;
#endif
#if (HAS_BME) #if (HAS_BME)
case MEMS_DATA: case MEMS_DATA:
@ -110,7 +114,7 @@ void sendCounter() {
break; break;
#endif #endif
#ifdef HAS_BATTERY_PROBE #ifdef BAT_MEASURE_ADC
case BATT_DATA: case BATT_DATA:
payload.reset(); payload.reset();
payload.addVoltage(read_voltage()); payload.addVoltage(read_voltage());