Added new datapoints to UHAS string. Increased limit of UKHAS string to 120 characters

Increases max. transmission time by 4 seconds, in line with async data collection move 20->25 earlier
master
Richard Meadows 2015-10-07 01:10:57 +01:00
rodzic 8a7ade9eed
commit f10d6861ff
4 zmienionych plików z 17 dodań i 12 usunięć

Wyświetl plik

@ -31,7 +31,7 @@
/**
* Structure for all the information in each datapoint.
*
* Size is approx 40 bytes
* Size is approx 52 bytes
*/
typedef struct tracker_datapoint {
/* Time */
@ -46,7 +46,10 @@ typedef struct tracker_datapoint {
/* Sensors */
float battery; /* Volts */
float solar; /* Volts */
float temperature; /* ºC */
float main_pressure; /* Pa */
float thermistor_temperature; /* ºC */
float bmp180_temperature; /* ºC */
float radio_die_temperature; /* ºC */
uint32_t xosc_error; /* Hertz */
} tracker_datapoint;

Wyświetl plik

@ -99,7 +99,7 @@ void encode_telemetry(char* str, tracker_datapoint* dp)
{
base91_encode(str+0, 2, (dp->battery * 1000)); /* Battery never > 8V */
base91_encode(str+2, 2, (dp->solar * 1000)); /* Solar never > 8V */
base91_encode(str+4, 2, ((dp->temperature+273.2)*10)); /* Temp never > 526º! */
base91_encode(str+4, 2, ((dp->radio_die_temperature+273.2)*10)); /* Temp never > 526º! */
base91_encode(str+6, 2, dp->satillite_count); /* Small! */
}

Wyświetl plik

@ -66,7 +66,7 @@ struct tracker_datapoint* collect_data(void)
*/
datapoint.battery = get_battery(); /* Will return zero by default */
datapoint.solar = get_solar(); /* Will return zero by default */
datapoint.temperature = telemetry_si_temperature();
datapoint.radio_die_temperature = telemetry_si_temperature();
/**
* ---- GPS ----

Wyświetl plik

@ -58,22 +58,24 @@ uint16_t format_telemetry_string(char* string, struct tracker_datapoint* dp,
uint32_t altitude = 0;
uint16_t len;
lat_fmt = (double)dp->latitude / 10000000.0; /* degrees */
lon_fmt = (double)dp->longitude / 10000000.0; /* degrees */
altitude = dp->altitude / 1000; /* meters */
lat_fmt = (double)dp->latitude / 10000000.0; /* hundred nanodeg -> degrees */
lon_fmt = (double)dp->longitude / 10000000.0; /* hundred nanodeg -> degrees */
altitude = dp->altitude / 1000; /* mm -> meters */
/* sprintf - preamble */
memset(string, '$', dollars);
len = dollars;
/* sprintf - full string */
/* sprintf - full string (approx 80 chars) */
len += sprintf(telemetry_string + len,
"%s,%02u:%02u:%02u,%02u%02u%02u,%02.5f,%03.5f,%ld,%u,%.2f,%.2f,%.1f,%ld",
"%s,%02u:%02u:%02u,%02u%02u%02u,%02.5f,%03.5f,%ld,%u,%.2f,%.0f,%.1f,%.1f,%.1f,%ld",
CALLSIGN,
dp->time.hour, dp->time.minute, dp->time.second,
dp->time.year%100, dp->time.month, dp->time.day,
lat_fmt, lon_fmt, altitude, dp->satillite_count,
dp->battery, dp->solar, dp->temperature, dp->xosc_error);
dp->solar, dp->main_pressure,
dp->thermistor_temperature, dp->bmp180_temperature,
dp->radio_die_temperature, dp->xosc_error);
if (reduce_char_set) {
/* Reduce character set */
@ -85,8 +87,8 @@ uint16_t format_telemetry_string(char* string, struct tracker_datapoint* dp,
"*%04X\r",
crc_checksum(telemetry_string + dollars));
/* Length should be no more than 100 characters!! */
if (len <= 100) {
/* Length should be no more than 120 characters!! */
if (len <= 120) {
return len;
}