diff -r 9d7453c16ade -r 4bbe090553f7 master/domain.c --- a/master/domain.c Mon May 29 09:54:18 2006 +0000 +++ b/master/domain.c Mon Jun 26 15:04:06 2006 +0000 @@ -225,7 +225,7 @@ */ int ec_domain_alloc(ec_domain_t *domain, /**< EtherCAT domain */ - uint32_t base_address /**< Logische Basisadresse */ + uint32_t base_address /**< logical base address */ ) { ec_field_reg_t *field_reg; @@ -234,12 +234,12 @@ unsigned int i, j, cmd_count; uint32_t field_off, field_off_cmd; uint32_t cmd_offset; - size_t cmd_data_size; + size_t cmd_data_size, sync_size; ec_command_t *command; domain->base_address = base_address; - // Größe der Prozessdaten berechnen und Kommandos allozieren + // calculate size of process data and allocate memory domain->data_size = 0; cmd_offset = base_address; cmd_data_size = 0; @@ -249,20 +249,21 @@ fmmu = &slave->fmmus[j]; if (fmmu->domain == domain) { fmmu->logical_start_address = base_address + domain->data_size; - domain->data_size += fmmu->sync->size; - if (cmd_data_size + fmmu->sync->size > EC_MAX_DATA_SIZE) { + sync_size = ec_slave_calc_sync_size(slave, fmmu->sync); + domain->data_size += sync_size; + if (cmd_data_size + sync_size > EC_MAX_DATA_SIZE) { if (ec_domain_add_command(domain, cmd_offset, cmd_data_size)) return -1; cmd_offset += cmd_data_size; cmd_data_size = 0; cmd_count++; } - cmd_data_size += fmmu->sync->size; + cmd_data_size += sync_size; } } } - // Letztes Kommando allozieren + // allocate last command if (cmd_data_size) { if (ec_domain_add_command(domain, cmd_offset, cmd_data_size)) return -1; @@ -275,14 +276,14 @@ return 0; } - // Alle Prozessdatenzeiger setzen + // set all process data pointers list_for_each_entry(field_reg, &domain->field_regs, list) { for (i = 0; i < field_reg->slave->fmmu_count; i++) { fmmu = &field_reg->slave->fmmus[i]; if (fmmu->domain == domain && fmmu->sync == field_reg->sync) { field_off = fmmu->logical_start_address + field_reg->field_offset; - // Kommando suchen + // search command list_for_each_entry(command, &domain->commands, list) { field_off_cmd = field_off - command->address.logical; if (field_off >= command->address.logical &&