equal
deleted
inserted
replaced
188 */ |
188 */ |
189 void ec_fsm_pdo_entry_read_state_start( |
189 void ec_fsm_pdo_entry_read_state_start( |
190 ec_fsm_pdo_entry_t *fsm /**< PDO mapping state machine. */ |
190 ec_fsm_pdo_entry_t *fsm /**< PDO mapping state machine. */ |
191 ) |
191 ) |
192 { |
192 { |
193 ec_sdo_request_address(&fsm->request, fsm->target_pdo->index, 0); |
193 ecrt_sdo_request_index(&fsm->request, fsm->target_pdo->index, 0); |
194 ecrt_sdo_request_read(&fsm->request); |
194 ecrt_sdo_request_read(&fsm->request); |
195 |
195 |
196 fsm->state = ec_fsm_pdo_entry_read_state_count; |
196 fsm->state = ec_fsm_pdo_entry_read_state_count; |
197 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
197 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
198 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
198 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
241 void ec_fsm_pdo_entry_read_action_next( |
241 void ec_fsm_pdo_entry_read_action_next( |
242 ec_fsm_pdo_entry_t *fsm /**< finite state machine */ |
242 ec_fsm_pdo_entry_t *fsm /**< finite state machine */ |
243 ) |
243 ) |
244 { |
244 { |
245 if (fsm->entry_pos <= fsm->entry_count) { |
245 if (fsm->entry_pos <= fsm->entry_count) { |
246 ec_sdo_request_address(&fsm->request, fsm->target_pdo->index, fsm->entry_pos); |
246 ecrt_sdo_request_index(&fsm->request, fsm->target_pdo->index, |
|
247 fsm->entry_pos); |
247 ecrt_sdo_request_read(&fsm->request); |
248 ecrt_sdo_request_read(&fsm->request); |
248 fsm->state = ec_fsm_pdo_entry_read_state_entry; |
249 fsm->state = ec_fsm_pdo_entry_read_state_entry; |
249 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
250 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
250 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
251 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
251 return; |
252 return; |
334 } |
335 } |
335 |
336 |
336 // set mapped PDO entry count to zero |
337 // set mapped PDO entry count to zero |
337 EC_WRITE_U8(fsm->request.data, 0); |
338 EC_WRITE_U8(fsm->request.data, 0); |
338 fsm->request.data_size = 1; |
339 fsm->request.data_size = 1; |
339 ec_sdo_request_address(&fsm->request, fsm->source_pdo->index, 0); |
340 ecrt_sdo_request_index(&fsm->request, fsm->source_pdo->index, 0); |
340 ecrt_sdo_request_write(&fsm->request); |
341 ecrt_sdo_request_write(&fsm->request); |
341 |
342 |
342 EC_SLAVE_DBG(fsm->slave, 1, "Setting entry count to zero.\n"); |
343 EC_SLAVE_DBG(fsm->slave, 1, "Setting entry count to zero.\n"); |
343 |
344 |
344 fsm->state = ec_fsm_pdo_entry_conf_state_zero_entry_count; |
345 fsm->state = ec_fsm_pdo_entry_conf_state_zero_entry_count; |
411 |
412 |
412 value = fsm->entry->index << 16 |
413 value = fsm->entry->index << 16 |
413 | fsm->entry->subindex << 8 | fsm->entry->bit_length; |
414 | fsm->entry->subindex << 8 | fsm->entry->bit_length; |
414 EC_WRITE_U32(fsm->request.data, value); |
415 EC_WRITE_U32(fsm->request.data, value); |
415 fsm->request.data_size = 4; |
416 fsm->request.data_size = 4; |
416 ec_sdo_request_address(&fsm->request, fsm->source_pdo->index, fsm->entry_pos); |
417 ecrt_sdo_request_index(&fsm->request, fsm->source_pdo->index, |
|
418 fsm->entry_pos); |
417 ecrt_sdo_request_write(&fsm->request); |
419 ecrt_sdo_request_write(&fsm->request); |
418 |
420 |
419 fsm->state = ec_fsm_pdo_entry_conf_state_map_entry; |
421 fsm->state = ec_fsm_pdo_entry_conf_state_map_entry; |
420 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
422 ec_fsm_coe_transfer(fsm->fsm_coe, fsm->slave, &fsm->request); |
421 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
423 ec_fsm_coe_exec(fsm->fsm_coe); // execute immediately |
446 fsm, &fsm->entry->list))) { |
448 fsm, &fsm->entry->list))) { |
447 |
449 |
448 // No more entries to add. Write entry count. |
450 // No more entries to add. Write entry count. |
449 EC_WRITE_U8(fsm->request.data, fsm->entry_pos); |
451 EC_WRITE_U8(fsm->request.data, fsm->entry_pos); |
450 fsm->request.data_size = 1; |
452 fsm->request.data_size = 1; |
451 ec_sdo_request_address(&fsm->request, fsm->source_pdo->index, 0); |
453 ecrt_sdo_request_index(&fsm->request, fsm->source_pdo->index, 0); |
452 ecrt_sdo_request_write(&fsm->request); |
454 ecrt_sdo_request_write(&fsm->request); |
453 |
455 |
454 EC_SLAVE_DBG(fsm->slave, 1, "Setting number of PDO entries to %u.\n", |
456 EC_SLAVE_DBG(fsm->slave, 1, "Setting number of PDO entries to %u.\n", |
455 fsm->entry_pos); |
457 fsm->entry_pos); |
456 |
458 |