diff --git a/include/aprsis.h b/include/aprsis.h index 0809c75..96785e4 100644 --- a/include/aprsis.h +++ b/include/aprsis.h @@ -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); diff --git a/include/main.h b/include/main.h index 53e3187..71fb107 100644 --- a/include/main.h +++ b/include/main.h @@ -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 diff --git a/include/rte_main.h b/include/rte_main.h index ce6368c..49ce2a9 100644 --- a/include/rte_main.h +++ b/include/rte_main.h @@ -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; diff --git a/include/software_version.h b/include/software_version.h index 865c0f4..ed5047f 100644 --- a/include/software_version.h +++ b/include/software_version.h @@ -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]; diff --git a/include/variant.h b/include/variant.h index c1780c0..9a49a94 100644 --- a/include/variant.h +++ b/include/variant.h @@ -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_ */ diff --git a/src/aprsis.c b/src/aprsis.c index 8baaddb..49c6d93 100644 --- a/src/aprsis.c +++ b/src/aprsis.c @@ -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; } diff --git a/src/main.c b/src/main.c index 17a88ec..b8b9d99 100644 --- a/src/main.c +++ b/src/main.c @@ -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; + } } diff --git a/src/rte_main.c b/src/rte_main.c index 721d219..58c1e16 100644 --- a/src/rte_main.c +++ b/src/rte_main.c @@ -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; diff --git a/src/variant_parameteo.c b/src/variant_parameteo.c index 461794e..5b42777 100644 --- a/src/variant_parameteo.c +++ b/src/variant_parameteo.c @@ -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; + } +} diff --git a/system/src/aprs/telemetry.c b/system/src/aprs/telemetry.c index e4e0539..eae6279 100644 --- a/system/src/aprs/telemetry.c +++ b/system/src/aprs/telemetry.c @@ -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) {