master/fsm_slave.c
branchstable-1.5
changeset 2177 dff1cf71a8c7
parent 2099 e485694c6427
child 2419 fdb85a806585
equal deleted inserted replaced
2170:e69a5010914f 2177:dff1cf71a8c7
   201         // Start SDO transfer
   201         // Start SDO transfer
   202         fsm->sdo_request = &request->req;
   202         fsm->sdo_request = &request->req;
   203         fsm->state = ec_fsm_slave_state_sdo_request;
   203         fsm->state = ec_fsm_slave_state_sdo_request;
   204         ec_fsm_coe_transfer(&fsm->fsm_coe, slave, &request->req);
   204         ec_fsm_coe_transfer(&fsm->fsm_coe, slave, &request->req);
   205         ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
   205         ec_fsm_coe_exec(&fsm->fsm_coe); // execute immediately
   206         ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram);
   206         ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram);
   207         return 1;
   207         return 1;
   208     }
   208     }
   209     return 0;
   209     return 0;
   210 }
   210 }
   211 
   211 
   218         )
   218         )
   219 {
   219 {
   220     ec_slave_t *slave = fsm->slave;
   220     ec_slave_t *slave = fsm->slave;
   221     ec_sdo_request_t *request = fsm->sdo_request;
   221     ec_sdo_request_t *request = fsm->sdo_request;
   222 
   222 
   223     if (ec_fsm_coe_exec(&fsm->fsm_coe))
   223     if (ec_fsm_coe_exec(&fsm->fsm_coe)) {
   224     {
   224         ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram);
   225         ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram);
       
   226         return;
   225         return;
   227     }
   226     }
   228     if (!ec_fsm_coe_success(&fsm->fsm_coe)) {
   227     if (!ec_fsm_coe_success(&fsm->fsm_coe)) {
   229         EC_SLAVE_ERR(slave, "Failed to process SDO request.\n");
   228         EC_SLAVE_ERR(slave, "Failed to process SDO request.\n");
   230         request->state = EC_INT_REQUEST_FAILURE;
   229         request->state = EC_INT_REQUEST_FAILURE;
   275 
   274 
   276         fsm->foe_request = &request->req;
   275         fsm->foe_request = &request->req;
   277         fsm->state = ec_fsm_slave_state_foe_request;
   276         fsm->state = ec_fsm_slave_state_foe_request;
   278         ec_fsm_foe_transfer(&fsm->fsm_foe, slave, &request->req);
   277         ec_fsm_foe_transfer(&fsm->fsm_foe, slave, &request->req);
   279         ec_fsm_foe_exec(&fsm->fsm_foe);
   278         ec_fsm_foe_exec(&fsm->fsm_foe);
   280         ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram);
   279         ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram);
   281         return 1;
   280         return 1;
   282     }
   281     }
   283     return 0;
   282     return 0;
   284 }
   283 }
   285 
   284 
   292         )
   291         )
   293 {
   292 {
   294     ec_slave_t *slave = fsm->slave;
   293     ec_slave_t *slave = fsm->slave;
   295     ec_foe_request_t *request = fsm->foe_request;
   294     ec_foe_request_t *request = fsm->foe_request;
   296 
   295 
   297     if (ec_fsm_foe_exec(&fsm->fsm_foe))
   296     if (ec_fsm_foe_exec(&fsm->fsm_foe)) {
   298     {
   297         ec_master_queue_external_datagram(fsm->slave->master, fsm->datagram);
   299         ec_master_queue_external_datagram(fsm->slave->master,fsm->datagram);
       
   300         return;
   298         return;
   301     }
   299     }
   302 
   300 
   303     if (!ec_fsm_foe_success(&fsm->fsm_foe)) {
   301     if (!ec_fsm_foe_success(&fsm->fsm_foe)) {
   304         EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n");
   302         EC_SLAVE_ERR(slave, "Failed to handle FoE request.\n");