diff --git a/MQTTSNGateway/param.conf b/MQTTSNGateway/param.conf index ecca1a1..2062b4e 100644 --- a/MQTTSNGateway/param.conf +++ b/MQTTSNGateway/param.conf @@ -13,7 +13,7 @@ KeepAlive=900 #Password= # UDP -GatewayPortNo=2000 +GatewayPortNo=10000 MulticastIP=225.1.1.1 MulticastPortNo=1883 diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp index 787d5e5..7d967e0 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerRecvTask.cpp @@ -187,10 +187,10 @@ int BrokerRecvTask::log(Client* client, MQTTGWPacket* packet) break; case SUBACK: case UNSUBACK: - WRITELOG(FORMAT_YE_GR_MSGID, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_GR_MSGID, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, client->getClientId(), packet->print(pbuf)); break; case PINGRESP: - WRITELOG(FORMAT_GR_NL, currentDateTime(), packet->getName(), LEFTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_YE_GR, currentDateTime(), packet->getName(), LEFTARROW, client->getClientId(), packet->print(pbuf)); break; default: rc = -1; diff --git a/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp b/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp index b0ee3a2..d76aa10 100644 --- a/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWBrokerSendTask.cpp @@ -151,10 +151,10 @@ void BrokerSendTask::log(Client* client, MQTTGWPacket* packet) WRITELOG(FORMAT_WH_GR_MSGID, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROW, client->getClientId(), packet->print(pbuf)); break; case PINGREQ: - WRITELOG(FORMAT_YE, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_YE_GR, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); break; case DISCONNECT: - WRITELOG(FORMAT_YE, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_YE_GR, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); break; default: break; diff --git a/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp b/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp index c905459..63b575b 100644 --- a/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWClientRecvTask.cpp @@ -58,7 +58,7 @@ void ClientRecvTask::run() MQTTSNPacket* packet = new MQTTSNPacket(); int packetLen = packet->recv(_sensorNetwork); - if (packetLen < 3 ) + if (packetLen < 2 ) { delete packet; continue; @@ -163,7 +163,7 @@ void ClientRecvTask::log(Client* client, MQTTSNPacket* packet) WRITELOG(FORMAT_WH_MSGID, currentDateTime(), packet->getName(), packet->getMsgId(msgId), LEFTARROW, clientId, packet->print(pbuf)); break; case MQTTSN_PINGREQ: - WRITELOG(FORMAT_WH_NL, currentDateTime(), packet->getName(), LEFTARROW, clientId, packet->print(pbuf)); + WRITELOG(FORMAT_YE_WH_NL, currentDateTime(), packet->getName(), LEFTARROW, clientId, packet->print(pbuf)); break; default: WRITELOG(FORMAT_WH_NL, currentDateTime(), packet->getName(), LEFTARROW, clientId, packet->print(pbuf)); diff --git a/MQTTSNGateway/src/MQTTSNGWClientSendTask.cpp b/MQTTSNGateway/src/MQTTSNGWClientSendTask.cpp index ff74aae..30af6f9 100644 --- a/MQTTSNGateway/src/MQTTSNGWClientSendTask.cpp +++ b/MQTTSNGateway/src/MQTTSNGWClientSendTask.cpp @@ -97,7 +97,7 @@ void ClientSendTask::log(Client* client, MQTTSNPacket* packet) WRITELOG(FORMAT_GR_WH_MSGID, currentDateTime(), packet->getName(), packet->getMsgId(msgId), RIGHTARROW, client->getClientId(), packet->print(pbuf)); break; case MQTTSN_PINGRESP: - WRITELOG(FORMAT_CY, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); + WRITELOG(FORMAT_YE_WH, currentDateTime(), packet->getName(), RIGHTARROW, client->getClientId(), packet->print(pbuf)); break; default: break; diff --git a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp index 28baeae..c10e8d9 100644 --- a/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp +++ b/MQTTSNGateway/src/MQTTSNGWConnectionHandler.cpp @@ -246,6 +246,7 @@ void MQTTSNConnectionHandler::handlePingreq(Client* client, MQTTSNPacket* packet /* send PINGREQ to the broker */ MQTTGWPacket* pingreq = new MQTTGWPacket(); pingreq->setHeader(PINGREQ); - Event* ev1 = new Event(); - ev1->setBrokerSendEvent(client, pingreq); + Event* evt = new Event(); + evt->setBrokerSendEvent(client, pingreq); + _gateway->getBrokerSendQue()->post(evt); } diff --git a/MQTTSNGateway/src/MQTTSNGWDefines.h b/MQTTSNGateway/src/MQTTSNGWDefines.h index 955047f..f99113f 100644 --- a/MQTTSNGateway/src/MQTTSNGWDefines.h +++ b/MQTTSNGateway/src/MQTTSNGWDefines.h @@ -23,14 +23,14 @@ namespace MQTTSNGW /*================================= * Starting prompt ==================================*/ -#define GATEWAY_VERSION "(Ver 0.2.0)" +#define GATEWAY_VERSION "(Ver 0.2.1)" /*================================= * Log controls ==================================*/ //#define DEBUG // print out log for debug //#define RINGBUFFER // print out Packets log into shared memory - +//#define DEBUG_NWSTACK // print out SensorNetwork log /*================================= * Parametrs ==================================*/ diff --git a/MQTTSNGateway/src/MQTTSNGWPacket.cpp b/MQTTSNGateway/src/MQTTSNGWPacket.cpp index b52116a..f629e42 100644 --- a/MQTTSNGateway/src/MQTTSNGWPacket.cpp +++ b/MQTTSNGateway/src/MQTTSNGWPacket.cpp @@ -78,7 +78,7 @@ int MQTTSNPacket::recv(SensorNetwork* network) { uint8_t buf[MQTTSNGW_MAX_PACKET_SIZE]; int len = network->read((uint8_t*) buf, MQTTSNGW_MAX_PACKET_SIZE); - if (len >= 3) + if (len > 1) { len = desirialize(buf, len); } diff --git a/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp b/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp index 0144e79..5f211a5 100644 --- a/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp +++ b/MQTTSNGateway/src/linux/udp/SensorNetwork.cpp @@ -276,7 +276,7 @@ int UDPPort::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* addr { D_NWSTACK("errno == %d in UDPPort::sendto\n", errno); } - D_NWSTACK("sendto %s:%u length = %d\n", inet_ntoa(dest.sin_addr), htons(addr->getPortNo()), status); + D_NWSTACK("sendto %s:%u length = %d\n", inet_ntoa(dest.sin_addr), ntohs(dest.sin_port), status); return status; } @@ -289,6 +289,7 @@ int UDPPort::recv(uint8_t* buf, uint16_t len, SensorNetAddress* addr) { fd_set recvfds; int maxSock = 0; + int rc = 0; FD_ZERO(&recvfds); FD_SET(_sockfdUnicast, &recvfds); @@ -307,13 +308,13 @@ int UDPPort::recv(uint8_t* buf, uint16_t len, SensorNetAddress* addr) if (FD_ISSET(_sockfdUnicast, &recvfds)) { - return recvfrom(_sockfdUnicast, buf, len, 0, addr); + rc = recvfrom(_sockfdUnicast, buf, len, 0, addr); } else if (FD_ISSET(_sockfdMulticast, &recvfds)) { - return recvfrom(_sockfdMulticast, buf, len, 0, &_grpAddr); + rc = recvfrom(_sockfdMulticast, buf, len, 0, &_grpAddr); } - return 0; + return rc; } int UDPPort::recvfrom(int sockfd, uint8_t* buf, uint16_t len, uint8_t flags, SensorNetAddress* addr) @@ -330,7 +331,7 @@ int UDPPort::recvfrom(int sockfd, uint8_t* buf, uint16_t len, uint8_t flags, Sen return -1; } addr->setAddress(sender.sin_addr.s_addr, sender.sin_port); - D_NWSTACK("recved from %s:%d length = %d\n", inet_ntoa(sender.sin_addr), htons(addr->getPortNo()), status); + D_NWSTACK("recved from %s:%d length = %d\n", inet_ntoa(sender.sin_addr),ntohs(sender.sin_port), status); return status; } diff --git a/MQTTSNPacket/src/MQTTSNPacket.c b/MQTTSNPacket/src/MQTTSNPacket.c index 80f55f4..b367332 100644 --- a/MQTTSNPacket/src/MQTTSNPacket.c +++ b/MQTTSNPacket/src/MQTTSNPacket.c @@ -64,9 +64,9 @@ int MQTTSNPacket_encode(unsigned char* buf, int length) FUNC_ENTRY; if (length > 255) { - buf[rc++] = 0x01; + writeChar(&buf, 0x01); writeInt(&buf, length); - rc += 2; + rc += 3; } else buf[rc++] = length;