master/master.c
changeset 1952 7d9fb723fc4b
parent 1947 024a3c6aa3f7
child 1995 7d748d9cf9e8
child 2009 b5391b329b5d
--- a/master/master.c	Tue Jul 13 13:52:59 2010 +0200
+++ b/master/master.c	Tue Jul 20 10:52:31 2010 +0200
@@ -2345,13 +2345,20 @@
 /*****************************************************************************/
 
 int ecrt_master_write_idn(ec_master_t *master, uint16_t slave_position,
-        uint16_t idn, uint8_t *data, size_t data_size, uint16_t *error_code)
+        uint8_t drive_no, uint16_t idn, uint8_t *data, size_t data_size,
+        uint16_t *error_code)
 {
     ec_master_soe_request_t request;
     int retval;
 
+    if (drive_no > 7) {
+        EC_MASTER_ERR(master, "Invalid drive number!\n");
+        return -EINVAL;
+    }
+
     INIT_LIST_HEAD(&request.list);
     ec_soe_request_init(&request.req);
+    ec_soe_request_set_drive_no(&request.req, drive_no);
     ec_soe_request_set_idn(&request.req, idn);
 
     if (ec_soe_request_alloc(&request.req, data_size)) {
@@ -2413,13 +2420,19 @@
 /*****************************************************************************/
 
 int ecrt_master_read_idn(ec_master_t *master, uint16_t slave_position,
-        uint16_t idn, uint8_t *target, size_t target_size,
+        uint8_t drive_no, uint16_t idn, uint8_t *target, size_t target_size,
         size_t *result_size, uint16_t *error_code)
 {
     ec_master_soe_request_t request;
 
+    if (drive_no > 7) {
+        EC_MASTER_ERR(master, "Invalid drive number!\n");
+        return -EINVAL;
+    }
+
     INIT_LIST_HEAD(&request.list);
     ec_soe_request_init(&request.req);
+    ec_soe_request_set_drive_no(&request.req, drive_no);
     ec_soe_request_set_idn(&request.req, idn);
     ec_soe_request_read(&request.req);