From 301814cc26f9d0e58e5e128a2bda288d36450d7b Mon Sep 17 00:00:00 2001 From: tomoaki Date: Tue, 27 Feb 2018 11:50:13 +0900 Subject: [PATCH 1/2] BugFix of #107 Signed-off-by: tomoaki --- MQTTSNGateway/src/MQTTSNGWClient.cpp | 1 + MQTTSNGateway/src/MQTTSNGWVersion.h | 2 +- .../src/linux/xbee/SensorNetwork.cpp | 31 +++++++++++++------ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/MQTTSNGateway/src/MQTTSNGWClient.cpp b/MQTTSNGateway/src/MQTTSNGWClient.cpp index c0a7d03..31d65ce 100644 --- a/MQTTSNGateway/src/MQTTSNGWClient.cpp +++ b/MQTTSNGateway/src/MQTTSNGWClient.cpp @@ -735,6 +735,7 @@ uint16_t Topic::getTopicId(void) bool Topic::isMatch(string* topicName) { string::size_type tlen = _topicName->size(); + if (topicName->size() < tlen - 2) { return false; diff --git a/MQTTSNGateway/src/MQTTSNGWVersion.h b/MQTTSNGateway/src/MQTTSNGWVersion.h index 6989e2c..6506300 100644 --- a/MQTTSNGateway/src/MQTTSNGWVersion.h +++ b/MQTTSNGateway/src/MQTTSNGWVersion.h @@ -17,6 +17,6 @@ #ifndef MQTTSNGWVERSION_H_IN_ #define MQTTSNGWVERSION_H_IN_ -#define PAHO_GATEWAY_VERSION "1.0.0" +#define PAHO_GATEWAY_VERSION "1.0.1" #endif /* MQTTSNGWVERSION_H_IN_ */ diff --git a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp index 65b9946..00bbb36 100644 --- a/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/xbee/SensorNetwork.cpp @@ -20,6 +20,9 @@ #include #include #include +#include +#include +#include #include "SensorNetwork.h" #include "MQTTSNGWProcess.h" @@ -238,6 +241,10 @@ int XBee::recv(uint8_t* buf, uint16_t bufLen, SensorNetAddress* clientAddr) _sem.post(); } } + else + { + return 0; + } } } @@ -451,15 +458,21 @@ bool SerialPort::send(unsigned char b) bool SerialPort::recv(unsigned char* buf) { - if (read(_fd, buf, 1) == 0) - { - return false; - } - else - { - D_NWSTACK( " %02x",buf[0] ); - return true; - } + struct timeval timeout; + fd_set rfds; + FD_ZERO(&rfds); + FD_SET(_fd, &rfds); + timeout.tv_sec = 0; + timeout.tv_usec = 500000; // 500ms + if ( select(1, &rfds, 0, 0, &timeout) > 0 ) + { + if (read(_fd, buf, 1) > 0) + { + D_NWSTACK( " %02x",buf[0] ); + return true; + } + } + return false; } void SerialPort::flush(void) From a63125255d394f1425cb389030a45839f27d03d9 Mon Sep 17 00:00:00 2001 From: tomoaki Date: Mon, 5 Mar 2018 17:18:13 +0900 Subject: [PATCH 2/2] Update: Change Arrow shape of Log for packets from/to the Broker Signed-off-by: tomoaki --- MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp | 10 +++++----- MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp | 10 +++++----- MQTTSNGateway/src/MQTTSNGateway.h | 2 ++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp index 5d093dc..36c122c 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp @@ -192,23 +192,23 @@ int BrokerRecvTask::log(Client* client, MQTTGWPacket* packet) switch (packet->getType()) { case CONNACK: - WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), LEFTARROWB, client->getClientId(), packet->print(pbuf)); break; case PUBLISH: - WRITELOG(FORMAT_W_MSGID_Y_W_NL, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_W_MSGID_Y_W_NL, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROWB, client->getClientId(), packet->print(pbuf)); break; case PUBACK: case PUBREC: case PUBREL: case PUBCOMP: - WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROWB, client->getClientId(), packet->print(pbuf)); break; case SUBACK: case UNSUBACK: - WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROWB, client->getClientId(), packet->print(pbuf)); break; case PINGRESP: - WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), LEFTARROWB, client->getClientId(), packet->print(pbuf)); break; default: WRITELOG("Type=%x\n", packet->getType()); diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp index de2454d..cc7798e 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp @@ -150,10 +150,10 @@ void BrokerSendTask::log(Client* client, MQTTGWPacket* packet) switch (packet->getType()) { case CONNECT: - WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROWB, client->getClientId(), packet->print(pbuf)); break; case PUBLISH: - WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROWB, client->getClientId(), packet->print(pbuf)); break; case SUBSCRIBE: case UNSUBSCRIBE: @@ -161,13 +161,13 @@ void BrokerSendTask::log(Client* client, MQTTGWPacket* packet) case PUBREC: case PUBREL: case PUBCOMP: - WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_W_MSGID_Y_W, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROWB, client->getClientId(), packet->print(pbuf)); break; case PINGREQ: - WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROWB, client->getClientId(), packet->print(pbuf)); break; case DISCONNECT: - WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_Y_Y_W, currentDateTime(), packet->getName(), RIGHTARROWB, client->getClientId(), packet->print(pbuf)); break; default: break; diff --git a/MQTTSNGateway/src/MQTTSNGateway.h b/MQTTSNGateway/src/MQTTSNGateway.h index b5360c0..ec53825 100644 --- a/MQTTSNGateway/src/MQTTSNGateway.h +++ b/MQTTSNGateway/src/MQTTSNGateway.h @@ -44,6 +44,8 @@ namespace MQTTSNGW #define UNKNOWNCL "Unknown Client !" #define LEFTARROW "<---" #define RIGHTARROW "--->" +#define LEFTARROWB "<===" +#define RIGHTARROWB "===>" #define FORMAT_Y_G_G_NL "\n%s \033[0m\033[0;33m%-18s\033[0m\033[0;32m%-6s%-34.32s \033[0m\033[0;34m%s\033[0m\033[0;37m\n" #define FORMAT_Y_G_G "%s \033[0m\033[0;33m%-18s\033[0m\033[0;32m%-6s%-34.32s \033[0m\033[0;34m%s\033[0m\033[0;37m\n"