internal watchdog enabled once again. bugfix in sending telemetry channel descritpions

master EB03
Mateusz Lubecki 2023-11-19 14:20:22 +01:00
rodzic 4ced3c5b39
commit f62de2051a
10 zmienionych plików z 40 dodań i 21 usunięć

Wyświetl plik

@ -96,9 +96,9 @@ telemetry_description_t aprsis_send_description_telemetry(uint8_t async,
const char * callsign_with_ssid);
void aprsis_igate_to_aprsis(AX25Msg *msg, const char * callsign_with_ssid);
void aprsis_send_server_conn_status(const char * callsign_with_ssid);
void aprsis_send_server_comm_counters(const char * callsign_with_ssid);
void aprsis_send_loginstring(const char * callsign_with_ssid, uint8_t rtc_ok, uint16_t voltage);
void aprsis_send_gpsstatus(const char * callsign_with_ssid);
void aprsis_send_gsm_status(const char * callsign_with_ssid);
char * aprsis_get_tx_buffer(void);
uint8_t aprsis_get_aprsis_logged(void);

Wyświetl plik

@ -15,7 +15,7 @@
#define SYSTICK_TICKS_PER_SECONDS 100
#define SYSTICK_TICKS_PERIOD 10
//#define INTERNAL_WATCHDOG
#define INTERNAL_WATCHDOG
#define EXTERNAL_WATCHDOG
#define PWR_SWITCH_BOTH

Wyświetl plik

@ -14,7 +14,7 @@
//!< Set after everything was reinitialized from
#define RTE_MAIN_WOKEN_UP_EXITED 4u
extern uint8_t rte_main_trigger_gsm_status_packet;
extern uint8_t rte_main_trigger_gsm_aprsis_counters_packet;
extern uint8_t rte_main_trigger_gsm_loginstring_packet;
@ -22,7 +22,7 @@ extern uint8_t rte_main_trigger_gsm_telemetry_values;
extern uint8_t rte_main_trigger_gsm_telemetry_descriptions;
extern uint8_t rte_main_trigger_gsm_status_gsm;
extern uint8_t rte_main_trigger_gsm_status;
//!< Trigger some reinitialization after waking up from deep sleep
extern uint8_t rte_main_woken_up;

Wyświetl plik

@ -9,7 +9,7 @@
#define SOFTWARE_VERSION_H_
#define SW_VER "EB03"
#define SW_DATE "16112023"
#define SW_DATE "19112023"
#define SW_KISS_PROTO "B"
extern const char software_version_str[5];

Wyświetl plik

@ -11,7 +11,7 @@
#include "stdint.h"
int variant_validate_is_within_ram(void * address);
int variant_validate_is_within_flash(void * address);
#endif /* VARIANT_H_ */

Wyświetl plik

@ -303,7 +303,7 @@ aprsis_return_t aprsis_connect_and_login(const char * address, uint8_t address_l
aprsis_logged = 1;
// trigger GSM status APRS-IS packet, when connection is ready
rte_main_trigger_gsm_status_gsm = 1;
rte_main_trigger_gsm_status = 1;
// set current timestamp as last
aprsis_last_keepalive_ts = master_time;
@ -906,7 +906,7 @@ void aprsis_igate_to_aprsis(AX25Msg *msg, const char * callsign_with_ssid) {
}
void aprsis_send_server_conn_status(const char * callsign_with_ssid) {
void aprsis_send_server_comm_counters(const char * callsign_with_ssid) {
if (aprsis_logged == 0) {
return;
@ -956,7 +956,7 @@ void aprsis_send_loginstring(const char * callsign_with_ssid, uint8_t rtc_ok, ui
}
void aprsis_send_gpsstatus(const char * callsign_with_ssid) {
void aprsis_send_gsm_status(const char * callsign_with_ssid) {
if (aprsis_logged == 0) {
return;
}

Wyświetl plik

@ -1250,17 +1250,17 @@ int main(int argc, char* argv[]){
gsm_sim800_tx_done_event_handler(main_gsm_srl_ctx_ptr, &main_gsm_state);
}
if (rte_main_trigger_gsm_status_gsm == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
rte_main_trigger_gsm_status_gsm = 0;
if (rte_main_trigger_gsm_status == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
rte_main_trigger_gsm_status = 0;
aprsis_send_gpsstatus((const char *)&main_callsign_with_ssid);
aprsis_send_gsm_status((const char *)&main_callsign_with_ssid);
}
// if GSM status message is triggered and GSM module is not busy transmitting something else
if (rte_main_trigger_gsm_status_packet == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
rte_main_trigger_gsm_status_packet = 0;
if (rte_main_trigger_gsm_aprsis_counters_packet == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
rte_main_trigger_gsm_aprsis_counters_packet = 0;
aprsis_send_server_conn_status((const char *)&main_callsign_with_ssid);
aprsis_send_server_comm_counters((const char *)&main_callsign_with_ssid);
}
// if loginstring packet (APRS status packet with loginstring received from a server)
@ -1478,7 +1478,7 @@ int main(int argc, char* argv[]){
}
if (main_config_data_gsm->aprsis_enable != 0) {
if ((main_config_data_gsm->aprsis_enable != 0) && (main_config_data_mode->gsm == 1)) {
if (pwr_save_is_currently_cutoff() == 0) {
const int i_am_ok_with_aprsis = aprsis_check_connection_attempt_alive();
@ -1503,6 +1503,10 @@ int main(int argc, char* argv[]){
if (system_is_rtc_ok() == 0) {
rte_main_reboot_req = 1;
}
if ((main_config_data_gsm->aprsis_enable != 0) && (main_config_data_mode->gsm == 1)) {
rte_main_trigger_gsm_aprsis_counters_packet = 1;
}
}

Wyświetl plik

@ -18,7 +18,7 @@ uint8_t rte_main_trigger_status = 0;
uint8_t rte_main_trigger_wx_packet = 0;
#ifdef PARAMETEO
uint8_t rte_main_trigger_gsm_status_packet = 0;
uint8_t rte_main_trigger_gsm_aprsis_counters_packet = 0;
//!< Trigger sending status packet with received APRS is login string
uint8_t rte_main_trigger_gsm_loginstring_packet = 0;
@ -30,7 +30,7 @@ uint8_t rte_main_trigger_gsm_telemetry_values = 0;
uint8_t rte_main_trigger_gsm_telemetry_descriptions = 0;
//!<
uint8_t rte_main_trigger_gsm_status_gsm = 0;
uint8_t rte_main_trigger_gsm_status = 0;
//!< Trigger some reinitialization after waking up from deep sleep
uint8_t rte_main_woken_up = 0;

Wyświetl plik

@ -23,3 +23,16 @@ int variant_validate_is_within_ram(void * address) {
return 0;
}
}
int variant_validate_is_within_flash(void * address) {
uint32_t addr_value = (uint32_t)address;
if (addr_value > FLASH_BASE &&
addr_value < FLASH_BANK1_END) {
return 1;
}
else {
return 0;
}
}

Wyświetl plik

@ -326,11 +326,13 @@ void telemetry_send_chns_description(const config_data_basic_t * const config_ba
uint8_t is_viscous = 1;
if (variant_validate_is_within_ram(config_basic) == 0) {
if (variant_validate_is_within_ram(config_basic) == 0 &&
variant_validate_is_within_flash(config_basic) == 0) {
return;
}
if (variant_validate_is_within_ram(config_mode) == 0) {
if (variant_validate_is_within_ram(config_basic) == 0 &&
variant_validate_is_within_flash(config_basic) == 0) {
is_viscous = 0;
}
else if (config_mode->digi_viscous == 0) {