master/fsm_slave_scan.c
changeset 1174 235f34ca50e2
parent 1055 2be8918682fa
child 1225 4d5b739edcb5
child 1685 399ef727bf62
equal deleted inserted replaced
1173:2ec9651a6c89 1174:235f34ca50e2
    70 void ec_fsm_slave_scan_init(
    70 void ec_fsm_slave_scan_init(
    71         ec_fsm_slave_scan_t *fsm, /**< Slave scanning state machine. */
    71         ec_fsm_slave_scan_t *fsm, /**< Slave scanning state machine. */
    72         ec_datagram_t *datagram, /**< Datagram to use. */
    72         ec_datagram_t *datagram, /**< Datagram to use. */
    73         ec_fsm_slave_config_t *fsm_slave_config, /**< Slave configuration
    73         ec_fsm_slave_config_t *fsm_slave_config, /**< Slave configuration
    74                                                   state machine to use. */
    74                                                   state machine to use. */
    75         ec_fsm_coe_map_t *fsm_coe_map /**< Pdo mapping state machine to use.
    75         ec_fsm_pdo_t *fsm_pdo /**< Pdo configuration machine to use. */
    76                                        */
       
    77         )
    76         )
    78 {
    77 {
    79     fsm->datagram = datagram;
    78     fsm->datagram = datagram;
    80     fsm->fsm_slave_config = fsm_slave_config;
    79     fsm->fsm_slave_config = fsm_slave_config;
    81     fsm->fsm_coe_map = fsm_coe_map;
    80     fsm->fsm_pdo = fsm_pdo;
    82 
    81 
    83     // init sub state machines
    82     // init sub state machines
    84     ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram);
    83     ec_fsm_sii_init(&fsm->fsm_sii, fsm->datagram);
    85 }
    84 }
    86 
    85 
   631 
   630 
   632     if (slave->master->debug_level)
   631     if (slave->master->debug_level)
   633         EC_DBG("Scanning Pdo assignment and mapping of slave %u.\n",
   632         EC_DBG("Scanning Pdo assignment and mapping of slave %u.\n",
   634                 slave->ring_position);
   633                 slave->ring_position);
   635     fsm->state = ec_fsm_slave_scan_state_pdos;
   634     fsm->state = ec_fsm_slave_scan_state_pdos;
   636     ec_fsm_coe_map_start(fsm->fsm_coe_map, slave);
   635     ec_fsm_pdo_start_reading(fsm->fsm_pdo, slave);
   637     ec_fsm_coe_map_exec(fsm->fsm_coe_map); // execute immediately
   636     ec_fsm_pdo_exec(fsm->fsm_pdo); // execute immediately
   638 }
   637 }
   639 
   638 
   640 /*****************************************************************************/
   639 /*****************************************************************************/
   641 
   640 
   642 /** Slave scan state: PDOS.
   641 /** Slave scan state: PDOS.
   643  */
   642  */
   644 void ec_fsm_slave_scan_state_pdos(
   643 void ec_fsm_slave_scan_state_pdos(
   645         ec_fsm_slave_scan_t *fsm /**< slave state machine */
   644         ec_fsm_slave_scan_t *fsm /**< slave state machine */
   646         )
   645         )
   647 {
   646 {
   648     if (ec_fsm_coe_map_exec(fsm->fsm_coe_map))
   647     if (ec_fsm_pdo_exec(fsm->fsm_pdo))
   649         return;
   648         return;
   650 
   649 
   651     if (!ec_fsm_coe_map_success(fsm->fsm_coe_map)) {
   650     if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
   652         fsm->state = ec_fsm_slave_scan_state_error;
   651         fsm->state = ec_fsm_slave_scan_state_error;
   653         return;
   652         return;
   654     }
   653     }
   655 
   654 
   656     // fetching of Pdo assignment/mapping finished
   655     // reading Pdo configuration finished
   657     fsm->state = ec_fsm_slave_scan_state_end;
   656     fsm->state = ec_fsm_slave_scan_state_end;
   658 }
   657 }
   659 
   658 
   660 /******************************************************************************
   659 /******************************************************************************
   661  * Common state functions
   660  * Common state functions