DUNE: Uniform Navigational Environment
2019.02.1
|
Public Member Functions | |
Task (const std::string &name, Tasks::Context &ctx) | |
void | setAndSendState (EntityStates state) |
bool | processSentence (void) |
void | processNewData (void) |
void | readSentence (void) |
bool | openSocket (void) |
void | onResourceAcquisition (void) |
void | onResourceInitialization (void) |
void | onUpdateParameters (void) |
void | runCalibration (void) |
void | consume (const IMC::MagneticField *msg) |
bool | isCalibrated (void) |
bool | setHardIron (void) |
void | onResourceRelease (void) |
void | sendCommandAndWait (const std::string &cmd, double delay_aft) |
void | sendProtectedCommand (const std::string &cmd) |
void | sendCommand (const std::string &cmd) |
bool | hasConnection (void) |
void | handleBinaryMessage (void) |
void | handleRxMessage (const std::string &str) |
void | handleAcousticInformation (const Acofix_t &aco_fix) |
void | handleCommunicationError (void) |
void | rotateData (void) |
void | handleAhrsData (void) |
void | handlePressureSensor (void) |
void | handleDatSendResponse (void) |
void | consume (const IMC::UamTxFrame *msg) |
void | sendTxStatus (const Ticket &ticket, IMC::UamTxStatus::ValueEnum value, const std::string &error="") |
void | clearTicket (IMC::UamTxStatus::ValueEnum reason, const std::string &error="") |
void | replaceTicket (const Ticket &ticket) |
unsigned | lookupSystemAddress (const std::string &name) |
std::string | lookupSystemName (unsigned addr) |
void | processInput (double timeout=1.0) |
void | consume (const IMC::VehicleMedium *msg) |
void | resetOneWayTimer () |
void | checkTxOWAY (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) |
Public Attributes | |
IO::Handle * | m_handle |
Arguments | m_args |
bool | m_config_status |
bool | m_pre_detected |
EntityStates | m_state_entity |
IMC::EntityState | m_states [STA_MAX] |
bool | m_stop_comms |
bool | m_usbl_receiver |
unsigned | m_addr |
std::string | m_data |
std::string | m_datahex |
DataSeatrac | m_data_beacon |
double | m_last_input |
double | m_tstamp |
Time::Counter< double > | m_oway_timer |
float | m_hard_iron [3] |
MapName | m_modem_names |
MapAddr | m_modem_addrs |
Ticket * | m_ticket |
IMC::DevDataText | m_dev_data |
IMC::EulerAngles | m_euler |
IMC::Acceleration | m_accel |
IMC::AngularVelocity | m_agvel |
IMC::MagneticField | m_magfield |
IMC::SoundSpeed | m_sspeed |
IMC::Depth | m_depth |
IMC::Pressure | m_pressure |
IMC::Temperature | m_temperature |
Math::Matrix | m_rotation |
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 | 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 |
Constructor.
[in] | name | task name. |
[in] | ctx | context. |
References Transports::Seatrac::Arguments::addr_section, Transports::Seatrac::Arguments::arhs_mode, Transports::Seatrac::Arguments::calib_threshold, Transports::Seatrac::Arguments::enhanced_usbl, Transports::Seatrac::Arguments::hard_iron, Transports::Seatrac::Arguments::max_range, Transports::Seatrac::Arguments::only_underwater, Transports::Seatrac::Arguments::pressure_sensor_mode, Transports::Seatrac::Arguments::rotation_mx, Transports::Seatrac::STA_ACTIVE, Transports::Seatrac::STA_BOOT, Transports::Seatrac::STA_ERR_COM, Transports::Seatrac::STA_ERR_STP, Transports::Seatrac::STA_IDLE, Transports::Seatrac::Arguments::uart_baud, Transports::Seatrac::Arguments::uart_dev, and Transports::Seatrac::Arguments::usbl_mode.
|
inline |
Checks if an OWAY message is waiting to be sent.
References Transports::Seatrac::CID_DAT_SEND, Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::MSG_OWAY, Transports::Seatrac::MSG_OWAYU, Transports::Seatrac::CidDatSendMsg::msg_type, Transports::Seatrac::CidDatSendMsg::packetDataNextPart(), and Transports::Seatrac::CidDatSendMsg::packetDataSendStatus().
|
inline |
Clear ticket.
[in] | reason | reason value. |
[in] | error | error message. |
|
inline |
|
inline |
References Transports::Seatrac::Ticket::ack, Transports::Seatrac::Ticket::addr, Transports::Seatrac::CID_DAT_SEND, Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::Arguments::enhanced_usbl, Transports::Seatrac::Ticket::imc_eid, Transports::Seatrac::Ticket::imc_sid, Transports::Seatrac::MSG_OWAY, Transports::Seatrac::MSG_OWAYU, Transports::Seatrac::MSG_REQ, Transports::Seatrac::MSG_REQU, Transports::Seatrac::MSG_REQX, Transports::Seatrac::CidDatSendMsg::msg_type, Transports::Seatrac::CidDatSendMsg::packetDataBuild(), Transports::Seatrac::CidDatSendMsg::packetDataSendStatus(), Transports::Seatrac::Ticket::seq, and Transports::Seatrac::Arguments::usbl_mode.
|
inline |
References Transports::Seatrac::Arguments::only_underwater.
|
inline |
Handle acoustic information from received data.
param[in] aco_fix Acoustic information field of the received message.
References Transports::Seatrac::Acofix_t::attitude_pitch, Transports::Seatrac::Acofix_t::attitude_roll, Transports::Seatrac::Acofix_t::attitude_yaw, Transports::Seatrac::Acofix_t::outputflags_list, Transports::Seatrac::Acofix_t::position_depth, Transports::Seatrac::Acofix_t::position_easting, Transports::Seatrac::Acofix_t::position_northing, Transports::Seatrac::Acofix_t::range_dist, Transports::Seatrac::Ticket::seq, Transports::Seatrac::Acofix_t::src_id, Transports::Seatrac::Acofix_t::usbl_azimuth, and Transports::Seatrac::Acofix_t::usbl_elevation.
|
inline |
Handle AHRS data send by local beacon.
The method tries to dispach all the necessary information for navigation
References Transports::Seatrac::AhrsCal_t::acc_max_x, Transports::Seatrac::AhrsCal_t::acc_max_y, Transports::Seatrac::AhrsCal_t::acc_max_z, Transports::Seatrac::CidSettingsMsg::ahrs_cal, Transports::Seatrac::CidStatusMsg::ahrs_comp_acc_x, Transports::Seatrac::CidStatusMsg::ahrs_comp_acc_y, Transports::Seatrac::CidStatusMsg::ahrs_comp_acc_z, Transports::Seatrac::CidStatusMsg::ahrs_comp_gyro_x, Transports::Seatrac::CidStatusMsg::ahrs_comp_gyro_y, Transports::Seatrac::CidStatusMsg::ahrs_comp_gyro_z, Transports::Seatrac::CidStatusMsg::ahrs_comp_mag_x, Transports::Seatrac::CidStatusMsg::ahrs_comp_mag_y, Transports::Seatrac::CidStatusMsg::ahrs_comp_mag_z, Transports::Seatrac::CidStatusMsg::attitude_pitch, Transports::Seatrac::CidStatusMsg::attitude_roll, Transports::Seatrac::CidStatusMsg::attitude_yaw, Transports::Seatrac::DataSeatrac::cid_settings_msg, Transports::Seatrac::DataSeatrac::cid_status_msg, Transports::Seatrac::CidStatusMsg::outputflags_list, and Transports::Seatrac::CidStatusMsg::timestamp.
|
inline |
Processing incoming data.
References Transports::Seatrac::CidDatReceiveMsg::ack_flag, Transports::Seatrac::CidDatReceiveMsg::aco_fix, Transports::Seatrac::DataSeatrac::cid_dat_receive_msg, Transports::Seatrac::CID_DAT_SEND, Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::CidDatReceiveMsg::getFullMsg(), Transports::Seatrac::CidDatReceiveMsg::packetDataDecode(), and Transports::Seatrac::CidDatSendMsg::packetDataNextPart().
|
inline |
Handle errors of communication with both local and remote beacon.
The method tries to send the packet again until it reaches the maximum number of retries.
References Transports::Seatrac::CID_DAT_SEND, Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::MSG_OWAY, Transports::Seatrac::MSG_OWAYU, Transports::Seatrac::CidDatSendMsg::msg_type, and Transports::Seatrac::CidDatSendMsg::packetDataNextPart().
|
inline |
Handle the response to a CID_Data_Send command.
If the acknowledged message is an OWAY and it is compound by more than one packet, the method sends the following packet. If the sending fails, it tries to send the packet again. If the modem is busy, it tries to send the packet to poll the status.
References Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::CST_OK, Transports::Seatrac::CST_XCVR_BUSY, and Transports::Seatrac::CidDatSendMsg::status.
|
inline |
Handle Pressure , Depth, Temperature and Sound Speed data and dispactch .
The method tries to dispach data prom sensors:Pressure , Depth, Temperature and Sound Speed data
References Transports::Seatrac::DataSeatrac::cid_status_msg, Transports::Seatrac::CidStatusMsg::environment_pressure, Transports::Seatrac::CidStatusMsg::environment_temperature, Transports::Seatrac::CidStatusMsg::EnvironmentDepth, and Transports::Seatrac::CidStatusMsg::EnvironmentVos.
|
inline |
Publish received acoustic message.
[in] | str | received message. |
References Transports::Seatrac::CidDatReceiveMsg::aco_fix, Transports::Seatrac::DataSeatrac::cid_dat_receive_msg, Transports::Seatrac::Acofix_t::dest_id, and Transports::Seatrac::Acofix_t::src_id.
|
inline |
Checks if the modem is working.
|
inline |
Check if sensor has the same hard iron calibration parameters.
References Transports::Seatrac::CidSettingsMsg::ahrs_cal, Transports::Seatrac::DataSeatrac::cid_settings_msg, Transports::Seatrac::Arguments::hard_iron, Transports::Seatrac::AhrsCal_t::mag_hard_x, Transports::Seatrac::AhrsCal_t::mag_hard_y, and Transports::Seatrac::AhrsCal_t::mag_hard_z.
|
inline |
Lookup system address.
[in] | name | system name |
|
inline |
Lookup system name.
[in] | addr | system address. |
|
inlinevirtual |
|
inlinevirtual |
Acquire resources.
Reimplemented from DUNE::Tasks::Task.
References Transports::Seatrac::STA_BOOT, Transports::Seatrac::Arguments::uart_baud, and Transports::Seatrac::Arguments::uart_dev.
|
inlinevirtual |
Initialize resources and configure modem.
Reimplemented from DUNE::Tasks::Task.
References Transports::Seatrac::ACC_CAL_FLAG, Transports::Seatrac::Arguments::addr_section, Transports::Seatrac::CidSettingsMsg::ahrs_cal, Transports::Seatrac::AHRS_COMP_DATA_FLAG, Transports::Seatrac::AHRS_RAW_DATA_FLAG, Transports::Seatrac::Arguments::arhs_mode, Transports::Seatrac::ATTITUDE_FLAG, Transports::Seatrac::BT_X150, Transports::Seatrac::CID_SETTINGS_GET, Transports::Seatrac::DataSeatrac::cid_settings_msg, Transports::Seatrac::CID_SETTINGS_SAVE, Transports::Seatrac::CID_SETTINGS_SET, Transports::Seatrac::DataSeatrac::cid_sys_info, Transports::Seatrac::CID_SYS_INFO, Transports::Seatrac::CID_SYS_REBOOT, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::ENVIRONMENT_FLAG, Transports::Seatrac::Arguments::hard_iron, Transports::Seatrac::CidSysInfo::hardware, Transports::Seatrac::MAG_CAL_FLAG, Transports::Seatrac::AhrsCal_t::mag_hard_x, Transports::Seatrac::AhrsCal_t::mag_hard_y, Transports::Seatrac::AhrsCal_t::mag_hard_z, Transports::Seatrac::Arguments::max_range, Transports::Seatrac::DataSeatrac::newDataAvailable(), Transports::Seatrac::Hardware_t::part_number, Transports::Seatrac::STA_ERR_STP, Transports::Seatrac::STA_IDLE, Transports::Seatrac::CidSettingsMsg::status_flags, Transports::Seatrac::STATUS_MODE_10HZ, Transports::Seatrac::STATUS_MODE_1HZ, Transports::Seatrac::CidSettingsMsg::status_output, Transports::Seatrac::USBL_USE_AHRS_FLAG, Transports::Seatrac::CidSettingsMsg::xcvr_beacon_id, Transports::Seatrac::XCVR_FIX_MSGS_FLAG, Transports::Seatrac::CidSettingsMsg::xcvr_flags, Transports::Seatrac::XCVR_POSFLT_ENABLE_FLAG, Transports::Seatrac::CidSettingsMsg::xcvr_range_tmo, and Transports::Seatrac::XCVR_USBL_MSGS_FLAG.
|
inlinevirtual |
Release resources.
Reimplemented from DUNE::Tasks::Task.
|
inlinevirtual |
Update parameters.
Reimplemented from DUNE::Tasks::Task.
References Transports::Seatrac::Arguments::hard_iron, Transports::Seatrac::Arguments::rotation_mx, and DUNE::Math::transpose().
|
inline |
Open TCP socket.
References Transports::Seatrac::Arguments::uart_dev.
|
inline |
Check for incoming data.
[in] | timeout | timeout time. |
References Transports::Seatrac::STA_ACTIVE, Transports::Seatrac::STA_ERR_STP, and Transports::Seatrac::STA_IDLE.
|
inline |
Process new data.
References Transports::Seatrac::Arguments::arhs_mode, Transports::Seatrac::CID_DAT_ERROR, Transports::Seatrac::CID_DAT_RECEIVE, Transports::Seatrac::CID_DAT_SEND, Transports::Seatrac::CID_STATUS, Transports::Seatrac::DataSeatrac::newDataAvailable(), and Transports::Seatrac::Arguments::pressure_sensor_mode.
|
inline |
Process sentence.
|
inline |
Release Read sentence.
References Transports::Seatrac::dataParser(), and Transports::Seatrac::printDebugFunction().
|
inline |
Replace ticket.
[in] | ticket | new ticket to replace previous one. |
|
inline |
|
inline |
Correct data according with mounting position.
|
inline |
Routine to run calibration proceedings.
|
inline |
Send command to the acoustic modem.
[in] | cmd | command string. |
|
inline |
Send command and waits for response.
[in] | cmd | command string. |
[in] | delay_bef | delay before send comamnd. |
[in] | delay_aft | delay after send comamnd. |
|
inline |
Send command if the modem has conditions to operate.
[in] | cmd | command string. |
References Transports::Seatrac::DataSeatrac::cid_dat_send_msg, and Transports::Seatrac::CidDatSendMsg::lock_flag.
|
inline |
Updates transmission status.
[in] | ticket | ticket status to be transmitted. |
[in] | value | status index. |
[in] | error | error message. |
References Transports::Seatrac::Ticket::imc_eid, Transports::Seatrac::Ticket::imc_sid, and Transports::Seatrac::Ticket::seq.
|
inline |
Set entity state.
[in] | state | new entity state. |
|
inline |
Set new hard iron calibration parameters.
References Transports::Seatrac::CidSettingsMsg::ahrs_cal, Transports::Seatrac::CID_SETTINGS_GET, Transports::Seatrac::DataSeatrac::cid_settings_msg, Transports::Seatrac::CID_SETTINGS_SAVE, Transports::Seatrac::CID_SETTINGS_SET, Transports::Seatrac::commandCreateSeatrac(), Transports::Seatrac::Arguments::hard_iron, Transports::Seatrac::AhrsCal_t::mag_hard_x, Transports::Seatrac::AhrsCal_t::mag_hard_y, and Transports::Seatrac::AhrsCal_t::mag_hard_z.
IMC::Acceleration Transports::Seatrac::Task::m_accel |
Acceleration message.
unsigned Transports::Seatrac::Task::m_addr |
Modem address.
IMC::AngularVelocity Transports::Seatrac::Task::m_agvel |
Angular velocity message.
bool Transports::Seatrac::Task::m_config_status |
Config Status.
std::string Transports::Seatrac::Task::m_data |
Data buffer.
DataSeatrac Transports::Seatrac::Task::m_data_beacon |
Seatrac data structures.
std::string Transports::Seatrac::Task::m_datahex |
Converted data buffer.
IMC::Depth Transports::Seatrac::Task::m_depth |
IMC::DevDataText Transports::Seatrac::Task::m_dev_data |
IMC::EulerAngles Transports::Seatrac::Task::m_euler |
Euler angles message.
IO::Handle* Transports::Seatrac::Task::m_handle |
Serial port handle.
float Transports::Seatrac::Task::m_hard_iron[3] |
hard iron calibration parameters.
double Transports::Seatrac::Task::m_last_input |
Time of last serial port input.
IMC::MagneticField Transports::Seatrac::Task::m_magfield |
Magnetometer Vector message.
MapAddr Transports::Seatrac::Task::m_modem_addrs |
Map of seatrac modems by address.
MapName Transports::Seatrac::Task::m_modem_names |
Map of seatrac modems by name.
Time::Counter<double> Transports::Seatrac::Task::m_oway_timer |
Timer to manage the fragmentation of OWAY messages.
bool Transports::Seatrac::Task::m_pre_detected |
c_preamble detected
IMC::Pressure Transports::Seatrac::Task::m_pressure |
Math::Matrix Transports::Seatrac::Task::m_rotation |
Rotation Matrix to correct mounting position.
IMC::SoundSpeed Transports::Seatrac::Task::m_sspeed |
Current sound speed.
EntityStates Transports::Seatrac::Task::m_state_entity |
Current state.
IMC::EntityState Transports::Seatrac::Task::m_states[STA_MAX] |
Entity states.
bool Transports::Seatrac::Task::m_stop_comms |
Stop reports on the ground.
IMC::Temperature Transports::Seatrac::Task::m_temperature |
Ticket* Transports::Seatrac::Task::m_ticket |
Current transmission ticket.
double Transports::Seatrac::Task::m_tstamp |
Read timestamp.
bool Transports::Seatrac::Task::m_usbl_receiver |
True if the beacon has an USBL receiver.