master/sdo_request.c
changeset 852 ab439cbc7a81
parent 849 4b712ec8929d
child 854 f4f53be425ac
--- 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);
+}
+
+/*****************************************************************************/