--- 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 *);
/*****************************************************************************/