tool/MasterDevice.cpp
changeset 1804 742607c464c4
parent 1516 e3b09f847512
child 1826 ec6223c3b7ec
equal deleted inserted replaced
1803:5b04770444df 1804:742607c464c4
    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)