tools/Master.cpp
changeset 978 2962baf7e6d1
parent 976 677e63a8ed6e
child 980 c07dd38243ba
equal deleted inserted replaced
977:167ae3e76cc7 978:2962baf7e6d1
   604     delete [] data.target;
   604     delete [] data.target;
   605 }
   605 }
   606 
   606 
   607 /****************************************************************************/
   607 /****************************************************************************/
   608 
   608 
       
   609 void Master::siiRead(int slavePosition)
       
   610 {
       
   611     ec_ioctl_sii_read_t data;
       
   612     ec_ioctl_slave_t slave;
       
   613     unsigned int i;
       
   614 
       
   615     if (slavePosition < 0) {
       
   616         stringstream err;
       
   617         err << "'sii_read' requires a slave! Please specify --slave.";
       
   618         throw MasterException(err.str());
       
   619     }
       
   620     data.slave_position = slavePosition;
       
   621 
       
   622     open(Read);
       
   623 
       
   624     getSlave(&slave, slavePosition);
       
   625 
       
   626     if (!slave.sii_nwords)
       
   627         return;
       
   628 
       
   629     data.offset = 0;
       
   630     data.nwords = slave.sii_nwords;
       
   631     data.words = new uint16_t[data.nwords];
       
   632 
       
   633     if (ioctl(fd, EC_IOCTL_SII_READ, &data) < 0) {
       
   634         stringstream err;
       
   635         delete [] data.words;
       
   636         err << "Failed to read SII: " << strerror(errno);
       
   637         throw MasterException(err.str());
       
   638     }
       
   639 
       
   640     for (i = 0; i < data.nwords; i++) {
       
   641         uint16_t *w = data.words + i;
       
   642         cout << *(uint8_t *) w << *((uint8_t *) w + 1);
       
   643     }
       
   644 
       
   645     delete [] data.words;
       
   646 }
       
   647 
       
   648 /****************************************************************************/
       
   649 
   609 void Master::requestStates(
   650 void Master::requestStates(
   610         int slavePosition,
   651         int slavePosition,
   611         const vector<string> &commandArgs
   652         const vector<string> &commandArgs
   612         )
   653         )
   613 {
   654 {