diff -r 2bb18adcd204 -r ab439cbc7a81 master/sdo_request.c --- a/master/sdo_request.c Mon Mar 03 11:42:05 2008 +0000 +++ b/master/sdo_request.c Mon Mar 03 13:26:32 2008 +0000 @@ -44,19 +44,19 @@ /*****************************************************************************/ +void ec_sdo_request_clear_data(ec_sdo_request_t *); + +/*****************************************************************************/ + /** Sdo request constructor. */ void ec_sdo_request_init( - ec_sdo_request_t *req, /**< Sdo request. */ - uint16_t index, /**< Sdo index. */ - uint8_t subindex /**< Sdo subindex. */ + ec_sdo_request_t *req /**< Sdo request. */ ) { - req->index = index; - req->subindex = subindex; req->data = NULL; req->size = 0; - req->state = EC_REQUEST_QUEUED; + req->state = EC_REQUEST_COMPLETE; } /*****************************************************************************/ @@ -67,8 +67,40 @@ ec_sdo_request_t *req /**< Sdo request. */ ) { - if (req->data) - kfree(req->data); + ec_sdo_request_clear_data(req); } /*****************************************************************************/ + +/** Sdo request destructor. + */ +void ec_sdo_request_clear_data( + ec_sdo_request_t *req /**< Sdo request. */ + ) +{ + if (req->data) { + kfree(req->data); + req->data = NULL; + } + + req->size = 0; +} + +/*****************************************************************************/ + +/** Start an Sdo read operation (download). + */ +void ec_sdo_request_read( + ec_sdo_request_t *req, /**< Sdo request. */ + uint16_t index, /**< Sdo index. */ + uint8_t subindex /**< Sdo subindex. */ + ) +{ + req->index = index; + req->subindex = subindex; + req->state = EC_REQUEST_QUEUED; + + ec_sdo_request_clear_data(req); +} + +/*****************************************************************************/