master/cdev.c
changeset 1583 017fa8fd9ac1
parent 1582 7273aa7deb3d
child 1585 1f640e321ee4
equal deleted inserted replaced
1582:7273aa7deb3d 1583:017fa8fd9ac1
   803         ec_sdo_request_clear(&request.req);
   803         ec_sdo_request_clear(&request.req);
   804         EC_ERR("Slave %u does not exist!\n", data.slave_position);
   804         EC_ERR("Slave %u does not exist!\n", data.slave_position);
   805         return -EINVAL;
   805         return -EINVAL;
   806     }
   806     }
   807 
   807 
       
   808     if (master->debug_level)
       
   809         EC_DBG("Schedule SDO upload request for slave %u\n",request.slave->ring_position);
   808     // schedule request.
   810     // schedule request.
   809     list_add_tail(&request.list, &master->slave_sdo_requests);
   811     list_add_tail(&request.list, &master->slave_sdo_requests);
   810 
   812 
   811     up(&master->master_sem);
   813     up(&master->master_sem);
   812 
   814 
   826     }
   828     }
   827 
   829 
   828     // wait until master FSM has finished processing
   830     // wait until master FSM has finished processing
   829     wait_event(master->sdo_queue, request.req.state != EC_INT_REQUEST_BUSY);
   831     wait_event(master->sdo_queue, request.req.state != EC_INT_REQUEST_BUSY);
   830 
   832 
       
   833     if (master->debug_level)
       
   834         EC_DBG("Scheduled SDO upload request for slave %u done\n",request.slave->ring_position);
       
   835 
   831     data.abort_code = request.req.abort_code;
   836     data.abort_code = request.req.abort_code;
   832 
   837 
   833     if (request.req.state != EC_INT_REQUEST_SUCCESS) {
   838     if (request.req.state != EC_INT_REQUEST_SUCCESS) {
   834         data.data_size = 0;
   839         data.data_size = 0;
   835         retval = -EIO;
   840         retval = -EIO;
   904         EC_ERR("Slave %u does not exist!\n", data.slave_position);
   909         EC_ERR("Slave %u does not exist!\n", data.slave_position);
   905         ec_sdo_request_clear(&request.req);
   910         ec_sdo_request_clear(&request.req);
   906         return -EINVAL;
   911         return -EINVAL;
   907     }
   912     }
   908     
   913     
       
   914     if (master->debug_level)
       
   915         EC_DBG("Schedule SDO download request for slave %u\n",request.slave->ring_position);
   909     // schedule request.
   916     // schedule request.
   910     list_add_tail(&request.list, &master->slave_sdo_requests);
   917     list_add_tail(&request.list, &master->slave_sdo_requests);
   911 
   918 
   912     up(&master->master_sem);
   919     up(&master->master_sem);
   913 
   920 
   926         up(&master->master_sem);
   933         up(&master->master_sem);
   927     }
   934     }
   928 
   935 
   929     // wait until master FSM has finished processing
   936     // wait until master FSM has finished processing
   930     wait_event(master->sdo_queue, request.req.state != EC_INT_REQUEST_BUSY);
   937     wait_event(master->sdo_queue, request.req.state != EC_INT_REQUEST_BUSY);
       
   938 
       
   939     if (master->debug_level)
       
   940         EC_DBG("Scheduled SDO download request for slave %u done\n",request.slave->ring_position);
   931 
   941 
   932     data.abort_code = request.req.abort_code;
   942     data.abort_code = request.req.abort_code;
   933 
   943 
   934     retval = request.req.state == EC_INT_REQUEST_SUCCESS ? 0 : -EIO;
   944     retval = request.req.state == EC_INT_REQUEST_SUCCESS ? 0 : -EIO;
   935 
   945