master/fsm_master.c
changeset 979 405cc2d033e0
parent 969 e259df107c92
child 986 a486591ba86b
equal deleted inserted replaced
978:2962baf7e6d1 979:405cc2d033e0
   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