master/fsm_slave.c
changeset 615 cde783147040
parent 594 07dd2a7df66e
child 618 e4b89c862c43
equal deleted inserted replaced
614:1e74a0212418 615:cde783147040
   918 {
   918 {
   919     ec_datagram_t *datagram = fsm->datagram;
   919     ec_datagram_t *datagram = fsm->datagram;
   920     ec_slave_t *slave = fsm->slave;
   920     ec_slave_t *slave = fsm->slave;
   921 
   921 
   922     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) {
   922     if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) {
   923         ec_master_queue_datagram(fsm->slave->master, datagram);
   923         ec_master_queue_datagram(slave->master, datagram);
   924         return;
   924         return;
   925     }
   925     }
   926 
   926 
   927     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   927     if (datagram->state != EC_DATAGRAM_RECEIVED) {
   928         fsm->state = ec_fsm_slave_state_error;
   928         fsm->state = ec_fsm_slave_state_error;
   929         EC_ERR("Failed to receive FMMUs datagram for slave %i"
   929         EC_ERR("Failed to receive FMMUs datagram for slave %i"
   930                 " (datagram state %i).\n",
   930                 " (datagram state %i).\n",
   931                fsm->slave->ring_position, datagram->state);
   931                slave->ring_position, datagram->state);
   932         return;
   932         return;
   933     }
   933     }
   934 
   934 
   935     if (datagram->working_counter != 1) {
   935     if (datagram->working_counter != 1) {
   936         fsm->slave->error_flag = 1;
   936         slave->error_flag = 1;
   937         fsm->state = ec_fsm_slave_state_error;
   937         fsm->state = ec_fsm_slave_state_error;
   938         EC_ERR("Failed to set FMMUs - slave %i did not respond.\n",
   938         EC_ERR("Failed to set FMMUs - slave %i did not respond.\n",
   939                fsm->slave->ring_position);
   939                slave->ring_position);
   940         return;
   940         return;
   941     }
   941     }
       
   942 
       
   943     ec_fsm_slave_conf_enter_sdoconf(fsm);
       
   944 }
       
   945 
       
   946 /*****************************************************************************/
       
   947 
       
   948 /**
       
   949  */
       
   950 
       
   951 void ec_fsm_slave_conf_enter_sdoconf(ec_fsm_slave_t *fsm /**< slave state machine */)
       
   952 {
       
   953     ec_slave_t *slave = fsm->slave;
   942 
   954 
   943     // No CoE configuration to be applied? Jump to SAVEOP state.
   955     // No CoE configuration to be applied? Jump to SAVEOP state.
   944     if (list_empty(&slave->sdo_confs)) { // skip SDO configuration
       
   945         ec_fsm_slave_conf_enter_saveop(fsm);
       
   946         return;
       
   947     }
       
   948 
       
   949     ec_fsm_slave_conf_enter_sdoconf(fsm);
       
   950 }
       
   951 
       
   952 /*****************************************************************************/
       
   953 
       
   954 /**
       
   955  */
       
   956 
       
   957 void ec_fsm_slave_conf_enter_sdoconf(ec_fsm_slave_t *fsm /**< slave state machine */)
       
   958 {
       
   959     ec_slave_t *slave = fsm->slave;
       
   960 
       
   961     if (list_empty(&slave->sdo_confs)) { // skip SDO configuration
   956     if (list_empty(&slave->sdo_confs)) { // skip SDO configuration
   962         ec_fsm_slave_conf_enter_saveop(fsm);
   957         ec_fsm_slave_conf_enter_saveop(fsm);
   963         return;
   958         return;
   964     }
   959     }
   965 
   960