Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
laelaps::LaeThreadRange Class Reference

#include <laeThreadRange.h>

Inheritance diagram for laelaps::LaeThreadRange:
laelaps::LaeThread

Public Member Functions

 LaeThreadRange (sensor::vl6180::LaeRangeSensorGroup &hwif)
 Default constructor.
 
virtual ~LaeThreadRange ()
 Destructor.
 
int reload (const LaeTunes &tunes)
 Reload tunable paramaters. More...
 
- Public Member Functions inherited from laelaps::LaeThread
 LaeThread (const std::string &strThreadName)
 Default constructor.
 
virtual ~LaeThread ()
 Destructor.
 
virtual int createThread (int nPriority)
 Create the thread. More...
 
virtual int runThread (const double fHz)
 Run the thread. More...
 
virtual int terminateThread ()
 Terminate the thread. More...
 
virtual void setHz (const double fHz)
 Calculate thread new full cycle run rate. More...
 
std::string getThreadName () const
 Get assigned thread name. More...
 
int getThreadPriority () const
 Get thread system scheduling priority. More...
 
double getThreadHz () const
 Get thread run full cycle rate. More...
 

Static Public Attributes

static const double ThreadRangePrioDft = 75
 default priority
 
static const double ThreadRangeHzDft = 8.0
 default run rate
 
- Static Public Attributes inherited from laelaps::LaeThread
static const int ThreadPriorityMin = 1
 minimum scheduling priority
 
static const int ThreadPriorityMax = 99
 maximum scheduling priority
 
static const double ThreadMinHz = 0.001
 minimum thread Hertz More...
 

Protected Member Functions

virtual void exec ()
 Execute watchdog task within scheduled cycle. More...
 
- Protected Member Functions inherited from laelaps::LaeThread
void lock ()
 Lock the I2C bus. More...
 
void unlock ()
 Unlock the I2C bus. More...
 
void changeState (ThreadState eNewState)
 Change the thread state. More...
 
void timedWait (const struct timespec &tsTimeout)
 Timed wait until state change or time out. More...
 
virtual void readyBlock ()
 Block indefinitely while in the ready state. More...
 
virtual void schedBlock ()
 Block the thread until the next subcycle task is to be run. More...
 
virtual void transToReady ()
 Uninitialized to Ready state transition function. More...
 
virtual void transToRunning ()
 Ready to Running state transition function. More...
 
virtual void transToExit ()
 Any to Exit state transition function. More...
 

Protected Attributes

sensor::vl6180::LaeRangeSensorGroupm_hwif
 hardware interface
 
LaeI2CMuxReset m_reset
 multiplexer reset
 
double m_fTSubTask
 sub-task time (seconds)
 
size_t m_iSensor
 next scheduled sensor index
 
- Protected Attributes inherited from laelaps::LaeThread
std::string m_strThreadName
 thread identifying name
 
ThreadState m_eState
 thread state
 
pthread_mutex_t m_mutexSync
 synchonization mutex
 
pthread_cond_t m_condSync
 synchonization condition
 
pthread_t m_thread
 pthread identifier
 
int m_nPriority
 thread OS scheduling priority
 
double m_fHz
 thread cycle run rate (Hertz)
 
double m_fTExec
 task execution cycle period (seconds)
 
struct timespec m_tsExecPeriod
 task execution period (converted)
 
struct timespec m_tsJitter
 allowable scheduling jitter
 
struct timespec m_tsSched
 working scheduler time stamp
 
struct timespec m_tsExecLast
 start of last execution time stamp
 
struct timespec m_tsExecThis
 start of this execution time stamp
 
int m_nSlipErrCnt
 slipped error count leaky bucket
 

Additional Inherited Members

- Public Types inherited from laelaps::LaeThread
enum  ThreadState {
  ThreadStateUninit,
  ThreadStateReady,
  ThreadStateStart,
  ThreadStateRunning,
  ThreadStateExit
}
 Kinematics thread states. More...
 
- Static Protected Member Functions inherited from laelaps::LaeThread
static void * thread (void *pArg)
 The thread. More...
 

Detailed Description

Range sensors thread class.

Definition at line 83 of file laeThreadRange.h.

Member Function Documentation

void LaeThreadRange::exec ( )
protectedvirtual

Execute watchdog task within scheduled cycle.

This function executes under the lock/unlock mutex.

Context:
This thread.

Reimplemented from laelaps::LaeThread.

Definition at line 109 of file laeThreadRange.cxx.

References sensor::vl6180::LaeRangeSensorGroup::exec(), and m_hwif.

110 {
111  m_hwif.exec();
112 }
sensor::vl6180::LaeRangeSensorGroup & m_hwif
hardware interface
virtual void exec()
Execute task in one cycle to take measurements.
Definition: laeVL6180.cxx:2513
int LaeThreadRange::reload ( const LaeTunes tunes)

Reload tunable paramaters.

This function executes under the lock/unlock mutex.

Definition at line 88 of file laeThreadRange.cxx.

References laelaps::LaeTunes::getRangeHz(), laelaps::LaeThread::lock(), laelaps::LaeThread::m_fHz, m_hwif, sensor::vl6180::LaeRangeSensorGroup::reload(), laelaps::LaeThread::setHz(), and laelaps::LaeThread::unlock().

Referenced by laelaps::LaeRobot::reload().

89 {
90  double fHz;
91  int rc;
92 
93  lock();
94 
95  fHz = tunes.getRangeHz();
96 
97  if( fHz != m_fHz )
98  {
99  setHz(fHz);
100  }
101 
102  rc = m_hwif.reload(tunes);
103 
104  unlock();
105 
106  return rc;
107 }
void unlock()
Unlock the I2C bus.
Definition: laeThread.h:235
virtual int reload(const laelaps::LaeTunes &tunes)
Reload configuration tuning parameters.
Definition: laeVL6180.cxx:2425
void lock()
Lock the I2C bus.
Definition: laeThread.h:221
sensor::vl6180::LaeRangeSensorGroup & m_hwif
hardware interface
virtual void setHz(const double fHz)
Calculate thread new full cycle run rate.
Definition: laeThread.cxx:214
double m_fHz
thread cycle run rate (Hertz)
Definition: laeThread.h:204
double getRangeHz() const
Get range sensing thread cycle rate tune parameter (hertz).
Definition: laeTune.cxx:329

The documentation for this class was generated from the following files: