Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
driver_base::Driver Class Reference

#include <driver.h>

List of all members.

Public Types

typedef char state_t

Public Member Functions

void clearRecoveryComplete ()
bool close ()
 Driver ()
virtual std::string getID ()=0
bool getRecoveryComplete ()
state_t getState ()
const std::string getStateName ()
const std::string getStatusMessage ()
bool getStatusOk ()
bool goClosed ()
bool goOpened ()
bool goRunning ()
bool goState (state_t target)
bool isClosed ()
bool isOpened ()
bool isRunning ()
bool isStopped ()
bool lowerState (state_t target)
bool open ()
bool raiseState (state_t target)
void setPostOpenHook (hookFunction f)
void setStatusMessage (const std::string &msg, bool ok=false, bool recovery_complete=false)
void setStatusMessagef (const char *format,...)
bool start ()
bool stop ()
virtual ~Driver ()

Static Public Member Functions

static const std::stringgetStateName (state_t s)

Public Attributes

boost::recursive_mutex mutex_

Static Public Attributes

static const state_t CLOSED = 0
static const state_t OPENED = 1
static const state_t RUNNING = 2

Protected Types

typedef boost::function< void() > hookFunction

Protected Member Functions

virtual void doClose ()=0
virtual void doOpen ()=0
virtual void doStart ()=0
virtual void doStop ()=0

Protected Attributes

hookFunction postOpenHook
state_t state_

Private Member Functions

const std::stringgetTransitionName (void(Driver::*transition)())
bool tryTransition (state_t target, void(Driver::*transition)())

Private Attributes

std::string status_message_
boost::mutex status_message_mutex_
bool status_ok_
bool status_recovery_complete_

Detailed Description

State transition functions assume that they are called from the correct state. It is the caller's responsibility to check that the state is correct. The Driver mutex_ should always be locked by the caller before checking the current state and throughout the call to the transition function.

State should not change between calls to the transition function except for transitions from RUNNING to STOPPED. The device must hold its lock while doing this transition to allow the caller to enforce that stop is only called from the RUNNING state.

Transitions may fail. It is the caller's responsibility to check success by looking at the device's state_. After a failure, the device can set itself into any state. For example, if a call to start() fails, the device may end up in the CLOSED state.

Definition at line 68 of file driver.h.


Member Typedef Documentation

typedef boost::function< void() > driver_base::Driver::hookFunction [protected]

Definition at line 81 of file driver.h.

Definition at line 71 of file driver.h.


Constructor & Destructor Documentation

Definition at line 244 of file driver.h.

virtual driver_base::Driver::~Driver ( ) [inline, virtual]

Definition at line 245 of file driver.h.


Member Function Documentation

Definition at line 257 of file driver.h.

bool driver_base::Driver::close ( ) [inline]

Definition at line 193 of file driver.h.

virtual void driver_base::Driver::doClose ( ) [protected, pure virtual]
virtual void driver_base::Driver::doOpen ( ) [protected, pure virtual]
virtual void driver_base::Driver::doStart ( ) [protected, pure virtual]
virtual void driver_base::Driver::doStop ( ) [protected, pure virtual]
virtual std::string driver_base::Driver::getID ( ) [pure virtual]

Definition at line 252 of file driver.h.

Definition at line 219 of file driver.h.

Definition at line 224 of file driver.h.

static const std::string& driver_base::Driver::getStateName ( state_t  s) [inline, static]

Definition at line 229 of file driver.h.

Definition at line 262 of file driver.h.

Definition at line 247 of file driver.h.

const std::string& driver_base::Driver::getTransitionName ( void(Driver::*)()  transition) [inline, private]

Definition at line 292 of file driver.h.

bool driver_base::Driver::goClosed ( ) [inline]

Definition at line 173 of file driver.h.

bool driver_base::Driver::goOpened ( ) [inline]

Definition at line 168 of file driver.h.

bool driver_base::Driver::goRunning ( ) [inline]

Definition at line 163 of file driver.h.

bool driver_base::Driver::goState ( state_t  target) [inline]

Definition at line 104 of file driver.h.

bool driver_base::Driver::isClosed ( ) [inline]

Definition at line 208 of file driver.h.

bool driver_base::Driver::isOpened ( ) [inline]

Definition at line 203 of file driver.h.

bool driver_base::Driver::isRunning ( ) [inline]

Definition at line 198 of file driver.h.

bool driver_base::Driver::isStopped ( ) [inline]

Definition at line 213 of file driver.h.

bool driver_base::Driver::lowerState ( state_t  target) [inline]

Definition at line 140 of file driver.h.

bool driver_base::Driver::open ( ) [inline]

Definition at line 188 of file driver.h.

bool driver_base::Driver::raiseState ( state_t  target) [inline]

Definition at line 117 of file driver.h.

Definition at line 91 of file driver.h.

void driver_base::Driver::setStatusMessage ( const std::string msg,
bool  ok = false,
bool  recovery_complete = false 
) [inline]

Definition at line 271 of file driver.h.

void driver_base::Driver::setStatusMessagef ( const char *  format,
  ... 
) [inline]

Definition at line 280 of file driver.h.

bool driver_base::Driver::start ( ) [inline]

Definition at line 183 of file driver.h.

bool driver_base::Driver::stop ( ) [inline]

Definition at line 178 of file driver.h.

bool driver_base::Driver::tryTransition ( state_t  target,
void(Driver::*)()  transition 
) [inline, private]
Todo:
print the exception message better.

Definition at line 312 of file driver.h.


Member Data Documentation

Todo:
should this be protected?

Definition at line 100 of file driver.h.

boost::recursive_mutex driver_base::Driver::mutex_

Definition at line 98 of file driver.h.

Definition at line 101 of file driver.h.

Definition at line 82 of file driver.h.

Definition at line 102 of file driver.h.

Definition at line 74 of file driver.h.

Definition at line 85 of file driver.h.

Definition at line 86 of file driver.h.

Definition at line 87 of file driver.h.

Definition at line 88 of file driver.h.


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


driver_base
Author(s): Blaise Gassend
autogenerated on Sat Jun 8 2019 20:18:18