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 { |