/** FMMU configuration constructor. * * Inits an FMMU configuration, sets the logical start address and adds the * process data size for the mapped PDOs of the given direction to the domain * data size. */ void ec_fmmu_config_init( ec_fmmu_config_t *fmmu, /**< EtherCAT FMMU configuration. */ ec_slave_config_t *sc, /**< EtherCAT slave configuration. */ ec_domain_t *domain, /**< EtherCAT domain. */ uint8_t sync_index, /**< Sync manager index to use. */ ec_direction_t dir /**< PDO direction. */ ) { INIT_LIST_HEAD(&fmmu->list); fmmu->sc = sc; fmmu->sync_index = sync_index; fmmu->dir = dir; fmmu->logical_domain_offset = 0; fmmu->data_size = 0; ec_domain_add_fmmu_config(domain, fmmu); }
/** FMMU configuration constructor. * * Inits an FMMU configuration, sets the logical start address and adds the * process data size for the mapped PDOs of the given direction to the domain * data size. */ void ec_fmmu_config_init( ec_fmmu_config_t *fmmu, /**< EtherCAT FMMU configuration. */ ec_slave_config_t *sc, /**< EtherCAT slave configuration. */ ec_domain_t *domain, /**< EtherCAT domain. */ uint8_t sync_index, /**< Sync manager index to use. */ ec_direction_t dir /**< PDO direction. */ ) { INIT_LIST_HEAD(&fmmu->list); fmmu->sc = sc; fmmu->sync_index = sync_index; fmmu->dir = dir; fmmu->logical_start_address = domain->data_size; fmmu->data_size = ec_pdo_list_total_size( &sc->sync_configs[sync_index].pdos); ec_domain_add_fmmu_config(domain, fmmu); }