master/master.c
changeset 261 44a3a5833c49
parent 259 87b20532872b
child 268 4f9c149fb71f
equal deleted inserted replaced
260:5fe7df7f2433 261:44a3a5833c49
   851             eoe->slave = slave;
   851             eoe->slave = slave;
   852             found = 1;
   852             found = 1;
   853             coupled++;
   853             coupled++;
   854             EC_INFO("Coupling device %s to slave %i.\n",
   854             EC_INFO("Coupling device %s to slave %i.\n",
   855                     eoe->dev->name, slave->ring_position);
   855                     eoe->dev->name, slave->ring_position);
   856             if (eoe->opened)
   856             if (eoe->opened) {
   857                 slave->requested_state = EC_SLAVE_STATE_OP;
   857                 slave->requested_state = EC_SLAVE_STATE_OP;
       
   858             }
       
   859             else {
       
   860                 slave->requested_state = EC_SLAVE_STATE_INIT;
       
   861             }
       
   862             slave->state_error = 0;
   858             break;
   863             break;
   859         }
   864         }
   860 
   865 
   861         if (!found) {
   866         if (!found) {
   862             EC_WARN("No EoE handler for slave %i!\n", slave->ring_position);
   867             EC_WARN("No EoE handler for slave %i!\n", slave->ring_position);
   863             slave->requested_state = EC_SLAVE_STATE_INIT;
   868             slave->requested_state = EC_SLAVE_STATE_INIT;
       
   869             slave->state_error = 0;
   864         }
   870         }
   865     }
   871     }
   866 
   872 
   867     if (!coupled) {
   873     if (!coupled) {
   868         EC_INFO("No EoE handlers coupled.\n");
   874         EC_INFO("No EoE handlers coupled.\n");
   896 
   902 
   897     // decouple all EoE handlers
   903     // decouple all EoE handlers
   898     list_for_each_entry(eoe, &master->eoe_handlers, list) {
   904     list_for_each_entry(eoe, &master->eoe_handlers, list) {
   899         if (eoe->slave) {
   905         if (eoe->slave) {
   900             eoe->slave->requested_state = EC_SLAVE_STATE_INIT;
   906             eoe->slave->requested_state = EC_SLAVE_STATE_INIT;
       
   907             eoe->slave->state_error = 0;
   901             eoe->slave = NULL;
   908             eoe->slave = NULL;
   902         }
   909         }
   903     }
   910     }
   904 
   911 
   905     master->eoe_running = 0;
   912     master->eoe_running = 0;
   906 }
   913 }
   907 
   914 
   908 /*****************************************************************************/
   915 /*****************************************************************************/
   909 
       
   910 /**
   916 /**
   911    Does the Ethernet-over-EtherCAT processing.
   917    Does the Ethernet-over-EtherCAT processing.
   912 */
   918 */
   913 
   919 
   914 void ec_master_eoe_run(unsigned long data /**< master pointer */)
   920 void ec_master_eoe_run(unsigned long data /**< master pointer */)