QString const MILE_UNIT = "mi";
QString const KM_SPEEDUNIT = "km/h";
QString const MILE_SPEEDUNIT = "mph";
+ static const int FIX_TIMEOUT = 4000;
double const DEFAULT_SPEED_TRESHOLD = 8.0;
double const MIN_SPEED_TRESHOLD = 0.8;
double const SPEED_IGNORE_LEVEL = 0.01;
signalTimer_->setInterval(1000);
connect(signalTimer_, SIGNAL(timeout()), this, SIGNAL(timeUpdated()));
updateUnit();
+ timeoutTimer_ = new QTimer(this);
+ timeoutTimer_->setSingleShot(true);
+ connect(timeoutTimer_, SIGNAL(timeout()), this, SLOT(fixTimeout()));
+
}
Odometer::~Odometer()
int elapsed = fixTimer_->elapsed();
fixTimer_->restart();
+ timeoutTimer_->start(FIX_TIMEOUT);
if(fix.kmSpeed > SPEED_IGNORE_LEVEL)
{
}
}
- if(fix.kmSpeed > treshold && elapsed > 200 && elapsed < 8000)
+ if(fix.kmSpeed > treshold && elapsed > 200 && elapsed < FIX_TIMEOUT)
{
double km = fix.kmSpeed * (static_cast<double>(elapsed) / (1000 * 3600));
trip_ += km;
}
else
{
- if(latestFix_.kmSpeed > SPEED_IGNORE_LEVEL)
- {
- latestFix_ = fix;
- latestFix_.speed = 0.0;
- latestFix_.kmSpeed = 0.0;
- emit dataUpdated();
- }
+ fixTimeout();
+ }
+}
- endTiming();
+void Odometer::fixTimeout()
+{
+ if(latestFix_.kmSpeed > SPEED_IGNORE_LEVEL)
+ {
+ latestFix_ = Location::Fix();
+ emit dataUpdated();
}
+
+ endTiming();
}
double Odometer::getTrip() const