QString const MILE_UNIT = "mi";
QString const KM_SPEEDUNIT = "km/h";
QString const MILE_SPEEDUNIT = "mph";
- double const SPEED_TRESHOLD = 0.9;
- double const SPEED_IGNORE_LEVEL = 0.2;
+ double const DEFAULT_SPEED_TRESHOLD = 8.0;
+ double const MIN_SPEED_TRESHOLD = 0.9;
+ double const SPEED_IGNORE_LEVEL = 0.01;
}
Odometer::Odometer(): QObject(0), trip_(0), total_(0),
fixTimer_->restart();
- if(elapsed > 200 && fix.kmSpeed > SPEED_IGNORE_LEVEL && elapsed < 10000)
+ if(fix.kmSpeed > SPEED_IGNORE_LEVEL)
{
- if(fix.kmSpeed > SPEED_TRESHOLD)
+ double treshold = DEFAULT_SPEED_TRESHOLD;
+
+ if(fix.eps > 0.01)
+ {
+ treshold = fix.eps * 0.23822 + 0.471204;
+
+ if(treshold < MIN_SPEED_TRESHOLD)
+ {
+ treshold = MIN_SPEED_TRESHOLD;
+ }
+ }
+
+ if(fix.kmSpeed > treshold && elapsed > 200 && elapsed < 8000)
{
double km = fix.kmSpeed * (static_cast<double>(elapsed) / (1000 * 3600));
trip_ += km;
}
else
{
- if(latestFix_.kmSpeed > 0.49)
+ if(latestFix_.kmSpeed > SPEED_IGNORE_LEVEL)
{
latestFix_ = fix;
latestFix_.speed = 0.0;
return latestFix_;
}
+double Odometer::getSignalStrength() const
+{
+ if(!location_)
+ {
+ return 0.0;
+ }
+
+ return location_->getSignalStrength();
+}
+
QString const& Odometer::getUnit()
{
if(Location::getUnit() == Location::KM)