master/fsm_coe_map.c
changeset 847 92266462d411
parent 831 ded9519c8d6e
child 849 4b712ec8929d
equal deleted inserted replaced
846:19248bbf9308 847:92266462d411
    39 /*****************************************************************************/
    39 /*****************************************************************************/
    40 
    40 
    41 #include "globals.h"
    41 #include "globals.h"
    42 #include "master.h"
    42 #include "master.h"
    43 #include "mailbox.h"
    43 #include "mailbox.h"
    44 #include "canopen.h"
    44 #include "sdo_request.h"
    45 #include "fsm_coe_map.h"
    45 #include "fsm_coe_map.h"
    46 
    46 
    47 /*****************************************************************************/
    47 /*****************************************************************************/
    48 
    48 
    49 void ec_fsm_coe_map_state_start(ec_fsm_coe_map_t *);
    49 void ec_fsm_coe_map_state_start(ec_fsm_coe_map_t *);
   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_read(&fsm->request, slave, fsm->sync_sdo_index, 0);
   182         ec_sdo_request_init(&fsm->request, slave, 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_read(&fsm->request, fsm->slave,
   236         ec_sdo_request_init(&fsm->request, fsm->slave,
   237                 fsm->sync_sdo_index, fsm->sync_subindex);
   237                 fsm->sync_sdo_index, 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;
   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_read(&fsm->request, fsm->slave, fsm->pdo->index, 0);
   293     ec_sdo_request_init(&fsm->request, fsm->slave, 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_read(&fsm->request, fsm->slave,
   339         ec_sdo_request_init(&fsm->request, fsm->slave,
   340                 fsm->pdo->index, fsm->pdo_subindex);
   340                 fsm->pdo->index, fsm->pdo_subindex);
   341         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   341         fsm->state = ec_fsm_coe_map_state_pdo_entry;
   342         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   342         ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request);
   343         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   343         ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately
   344         return;
   344         return;