master/fsm_pdo_assign.c
changeset 890 1115793a76ed
parent 879 9b395c5646ab
child 1050 c6afe1cbfaf7
equal deleted inserted replaced
889:661b61ca86ed 890:1115793a76ed
   150         fsm->state = ec_fsm_pdo_assign_state_end;
   150         fsm->state = ec_fsm_pdo_assign_state_end;
   151         return;
   151         return;
   152     }
   152     }
   153 
   153 
   154     fsm->dir = (ec_direction_t) -1; // next is EC_DIR_OUTPUT
   154     fsm->dir = (ec_direction_t) -1; // next is EC_DIR_OUTPUT
       
   155     fsm->num_configured_dirs = 0;
   155     ec_fsm_pdo_assign_next_dir(fsm);
   156     ec_fsm_pdo_assign_next_dir(fsm);
   156 }
   157 }
   157 
   158 
   158 /*****************************************************************************/
   159 /*****************************************************************************/
   159 
   160 
   189                     fsm->slave->ring_position);
   190                     fsm->slave->ring_position);
   190             fsm->state = ec_fsm_pdo_assign_state_error;
   191             fsm->state = ec_fsm_pdo_assign_state_error;
   191             return;
   192             return;
   192         }
   193         }
   193 
   194 
       
   195         fsm->num_configured_dirs++;
       
   196 
   194         if (fsm->slave->master->debug_level) {
   197         if (fsm->slave->master->debug_level) {
   195             EC_DBG("Changing Pdo assignment for SM%u of slave %u.\n",
   198             EC_DBG("Changing Pdo assignment for SM%u of slave %u.\n",
   196                     fsm->sync->index, fsm->slave->ring_position);
   199                     fsm->sync->index, fsm->slave->ring_position);
   197         }
   200         }
   198 
   201 
   213         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   216         ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request);
   214         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   217         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   215         return;
   218         return;
   216     }
   219     }
   217 
   220 
   218     if (fsm->slave->master->debug_level)
   221     if (fsm->slave->master->debug_level && !fsm->num_configured_dirs)
   219         EC_DBG("Pdo assignment finished for slave %u.\n",
   222         EC_DBG("Pdo assignments of slave %u are already configured"
   220                 fsm->slave->ring_position);
   223                 " correctly.\n", fsm->slave->ring_position);
   221     fsm->state = ec_fsm_pdo_assign_state_end;
   224     fsm->state = ec_fsm_pdo_assign_state_end;
   222 }
   225 }
   223 
   226 
   224 /*****************************************************************************/
   227 /*****************************************************************************/
   225 
   228 
   346         fsm->state = ec_fsm_pdo_assign_state_error;
   349         fsm->state = ec_fsm_pdo_assign_state_error;
   347         return;
   350         return;
   348     }
   351     }
   349 
   352 
   350     if (fsm->slave->master->debug_level)
   353     if (fsm->slave->master->debug_level)
   351         EC_DBG("Successfully set Pdo assignment for SM%u of slave %u.\n",
   354         EC_DBG("Successfully configured Pdo assignment for SM%u of"
   352                 fsm->sync->index, fsm->slave->ring_position);
   355                 " slave %u.\n", fsm->sync->index, fsm->slave->ring_position);
   353 
   356 
   354     // assignment for this direction finished
   357     // assignment for this direction finished
   355     ec_fsm_pdo_assign_next_dir(fsm);
   358     ec_fsm_pdo_assign_next_dir(fsm);
   356 }
   359 }
   357 
   360