equal
deleted
inserted
replaced
67 void MasterDevice::open(Permissions perm) |
67 void MasterDevice::open(Permissions perm) |
68 { |
68 { |
69 stringstream deviceName; |
69 stringstream deviceName; |
70 |
70 |
71 if (fd == -1) { // not already open |
71 if (fd == -1) { // not already open |
72 deviceName << "/dev/EtherCAT" << index; |
72 deviceName << "/dev/EtherCAT" << index; |
73 |
73 |
74 if ((fd = ::open(deviceName.str().c_str(), |
74 if ((fd = ::open(deviceName.str().c_str(), |
75 perm == ReadWrite ? O_RDWR : O_RDONLY)) == -1) { |
75 perm == ReadWrite ? O_RDWR : O_RDONLY)) == -1) { |
76 stringstream err; |
76 stringstream err; |
77 err << "Failed to open master device " << deviceName.str() << ": " |
77 err << "Failed to open master device " << deviceName.str() << ": " |
78 << strerror(errno); |
78 << strerror(errno); |
79 throw MasterDeviceException(err); |
79 throw MasterDeviceException(err); |
80 } |
80 } |
81 } |
81 } |
82 } |
82 } |
83 |
83 |
84 /****************************************************************************/ |
84 /****************************************************************************/ |
85 |
85 |
86 void MasterDevice::close() |
86 void MasterDevice::close() |
87 { |
87 { |
88 if (fd != -1) { |
88 if (fd != -1) { |
89 ::close(fd); |
89 ::close(fd); |
90 fd = -1; |
90 fd = -1; |
91 } |
91 } |
92 } |
92 } |
93 |
93 |
94 /****************************************************************************/ |
94 /****************************************************************************/ |
95 |
95 |
96 void MasterDevice::getMaster(ec_ioctl_master_t *data) |
96 void MasterDevice::getMaster(ec_ioctl_master_t *data) |
425 { |
425 { |
426 if (ioctl(fd, EC_IOCTL_MASTER_DEBUG, debugLevel) < 0) { |
426 if (ioctl(fd, EC_IOCTL_MASTER_DEBUG, debugLevel) < 0) { |
427 stringstream err; |
427 stringstream err; |
428 err << "Failed to set debug level: " << strerror(errno); |
428 err << "Failed to set debug level: " << strerror(errno); |
429 throw MasterDeviceException(err); |
429 throw MasterDeviceException(err); |
430 } |
430 } |
431 } |
431 } |
432 |
432 |
433 /****************************************************************************/ |
433 /****************************************************************************/ |
434 |
434 |
435 void MasterDevice::sdoDownload(ec_ioctl_slave_sdo_download_t *data) |
435 void MasterDevice::sdoDownload(ec_ioctl_slave_sdo_download_t *data) |
440 throw MasterDeviceSdoAbortException(data->abort_code); |
440 throw MasterDeviceSdoAbortException(data->abort_code); |
441 } else { |
441 } else { |
442 err << "Failed to download SDO: " << strerror(errno); |
442 err << "Failed to download SDO: " << strerror(errno); |
443 throw MasterDeviceException(err); |
443 throw MasterDeviceException(err); |
444 } |
444 } |
445 } |
445 } |
446 } |
446 } |
447 |
447 |
448 /****************************************************************************/ |
448 /****************************************************************************/ |
449 |
449 |
450 void MasterDevice::sdoUpload(ec_ioctl_slave_sdo_upload_t *data) |
450 void MasterDevice::sdoUpload(ec_ioctl_slave_sdo_upload_t *data) |