equal
deleted
inserted
replaced
68 void ec_fsm_coe_map_init( |
68 void ec_fsm_coe_map_init( |
69 ec_fsm_coe_map_t *fsm, /**< finite state machine */ |
69 ec_fsm_coe_map_t *fsm, /**< finite state machine */ |
70 ec_fsm_coe_t *fsm_coe /**< CoE state machine to use */ |
70 ec_fsm_coe_t *fsm_coe /**< CoE state machine to use */ |
71 ) |
71 ) |
72 { |
72 { |
|
73 fsm->fsm_coe = fsm_coe; |
73 fsm->state = NULL; |
74 fsm->state = NULL; |
74 fsm->fsm_coe = fsm_coe; |
75 ec_sdo_request_init(&fsm->request); |
75 ec_pdo_mapping_init(&fsm->mapping); |
76 ec_pdo_mapping_init(&fsm->mapping); |
76 } |
77 } |
77 |
78 |
78 /*****************************************************************************/ |
79 /*****************************************************************************/ |
79 |
80 |
81 Destructor. |
82 Destructor. |
82 */ |
83 */ |
83 |
84 |
84 void ec_fsm_coe_map_clear(ec_fsm_coe_map_t *fsm /**< finite state machine */) |
85 void ec_fsm_coe_map_clear(ec_fsm_coe_map_t *fsm /**< finite state machine */) |
85 { |
86 { |
|
87 ec_sdo_request_clear(&fsm->request); |
86 ec_pdo_mapping_clear(&fsm->mapping); |
88 ec_pdo_mapping_clear(&fsm->mapping); |
87 } |
89 } |
88 |
90 |
89 /*****************************************************************************/ |
91 /*****************************************************************************/ |
90 |
92 |
177 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", |
178 fsm->sync->index, slave->ring_position); |
180 fsm->sync->index, slave->ring_position); |
179 |
181 |
180 ec_pdo_mapping_clear_pdos(&fsm->mapping); |
182 ec_pdo_mapping_clear_pdos(&fsm->mapping); |
181 |
183 |
182 ec_sdo_request_init(&fsm->request, fsm->sync_sdo_index, 0); |
184 ec_sdo_request_read(&fsm->request, fsm->sync_sdo_index, 0); |
183 fsm->state = ec_fsm_coe_map_state_pdo_count; |
185 fsm->state = ec_fsm_coe_map_state_pdo_count; |
184 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
186 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
185 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
187 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
186 return; |
188 return; |
187 } |
189 } |
231 void ec_fsm_coe_map_action_next_pdo( |
233 void ec_fsm_coe_map_action_next_pdo( |
232 ec_fsm_coe_map_t *fsm /**< finite state machine */ |
234 ec_fsm_coe_map_t *fsm /**< finite state machine */ |
233 ) |
235 ) |
234 { |
236 { |
235 if (fsm->sync_subindex <= fsm->sync_subindices) { |
237 if (fsm->sync_subindex <= fsm->sync_subindices) { |
236 ec_sdo_request_init(&fsm->request, fsm->sync_sdo_index, |
238 ec_sdo_request_read(&fsm->request, fsm->sync_sdo_index, |
237 fsm->sync_subindex); |
239 fsm->sync_subindex); |
238 fsm->state = ec_fsm_coe_map_state_pdo; |
240 fsm->state = ec_fsm_coe_map_state_pdo; |
239 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
241 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
240 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
242 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
241 return; |
243 return; |
288 if (fsm->slave->master->debug_level) |
290 if (fsm->slave->master->debug_level) |
289 EC_DBG(" Pdo 0x%04X.\n", fsm->pdo->index); |
291 EC_DBG(" Pdo 0x%04X.\n", fsm->pdo->index); |
290 |
292 |
291 list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos); |
293 list_add_tail(&fsm->pdo->list, &fsm->mapping.pdos); |
292 |
294 |
293 ec_sdo_request_init(&fsm->request, fsm->pdo->index, 0); |
295 ec_sdo_request_read(&fsm->request, fsm->pdo->index, 0); |
294 fsm->state = ec_fsm_coe_map_state_pdo_entry_count; |
296 fsm->state = ec_fsm_coe_map_state_pdo_entry_count; |
295 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
297 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
296 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
298 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
297 } |
299 } |
298 |
300 |
334 void ec_fsm_coe_map_action_next_pdo_entry( |
336 void ec_fsm_coe_map_action_next_pdo_entry( |
335 ec_fsm_coe_map_t *fsm /**< finite state machine */ |
337 ec_fsm_coe_map_t *fsm /**< finite state machine */ |
336 ) |
338 ) |
337 { |
339 { |
338 if (fsm->pdo_subindex <= fsm->pdo_subindices) { |
340 if (fsm->pdo_subindex <= fsm->pdo_subindices) { |
339 ec_sdo_request_init(&fsm->request, fsm->pdo->index, fsm->pdo_subindex); |
341 ec_sdo_request_read(&fsm->request, fsm->pdo->index, fsm->pdo_subindex); |
340 fsm->state = ec_fsm_coe_map_state_pdo_entry; |
342 fsm->state = ec_fsm_coe_map_state_pdo_entry; |
341 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
343 ec_fsm_coe_upload(fsm->fsm_coe, fsm->slave, &fsm->request); |
342 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
344 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
343 return; |
345 return; |
344 } |
346 } |