master/fsm_slave_scan.c
changeset 1327 4d179b06dd3c
parent 1326 ef907b0b5125
child 1337 0253c74d0940
equal deleted inserted replaced
1326:ef907b0b5125 1327:4d179b06dd3c
    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;
   534                             cat_size * 2))
   534                             cat_size * 2))
   535                     goto end;
   535                     goto end;
   536                 break;
   536                 break;
   537             case 0x0032:
   537             case 0x0032:
   538                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   538                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   539                             cat_size * 2, EC_DIR_INPUT)) // TxPdo
   539                             cat_size * 2, EC_DIR_INPUT)) // TxPDO
   540                     goto end;
   540                     goto end;
   541                 break;
   541                 break;
   542             case 0x0033:
   542             case 0x0033:
   543                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   543                 if (ec_slave_fetch_sii_pdos( slave, (uint8_t *) cat_word,
   544                             cat_size * 2, EC_DIR_OUTPUT)) // RxPdo
   544                             cat_size * 2, EC_DIR_OUTPUT)) // RxPDO
   545                     goto end;
   545                     goto end;
   546                 break;
   546                 break;
   547             default:
   547             default:
   548                 if (fsm->slave->master->debug_level)
   548                 if (fsm->slave->master->debug_level)
   549                     EC_WARN("Unknown category type 0x%04X in slave %u.\n",
   549                     EC_WARN("Unknown category type 0x%04X in slave %u.\n",
   623         )
   623         )
   624 {
   624 {
   625     ec_slave_t *slave = fsm->slave;
   625     ec_slave_t *slave = fsm->slave;
   626 
   626 
   627     if (slave->master->debug_level)
   627     if (slave->master->debug_level)
   628         EC_DBG("Scanning Pdo assignment and mapping of slave %u.\n",
   628         EC_DBG("Scanning PDO assignment and mapping of slave %u.\n",
   629                 slave->ring_position);
   629                 slave->ring_position);
   630     fsm->state = ec_fsm_slave_scan_state_pdos;
   630     fsm->state = ec_fsm_slave_scan_state_pdos;
   631     ec_fsm_pdo_start_reading(fsm->fsm_pdo, slave);
   631     ec_fsm_pdo_start_reading(fsm->fsm_pdo, slave);
   632     ec_fsm_pdo_exec(fsm->fsm_pdo); // execute immediately
   632     ec_fsm_pdo_exec(fsm->fsm_pdo); // execute immediately
   633 }
   633 }
   646     if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
   646     if (!ec_fsm_pdo_success(fsm->fsm_pdo)) {
   647         fsm->state = ec_fsm_slave_scan_state_error;
   647         fsm->state = ec_fsm_slave_scan_state_error;
   648         return;
   648         return;
   649     }
   649     }
   650 
   650 
   651     // reading Pdo configuration finished
   651     // reading PDO configuration finished
   652     fsm->state = ec_fsm_slave_scan_state_end;
   652     fsm->state = ec_fsm_slave_scan_state_end;
   653 }
   653 }
   654 
   654 
   655 /******************************************************************************
   655 /******************************************************************************
   656  * Common state functions
   656  * Common state functions