double wx packet transmit on configuration request

pull/7/head
Mateusz Lubecki 2021-09-23 10:07:10 +02:00
rodzic f1a661ff3f
commit 390d0e2cb4
14 zmienionych plików z 58 dodań i 15 usunięć

Wyświetl plik

@ -23,9 +23,9 @@ C_SRCS += \
../src/pwr_switch.c \
../src/rte_main.c \
../src/rte_pv.c \
../src/rte_pwr.c \
../src/rte_rtu.c \
../src/rte_wx.c \
../src/rtu_pwr.c \
../src/wx_handler.c \
../src/wx_handler_humidity.c \
../src/wx_handler_pressure.c \
@ -51,9 +51,9 @@ OBJS += \
./src/pwr_switch.o \
./src/rte_main.o \
./src/rte_pv.o \
./src/rte_pwr.o \
./src/rte_rtu.o \
./src/rte_wx.o \
./src/rtu_pwr.o \
./src/wx_handler.o \
./src/wx_handler_humidity.o \
./src/wx_handler_pressure.o \
@ -79,9 +79,9 @@ C_DEPS += \
./src/pwr_switch.d \
./src/rte_main.d \
./src/rte_pv.d \
./src/rte_pwr.d \
./src/rte_rtu.d \
./src/rte_wx.d \
./src/rtu_pwr.d \
./src/wx_handler.d \
./src/wx_handler_humidity.d \
./src/wx_handler_pressure.d \

Wyświetl plik

