master/fsm_change.h
changeset 454 25cc4a3b9e0a
parent 435 779a18d12e6c
child 505 bc443ca0077f
--- a/master/fsm_change.h	Fri Oct 27 10:41:02 2006 +0000
+++ b/master/fsm_change.h	Fri Oct 27 11:15:07 2006 +0000
@@ -48,6 +48,18 @@
 
 /*****************************************************************************/
 
+/**
+   Mode of the change state machine.
+*/
+
+typedef enum {
+    EC_FSM_CHANGE_MODE_FULL, /**< full state change */
+    EC_FSM_CHANGE_MODE_ACK_ONLY /**< only state acknowledgement */
+}
+ec_fsm_change_mode_t;
+
+/*****************************************************************************/
+
 typedef struct ec_fsm_change ec_fsm_change_t; /**< \see ec_fsm_change */
 
 /**
@@ -60,7 +72,9 @@
     ec_datagram_t *datagram; /**< datagram used in the state machine */
 
     void (*state)(ec_fsm_change_t *); /**< slave state change state function */
+    ec_fsm_change_mode_t mode; /**< full state change, or ack only. */
     ec_slave_state_t requested_state; /**< input: state */
+    ec_slave_state_t old_state; /**< prior slave state */
     unsigned long jiffies_start; /**< change timer */
     uint8_t take_time; /**< take sending timestamp */
 };
@@ -70,7 +84,8 @@
 void ec_fsm_change_init(ec_fsm_change_t *, ec_datagram_t *);
 void ec_fsm_change_clear(ec_fsm_change_t *);
 
-void ec_fsm_change(ec_fsm_change_t *, ec_slave_t *, ec_slave_state_t);
+void ec_fsm_change_start(ec_fsm_change_t *, ec_slave_t *, ec_slave_state_t);
+void ec_fsm_change_ack(ec_fsm_change_t *, ec_slave_t *);
 
 int ec_fsm_change_exec(ec_fsm_change_t *);
 int ec_fsm_change_success(ec_fsm_change_t *);