--- a/master/slave.c Mon Nov 23 14:22:48 2009 +0100
+++ b/master/slave.c Thu Nov 26 15:33:48 2009 +0100
@@ -67,6 +67,7 @@
)
{
unsigned int i;
+ int ret;
slave->master = master;
slave->ring_position = ring_position;
@@ -147,6 +148,20 @@
slave->sdo_dictionary_fetched = 0;
slave->jiffies_preop = 0;
+
+ // init state machine datagram
+ ec_datagram_init(&slave->fsm_datagram);
+ snprintf(slave->fsm_datagram.name, EC_DATAGRAM_NAME_SIZE, "slave%u-fsm",slave->ring_position);
+ ret = ec_datagram_prealloc(&slave->fsm_datagram, EC_MAX_DATA_SIZE);
+ if (ret < 0) {
+ ec_datagram_clear(&slave->fsm_datagram);
+ EC_ERR("Failed to allocate Slave %u FSM datagram.\n",slave->ring_position);
+ return;
+ }
+
+ // create state machine object
+ ec_fsm_slave_init(&slave->fsm, slave, &slave->fsm_datagram);
+
}
/*****************************************************************************/
@@ -191,6 +206,9 @@
if (slave->sii_words)
kfree(slave->sii_words);
+ ec_fsm_slave_clear(&slave->fsm);
+ ec_datagram_clear(&slave->fsm_datagram);
+
}
/*****************************************************************************/