322 if (master->debug_level) |
322 if (master->debug_level) |
323 EC_DBG("Writing SII data to slave %u...\n", |
323 EC_DBG("Writing SII data to slave %u...\n", |
324 request->slave->ring_position); |
324 request->slave->ring_position); |
325 fsm->sii_request = request; |
325 fsm->sii_request = request; |
326 fsm->sii_index = 0; |
326 fsm->sii_index = 0; |
327 ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->word_offset, |
327 ec_fsm_sii_write(&fsm->fsm_sii, request->slave, request->offset, |
328 request->data, EC_FSM_SII_USE_CONFIGURED_ADDRESS); |
328 request->words, EC_FSM_SII_USE_CONFIGURED_ADDRESS); |
329 fsm->state = ec_fsm_master_state_write_sii; |
329 fsm->state = ec_fsm_master_state_write_sii; |
330 fsm->state(fsm); // execute immediately |
330 fsm->state(fsm); // execute immediately |
331 return 1; |
331 return 1; |
332 } |
332 } |
333 |
333 |
789 fsm->state = ec_fsm_master_state_error; |
789 fsm->state = ec_fsm_master_state_error; |
790 return; |
790 return; |
791 } |
791 } |
792 |
792 |
793 fsm->sii_index++; |
793 fsm->sii_index++; |
794 if (fsm->sii_index < request->word_size) { |
794 if (fsm->sii_index < request->nwords) { |
795 ec_fsm_sii_write(&fsm->fsm_sii, slave, |
795 ec_fsm_sii_write(&fsm->fsm_sii, slave, |
796 request->word_offset + fsm->sii_index, |
796 request->offset + fsm->sii_index, |
797 request->data + fsm->sii_index * 2, |
797 request->words + fsm->sii_index, |
798 EC_FSM_SII_USE_CONFIGURED_ADDRESS); |
798 EC_FSM_SII_USE_CONFIGURED_ADDRESS); |
799 ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately |
799 ec_fsm_sii_exec(&fsm->fsm_sii); // execute immediately |
800 return; |
800 return; |
801 } |
801 } |
802 |
802 |
803 // finished writing SII |
803 // finished writing SII |
804 if (master->debug_level) |
804 if (master->debug_level) |
805 EC_DBG("Finished writing %u words of SII data to slave %u.\n", |
805 EC_DBG("Finished writing %u words of SII data to slave %u.\n", |
806 request->word_size, slave->ring_position); |
806 request->nwords, slave->ring_position); |
807 request->state = EC_REQUEST_SUCCESS; |
807 request->state = EC_REQUEST_SUCCESS; |
808 wake_up(&master->sii_queue); |
808 wake_up(&master->sii_queue); |
809 |
809 |
810 // TODO: Evaluate new SII contents! |
810 // TODO: Evaluate new SII contents! |
811 |
811 |