commit
8826a26c7a
@ -42,8 +42,7 @@
|
|||||||
#define SCREEN_MODE (0x80)
|
#define SCREEN_MODE (0x80)
|
||||||
|
|
||||||
// I2C bus access control
|
// I2C bus access control
|
||||||
#define I2C_MUTEX_LOCK() \
|
#define I2C_MUTEX_LOCK() xSemaphoreTake(I2Caccess, pdMS_TO_TICKS(10)) == pdTRUE
|
||||||
xSemaphoreTake(I2Caccess, pdMS_TO_TICKS(3 * DISPLAYREFRESH_MS)) == pdTRUE
|
|
||||||
#define I2C_MUTEX_UNLOCK() xSemaphoreGive(I2Caccess)
|
#define I2C_MUTEX_UNLOCK() xSemaphoreGive(I2Caccess)
|
||||||
|
|
||||||
// Struct holding devices's runtime configuration
|
// Struct holding devices's runtime configuration
|
||||||
|
@ -26,6 +26,7 @@ halfile = generic.h
|
|||||||
;halfile = lolin32lora.h
|
;halfile = lolin32lora.h
|
||||||
;halfile = lolin32lite.h
|
;halfile = lolin32lite.h
|
||||||
;halfile = wemos32oled.h
|
;halfile = wemos32oled.h
|
||||||
|
;halfile = wemos32matrix.h
|
||||||
;halfile = octopus32.h
|
;halfile = octopus32.h
|
||||||
|
|
||||||
[platformio]
|
[platformio]
|
||||||
@ -41,7 +42,7 @@ description = Paxcounter is a device for metering passenger flows in realtime. I
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 1.7.8
|
release_version = 1.7.82
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 3
|
debug_level = 3
|
||||||
@ -50,8 +51,6 @@ otakeyfile = ota.conf
|
|||||||
lorakeyfile = loraconf.h
|
lorakeyfile = loraconf.h
|
||||||
lmicconfigfile = lmic_config.h
|
lmicconfigfile = lmic_config.h
|
||||||
platform_espressif32 = espressif32@1.9.0
|
platform_espressif32 = espressif32@1.9.0
|
||||||
board_build.partitions = min_spiffs.csv
|
|
||||||
board = esp32dev
|
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
upload_speed = 115200
|
upload_speed = 115200
|
||||||
lib_deps_lora =
|
lib_deps_lora =
|
||||||
@ -97,11 +96,11 @@ build_flags_all =
|
|||||||
-mfix-esp32-psram-cache-issue
|
-mfix-esp32-psram-cache-issue
|
||||||
|
|
||||||
[env]
|
[env]
|
||||||
board = ${common.board}
|
framework = arduino
|
||||||
|
board = esp32dev
|
||||||
|
board_build.partitions = min_spiffs.csv
|
||||||
upload_speed = ${common.upload_speed}
|
upload_speed = ${common.upload_speed}
|
||||||
platform = ${common.platform_espressif32}
|
platform = ${common.platform_espressif32}
|
||||||
framework = arduino
|
|
||||||
board_build.partitions = ${common.board_build.partitions}
|
|
||||||
lib_deps = ${common.lib_deps_all}
|
lib_deps = ${common.lib_deps_all}
|
||||||
build_flags = ${common.build_flags_all}
|
build_flags = ${common.build_flags_all}
|
||||||
upload_protocol = ${common.upload_protocol}
|
upload_protocol = ${common.upload_protocol}
|
||||||
|
@ -28,19 +28,12 @@ void button_init(int pin) {
|
|||||||
#ifdef HAS_MATRIX_DISPLAY
|
#ifdef HAS_MATRIX_DISPLAY
|
||||||
refreshTheMatrixDisplay(true); // switch to next display page
|
refreshTheMatrixDisplay(true); // switch to next display page
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (!defined HAS_DISPLAY) && (!defined HAS_MATRIX_DISPLAY)
|
|
||||||
payload.reset();
|
|
||||||
payload.addButton(0x01);
|
|
||||||
SendPayload(BUTTONPORT, prio_normal);
|
|
||||||
#endif
|
|
||||||
});
|
});
|
||||||
|
|
||||||
b->setOnHolding([]() {
|
b->setOnHolding([]() {
|
||||||
#if (HAS_LORA)
|
payload.reset();
|
||||||
cfg.adrmode = !cfg.adrmode;
|
payload.addButton(0x01);
|
||||||
LMIC_setAdrMode(cfg.adrmode);
|
SendPayload(BUTTONPORT, prio_normal);
|
||||||
#endif
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// attach interrupt to the button
|
// attach interrupt to the button
|
||||||
|
@ -23,9 +23,9 @@ void defaultConfig() {
|
|||||||
cfg.blescantime =
|
cfg.blescantime =
|
||||||
BLESCANINTERVAL /
|
BLESCANINTERVAL /
|
||||||
10; // BT channel scan cycle [seconds/100], default 1 (= 10ms)
|
10; // BT channel scan cycle [seconds/100], default 1 (= 10ms)
|
||||||
cfg.blescan = 0; // 0=disabled, 1=enabled
|
cfg.blescan = BLECOUNTER; // 0=disabled, 1=enabled
|
||||||
cfg.wifiant = 0; // 0=internal, 1=external (for LoPy/LoPy4)
|
cfg.wifiant = 0; // 0=internal, 1=external (for LoPy/LoPy4)
|
||||||
cfg.vendorfilter = 1; // 0=disabled, 1=enabled
|
cfg.vendorfilter = VENDORFILTER; // 0=disabled, 1=enabled
|
||||||
cfg.rgblum = RGBLUMINOSITY; // RGB Led luminosity (0..100%)
|
cfg.rgblum = RGBLUMINOSITY; // RGB Led luminosity (0..100%)
|
||||||
cfg.monitormode = 0; // 0=disabled, 1=enabled
|
cfg.monitormode = 0; // 0=disabled, 1=enabled
|
||||||
cfg.runmode = 0; // 0=normal, 1=update
|
cfg.runmode = 0; // 0=normal, 1=update
|
||||||
|
@ -306,12 +306,12 @@ void draw_page(time_t t, uint8_t page) {
|
|||||||
wasnofix = false;
|
wasnofix = false;
|
||||||
}
|
}
|
||||||
// line 3-4: GPS latitude
|
// line 3-4: GPS latitude
|
||||||
snprintf(buff, sizeof(buff), "%c%-07.4f",
|
snprintf(buff, sizeof(buff), "%c%07.4f",
|
||||||
gps.location.rawLat().negative ? 'S' : 'N', gps.location.lat());
|
gps.location.rawLat().negative ? 'S' : 'N', gps.location.lat());
|
||||||
u8x8.draw2x2String(0, 3, buff);
|
u8x8.draw2x2String(0, 3, buff);
|
||||||
|
|
||||||
// line 6-7: GPS longitude
|
// line 6-7: GPS longitude
|
||||||
snprintf(buff, sizeof(buff), "%c%-07.4f",
|
snprintf(buff, sizeof(buff), "%c%07.4f",
|
||||||
gps.location.rawLat().negative ? 'W' : 'E', gps.location.lng());
|
gps.location.rawLat().negative ? 'W' : 'E', gps.location.lng());
|
||||||
u8x8.draw2x2String(0, 6, buff);
|
u8x8.draw2x2String(0, 6, buff);
|
||||||
|
|
||||||
@ -334,7 +334,7 @@ void draw_page(time_t t, uint8_t page) {
|
|||||||
|
|
||||||
#if (HAS_BME)
|
#if (HAS_BME)
|
||||||
// line 2-3: Temp
|
// line 2-3: Temp
|
||||||
snprintf(buff, sizeof(buff), "TMP:%--4.1f", bme_status.temperature);
|
snprintf(buff, sizeof(buff), "TMP:%-4.1f", bme_status.temperature);
|
||||||
u8x8.draw2x2String(0, 2, buff);
|
u8x8.draw2x2String(0, 2, buff);
|
||||||
|
|
||||||
// line 4-5: Hum
|
// line 4-5: Hum
|
||||||
|
@ -79,13 +79,12 @@ void IRAM_ATTR gps_storetime(gpsStatus_t &gps_store) {
|
|||||||
|
|
||||||
if (gps.time.isUpdated() && gps.date.isValid() && (gps.time.age() < 1000)) {
|
if (gps.time.isUpdated() && gps.date.isValid() && (gps.time.age() < 1000)) {
|
||||||
|
|
||||||
/* nmea telegram serial delay compensation; not sure if we need this?
|
// nmea telegram serial delay compensation; not sure if we need this?
|
||||||
|
|
||||||
if (gps.time.age() > nmea_txDelay_ms)
|
if (gps.time.age() > nmea_txDelay_ms)
|
||||||
gps_store.timedate.Second = gps.time.second() + 1;
|
gps_store.timedate.Second = gps.time.second() + 1;
|
||||||
else
|
else
|
||||||
gps_store.timedate.Second = gps.time.second();
|
gps_store.timedate.Second = gps.time.second();
|
||||||
*/
|
|
||||||
|
|
||||||
gps_store.timedate.Second = gps.time.second();
|
gps_store.timedate.Second = gps.time.second();
|
||||||
gps_store.timedate.Minute = gps.time.minute();
|
gps_store.timedate.Minute = gps.time.minute();
|
||||||
|
47
src/hal/wemos32matrix.h
Normal file
47
src/hal/wemos32matrix.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// clang-format off
|
||||||
|
// upload_speed 921600
|
||||||
|
// board lolin32
|
||||||
|
|
||||||
|
#ifndef _WEMOS32MATRIX_H
|
||||||
|
#define _WEMOS32MATRIX_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define HAS_LED NOT_A_PIN // no LED
|
||||||
|
|
||||||
|
// LED Matrix display settings
|
||||||
|
#define HAS_MATRIX_DISPLAY 1 // Uncomment to enable LED matrix display output
|
||||||
|
#define LED_MATRIX_WIDTH 64 // Width in pixels (LEDs) of your display
|
||||||
|
#define LED_MATRIX_HEIGHT 16 // Height in pixels (LEDs ) of your display
|
||||||
|
|
||||||
|
// Pin numbers work fine for Wemos Lolin32 board (all used pins are on 1 side of the board)
|
||||||
|
// Explanation of pin signals see https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/new-wiring
|
||||||
|
#define MATRIX_DISPLAY_SCAN_US 500 // Matrix display scan rate in microseconds (1ms is about 'acceptable')
|
||||||
|
#define LED_MATRIX_LATCHPIN 13 // LAT (or STB = Strobe)
|
||||||
|
#define LED_MATRIX_CLOCKPIN 32 // CLK
|
||||||
|
#define LED_MATRIX_EN_74138 12 // EN (or OE)
|
||||||
|
#define LED_MATRIX_LA_74138 14 // LA (or A)
|
||||||
|
#define LED_MATRIX_LB_74138 27 // LB (or B)
|
||||||
|
#define LED_MATRIX_LC_74138 25 // LC (or C)
|
||||||
|
#define LED_MATRIX_LD_74138 26 // LD (or D)
|
||||||
|
#define LED_MATRIX_DATA_R1 33 // R1 (or R0)
|
||||||
|
|
||||||
|
// CLK: The clock signal moves the data bits from pin R1 ("red") in the shift registers
|
||||||
|
// LAT: The latch signal enables LEDs according to the shift register's contents
|
||||||
|
// Line Selects: LA, LB, LC, LD select which rows of the display are currently lit (0 .. 15)
|
||||||
|
// OE: Output enable switches the LEDs on/off while transitioning from one row to the next
|
||||||
|
|
||||||
|
/*
|
||||||
|
How it works:
|
||||||
|
|
||||||
|
1. clock out 8 bytes for columns via R1 and CLK (8 * 8 bit -> 64 columns)
|
||||||
|
2. OE disable (LEDs off)
|
||||||
|
3. select line to lit with LA/LB/LC/LD hex coded (4 bit -> 16 rows)
|
||||||
|
4. latch data from shift registers to columns
|
||||||
|
5. OE enable (LEDs on)
|
||||||
|
6. repeat with step1 for next line
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
|
#endif
|
@ -7,41 +7,14 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
// Hardware related definitions for TTGO T-Beam board
|
|
||||||
// (only) for older T-Beam version T22_V05 eternal wiring LORA_IO1 to GPIO33 is needed!
|
|
||||||
//
|
|
||||||
// pinouts taken from http://tinymicros.com/wiki/TTGO_T-Beam
|
|
||||||
|
|
||||||
#define HAS_LED NOT_A_PIN // no LED
|
#define HAS_LED NOT_A_PIN // no LED
|
||||||
|
|
||||||
//#define HAS_LORA 1 // comment out if device shall not send data via LoRa
|
|
||||||
//#define CFG_sx1276_radio 1 // HPD13A LoRa SoC
|
|
||||||
//#define BOARD_HAS_PSRAM // use extra 4MB external RAM
|
|
||||||
//#define HAS_BUTTON GPIO_NUM_39 // on board button (next to reset)
|
|
||||||
//#define BAT_MEASURE_ADC ADC1_GPIO35_CHANNEL // battery probe GPIO pin -> ADC1_CHANNEL_7
|
|
||||||
//#define BAT_VOLTAGE_DIVIDER 2 // voltage divider 100k/100k on board
|
|
||||||
|
|
||||||
// GPS settings
|
|
||||||
//#define HAS_GPS 1 // use on board GPS
|
|
||||||
//#define GPS_SERIAL 9600, SERIAL_8N1, GPIO_NUM_12, GPIO_NUM_15 // UBlox NEO 6M
|
|
||||||
//#define GPS_INT GPIO_NUM_34 // 30ns accurary timepulse, to be external wired on pcb: NEO 6M Pin#3 -> GPIO34
|
|
||||||
|
|
||||||
// enable only if device has these sensors, otherwise comment these lines
|
|
||||||
// BME680 sensor on I2C bus
|
|
||||||
//#define HAS_BME 1 // Enable BME sensors in general
|
|
||||||
//#define HAS_BME680 SDA, SCL
|
|
||||||
//#define BME680_ADDR BME680_I2C_ADDR_PRIMARY // !! connect SDIO of BME680 to GND !!
|
|
||||||
|
|
||||||
// display (if connected)
|
|
||||||
#define HAS_DISPLAY U8X8_SSD1306_128X64_NONAME_HW_I2C
|
#define HAS_DISPLAY U8X8_SSD1306_128X64_NONAME_HW_I2C
|
||||||
#define MY_OLED_SDA (5)
|
#define MY_OLED_SDA (5)
|
||||||
#define MY_OLED_SCL (4)
|
#define MY_OLED_SCL (4)
|
||||||
#define MY_OLED_RST U8X8_PIN_NONE
|
#define MY_OLED_RST U8X8_PIN_NONE
|
||||||
#define DISPLAY_FLIP 1 // use if display is rotated
|
#define DISPLAY_FLIP 1 // use if display is rotated
|
||||||
|
|
||||||
// user defined sensors (if connected)
|
|
||||||
//#define HAS_SENSORS 1 // comment out if device has user defined sensors
|
|
||||||
|
|
||||||
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
#define DISABLE_BROWNOUT 1 // comment out if you want to keep brownout feature
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -121,13 +121,16 @@ void IRAM_ATTR GpsIRQ() {
|
|||||||
|
|
||||||
int mask_user_IRQ() {
|
int mask_user_IRQ() {
|
||||||
// begin of time critical section: lock I2C bus to ensure accurate timing
|
// begin of time critical section: lock I2C bus to ensure accurate timing
|
||||||
if (!I2C_MUTEX_LOCK())
|
if (I2C_MUTEX_LOCK()) {
|
||||||
return 1; // failure
|
|
||||||
xTaskNotify(irqHandlerTask, MASK_IRQ, eSetBits);
|
xTaskNotify(irqHandlerTask, MASK_IRQ, eSetBits);
|
||||||
|
return 0;
|
||||||
|
} else
|
||||||
|
return 1; // failure
|
||||||
}
|
}
|
||||||
|
|
||||||
int unmask_user_IRQ() {
|
int unmask_user_IRQ() {
|
||||||
// end of time critical section: release I2C bus
|
// end of time critical section: release I2C bus
|
||||||
I2C_MUTEX_UNLOCK();
|
I2C_MUTEX_UNLOCK();
|
||||||
xTaskNotify(irqHandlerTask, UNMASK_IRQ, eSetBits);
|
xTaskNotify(irqHandlerTask, UNMASK_IRQ, eSetBits);
|
||||||
|
return 0;
|
||||||
}
|
}
|
@ -21,9 +21,9 @@ uint8_t displaybuf[LED_MATRIX_WIDTH * LED_MATRIX_HEIGHT / NUMCHARS];
|
|||||||
|
|
||||||
// --- SELECT YOUR FONT HERE ---
|
// --- SELECT YOUR FONT HERE ---
|
||||||
const FONT_INFO *ActiveFontInfo = &digital7_18ptFontInfo;
|
const FONT_INFO *ActiveFontInfo = &digital7_18ptFontInfo;
|
||||||
//const FONT_INFO *ActiveFontInfo = &arialNarrow_17ptFontInfo;
|
// const FONT_INFO *ActiveFontInfo = &arialNarrow_17ptFontInfo;
|
||||||
//const FONT_INFO *ActiveFontInfo = &gillSansMTCondensed_18ptFontInfo;
|
// const FONT_INFO *ActiveFontInfo = &gillSansMTCondensed_18ptFontInfo;
|
||||||
//const FONT_INFO *ActiveFontInfo = &gillSansMTCondensed_16ptFontInfo;
|
// const FONT_INFO *ActiveFontInfo = &gillSansMTCondensed_16ptFontInfo;
|
||||||
|
|
||||||
const uint8_t *iaActiveFont = ActiveFontInfo->Bitmap;
|
const uint8_t *iaActiveFont = ActiveFontInfo->Bitmap;
|
||||||
const FONT_CHAR_INFO *ActiveFontCharInfo = ActiveFontInfo->Descriptors;
|
const FONT_CHAR_INFO *ActiveFontCharInfo = ActiveFontInfo->Descriptors;
|
||||||
@ -68,6 +68,7 @@ void refreshTheMatrixDisplay(bool nextPage) {
|
|||||||
matrix.clear();
|
matrix.clear();
|
||||||
DrawNumber(String(ulLastNumMacs));
|
DrawNumber(String(ulLastNumMacs));
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
|
|
||||||
@ -79,6 +80,7 @@ void refreshTheMatrixDisplay(bool nextPage) {
|
|||||||
second(t));
|
second(t));
|
||||||
DrawNumber(String(buff));
|
DrawNumber(String(buff));
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
} // switch page
|
} // switch page
|
||||||
|
|
||||||
|
@ -183,7 +183,6 @@ void showLoraKeys(void) {
|
|||||||
|
|
||||||
void onEvent(ev_t ev) {
|
void onEvent(ev_t ev) {
|
||||||
char buff[24] = "";
|
char buff[24] = "";
|
||||||
uint32_t now_micros = 0;
|
|
||||||
|
|
||||||
switch (ev) {
|
switch (ev) {
|
||||||
|
|
||||||
@ -421,7 +420,7 @@ esp_err_t lora_stack_init() {
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
ESP_LOGI(TAG, "LORA send queue created, size %d Bytes",
|
ESP_LOGI(TAG, "LORA send queue created, size %d Bytes",
|
||||||
SEND_QUEUE_SIZE * PAYLOAD_BUFFER_SIZE);
|
SEND_QUEUE_SIZE * sizeof(MessageBuffer_t));
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Starting LMIC...");
|
ESP_LOGI(TAG, "Starting LMIC...");
|
||||||
|
|
||||||
@ -460,7 +459,7 @@ void lora_enqueuedata(MessageBuffer_t *message, sendprio_t prio) {
|
|||||||
switch (prio) {
|
switch (prio) {
|
||||||
case prio_high:
|
case prio_high:
|
||||||
// clear space in queue if full, then fallthrough to normal
|
// clear space in queue if full, then fallthrough to normal
|
||||||
if (uxQueueSpacesAvailable == 0)
|
if (uxQueueSpacesAvailable(LoraSendQueue) == 0)
|
||||||
xQueueReceive(LoraSendQueue, &DummyBuffer, (TickType_t)0);
|
xQueueReceive(LoraSendQueue, &DummyBuffer, (TickType_t)0);
|
||||||
case prio_normal:
|
case prio_normal:
|
||||||
ret = xQueueSendToFront(LoraSendQueue, (void *)message, (TickType_t)0);
|
ret = xQueueSendToFront(LoraSendQueue, (void *)message, (TickType_t)0);
|
||||||
|
@ -107,20 +107,3 @@
|
|||||||
#define CAYENNE_DEVICECONFIG 11 // device period configuration
|
#define CAYENNE_DEVICECONFIG 11 // device period configuration
|
||||||
#define CAYENNE_SENSORREAD 13 // sensor period configuration
|
#define CAYENNE_SENSORREAD 13 // sensor period configuration
|
||||||
#define CAYENNE_SENSORENABLE 14 // sensor enable configuration
|
#define CAYENNE_SENSORENABLE 14 // sensor enable configuration
|
||||||
|
|
||||||
// LED Matrix display settings.
|
|
||||||
// Note: LED Matrix will only show number of found devices, no other information will be shown for now
|
|
||||||
//#define HAS_MATRIX_DISPLAY 1 // Uncomment to enable LED matrix display output
|
|
||||||
#define LED_MATRIX_WIDTH 64 // Width in pixels (LEDs) of your display
|
|
||||||
#define LED_MATRIX_HEIGHT 16 // Height in pixels (LEDs ) of your display
|
|
||||||
|
|
||||||
// Pin numbers work fine for Wemos Lolin32 board (all used pins are on 1 side of the board)
|
|
||||||
#define MATRIX_DISPLAY_SCAN_US 500 // Matrix display scan rate in microseconds (1ms is about 'acceptable')
|
|
||||||
#define LED_MATRIX_LATCHPIN 13 // Connects to LAT pin on display
|
|
||||||
#define LED_MATRIX_CLOCKPIN 32 // Connects to CLK pin on display
|
|
||||||
#define LED_MATRIX_EN_74138 12 // Connects to OE pin on display
|
|
||||||
#define LED_MATRIX_LA_74138 14 // Connects to LA pin on display
|
|
||||||
#define LED_MATRIX_LB_74138 27 // Connects to LB pin on display
|
|
||||||
#define LED_MATRIX_LC_74138 25 // Connects to LC pin on display
|
|
||||||
#define LED_MATRIX_LD_74138 26 // Connects to LD pin on display
|
|
||||||
#define LED_MATRIX_DATA_R1 33 // Connects to R1 pin on display
|
|
@ -50,18 +50,20 @@ void switchWifiChannel(TimerHandle_t xTimer) {
|
|||||||
channel =
|
channel =
|
||||||
(channel % WIFI_CHANNEL_MAX) + 1; // rotate channel 1..WIFI_CHANNEL_MAX
|
(channel % WIFI_CHANNEL_MAX) + 1; // rotate channel 1..WIFI_CHANNEL_MAX
|
||||||
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE);
|
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wifi_sniffer_init(void) {
|
void wifi_sniffer_init(void) {
|
||||||
wifi_init_config_t wificfg = WIFI_INIT_CONFIG_DEFAULT();
|
wifi_init_config_t wificfg = WIFI_INIT_CONFIG_DEFAULT();
|
||||||
wificfg.nvs_enable = 0; // we don't need any wifi settings from NVRAM
|
wificfg.nvs_enable = 0; // we don't need any wifi settings from NVRAM
|
||||||
wificfg.wifi_task_core_id = 0; // we want wifi task running on core 0
|
wificfg.wifi_task_core_id = 0; // we want wifi task running on core 0
|
||||||
wifi_promiscuous_filter_t filter = {
|
|
||||||
// .filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // only MGMT frames
|
|
||||||
.filter_mask = WIFI_PROMIS_FILTER_MASK_ALL}; // we use all frames
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_coex_preference_set(
|
// wifi_promiscuous_filter_t filter = {
|
||||||
ESP_COEX_PREFER_BALANCE)); // configure Wifi/BT coexist lib
|
// .filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT}; // only MGMT frames
|
||||||
|
// .filter_mask = WIFI_PROMIS_FILTER_MASK_ALL}; // we use all frames
|
||||||
|
|
||||||
|
wifi_promiscuous_filter_t filter = {.filter_mask =
|
||||||
|
WIFI_PROMIS_FILTER_MASK_MGMT |
|
||||||
|
WIFI_PROMIS_FILTER_MASK_DATA};
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_wifi_init(&wificfg)); // configure Wifi with cfg
|
ESP_ERROR_CHECK(esp_wifi_init(&wificfg)); // configure Wifi with cfg
|
||||||
ESP_ERROR_CHECK(
|
ESP_ERROR_CHECK(
|
||||||
|
Loading…
Reference in New Issue
Block a user