diff -r a1a6d7719f97 -r 7d9fb723fc4b master/master.c --- 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);