![]() |
DUNE: Uniform Navigational Environment
2024.09.0
|
Microstrain3DMGX3 software driver.
Public Member Functions | |
| Task (const std::string &name, Tasks::Context &ctx) | |
| void | onUpdateParameters (void) |
| bool | onConnect () override |
| void | onDisconnect () override |
| bool | onSynchronize () override |
| void | onInitializeDevice () override |
| bool | resetUart () |
| 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 | reportEntityState (void) |
| bool | onReadData () override |
Public Attributes | |
| unsigned | m_min_read |
| 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 |
| Counter< double > | m_state_timer |
| size_t | m_sample_count |
| size_t | m_faults_count |
| size_t | m_timeout_count |
| 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 |
|
inline |
References Sensors::Microstrain3DMGX3::Arguments::calib_threshold, Sensors::Microstrain3DMGX3::Arguments::calib_time, Sensors::Microstrain3DMGX3::Arguments::hard_iron, Sensors::Microstrain3DMGX3::Arguments::io_dev, Sensors::Microstrain3DMGX3::Arguments::min_read_flag, Sensors::Microstrain3DMGX3::Arguments::read_frequency, Sensors::Microstrain3DMGX3::Arguments::rotation_mx, Sensors::Microstrain3DMGX3::Arguments::timeout_error, and Sensors::Microstrain3DMGX3::Arguments::timeout_failure.
|
inline |
Send calibration frame to the device.
| [in] | addr | EEPROM address. |
| [in] | value | new calibration value. |
References Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM.
|
inline |
|
inline |
Check if sensor has the same hard iron calibration parameters.
References Sensors::Microstrain3DMGX3::CMD_READ_EEPROM, Sensors::Microstrain3DMGX3::CMD_READ_EEPROM_SIZE, and Sensors::Microstrain3DMGX3::Arguments::hard_iron.
Listen for responses.
| [in] | cmd | command char. |
| [in] | cmd_size | expected frame response size. |
|
inlineoverride |
Try to connect to the device.
References Sensors::Microstrain3DMGX3::Arguments::io_dev.
|
inlineoverride |
Disconnect from device.
|
inlineoverride |
Device may be initialized.
References Sensors::Microstrain3DMGX3::CMD_DATA_SIZE, and Sensors::Microstrain3DMGX3::Arguments::min_read_flag.
|
inlineoverride |
Get data from device.
References Sensors::Microstrain3DMGX3::CMD_DATA, Sensors::Microstrain3DMGX3::CMD_DATA_SIZE, and DUNE::Math::transpose().
|
inlineoverride |
Synchronize with device.
References Sensors::Microstrain3DMGX3::CMD_FWARE_VERSION, and Sensors::Microstrain3DMGX3::CMD_FWARE_VERSION_SIZE.
|
inline |
|
inline |
Send commands to the device.
| [in] | cmd | command char. |
| [in] | cmd_size | expected frame response size. |
| [in] | addr | address. |
| [in] | value | value to be assigned. |
References Sensors::Microstrain3DMGX3::CMD_DATA, Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET, Sensors::Microstrain3DMGX3::CMD_FWARE_VERSION, Sensors::Microstrain3DMGX3::CMD_READ_EEPROM, and Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM.
|
inline |
|
inline |
Request calibration parameters from device.
| [in] | addr | address. |
References Sensors::Microstrain3DMGX3::CMD_READ_EEPROM.
|
inline |
Soft-reset device.
References Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET.
|
inline |
|
inline |
Correct data according with mounting position.
|
inline |
Routine to run calibration proceedings.
References Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET, and Sensors::Microstrain3DMGX3::CMD_DEVICE_RESET_SIZE.
|
inline |
Set new hard iron calibration parameters.
References Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM, Sensors::Microstrain3DMGX3::CMD_WRITE_EEPROM_SIZE, and Sensors::Microstrain3DMGX3::Arguments::hard_iron.
|
inline |
Validate response checksum.
| [in] | bfr | buffer to be validated. |
| [in] | bfr_len | length of the buffer. |
|
static |
Internal read buffer.
|
static |
Magnetic calibration initial address.
|
static |
Number of addresses for magnetic calibration.
| IMC::Acceleration Sensors::Microstrain3DMGX3::Task::m_accel |
Acceleration message.
| uint16_t Sensors::Microstrain3DMGX3::Task::m_addr[c_num_addr] |
Magnetic Calibration addresses.
| IMC::AngularVelocity Sensors::Microstrain3DMGX3::Task::m_agvel |
Angular velocity message.
| uint8_t Sensors::Microstrain3DMGX3::Task::m_bfr[c_bfr_size] |
Internal read buffer.
| IMC::EulerAngles Sensors::Microstrain3DMGX3::Task::m_euler |
Euler angles message.
| size_t Sensors::Microstrain3DMGX3::Task::m_faults_count |
Faults count.
| float Sensors::Microstrain3DMGX3::Task::m_hard_iron[3] |
Rotated calibration parameters.
| IMC::MagneticField Sensors::Microstrain3DMGX3::Task::m_magfield |
Magnetometer Vector message.
| unsigned Sensors::Microstrain3DMGX3::Task::m_min_read |
Minimum Read Bytes.
| Math::Matrix Sensors::Microstrain3DMGX3::Task::m_rotation |
Rotation Matrix to correct mounting position.
| size_t Sensors::Microstrain3DMGX3::Task::m_sample_count |
Sample count.
| Counter<double> Sensors::Microstrain3DMGX3::Task::m_state_timer |
Entity state timer.
| size_t Sensors::Microstrain3DMGX3::Task::m_timeout_count |
Timeout count.
| Time::Counter<float> Sensors::Microstrain3DMGX3::Task::m_timer |
Timer to wait for soft-reset without issuing error.
| double Sensors::Microstrain3DMGX3::Task::m_tstamp |
Read timestamp.
| SerialPort* Sensors::Microstrain3DMGX3::Task::m_uart |
Serial port.
| Counter<double> Sensors::Microstrain3DMGX3::Task::m_wdog |
Watchdog.
