diff -r 167ae3e76cc7 -r 2962baf7e6d1 tools/Master.cpp --- a/tools/Master.cpp Mon Jun 09 13:24:16 2008 +0000 +++ b/tools/Master.cpp Mon Jun 09 13:45:22 2008 +0000 @@ -606,6 +606,47 @@ /****************************************************************************/ +void Master::siiRead(int slavePosition) +{ + ec_ioctl_sii_read_t data; + ec_ioctl_slave_t slave; + unsigned int i; + + if (slavePosition < 0) { + stringstream err; + err << "'sii_read' requires a slave! Please specify --slave."; + throw MasterException(err.str()); + } + data.slave_position = slavePosition; + + open(Read); + + getSlave(&slave, slavePosition); + + if (!slave.sii_nwords) + return; + + data.offset = 0; + data.nwords = slave.sii_nwords; + data.words = new uint16_t[data.nwords]; + + if (ioctl(fd, EC_IOCTL_SII_READ, &data) < 0) { + stringstream err; + delete [] data.words; + err << "Failed to read SII: " << strerror(errno); + throw MasterException(err.str()); + } + + for (i = 0; i < data.nwords; i++) { + uint16_t *w = data.words + i; + cout << *(uint8_t *) w << *((uint8_t *) w + 1); + } + + delete [] data.words; +} + +/****************************************************************************/ + void Master::requestStates( int slavePosition, const vector &commandArgs