master/fsm_master.c
changeset 1980 a89e2bedf004
parent 1909 ea3eb4c74c1b
child 1921 d9cf40facbc4
equal deleted inserted replaced
1979:2c22f3bea8ba 1980:a89e2bedf004
   424             if (req->state == EC_INT_REQUEST_QUEUED) {
   424             if (req->state == EC_INT_REQUEST_QUEUED) {
   425 
   425 
   426                 if (ec_sdo_request_timed_out(req)) {
   426                 if (ec_sdo_request_timed_out(req)) {
   427                     req->state = EC_INT_REQUEST_FAILURE;
   427                     req->state = EC_INT_REQUEST_FAILURE;
   428                     if (master->debug_level)
   428                     if (master->debug_level)
   429 						EC_DBG("Internal SDO request for slave %u"
   429                         EC_DBG("Internal SDO request for slave %u"
   430 								" timed out...\n", slave->ring_position);
   430                                 " timed out...\n", slave->ring_position);
   431                     continue;
   431                     continue;
   432                 }
   432                 }
   433 
   433 
   434                 if (slave->current_state == EC_SLAVE_STATE_INIT) {
   434                 if (slave->current_state == EC_SLAVE_STATE_INIT) {
   435                     req->state = EC_INT_REQUEST_FAILURE;
   435                     req->state = EC_INT_REQUEST_FAILURE;
   875 
   875 
   876     if (request->offset <= 4 && request->offset + request->nwords > 4) {
   876     if (request->offset <= 4 && request->offset + request->nwords > 4) {
   877         // alias was written
   877         // alias was written
   878         slave->sii.alias = EC_READ_U16(request->words + 4);
   878         slave->sii.alias = EC_READ_U16(request->words + 4);
   879         // TODO: read alias from register 0x0012
   879         // TODO: read alias from register 0x0012
       
   880         slave->effective_alias = slave->sii.alias;
   880     }
   881     }
   881     // TODO: Evaluate other SII contents!
   882     // TODO: Evaluate other SII contents!
   882 
   883 
   883     request->state = EC_INT_REQUEST_SUCCESS;
   884     request->state = EC_INT_REQUEST_SUCCESS;
   884     wake_up(&master->sii_queue);
   885     wake_up(&master->sii_queue);
   996             }
   997             }
   997             memcpy(request->data, datagram->data, request->length);
   998             memcpy(request->data, datagram->data, request->length);
   998         }
   999         }
   999 
  1000 
  1000         request->state = EC_INT_REQUEST_SUCCESS;
  1001         request->state = EC_INT_REQUEST_SUCCESS;
       
  1002         if (master->debug_level) {
       
  1003             EC_DBG("Register request successful.\n");
       
  1004         }
  1001     } else {
  1005     } else {
  1002         request->state = EC_INT_REQUEST_FAILURE;
  1006         request->state = EC_INT_REQUEST_FAILURE;
       
  1007         EC_ERR("Register request failed.\n");
  1003     }
  1008     }
  1004 
  1009 
  1005     wake_up(&master->reg_queue);
  1010     wake_up(&master->reg_queue);
  1006 
  1011 
  1007     // check for another register request
  1012     // check for another register request