618 uint8_t subindex, const uint8_t *data, size_t size) |
618 uint8_t subindex, const uint8_t *data, size_t size) |
619 { |
619 { |
620 ec_slave_t *slave = sc->slave; |
620 ec_slave_t *slave = sc->slave; |
621 ec_sdo_request_t *req; |
621 ec_sdo_request_t *req; |
622 |
622 |
|
623 if (sc->master->debug_level) |
|
624 EC_DBG("ecrt_slave_config_sdo(sc = 0x%x, index = 0x%04X, " |
|
625 "subindex = 0x%02X, data = 0x%x, size = %u)\n", (u32) sc, |
|
626 index, subindex, (u32) data, size); |
|
627 |
623 if (slave && !(slave->sii.mailbox_protocols & EC_MBOX_COE)) { |
628 if (slave && !(slave->sii.mailbox_protocols & EC_MBOX_COE)) { |
624 EC_ERR("Slave %u does not support CoE!\n", slave->ring_position); |
629 EC_ERR("Slave %u does not support CoE!\n", slave->ring_position); |
625 return -1; |
630 return -1; |
626 } |
631 } |
627 |
632 |
651 |
656 |
652 int ecrt_slave_config_sdo8(ec_slave_config_t *sc, uint16_t index, |
657 int ecrt_slave_config_sdo8(ec_slave_config_t *sc, uint16_t index, |
653 uint8_t subindex, uint8_t value) |
658 uint8_t subindex, uint8_t value) |
654 { |
659 { |
655 uint8_t data[1]; |
660 uint8_t data[1]; |
|
661 |
|
662 if (sc->master->debug_level) |
|
663 EC_DBG("ecrt_slave_config_sdo8(sc = 0x%x, index = 0x%04X, " |
|
664 "subindex = 0x%02X, value = %u)\n", (u32) sc, |
|
665 index, subindex, (u32) value); |
|
666 |
656 EC_WRITE_U8(data, value); |
667 EC_WRITE_U8(data, value); |
657 return ecrt_slave_config_sdo(sc, index, subindex, data, 1); |
668 return ecrt_slave_config_sdo(sc, index, subindex, data, 1); |
658 } |
669 } |
659 |
670 |
660 /*****************************************************************************/ |
671 /*****************************************************************************/ |
661 |
672 |
662 int ecrt_slave_config_sdo16(ec_slave_config_t *sc, uint16_t index, |
673 int ecrt_slave_config_sdo16(ec_slave_config_t *sc, uint16_t index, |
663 uint8_t subindex, uint16_t value) |
674 uint8_t subindex, uint16_t value) |
664 { |
675 { |
665 uint8_t data[2]; |
676 uint8_t data[2]; |
|
677 |
|
678 if (sc->master->debug_level) |
|
679 EC_DBG("ecrt_slave_config_sdo16(sc = 0x%x, index = 0x%04X, " |
|
680 "subindex = 0x%02X, value = %u)\n", (u32) sc, |
|
681 index, subindex, value); |
|
682 |
666 EC_WRITE_U16(data, value); |
683 EC_WRITE_U16(data, value); |
667 return ecrt_slave_config_sdo(sc, index, subindex, data, 2); |
684 return ecrt_slave_config_sdo(sc, index, subindex, data, 2); |
668 } |
685 } |
669 |
686 |
670 /*****************************************************************************/ |
687 /*****************************************************************************/ |
671 |
688 |
672 int ecrt_slave_config_sdo32(ec_slave_config_t *sc, uint16_t index, |
689 int ecrt_slave_config_sdo32(ec_slave_config_t *sc, uint16_t index, |
673 uint8_t subindex, uint32_t value) |
690 uint8_t subindex, uint32_t value) |
674 { |
691 { |
675 uint8_t data[4]; |
692 uint8_t data[4]; |
|
693 |
|
694 if (sc->master->debug_level) |
|
695 EC_DBG("ecrt_slave_config_sdo32(sc = 0x%x, index = 0x%04X, " |
|
696 "subindex = 0x%02X, value = %u)\n", (u32) sc, |
|
697 index, subindex, value); |
|
698 |
676 EC_WRITE_U32(data, value); |
699 EC_WRITE_U32(data, value); |
677 return ecrt_slave_config_sdo(sc, index, subindex, data, 4); |
700 return ecrt_slave_config_sdo(sc, index, subindex, data, 4); |
678 } |
701 } |
679 |
702 |
680 /*****************************************************************************/ |
703 /*****************************************************************************/ |