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. * Structure for all the information in each datapoint.
* *
* Size is approx 40 bytes * Size is approx 52 bytes
*/ */
typedef struct tracker_datapoint { typedef struct tracker_datapoint {
/* Time */ /* Time */
@ -46,7 +46,10 @@ typedef struct tracker_datapoint {
/* Sensors */ /* Sensors */
float battery; /* Volts */ float battery; /* Volts */
float solar; /* 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 */ uint32_t xosc_error; /* Hertz */
} tracker_datapoint; } 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+0, 2, (dp->battery * 1000)); /* Battery never > 8V */
base91_encode(str+2, 2, (dp->solar * 1000)); /* Solar 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! */ 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.battery = get_battery(); /* Will return zero by default */
datapoint.solar = get_solar(); /* 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 ---- * ---- GPS ----

Wyświetl plik

@ -58,22 +58,24 @@ uint16_t format_telemetry_string(char* string, struct tracker_datapoint* dp,
uint32_t altitude = 0; uint32_t altitude = 0;
uint16_t len; uint16_t len;
lat_fmt = (double)dp->latitude / 10000000.0; /* degrees */ lat_fmt = (double)dp->latitude / 10000000.0; /* hundred nanodeg -> degrees */
lon_fmt = (double)dp->longitude / 10000000.0; /* degrees */ lon_fmt = (double)dp->longitude / 10000000.0; /* hundred nanodeg -> degrees */
altitude = dp->altitude / 1000; /* meters */ altitude = dp->altitude / 1000; /* mm -> meters */
/* sprintf - preamble */ /* sprintf - preamble */
memset(string, '$', dollars); memset(string, '$', dollars);
len = dollars; len = dollars;
/* sprintf - full string */ /* sprintf - full string (approx 80 chars) */
len += sprintf(telemetry_string + len, 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, CALLSIGN,
dp->time.hour, dp->time.minute, dp->time.second, dp->time.hour, dp->time.minute, dp->time.second,
dp->time.year%100, dp->time.month, dp->time.day, dp->time.year%100, dp->time.month, dp->time.day,
lat_fmt, lon_fmt, altitude, dp->satillite_count, 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) { if (reduce_char_set) {
/* Reduce character set */ /* Reduce character set */
@ -85,8 +87,8 @@ uint16_t format_telemetry_string(char* string, struct tracker_datapoint* dp,
"*%04X\r", "*%04X\r",
crc_checksum(telemetry_string + dollars)); crc_checksum(telemetry_string + dollars));
/* Length should be no more than 100 characters!! */ /* Length should be no more than 120 characters!! */
if (len <= 100) { if (len <= 120) {
return len; return len;
} }