equal
deleted
inserted
replaced
104 |
104 |
105 slave->base_fmmu_bit_operation = 0; |
105 slave->base_fmmu_bit_operation = 0; |
106 slave->base_dc_supported = 0; |
106 slave->base_dc_supported = 0; |
107 slave->base_dc_range = EC_DC_32; |
107 slave->base_dc_range = EC_DC_32; |
108 slave->has_dc_system_time = 0; |
108 slave->has_dc_system_time = 0; |
109 slave->transition_delay = 0U; |
109 slave->transmission_delay = 0U; |
110 |
110 |
111 slave->sii_words = NULL; |
111 slave->sii_words = NULL; |
112 slave->sii_nwords = 0; |
112 slave->sii_nwords = 0; |
113 |
113 |
114 slave->sii.alias = 0x0000; |
114 slave->sii.alias = 0x0000; |
790 return dc_slave; |
790 return dc_slave; |
791 } |
791 } |
792 |
792 |
793 /*****************************************************************************/ |
793 /*****************************************************************************/ |
794 |
794 |
795 /** Calculates the port transition delays. |
795 /** Calculates the port transmission delays. |
796 */ |
796 */ |
797 void ec_slave_calc_port_delays( |
797 void ec_slave_calc_port_delays( |
798 ec_slave_t *slave /**< EtherCAT slave. */ |
798 ec_slave_t *slave /**< EtherCAT slave. */ |
799 ) |
799 ) |
800 { |
800 { |
827 } |
827 } |
828 } |
828 } |
829 |
829 |
830 /*****************************************************************************/ |
830 /*****************************************************************************/ |
831 |
831 |
832 /** Calculates the bus topology; recursion function. |
832 /** Recursively calculates transmission delays. |
833 */ |
833 */ |
834 void ec_slave_calc_transition_delays_rec( |
834 void ec_slave_calc_transmission_delays_rec( |
835 ec_slave_t *slave, /**< Current slave. */ |
835 ec_slave_t *slave, /**< Current slave. */ |
836 uint32_t *delay /**< Sum of delays. */ |
836 uint32_t *delay /**< Sum of delays. */ |
837 ) |
837 ) |
838 { |
838 { |
839 unsigned int i; |
839 unsigned int i; |
841 |
841 |
842 #if 0 |
842 #if 0 |
843 EC_DBG("%u: %u\n", slave->ring_position, *delay); |
843 EC_DBG("%u: %u\n", slave->ring_position, *delay); |
844 #endif |
844 #endif |
845 |
845 |
846 slave->transition_delay = *delay; |
846 slave->transmission_delay = *delay; |
847 |
847 |
848 for (i = 1; i < EC_MAX_PORTS; i++) { |
848 for (i = 1; i < EC_MAX_PORTS; i++) { |
849 ec_slave_port_t *port = &slave->ports[i]; |
849 ec_slave_port_t *port = &slave->ports[i]; |
850 next = port->next_slave; |
850 next = port->next_slave; |
851 if (!next) |
851 if (!next) |
856 |
856 |
857 *delay = *delay + port->delay_to_next_dc; |
857 *delay = *delay + port->delay_to_next_dc; |
858 #if 0 |
858 #if 0 |
859 EC_DBG("%u:%u %u\n", slave->ring_position, i, *delay); |
859 EC_DBG("%u:%u %u\n", slave->ring_position, i, *delay); |
860 #endif |
860 #endif |
861 ec_slave_calc_transition_delays_rec(next_dc, delay); |
861 ec_slave_calc_transmission_delays_rec(next_dc, delay); |
862 } |
862 } |
863 |
863 |
864 *delay = *delay + slave->ports[0].delay_to_next_dc; |
864 *delay = *delay + slave->ports[0].delay_to_next_dc; |
865 } |
865 } |
866 |
866 |