add wifi channel map configuration option
This commit is contained in:
		
							parent
							
								
									166b438faf
								
							
						
					
					
						commit
						a52a087fb9
					
				@ -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)
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
	byte 1 = user sensor number (1..3)
 | 
			
		||||
 | 
			
		||||
@ -66,6 +66,7 @@ typedef struct __attribute__((packed)) {
 | 
			
		||||
  uint16_t sleepcycle; // sleep cycle [seconds/10]
 | 
			
		||||
  uint16_t wakesync;   // time window [seconds] to sync wakeup on top-of-hour
 | 
			
		||||
  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 blescan;       // 0=disabled, 1=enabled
 | 
			
		||||
  uint8_t wifiscan;      // 0=disabled, 1=enabled
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,7 @@ static void defaultConfig(configData_t *myconfig) {
 | 
			
		||||
  myconfig->wakesync = SYNCWAKEUP;   // wakeup sync window [seconds]
 | 
			
		||||
  myconfig->wifichancycle =
 | 
			
		||||
      WIFI_CHANNEL_SWITCH_INTERVAL; // wifi channel switch cycle [seconds/100]
 | 
			
		||||
  myconfig->wifichanmap = WIFI_CHANNEL_MAP; // wifi channel hopping scheme
 | 
			
		||||
  myconfig->blescantime =
 | 
			
		||||
      BLESCANINTERVAL /
 | 
			
		||||
      10; // BT channel scan cycle [seconds/100], default 1 (= 10ms)
 | 
			
		||||
 | 
			
		||||
@ -282,7 +282,7 @@ void setup() {
 | 
			
		||||
  // configure WIFI sniffing
 | 
			
		||||
  strcpy(configuration.wifi_my_country_str, WIFI_MY_COUNTRY);
 | 
			
		||||
  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_rssi_threshold = cfg.rssilimit;
 | 
			
		||||
  ESP_LOGI(TAG, "WIFISCAN: %s", cfg.wifiscan ? "on" : "off");
 | 
			
		||||
 | 
			
		||||
@ -53,6 +53,7 @@
 | 
			
		||||
// 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_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
 | 
			
		||||
#define MEM_LOW                         2048    // [Bytes] low memory threshold triggering a send cycle
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ void PayloadConvert::addConfig(configData_t value) {
 | 
			
		||||
  buffer[cursor++] = lowByte(value.rssilimit);
 | 
			
		||||
  buffer[cursor++] = value.sendcycle;
 | 
			
		||||
  buffer[cursor++] = value.wifichancycle;
 | 
			
		||||
  //buffer[cursor++] = value.wifichanmap;
 | 
			
		||||
  buffer[cursor++] = value.blescantime;
 | 
			
		||||
  buffer[cursor++] = value.blescan;
 | 
			
		||||
  buffer[cursor++] = value.wifiant;
 | 
			
		||||
@ -170,6 +171,7 @@ void PayloadConvert::addConfig(configData_t value) {
 | 
			
		||||
  writeUint16(value.rssilimit);
 | 
			
		||||
  writeUint8(value.sendcycle);
 | 
			
		||||
  writeUint8(value.wifichancycle);
 | 
			
		||||
  //writeUint8(value.wifichanmap);
 | 
			
		||||
  writeUint8(value.blescantime);
 | 
			
		||||
  writeUint16(value.sleepcycle);
 | 
			
		||||
  writeBitmap(value.adrmode ? true : false, value.screensaver ? true : false,
 | 
			
		||||
 | 
			
		||||
@ -106,6 +106,17 @@ void set_wifichancycle(uint8_t val[]) {
 | 
			
		||||
  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(¤t_config);
 | 
			
		||||
  current_config.wifi_channel_map = cfg.wifichanmap;
 | 
			
		||||
  libpax_update_config(¤t_config);
 | 
			
		||||
  init_libpax();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void set_blescantime(uint8_t val[]) {
 | 
			
		||||
  cfg.blescantime = val[0];
 | 
			
		||||
  libpax_counter_stop();
 | 
			
		||||
@ -406,15 +417,16 @@ static const cmd_t table[] = {
 | 
			
		||||
    {0x0b, set_wifichancycle, 1}, {0x0c, set_blescantime, 1},
 | 
			
		||||
    {0x0d, set_wakesync, 2},      {0x0e, set_blescan, 1},
 | 
			
		||||
    {0x0f, set_wifiant, 1},       {0x10, set_rgblum, 1},
 | 
			
		||||
    {0x13, set_sensor, 2},        {0x14, set_payloadmask, 1},
 | 
			
		||||
    {0x15, set_bme, 1},           {0x16, set_batt, 1},
 | 
			
		||||
    {0x17, set_wifiscan, 1},      {0x18, set_flush, 0},
 | 
			
		||||
    {0x19, set_sleepcycle, 2},    {0x20, set_loadconfig, 0},
 | 
			
		||||
    {0x21, set_saveconfig, 0},    {0x80, get_config, 0},
 | 
			
		||||
    {0x81, get_status, 0},        {0x83, get_batt, 0},
 | 
			
		||||
    {0x84, get_gps, 0},           {0x85, get_bme, 0},
 | 
			
		||||
    {0x86, get_time, 0},          {0x87, set_timesync, 0},
 | 
			
		||||
    {0x88, set_time, 4},          {0x99, set_flush, 0}};
 | 
			
		||||
    {0x11, set_wifichanmap, 2},   {0x13, set_sensor, 2},
 | 
			
		||||
    {0x14, set_payloadmask, 1},   {0x15, set_bme, 1},
 | 
			
		||||
    {0x16, set_batt, 1},          {0x17, set_wifiscan, 1},
 | 
			
		||||
    {0x18, set_flush, 0},         {0x19, set_sleepcycle, 2},
 | 
			
		||||
    {0x20, set_loadconfig, 0},    {0x21, set_saveconfig, 0},
 | 
			
		||||
    {0x80, get_config, 0},        {0x81, get_status, 0},
 | 
			
		||||
    {0x83, get_batt, 0},          {0x84, get_gps, 0},
 | 
			
		||||
    {0x85, get_bme, 0},           {0x86, get_time, 0},
 | 
			
		||||
    {0x87, set_timesync, 0},      {0x88, set_time, 4},
 | 
			
		||||
    {0x99, set_flush, 0}};
 | 
			
		||||
 | 
			
		||||
static const uint8_t cmdtablesize =
 | 
			
		||||
    sizeof(table) / sizeof(table[0]); // number of commands in command table
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user