Porównaj commity

...

4 Commity

10 zmienionych plików z 112 dodań i 69 usunięć

Wyświetl plik

@ -58,6 +58,6 @@
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;&#10;"/>
<stringAttribute key="org.eclipse.embedcdt.debug.gdbjtag.core.PERIPHERALS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;peripherals&gt;&#10; &lt;peripheral name=&quot;IWDG&quot;/&gt;&#10; &lt;peripheral name=&quot;DBGMCU&quot;/&gt;&#10; &lt;peripheral name=&quot;GPIOC&quot;/&gt;&#10;&lt;/peripherals&gt;&#10;"/>
<stringAttribute key="org.eclipse.embedcdt.debug.gdbjtag.core.PERIPHERALS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;peripherals&gt;&#10; &lt;peripheral name=&quot;IWDG&quot;/&gt;&#10; &lt;peripheral name=&quot;DBGMCU&quot;/&gt;&#10; &lt;peripheral name=&quot;USART3&quot;/&gt;&#10;&lt;/peripherals&gt;&#10;"/>
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
</launchConfiguration>

Wyświetl plik

@ -97,7 +97,7 @@ telemetry_description_t aprsis_send_description_telemetry(uint8_t async,
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_loginstring(const char * callsign_with_ssid);
void aprsis_send_loginstring(const char * callsign_with_ssid, uint8_t rtc_ok);
void aprsis_send_gpsstatus(const char * callsign_with_ssid);
char * aprsis_get_tx_buffer(void);

Wyświetl plik

@ -94,8 +94,8 @@
* | DIGI + WX + GSM | PWSAVE_AGGRESV | C2 --- (1 minute before WX frame)---> C0 -> C2 ; no matter WX_INTERVAL |
* | WX + GSM | PWSAVE_NONE | C0 |
* | WX + GSM | PWSAVE_NORMAL | M4 --- (1 minute before WX frame)---> C0 -> M4 |
* | WX + GSM (only) | PWSAVE_AGGRESV | L6 --- (1 minute before WX frame)---> C0 -> L6 ; if WX_INTERVAL < 5 minutes |
* | WX + GSM (only) | PWSAVE_AGGRESV | L7 --- (1 minute before WX frame)---> M4 --- (30 sec before)---> C0 -> L7 |
* | WX + GSM (only) | PWSAVE_AGGRESV | L6 --- (2 minute before WX frame)---> C0 -> L6 ; if WX_INTERVAL < 5 minutes |
* | WX + GSM (only) | PWSAVE_AGGRESV | L7 --- (2 minute before WX frame)---> M4 --- (30 sec before)---> C0 -> L7 |
* | WX | PWSAVE_NONE | M4 --- (2 minute before WX frame)---> C1 -> M4 |
* | WX | PWSAVE_NORMAL | L7 --- (2 minute before WX frame)---> C1 -> L7 |
* | WX | PWSAVE_AGGRESV | L7 --- (1 minute before WX frame)---> M4 --- (30 sec before)---> C1 -> L7 |

Wyświetl plik

@ -9,7 +9,7 @@
#define SOFTWARE_VERSION_H_
#define SW_VER "EB02"
#define SW_DATE "28102023"
#define SW_DATE "29102023"
#define SW_KISS_PROTO "B"
extern const char software_version_str[5];

Wyświetl plik

@ -932,7 +932,7 @@ void aprsis_send_server_conn_status(const char * callsign_with_ssid) {
gsm_sim800_tcpip_async_write((uint8_t *)aprsis_packet_tx_buffer, aprsis_packet_tx_message_size, aprsis_serial_port, aprsis_gsm_modem_state);
}
void aprsis_send_loginstring(const char * callsign_with_ssid) {
void aprsis_send_loginstring(const char * callsign_with_ssid, uint8_t rtc_ok) {
if (aprsis_logged == 0) {
return;
@ -945,9 +945,10 @@ void aprsis_send_loginstring(const char * callsign_with_ssid) {
aprsis_packet_tx_message_size = snprintf(
aprsis_packet_tx_buffer,
APRSIS_TX_BUFFER_LN - 1,
"%s>AKLPRZ,qAR,%s:>[aprsis][]%s\r\n",
"%s>AKLPRZ,qAR,%s:>[rtc_ok: %d][aprsis]%s\r\n",
callsign_with_ssid,
callsign_with_ssid,
rtc_ok,
aprsis_login_string_reveived);
gsm_sim800_tcpip_async_write((uint8_t *)aprsis_packet_tx_buffer, aprsis_packet_tx_message_size, aprsis_serial_port, aprsis_gsm_modem_state);

Wyświetl plik

@ -610,9 +610,14 @@ int main(int argc, char* argv[]){
wx_pwr_switch_periodic_handle();
#if defined(PARAMETEO)
// clear all previous powersave indication bits
backup_reg_reset_all_powersave_states();
// swtich power to M4. turn on sensors but keep GSM modem turned off
pwr_save_switch_mode_to_c1();
rte_main_reset_gsm_modem = 0;
delay_fixed(300);
#endif
@ -1258,7 +1263,7 @@ int main(int argc, char* argv[]){
if (rte_main_trigger_gsm_loginstring_packet == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
rte_main_trigger_gsm_loginstring_packet = 0;
aprsis_send_loginstring((const char *)&main_callsign_with_ssid);
aprsis_send_loginstring((const char *)&main_callsign_with_ssid, system_is_rtc_ok());
}
if (rte_main_trigger_gsm_telemetry_values == 1 && gsm_sim800_tcpip_tx_busy() == 0) {
@ -1515,7 +1520,7 @@ int main(int argc, char* argv[]){
gsm_sim800_initialization_pool(main_gsm_srl_ctx_ptr, &main_gsm_state);
}
if (main_config_data_mode->gsm == 1 && io_get_cntrl_vbat_g() == 1) {
if (main_config_data_mode->gsm == 1 && io_get_cntrl_vbat_g() == 1 && rte_main_woken_up == 0) {
// check if GSM modem must be power-cycled / restarted like after
// waking up from deep sleep or chaning power saving mode
@ -1523,6 +1528,8 @@ int main(int argc, char* argv[]){
// rest the flag
rte_main_reset_gsm_modem = 0;
srl_init(main_gsm_srl_ctx_ptr, USART3, srl_usart3_rx_buffer, RX_BUFFER_3_LN, srl_usart3_tx_buffer, TX_BUFFER_3_LN, 115200, 1);
// reset gsm modem
gsm_sim800_reset(&main_gsm_state);
@ -1651,7 +1658,7 @@ int main(int argc, char* argv[]){
backup_reg_set_monitor(9);
#ifdef PARAMETEO
if (main_config_data_mode->gsm == 1 && io_get_cntrl_vbat_g() == 1) {
if (main_config_data_mode->gsm == 1 && io_get_cntrl_vbat_g() == 1 && rte_main_woken_up == 0) {
gsm_sim800_poolers_ten_seconds(main_gsm_srl_ctx_ptr, &main_gsm_state);
packet_tx_tcp_handler();

Wyświetl plik

@ -508,7 +508,7 @@ void packet_tx_handler(const config_data_basic_t * const config_basic, const con
rx10m,
tx10m,
digi10m,
rte_main_average_battery_voltage,
telemetry_scaled_vbatt_voltage,
digidrop10m,
telemetry_scaled_temperature,
telemetry_qf,

Wyświetl plik

@ -24,6 +24,7 @@
#include "gsm/sim800c.h"
#include "aprsis.h"
#include "it_handlers.h"
#include "main.h"
#include "rte_main.h"
@ -41,6 +42,13 @@
#define MINIMUM_SENSEFUL_VBATT_VOLTAGE 678u
/**
* How long a controller should be woken up in aggressive powersaving mode
* before it will send a frame to APRS-IS and go sleep once again. This should
* be long enought to connect to APRS server and go sleep once again
*/
#define WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES 2
#if defined(STM32L471xx)
int8_t pwr_save_seconds_to_wx = 0;
@ -342,6 +350,9 @@ int pwr_save_switch_mode_to_c1(void) {
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// turn ON +5V_S (and internal VHF radio module in HW-RevB)
io___cntrl_vbat_s_enable();
@ -386,6 +397,9 @@ void pwr_save_switch_mode_to_c2(void) {
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// turn OFF +5V_S (and internal VHF radio module in HW-RevB)
io___cntrl_vbat_s_disable();
@ -464,6 +478,9 @@ int pwr_save_switch_mode_to_m4(void) {
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// turn ON +5V_S (and internal VHF radio module in HW-RevB)
io___cntrl_vbat_s_enable();
@ -543,6 +560,9 @@ void pwr_save_switch_mode_to_i5(void) {
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// turn OFF +5V_S (and internal VHF radio module in HW-RevB)
io___cntrl_vbat_s_disable();
@ -599,6 +619,20 @@ void pwr_save_switch_mode_to_l6(uint16_t sleep_time) {
backup_reg_set_monitor(28);
// turn off leds to save power
it_handlers_inhibit_radiomodem_dcd_led = 1;
led_control_led1_upper(false);
led_control_led2_bottom(false);
led_deinit();
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
NVIC_DisableIRQ( USART3_IRQn );
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// disable ADC used for vbat measurement
io_vbat_meas_disable();
@ -651,12 +685,6 @@ void pwr_save_switch_mode_to_l6(uint16_t sleep_time) {
// save how long the micro will sleep - required for handling wakeup event
pwr_save_sleep_time_in_seconds = sleep_time;
// turn off leds to save power
it_handlers_inhibit_radiomodem_dcd_led = 1;
led_control_led1_upper(false);
led_control_led2_bottom(false);
led_deinit();
pwr_save_enter_stop2();
backup_reg_set_monitor(27);
@ -689,9 +717,18 @@ void pwr_save_switch_mode_to_l7(uint16_t sleep_time) {
backup_reg_set_monitor(26);
// turn off leds to save power
it_handlers_inhibit_radiomodem_dcd_led = 1;
led_control_led1_upper(false);
led_control_led2_bottom(false);
led_deinit();
// disconnect APRS-IS connection if it is established
aprsis_disconnect();
// close and deconfigure port used for communication with GPRS module
srl_close(main_gsm_srl_ctx_ptr);
// disable ADC used for vbat measurement
io_vbat_meas_disable();
@ -740,12 +777,6 @@ void pwr_save_switch_mode_to_l7(uint16_t sleep_time) {
// save how long the micro will sleep - required for handling wakeup event
pwr_save_sleep_time_in_seconds = sleep_time;
// turn off leds to save power
it_handlers_inhibit_radiomodem_dcd_led = 1;
led_control_led1_upper(false);
led_control_led2_bottom(false);
led_deinit();
pwr_save_enter_stop2();
backup_reg_set_monitor(25);
@ -799,8 +830,6 @@ void pwr_save_init(config_data_powersave_mode_t mode) {
}
//pwr_save_unclock_rtc_backup_regs();
// reset a status register
backup_reg_reset_all_powersave_states();
backup_reg_reset_inhibit_periodic_pwr_switch();
@ -825,7 +854,9 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
uint16_t vbatt_current) {
// this function should be called from 10 seconds pooler
int reinit_sensors = 0;
int8_t reinit_sensors = 0;
int8_t reinit_gprs = 0;
packet_tx_counter_values_t counters;
@ -989,6 +1020,8 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
if (timers->wx_transmit_period >= 5) {
if (minutes_to_wx > 1) {
pwr_save_switch_mode_to_c2();
//reinit_gprs = 1;
}
else {
reinit_sensors = pwr_save_switch_mode_to_c0();
@ -1007,6 +1040,8 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
if (minutes_to_wx > 1) {
if (config->powersave_keep_gsm_always_enabled == 0){
reinit_sensors = pwr_save_switch_mode_to_m4();
//reinit_gprs = 1;
}
else {
reinit_sensors = pwr_save_switch_mode_to_m4a();
@ -1028,11 +1063,14 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
}
}
else { // WX
if (minutes_to_wx > 2) {
if (minutes_to_wx > WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES) {
backup_reg_set_monitor(17);
// if there is more than two minutes to send wx packet
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - 120);
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - (WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES * 60));
// GSM module is kept turned on, but the connection must be reastablished
reinit_gprs = 1;
}
else {
// TODO: Workaround here for HW-RevB!!!
@ -1062,6 +1100,8 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
if (config->digi == 1) { // DIGI + WX + GSM
if (minutes_to_wx > 1) {
pwr_save_switch_mode_to_c2();
//reinit_gprs = 1;
}
else {
reinit_sensors = pwr_save_switch_mode_to_c0();
@ -1072,11 +1112,14 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
if (timers->wx_transmit_period >= 5) {
// if stations is configured to send wx packet less frequent than every 5 minutes
if (minutes_to_wx > 1) {
if (minutes_to_wx > WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES) {
backup_reg_set_monitor(17);
// if there is more than one minute to wx packet
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - 60); // TODO: !!!
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - (WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES * 60)); // TODO: !!!
reinit_gprs = 1;
}
else {
if (pwr_save_seconds_to_wx <= 50) {
@ -1087,6 +1130,8 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
// if there is 30 to 60 seconds to next wx packet
if (config->powersave_keep_gsm_always_enabled == 0){
reinit_sensors = pwr_save_switch_mode_to_m4();
//reinit_gprs = 1;
}
else {
reinit_sensors = pwr_save_switch_mode_to_m4a();
@ -1097,10 +1142,12 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
else {
// if station is configured to sent wx packet in every 5 minutes or more often
if (minutes_to_wx > 1) {
if (minutes_to_wx > WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES) {
backup_reg_set_monitor(17);
pwr_save_switch_mode_to_l6((timers->wx_transmit_period * 60) - 60); // TODO: !!!
pwr_save_switch_mode_to_l6((timers->wx_transmit_period * 60) - (WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES * 60)); // TODO: !!!
reinit_gprs = 0;
}
else {
reinit_sensors = pwr_save_switch_mode_to_c0();
@ -1119,11 +1166,13 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
}
}
else { // WX
if (minutes_to_wx > 1) {
if (minutes_to_wx > WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES) {
backup_reg_set_monitor(17);
// if there is more than one minute to send wx packet
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - 60);
pwr_save_switch_mode_to_l7((timers->wx_transmit_period * 60) - (WAKEUP_PERIOD_BEFORE_WX_FRAME_IN_MINUTES * 60));
reinit_gprs = 1;
}
else {
if (pwr_save_seconds_to_wx <= 30) {
@ -1160,13 +1209,15 @@ config_data_powersave_mode_t pwr_save_pooling_handler( const config_data_mode_t
backup_reg_set_monitor(13);
if (reinit_gprs != 0) {
// reset GSM modem, internally this also check if GSM modem is inhibited or not
rte_main_reset_gsm_modem = 1;
}
if (reinit_sensors != 0) {
// reinitialize all i2c sensors
wx_force_i2c_sensor_reset = 1;
// reset GSM modem, internally this also check if GSM modem is inhibited or not
rte_main_reset_gsm_modem = 1;
// reinitialize everything realted to anemometer
analog_anemometer_init(main_config_data_mode->wx_anemometer_pulses_constant, 38, 100, 1);
}

Wyświetl plik

@ -67,6 +67,7 @@ extern char telemetry_anemometer_degradated;
extern char telemetry_anemometer_navble;
extern char telemetry_vbatt_low;
extern uint8_t telemetry_scaled_temperature;
extern uint8_t telemetry_scaled_vbatt_voltage;
void telemetry_init(void);

Wyświetl plik

@ -38,6 +38,8 @@ char telemetry_vbatt_low = '0';
// could send Dallas DS18B20 masurements if this is enabled in station_config.h
uint8_t telemetry_scaled_temperature = 0;
uint8_t telemetry_scaled_vbatt_voltage = 0;
void telemetry_init(void) {
telemetry_counter = backup_reg_get_telemetry();
}
@ -54,22 +56,10 @@ int telemetry_create_description_string(const config_data_basic_t * const config
sprintf(message_prefix_buffer, "%s-%d", config_basic->callsign, config_basic->ssid);
int is_viscous = 1;
if (variant_validate_is_within_ram((uint32_t)out) == 0) {
return out_size;
}
// if (variant_validate_is_within_ram((uint32_t)config_mode) == 0) {
// is_viscous = 0;
// }
// else if (config_mode->digi_viscous == 0) {
// is_viscous = 0;
// }
// else {
// ;
// }
switch (what) {
case TELEMETRY_PV_PARM: {
@ -115,20 +105,15 @@ int telemetry_create_description_string(const config_data_basic_t * const config
case TELEMETRY_NORMAL_PARAM : {
if (is_viscous == 0) {
// prepare a frame with channel names depending on SSID
if (config_basic->ssid == 0)
out_size = snprintf(out, out_ln, ":%-6s :PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", config_basic->callsign);
else if (config_basic->ssid > 0 && config_basic->ssid < 10)
out_size = snprintf(out, out_ln, ":%-9s:PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", message_prefix_buffer);
else if (config_basic->ssid >= 10 && config_basic->ssid < 16)
out_size = snprintf(out, out_ln, ":%-9s:PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", message_prefix_buffer);
else
return out_size;
}
else {
}
// prepare a frame with channel names depending on SSID
if (config_basic->ssid == 0)
out_size = snprintf(out, out_ln, ":%-6s :PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", config_basic->callsign);
else if (config_basic->ssid > 0 && config_basic->ssid < 10)
out_size = snprintf(out, out_ln, ":%-9s:PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", message_prefix_buffer);
else if (config_basic->ssid >= 10 && config_basic->ssid < 16)
out_size = snprintf(out, out_ln, ":%-9s:PARM.Rx10min,Tx10min,Digi10min,Vbatt,Tempre,DS_QF_FULL,DS_QF_DEGRAD,DS_QF_NAVBLE,QNH_QF_NAVBLE,HUM_QF_NAVBLE,WIND_QF_DEGR,WIND_QF_NAVB,VBATT_LOW", message_prefix_buffer);
else
return out_size;
break;
}
@ -418,15 +403,13 @@ void telemetry_send_values( uint8_t rx_pkts,
int8_t cutoff_and_vbat_low,
const config_data_mode_t * const config_mode) {
uint8_t scaled_vbatt_voltage = 0;
// this is B+ voltage, which is scaled * 100 what means that 1152 equals to 11.52V
if (vbatt_voltage < 1511 && vbatt_voltage > 1000) {
// mininum value will be 10.01V (0x0) and maximum 15.11V (0xFF), with the step of .02V
scaled_vbatt_voltage = (uint8_t)((vbatt_voltage - 1000u) / 2u);
telemetry_scaled_vbatt_voltage = (uint8_t)((vbatt_voltage - 1000u) / 2u);
}
else if (vbatt_voltage > 1510) {
scaled_vbatt_voltage = 0xFF;
telemetry_scaled_vbatt_voltage = 0xFF;
}
else {
;
@ -524,10 +507,10 @@ void telemetry_send_values( uint8_t rx_pkts,
#ifdef PARAMETEO
if (config_mode->digi_viscous == 0) {
// generate the telemetry frame from values
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "T#%03d,%03d,%03d,%03d,%03d,%03d,%c%c%c%c%c%c%c%c", telemetry_counter++, rx_pkts, tx_pkts, digi_pkts, scaled_vbatt_voltage, telemetry_scaled_temperature, telemetry_qf, telemetry_degr, telemetry_nav, telemetry_pressure_qf_navaliable, telemetry_humidity_qf_navaliable, telemetry_anemometer_degradated, telemetry_anemometer_navble, telemetry_vbatt_low);
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "T#%03d,%03d,%03d,%03d,%03d,%03d,%c%c%c%c%c%c%c%c", telemetry_counter++, rx_pkts, tx_pkts, digi_pkts, telemetry_scaled_vbatt_voltage, telemetry_scaled_temperature, telemetry_qf, telemetry_degr, telemetry_nav, telemetry_pressure_qf_navaliable, telemetry_humidity_qf_navaliable, telemetry_anemometer_degradated, telemetry_anemometer_navble, telemetry_vbatt_low);
}
else {
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "T#%03d,%03d,%03d,%03d,%03d,%03d,%c%c%c%c%c%c%c%c", telemetry_counter++, rx_pkts, viscous_drop_pkts, digi_pkts, scaled_vbatt_voltage, telemetry_scaled_temperature, telemetry_qf, telemetry_degr, telemetry_nav, telemetry_pressure_qf_navaliable, telemetry_humidity_qf_navaliable, telemetry_anemometer_degradated, telemetry_anemometer_navble, telemetry_vbatt_low);
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "T#%03d,%03d,%03d,%03d,%03d,%03d,%c%c%c%c%c%c%c%c", telemetry_counter++, rx_pkts, viscous_drop_pkts, digi_pkts, telemetry_scaled_vbatt_voltage, telemetry_scaled_temperature, telemetry_qf, telemetry_degr, telemetry_nav, telemetry_pressure_qf_navaliable, telemetry_humidity_qf_navaliable, telemetry_anemometer_degradated, telemetry_anemometer_navble, telemetry_vbatt_low);
}
#else
if (config_mode->digi_viscous == 0) {