diff -r ef09f0ea0c4c -r 1875b9fea0ba tool/MasterDevice.cpp --- a/tool/MasterDevice.cpp Fri Feb 26 18:22:02 2010 +0100 +++ b/tool/MasterDevice.cpp Mon Mar 01 18:33:42 2010 +0100 @@ -526,4 +526,19 @@ #endif +/****************************************************************************/ + +void MasterDevice::readSoe(ec_ioctl_slave_soe_t *data) +{ + if (ioctl(fd, EC_IOCTL_SLAVE_SOE_READ, data) < 0) { + if (errno == EIO && data->error_code) { + throw MasterDeviceSoeException(data->error_code); + } else { + stringstream err; + err << "Failed to read IDN: " << strerror(errno); + throw MasterDeviceException(err); + } + } +} + /*****************************************************************************/