master/slave.c
changeset 91 0120d6214948
parent 89 e91ef35c36db
child 98 f564d0929292
equal deleted inserted replaced
90:044e97bce4bd 91:0120d6214948
    56 
    56 
    57 /*****************************************************************************/
    57 /*****************************************************************************/
    58 
    58 
    59 /**
    59 /**
    60    Liest alle benötigten Informationen aus einem Slave.
    60    Liest alle benötigten Informationen aus einem Slave.
       
    61 
       
    62    \return 0 wenn alles ok, < 0 bei Fehler.
    61 */
    63 */
    62 
    64 
    63 int ec_slave_fetch(ec_slave_t *slave /**< EtherCAT-Slave */)
    65 int ec_slave_fetch(ec_slave_t *slave /**< EtherCAT-Slave */)
    64 {
    66 {
    65     ec_frame_t frame;
    67     ec_frame_t frame;
   184 /*****************************************************************************/
   186 /*****************************************************************************/
   185 
   187 
   186 /**
   188 /**
   187    Bestätigt einen Fehler beim Zustandswechsel.
   189    Bestätigt einen Fehler beim Zustandswechsel.
   188 
   190 
   189    FIXME Funktioniert noch nicht...
   191    \todo Funktioniert noch nicht...
   190 */
   192 */
   191 
   193 
   192 void ec_slave_state_ack(ec_slave_t *slave,
   194 void ec_slave_state_ack(ec_slave_t *slave,
   193                         /**< Slave, dessen Zustand geändert werden soll */
   195                         /**< Slave, dessen Zustand geändert werden soll */
   194                         uint8_t state
   196                         uint8_t state
   340     // FMMU schon vorgemerkt?
   342     // FMMU schon vorgemerkt?
   341     for (i = 0; i < slave->fmmu_count; i++)
   343     for (i = 0; i < slave->fmmu_count; i++)
   342         if (slave->fmmus[i].domain == domain && slave->fmmus[i].sync == sync)
   344         if (slave->fmmus[i].domain == domain && slave->fmmus[i].sync == sync)
   343             return 0;
   345             return 0;
   344 
   346 
       
   347     // Neue FMMU reservieren...
       
   348 
   345     if (slave->fmmu_count >= slave->base_fmmu_count) {
   349     if (slave->fmmu_count >= slave->base_fmmu_count) {
   346         EC_ERR("Slave %i FMMU limit reached!\n", slave->ring_position);
   350         EC_ERR("Slave %i FMMU limit reached!\n", slave->ring_position);
   347         return -1;
   351         return -1;
   348     }
   352     }
   349 
   353