DUNE: Uniform Navigational Environment
2019.02.0
|
Public Member Functions | |
Task (const std::string &name, Tasks::Context &ctx) | |
void | onUpdateParameters (void) |
void | onResourceAcquisition (void) |
void | onResourceInitialization (void) |
void | consume (const IMC::MagneticField *msg) |
void | onResourceRelease (void) |
int8_t | getCommandDataSize (uint8_t id) |
bool | setup (void) |
bool | getMessage (CommandByte type, fp64_t maxwait=1.0) |
void | clear (void) |
fp64_t | updateTimerCount (uint8_t *data) |
void | rotateAcceleration (void) |
void | rotateAngularVelocity (void) |
void | rotateMagneticField (void) |
void | rotateEuler (void) |
CommandByte | parse (uint8_t byte) |
void | setContinuousMode (CommandByte msg=MSG_NULL) |
void | queryEEPROM (uint16_t address) |
void | writeEEPROM (uint16_t address, uint16_t w_data) |
void | runCalibration (void) |
bool | isCalibrated (void) |
bool | setHardIron (void) |
void | requestMessage (CommandByte command) |
bool | validateCheckSum (const uint8_t *bfr, unsigned int size) |
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) |
Public Attributes | |
SerialPort * | m_uart |
IMC::EulerAngles | m_euler |
IMC::AngularVelocity | m_agvel |
IMC::Acceleration | m_accel |
IMC::MagneticField | m_magfield |
FSMStates | m_state |
Math::Matrix | m_rotation |
float | m_hard_iron [3] |
int | m_togo |
int | m_done |
uint8_t | m_data [32] |
fp64_t | m_accel_scale |
fp64_t | m_gyro_scale |
fp64_t | m_mag_scale |
int16_t | m_eeprom |
fp64_t | m_timer |
uint16_t | m_last_tick |
Arguments | m_args |
Counter< double > | m_wdog |
Additional Inherited Members | |
Public Types inherited from DUNE::Concurrency::Runnable | |
enum | State { StateStarting, StateRunning, StateStopping, StateDead, StateUnknown } |
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 | onEntityReservation (void) |
virtual void | onEntityResolution (void) |
virtual void | onReportEntityState (void) |
virtual void | onRequestActivation (void) |
virtual void | onRequestDeactivation (void) |
virtual void | onActivation (void) |
virtual void | onDeactivation (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 |
|
inline |
References Sensors::Microstrain3DMGX1::Arguments::calib_threshold, Sensors::Microstrain3DMGX1::Arguments::calib_time, Sensors::Microstrain3DMGX1::Arguments::data_tout, DUNE::Tasks::Parameter::defaultValue(), DUNE::Tasks::Parameter::description(), Sensors::Microstrain3DMGX1::Arguments::hard_iron, m_args, DUNE::Tasks::Task::param(), Sensors::Microstrain3DMGX1::Arguments::raw_ivecs, Sensors::Microstrain3DMGX1::Arguments::rotation_mx, Sensors::Microstrain3DMGX1::Arguments::uart_baud, Sensors::Microstrain3DMGX1::Arguments::uart_dev, and DUNE::Tasks::Parameter::units().
|
inline |
References Sensors::Microstrain3DMGX1::FSM_STATE_NONE, m_done, m_state, and m_togo.
Referenced by setup().
|
inline |
|
inline |
|
inline |
References m_uart, and parse().
Referenced by isCalibrated(), setHardIron(), and setup().
|
inline |
Check if sensor has the same hard iron calibration parameters.
References DUNE::Tasks::Task::debug(), getMessage(), m_eeprom, m_hard_iron, m_mag_scale, Sensors::Microstrain3DMGX1::MSG_CONTMODE, Sensors::Microstrain3DMGX1::MSG_EEPROM, Sensors::Microstrain3DMGX1::MSG_GS_EULER, queryEEPROM(), setContinuousMode(), DUNE::Tasks::Task::setEntityState(), and DUNE::Tasks::Task::war().
Referenced by runCalibration().
|
inlinevirtual |
|
inlinevirtual |
Called when the task is instructed to acquire resources whose configuration is defined by run-time parameters.
Reimplemented from DUNE::Tasks::Task.
References m_args, m_uart, Sensors::Microstrain3DMGX1::Arguments::uart_baud, and Sensors::Microstrain3DMGX1::Arguments::uart_dev.
|
inlinevirtual |
Called when the task is instructed to initialize resources acquired previously or whose initialization depends on run-time parameters.
Reimplemented from DUNE::Tasks::Task.
References Sensors::Microstrain3DMGX1::Arguments::data_tout, m_args, m_wdog, and DUNE::Time::Counter< T >::setTop().
|
inlinevirtual |
Called when the task is instructed to release resources.
Derived classes that override this function must not assume that any resource was previously acquired. This function must be implemented in such a way that it can be called at any time.
Reimplemented from DUNE::Tasks::Task.
References m_uart.
|
inlinevirtual |
Update parameters.
Reimplemented from DUNE::Tasks::Task.
References Sensors::Microstrain3DMGX1::Arguments::hard_iron, m_args, m_hard_iron, m_rotation, m_uart, DUNE::Tasks::Task::paramChanged(), Sensors::Microstrain3DMGX1::Arguments::rotation_mx, runCalibration(), and DUNE::Math::transpose().
|
inline |
References DUNE::Tasks::Task::debug(), DUNE::Tasks::Task::dispatch(), DUNE::Tasks::Task::err(), Sensors::Microstrain3DMGX1::FSM_STATE_MESSAGE, Sensors::Microstrain3DMGX1::FSM_STATE_NONE, getCommandDataSize(), m_accel, m_accel_scale, m_agvel, m_args, m_data, m_done, m_eeprom, m_euler, m_gyro_scale, m_mag_scale, m_magfield, m_state, m_togo, Sensors::Microstrain3DMGX1::MSG_CONTMODE, Sensors::Microstrain3DMGX1::MSG_EEPROM, Sensors::Microstrain3DMGX1::MSG_GS_EULER, Sensors::Microstrain3DMGX1::MSG_IVECS, Sensors::Microstrain3DMGX1::MSG_NULL, Sensors::Microstrain3DMGX1::MSG_RAW_IVECS, Sensors::Microstrain3DMGX1::MSG_W_EEPROM, Sensors::Microstrain3DMGX1::Arguments::raw_ivecs, requestMessage(), rotateAcceleration(), rotateAngularVelocity(), rotateEuler(), rotateMagneticField(), updateTimerCount(), and validateCheckSum().
Referenced by getMessage(), and onMain().
|
inline |
References m_uart, and Sensors::Microstrain3DMGX1::MSG_EEPROM.
Referenced by isCalibrated(), and setup().
|
inline |
|
inline |
Correct data according with mounting position.
References m_accel, and m_rotation.
Referenced by parse().
|
inline |
References m_agvel, and m_rotation.
Referenced by parse().
|
inline |
References m_euler, and m_rotation.
Referenced by parse().
|
inline |
References m_magfield, and m_rotation.
Referenced by parse().
|
inline |
Routine to run calibration proceedings.
References isCalibrated(), m_uart, Sensors::Microstrain3DMGX1::MSG_GS_EULER, setContinuousMode(), and setHardIron().
Referenced by onUpdateParameters(), and setup().
|
inline |
References m_uart, and Sensors::Microstrain3DMGX1::MSG_CONTMODE.
Referenced by isCalibrated(), runCalibration(), setHardIron(), and setup().
|
inline |
Set new hard iron calibration parameters.
References DUNE::Tasks::Task::debug(), getMessage(), Sensors::Microstrain3DMGX1::Arguments::hard_iron, DUNE::Tasks::Task::inf(), m_args, m_eeprom, m_mag_scale, Sensors::Microstrain3DMGX1::MSG_CONTMODE, Sensors::Microstrain3DMGX1::MSG_W_EEPROM, setContinuousMode(), DUNE::Tasks::Task::setEntityState(), DUNE::Tasks::Task::war(), and writeEEPROM().
Referenced by runCalibration().
|
inline |
References clear(), getMessage(), m_accel_scale, m_eeprom, m_gyro_scale, m_mag_scale, m_uart, Sensors::Microstrain3DMGX1::MSG_CONTMODE, Sensors::Microstrain3DMGX1::MSG_EEPROM, Sensors::Microstrain3DMGX1::MSG_GS_EULER, queryEEPROM(), runCalibration(), setContinuousMode(), and DUNE::Tasks::Task::setEntityState().
Referenced by onMain().
|
inline |
References m_last_tick, and m_timer.
Referenced by parse().
|
inline |
References DUNE::Math::sum().
Referenced by parse().
|
inline |
References m_uart, and Sensors::Microstrain3DMGX1::MSG_W_EEPROM.
Referenced by setHardIron().
IMC::Acceleration Sensors::Microstrain3DMGX1::Task::m_accel |
Referenced by parse(), and rotateAcceleration().
IMC::AngularVelocity Sensors::Microstrain3DMGX1::Task::m_agvel |
Referenced by parse(), and rotateAngularVelocity().
Arguments Sensors::Microstrain3DMGX1::Task::m_args |
Referenced by consume(), onResourceAcquisition(), onResourceInitialization(), onUpdateParameters(), parse(), setHardIron(), and Task().
uint8_t Sensors::Microstrain3DMGX1::Task::m_data[32] |
Referenced by parse().
int16_t Sensors::Microstrain3DMGX1::Task::m_eeprom |
Referenced by isCalibrated(), parse(), setHardIron(), and setup().
IMC::EulerAngles Sensors::Microstrain3DMGX1::Task::m_euler |
Referenced by parse(), and rotateEuler().
float Sensors::Microstrain3DMGX1::Task::m_hard_iron[3] |
Rotated calibration parameters.
Referenced by isCalibrated(), and onUpdateParameters().
uint16_t Sensors::Microstrain3DMGX1::Task::m_last_tick |
Referenced by updateTimerCount().
fp64_t Sensors::Microstrain3DMGX1::Task::m_mag_scale |
Referenced by isCalibrated(), parse(), setHardIron(), and setup().
IMC::MagneticField Sensors::Microstrain3DMGX1::Task::m_magfield |
Magnetometer Vector message.
Referenced by parse(), and rotateMagneticField().
Math::Matrix Sensors::Microstrain3DMGX1::Task::m_rotation |
Rotation Matrix to correct mounting position.
Referenced by onUpdateParameters(), rotateAcceleration(), rotateAngularVelocity(), rotateEuler(), and rotateMagneticField().
fp64_t Sensors::Microstrain3DMGX1::Task::m_timer |
Referenced by updateTimerCount().
SerialPort* Sensors::Microstrain3DMGX1::Task::m_uart |
Counter<double> Sensors::Microstrain3DMGX1::Task::m_wdog |
Referenced by onMain(), and onResourceInitialization().