391 } |
391 } |
392 |
392 |
393 if (dataType->byteSize && data.data_size != dataType->byteSize) { |
393 if (dataType->byteSize && data.data_size != dataType->byteSize) { |
394 stringstream err; |
394 stringstream err; |
395 err << "Data type mismatch. Expected " << dataType->name |
395 err << "Data type mismatch. Expected " << dataType->name |
396 << " with " << dataType->byteSize << " byte(s), but got " |
396 << " with " << dataType->byteSize << " byte, but got " |
397 << data.data_size << " byte(s)."; |
397 << data.data_size << " byte."; |
398 throw MasterException(err.str()); |
398 throw MasterException(err.str()); |
399 } |
399 } |
400 |
400 |
401 cout << setfill('0'); |
401 cout << setfill('0'); |
402 switch (dataType->coeCode) { |
402 switch (dataType->coeCode) { |
654 { |
654 { |
655 ec_ioctl_slave_t slave; |
655 ec_ioctl_slave_t slave; |
656 ec_ioctl_sdo_t sdo; |
656 ec_ioctl_sdo_t sdo; |
657 ec_ioctl_sdo_entry_t entry; |
657 ec_ioctl_sdo_entry_t entry; |
658 unsigned int i, j, k; |
658 unsigned int i, j, k; |
|
659 const CoEDataType *d; |
659 |
660 |
660 getSlave(&slave, slavePosition); |
661 getSlave(&slave, slavePosition); |
661 |
662 |
662 if (withHeader) |
663 if (withHeader) |
663 cout << "=== Slave " << slavePosition << " ===" << endl; |
664 cout << "=== Slave " << slavePosition << " ===" << endl; |
664 |
665 |
665 for (i = 0; i < slave.sdo_count; i++) { |
666 for (i = 0; i < slave.sdo_count; i++) { |
666 getSdo(&sdo, slavePosition, i); |
667 getSdo(&sdo, slavePosition, i); |
667 |
668 |
668 cout << "Sdo 0x" |
669 cout << "Sdo " |
669 << hex << setfill('0') << setw(4) << sdo.sdo_index |
670 << hex << setfill('0') << setw(4) << sdo.sdo_index |
670 << ", \"" << sdo.name << "\"" << endl; |
671 << ", \"" << sdo.name << "\"" << endl; |
671 |
672 |
672 if (quiet) |
673 if (quiet) |
673 continue; |
674 continue; |
674 |
675 |
675 for (j = 0; j <= sdo.max_subindex; j++) { |
676 for (j = 0; j <= sdo.max_subindex; j++) { |
676 getSdoEntry(&entry, slavePosition, -i, j); |
677 getSdoEntry(&entry, slavePosition, -i, j); |
677 |
678 |
678 cout << " Entry 0x" |
679 cout << " " << hex << setfill('0') << setw(2) |
679 << hex << setfill('0') << setw(2) |
|
680 << (unsigned int) entry.sdo_entry_subindex |
680 << (unsigned int) entry.sdo_entry_subindex |
681 << ", type 0x" << setw(4) << entry.data_type |
681 << ", "; |
682 << ", " << dec << entry.bit_length << " bit, \"" |
682 |
|
683 if ((d = findDataType(entry.data_type))) { |
|
684 cout << d->name; |
|
685 } else { |
|
686 cout << "type " << setw(4) << entry.data_type; |
|
687 } |
|
688 |
|
689 cout << ", " << dec << entry.bit_length << " bit, \"" |
683 << entry.description << "\"" << endl; |
690 << entry.description << "\"" << endl; |
684 } |
691 } |
685 } |
692 } |
686 } |
693 } |
687 |
694 |