master/fsm_slave_scan.c
branchstable-1.4
changeset 1686 e206f4485f60
parent 1685 399ef727bf62
child 1709 63e4bc918640
equal deleted inserted replaced
1685:399ef727bf62 1686:e206f4485f60
    63 void ec_fsm_slave_scan_init(
    63 void ec_fsm_slave_scan_init(
    64         ec_fsm_slave_scan_t *fsm, /**< Slave scanning state machine. */
    64         ec_fsm_slave_scan_t *fsm, /**< Slave scanning state machine. */
    65         ec_datagram_t *datagram, /**< Datagram to use. */
    65         ec_datagram_t *datagram, /**< Datagram to use. */
    66         ec_fsm_slave_config_t *fsm_slave_config, /**< Slave configuration
    66         ec_fsm_slave_config_t *fsm_slave_config, /**< Slave configuration
    67                                                   state machine to use. */
    67                                                   state machine to use. */
    68         ec_fsm_pdo_t *fsm_pdo /**< Pdo configuration machine to use. */
    68         ec_fsm_pdo_t *fsm_pdo /**< PDO configuration machine to use. */
    69         )
    69         )
    70 {
    70 {
    71     fsm->datagram = datagram;
    71     fsm->datagram = datagram;
    72     fsm->fsm_slave_config = fsm_slave_config;
    72     fsm->fsm_slave_config = fsm_slave_config;
    73     fsm->fsm_pdo = fsm_pdo;
    73     fsm->fsm_pdo = fsm_pdo;
   531                             cat_size * 2))
   531                             cat_size * 2))
   532                     goto end;
   532                     goto end;
   533                 break;
   533                 break;
   534             case 0x0032:
   534             case 0x0032:
   535                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   535                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   536                             cat_size * 2, EC_DIR_INPUT)) // TxPdo
   536                             cat_size * 2, EC_DIR_INPUT)) // TxPDO
   537                     goto end;
   537                     goto end;
   538                 break;
   538                 break;
   539             case 0x0033:
   539             case 0x0033:
   540                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   540                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   541                             cat_size * 2, EC_DIR_OUTPUT)) // RxPdo
   541                             cat_size * 2, EC_DIR_OUTPUT)) // RxPDO
   542                     goto end;
   542                     goto end;
   543                 break;
   543                 break;
   544             default:
   544             default:
   545                 if (fsm->slave->master->debug_level)
   545                 if (fsm->slave->master->debug_level)
   546                     EC_WARN("Unknown category type 0x%04X in slave %u.\n",
   546                     EC_WARN("Unknown category type 0x%04X in slave %u.\n",
   620         )
   620         )
   621 {
   621 {
   622     ec_slave_t *slave = fsm->slave;
   622     ec_slave_t *slave = fsm->slave;
   623 
   623 
   624     if (slave->master->debug_level)
   624     if (slave->master->debug_level)
   625         EC_DBG("Scanning Pdo assignment and mapping of slave %u.\n",
   625         EC_DBG("Scanning PDO assignment and mapping of slave %u.\n",
   626                 slave->ring_position);
   626                 slave->ring_position);
   627     fsm->state = ec_fsm_slave_scan_state_pdos;
   627     fsm->state = ec_fsm_slave_scan_state_pdos;
   628     ec_fsm_pdo_start_reading(fsm->fsm_pdo, slave);
   628     ec_fsm_pdo_start_reading(fsm->fsm_pdo, slave);
   629     ec_fsm_pdo_exec(fsm->fsm_pdo); // execute immediately
   629     ec_fsm_pdo_exec(fsm->fsm_pdo); // execute immediately
   630 }
   630 }
   643     if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
   643     if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
   644         fsm->state = ec_fsm_slave_scan_state_error;
   644         fsm->state = ec_fsm_slave_scan_state_error;
   645         return;
   645         return;
   646     }
   646     }
   647 
   647 
   648     // reading Pdo configuration finished
   648     // reading PDO configuration finished
   649     fsm->state = ec_fsm_slave_scan_state_end;
   649     fsm->state = ec_fsm_slave_scan_state_end;
   650 }
   650 }
   651 
   651 
   652 /******************************************************************************
   652 /******************************************************************************
   653  * Common state functions
   653  * Common state functions