Example #1
0
/**
 * Called with new measurements. The quality is a measure for how
 * good the measurement is. Higher quality measurements are more
 * important in the end result and stay in the store longer.
 */
void WindStore::slot_Measurement( const Vector& windVector, int quality )
{
  m_windlist.addMeasurement( windVector, calculator->getlastAltitude(), quality );

  // we may have a new wind value, so make sure it's emitted if needed!
  recalculateWind();
}
Example #2
0
/**
  * Called with new measurements. The quality is a measure for how
  * good the measurement is. Higher quality measurements are more
  * important in the end result and stay in the store longer.
  */
void
WindStore::slot_measurement(const NMEA_INFO *nmeaInfo,
                            DERIVED_INFO *derivedInfo,
                            Vector windvector, int quality)
{
  updated = true;
  windlist->addMeasurement(nmeaInfo->Time, windvector, nmeaInfo->Altitude, quality);
  //we may have a new wind value, so make sure it's emitted if needed!
  recalculateWind(nmeaInfo, derivedInfo);
}
Example #3
0
void
WindStore::SlotAltitude(const MoreData &info, DerivedInfo &derived)
{
  if ((fabs(info.nav_altitude - _lastAltitude) > fixed(100)) || updated) {
    //only recalculate if there is a significant change
    recalculateWind(info, derived);

    updated = false;
    _lastAltitude = info.nav_altitude;
  }
}
Example #4
0
void
WindStore::slot_Altitude(const NMEA_INFO *nmeaInfo,
                         DERIVED_INFO *derivedInfo)
{
  if ((fabs(nmeaInfo->Altitude-_lastAltitude)>100.0)||(updated)) {
    //only recalculate if there is a significant change
    recalculateWind(nmeaInfo, derivedInfo);

    updated = false;
    _lastAltitude=nmeaInfo->Altitude;
  }
}
Example #5
0
/**
 * Called if the altitude changes. Can recalculate the wind and may result
 * in a newWind signal.
 */
void WindStore::slot_Altitude( const Altitude& altitude )
{
  if( calculator->currentFlightMode() != Calculator::circlingL &&
      calculator->currentFlightMode() != Calculator::circlingR &&
      fabs( (altitude - m_lastAltitude).getMeters() ) >= 200.0 )
    {
      // Only recalculate wind, if we are not circling and there is a
      // significant altitude change. During circling newer wind is always
      // calculated and distributed.
      recalculateWind();

      m_lastAltitude = altitude;
    }
}