diff -r 60b2aad9d40b -r 1cc865ba17c2 master/fsm.h --- 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 *); /*****************************************************************************/