telemetry: telemetry description for visous mode handled by separate enum values

master
Mateusz Lubecki 2023-10-28 12:35:34 +02:00
rodzic 95712dedde
commit 421639ff30
8 zmienionych plików z 91 dodań i 50 usunięć

Wyświetl plik

@ -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];

Wyświetl plik

@ -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++;

Wyświetl plik

@ -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);

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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"

Wyświetl plik

@ -7,6 +7,7 @@
#include <ax25_config.h>
#include <string.h>
#include <stdio.h>
#include "aprs/digi.h"
#include "main.h"

Wyświetl plik

@ -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) {