aboutsummaryrefslogtreecommitdiff
path: root/src/modules/systemlib/state_table.h
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-07-06 15:47:34 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-07-06 15:47:34 +0200
commit1492323f0327916435d806c2af1e0c8296278c9d (patch)
treed53e2768c326ec6a2cbcfd896550c446ba93fab3 /src/modules/systemlib/state_table.h
parent2669f7f3af65921d4abbf3850cd62e48f2eeeec7 (diff)
parentbd88951f6ce609bc5ba364bfa3d19ae61e444964 (diff)
downloadpx4-firmware-1492323f0327916435d806c2af1e0c8296278c9d.tar.gz
px4-firmware-1492323f0327916435d806c2af1e0c8296278c9d.tar.bz2
px4-firmware-1492323f0327916435d806c2af1e0c8296278c9d.zip
Merged master into uavcan
Diffstat (limited to 'src/modules/systemlib/state_table.h')
-rw-r--r--src/modules/systemlib/state_table.h27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/modules/systemlib/state_table.h b/src/modules/systemlib/state_table.h
index f2709d29f..e6011fdef 100644
--- a/src/modules/systemlib/state_table.h
+++ b/src/modules/systemlib/state_table.h
@@ -1,6 +1,6 @@
/****************************************************************************
*
- * Copyright (C) 2012 PX4 Development Team. All rights reserved.
+ * Copyright (C) 2013-2014 PX4 Development Team. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -33,8 +33,9 @@
/**
* @file state_table.h
- *
+ *
* Finite-State-Machine helper class for state table
+ * @author: Julian Oes <julian@oes.ch>
*/
#ifndef __SYSTEMLIB_STATE_TABLE_H
@@ -48,22 +49,28 @@ public:
Action action;
unsigned nextState;
};
-
+
StateTable(Tran const *table, unsigned nStates, unsigned nSignals)
: myTable(table), myNsignals(nSignals), myNstates(nStates) {}
-
+
#define NO_ACTION &StateTable::doNothing
- #define ACTION(_target) static_cast<StateTable::Action>(_target)
+ #define ACTION(_target) StateTable::Action(_target)
virtual ~StateTable() {}
-
+
void dispatch(unsigned const sig) {
- register Tran const *t = myTable + myState*myNsignals + sig;
- (this->*(t->action))();
+ /* get transition using state table */
+ Tran const *t = myTable + myState*myNsignals + sig;
+ /* accept new state */
myState = t->nextState;
+
+ /* */
+ (this->*(t->action))();
+ }
+ void doNothing() {
+ return;
}
- void doNothing() {}
protected:
unsigned myState;
private:
@@ -72,4 +79,4 @@ private:
unsigned myNstates;
};
-#endif \ No newline at end of file
+#endif