22 #include "MARobotStateUpdater.hpp" 24 #include "MABodyMotion.hpp" 25 #include "MARobotState.hpp" 32 typedef std::vector<MARobotStateUpdater*> RobotStateUpdaterList;
38 UpdateType(update_type)
45 if (likely(!Updaters.get()))
49 for (
auto iter = Updaters->begin(); iter != Updaters->end(); ++iter)
53 Updaters->erase(iter);
62 if (likely(!Updaters.get()))
64 Updaters.reset(
new RobotStateUpdaterList);
66 const auto Iter = std::find(Updaters->begin(), Updaters->end(), &updater);
68 if (Iter == Updaters->end())
71 Updaters->push_back(&updater);
78 if (unlikely(!Updaters.get()))
81 RobotStateUpdaterList& UpdaterList = *Updaters.get();
86 for (
auto& updater : UpdaterList)
88 if (updater->UpdateType == MA::UpdateSensorData)
90 updater->UpdateRobotState(state);
94 for (
auto& updater : UpdaterList)
96 if (updater->UpdateType == MA::UpdateSensorIndicators)
97 updater->UpdateRobotState(state);
100 for (
auto& updater : UpdaterList)
102 if (updater->UpdateType == MA::UpdateComplexIndicators)
103 updater->UpdateRobotState(state);
MARobotStateUpdater(MA::RobotStateUpdateType update_type)
Struct constructor.
static void RegisterUpdater(MARobotStateUpdater &updater)
Register a robot state updater.
boost::scoped_ptr< MABodyMotion > BodyMotion
Body motion.
Robot state updater base class.
A wrapper class to cover boost::thread_specific_ptr/folly::ThreadLocal API on certain targets...
static void Run(MARobotState &state)
Run the robot state updates.
virtual ~MARobotStateUpdater()
Struct destructor.