master/slave.c
changeset 298 d491d1f84ebc
parent 296 967aaacf9b20
child 302 ad630f38cca1
equal deleted inserted replaced
297:ac2a057a8ef2 298:d491d1f84ebc
  1492         }
  1492         }
  1493     }
  1493     }
  1494     return size;
  1494     return size;
  1495 }
  1495 }
  1496 
  1496 
       
  1497 /*****************************************************************************/
       
  1498 
       
  1499 /**
       
  1500    Calculates the size of a sync manager by evaluating PDO sizes.
       
  1501    \return sync manager size
       
  1502 */
       
  1503 
       
  1504 uint16_t ec_slave_calc_eeprom_sync_size(const ec_slave_t *slave,
       
  1505                                         /**< EtherCAT slave */
       
  1506                                         const ec_eeprom_sync_t *sync
       
  1507                                         /**< sync manager */
       
  1508                                         )
       
  1509 {
       
  1510     ec_eeprom_pdo_t *pdo;
       
  1511     ec_eeprom_pdo_entry_t *pdo_entry;
       
  1512     uint16_t size;
       
  1513 
       
  1514     if (sync->length) return sync->length;
       
  1515 
       
  1516     size = 0;
       
  1517     list_for_each_entry(pdo, &slave->eeprom_pdos, list) {
       
  1518         if (pdo->sync_manager != sync->index) continue;
       
  1519 
       
  1520         list_for_each_entry(pdo_entry, &pdo->entries, list) {
       
  1521             size += pdo_entry->bit_length / 8;
       
  1522         }
       
  1523     }
       
  1524 
       
  1525     return size;
       
  1526 }
       
  1527 
  1497 /******************************************************************************
  1528 /******************************************************************************
  1498  *  Realtime interface
  1529  *  Realtime interface
  1499  *****************************************************************************/
  1530  *****************************************************************************/
  1500 
  1531 
  1501 /**
  1532 /**