master/voe_handler.c
changeset 1348 8db0f72ace11
parent 1327 4d179b06dd3c
child 1363 11c0b2caa253
equal deleted inserted replaced
1347:41360ffdcb14 1348:8db0f72ace11
   157 
   157 
   158 void ecrt_voe_handler_read(ec_voe_handler_t *voe)
   158 void ecrt_voe_handler_read(ec_voe_handler_t *voe)
   159 {
   159 {
   160     voe->dir = EC_DIR_INPUT;
   160     voe->dir = EC_DIR_INPUT;
   161     voe->state = ec_voe_handler_state_read_start;
   161     voe->state = ec_voe_handler_state_read_start;
   162     voe->request_state = EC_INT_REQUEST_QUEUED;
   162     voe->request_state = EC_INT_REQUEST_BUSY;
   163 }
   163 }
   164 
   164 
   165 /*****************************************************************************/
   165 /*****************************************************************************/
   166 
   166 
   167 void ecrt_voe_handler_read_nosync(ec_voe_handler_t *voe)
   167 void ecrt_voe_handler_read_nosync(ec_voe_handler_t *voe)
   168 {
   168 {
   169     voe->dir = EC_DIR_INPUT;
   169     voe->dir = EC_DIR_INPUT;
   170     voe->state = ec_voe_handler_state_read_nosync_start;
   170     voe->state = ec_voe_handler_state_read_nosync_start;
   171     voe->request_state = EC_INT_REQUEST_QUEUED;
   171     voe->request_state = EC_INT_REQUEST_BUSY;
   172 }
   172 }
   173 
   173 
   174 /*****************************************************************************/
   174 /*****************************************************************************/
   175 
   175 
   176 void ecrt_voe_handler_write(ec_voe_handler_t *voe, size_t size)
   176 void ecrt_voe_handler_write(ec_voe_handler_t *voe, size_t size)
   177 {
   177 {
   178     voe->dir = EC_DIR_OUTPUT;
   178     voe->dir = EC_DIR_OUTPUT;
   179     voe->data_size = size;
   179     voe->data_size = size;
   180     voe->state = ec_voe_handler_state_write_start;
   180     voe->state = ec_voe_handler_state_write_start;
   181     voe->request_state = EC_INT_REQUEST_QUEUED;
   181     voe->request_state = EC_INT_REQUEST_BUSY;
   182 }
   182 }
   183 
   183 
   184 /*****************************************************************************/
   184 /*****************************************************************************/
   185 
   185 
   186 ec_request_state_t ecrt_voe_handler_execute(ec_voe_handler_t *voe)
   186 ec_request_state_t ecrt_voe_handler_execute(ec_voe_handler_t *voe)
   187 {
   187 {
   188     if (voe->config->slave) {
   188     if (voe->config->slave) { // FIXME locking?
   189         voe->state(voe);
   189         voe->state(voe);
   190         if (voe->request_state == EC_REQUEST_BUSY)
   190         if (voe->request_state == EC_INT_REQUEST_BUSY)
   191             ec_master_queue_datagram(voe->config->master, &voe->datagram);
   191             ec_master_queue_datagram(voe->config->master, &voe->datagram);
   192     } else {
   192     } else {
   193         voe->state = ec_voe_handler_state_error;
   193         voe->state = ec_voe_handler_state_error;
   194         voe->request_state = EC_INT_REQUEST_FAILURE;
   194         voe->request_state = EC_INT_REQUEST_FAILURE;
   195     }
   195     }