Merge pull request #960 from cyberman54/development

add wifi channel map configuration option
This commit is contained in:
Verkehrsrot 2023-04-28 17:46:19 +02:00 committed by GitHub
commit e05154a359
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 36 additions and 14 deletions

View File

@ -111,6 +111,11 @@ Send for example `83` `86` as Downlink on Port 2 to get battery status and time/
0 ... 100 percentage of luminosity (100% = full light) 0 ... 100 percentage of luminosity (100% = full light)
e.g. 50 -> 50% of luminosity [default] e.g. 50 -> 50% of luminosity [default]
#### 0x11 set Wifi scanner channel map bitmask
bytes 1..2 = wifi channel map bitmask (MSB), 0..8191
e.g. 0b1010000001001 sets channels 1, 4, 11, 13
#### 0x13 set user sensor mode #### 0x13 set user sensor mode
byte 1 = user sensor number (1..3) byte 1 = user sensor number (1..3)

View File

@ -66,6 +66,7 @@ typedef struct __attribute__((packed)) {
uint16_t sleepcycle; // sleep cycle [seconds/10] uint16_t sleepcycle; // sleep cycle [seconds/10]
uint16_t wakesync; // time window [seconds] to sync wakeup on top-of-hour uint16_t wakesync; // time window [seconds] to sync wakeup on top-of-hour
uint8_t wifichancycle; // wifi channel switch cycle [seconds/100] uint8_t wifichancycle; // wifi channel switch cycle [seconds/100]
uint16_t wifichanmap; // wifi channel hopping scheme
uint8_t blescantime; // BLE scan cycle duration [seconds] uint8_t blescantime; // BLE scan cycle duration [seconds]
uint8_t blescan; // 0=disabled, 1=enabled uint8_t blescan; // 0=disabled, 1=enabled
uint8_t wifiscan; // 0=disabled, 1=enabled uint8_t wifiscan; // 0=disabled, 1=enabled

View File

@ -60,7 +60,7 @@ upload_speed = 115200 ; set by build.py and taken from hal file
lib_deps_lora = lib_deps_lora =
mcci-catena/MCCI LoRaWAN LMIC library @ ^4.1.1 mcci-catena/MCCI LoRaWAN LMIC library @ ^4.1.1
lib_deps_display = lib_deps_display =
bitbank2/OneBitDisplay @ ^2.3.0 bitbank2/OneBitDisplay @ ^2.3.1
bitbank2/bb_spi_lcd @ ^2.4.1 bitbank2/bb_spi_lcd @ ^2.4.1
ricmoo/QRCode @ ^0.0.1 ricmoo/QRCode @ ^0.0.1
lib_deps_ledmatrix = lib_deps_ledmatrix =
@ -70,7 +70,7 @@ lib_deps_rgbled =
lib_deps_gps = lib_deps_gps =
mikalhart/TinyGPSPlus @ ^1.0.3 mikalhart/TinyGPSPlus @ ^1.0.3
lib_deps_sensors = lib_deps_sensors =
adafruit/Adafruit Unified Sensor @ ^1.1.7 adafruit/Adafruit Unified Sensor @ ^1.1.9
adafruit/Adafruit BME280 Library @ ^2.2.2 adafruit/Adafruit BME280 Library @ ^2.2.2
adafruit/Adafruit BMP085 Library @ ^1.2.2 adafruit/Adafruit BMP085 Library @ ^1.2.2
boschsensortec/BSEC Software Library @ 1.8.1492 boschsensortec/BSEC Software Library @ 1.8.1492
@ -78,7 +78,7 @@ lib_deps_sensors =
lib_deps_basic = lib_deps_basic =
greyrook/libpax @ ^1.1.0 greyrook/libpax @ ^1.1.0
https://github.com/SukkoPera/Arduino-Rokkit-Hash.git https://github.com/SukkoPera/Arduino-Rokkit-Hash.git
bblanchon/ArduinoJson @ ^6.20.1 bblanchon/ArduinoJson @ ^6.21.2
makuna/RTC @ ^2.3.7 makuna/RTC @ ^2.3.7
mathertel/OneButton @ ^2.0.3 mathertel/OneButton @ ^2.0.3
lewisxhe/XPowersLib @ ^0.1.5 lewisxhe/XPowersLib @ ^0.1.5

View File

@ -27,7 +27,7 @@ lib_deps_all =
fastled/FastLED @ ^3.5.0 fastled/FastLED @ ^3.5.0
greyrook/libpax @ ^1.1.0 greyrook/libpax @ ^1.1.0
https://github.com/SukkoPera/Arduino-Rokkit-Hash.git https://github.com/SukkoPera/Arduino-Rokkit-Hash.git
bblanchon/ArduinoJson @ ^6.20.1 bblanchon/ArduinoJson @ ^6.21.2
mathertel/OneButton @ ^2.0.3 mathertel/OneButton @ ^2.0.3
256dpi/MQTT @ ^2.5.1 256dpi/MQTT @ ^2.5.1
ricmoo/QRCode @ ^0.0.1 ricmoo/QRCode @ ^0.0.1

View File

@ -40,6 +40,7 @@ static void defaultConfig(configData_t *myconfig) {
myconfig->wakesync = SYNCWAKEUP; // wakeup sync window [seconds] myconfig->wakesync = SYNCWAKEUP; // wakeup sync window [seconds]
myconfig->wifichancycle = myconfig->wifichancycle =
WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100] WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
myconfig->wifichanmap = WIFI_CHANNEL_MAP; // wifi channel hopping scheme
myconfig->blescantime = myconfig->blescantime =
BLESCANINTERVAL / BLESCANINTERVAL /
10; // BT channel scan cycle [seconds/100], default 1 (= 10ms) 10; // BT channel scan cycle [seconds/100], default 1 (= 10ms)

View File

@ -282,7 +282,7 @@ void setup() {
// configure WIFI sniffing // configure WIFI sniffing
strcpy(configuration.wifi_my_country_str, WIFI_MY_COUNTRY); strcpy(configuration.wifi_my_country_str, WIFI_MY_COUNTRY);
configuration.wificounter = cfg.wifiscan; configuration.wificounter = cfg.wifiscan;
configuration.wifi_channel_map = WIFI_CHANNEL_ALL; configuration.wifi_channel_map = cfg.wifichanmap;
configuration.wifi_channel_switch_interval = cfg.wifichancycle; configuration.wifi_channel_switch_interval = cfg.wifichancycle;
configuration.wifi_rssi_threshold = cfg.rssilimit; configuration.wifi_rssi_threshold = cfg.rssilimit;
ESP_LOGI(TAG, "WIFISCAN: %s", cfg.wifiscan ? "on" : "off"); ESP_LOGI(TAG, "WIFISCAN: %s", cfg.wifiscan ? "on" : "off");

View File

@ -53,6 +53,7 @@
// WiFi scan parameters // WiFi scan parameters
#define WIFI_MY_COUNTRY "01" // select 2-letter locale for Wifi RF settings, e.g. "DE"; use "01" for world safe mode #define WIFI_MY_COUNTRY "01" // select 2-letter locale for Wifi RF settings, e.g. "DE"; use "01" for world safe mode
#define WIFI_CHANNEL_SWITCH_INTERVAL 50 // [seconds/100] -> 0,5 sec. #define WIFI_CHANNEL_SWITCH_INTERVAL 50 // [seconds/100] -> 0,5 sec.
#define WIFI_CHANNEL_MAP WIFI_CHANNEL_ALL // possible values see libpax_api.h
// LoRa payload default parameters // LoRa payload default parameters
#define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle #define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle

View File

@ -44,6 +44,7 @@ void PayloadConvert::addConfig(configData_t value) {
buffer[cursor++] = lowByte(value.rssilimit); buffer[cursor++] = lowByte(value.rssilimit);
buffer[cursor++] = value.sendcycle; buffer[cursor++] = value.sendcycle;
buffer[cursor++] = value.wifichancycle; buffer[cursor++] = value.wifichancycle;
//buffer[cursor++] = value.wifichanmap;
buffer[cursor++] = value.blescantime; buffer[cursor++] = value.blescantime;
buffer[cursor++] = value.blescan; buffer[cursor++] = value.blescan;
buffer[cursor++] = value.wifiant; buffer[cursor++] = value.wifiant;
@ -170,6 +171,7 @@ void PayloadConvert::addConfig(configData_t value) {
writeUint16(value.rssilimit); writeUint16(value.rssilimit);
writeUint8(value.sendcycle); writeUint8(value.sendcycle);
writeUint8(value.wifichancycle); writeUint8(value.wifichancycle);
//writeUint8(value.wifichanmap);
writeUint8(value.blescantime); writeUint8(value.blescantime);
writeUint16(value.sleepcycle); writeUint16(value.sleepcycle);
writeBitmap(value.adrmode ? true : false, value.screensaver ? true : false, writeBitmap(value.adrmode ? true : false, value.screensaver ? true : false,

View File

@ -106,6 +106,17 @@ void set_wifichancycle(uint8_t val[]) {
init_libpax(); init_libpax();
} }
void set_wifichanmap(uint8_t val[]) {
// swap byte order from msb to lsb, note: this is a platform dependent hack
cfg.wifichanmap = __builtin_bswap16(*(uint16_t *)(val));
libpax_counter_stop();
libpax_config_t current_config;
libpax_get_current_config(&current_config);
current_config.wifi_channel_map = cfg.wifichanmap;
libpax_update_config(&current_config);
init_libpax();
}
void set_blescantime(uint8_t val[]) { void set_blescantime(uint8_t val[]) {
cfg.blescantime = val[0]; cfg.blescantime = val[0];
libpax_counter_stop(); libpax_counter_stop();
@ -406,15 +417,16 @@ static const cmd_t table[] = {
{0x0b, set_wifichancycle, 1}, {0x0c, set_blescantime, 1}, {0x0b, set_wifichancycle, 1}, {0x0c, set_blescantime, 1},
{0x0d, set_wakesync, 2}, {0x0e, set_blescan, 1}, {0x0d, set_wakesync, 2}, {0x0e, set_blescan, 1},
{0x0f, set_wifiant, 1}, {0x10, set_rgblum, 1}, {0x0f, set_wifiant, 1}, {0x10, set_rgblum, 1},
{0x13, set_sensor, 2}, {0x14, set_payloadmask, 1}, {0x11, set_wifichanmap, 2}, {0x13, set_sensor, 2},
{0x15, set_bme, 1}, {0x16, set_batt, 1}, {0x14, set_payloadmask, 1}, {0x15, set_bme, 1},
{0x17, set_wifiscan, 1}, {0x18, set_flush, 0}, {0x16, set_batt, 1}, {0x17, set_wifiscan, 1},
{0x19, set_sleepcycle, 2}, {0x20, set_loadconfig, 0}, {0x18, set_flush, 0}, {0x19, set_sleepcycle, 2},
{0x21, set_saveconfig, 0}, {0x80, get_config, 0}, {0x20, set_loadconfig, 0}, {0x21, set_saveconfig, 0},
{0x81, get_status, 0}, {0x83, get_batt, 0}, {0x80, get_config, 0}, {0x81, get_status, 0},
{0x84, get_gps, 0}, {0x85, get_bme, 0}, {0x83, get_batt, 0}, {0x84, get_gps, 0},
{0x86, get_time, 0}, {0x87, set_timesync, 0}, {0x85, get_bme, 0}, {0x86, get_time, 0},
{0x88, set_time, 4}, {0x99, set_flush, 0}}; {0x87, set_timesync, 0}, {0x88, set_time, 4},
{0x99, set_flush, 0}};
static const uint8_t cmdtablesize = static const uint8_t cmdtablesize =
sizeof(table) / sizeof(table[0]); // number of commands in command table sizeof(table) / sizeof(table[0]); // number of commands in command table