@ -108,6 +108,8 @@ typedef struct config_data_basic_t {
uint8_t beacon_transmit_period;
uint8_t wx_double_transmit;
} config_data_basic_t;
typedef enum config_data_wx_sources_enum_t {

Wyświetl plik

@ -20,6 +20,7 @@ typedef struct packet_tx_counter_values_t {
} packet_tx_counter_values_t;
void packet_tx_send_wx_frame(void);
void packet_tx_configure(uint8_t meteo_interval, uint8_t beacon_interval, config_data_powersave_mode_t powersave);
void packet_tx_handler(const config_data_basic_t * const config_basic, const config_data_mode_t * const config_mode);
void packet_tx_get_current_counters(packet_tx_counter_values_t * out);

Wyświetl plik

@ -12,5 +12,7 @@ extern uint32_t rte_main_hardfault_lr, rte_main_hardfault_pc;
extern uint8_t rte_main_trigger_status;
extern uint8_t rte_main_trigger_modbus_status;
extern uint8_t rte_main_trigger_wx_packet;
#endif

Wyświetl plik

@ -173,9 +173,15 @@ volatile const config_data_basic_t config_data_basic_default = {
.beacon_transmit_period = _BCN_INTERVAL,
#ifdef _BCN_ON_STARTUP
.beacon_at_bootup = 1
.beacon_at_bootup = 1,
#else
.beacon_at_bootup = 0
.beacon_at_bootup = 0,
#endif
#ifdef _WX_DOUBLE_TRANSMIT
.wx_double_transmit = 1
#else
.wx_double_transmit = 0
#endif
};

Wyświetl plik

@ -176,12 +176,18 @@ const config_data_basic_t __attribute__((section(".config_section_first.basic"))
.beacon_transmit_period = _BCN_INTERVAL,
#ifdef _BCN_ON_STARTUP
.beacon_at_bootup = 1
.beacon_at_bootup = 1,
#else
.beacon_at_bootup = 0
.beacon_at_bootup = 0,
#endif
#ifdef _WX_DOUBLE_TRANSMIT
.wx_double_transmit = 1
#else
.wx_double_transmit = 0
#endif
};
/**

Wyświetl plik

@ -170,12 +170,18 @@ const config_data_basic_t __attribute__((section(".config_section_second.basic")
.beacon_transmit_period = _BCN_INTERVAL,
#ifdef _BCN_ON_STARTUP
.beacon_at_bootup = 1
.beacon_at_bootup = 1,
#else
.beacon_at_bootup = 0
.beacon_at_bootup = 0,
#endif
#ifdef _WX_DOUBLE_TRANSMIT
.wx_double_transmit = 1
#else
.wx_double_transmit = 0
#endif
};
/**

Wyświetl plik

@ -12,7 +12,7 @@
#ifdef STM32F10X_MD_VL
#include <stm32f10x.h>
#include <drivers/gpio_conf_stm32f1x.h>
#include <drivers/f1/gpio_conf_stm32f1x.h>
#endif
#ifdef STM32L471xx
#include <stm32l4xx.h>

Wyświetl plik

@ -4,7 +4,7 @@
#include <stm32f10x_rcc.h>
#include <stm32f10x_iwdg.h>
#include <stm32f10x.h>
#include <drivers/gpio_conf_stm32f1x.h>
#include <drivers/f1/gpio_conf_stm32f1x.h>
#endif
#ifdef STM32L471xx
@ -138,7 +138,7 @@ int8_t main_cpu_load = 0;
int32_t main_wx_sensors_pool_timer = 65500;
// global variable used as a timer to trigger packet sending
int32_t main_one_minute_pool_timer = 60000;
int32_t main_one_minute_pool_timer = 45000;
// one second pool interval
int32_t main_one_second_pool_timer = 1000;
@ -1095,6 +1095,13 @@ int main(int argc, char* argv[]){
if (main_ten_second_pool_timer < 10) {
if (rte_main_trigger_wx_packet == 1) {
packet_tx_send_wx_frame();
rte_main_trigger_wx_packet = 0;
}
#ifdef STM32L471xx
// inhibit any power save switching when modem transmits data
if (!main_afsk.sending) {

Wyświetl plik

@ -45,6 +45,13 @@ uint8_t packet_tx_modbus_status = (uint8_t)(_TELEM_DESCR_INTERVAL - _WX_INTERVAL
uint8_t packet_tx_more_than_one = 0;
void packet_tx_send_wx_frame(void) {
main_wait_for_tx_complete();
SendWXFrame(rte_wx_average_windspeed, rte_wx_max_windspeed, rte_wx_average_winddirection, rte_wx_temperature_average_external_valid, rte_wx_pressure_valid, rte_wx_humidity_valid);
}
void packet_tx_configure(uint8_t meteo_interval, uint8_t beacon_interval, config_data_powersave_mode_t powersave) {
packet_tx_meteo_interval = meteo_interval;
@ -131,6 +138,10 @@ void packet_tx_handler(const config_data_basic_t * const config_basic, const con
io_ext_watchdog_service();
#endif
if (main_config_data_basic->wx_double_transmit == 1) {
rte_main_trigger_wx_packet = 1;
}
packet_tx_meteo_counter = 0;
}

Wyświetl plik

@ -14,3 +14,5 @@ uint8_t rte_main_boot_cycles = 0, rte_main_hard_faults = 0;
uint8_t rte_main_trigger_status = 0;
uint8_t rte_main_trigger_modbus_status = 0;
uint8_t rte_main_trigger_wx_packet = 0;

Wyświetl plik

@ -7,7 +7,7 @@
#ifdef STM32F10X_MD_VL
#include <stm32f10x.h>
#include "antilib_gpio.h"
//#include "antilib_gpio.h"
#endif

Wyświetl plik

@ -26,7 +26,7 @@
#ifdef STM32F10X_MD_VL
#include <stm32f10x_tim.h>
#include <stm32f10x_dma.h>
#include <drivers/gpio_conf_stm32f1x.h>
#include <drivers/f1/gpio_conf_stm32f1x.h>
#endif
#ifdef STM32L471xx
#include <stm32l4xx.h>

Wyświetl plik

@ -1,4 +1,4 @@
#include <drivers/gpio_conf_stm32f1x.h>
#include <drivers/f1/gpio_conf_stm32f1x.h>
#include "drivers/serial.h"
#include "station_config.h"
#include "diag/Trace.h"