kopia lustrzana https://github.com/bristol-seds/pico-tracker
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 earliermaster
rodzic
8a7ade9eed
commit
f10d6861ff
|
@ -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;
|
||||||
|
|
|
@ -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! */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 ----
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue