# HG changeset patch # User Florian Pose # Date 1154441733 0 # Node ID 71d559ec66d7e71d51c3a77e2e663845c916a462 # Parent 88f2e8c4facec42cebc8d87f28ff5debc16d0868 Fixed bug with bit-sized PDOs leading to wrong Sync-Manager sizes. diff -r 88f2e8c4face -r 71d559ec66d7 master/slave.c --- a/master/slave.c Mon Jul 31 18:52:06 2006 +0000 +++ b/master/slave.c Tue Aug 01 14:15:33 2006 +0000 @@ -1508,20 +1508,23 @@ { ec_eeprom_pdo_t *pdo; ec_eeprom_pdo_entry_t *pdo_entry; - uint16_t size; + unsigned int bit_size; if (sync->length) return sync->length; - size = 0; + bit_size = 0; list_for_each_entry(pdo, &slave->eeprom_pdos, list) { if (pdo->sync_manager != sync->index) continue; list_for_each_entry(pdo_entry, &pdo->entries, list) { - size += pdo_entry->bit_length / 8; - } - } - - return size; + bit_size += pdo_entry->bit_length; + } + } + + if (bit_size % 8) // round up to full bytes + return bit_size / 8 + 1; + else + return bit_size / 8; } /******************************************************************************