libpax integration fixes (sendtimer, rcommands)
This commit is contained in:
		
							parent
							
								
									44e5daaf02
								
							
						
					
					
						commit
						71aa55863b
					
				| @ -445,14 +445,14 @@ Send for example `83` `86` as Downlink on Port 2 to get battery status and time/ | ||||
| 
 | ||||
| 0x0A set payload send cycle | ||||
| 
 | ||||
| 	0 ... 255 payload send cycle in seconds/2 | ||||
| 	5 ... 255 payload send cycle in seconds/2 | ||||
| 	e.g. 120 -> payload is transmitted each 240 seconds [default] | ||||
| 
 | ||||
| 0x0B set Wifi channel hopping interval timer | ||||
| 
 | ||||
| 	0 ... 255 duration for scanning a wifi channel in seconds/100 | ||||
| 	e.g. 50 -> each channel is scanned for 500 milliseconds [default] | ||||
| 	0 means no hopping, scanning on  channel WIFI_CHANNEL_MIN only | ||||
| 	0 means no hopping, scanning on fixed single channel WIFI_CHANNEL_1 | ||||
| 
 | ||||
| 0x0C set Bluetooth channel switch interval timer | ||||
| 
 | ||||
| @ -524,7 +524,7 @@ Send for example `83` `86` as Downlink on Port 2 to get battery status and time/ | ||||
| 
 | ||||
| 0x19 set sleep cycle | ||||
| 
 | ||||
| 	bytes 1..2 = device sleep cycle in seconds/10 (MSB) | ||||
| 	bytes 1..2 = device sleep cycle in seconds/10 (MSB), 1 ... 255 | ||||
| 	e.g. {0x04, 0xB0} -> device sleeps 20 minutes after each send cycle [default = 0] | ||||
| 
 | ||||
| 0x20 load device configuration | ||||
|  | ||||
| @ -5,6 +5,7 @@ | ||||
| #include <esp_event_loop.h>  // needed for Wifi event handler | ||||
| #include <esp32-hal-timer.h> // needed for timers | ||||
| #include <esp_coexist.h>     // needed for coex version display | ||||
| #include <esp_wifi.h>        // needed for wifi init / deinit | ||||
| 
 | ||||
| #include "globals.h" | ||||
| #include "reset.h" | ||||
|  | ||||
| @ -22,6 +22,7 @@ void sendData(void); | ||||
| void checkSendQueues(void); | ||||
| void flushQueues(void); | ||||
| bool allQueuesEmtpy(void); | ||||
| void setSendIRQ(void); | ||||
| void setSendIRQ(TimerHandle_t xTimer = NULL); | ||||
| void initSendDataTimer(uint8_t sendcycle); | ||||
| 
 | ||||
| #endif // _SENDDATA_H_
 | ||||
