master/slave_config.c
changeset 1025 ae175095f09a
parent 1022 8e49b519e6ba
child 1054 4c16fe64b403
equal deleted inserted replaced
1024:fef0b1953770 1025:ae175095f09a
   172 	if (sc->slave)
   172 	if (sc->slave)
   173 		return 0; // already attached
   173 		return 0; // already attached
   174 
   174 
   175     if (!(slave = ec_master_find_slave(
   175     if (!(slave = ec_master_find_slave(
   176                     sc->master, sc->alias, sc->position))) {
   176                     sc->master, sc->alias, sc->position))) {
   177         EC_WARN("Failed to find slave for configuration %u:%u.\n",
   177         if (sc->master->debug_level)
   178                 sc->alias, sc->position);
   178             EC_DBG("Failed to find slave for configuration %u:%u.\n",
       
   179                     sc->alias, sc->position);
   179         return -1;
   180         return -1;
   180     }
   181     }
   181 
   182 
   182 	if (slave->config) {
   183 	if (slave->config) {
   183 		EC_ERR("Failed to attach slave configuration %u:%u. Slave %u"
   184         if (sc->master->debug_level)
   184 				" already has a configuration!\n", sc->alias,
   185             EC_DBG("Failed to attach slave configuration %u:%u. Slave %u"
   185 				sc->position, slave->ring_position);
   186                     " already has a configuration!\n", sc->alias,
   186 		return -2;
   187                     sc->position, slave->ring_position);
   187 	}
   188         return -2;
   188 	if (slave->sii.vendor_id != sc->vendor_id
   189     }
   189 			|| slave->sii.product_code != sc->product_code) {
   190     if (slave->sii.vendor_id != sc->vendor_id
   190 		EC_ERR("Slave %u has an invalid type (0x%08X/0x%08X) for"
   191             || slave->sii.product_code != sc->product_code) {
   191 				" configuration %u:%u (0x%08X/0x%08X).\n",
   192         if (sc->master->debug_level)
   192 				slave->ring_position, slave->sii.vendor_id,
   193             EC_DBG("Slave %u has an invalid type (0x%08X/0x%08X) for"
   193 				slave->sii.product_code, sc->alias, sc->position,
   194                     " configuration %u:%u (0x%08X/0x%08X).\n",
   194 				sc->vendor_id, sc->product_code);
   195                     slave->ring_position, slave->sii.vendor_id,
   195 		return -3;
   196                     slave->sii.product_code, sc->alias, sc->position,
       
   197                     sc->vendor_id, sc->product_code);
       
   198         return -3;
   196 	}
   199 	}
   197 
   200 
   198 	// attach slave
   201 	// attach slave
   199 	slave->config = sc;
   202 	slave->config = sc;
   200 	sc->slave = slave;
   203 	sc->slave = slave;
       
   204     ec_slave_request_state(slave, EC_SLAVE_STATE_OP);
   201 
   205 
   202     if (sc->master->debug_level)
   206     if (sc->master->debug_level)
   203         EC_DBG("Attached slave %u to config %u:%u.\n",
   207         EC_DBG("Attached slave %u to config %u:%u.\n",
   204                 slave->ring_position, sc->alias, sc->position);
   208                 slave->ring_position, sc->alias, sc->position);
   205 
       
   206     ec_slave_request_state(slave, EC_SLAVE_STATE_OP);
       
   207 
   209 
   208 	return 0;
   210 	return 0;
   209 }
   211 }
   210 
   212 
   211 /*****************************************************************************/
   213 /*****************************************************************************/
   257     if (sc->master->debug_level)
   259     if (sc->master->debug_level)
   258         EC_DBG("Loading default configuration for Pdo 0x%04X in"
   260         EC_DBG("Loading default configuration for Pdo 0x%04X in"
   259                 " config %u:%u.\n", pdo->index, sc->alias, sc->position);
   261                 " config %u:%u.\n", pdo->index, sc->alias, sc->position);
   260 
   262 
   261     if (!sc->slave) {
   263     if (!sc->slave) {
   262         EC_WARN("Failed to load default Pdo configuration for %u:%u:"
   264         if (sc->master->debug_level)
   263                 " Slave not found.\n", sc->alias, sc->position);
   265             EC_DBG("Failed to load default Pdo configuration for %u:%u:"
       
   266                     " Slave not found.\n", sc->alias, sc->position);
   264         return;
   267         return;
   265     }
   268     }
   266 
   269 
   267     if (!(sync = ec_slave_get_pdo_sync(sc->slave, pdo->dir))) {
   270     if (!(sync = ec_slave_get_pdo_sync(sc->slave, pdo->dir))) {
   268         EC_WARN("Slave %u does not provide a default Pdo"
   271         if (sc->master->debug_level)
   269                 " configuration!\n", sc->slave->ring_position);
   272             EC_DBG("Slave %u does not provide a default Pdo"
       
   273                     " configuration!\n", sc->slave->ring_position);
   270         return;
   274         return;
   271     }
   275     }
   272 
   276 
   273     list_for_each_entry(default_pdo, &sync->pdos.list, list) {
   277     list_for_each_entry(default_pdo, &sync->pdos.list, list) {
   274         if (default_pdo->index != pdo->index)
   278         if (default_pdo->index != pdo->index)