master/fsm.h
branchstable-1.1
changeset 1732 1cc865ba17c2
parent 1719 42ed27ae6785
child 1733 69f0fbc0dcab
--- a/master/fsm.h	Fri Oct 13 10:07:10 2006 +0000
+++ b/master/fsm.h	Tue Nov 07 12:13:30 2006 +0000
@@ -45,6 +45,11 @@
 #include "../include/ecrt.h"
 #include "datagram.h"
 #include "slave.h"
+#include "canopen.h"
+
+#include "fsm_sii.h"
+#include "fsm_change.h"
+#include "fsm_coe.h"
 
 /*****************************************************************************/
 
@@ -64,38 +69,30 @@
     unsigned int master_slaves_responding; /**< number of responding slaves */
     ec_slave_state_t master_slave_states; /**< states of responding slaves */
     unsigned int master_validation; /**< non-zero, if validation to do */
+    uint16_t sii_offset; /**< current offset for SII access */
+    ec_sdo_request_t *sdo_request;
 
     void (*slave_state)(ec_fsm_t *); /**< slave state function */
+    ec_sdo_data_t *sdodata; /**< SDO configuration data */
 
-    void (*sii_state)(ec_fsm_t *); /**< SII state function */
-    uint16_t sii_offset; /**< input: offset in SII */
-    unsigned int sii_mode; /**< SII reading done by APRD (0) or NPRD (1) */
-    uint8_t sii_value[4]; /**< raw SII value (32bit) */
-    cycles_t sii_start; /**< sii start */
-
-    void (*change_state)(ec_fsm_t *); /**< slave state change state function */
-    ec_slave_state_t change_new; /**< input: new state */
-    unsigned long change_jiffies; /**< change timer */
-
-    void (*coe_state)(ec_fsm_t *); /**< CoE state function */
-    ec_sdo_data_t *sdodata; /**< input/output: SDO data object */
-    cycles_t coe_start; /**< CoE timestamp */
+    ec_fsm_sii_t fsm_sii; /**< SII state machine */
+    ec_fsm_change_t fsm_change; /**< State change state machine */
+    ec_fsm_coe_t fsm_coe; /**< CoE state machine */
 };
 
 /*****************************************************************************/
 
 int ec_fsm_init(ec_fsm_t *, ec_master_t *);
 void ec_fsm_clear(ec_fsm_t *);
-void ec_fsm_reset(ec_fsm_t *);
-void ec_fsm_execute(ec_fsm_t *);
 
-void ec_fsm_startup(ec_fsm_t *);
-int ec_fsm_startup_running(ec_fsm_t *);
-int ec_fsm_startup_success(ec_fsm_t *);
+int ec_fsm_exec(ec_fsm_t *);
+int ec_fsm_running(ec_fsm_t *);
+int ec_fsm_success(ec_fsm_t *);
 
-void ec_fsm_configuration(ec_fsm_t *);
-int ec_fsm_configuration_running(ec_fsm_t *);
-int ec_fsm_configuration_success(ec_fsm_t *);
+// TODO: layout slave state machines
+void ec_fsm_slaveconf_state_start(ec_fsm_t *);
+void ec_fsm_slave_state_end(ec_fsm_t *);
+void ec_fsm_slave_state_error(ec_fsm_t *);
 
 /*****************************************************************************/