master/master.c
changeset 61 cd014255f94f
parent 58 21b7342e2a90
child 63 0333d8ebfff5
equal deleted inserted replaced
60:2d2b120ba734 61:cd014255f94f
   613            state_and_ack);
   613            state_and_ack);
   614     return -1;
   614     return -1;
   615   }
   615   }
   616 
   616 
   617   if (unlikely(cmd.working_counter != 1)) {
   617   if (unlikely(cmd.working_counter != 1)) {
   618     printk(KERN_ERR "EtherCAT: Could not set state %02X - Device %i (%s %s)"
   618     printk(KERN_ERR "EtherCAT: Could not set state %02X - Slave %i (%s %s)"
   619            " did not respond!\n", state_and_ack, slave->ring_position * (-1),
   619            " did not respond!\n", state_and_ack, slave->ring_position * (-1),
   620            slave->type->vendor_name, slave->type->product_name);
   620            slave->type->vendor_name, slave->type->product_name);
   621     return -1;
   621     return -1;
   622   }
   622   }
   623 
   623 
   733    @param bus_index Index des Slaves im EtherCAT-Bus
   733    @param bus_index Index des Slaves im EtherCAT-Bus
   734    @param vendor_name String mit dem Herstellernamen
   734    @param vendor_name String mit dem Herstellernamen
   735    @param product_name String mit dem Produktnamen
   735    @param product_name String mit dem Produktnamen
   736    @param domain Domäne, in der der Slave sein soll
   736    @param domain Domäne, in der der Slave sein soll
   737 
   737 
   738    @return 0 bei Erfolg, sonst < 0
   738    @return Zeiger auf den Slave bei Erfolg, sonst NULL
   739 */
   739 */
   740 
   740 
   741 ec_slave_t *EtherCAT_rt_register_slave(ec_master_t *master,
   741 ec_slave_t *EtherCAT_rt_register_slave(ec_master_t *master,
   742                                        unsigned int bus_index,
   742                                        unsigned int bus_index,
   743                                        const char *vendor_name,
   743                                        const char *vendor_name,
   812   slave->registered = 1;
   812   slave->registered = 1;
   813 
   813 
   814   dom->data_size += type->process_data_size;
   814   dom->data_size += type->process_data_size;
   815 
   815 
   816   return slave;
   816   return slave;
       
   817 }
       
   818 
       
   819 /*****************************************************************************/
       
   820 
       
   821 /**
       
   822    Registriert eine ganze Liste von Slaves beim Master.
       
   823 
       
   824    @param master Der EtherCAT-Master
       
   825    @param slaves Array von Slave-Initialisierungsstrukturen
       
   826    @param count Anzahl der Strukturen in "slaves"
       
   827 
       
   828    @return 0 bei Erfolg, sonst < 0
       
   829 */
       
   830 
       
   831 int EtherCAT_rt_register_slave_list(ec_master_t *master,
       
   832                                     const ec_slave_init_t *slaves,
       
   833                                     unsigned int count)
       
   834 {
       
   835   unsigned int i;
       
   836 
       
   837   for (i = 0; i < count; i++)
       
   838   {
       
   839     if ((*(slaves[i].slave_ptr) =
       
   840          EtherCAT_rt_register_slave(master, slaves[i].bus_index,
       
   841                                     slaves[i].vendor_name,
       
   842                                     slaves[i].product_name,
       
   843                                     slaves[i].domain)) == NULL)
       
   844       return -1;
       
   845   }
       
   846 
       
   847   return 0;
   817 }
   848 }
   818 
   849 
   819 /*****************************************************************************/
   850 /*****************************************************************************/
   820 
   851 
   821 /**
   852 /**
  1044   ec_slave_t *slave;
  1075   ec_slave_t *slave;
  1045   unsigned int i;
  1076   unsigned int i;
  1046 
  1077 
  1047   for (i = 0; i < master->bus_slaves_count; i++)
  1078   for (i = 0; i < master->bus_slaves_count; i++)
  1048   {
  1079   {
  1049     slave = master->bus_slaves + 1;
  1080     slave = master->bus_slaves + i;
  1050 
  1081 
  1051     if (unlikely(ec_state_change(master, slave, EC_SLAVE_STATE_INIT) != 0))
  1082     if (unlikely(ec_state_change(master, slave, EC_SLAVE_STATE_INIT) != 0))
  1052       return -1;
  1083       return -1;
  1053   }
  1084   }
  1054 
  1085 
  1153 }
  1184 }
  1154 
  1185 
  1155 /*****************************************************************************/
  1186 /*****************************************************************************/
  1156 
  1187 
  1157 EXPORT_SYMBOL(EtherCAT_rt_register_slave);
  1188 EXPORT_SYMBOL(EtherCAT_rt_register_slave);
       
  1189 EXPORT_SYMBOL(EtherCAT_rt_register_slave_list);
  1158 EXPORT_SYMBOL(EtherCAT_rt_activate_slaves);
  1190 EXPORT_SYMBOL(EtherCAT_rt_activate_slaves);
  1159 EXPORT_SYMBOL(EtherCAT_rt_deactivate_slaves);
  1191 EXPORT_SYMBOL(EtherCAT_rt_deactivate_slaves);
  1160 EXPORT_SYMBOL(EtherCAT_rt_domain_xio);
  1192 EXPORT_SYMBOL(EtherCAT_rt_domain_xio);
  1161 EXPORT_SYMBOL(EtherCAT_rt_debug_level);
  1193 EXPORT_SYMBOL(EtherCAT_rt_debug_level);
  1162 
  1194