Reformat source

This commit is contained in:
2024-08-08 21:10:29 +02:00
parent 15fe1a928a
commit 5df7c881b9
6 changed files with 733 additions and 649 deletions

View File

@ -20,7 +20,7 @@
sig_atomic_t stop = false;
void intHandler(int sig)
void intHandler(int sig)
{
stop = true;
}
@ -60,18 +60,24 @@ static int parseCmdArgs(int argc, char** argv, Config *config)
}
else if (std::string(argv[i]) == "--serialport" || std::string(argv[i]) == "-p")
{
if(argc > i) config->portFileName = argv[i+1];
else return -1;
if(argc > i)
config->portFileName = argv[i+1];
else
return -1;
}
else if (std::string(argv[i]) == "--port" || std::string(argv[i]) == "-P")
{
if(argc > i) config->port = atoi(argv[i+1]);
else return -1;
if(argc > i)
config->port = atoi(argv[i+1]);
else
return -1;
}
else if (std::string(argv[i]) == "--baud" || std::string(argv[i]) == "-b")
{
if(argc > i) config->baud = atoi(argv[i+1]);
else return -1;
if(argc > i)
config->baud = atoi(argv[i+1]);
else
return -1;
}
else if (std::string(argv[i]) == "--sinkless" || std::string(argv[i]) == "-s" )
{
@ -94,17 +100,18 @@ static int parseCmdArgs(int argc, char** argv, Config *config)
return 0;
}
void acceptThreadFunction( TCPServerSocket* servSock, std::vector<ClientHandler>* clients, std::mutex* clientsMutex, int pollQue )
void acceptThreadFunction( TCPServerSocket* servSock, std::vector<ClientHandler>* clients, std::mutex* clientsMutex,
int pollQue )
{
while(!stop)
{
while(!stop)
{
TCPSocket* newSock = servSock->accept();
if(newSock != nullptr)
{
clientsMutex->lock();
clients->push_back(ClientHandler(newSock)); // Wait for a client to connect
struct epoll_event ev;
ev.events = EPOLLIN;
ev.events = EPOLLIN;
ev.data.fd = newSock->getFD();
clientsMutex->unlock();
epoll_ctl(pollQue, EPOLL_CTL_ADD, newSock->getFD(), &ev);
@ -123,11 +130,12 @@ int openSerialPort(const Config& config)
{
std::cout<<"Opeing serial port: "<<config.portFileName<<" at "<<config.baud<<" baud\n";
serial = serialport_init(config.portFileName.c_str(), config.baud);
if(serial == -1)
if(serial == -1)
std::cout<<"Opeing serial port failed\n";
tcflush(serial, TCIOFLUSH);
}
else std::cout<<"Sinkless mode\n";
else
std::cout<<"Sinkless mode\n";
return serial;
}
@ -162,12 +170,12 @@ int serialPortReconnect(Config& config, std::string err)
int main(int argc, char* argv[])
{
Config config;
if(parseCmdArgs(argc, argv, &config) != 0)
return -1;
std::cout<<"UVOS serial mulitplexer "<<VERSION<<'\n';
int pollQue = epoll_create1(0);
std::mutex clientsMutex;
@ -180,23 +188,23 @@ int main(int argc, char* argv[])
{
return 1;
}
else
else
{
struct epoll_event ev = {};
ev.events = EPOLLIN;
ev.events = EPOLLIN;
ev.data.fd = -1;
epoll_ctl(pollQue, EPOLL_CTL_ADD, serial, &ev);
}
tcflush(serial, TCIOFLUSH);
}
else
else
{
std::cout<<"Sinkless mode\n";
}
std::thread* acceptThread;
TCPServerSocket* servSock;
std::cout<<"opening TCP socket on port "<<config.port<<'\n';
try
{
@ -209,13 +217,13 @@ int main(int argc, char* argv[])
std::cerr<<"Could not open port"<<std::endl;
return 1;
}
signal(SIGINT, intHandler);
signal(SIGTERM, intHandler);
signal(SIGPIPE, SIG_IGN);
signal(SIGPIPE, SIG_IGN);
std::cout<<"starting loop\n";
while(!stop)
{
struct epoll_event ev;
@ -224,7 +232,7 @@ int main(int argc, char* argv[])
if(ev.data.fd != -1)
{
std::vector<ClientHandler>::iterator client =
std::find(clients.begin(), clients.end(), ev.data.fd);
std::find(clients.begin(), clients.end(), ev.data.fd);
if(client == clients.end())
continue;
clientsMutex.lock();
@ -251,7 +259,7 @@ int main(int argc, char* argv[])
epoll_ctl(pollQue, EPOLL_CTL_ADD, serial, &ev);
}
}
if((ev.events & (EPOLLHUP | EPOLLERR)) || client->isDisconnected())
if((ev.events & (EPOLLHUP | EPOLLERR)) || client->isDisconnected())
{
client->cleanUp();
clients.erase(client);
@ -263,7 +271,7 @@ int main(int argc, char* argv[])
{
char buffer[4096];
ssize_t readlen = sRead(serial, buffer, 4096);
if(readlen < 0 && (errno != EAGAIN || errno != EWOULDBLOCK))
if(readlen < 0 && (errno != EAGAIN || errno != EWOULDBLOCK))
{
close(serial);
serial = serialPortReconnect(config, strerror(errno));
@ -291,7 +299,7 @@ int main(int argc, char* argv[])
std::cout<<"\" to clients from serial\n";
}
clientsMutex.lock();
for(ClientHandler& client : clients)
for(ClientHandler& client : clients)
{
client.write(buffer, readlen);
}
@ -299,7 +307,7 @@ int main(int argc, char* argv[])
}
}
}
acceptThread->join();
delete acceptThread;
for(ClientHandler& client : clients)