Minor changes for YModemReceive with timers and signals

This commit is contained in:
2021-08-26 11:18:04 +02:00
parent bc701ae833
commit a2670a441d
5 changed files with 53 additions and 41 deletions

View File

@@ -73,9 +73,9 @@ void TimeoutSerial::setTimeout(const boost::posix_time::time_duration& t)
timeout=t;
}
void TimeoutSerial::write(const char *data, size_t size)
size_t TimeoutSerial::write(const char *data, size_t size)
{
asio::write(port,asio::buffer(data,size));
return asio::write(port,asio::buffer(data,size));
}
void TimeoutSerial::write(const std::vector<char>& data)
@@ -88,7 +88,7 @@ void TimeoutSerial::writeString(const std::string& s)
asio::write(port,asio::buffer(s.c_str(),s.size()));
}
void TimeoutSerial::read(char *data, size_t size)
size_t TimeoutSerial::read(char *data, size_t size)
{
if(readData.size()>0)//If there is some data from a previous read
{
@@ -97,7 +97,7 @@ void TimeoutSerial::read(char *data, size_t size)
is.read(data,toRead);
data+=toRead;
size-=toRead;
if(size==0) return;//If read data was enough, just return
if(size==0) return 0;//If read data was enough, just return
}
setupParameters=ReadSetupParameters(data,size);
@@ -120,7 +120,7 @@ void TimeoutSerial::read(char *data, size_t size)
{
case resultSuccess:
timer.cancel();
return;
return this->bytesTransferred;
case resultTimeoutExpired:
port.cancel();
throw(timeout_exception("Timeout expired"));