Merge remote branch 'origin/master'

pull/2/head
Daniel Richman 2012-08-22 01:34:15 +01:00
commit c9209cc65f
2 zmienionych plików z 17 dodań i 27 usunięć

Wyświetl plik

@ -239,6 +239,17 @@ static void split_nmea(const string &data, vector<string> &parts)
}
}
static string parse_hms(const string &part)
{
ostringstream temp;
temp << part.substr(0, 2) << ':'
<< part.substr(2, 2) << ':'
<< part.substr(4, 2);
if (temp.str().size() != 8)
throw runtime_error("bad NMEA time");
return temp.str();
}
static double parse_ddm(string part, const string &dirpart)
{
double degrees, mins;
@ -263,21 +274,6 @@ static double parse_ddm(string part, const string &dirpart)
return value;
}
static void parse_hms(string part, int &hour, int &minute, int &second)
{
/* Split HH MM SS with spaces */
part.insert(6, " ");
part.insert(4, " ");
part.insert(2, " ");
istringstream tmp(part);
tmp.exceptions(istringstream::failbit | istringstream::badbit);
tmp >> hour;
tmp >> minute;
tmp >> second;
}
static double parse_alt(const string &part, const string &unit_part)
{
if (unit_part != "M")
@ -320,12 +316,12 @@ void GPSThread::read()
if (!check_gpgga(parts))
return;
int hour, minute, second;
string time_str;
double latitude, longitude, altitude;
try
{
parse_hms(parts[1], hour, minute, second);
time_str = parse_hms(parts[1]);
latitude = parse_ddm(parts[2], parts[3]);
longitude = parse_ddm(parts[4], parts[5]);
altitude = parse_alt(parts[9], parts[10]);
@ -339,13 +335,6 @@ void GPSThread::read()
throw runtime_error("Failed to parse data (fail)");
}
ostringstream time_tmp, lat_tmp;
time_tmp.fill('0');
time_tmp.width(2);
time_tmp << hour << ":" << minute << ":" << second;
string time_str = time_tmp.str();
update_ui(time_str, latitude, longitude, altitude);
upload(time_str, latitude, longitude, altitude);
}
@ -354,6 +343,7 @@ void GPSThread::update_ui(const string &time_str,
double latitude, double longitude, double altitude)
{
ostringstream lat_tmp, lon_tmp, alt_tmp;
lat_tmp << latitude;
lon_tmp << longitude;
alt_tmp << altitude;

Wyświetl plik

@ -46,9 +46,9 @@ void update_distance_bearing()
if (!listener_valid || !balloon_valid)
{
habDistance->value("");
habBearing->value("");
habElevation->value("");
//habDistance->value("");
//habBearing->value("");
//habElevation->value("");
return;
}