git-svn-id: svn://db.shs.com.ru/pip@585 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2017-12-22 10:41:52 +00:00
parent 8fc0da9fc4
commit 50be539140
2 changed files with 30 additions and 1 deletions

View File

@@ -24,6 +24,8 @@ PISPI::PISPI(const PIString & path, uint speed, PIIODevice::DeviceMode mode) : P
setSpeed(speed);
setBits(8);
spi_mode = 0;
if (mode == ReadOnly)
piCoutObj << "error, SPI can't work in ReadOnly mode";
#ifndef WINDOWS
PRIVATE->fd = 0;
#endif
@@ -111,10 +113,32 @@ int PISPI::writeDevice(const void * data, int max_size) {
//piCoutObj << "write" << max_size << tx_buf.size();
ret = ioctl(PRIVATE->fd, SPI_IOC_MESSAGE(1), &PRIVATE->spi_ioc_tr);
if (ret < 1) {piCoutObj << "can't send spi message" << ret; return -1;}
recv_buf.append(rx_buf);
if (canRead()) recv_buf.append(rx_buf);
if (recv_buf.size_s() > threadedReadBufferSize()) recv_buf.resize(threadedReadBufferSize());
return max_size;
}
#endif
return 0;
}
PIString PISPI::constructFullPathDevice() const {
PIString ret;
ret << path() << ":" << int(speed()) << ":" << int(bits()) << ":" << (int)parameters();
return ret;
}
void PISPI::configureFromFullPathDevice(const PIString & full_path) {
PIStringList pl = full_path.split(":");
for (int i = 0; i < pl.size_s(); ++i) {
PIString p(pl[i]);
switch (i) {
case 0: setPath(p); break;
case 1: setSpeed(p.toInt()); break;
case 2: setBits(p.toInt()); break;
case 3: setParameters(p.toInt()); break;
default: break;
}
}
}