SP8EBC-ParaTNC/include/main.h

154 wiersze
3.6 KiB
C

2017-08-20 12:41:17 +00:00
#ifndef MAIN_H_
#define MAIN_H_
2023-06-30 21:01:36 +00:00
#include <stored_configuration_nvm/config_data.h>
#include "main_master_time.h"
2022-04-20 20:53:10 +00:00
#include "station_config_target_hw.h"
2017-08-20 12:41:17 +00:00
#include "aprs/ax25.h"
#include "drivers/serial.h"
#include "gsm/sim800_state_t.h"
2017-08-20 12:41:17 +00:00
#include "software_version.h"
2019-01-27 11:34:43 +00:00
#define SYSTICK_TICKS_PER_SECONDS 100
#define SYSTICK_TICKS_PERIOD 10
//#define INTERNAL_WATCHDOG
//#define EXTERNAL_WATCHDOG
#define PWR_SWITCH_BOTH
#define OWN_APRS_MSG_LN 256u
2022-09-20 18:58:11 +00:00
typedef enum main_usart_mode_t {
USART_MODE_UNDEF,
USART_MODE_KISS,
USART_MODE_VICTRON,
USART_MODE_DUST_SDS,
USART_MODE_DAVIS,
USART_MODE_MODBUS,
USART_MODE_UMB_MASTER,
USART_MODE_UNINIT
}main_usart_mode_t;
extern const config_data_mode_t * main_config_data_mode;
extern const config_data_basic_t * main_config_data_basic;
extern const config_data_wx_sources_t * main_config_data_wx_sources;
extern const config_data_umb_t * main_config_data_umb;
extern const config_data_rtu_t * main_config_data_rtu;
#ifdef PARAMETEO
extern const config_data_gsm_t * main_config_data_gsm;
#endif
2019-01-27 13:23:20 +00:00
extern int32_t main_wx_sensors_pool_timer;
extern int32_t main_one_minute_pool_timer;
extern int32_t main_one_second_pool_timer;
extern int32_t main_two_second_pool_timer;
extern int32_t main_ten_second_pool_timer;
2019-01-26 17:02:19 +00:00
2019-01-26 22:18:25 +00:00
extern AX25Ctx main_ax25;
extern Afsk main_afsk;
2017-08-20 12:41:17 +00:00
2019-01-27 11:34:43 +00:00
extern AX25Call main_own_path[3];
extern uint8_t main_own_path_ln;
extern uint8_t main_own_aprs_msg_len;
extern char main_own_aprs_msg[OWN_APRS_MSG_LN];
2017-08-20 12:41:17 +00:00
extern char main_string_latitude[9];
extern char main_string_longitude[9];
2023-06-16 20:30:20 +00:00
extern char main_callsign_with_ssid[10];
extern char main_symbol_f;
extern char main_symbol_s;
extern srl_context_t* main_kiss_srl_ctx_ptr;
extern srl_context_t* main_wx_srl_ctx_ptr;
extern srl_context_t* main_gsm_srl_ctx_ptr;
2021-03-22 21:28:26 +00:00
extern uint8_t main_kiss_enabled;
extern uint8_t main_woken_up;
2022-04-29 14:29:37 +00:00
extern int8_t main_cpu_load;
2023-11-26 08:06:57 +00:00
extern const float main_test_float;
extern const char main_test_string[11];
2017-08-20 12:41:17 +00:00
extern char after_tx_lock;
2020-08-05 21:27:25 +00:00
extern unsigned short rx10m, tx10m, digi10m, digidrop10m, kiss10m;
2017-08-20 12:41:17 +00:00
extern gsm_sim800_state_t main_gsm_state;
//void main_set_monitor(int8_t bit);
uint16_t main_get_adc_sample(void);
void main_service_cpu_load_ticks(void);
void main_reload_internal_wdg(void);
2022-11-10 17:16:56 +00:00
uint32_t main_get_nvm_timestamp(void);
2022-04-29 14:29:37 +00:00
#if defined(STM32L471xx)
extern uint32_t rte_main_rx_total;
extern uint32_t rte_main_tx_total;
#endif
/**
* Block I/O function which waits for all transmission to end
*/
2019-01-26 22:18:25 +00:00
inline void main_wait_for_tx_complete(void) {
while(main_afsk.sending == 1);
}
/**
* Reset pooling timers values after waking up from deep sleep, to be sure
* than
*/
2022-05-11 16:26:13 +00:00
inline void main_reset_pooling_timers(void) {
main_wx_sensors_pool_timer = 35000;
// global variable used as a timer to trigger packet sending
main_one_minute_pool_timer = 60000;
// one second pool interval
main_one_second_pool_timer = 1000;
// two second pool interval
main_two_second_pool_timer = 2000;
// ten second pool interval
main_ten_second_pool_timer = 10000;
}
inline void main_wx_decremenet_counter(void) {
if (main_wx_sensors_pool_timer > 0)
main_wx_sensors_pool_timer -= SYSTICK_TICKS_PERIOD;
}
inline void main_packets_tx_decremenet_counter(void) {
if (main_one_minute_pool_timer > 0)
main_one_minute_pool_timer -= SYSTICK_TICKS_PERIOD;
}
inline void main_one_second_pool_decremenet_counter(void) {
if (main_one_second_pool_timer > 0)
main_one_second_pool_timer -= SYSTICK_TICKS_PERIOD;
}
inline void main_two_second_pool_decrement_counter(void) {
main_two_second_pool_timer -= SYSTICK_TICKS_PERIOD;
}
inline void main_ten_second_pool_decremenet_counter(void) {
if (main_ten_second_pool_timer > 0)
main_ten_second_pool_timer -= SYSTICK_TICKS_PERIOD;
}
2017-08-20 12:41:17 +00:00
#endif