From 64f7bbac1b180f3e2667584f62ae7e48ad753849 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Wed, 7 Dec 2016 22:45:18 +0900 Subject: [PATCH] BugFix: 100% CPU --- MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp | 7 ++++++- MQTTSNGateway/src/MQTTSNGateway.h | 2 +- MQTTSNGateway/src/linux/Network.cpp | 3 ++- MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp index 39b8eb4..f9d0ddf 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp @@ -16,6 +16,7 @@ #include "MQTTSNGWBrokerRecvTask.h" #include "MQTTSNGWClient.h" +#include using namespace std; using namespace MQTTSNGW; @@ -90,7 +91,11 @@ void BrokerRecvTask::run(void) client = client->getNextClient(); } - if (maxSock > 0) + if (maxSock == 0) + { + usleep(500 * 1000); + } + else { /* Check sockets is ready to read */ int activity = select(maxSock + 1, &rset, 0, 0, &timeout); diff --git a/MQTTSNGateway/src/MQTTSNGateway.h b/MQTTSNGateway/src/MQTTSNGateway.h index 86ceb76..48f237a 100644 --- a/MQTTSNGateway/src/MQTTSNGateway.h +++ b/MQTTSNGateway/src/MQTTSNGateway.h @@ -25,7 +25,7 @@ namespace MQTTSNGW /*================================= * Starting prompt ==================================*/ -#define GATEWAY_VERSION " * Version: 0.9.5" +#define GATEWAY_VERSION " * Version: 0.9.6" #define PAHO_COPYRIGHT0 " * MQTT-SN Transparent Gateway" #define PAHO_COPYRIGHT1 " * Part of Project Paho in Eclipse" diff --git a/MQTTSNGateway/src/linux/Network.cpp b/MQTTSNGateway/src/linux/Network.cpp index d12cc8d..ba3069c 100644 --- a/MQTTSNGateway/src/linux/Network.cpp +++ b/MQTTSNGateway/src/linux/Network.cpp @@ -503,7 +503,8 @@ int Network::recv(uint8_t* buf, uint16_t len) } _busy = true; - loop: do +loop: + do { readBlockedOnWrite = false; readBlocked = false; diff --git a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp index 1152890..d927fc2 100644 --- a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp @@ -400,7 +400,7 @@ SerialPort::SerialPort() _tio.c_iflag = IGNBRK | IGNPAR; _tio.c_cflag = CS8 | CLOCAL | CRTSCTS; _tio.c_cc[VINTR] = 0; - _tio.c_cc[VTIME] = 0; + _tio.c_cc[VTIME] = 10; // 1 sec. _tio.c_cc[VMIN] = 1; _fd = 0; }