diff -r 52036efdf1e3 -r 32136215c1fa tool/MasterDevice.cpp --- a/tool/MasterDevice.cpp Fri Mar 05 13:44:57 2010 +0100 +++ b/tool/MasterDevice.cpp Fri Mar 05 15:32:56 2010 +0100 @@ -528,7 +528,7 @@ /****************************************************************************/ -void MasterDevice::readSoe(ec_ioctl_slave_soe_t *data) +void MasterDevice::readSoe(ec_ioctl_slave_soe_read_t *data) { if (ioctl(fd, EC_IOCTL_SLAVE_SOE_READ, data) < 0) { if (errno == EIO && data->error_code) { @@ -541,4 +541,19 @@ } } +/****************************************************************************/ + +void MasterDevice::writeSoe(ec_ioctl_slave_soe_write_t *data) +{ + if (ioctl(fd, EC_IOCTL_SLAVE_SOE_WRITE, data) < 0) { + if (errno == EIO && data->error_code) { + throw MasterDeviceSoeException(data->error_code); + } else { + stringstream err; + err << "Failed to write IDN: " << strerror(errno); + throw MasterDeviceException(err); + } + } +} + /*****************************************************************************/