master/fsm_master.c
changeset 905 6d74ebc603ee
parent 904 ba6f222aa06e
child 906 f95e3e33c0cf
equal deleted inserted replaced
904:ba6f222aa06e 905:6d74ebc603ee
    56 void ec_fsm_master_state_acknowledge(ec_fsm_master_t *);
    56 void ec_fsm_master_state_acknowledge(ec_fsm_master_t *);
    57 void ec_fsm_master_state_configure_slave(ec_fsm_master_t *);
    57 void ec_fsm_master_state_configure_slave(ec_fsm_master_t *);
    58 void ec_fsm_master_state_clear_addresses(ec_fsm_master_t *);
    58 void ec_fsm_master_state_clear_addresses(ec_fsm_master_t *);
    59 void ec_fsm_master_state_scan_slaves(ec_fsm_master_t *);
    59 void ec_fsm_master_state_scan_slaves(ec_fsm_master_t *);
    60 void ec_fsm_master_state_write_sii(ec_fsm_master_t *);
    60 void ec_fsm_master_state_write_sii(ec_fsm_master_t *);
    61 void ec_fsm_master_state_sdodict(ec_fsm_master_t *);
    61 void ec_fsm_master_state_sdo_dictionary(ec_fsm_master_t *);
    62 void ec_fsm_master_state_sdo_request(ec_fsm_master_t *);
    62 void ec_fsm_master_state_sdo_request(ec_fsm_master_t *);
    63 void ec_fsm_master_state_end(ec_fsm_master_t *);
    63 void ec_fsm_master_state_end(ec_fsm_master_t *);
    64 void ec_fsm_master_state_error(ec_fsm_master_t *);
    64 void ec_fsm_master_state_error(ec_fsm_master_t *);
    65 
    65 
    66 /*****************************************************************************/
    66 /*****************************************************************************/
   531                 || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ
   531                 || jiffies - slave->jiffies_preop < EC_WAIT_SDO_DICT * HZ
   532                 || slave->online_state == EC_SLAVE_OFFLINE
   532                 || slave->online_state == EC_SLAVE_OFFLINE
   533                 || slave->error_flag) continue;
   533                 || slave->error_flag) continue;
   534 
   534 
   535             if (master->debug_level) {
   535             if (master->debug_level) {
   536                 EC_DBG("Fetching Sdo dictionary from slave %i.\n",
   536                 EC_DBG("Fetching Sdo dictionary from slave %u.\n",
   537                        slave->ring_position);
   537                        slave->ring_position);
   538             }
   538             }
   539 
   539 
   540             slave->sdo_dictionary_fetched = 1;
   540             slave->sdo_dictionary_fetched = 1;
   541 
   541 
   542             // start fetching Sdo dictionary
   542             // start fetching Sdo dictionary
   543             fsm->idle = 0;
   543             fsm->idle = 0;
   544             fsm->slave = slave;
   544             fsm->slave = slave;
   545             fsm->state = ec_fsm_master_state_sdodict;
   545             fsm->state = ec_fsm_master_state_sdo_dictionary;
   546             ec_fsm_coe_dictionary(&fsm->fsm_coe, slave);
   546             ec_fsm_coe_dictionary(&fsm->fsm_coe, slave);
   547             ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
   547             ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
   548             return;
   548             return;
   549         }
   549         }
   550 
   550 
   833 
   833 
   834 /**
   834 /**
   835    Master state: SdoDICT.
   835    Master state: SdoDICT.
   836 */
   836 */
   837 
   837 
   838 void ec_fsm_master_state_sdodict(ec_fsm_master_t *fsm /**< master state machine */)
   838 void ec_fsm_master_state_sdo_dictionary(
       
   839         ec_fsm_master_t *fsm /**< master state machine */
       
   840         )
   839 {
   841 {
   840     ec_slave_t *slave = fsm->slave;
   842     ec_slave_t *slave = fsm->slave;
   841     ec_master_t *master = fsm->master;
   843     ec_master_t *master = fsm->master;
   842 
   844 
   843     if (ec_fsm_coe_exec(&fsm->fsm_coe)) return;
   845     if (ec_fsm_coe_exec(&fsm->fsm_coe)) return;