DUNE: Uniform Navigational Environment  2.6.0-rc1
Sensors::Microstrain3DMGX3::Task Struct Reference

Detailed Description

Microstrain3DMGX3 software driver.

Public Member Functions

 Task (const std::string &name, Tasks::Context &ctx)
 
void onUpdateParameters (void)
 
void onResourceRelease (void)
 
void onResourceAcquisition (void)
 
void onResourceInitialization (void)
 
void consume (const IMC::MagneticField *msg)
 
bool poll (Commands cmd, Sizes cmd_size, uint16_t addr, uint16_t value)
 
bool listen (Commands cmd, Sizes cmd_size)
 
bool validateChecksum (const uint8_t *bfr, unsigned bfr_len)
 
void runCalibration (void)
 
bool isCalibrated (void)
 
void resetDevice (void)
 
void requestCalibration (uint16_t addr)
 
bool setHardIron (void)
 
void calibrate (uint16_t addr, uint16_t value)
 
void rotateData (void)
 
void task (void)
 
- Public Member Functions inherited from DUNE::Tasks::Periodic
 Periodic (const std::string &name, Context &ctx)
 
virtual ~Periodic (void)
 
void setFrequency (double freq)
 
double getFrequency (void) const
 
double getRunTime (void) const
 
unsigned getRunCount (void) const
 
- 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
 
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
 
- 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)
 
State getState (void)
 
bool isCreated (void)
 
bool isStopping (void)
 
bool isRunning (void)
 
bool isStarting (void)
 
bool isDead (void)
 

Public Attributes

Math::Matrix m_rotation
 
float m_hard_iron [3]
 
SerialPort * m_uart
 
IMC::EulerAngles m_euler
 
IMC::Acceleration m_accel
 
IMC::AngularVelocity m_agvel
 
IMC::MagneticField m_magfield
 
Time::Counter< float > m_timer
 
uint8_t m_bfr [c_bfr_size]
 
uint16_t m_addr [c_num_addr]
 
double m_tstamp
 
Counter< double > m_wdog
 
Arguments m_args
 

Static Public Attributes

static const unsigned c_bfr_size
 
static const unsigned c_num_addr
 
static const uint16_t c_mag_addr
 

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
const char * getEntityLabel (void) const
 
void setEntityLabel (const std::string &label)
 
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)
 
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 >
Parameterparam (const std::string &name, T &var)
 
template<typename Y , typename T >
Parameterparam (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 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)
 
- Protected Member Functions inherited from DUNE::Concurrency::Thread
void startImpl (void)
 
void stopImpl (void)
 
void joinImpl (void)
 
void setPriorityImpl (Scheduler::Policy policy, unsigned priority)
 
- Protected Attributes inherited from DUNE::Tasks::Task
Contextm_ctx
 

Constructor & Destructor Documentation

Member Function Documentation

void Sensors::Microstrain3DMGX3::Task::calibrate ( uint16_t  addr,
uint16_t  value 
)
inline

Send calibration frame to the device.

Parameters
[in]addrEEPROM address.
[in]valuenew calibration value.

References Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM, and m_uart.

Referenced by poll().

bool Sensors::Microstrain3DMGX3::Task::isCalibrated ( void  )
inline

Check if sensor has the same hard iron calibration parameters.

Returns
true if the parameters are the same, false otherwise.

References c_num_addr, Sensors::Microstrain3DMGX3::CMD_READ_EEPROM, Sensors::Microstrain3DMGX3::CMD_READ_EEPROM_SIZE, m_addr, m_bfr, m_hard_iron, m_uart, poll(), and DUNE::Tasks::Task::war().

Referenced by runCalibration().

bool Sensors::Microstrain3DMGX3::Task::listen ( Commands  cmd,
Sizes  cmd_size 
)
inline

Listen for responses.

Parameters
[in]cmdcommand char.
[in]cmd_sizeexpected frame response size.
Returns
true if communication successful, false otherwise.

References c_bfr_size, Sensors::Microstrain3DMGX3::Arguments::data_tout, m_args, m_bfr, m_tstamp, m_uart, and validateChecksum().

Referenced by poll().

void Sensors::Microstrain3DMGX3::Task::onResourceAcquisition ( void  )
inlinevirtual
void Sensors::Microstrain3DMGX3::Task::onResourceRelease ( void  )
inlinevirtual

Release resources.

Reimplemented from DUNE::Tasks::Task.

References m_uart.

