|
Fawkes API
Fawkes Development Version
|
Laser acqusition thread for Sick TiM55x laser range finders. More...
#include "sick_tim55x_common_aqt.h"

Public Member Functions | |
| SickTiM55xCommonAcquisitionThread (std::string &cfg_name, std::string &cfg_prefix) | |
| Constructor. More... | |
| virtual | ~SickTiM55xCommonAcquisitionThread () |
| Destructor. More... | |
| virtual void | pre_init (fawkes::Configuration *config, fawkes::Logger *logger) |
| Pre initialization. More... | |
| void | read_common_config () |
| Read common configuration parameters. More... | |
Public Member Functions inherited from LaserAcquisitionThread | |
| LaserAcquisitionThread (const char *thread_name) | |
| Constructor. More... | |
| bool | lock_if_new_data () |
| Lock data if fresh. More... | |
| void | unlock () |
| Unlock data,. More... | |
| const float * | get_distance_data () |
| Get distance data. More... | |
| const float * | get_echo_data () |
| Get echo data. More... | |
| const fawkes::Time * | get_timestamp () |
| Get timestamp of data. More... | |
| unsigned int | get_distance_data_size () |
| Get distance data size. More... | |
| unsigned int | get_echo_data_size () |
| Get echo data size. More... | |
Public Member Functions inherited from fawkes::Thread | |
| virtual | ~Thread () |
| Virtual destructor. More... | |
| virtual void | init () |
| Initialize the thread. More... | |
| bool | prepare_finalize () |
| Prepare finalization. More... | |
| virtual bool | prepare_finalize_user () |
| Prepare finalization user implementation. More... | |
| virtual void | finalize () |
| Finalize the thread. More... | |
| void | cancel_finalize () |
| Cancel finalization. More... | |
| void | start (bool wait=true) |
| Call this method to start the thread. More... | |
| void | cancel () |
| Cancel a thread. More... | |
| void | join () |
| Join the thread. More... | |
| void | detach () |
| Detach the thread. More... | |
| void | kill (int sig) |
| Send signal to a thread. More... | |
| bool | operator== (const Thread &thread) |
| Check if two threads are the same. More... | |
| void | wakeup () |
| Wake up thread. More... | |
| void | wakeup (Barrier *barrier) |
| Wake up thread and wait for barrier afterwards. More... | |
| void | wait_loop_done () |
| Wait for the current loop iteration to finish. More... | |
| OpMode | opmode () const |
| Get operation mode. More... | |
| pthread_t | thread_id () const |
| Get ID of thread. More... | |
| bool | started () const |
| Check if thread has been started. More... | |
| bool | cancelled () const |
| Check if thread has been cancelled. More... | |
| bool | detached () const |
| Check if thread has been detached. More... | |
| bool | running () const |
| Check if the thread is running. More... | |
| bool | waiting () const |
| Check if thread is currently waiting for wakeup. More... | |
| const char * | name () const |
| Get name of thread. More... | |
| void | set_flags (uint32_t flags) |
| Set all flags in one go. More... | |
| void | set_flag (uint32_t flag) |
| Set flag for the thread. More... | |
| void | unset_flag (uint32_t flag) |
| Unset flag. More... | |
| bool | flagged_bad () const |
| Check if FLAG_BAD was set. More... | |
| void | set_delete_on_exit (bool del) |
| Set whether the thread should be deleted on exit. More... | |
| void | set_prepfin_hold (bool hold) |
| Hold prepare_finalize(). More... | |
| void | add_notification_listener (ThreadNotificationListener *notification_listener) |
| Add notification listener. More... | |
| void | remove_notification_listener (ThreadNotificationListener *notification_listener) |
| Remove notification listener. More... | |
| void | notify_of_failed_init () |
| Notify of failed init. More... | |
| void | add_loop_listener (ThreadLoopListener *loop_listener) |
| Add loop listener. More... | |
| void | remove_loop_listener (ThreadLoopListener *loop_listener) |
| Remove loop listener. More... | |
Public Member Functions inherited from fawkes::LoggingAspect | |
| LoggingAspect () | |
| Constructor. More... | |
| virtual | ~LoggingAspect () |
| Virtual empty Destructor. More... | |
| void | init_LoggingAspect (Logger *logger) |
| Set the logger. More... | |
Public Member Functions inherited from fawkes::Aspect | |
| const std::list< const char * > & | get_aspects () const |
| Get list of aspect names attached to a aspected thread. More... | |
Public Member Functions inherited from fawkes::ConfigurableAspect | |
| ConfigurableAspect () | |
| Constructor. More... | |
| virtual | ~ConfigurableAspect () |
| Virtual empty Destructor. More... | |
| void | init_ConfigurableAspect (Configuration *config) |
| Set the configuration It is guaranteed that this is called for a configurable thread before Thread::start() is called (when running regularly inside Fawkes). More... | |
Public Member Functions inherited from fawkes::ClockAspect | |
| ClockAspect () | |
| Constructor. More... | |
| virtual | ~ClockAspect () |
| Virtual empty destructor. More... | |
| void | init_ClockAspect (Clock *clock) |
| Set the clock. More... | |
Public Member Functions inherited from fawkes::ConfigurationChangeHandler | |
| ConfigurationChangeHandler (const char *path_prefix) | |
| Constructor. More... | |
| virtual | ~ConfigurationChangeHandler () |
| Destructor. More... | |
| const char * | config_monitor_prefix () |
| Which path prefix shall be monitored. More... | |
Protected Member Functions | |
| void | init_device () |
| Initialize device. More... | |
| void | resync () |
| Resynchronize to laser data. More... | |
| void | parse_datagram (const unsigned char *datagram, size_t datagram_length) |
| Parse incoming message from device. More... | |
| virtual void | send_with_reply (const char *request, std::string *reply=NULL)=0 |
| Send a request and expect a reply. More... | |
| virtual void | open_device ()=0 |
| Open the device. More... | |
| virtual void | close_device ()=0 |
| Close the device. More... | |
| virtual void | flush_device ()=0 |
| Flush the device. More... | |
Protected Member Functions inherited from LaserAcquisitionThread | |
| virtual void | run () |
| Stub to see name in backtrace for easier debugging. More... | |
| void | alloc_distances (unsigned int num_distances) |
| Allocate distances array. More... | |
| void | alloc_echoes (unsigned int num_echoes) |
| Allocate echoes array. More... | |
| void | reset_distances () |
| Reset all distance values to NaN. More... | |
| void | reset_echoes () |
| Reset all distance values to NaN. More... | |
Protected Member Functions inherited from fawkes::Thread | |
| Thread (const char *name) | |
| Constructor. More... | |
| Thread (const char *name, OpMode op_mode) | |
| Constructor. More... | |
| void | exit () |
| Exit the thread. More... | |
| void | test_cancel () |
| Set cancellation point. More... | |
| void | yield () |
| Yield the processor to another thread or process. More... | |
| void | set_opmode (OpMode op_mode) |
| Set operation mode. More... | |
| void | set_prepfin_conc_loop (bool concurrent=true) |
| Set concurrent execution of prepare_finalize() and loop(). More... | |
| void | set_coalesce_wakeups (bool coalesce=true) |
| Set wakeup coalescing. More... | |
| void | set_name (const char *format,...) |
| Set name of thread. More... | |
| virtual void | once () |
| Execute an action exactly once. More... | |
| virtual void | loop () |
| Code to execute in the thread. More... | |
| bool | wakeup_pending () |
| Check if wakeups are pending. More... | |
Protected Member Functions inherited from fawkes::Aspect | |
| void | add_aspect (const char *name) |
| Add an aspect to a thread. More... | |
Protected Attributes | |
| std::string | cfg_name_ |
| Name of the particular configuration instance. More... | |
| std::string | cfg_prefix_ |
| Configuration path prefix for this configuration. More... | |
| std::string | dev_model_ |
| Device model type as string. More... | |
Protected Attributes inherited from LaserAcquisitionThread | |
| fawkes::Mutex * | _data_mutex |
| Lock while writing to distances or echoes array or marking new data. More... | |
| fawkes::Time * | _timestamp |
| Time when the most recent data was received. More... | |
| bool | _new_data |
| Set to true in your loop if new data is available. More... | |
| float * | _distances |
| Allocate a float array and copy your distance values measured in meters here. More... | |
| float * | _echoes |
| Allocate a float array and copy your echo values here. More... | |
| unsigned int | _distances_size |
| Assign this the size of the _distances array. More... | |
| unsigned int | _echoes_size |
| Assign this the size of the _echoes array. More... | |
Protected Attributes inherited from fawkes::Thread | |
| bool | finalize_prepared |
| True if prepare_finalize() has been called and was not stopped with a cancel_finalize(), false otherwise. More... | |
| Mutex * | loop_mutex |
| Mutex that is used to protect a call to loop(). More... | |
| Mutex * | loopinterrupt_antistarve_mutex |
| Mutex to avoid starvation when trying to lock loop_mutex. More... | |
Protected Attributes inherited from fawkes::LoggingAspect | |
| Logger * | logger |
| This is the Logger member used to access the logger. More... | |
Protected Attributes inherited from fawkes::ConfigurableAspect | |
| Configuration * | config |
| This is the Configuration member used to access the configuration. More... | |
Protected Attributes inherited from fawkes::ClockAspect | |
| Clock * | clock |
| By means of this member access to the clock is given. More... | |
Additional Inherited Members | |
Public Types inherited from fawkes::Thread | |
| enum | OpMode { OPMODE_CONTINUOUS , OPMODE_WAITFORWAKEUP } |
| Thread operation mode. More... | |
| enum | CancelState { CANCEL_ENABLED , CANCEL_DISABLED } |
| Cancel state. More... | |
Static Public Member Functions inherited from fawkes::Thread | |
| static Thread * | current_thread () |
| Get the Thread instance of the currently running thread. More... | |
| static Thread * | current_thread_noexc () throw () |
| Similar to current_thread, but does never throw an exception. More... | |
| static pthread_t | current_thread_id () |
| Get the ID of the currently running thread. More... | |
| static std::string | current_thread_name () |
| Get the name of the current thread. More... | |
| static void | current_thread_name (const std::string &thread_name) |
| Set the name of the current thread. More... | |
| static void | init_main () |
| Initialize Thread wrapper instance for main thread. More... | |
| static void | destroy_main () |
| Destroy main thread wrapper instance. More... | |
| static void | set_cancel_state (CancelState new_state, CancelState *old_state=0) |
| Set the cancel state of the current thread. More... | |
Static Public Attributes inherited from fawkes::Thread | |
| static const unsigned int | FLAG_BAD = 0x00000001 |
| Standard thread flag: "thread is bad". More... | |
Laser acqusition thread for Sick TiM55x laser range finders.
This thread fetches the data from the laser.
Definition at line 37 of file sick_tim55x_common_aqt.h.
| SickTiM55xCommonAcquisitionThread::SickTiM55xCommonAcquisitionThread | ( | std::string & | cfg_name, |
| std::string & | cfg_prefix | ||
| ) |
Constructor.
| cfg_name | short name of configuration group |
| cfg_prefix | configuration path prefix |
Definition at line 74 of file sick_tim55x_common_aqt.cpp.
References cfg_name_, cfg_prefix_, and fawkes::Thread::set_name().
|
virtual |
Destructor.
Definition at line 86 of file sick_tim55x_common_aqt.cpp.
|
protectedpure virtual |
Close the device.
Virtual method implemented by the actual connection driver.
Referenced by init_device().
|
protectedpure virtual |
Flush the device.
Read all current data on the channel and return on no data to read or timeout.
Referenced by init_device(), and resync().
|
protected |
Initialize device.
Definition at line 133 of file sick_tim55x_common_aqt.cpp.
References fawkes::Exception::append(), close_device(), dev_model_, flush_device(), fawkes::Logger::log_debug(), fawkes::LoggingAspect::logger, fawkes::Thread::name(), open_device(), and send_with_reply().
Referenced by SickTiM55xEthernetAcquisitionThread::init(), SickTiM55xUSBAcquisitionThread::init(), SickTiM55xEthernetAcquisitionThread::loop(), and SickTiM55xUSBAcquisitionThread::loop().
|
protectedpure virtual |
Open the device.
Virtual method implemented by the actual connection driver.
Referenced by init_device().
|
protected |
Parse incoming message from device.
Based on https://www.mysick.com/saqqara/pdf.aspx?id=im0053129 and https://github.com/uos/sick_tim3xx.
| datagram | data content |
| datagram_length | length in bytes of datagram |
Definition at line 200 of file sick_tim55x_common_aqt.cpp.
References LaserAcquisitionThread::_data_mutex, LaserAcquisitionThread::_distances, LaserAcquisitionThread::_distances_size, LaserAcquisitionThread::_echoes, LaserAcquisitionThread::_echoes_size, LaserAcquisitionThread::_new_data, LaserAcquisitionThread::_timestamp, fawkes::Mutex::lock(), fawkes::rad2deg(), fawkes::Time::stamp(), and fawkes::Mutex::unlock().
Referenced by SickTiM55xEthernetAcquisitionThread::loop(), and SickTiM55xUSBAcquisitionThread::loop().
|
virtual |
Pre initialization.
This method is called by the sensor thread for pre-initialization. After this method has been executed the methods get_distances_data_size() and get_echo_data_size() must return valid data.
| config | configuration |
| logger | logger instance |
Implements LaserAcquisitionThread.
Definition at line 91 of file sick_tim55x_common_aqt.cpp.
References LaserAcquisitionThread::_distances_size, LaserAcquisitionThread::_echoes_size, fawkes::Configuration::add_change_handler(), LaserAcquisitionThread::alloc_distances(), LaserAcquisitionThread::alloc_echoes(), fawkes::ConfigurableAspect::config, and dev_model_.
Referenced by SickTiM55xEthernetAcquisitionThread::init(), and SickTiM55xUSBAcquisitionThread::init().
| void SickTiM55xCommonAcquisitionThread::read_common_config | ( | ) |
Read common configuration parameters.
Definition at line 121 of file sick_tim55x_common_aqt.cpp.
References cfg_prefix_, fawkes::ConfigurableAspect::config, fawkes::Configuration::get_float(), fawkes::Logger::log_debug(), fawkes::LoggingAspect::logger, and fawkes::Thread::name().
Referenced by SickTiM55xEthernetAcquisitionThread::init(), and SickTiM55xUSBAcquisitionThread::init().
|
protected |
Resynchronize to laser data.
Stop data transfer, flush, restart.
Definition at line 174 of file sick_tim55x_common_aqt.cpp.
References flush_device(), and send_with_reply().
Referenced by SickTiM55xEthernetAcquisitionThread::loop(), and SickTiM55xUSBAcquisitionThread::loop().
|
protectedpure virtual |
Send a request and expect a reply.
| request | request to send |
| reply | upon returns contains the received reply, maybe NULL to ignore the reply |
Referenced by init_device(), and resync().
|
protected |
Name of the particular configuration instance.
Definition at line 70 of file sick_tim55x_common_aqt.h.
Referenced by SickTiM55xCommonAcquisitionThread().
|
protected |
Configuration path prefix for this configuration.
Definition at line 71 of file sick_tim55x_common_aqt.h.
Referenced by SickTiM55xEthernetAcquisitionThread::init(), SickTiM55xUSBAcquisitionThread::init(), read_common_config(), and SickTiM55xCommonAcquisitionThread().
|
protected |
Device model type as string.
Definition at line 73 of file sick_tim55x_common_aqt.h.
Referenced by init_device(), and pre_init().