.. _program_listing_file_src_navtk_inertial_BufferedPva.hpp: Program Listing for File BufferedPva.hpp ======================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/navtk/inertial/BufferedPva.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include #include #include #include namespace { template bool safe_deref(const navtk::filtering::TimestampedDataSeries& buf, typename navtk::utils::RingBuffer>::const_iterator& it) { return it != buf.cend() && *it != nullptr; } } // namespace namespace navtk { namespace inertial { class BufferedPva { public: virtual ~BufferedPva() = default; BufferedPva(const BufferedPva&) = default; BufferedPva& operator=(const BufferedPva&) = default; BufferedPva(BufferedPva&&) = default; BufferedPva& operator=(BufferedPva&&) = default; virtual void add_data(not_null> data) = 0; std::shared_ptr calc_pva( const aspn_xtensor::TypeTimestamp& time) const; not_null> calc_pva() const; std::pair time_span() const; std::pair nsec_time_span() const; bool in_range(const aspn_xtensor::TypeTimestamp& t) const; virtual std::shared_ptr calc_force_and_rate( const aspn_xtensor::TypeTimestamp& time) const; virtual std::shared_ptr calc_force_and_rate( const aspn_xtensor::TypeTimestamp& time1, const aspn_xtensor::TypeTimestamp& time2) const; protected: BufferedPva(std::shared_ptr pva = nullptr, double expected_dt = 1.0, double buffer_length = 60.0); BufferedPva(const aspn_xtensor::MeasurementPositionVelocityAttitude& pva, double expected_dt = 1.0, double buffer_length = 60.0); filtering::TimestampedDataSeries pva_buf; std::shared_ptr calc_pva_no_check( const aspn_xtensor::TypeTimestamp& time) const; }; } // namespace inertial } // namespace navtk