master/slave.c
changeset 1426 af45bba80d85
parent 1425 c1322a8793c0
child 1507 68e89abadd19
equal deleted inserted replaced
1425:c1322a8793c0 1426:af45bba80d85
   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