From 421639ff30831ddfd10fa50b507b31c857a337af Mon Sep 17 00:00:00 2001 From: Mateusz Lubecki Date: Sat, 28 Oct 2023 12:35:34 +0200 Subject: [PATCH] telemetry: telemetry description for visous mode handled by separate enum values --- include/software_version.h | 4 +- src/aprsis.c | 5 +- src/kiss_protocol/kiss_callback.c | 3 - src/main.c | 3 + .../configuration_handler.c | 4 +- system/include/aprs/telemetry.h | 5 +- system/src/aprs/digi.c | 1 + system/src/aprs/telemetry.c | 116 ++++++++++++------ 8 files changed, 91 insertions(+), 50 deletions(-) diff --git a/include/software_version.h b/include/software_version.h index f52ee82..e488661 100644 --- a/include/software_version.h +++ b/include/software_version.h @@ -8,8 +8,8 @@ #ifndef SOFTWARE_VERSION_H_ #define SOFTWARE_VERSION_H_ -#define SW_VER "EB01" -#define SW_DATE "27102023" +#define SW_VER "EB02" +#define SW_DATE "28102023" #define SW_KISS_PROTO "B" extern const char software_version_str[5]; diff --git a/src/aprsis.c b/src/aprsis.c index 26454ae..c35ecaf 100644 --- a/src/aprsis.c +++ b/src/aprsis.c @@ -776,6 +776,9 @@ telemetry_description_t aprsis_send_description_telemetry(uint8_t async, case TELEMETRY_NORMAL_PARAM: next = TELEMETRY_NORMAL_EQNS; break; case TELEMETRY_NORMAL_EQNS: next = TELEMETRY_NORMAL_UNIT; break; case TELEMETRY_NORMAL_UNIT: next = TELEMETRY_NOTHING; break; + case TELEMETRY_VISCOUS_PARAM: next = TELEMETRY_VISCOUS_EQNS; break; + case TELEMETRY_VISCOUS_EQNS: next = TELEMETRY_VISCOUS_UNIT; break; + case TELEMETRY_VISCOUS_UNIT: next = TELEMETRY_NOTHING; break; case TELEMETRY_NOTHING: default: next = TELEMETRY_NOTHING; break; } @@ -785,7 +788,7 @@ telemetry_description_t aprsis_send_description_telemetry(uint8_t async, return next; } - telemetry_create_description_string(config_basic, config_mode, what, main_own_aprs_msg, OWN_APRS_MSG_LN); + telemetry_create_description_string(config_basic, what, main_own_aprs_msg, OWN_APRS_MSG_LN); aprsis_tx_counter++; diff --git a/src/kiss_protocol/kiss_callback.c b/src/kiss_protocol/kiss_callback.c index 16dca61..30b5643 100644 --- a/src/kiss_protocol/kiss_callback.c +++ b/src/kiss_protocol/kiss_callback.c @@ -229,9 +229,6 @@ int32_t kiss_callback_read_did(uint8_t* input_frame_from_host, uint16_t input_le int32_t out = 0; - // result to be returned to the host PC - kiss_communication_nrc_t result; - // identifier uint16_t did = *(input_frame_from_host + 2) | (*(input_frame_from_host + 3) << 8); diff --git a/src/main.c b/src/main.c index 0bd31a3..b243d5c 100644 --- a/src/main.c +++ b/src/main.c @@ -1261,6 +1261,9 @@ int main(int argc, char* argv[]){ // set the first packet accordingly main_telemetry_description = TELEMETRY_PV_PARM; } + else if (main_config_data_mode->digi_viscous != 0) { + main_telemetry_description = TELEMETRY_VISCOUS_PARAM; + } else { main_telemetry_description = TELEMETRY_NORMAL_PARAM; } diff --git a/src/stored_configuration_nvm/configuration_handler.c b/src/stored_configuration_nvm/configuration_handler.c index b3c8e9b..97943d5 100644 --- a/src/stored_configuration_nvm/configuration_handler.c +++ b/src/stored_configuration_nvm/configuration_handler.c @@ -379,7 +379,6 @@ uint32_t configuration_handler_restore_default_first(void) { uint32_t out = 0; // loop iterators - int i = 0; int8_t config_struct_it = 0; // source pointer @@ -490,7 +489,6 @@ uint32_t configuration_handler_restore_default_second(void) { uint32_t out = 0; // loop iterators - int i = 0; int8_t config_struct_it = 0; // source pointer @@ -891,5 +889,5 @@ configuration_button_function_t configuration_get_right_button(void) { * @return */ int configuration_get_is_security_access_required(uint8_t medium, uint8_t routine_type) { - + return 0; } diff --git a/system/include/aprs/telemetry.h b/system/include/aprs/telemetry.h index 4a3dfb9..d94c77f 100644 --- a/system/include/aprs/telemetry.h +++ b/system/include/aprs/telemetry.h @@ -52,6 +52,9 @@ typedef enum telemetry_descritpion_t { TELEMETRY_NORMAL_PARAM, TELEMETRY_NORMAL_EQNS, TELEMETRY_NORMAL_UNIT, + TELEMETRY_VISCOUS_PARAM, + TELEMETRY_VISCOUS_EQNS, + TELEMETRY_VISCOUS_UNIT, TELEMETRY_NOTHING }telemetry_description_t; @@ -67,7 +70,7 @@ extern uint8_t telemetry_scaled_temperature; void telemetry_init(void); -int telemetry_create_description_string(const config_data_basic_t * const config_basic, const config_data_mode_t * const config_mode, const telemetry_description_t what, char * out, uint16_t out_ln); +int telemetry_create_description_string(const config_data_basic_t * const config_basic, const telemetry_description_t what, char * out, uint16_t out_ln); #ifdef __cplusplus extern "C" diff --git a/system/src/aprs/digi.c b/system/src/aprs/digi.c index 9e140b8..51698eb 100644 --- a/system/src/aprs/digi.c +++ b/system/src/aprs/digi.c @@ -7,6 +7,7 @@ #include #include +#include #include "aprs/digi.h" #include "main.h" diff --git a/system/src/aprs/telemetry.c b/system/src/aprs/telemetry.c index 32aafc9..fe475d1 100644 --- a/system/src/aprs/telemetry.c +++ b/system/src/aprs/telemetry.c @@ -10,6 +10,7 @@ #include "delay.h" #include "backup_registers.h" #include "variant.h" +#include "rte_main.h" #include "ve_direct_protocol/parser.h" @@ -41,8 +42,9 @@ void telemetry_init(void) { telemetry_counter = backup_reg_get_telemetry(); } -int telemetry_create_description_string(const config_data_basic_t * const config_basic, const config_data_mode_t * const config_mode, const telemetry_description_t what, char * out, uint16_t out_ln) { +int telemetry_create_description_string(const config_data_basic_t * const config_basic, const telemetry_description_t what, char * out, uint16_t out_ln) { + // real size of a string put into a buffer pointed by 'out' int out_size = 0; // a buffer to assembly the 'call-ssid' string at the begining of the frame @@ -58,15 +60,15 @@ int telemetry_create_description_string(const config_data_basic_t * const config 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 { - ; - } +// 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: { @@ -82,6 +84,7 @@ int telemetry_create_description_string(const config_data_basic_t * const config break; } + case TELEMETRY_PV_EQNS: { if (config_basic->ssid == 0) @@ -95,6 +98,7 @@ int telemetry_create_description_string(const config_data_basic_t * const config break; } + case TELEMETRY_PV_UNIT: { if (config_basic->ssid == 0) @@ -123,32 +127,28 @@ int telemetry_create_description_string(const config_data_basic_t * const config 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,Visc10min,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,Visc10min,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,Visc10min,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; } + + case TELEMETRY_VISCOUS_EQNS : case TELEMETRY_NORMAL_EQNS : { if (config_basic->ssid == 0) - out_size = snprintf(out, out_ln, out_ln, ":%-6s :EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", config_basic->callsign); + out_size = snprintf(out, out_ln, ":%-6s :EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", config_basic->callsign); else if (config_basic->ssid > 0 && config_basic->ssid < 10) - out_size = snprintf(out, out_ln, out_ln, ":%-9s:EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", message_prefix_buffer); + out_size = snprintf(out, out_ln, ":%-9s:EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", message_prefix_buffer); else if (config_basic->ssid >= 10 && config_basic->ssid < 16) - out_size = snprintf(out, out_ln, out_ln, ":%-9s:EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", message_prefix_buffer); + out_size = snprintf(out, out_ln, ":%-9s:EQNS.0,1,0,0,1,0,0,1,0,0,0.02,10,0,0.5,-50", message_prefix_buffer); else return out_size; break; } + + case TELEMETRY_VISCOUS_UNIT : case TELEMETRY_NORMAL_UNIT : { if (config_basic->ssid == 0) @@ -162,6 +162,21 @@ int telemetry_create_description_string(const config_data_basic_t * const config break; } + + case TELEMETRY_VISCOUS_PARAM : { + + // prepare a frame with channel names depending on SSID + if (config_basic->ssid == 0) + out_size = snprintf(out, out_ln, ":%-6s :PARM.Rx10min,Visc10min,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,Visc10min,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,Visc10min,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; + } } out[out_size] = 0; @@ -182,7 +197,7 @@ void telemetry_send_chns_description_pv(const config_data_basic_t * const config while (main_afsk.sending == 1); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, 0x00, TELEMETRY_PV_PARM, main_own_aprs_msg, OWN_APRS_MSG_LN); + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_PV_PARM, main_own_aprs_msg, OWN_APRS_MSG_LN); ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; afsk_txStart(&main_afsk); @@ -191,7 +206,7 @@ void telemetry_send_chns_description_pv(const config_data_basic_t * const config delay_fixed(1200); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, 0x00, TELEMETRY_PV_EQNS, main_own_aprs_msg, OWN_APRS_MSG_LN); + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_PV_EQNS, main_own_aprs_msg, OWN_APRS_MSG_LN); ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; afsk_txStart(&main_afsk); @@ -199,7 +214,7 @@ void telemetry_send_chns_description_pv(const config_data_basic_t * const config while (main_afsk.sending == 1); delay_fixed(1200); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, 0x00, TELEMETRY_PV_UNIT, main_own_aprs_msg, OWN_APRS_MSG_LN); + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_PV_UNIT, main_own_aprs_msg, OWN_APRS_MSG_LN); ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; afsk_txStart(&main_afsk); @@ -217,14 +232,6 @@ void telemetry_send_values_pv ( uint8_t rx_pkts, humidity_qf_t humid_qf, wind_qf_t anemometer_qf) { - // local variables with characters to be inserted to APRS telemetry frame -// char qf = '0', degr = '0', nav = '0'; -// -// char pressure_qf_navaliable = '0'; -// char humidity_qf_navaliable = '0'; -// char anemometer_degradated = '0'; -// char anemometer_navble = '0'; - uint8_t scaled_battery_current = 0; uint8_t scaled_battery_voltage = 0; uint8_t scaled_pvcell_volage = 0; @@ -301,11 +308,12 @@ void telemetry_send_values_pv ( uint8_t rx_pkts, main_own_aprs_msg[main_own_aprs_msg_len] = 0; ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; - //while (main_ax25.dcd == 1); WAIT_FOR_CHANNEL_FREE(); afsk_txStart(&main_afsk); - +#ifdef PARAMETEO + rte_main_trigger_gsm_telemetry_values = 1; +#endif } void telemetry_send_status_pv(ve_direct_average_struct* avg, ve_direct_error_reason* last_error, ve_direct_system_state state, uint32_t master_time, uint16_t messages_count, uint16_t corrupted_messages_count) { @@ -331,6 +339,22 @@ void telemetry_send_status_pv(ve_direct_average_struct* avg, ve_direct_error_rea */ void telemetry_send_chns_description(const config_data_basic_t * const config_basic, const config_data_mode_t * const config_mode) { + uint8_t is_viscous = 1; + + if (variant_validate_is_within_ram(config_basic) == 0) { + return; + } + + if (variant_validate_is_within_ram(config_mode) == 0) { + is_viscous = 0; + } + else if (config_mode->digi_viscous == 0) { + is_viscous = 0; + } + else { + ; + } + // a buffer to assembly the 'call-ssid' string at the begining of the frame char message_prefix_buffer[9]; @@ -344,9 +368,16 @@ void telemetry_send_chns_description(const config_data_basic_t * const config_ba // clear the output frame buffer memset(main_own_aprs_msg, 0x00, sizeof(main_own_aprs_msg)); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, config_mode, TELEMETRY_NORMAL_PARAM, main_own_aprs_msg, OWN_APRS_MSG_LN); - ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); - after_tx_lock = 1; + if (is_viscous == 0) { + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_NORMAL_PARAM, main_own_aprs_msg, OWN_APRS_MSG_LN); + ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); + after_tx_lock = 1; + } + else { + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_VISCOUS_PARAM, main_own_aprs_msg, OWN_APRS_MSG_LN); + ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); + after_tx_lock = 1; + } // key up the transmitter and afsk_txStart(&main_afsk); @@ -354,7 +385,7 @@ void telemetry_send_chns_description(const config_data_basic_t * const config_ba delay_fixed(1500); WAIT_FOR_CHANNEL_FREE(); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, config_mode, TELEMETRY_NORMAL_EQNS, main_own_aprs_msg, OWN_APRS_MSG_LN); + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_NORMAL_EQNS, main_own_aprs_msg, OWN_APRS_MSG_LN); ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; @@ -363,7 +394,7 @@ void telemetry_send_chns_description(const config_data_basic_t * const config_ba delay_fixed(1500); WAIT_FOR_CHANNEL_FREE(); - main_own_aprs_msg_len = telemetry_create_description_string(config_basic, config_mode, TELEMETRY_NORMAL_UNIT, main_own_aprs_msg, OWN_APRS_MSG_LN); + main_own_aprs_msg_len = telemetry_create_description_string(config_basic, TELEMETRY_NORMAL_UNIT, main_own_aprs_msg, OWN_APRS_MSG_LN); ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len); after_tx_lock = 1; afsk_txStart(&main_afsk); @@ -542,6 +573,11 @@ void telemetry_send_values( uint8_t rx_pkts, // key up a transmitter and start transmission afsk_txStart(&main_afsk); +#ifdef PARAMETEO + // trigger packet to aprs-is server + rte_main_trigger_gsm_telemetry_values = 1; +#endif + } uint16_t telemetry_get_counter(void) {