equal
deleted
inserted
replaced
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; |