User Manual, Developers Guide and API Documentation

wns::ldk::fsm::FunctionalUnit< VARIABLES > Class Template Reference

FSM based FU. More...

#include <ldk/fsm/FunctionalUnit.hpp>

Inheritance diagram for wns::ldk::fsm::FunctionalUnit< VARIABLES >:

Inheritance graph
[legend]
Collaboration diagram for wns::ldk::fsm::FunctionalUnit< VARIABLES >:

Collaboration graph
[legend]

List of all members.

Public Types

typedef wns::fsm::FSM
< wns::ldk::fsm::CompoundHandlerSignalInterface,
VARIABLES > 
BaseFSM

Public Member Functions

virtual void doOnData (const CompoundPtr &compound)
virtual void doSendData (const CompoundPtr &compound)
 FunctionalUnit (const VARIABLES &v)
bool isAccepting (const CompoundPtr &compound)
void queueOnData (const CompoundPtr &compound)
void queueSendData (const CompoundPtr &compound)
void queueWakeup ()

Protected Member Functions

bool linkHandler ()

Protected Attributes

int inAction

Private Types

typedef std::list< CompoundPtrCompoundContainer

Private Member Functions

virtual bool doIsAccepting (const CompoundPtr &compound) const
virtual void doWakeup ()

Private Attributes

int furtherSendDataCompounds
bool inWakeup
CompoundContainer onDataCompounds
CompoundPtr sendDataCompound
int wakeupFU

Classes

class  StateInterface
class  UnhandledSignals
 Provides default implementation for unhandled signals. More...


Detailed Description

template<typename VARIABLES>
class wns::ldk::fsm::FunctionalUnit< VARIABLES >

How to write a FSM based FU:

1.) Decide which variables your states must share

2.) Put these variables in a struct (we assume Variables for now):

 struct Variables
 {
     int a;
     int b;
 }

3.) Define the interface of your new FU:

 #include <WNS/ldk/fsm/FunctionalUnit.hpp>
 typedef ldk::fsm::FunctionalUnit<Variables> MyFUInterface;

4.) Create an implementation of this interface

 class MyFU :
     public MyFUInterface
 ...

5.) Implement the states:

 class WaitingForACK :
     public MyFUInterface::UnhandledSignals
 {
 public :
     WaitingForACK(MyFUInterface::BaseFSM* t) :
         MyFUInterface::UnhandledSignals(t)
     {}
 ...

Note that the state is derived from FUInterface::UnhandledSignals. This allows this state object to be used with different implementations of MyFUInterface. Note also that the constructor of the state takes a pointer to MyFUInterface::BaseFSM by convention.

Definition at line 89 of file FunctionalUnit.hpp.


Member Typedef Documentation

template<typename VARIABLES>
typedef wns::fsm::FSM<wns::ldk::fsm::CompoundHandlerSignalInterface, VARIABLES> wns::ldk::fsm::FunctionalUnit< VARIABLES >::BaseFSM

Definition at line 94 of file FunctionalUnit.hpp.

template<typename VARIABLES>
typedef std::list<CompoundPtr> wns::ldk::fsm::FunctionalUnit< VARIABLES >::CompoundContainer [private]

Definition at line 315 of file FunctionalUnit.hpp.


Constructor & Destructor Documentation

template<typename VARIABLES>
wns::ldk::fsm::FunctionalUnit< VARIABLES >::FunctionalUnit ( const VARIABLES &  v  )  [inline, explicit]

Definition at line 223 of file FunctionalUnit.hpp.


Member Function Documentation

template<typename VARIABLES>
virtual bool wns::ldk::fsm::FunctionalUnit< VARIABLES >::doIsAccepting ( const CompoundPtr compound  )  const [inline, private, virtual]

Definition at line 308 of file FunctionalUnit.hpp.

template<typename VARIABLES>
virtual void wns::ldk::fsm::FunctionalUnit< VARIABLES >::doOnData ( const CompoundPtr compound  )  [inline, virtual]

Definition at line 278 of file FunctionalUnit.hpp.

template<typename VARIABLES>
virtual void wns::ldk::fsm::FunctionalUnit< VARIABLES >::doSendData ( const CompoundPtr compound  )  [inline, virtual]

Definition at line 264 of file FunctionalUnit.hpp.

template<typename VARIABLES>
virtual void wns::ldk::fsm::FunctionalUnit< VARIABLES >::doWakeup (  )  [inline, private, virtual]

Definition at line 293 of file FunctionalUnit.hpp.

template<typename VARIABLES>
bool wns::ldk::fsm::FunctionalUnit< VARIABLES >::isAccepting ( const CompoundPtr compound  )  [inline]

Definition at line 252 of file FunctionalUnit.hpp.

template<typename VARIABLES>
bool wns::ldk::fsm::FunctionalUnit< VARIABLES >::linkHandler (  )  [inline, protected]

Definition at line 319 of file FunctionalUnit.hpp.

template<typename VARIABLES>
void wns::ldk::fsm::FunctionalUnit< VARIABLES >::queueOnData ( const CompoundPtr compound  )  [inline]

Definition at line 246 of file FunctionalUnit.hpp.

template<typename VARIABLES>
void wns::ldk::fsm::FunctionalUnit< VARIABLES >::queueSendData ( const CompoundPtr compound  )  [inline]

Definition at line 234 of file FunctionalUnit.hpp.

template<typename VARIABLES>
void wns::ldk::fsm::FunctionalUnit< VARIABLES >::queueWakeup (  )  [inline]

Definition at line 240 of file FunctionalUnit.hpp.


Member Data Documentation

template<typename VARIABLES>
int wns::ldk::fsm::FunctionalUnit< VARIABLES >::furtherSendDataCompounds [private]

Definition at line 359 of file FunctionalUnit.hpp.

template<typename VARIABLES>
int wns::ldk::fsm::FunctionalUnit< VARIABLES >::inAction [protected]

Definition at line 355 of file FunctionalUnit.hpp.

template<typename VARIABLES>
bool wns::ldk::fsm::FunctionalUnit< VARIABLES >::inWakeup [private]

Definition at line 361 of file FunctionalUnit.hpp.

template<typename VARIABLES>
CompoundContainer wns::ldk::fsm::FunctionalUnit< VARIABLES >::onDataCompounds [private]

Definition at line 362 of file FunctionalUnit.hpp.

template<typename VARIABLES>
CompoundPtr wns::ldk::fsm::FunctionalUnit< VARIABLES >::sendDataCompound [private]

Definition at line 358 of file FunctionalUnit.hpp.

template<typename VARIABLES>
int wns::ldk::fsm::FunctionalUnit< VARIABLES >::wakeupFU [private]

Definition at line 360 of file FunctionalUnit.hpp.


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

Generated on Sat May 26 03:32:56 2012 for openWNS by  doxygen 1.5.5