master/fsm_coe_map.c
changeset 858 69122084d066
parent 854 f4f53be425ac
child 859 233e32f428e1
equal deleted inserted replaced
857:7874c884dc2b 858:69122084d066
   180                     fsm->sync->index, slave->ring_position);
   180                     fsm->sync->index, slave->ring_position);
   181 
   181 
   182         ec_pdo_mapping_clear_pdos(&fsm->mapping);
   182         ec_pdo_mapping_clear_pdos(&fsm->mapping);
   183 
   183 
   184         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index, 0);
   184         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index, 0);
   185         ec_sdo_request_read(&fsm->request);
   185         ecrt_sdo_request_read(&fsm->request);
   186         fsm->state = ec_fsm_coe_map_state_pdo_count;
   186         fsm->state = ec_fsm_coe_map_state_pdo_count;
   187         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   187         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   188         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   188         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   189         return;
   189         return;
   190     }
   190     }
   236         )
   236         )
   237 {
   237 {
   238     if (fsm->sync_subindex <= fsm->sync_subindices) {
   238     if (fsm->sync_subindex <= fsm->sync_subindices) {
   239         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index,
   239         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index,
   240                 fsm->sync_subindex);
   240                 fsm->sync_subindex);
   241         ec_sdo_request_read(&fsm->request);
   241         ecrt_sdo_request_read(&fsm->request);
   242         fsm->state = ec_fsm_coe_map_state_pdo;
   242         fsm->state = ec_fsm_coe_map_state_pdo;
   243         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   243         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   244         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   244         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   245         return;
   245         return;
   246     }
   246     }
   293         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   293         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   294 
   294 
   295     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   295     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   296 
   296 
   297     ec_sdo_request_address(&fsm->request, fsm->pdo->index, 0);
   297     ec_sdo_request_address(&fsm->request, fsm->pdo->index, 0);
   298     ec_sdo_request_read(&fsm->request);
   298     ecrt_sdo_request_read(&fsm->request);
   299     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   299     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   300     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   300     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   301     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   301     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   302 }
   302 }
   303 
   303 
   340         ec_fsm_coe_map_t *fsm /**< finite state machine */
   340         ec_fsm_coe_map_t *fsm /**< finite state machine */
   341         )
   341         )
   342 {
   342 {
   343     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   343     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   344         ec_sdo_request_address(&fsm->request, fsm->pdo->index, fsm->pdo_subindex);
   344         ec_sdo_request_address(&fsm->request, fsm->pdo->index, fsm->pdo_subindex);
   345         ec_sdo_request_read(&fsm->request);
   345         ecrt_sdo_request_read(&fsm->request);
   346         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   346         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   347         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   347         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   348         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   348         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   349         return;
   349         return;
   350     }
   350     }