equal
deleted
inserted
replaced
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 |