master/fsm_coe_map.c
changeset 854 f4f53be425ac
parent 852 ab439cbc7a81
child 858 69122084d066
equal deleted inserted replaced
853:726326d0aef4 854:f4f53be425ac
   179             EC_DBG("Reading Pdo mapping of sync manager %u of slave %u.\n",
   179             EC_DBG("Reading Pdo mapping of sync manager %u of slave %u.\n",
   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_read(&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         fsm->state = ec_fsm_coe_map_state_pdo_count;
   186         fsm->state = ec_fsm_coe_map_state_pdo_count;
   186         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   187         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   187         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   188         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   188         return;
   189         return;
   189     }
   190     }
   233 void ec_fsm_coe_map_action_next_pdo(
   234 void ec_fsm_coe_map_action_next_pdo(
   234         ec_fsm_coe_map_t *fsm /**< finite state machine */
   235         ec_fsm_coe_map_t *fsm /**< finite state machine */
   235         )
   236         )
   236 {
   237 {
   237     if (fsm->sync_subindex <= fsm->sync_subindices) {
   238     if (fsm->sync_subindex <= fsm->sync_subindices) {
   238         ec_sdo_request_read(&fsm->request, fsm->sync_sdo_index,
   239         ec_sdo_request_address(&fsm->request, fsm->sync_sdo_index,
   239                 fsm->sync_subindex);
   240                 fsm->sync_subindex);
       
   241         ec_sdo_request_read(&fsm->request);
   240         fsm->state = ec_fsm_coe_map_state_pdo;
   242         fsm->state = ec_fsm_coe_map_state_pdo;
   241         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   243         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   242         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   244         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   243         return;
   245         return;
   244     }
   246     }
   290     if (fsm->slave->master->debug_level)
   292     if (fsm->slave->master->debug_level)
   291         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   293         EC_DBG("  Pdo 0x%04X.\n", fsm->pdo->index);
   292 
   294 
   293     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   295     list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos);
   294 
   296 
   295     ec_sdo_request_read(&fsm->request, fsm->pdo->index, 0);
   297     ec_sdo_request_address(&fsm->request, fsm->pdo->index, 0);
       
   298     ec_sdo_request_read(&fsm->request);
   296     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   299     fsm->state = ec_fsm_coe_map_state_pdo_entry_count;
   297     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   300     ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   298     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   301     ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   299 }
   302 }
   300 
   303 
   336 void ec_fsm_coe_map_action_next_pdo_entry(
   339 void ec_fsm_coe_map_action_next_pdo_entry(
   337         ec_fsm_coe_map_t *fsm /**< finite state machine */
   340         ec_fsm_coe_map_t *fsm /**< finite state machine */
   338         )
   341         )
   339 {
   342 {
   340     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   343     if (fsm->pdo_subindex <= fsm->pdo_subindices) {
   341         ec_sdo_request_read(&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);
   342         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   346         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   343         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   347         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   344         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   348         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   345         return;
   349         return;
   346     }
   350     }