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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
LoggingAspect () | |
Constructor. More... | |
virtual | ~LoggingAspect () |
Virtual empty Destructor. More... | |
void | init_LoggingAspect (Logger *logger) |
Set the logger. More... | |
![]() | |
const std::list< const char * > & | get_aspects () const |
Get list of aspect names attached to a aspected thread. More... | |
![]() | |
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... | |
![]() | |
ClockAspect () | |
Constructor. More... | |
virtual | ~ClockAspect () |
Virtual empty destructor. More... | |
void | init_ClockAspect (Clock *clock) |
Set the clock. 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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
Logger * | logger |
This is the Logger member used to access the logger. More... | |
![]() | |
Configuration * | config |
This is the Configuration member used to access the configuration. More... | |
![]() | |
Clock * | clock |
By means of this member access to the clock is given. More... | |
Additional Inherited Members | |
![]() | |
enum | OpMode { OPMODE_CONTINUOUS, OPMODE_WAITFORWAKEUP } |
Thread operation mode. More... | |
enum | CancelState { CANCEL_ENABLED, CANCEL_DISABLED } |
Cancel state. More... | |
![]() | |
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 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 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 35 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 76 of file sick_tim55x_common_aqt.cpp.
References cfg_name_, cfg_prefix_, and fawkes::Thread::set_name().
|
virtual |
Destructor.
Definition at line 88 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 129 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(), SickTiM55xUSBAcquisitionThread::loop(), and SickTiM55xEthernetAcquisitionThread::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 195 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 93 of file sick_tim55x_common_aqt.cpp.
References LaserAcquisitionThread::_distances_size, LaserAcquisitionThread::alloc_distances(), and dev_model_.
Referenced by SickTiM55xEthernetAcquisitionThread::init(), and SickTiM55xUSBAcquisitionThread::init().
void SickTiM55xCommonAcquisitionThread::read_common_config | ( | ) |
Read common configuration parameters.
Definition at line 118 of file sick_tim55x_common_aqt.cpp.
References cfg_prefix_, fawkes::ConfigurableAspect::config, and fawkes::Configuration::get_float().
Referenced by SickTiM55xEthernetAcquisitionThread::init(), and SickTiM55xUSBAcquisitionThread::init().
|
protected |
Resynchronize to laser data.
Stop data transfer, flush, restart.
Definition at line 170 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 61 of file sick_tim55x_common_aqt.h.
Referenced by SickTiM55xCommonAcquisitionThread().
|
protected |
Configuration path prefix for this configuration.
Definition at line 62 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 64 of file sick_tim55x_common_aqt.h.
Referenced by init_device(), and pre_init().