510 |
510 |
511 if (sc->master->debug_level) |
511 if (sc->master->debug_level) |
512 EC_DBG("Adding Pdo 0x%04X to mapping for dir %u, config %u:%u.\n", |
512 EC_DBG("Adding Pdo 0x%04X to mapping for dir %u, config %u:%u.\n", |
513 index, dir, sc->alias, sc->position); |
513 index, dir, sc->alias, sc->position); |
514 |
514 |
515 if (!(pdo = ec_pdo_mapping_add_pdo(pm, index, dir))) |
515 if (!(pdo = ec_pdo_mapping_add_pdo(pm, dir, index))) |
516 return -1; |
516 return -1; |
517 |
517 |
518 ec_slave_config_load_default_pdo_config(sc, pdo); |
518 ec_slave_config_load_default_pdo_config(sc, pdo); |
519 return 0; |
519 return 0; |
520 } |
520 } |
555 entry_bit_length) ? 0 : -1; |
555 entry_bit_length) ? 0 : -1; |
556 } |
556 } |
557 |
557 |
558 /*****************************************************************************/ |
558 /*****************************************************************************/ |
559 |
559 |
560 int ecrt_slave_config_mapping(ec_slave_config_t *sc, unsigned int n_entries, |
560 int ecrt_slave_config_mapping(ec_slave_config_t *sc, unsigned int n_infos, |
561 const ec_pdo_info_t pdo_infos[]) |
561 const ec_pdo_info_t pdo_infos[]) |
562 { |
562 { |
563 unsigned int i; |
563 unsigned int i, j; |
564 const ec_pdo_info_t *pi; |
564 const ec_pdo_info_t *pi; |
565 ec_pdo_mapping_t *pm; |
565 ec_pdo_mapping_t *pm; |
566 ec_pdo_t *pdo; |
566 ec_pdo_t *pdo; |
567 const ec_pdo_entry_info_t *ei; |
567 const ec_pdo_entry_info_t *ei; |
568 |
568 |
569 for (i = 0; i < n_entries; i++) { |
569 for (i = 0; i < n_infos; i++) { |
570 pi = &pdo_infos[i]; |
570 pi = &pdo_infos[i]; |
571 pm = &sc->mapping[pi->dir]; |
571 pm = &sc->mapping[pi->dir]; |
572 |
572 |
573 if (pm->default_mapping) { |
573 if (pm->default_mapping) { |
574 if (sc->master->debug_level) |
574 if (sc->master->debug_level) |
577 pm->default_mapping = 0; |
577 pm->default_mapping = 0; |
578 ec_pdo_mapping_clear_pdos(pm); |
578 ec_pdo_mapping_clear_pdos(pm); |
579 } |
579 } |
580 |
580 |
581 if (sc->master->debug_level) |
581 if (sc->master->debug_level) |
582 EC_DBG("Adding Pdo 0x%04X to mapping.\n", pi->index); |
582 EC_DBG("Adding Pdo 0x%04X to mapping for dir %u, config %u:%u.\n", |
|
583 pi->index, pi->dir, sc->alias, sc->position); |
583 |
584 |
584 if (!(pdo = ec_pdo_mapping_add_pdo(pm, pi->dir, pi->index))) |
585 if (!(pdo = ec_pdo_mapping_add_pdo(pm, pi->dir, pi->index))) |
585 return -1; |
586 return -1; |
586 |
587 |
587 if (pi->n_entries && pi->entries) { // configuration provided |
588 if (pi->n_entries && pi->entries) { // configuration provided |
588 if (sc->master->debug_level) |
589 if (sc->master->debug_level) |
589 EC_DBG(" Pdo configuration information provided.\n"); |
590 EC_DBG(" Pdo configuration information provided.\n"); |
590 |
591 |
591 for (i = 0; i < pi->n_entries; i++) { |
592 for (j = 0; j < pi->n_entries; j++) { |
592 ei = &pi->entries[i]; |
593 ei = &pi->entries[j]; |
593 if (!ec_pdo_add_entry(pdo, ei->index, ei->subindex, |
594 if (!ec_pdo_add_entry(pdo, ei->index, ei->subindex, |
594 ei->bit_length)) |
595 ei->bit_length)) |
595 return -1; |
596 return -1; |
596 } |
597 } |
597 } else { // use default Pdo configuration |
598 } else { // use default Pdo configuration |