|  | ||||
| @ -281,8 +281,9 @@ void setup() { | ||||
|   if (RTC_runmode == RUNMODE_MAINTENANCE) | ||||
|     start_boot_menu(); | ||||
| 
 | ||||
| #if ((WIFICOUNTER) || (BLECOUNTER)) | ||||
|   // use libpax timer to trigger cyclic senddata
 | ||||
|   ESP_LOGI(TAG, "Starting libpax..."); | ||||
| #if (defined WIFICOUNTER || defined BLECOUNTER) | ||||
|   struct libpax_config_t configuration; | ||||
|   libpax_default_config(&configuration); | ||||
| 
 | ||||
| @ -304,6 +305,9 @@ void setup() { | ||||
|   } else { | ||||
|     init_libpax(); | ||||
|   } | ||||
| #else | ||||
|   // use stand alone timer to trigger cyclic senddata
 | ||||
|   initSendDataTimer(cfg.sendcycle * 2); | ||||
| #endif | ||||
| 
 | ||||
| #if (BLECOUNTER) | ||||
|  | ||||
| @ -55,27 +55,38 @@ void set_reset(uint8_t val[]) { | ||||
| 
 | ||||
| void set_rssi(uint8_t val[]) { | ||||
|   cfg.rssilimit = val[0] * -1; | ||||
| #if ((WIFICOUNTER) || (BLECOUNTER)) | ||||
|   libpax_counter_stop(); | ||||
|   libpax_config_t current_config; | ||||
|   libpax_get_current_config(¤t_config); | ||||
|   current_config.wifi_rssi_threshold = cfg.rssilimit; | ||||
|   libpax_update_config(¤t_config); | ||||
|   init_libpax(); | ||||
| #endif | ||||
|   ESP_LOGI(TAG, "Remote command: set RSSI limit to %d", cfg.rssilimit); | ||||
| } | ||||
| 
 | ||||
| void set_sendcycle(uint8_t val[]) { | ||||
|   cfg.sendcycle = val[0]; | ||||
|   if (val[0] < 5) | ||||
|     return; | ||||
|   // update send cycle interrupt [seconds / 2]
 | ||||
|   cfg.sendcycle = val[0]; | ||||
|   ESP_LOGI(TAG, "Remote command: set send cycle to %d seconds", | ||||
|            cfg.sendcycle * 2); | ||||
| #if ((WIFICOUNTER) || (BLECOUNTER)) | ||||
|   libpax_counter_stop(); | ||||
|   init_libpax(); | ||||
| #else | ||||
|   // modify senddata timer
 | ||||
|   initSendDataTimer(cfg.sendcycle * 2); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void set_sleepcycle(uint8_t val[]) { | ||||
|   // swap byte order from msb to lsb, note: this is a platform dependent hack
 | ||||
|   uint16_t t = __builtin_bswap16(*(uint16_t *)(val)); | ||||
|   if (t == 0) | ||||
|     return; | ||||
|   cfg.sleepcycle = t; | ||||
|   ESP_LOGI(TAG, "Remote command: set sleep cycle to %d seconds", | ||||
|            cfg.sleepcycle * 10); | ||||
| @ -83,6 +94,7 @@ void set_sleepcycle(uint8_t val[]) { | ||||
| 
 | ||||
| void set_wifichancycle(uint8_t val[]) { | ||||
|   cfg.wifichancycle = val[0]; | ||||
| #if (WIFICOUNTER) | ||||
|   libpax_counter_stop(); | ||||
|   libpax_config_t current_config; | ||||
|   libpax_get_current_config(¤t_config); | ||||
| @ -100,16 +112,19 @@ void set_wifichancycle(uint8_t val[]) { | ||||
|   current_config.wifi_channel_switch_interval = cfg.wifichancycle; | ||||
|   libpax_update_config(¤t_config); | ||||
|   init_libpax(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void set_blescantime(uint8_t val[]) { | ||||
|   cfg.blescantime = val[0]; | ||||
| #if (BLECOUNTER) | ||||
|   libpax_counter_stop(); | ||||
|   libpax_config_t current_config; | ||||
|   libpax_get_current_config(¤t_config); | ||||
|   current_config.blescantime = cfg.blescantime; | ||||
|   libpax_update_config(¤t_config); | ||||
|   init_libpax(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void set_countmode(uint8_t val[]) { | ||||
| @ -257,24 +272,28 @@ void set_loraadr(uint8_t val[]) { | ||||
| void set_blescan(uint8_t val[]) { | ||||
|   ESP_LOGI(TAG, "Remote command: set BLE scanner to %s", val[0] ? "on" : "off"); | ||||
|   cfg.blescan = val[0] ? 1 : 0; | ||||
| #if (BLECOUNTER) | ||||
|   libpax_counter_stop(); | ||||
|   libpax_config_t current_config; | ||||
|   libpax_get_current_config(¤t_config); | ||||
|   current_config.blecounter = cfg.blescan; | ||||
|   libpax_update_config(¤t_config); | ||||
|   init_libpax(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void set_wifiscan(uint8_t val[]) { | ||||
|   ESP_LOGI(TAG, "Remote command: set WIFI scanner to %s", | ||||
|            val[0] ? "on" : "off"); | ||||
|   cfg.wifiscan = val[0] ? 1 : 0; | ||||
| #if (WIFICOUNTER) | ||||
|   libpax_counter_stop(); | ||||
|   libpax_config_t current_config; | ||||
|   libpax_get_current_config(¤t_config); | ||||
|   current_config.wificounter = cfg.wifiscan; | ||||
|   libpax_update_config(¤t_config); | ||||
|   init_libpax(); | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| void set_wifiant(uint8_t val[]) { | ||||
|  | ||||
| @ -1,7 +1,22 @@ | ||||
| // Basic Config
 | ||||
| #include "senddata.h" | ||||
| 
 | ||||
| void setSendIRQ() { xTaskNotify(irqHandlerTask, SENDCYCLE_IRQ, eSetBits); } | ||||
| void setSendIRQ(TimerHandle_t xTimer) { | ||||
|   xTaskNotify(irqHandlerTask, SENDCYCLE_IRQ, eSetBits); | ||||
| } | ||||
| 
 | ||||
| void initSendDataTimer(uint8_t sendcycle) { | ||||
|   static TimerHandle_t SendDataTimer = NULL; | ||||
| 
 | ||||
|   if (SendDataTimer == NULL) { | ||||
|     SendDataTimer = | ||||
|         xTimerCreate("SendDataTimer", pdMS_TO_TICKS(sendcycle * 1000), pdTRUE, | ||||
|                      (void *)0, setSendIRQ); | ||||
|     xTimerStart(SendDataTimer, 0); | ||||
|   } else { | ||||
|     xTimerChangePeriod(SendDataTimer, pdMS_TO_TICKS(sendcycle * 1000), 0); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| // put data to send in RTos Queues used for transmit over channels Lora and SPI
 | ||||
| void SendPayload(uint8_t port) { | ||||
| @ -86,8 +101,7 @@ void sendData() { | ||||
|       ESP_LOGI(TAG, "Sending libpax wifi count: %d", libpax_macs_wifi); | ||||
|       payload.addCount(libpax_macs_wifi, MAC_SNIFF_WIFI); | ||||
|       if (cfg.blescan) { | ||||
|         ESP_LOGI(TAG, "Sending libpax ble count: %d", | ||||
|                  libpax_macs_ble); | ||||
|         ESP_LOGI(TAG, "Sending libpax ble count: %d", libpax_macs_ble); | ||||
|         payload.addCount(libpax_macs_ble, MAC_SNIFF_BLE); | ||||
|       } | ||||
| #endif | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user