Correctly reregister serial port on failure-reconnect cycle
This commit is contained in:
parent
56d5798cb1
commit
15fe1a928a
@ -14,7 +14,6 @@ private:
|
||||
CommunicatingSocket *_socket;
|
||||
bool _disconnected = false;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
void cleanUp();
|
||||
|
26
main.cpp
26
main.cpp
@ -177,7 +177,9 @@ int main(int argc, char* argv[])
|
||||
if(!config.noSerial)
|
||||
{
|
||||
if(serial == -1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
struct epoll_event ev = {};
|
||||
@ -236,7 +238,17 @@ int main(int argc, char* argv[])
|
||||
catch(serialIoException& ex)
|
||||
{
|
||||
close(serial);
|
||||
serialPortReconnect(config, ex.what());
|
||||
serial = serialPortReconnect(config, ex.what());
|
||||
if(serial < 0)
|
||||
{
|
||||
std::cerr<<"Serial port connection has failed with: "<<strerror(errno)<<'\n';
|
||||
return 2;
|
||||
}
|
||||
|
||||
struct epoll_event ev = {};
|
||||
ev.events = EPOLLIN;
|
||||
ev.data.fd = -1;
|
||||
epoll_ctl(pollQue, EPOLL_CTL_ADD, serial, &ev);
|
||||
}
|
||||
}
|
||||
if((ev.events & (EPOLLHUP | EPOLLERR)) || client->isDisconnected())
|
||||
@ -254,7 +266,17 @@ int main(int argc, char* argv[])
|
||||
if(readlen < 0 && (errno != EAGAIN || errno != EWOULDBLOCK))
|
||||
{
|
||||
close(serial);
|
||||
serialPortReconnect(config, strerror(errno));
|
||||
serial = serialPortReconnect(config, strerror(errno));
|
||||
if(serial < 0)
|
||||
{
|
||||
std::cerr<<"Serial port connection has failed with: "<<strerror(errno)<<'\n';
|
||||
return 2;
|
||||
}
|
||||
|
||||
struct epoll_event ev = {};
|
||||
ev.events = EPOLLIN;
|
||||
ev.data.fd = -1;
|
||||
epoll_ctl(pollQue, EPOLL_CTL_ADD, serial, &ev);
|
||||
}
|
||||
if(config.verbose)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user