master/fsm_pdo_entry.c
branchstable-1.5
changeset 2434 fa52128477f6
parent 2421 bc2d4bf9cbe5
child 2498 9cdd7669dc0b
equal deleted inserted replaced
2433:3bdd7a747fae 2434:fa52128477f6
   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