DUNE: Uniform Navigational Environment  2016.05.0
Transports::Seatrac::Task Struct Reference

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 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 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 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)
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
EntityStates m_state_entity
IMC::EntityState m_states [STA_MAX]
bool m_stop_comms
unsigned m_addr
std::string m_data
std::string m_datahex
DataSeatrac m_data_beacon
double m_last_input
MapName m_modem_names
MapAddr m_modem_addrs
IMC::DevDataText m_dev_data

Additional Inherited Members

- Public Types inherited from DUNE::Concurrency::Runnable
enum  State {
  StateStarting, StateRunning, StateStopping, StateDead,
- 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)
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 bool onWriteParamsXML (std::ostream &os) const
virtual void onEntityReservation (void)
virtual void onEntityResolution (void)
virtual void onReportEntityState (void)
virtual void onUpdateParameters (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)
- Protected Attributes inherited from DUNE::Tasks::Task
< Entities::BasicEntity * > 

Constructor & Destructor Documentation

Member Function Documentation

void Transports::Seatrac::Task::clearTicket ( IMC::UamTxStatus::ValueEnum  reason,
const std::string &  error = "" 

Clear ticket.

[in]reasonreason value.
[in]errorerror message.

References m_ticket, and sendTxStatus().

Referenced by handleBinaryMessage(), onResourceRelease(), processNewData(), and replaceTicket().

void Transports::Seatrac::Task::consume ( const IMC::VehicleMedium *  msg)
void Transports::Seatrac::Task::handleRxMessage ( const std::string &  str)
bool Transports::Seatrac::Task::hasConnection ( void  )

Checks if the modem is working.

true if modem has a new message.

References Transports::Seatrac::CID_STATUS, m_data_beacon, and Transports::Seatrac::DataSeatrac::new_message.

Referenced by onResourceInitialization().

unsigned Transports::Seatrac::Task::lookupSystemAddress ( const std::string &  name)

Lookup system address.

[in]namesystem name
system address.

References m_modem_names.

Referenced by consume().

std::string Transports::Seatrac::Task::lookupSystemName ( unsigned  addr)

Lookup system name.

[in]addrsystem address.
system name.

References m_modem_addrs.

Referenced by handleBinaryMessage(), and handleRxMessage().

void Transports::Seatrac::Task::onMain ( void  )
void Transports::Seatrac::Task::onResourceAcquisition ( void  )
void Transports::Seatrac::Task::onResourceRelease ( void  )

Release resources.

Reimplemented from DUNE::Tasks::Task.

References clearTicket(), and m_handle.

bool Transports::Seatrac::Task::openSocket ( void  )

Open TCP socket.

true if socket was opened, false otherwise.

References m_args, m_handle, and Transports::Seatrac::Arguments::uart_dev.

Referenced by onResourceAcquisition().

void Transports::Seatrac::Task::processInput ( double  timeout = 1.0)
bool Transports::Seatrac::Task::processSentence ( void  )

Process sentence.

true if message was correctly processed, false otherwise.

References m_data, m_datahex, and DUNE::Tasks::Task::war().

Referenced by readSentence().

void Transports::Seatrac::Task::replaceTicket ( const Ticket ticket)

Replace ticket.

[in]ticketnew ticket to replace previous one.

References clearTicket(), and m_ticket.

Referenced by consume().

void Transports::Seatrac::Task::sendCommand ( const std::string &  cmd)

Send command to the acoustic modem.

[in]cmdcommand string.

References DUNE::Tasks::Task::dispatch(), m_dev_data, and m_handle.

Referenced by onResourceInitialization(), sendCommandAndWait(), and sendProtectedCommand().

void Transports::Seatrac::Task::sendCommandAndWait ( const std::string &  cmd,
double  delay_aft 

Send command and waits for response.

[in]cmdcommand string.
[in]delay_befdelay before send comamnd.
[in]delay_aftdelay after send comamnd.

References processInput(), and sendCommand().

Referenced by onResourceInitialization().

void Transports::Seatrac::Task::sendProtectedCommand ( const std::string &  cmd)

Send command if the modem has conditions to operate.

[in]cmdcommand string.

References Transports::Seatrac::DataSeatrac::cid_dat_send_msg, Transports::Seatrac::CidDatSendMsg::lock_flag, m_data_beacon, m_stop_comms, and sendCommand().

Referenced by consume(), handleBinaryMessage(), and processNewData().

void Transports::Seatrac::Task::sendTxStatus ( const Ticket ticket,
IMC::UamTxStatus::ValueEnum  value,
const std::string &  error = "" 

Updates transmission status.

[in]ticketticket status to be transmitted.
[in]valuestatus index.
[in]errorerror message.

References DUNE::Tasks::Task::dispatch(), Transports::Seatrac::Ticket::imc_eid, Transports::Seatrac::Ticket::imc_sid, and Transports::Seatrac::Ticket::seq.

Referenced by clearTicket(), and consume().

void Transports::Seatrac::Task::setAndSendState ( EntityStates  state)

Set entity state.

[in]statenew entity state.

References m_state_entity, m_states, and DUNE::Tasks::Task::setEntityState().

Referenced by onMain(), onResourceAcquisition(), onResourceInitialization(), and processInput().

Member Data Documentation

unsigned Transports::Seatrac::Task::m_addr

Modem address.

Referenced by handleRxMessage(), and onResourceInitialization().

Arguments Transports::Seatrac::Task::m_args
std::string Transports::Seatrac::Task::m_data

Data buffer.

Referenced by processSentence(), and readSentence().

std::string Transports::Seatrac::Task::m_datahex

Converted data buffer.

Referenced by processSentence(), and readSentence().

IMC::DevDataText Transports::Seatrac::Task::m_dev_data

Referenced by readSentence(), and sendCommand().

IO::Handle* Transports::Seatrac::Task::m_handle
double Transports::Seatrac::Task::m_last_input

Time of last serial port input.

Referenced by onMain(), onResourceInitialization(), and readSentence().

MapAddr Transports::Seatrac::Task::m_modem_addrs

Map of seatrac modems by address.

Referenced by lookupSystemName(), and onResourceInitialization().

MapName Transports::Seatrac::Task::m_modem_names

Map of seatrac modems by name.

Referenced by lookupSystemAddress(), and onResourceInitialization().

EntityStates Transports::Seatrac::Task::m_state_entity

Current state.

Referenced by onResourceInitialization(), processInput(), and setAndSendState().

IMC::EntityState Transports::Seatrac::Task::m_states[STA_MAX]

Entity states.

Referenced by onResourceInitialization(), setAndSendState(), and Task().

bool Transports::Seatrac::Task::m_stop_comms

Stop reports on the ground.

Referenced by consume(), and sendProtectedCommand().

Ticket* Transports::Seatrac::Task::m_ticket

Current transmission ticket.

Referenced by clearTicket(), handleBinaryMessage(), and replaceTicket().

Collaboration diagram for Transports::Seatrac::Task:
Collaboration graph