Skip to content
Snippets Groups Projects
Commit 298e0ee1 authored by Florian Pose's avatar Florian Pose
Browse files

Bugfix: Registrieren von mehreren Feldern gleichzeitig geht jetzt.

parent 1c91395b
No related branches found
No related tags found
No related merge requests found
...@@ -254,7 +254,7 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain, ...@@ -254,7 +254,7 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain,
ec_master_t *master; ec_master_t *master;
const ec_sync_t *sync; const ec_sync_t *sync;
const ec_field_t *field; const ec_field_t *field;
unsigned int field_idx, i, j; unsigned int field_counter, i, j, orig_field_index, orig_field_count;
uint32_t field_offset; uint32_t field_offset;
if (!field_count) { if (!field_count) {
...@@ -281,19 +281,22 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain, ...@@ -281,19 +281,22 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain,
return NULL; return NULL;
} }
field_idx = 0; orig_field_index = field_index;
orig_field_count = field_count;
field_counter = 0;
for (i = 0; type->sync_managers[i]; i++) { for (i = 0; type->sync_managers[i]; i++) {
sync = type->sync_managers[i]; sync = type->sync_managers[i];
field_offset = 0; field_offset = 0;
for (j = 0; sync->fields[j]; j++) { for (j = 0; sync->fields[j]; j++) {
field = sync->fields[j]; field = sync->fields[j];
if (!strcmp(field->name, field_name)) { if (!strcmp(field->name, field_name)) {
if (field_idx == field_index) { if (field_counter++ == field_index) {
ec_domain_reg_field(domain, slave, sync, field_offset, ec_domain_reg_field(domain, slave, sync, field_offset,
data_ptr++); data_ptr++);
if (!(--field_count)) return slave; if (!(--field_count)) return slave;
field_index++;
} }
field_idx++;
} }
field_offset += field->size; field_offset += field->size;
} }
...@@ -301,7 +304,7 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain, ...@@ -301,7 +304,7 @@ ec_slave_t *ecrt_domain_register_field(ec_domain_t *domain,
EC_ERR("Slave %i (\"%s %s\") registration mismatch: Field \"%s\"," EC_ERR("Slave %i (\"%s %s\") registration mismatch: Field \"%s\","
" index %i, count %i.\n", slave->ring_position, vendor_name, " index %i, count %i.\n", slave->ring_position, vendor_name,
product_name, field_name, field_index, field_count); product_name, field_name, orig_field_index, orig_field_count);
return NULL; return NULL;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment