DUNE: Uniform Navigational Environment
2019.02.1
|
Base abstract class for maneuver tasks.
Public Member Functions | |
Maneuver (const std::string &name, Tasks::Context &ctx) | |
virtual | ~Maneuver () |
void | onEntityReservation (void) |
void | onResourceInitialization (void) |
virtual void | onManeuverActivation (void) |
virtual void | onManeuverDeactivation (void) |
virtual void | onPathControlState (const IMC::PathControlState *pcs) |
void | onActivation (void) |
void | onDeactivation (void) |
template<typename T , typename M > | |
void | startManeuver (const M *maneuver) |
template<typename T , typename M > | |
void | bindToManeuver (void) |
template<typename T > | |
void | bindToManeuvers (T *task_obj, const std::vector< uint32_t > &list) |
template<typename M , typename T > | |
void | consumeIfActive (const M *msg) |
template<typename M , typename T > | |
void | bind (T *task_obj, bool always=false) |
void | consume (const IMC::StopManeuver *sm) |
void | consume (const IMC::PathControlState *pcs) |
void | setControl (uint32_t mask) |
void | setEntityId (unsigned eid) |
void | dispatch (IMC::Message *msg, unsigned int flags=0) |
void | dispatch (IMC::Message &msg, unsigned int flags=0) |
void | dispatch (IMC::DesiredPath *msg, unsigned int flags=0) |
void | dispatch (IMC::DesiredPath &msg, unsigned int flags=0) |
virtual void | onStateReport (void) |
void | updateLoops (const IMC::ControlLoops *cl) |
void | signalError (const std::string &msg) |
void | signalInvalidZ (void) |
void | signalNoAltitude (void) |
void | signalCompletion (const std::string &msg="done") |
void | signalProgress (uint16_t time_left, const std::string &msg) |
void | signalProgress (const std::string &msg) |
void | signalProgress (uint16_t time_left) |
void | signalProgress (void) |
void | onMain (void) |
Public Member Functions inherited from DUNE::Tasks::Task | |
Task (const std::string &name, Context &context) | |
virtual | ~Task (void) |
const char * | getName (void) const |
const char * | getSystemName (void) const |
unsigned int | getSystemId (void) const |
unsigned int | getEntityId (void) const |
unsigned int | resolveEntity (const std::string &label) const |
std::string | resolveEntity (unsigned int id) const |
DebugLevel | getDebugLevel (void) const |
uint16_t | getActivationTime (void) const |
uint16_t | getDeactivationTime (void) const |
unsigned int | resolveSystemName (const std::string &name) const |
const char * | resolveSystemId (unsigned int id) const |
void | loadConfig (void) |
void | setPriority (unsigned int value) |
unsigned int | getPriority (void) const |
void | inf (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void | war (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void | err (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void void | cri (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void void void | debug (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void void void void | trace (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void void void void void | spew (const char *format,...) DUNE_PRINTF_FORMAT(2 |
void void void void void void void void | dispatch (IMC::Message *msg, unsigned int flags=0) |
void | dispatch (IMC::Message &msg, unsigned int flags=0) |
void | dispatchReply (const IMC::Message &original, IMC::Message &msg, unsigned int flags=0) |
void | receive (const IMC::Message *msg) |
void | reserveEntities (void) |
void | resolveEntities (void) |
void | acquireResources (void) |
void | releaseResources (void) |
void | initializeResources (void) |
void | updateParameters (bool act_deact=true) |
void | writeParamsXML (std::ostream &os) const |
const char * | getEntityLabel (void) const |
void | setEntityLabel (const std::string &label) |
Public Member Functions inherited from DUNE::Tasks::AbstractTask | |
AbstractTask (void) | |
virtual | ~AbstractTask (void) |
Public Member Functions inherited from DUNE::Concurrency::Thread | |
Thread (void) | |
virtual | ~Thread (void) |
int | getProcessorUsage (void) |
Public Member Functions inherited from DUNE::Concurrency::Runnable | |
Runnable (void) | |
virtual | ~Runnable (void) |
void | start (void) |
void | stop (void) |
void | join (void) |
void | stopAndJoin (void) |
void | setPriority (Scheduler::Policy policy, unsigned priority) |
unsigned | getPriority (void) |
State | getState (void) |
bool | isCreated (void) |
bool | isStopping (void) |
bool | isRunning (void) |
bool | isStarting (void) |
bool | isDead (void) |
Additional Inherited Members | |
Public Types inherited from DUNE::Concurrency::Runnable | |
Protected Member Functions inherited from DUNE::Tasks::Task | |
void | setEntityState (IMC::EntityState::StateEnum state, Status::Code code) |
void | setEntityState (IMC::EntityState::StateEnum state, const std::string &description) |
IMC::EntityState::StateEnum | getEntityState (void) const |
unsigned int | reserveEntity (const std::string &label) |
template<typename E > | |
E * | reserveEntity (const std::string &label) |
Entities::BasicEntity * | getLocalEntity (const std::string &label) |
bool | stopping (void) |
bool | isActive (void) const |
bool | isActivating (void) const |
bool | isDeactivating (void) const |
void | waitForMessages (double timeout) |
void | consumeMessages (void) |
template<typename T > | |
Parameter & | param (const std::string &name, T &var) |
template<typename Y , typename T > | |
Parameter & | param (const std::string &name, T &var) |
template<typename T > | |
bool | paramChanged (T &var) |
void | paramActive (Parameter::Scope def_scope, Parameter::Visibility def_visibility, bool def_value=false) |
void | setParamSectionEditor (const std::string &name) |
template<typename M , typename T > | |
void | bind (T *task_obj, void(T::*consumer)(const M *)=&T::consume) |
template<typename T > | |
void | bind (T *task_obj, const std::vector< uint32_t > &list) |
template<typename T , typename M > | |
void | bind (T *task_obj, const std::vector< uint32_t > &list, void(T::*consumer)(const M *)=&T::consume) |
template<typename T > | |
void | bind (T *task_obj, const std::vector< std::string > &list) |
void | requestActivation (void) |
void | requestDeactivation (void) |
void | activate (void) |
void | activationFailed (const std::string &reason) |
void | deactivate (void) |
void | deactivationFailed (const std::string &reason) |
virtual bool | onWriteParamsXML (std::ostream &os) const |
virtual void | onEntityResolution (void) |
virtual void | onReportEntityState (void) |
virtual void | onResourceAcquisition (void) |
virtual void | onResourceRelease (void) |
virtual void | onUpdateParameters (void) |
virtual void | onRequestActivation (void) |
virtual void | onRequestDeactivation (void) |
virtual void | onQueryEntityParameters (const IMC::QueryEntityParameters *msg) |
virtual void | onSetEntityParameters (const IMC::SetEntityParameters *msg) |
virtual void | onPushEntityParameters (const IMC::PushEntityParameters *msg) |
virtual void | onPopEntityParameters (const IMC::PopEntityParameters *msg) |
Protected Member Functions inherited from DUNE::Concurrency::Thread | |
void | startImpl (void) |
void | stopImpl (void) |
void | joinImpl (void) |
void | setPriorityImpl (Scheduler::Policy policy, unsigned priority) |
unsigned | getPriorityImpl (void) |
Protected Attributes inherited from DUNE::Tasks::Task | |
Context & | m_ctx |
std::vector< Entities::BasicEntity * > | m_entities |
DUNE::Maneuvers::Maneuver::Maneuver | ( | const std::string & | name, |
Tasks::Context & | ctx | ||
) |
Constructor.
|
virtual |
Destructor.
|
inline |
References consume(), and setControl().
|
inline |
|
inline |
void DUNE::Maneuvers::Maneuver::consume | ( | const IMC::StopManeuver * | sm | ) |
Consumer for StopManeuver message.
sm | message to consume. |
References dispatch(), DUNE::IMC::ManeuverControlState::eta, DUNE::IMC::ManeuverControlState::info, DUNE::Tasks::Task::isActive(), DUNE::IMC::ManeuverControlState::MCS_STOPPED, DUNE::Tasks::Task::requestDeactivation(), and DUNE::IMC::ManeuverControlState::state.
Referenced by bind(), consumeIfActive(), and startManeuver().
void DUNE::Maneuvers::Maneuver::consume | ( | const IMC::PathControlState * | pcs | ) |
Consumer for PathControlState message.
pcs | message to consume. |
References DUNE::Tasks::Task::isActive(), onPathControlState(), and DUNE::IMC::PathControlState::path_ref.
|
inline |
References consume(), and DUNE::Tasks::Task::isActive().
|
inline |
Dispatch needs to be handled in a special fashion for DesiredPath.
This function handles every other kind of message.
[in] | msg | message pointer. |
[in] | flags | bitfield with flags. |
References DUNE::Tasks::DF_KEEP_SRC_EID, and DUNE::IMC::Message::setSourceEntity().
Referenced by consume(), dispatch(), onMain(), setControl(), signalCompletion(), signalError(), and signalProgress().
|
inline |
Dispatch needs to be handled in a special fashion for DesiredPath.
This function handles every other kind of message.
[in] | msg | message reference. |
[in] | flags | bitfield with flags. |
References dispatch().
|
inline |
Dispatch needs to be handled in a special fashion for DesiredPath.
[in] | msg | message pointer. |
[in] | flags | bitfield with flags. |
References DUNE::Tasks::DF_KEEP_SRC_EID, DUNE::IMC::DesiredPath::path_ref, and DUNE::IMC::Message::setSourceEntity().
|
inline |
Dispatch needs to be handled in a special fashion for DesiredPath.
[in] | msg | message reference. |
[in] | flags | bitfield with flags. |
References dispatch().
|
virtual |
On task activation Should be used only by parent class Maneuver.
Reimplemented from DUNE::Tasks::Task.
References DUNE::Status::CODE_ACTIVE, DUNE::IMC::EntityState::ESTA_NORMAL, onManeuverActivation(), and DUNE::Tasks::Task::setEntityState().
Referenced by onPathControlState().
|
virtual |
On task deactivation Should be used only by parent class Maneuver.
Reimplemented from DUNE::Tasks::Task.
References DUNE::Status::CODE_IDLE, DUNE::Tasks::Task::debug(), DUNE::IMC::EntityState::ESTA_NORMAL, onManeuverDeactivation(), and DUNE::Tasks::Task::setEntityState().
Referenced by onPathControlState().
|
virtual |
On entity reservation.
Reimplemented from DUNE::Tasks::Task.
References DUNE::Tasks::Task::getEntityId().
|
virtual |
Implements DUNE::Tasks::Task.
References dispatch(), DUNE::Tasks::Task::isActive(), DUNE::IMC::RegisterManeuver::mid, onStateReport(), DUNE::Tasks::Task::stopping(), and DUNE::Tasks::Task::waitForMessages().
Referenced by signalProgress().
|
inlinevirtual |
On maneuver activation.
Referenced by onActivation().
|
inlinevirtual |
On maneuver deactivation.
Referenced by onDeactivation().
|
inlinevirtual |
|
inlinevirtual |
On resource initialization.
Reimplemented from DUNE::Tasks::Task.
References DUNE::Status::CODE_IDLE, DUNE::IMC::EntityState::ESTA_NORMAL, and DUNE::Tasks::Task::setEntityState().
|
inlinevirtual |
State report handler.
It should be overriden by maneuvers where it convenient to do so in time-triggered manner rather than in response to a particular message.
References signalCompletion(), signalError(), signalInvalidZ(), signalNoAltitude(), signalProgress(), and updateLoops().
Referenced by onMain().
void DUNE::Maneuvers::Maneuver::setControl | ( | uint32_t | mask | ) |
Set or reconfigure control loops used by maneuver task.
mask | mask identifying controllers that should be made active. |
References DUNE::IMC::CL_ALL, DUNE::IMC::ControlLoops::CL_DISABLE, DUNE::IMC::ControlLoops::CL_ENABLE, dispatch(), DUNE::IMC::ControlLoops::enable, DUNE::IMC::ControlLoops::mask, DUNE::IMC::ControlLoops::scope_ref, and updateLoops().
Referenced by bind().
|
inline |
Set entity Id for dispatching message Useful for maneuvers binding to more than one maneuver message.
void DUNE::Maneuvers::Maneuver::signalCompletion | ( | const std::string & | msg = "done" | ) |
Signal an error.
This method should be used by subclasses to signal maneuver completion.
msg | completion message |
References DUNE::Tasks::Task::debug(), dispatch(), DUNE::IMC::ManeuverControlState::eta, DUNE::IMC::ManeuverControlState::info, DUNE::IMC::ManeuverControlState::MCS_DONE, DUNE::Tasks::Task::requestDeactivation(), and DUNE::IMC::ManeuverControlState::state.
Referenced by onStateReport().
void DUNE::Maneuvers::Maneuver::signalError | ( | const std::string & | msg | ) |
Signal an error.
This method should be used by subclasses to signal an error condition.
msg | error message |
References dispatch(), DUNE::Tasks::Task::err(), DUNE::IMC::ManeuverControlState::eta, DUNE::IMC::ManeuverControlState::info, DUNE::IMC::ManeuverControlState::MCS_ERROR, DUNE::Tasks::Task::requestDeactivation(), and DUNE::IMC::ManeuverControlState::state.
Referenced by onStateReport(), signalInvalidZ(), and signalNoAltitude().
void DUNE::Maneuvers::Maneuver::signalInvalidZ | ( | void | ) |
Signal invalid Z reference This method should be used by subclasses to signal an error condition.
References signalError().
Referenced by onStateReport().
void DUNE::Maneuvers::Maneuver::signalNoAltitude | ( | void | ) |
Signal no altitude error.
This method should be used by subclasses to signal an error condition.
References signalError().
Referenced by onStateReport().
void DUNE::Maneuvers::Maneuver::signalProgress | ( | uint16_t | time_left, |
const std::string & | msg | ||
) |
Signal maneuver progress.
time_left | estimated time for completion. |
msg | human-readable information. |
References dispatch(), DUNE::IMC::ManeuverControlState::eta, DUNE::IMC::ManeuverControlState::info, DUNE::IMC::ManeuverControlState::MCS_EXECUTING, and DUNE::IMC::ManeuverControlState::state.
Referenced by onStateReport(), and startManeuver().
|
inline |
Signal maneuver progress.
msg | human-readable information. |
|
inline |
Signal maneuver progress.
time_left | estimated time for completion. |
|
inline |
Signal maneuver progress.
References onMain().
|
inline |
Method fired on maneuver startup.
It performs some initialization, then delegates handling on the task's consume method for the message.
maneuver | maneuver object |
References consume(), DUNE::Tasks::Task::debug(), DUNE::Tasks::Task::requestActivation(), and signalProgress().
void DUNE::Maneuvers::Maneuver::updateLoops | ( | const IMC::ControlLoops * | cl | ) |
Update active control loops.
cl | control loops message |
References DUNE::IMC::ControlLoops::CL_ENABLE, DUNE::IMC::ControlLoops::enable, and DUNE::IMC::ControlLoops::mask.
Referenced by onStateReport(), and setControl().