master/fsm_coe_map.c
changeset 849 4b712ec8929d
parent 847 92266462d411
child 852 ab439cbc7a81
equal deleted inserted replaced
848:ae0829882a72 849:4b712ec8929d
   177             EC_DBG("Reading Pdo mapping of sync manager %u of slave %u.\n",
   177             EC_DBG("Reading Pdo mapping of sync manager %u of slave %u.\n",
   178                     fsm->sync->index, slave->ring_position);
   178                     fsm->sync->index, slave->ring_position);
   179 
   179 
   180         ec_pdo_mapping_clear_pdos(&fsm->mapping);
   180         ec_pdo_mapping_clear_pdos(&fsm->mapping);
   181 
   181 
   182         ec_sdo_request_init(&fsm->request, slave, fsm->sync_sdo_index, 0);
   182         ec_sdo_request_init(&fsm->request, fsm->sync_sdo_index, 0);
   183         fsm->state = ec_fsm_coe_map_state_pdo_count;
   183         fsm->state = ec_fsm_coe_map_state_pdo_count;
   184         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   184         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   185         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   185         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   186         return;
   186         return;
   187     }
   187     }
   231 void ec_fsm_coe_map_action_next_pdo(
   231 void ec_fsm_coe_map_action_next_pdo(
   232         ec_fsm_coe_map_t *fsm /**< finite state machine */
   232         ec_fsm_coe_map_t *fsm /**< finite state machine */
   233         )
   233         )
   234 {
   234 {
   235     if (fsm->sync_subindex <= fsm->sync_subindices) {
   235     if (fsm->sync_subindex <= fsm->sync_subindices) {
   236         ec_sdo_request_init(&fsm->request, fsm->slave,
   236         ec_sdo_request_init(&fsm->request, fsm->sync_sdo_index,
   237                 fsm->sync_sdo_index, fsm->sync_subindex);
   237                 fsm->sync_subindex);
   238         fsm->state = ec_fsm_coe_map_state_pdo;
   238         fsm->state = ec_fsm_coe_map_state_pdo;
   239         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   239         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   240         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   240         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   241         return;
   241         return;
   242     }
   242     }
   288     if (fsm->slave->master->debug_level)
   288     if (fsm->slave->master->debug_level)
   289         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   289         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   290 
   290 
   291     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   291     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   292 
   292 
   293     ec_sdo_request_init(&fsm->request, fsm->slave, fsm->pdo->index, 0);
   293     ec_sdo_request_init(&fsm->request, fsm->pdo->index, 0);
   294     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   294     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   295     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   295     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   296     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   296     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   297 }
   297 }
   298 
   298 
   334 void ec_fsm_coe_map_action_next_pdo_entry(
   334 void ec_fsm_coe_map_action_next_pdo_entry(
   335         ec_fsm_coe_map_t *fsm /**< finite state machine */
   335         ec_fsm_coe_map_t *fsm /**< finite state machine */
   336         )
   336         )
   337 {
   337 {
   338     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   338     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   339         ec_sdo_request_init(&fsm->request, fsm->slave,
   339         ec_sdo_request_init(&fsm->request, fsm->pdo->index, fsm->pdo_subindex);
   340                 fsm->pdo->index, fsm->pdo_subindex);
       
   341         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   340         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   342         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   341         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   343         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   342         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   344         return;
   343         return;
   345     }
   344     }