void Sensors::Microstrain3DMGX3::Task::onUpdateParameters ( void  )
inlinevirtual
bool Sensors::Microstrain3DMGX3::Task::poll ( Commands  cmd,
Sizes  cmd_size,
uint16_t  addr,
uint16_t  value 
)
inline

Send commands to the device.

Parameters
[in]cmdcommand char.
[in]cmd_sizeexpected frame response size.
[in]addraddress.
[in]valuevalue to be assigned.
Returns
true if communication successful, false otherwise.

References calibrate(), Sensors::Microstrain3DMGX3::CMD_DATA, Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET, Sensors::Microstrain3DMGX3::CMD_FWARE_VERSION, Sensors::Microstrain3DMGX3::CMD_READ_EEPROM, Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM, listen(), m_uart, requestCalibration(), and resetDevice().

Referenced by isCalibrated(), onResourceInitialization(), runCalibration(), setHardIron(), and task().

void Sensors::Microstrain3DMGX3::Task::requestCalibration ( uint16_t  addr)
inline

Request calibration parameters from device.

Parameters
[in]addraddress.

References Sensors::Microstrain3DMGX3::CMD_READ_EEPROM, and m_uart.

Referenced by poll().

void Sensors::Microstrain3DMGX3::Task::resetDevice ( void  )
inline

Soft-reset device.

References Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET, and m_uart.

Referenced by poll().

void Sensors::Microstrain3DMGX3::Task::rotateData ( void  )
inline

Correct data according with mounting position.

References m_accel, m_agvel, m_magfield, and m_rotation.

Referenced by task().

void Sensors::Microstrain3DMGX3::Task::runCalibration ( void  )
inline
bool Sensors::Microstrain3DMGX3::Task::setHardIron ( void  )
inline
bool Sensors::Microstrain3DMGX3::Task::validateChecksum ( const uint8_t *  bfr,
unsigned  bfr_len 
)
inline

Validate response checksum.

Parameters
[in]bfrbuffer to be validated.
[in]bfr_lenlength of the buffer.
Returns
true if checksum validated, false otherwise.

Referenced by listen().

Member Data Documentation

const unsigned Sensors::Microstrain3DMGX3::Task::c_bfr_size
static

Internal read buffer.

Referenced by listen().

const uint16_t Sensors::Microstrain3DMGX3::Task::c_mag_addr
static

Magnetic calibration initial address.

Referenced by Task().

const unsigned Sensors::Microstrain3DMGX3::Task::c_num_addr
static

Number of addresses for magnetic calibration.

Referenced by isCalibrated(), setHardIron(), and Task().

IMC::Acceleration Sensors::Microstrain3DMGX3::Task::m_accel

Acceleration message.

Referenced by rotateData(), and task().

uint16_t Sensors::Microstrain3DMGX3::Task::m_addr[c_num_addr]

Magnetic Calibration addresses.

Referenced by isCalibrated(), setHardIron(), and Task().

IMC::AngularVelocity Sensors::Microstrain3DMGX3::Task::m_agvel

Angular velocity message.

Referenced by rotateData(), and task().

Arguments Sensors::Microstrain3DMGX3::Task::m_args
uint8_t Sensors::Microstrain3DMGX3::Task::m_bfr[c_bfr_size]

Internal read buffer.

Referenced by isCalibrated(), listen(), and task().

IMC::EulerAngles Sensors::Microstrain3DMGX3::Task::m_euler

Euler angles message.

Referenced by task().

float Sensors::Microstrain3DMGX3::Task::m_hard_iron[3]

Rotated calibration parameters.

Referenced by isCalibrated(), onUpdateParameters(), and setHardIron().

IMC::MagneticField Sensors::Microstrain3DMGX3::Task::m_magfield

Magnetometer Vector message.

Referenced by rotateData(), and task().

Math::Matrix Sensors::Microstrain3DMGX3::Task::m_rotation

Rotation Matrix to correct mounting position.

Referenced by onUpdateParameters(), rotateData(), and task().

Time::Counter<float> Sensors::Microstrain3DMGX3::Task::m_timer

Timer to wait for soft-reset without issuing error.

Referenced by runCalibration(), Task(), and task().

double Sensors::Microstrain3DMGX3::Task::m_tstamp

Read timestamp.

Referenced by listen(), and task().

Counter<double> Sensors::Microstrain3DMGX3::Task::m_wdog

Watchdog.

Referenced by onResourceInitialization(), and task().

Collaboration diagram for Sensors::Microstrain3DMGX3::Task:
Collaboration graph