diff --git a/include/gnss/processor/processor_gnss_fix.h b/include/gnss/processor/processor_gnss_fix.h index e6b3adfc815439ef9b92c36bc62510f2e54376b1..f2f1d4a511e367c4da84fbae3ac8ccb998cd48ac 100644 --- a/include/gnss/processor/processor_gnss_fix.h +++ b/include/gnss/processor/processor_gnss_fix.h @@ -44,7 +44,33 @@ class ProcessorGnssFix : public ProcessorBase ProcessorGnssFix(ProcessorParamsGnssFixPtr _params, SensorGnssPtr _sensor_gnss_ptr); virtual ~ProcessorGnssFix(); virtual void configure(SensorBasePtr _sensor); - virtual void process(CaptureBasePtr _capture_ptr); + + protected: + /** \brief process an incoming capture + * + * Each derived processor should implement this function. It will be called if: + * - A new capture arrived and triggerInCapture() returned true. + */ + virtual void processCapture(CaptureBasePtr) override; + + /** \brief process an incoming key-frame + * + * The ProcessorTracker only processes incoming captures (it is not called). + */ + virtual void processKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tolerance) override {}; + + /** \brief trigger in capture + * + * Returns true if processCapture() should be called after the provided capture arrived. + */ + virtual bool triggerInCapture(CaptureBasePtr) override; + + /** \brief trigger in key-frame + * + * The ProcessorTracker only processes incoming captures, then it returns false. + */ + virtual bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tolerance) override {return false;} + virtual bool voteForKeyFrame(); private: @@ -56,6 +82,11 @@ class ProcessorGnssFix : public ProcessorBase }; +inline bool ProcessorGnssFix::triggerInCapture(CaptureBasePtr) +{ + return true; +} + } // namespace wolf #endif //WOLF_PROCESSOR_GNSS_FIX_H diff --git a/include/gnss/processor/processor_gnss_single_diff.h b/include/gnss/processor/processor_gnss_single_diff.h index 405caeb16d5541bfa12468b8ecdeaa2324c99335..708b5c2804a9344c6c3321b7d39bc5c8abe7ac99 100644 --- a/include/gnss/processor/processor_gnss_single_diff.h +++ b/include/gnss/processor/processor_gnss_single_diff.h @@ -25,9 +25,36 @@ class ProcessorGnssSingleDiff : public ProcessorBase ProcessorGnssSingleDiff(ProcessorParamsBasePtr _params, SensorGnssPtr _sensor_gnss_ptr); virtual ~ProcessorGnssSingleDiff(); virtual void configure(SensorBasePtr _sensor); - virtual void process(CaptureBasePtr _capture_ptr); + + protected: + /** \brief process an incoming capture + * + * Each derived processor should implement this function. It will be called if: + * - A new capture arrived and triggerInCapture() returned true. + */ + virtual void processCapture(CaptureBasePtr) override; + + /** \brief process an incoming key-frame + * + * The ProcessorTracker only processes incoming captures (it is not called). + */ + virtual void processKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tolerance) override {}; + + /** \brief trigger in capture + * + * Returns true if processCapture() should be called after the provided capture arrived. + */ + virtual bool triggerInCapture(CaptureBasePtr) override; + + /** \brief trigger in key-frame + * + * The ProcessorTracker only processes incoming captures, then it returns false. + */ + virtual bool triggerInKeyFrame(FrameBasePtr _keyframe_ptr, const Scalar& _time_tolerance) override {return false;} + virtual bool voteForKeyFrame(); + private: FactorBasePtr emplaceFactor(FeatureBasePtr& ftr_ptr); @@ -36,6 +63,11 @@ class ProcessorGnssSingleDiff : public ProcessorBase }; +inline bool ProcessorGnssSingleDiff::triggerInCapture(CaptureBasePtr) +{ + return true; +} + } // namespace wolf #endif //WOLF_PROCESSOR_GNSS_SINGLE_DIFF_H diff --git a/src/processor/processor_gnss_fix.cpp b/src/processor/processor_gnss_fix.cpp index 82a23ec2d4ed380fb095c93e9ad32d3338e3265b..68becb54e0aad02b1c673ea68eb42e340edd19d4 100644 --- a/src/processor/processor_gnss_fix.cpp +++ b/src/processor/processor_gnss_fix.cpp @@ -21,7 +21,7 @@ ProcessorGnssFix::~ProcessorGnssFix() // } -void ProcessorGnssFix::process(CaptureBasePtr _capture_ptr) +void ProcessorGnssFix::processCapture(CaptureBasePtr _capture_ptr) { // TODO: keep captures in a buffer and deal with KFpacks diff --git a/src/processor/processor_gnss_single_diff.cpp b/src/processor/processor_gnss_single_diff.cpp index 6fdecea33ff4fa873c545866ca9af038d4347210..42b246c6cd6efedbe26dcb7c1ece24e2ea4a9f4d 100644 --- a/src/processor/processor_gnss_single_diff.cpp +++ b/src/processor/processor_gnss_single_diff.cpp @@ -19,7 +19,7 @@ ProcessorGnssSingleDiff::~ProcessorGnssSingleDiff() // } -void ProcessorGnssSingleDiff::process(CaptureBasePtr _capture_ptr) +void ProcessorGnssSingleDiff::processCapture(CaptureBasePtr _capture_ptr) { // TODO: keep captures in a buffer and deal with KFpacks