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