Merge pull request #94 from ty4tw/develop

Bugfix of #91, #93
This commit is contained in:
Tomoaki Yamaguchi
2017-12-20 16:36:42 +09:00
committed by GitHub
4 changed files with 27 additions and 4 deletions

View File

@@ -534,8 +534,8 @@ char* MQTTGWPacket::print(char* pbuf)
char* ptr = pbuf;
char** pptr = &pbuf;
int len = getPacketData(packetData);
for (int i = 0; i < len; i++)
int size = len > SIZE_OF_LOG_PACKET ? SIZE_OF_LOG_PACKET : len;
for (int i = 0; i < size; i++)
{
sprintf(*pptr, " %02X", packetData[i]);
*pptr += 3;

View File

@@ -167,7 +167,7 @@ void PacketHandleTask::run()
_mqttsnPublish->handleRegister(client, snPacket);
break;
case MQTTSN_REGACK:
// NOP
_mqttsnPublish->handleRegAck(client, snPacket);
break;
case MQTTSN_SUBSCRIBE:
_mqttsnSubscribe->handleSubscribe(client, snPacket);

View File

@@ -245,5 +245,28 @@ void MQTTSNPublishHandler::handleRegister(Client* client, MQTTSNPacket* packet)
ev->setClientSendEvent(client, regAck);
_gateway->getClientSendQue()->post(ev);
}
}
void MQTTSNPublishHandler::handleRegAck( Client* client, MQTTSNPacket* packet)
{
uint16_t id;
uint16_t msgId;
uint8_t rc;
if ( client->isActive() || client->isAwake())
{
if ( packet->getREGACK(&id, &msgId, &rc) == 0 )
{
return;
}
MQTTSNPacket* regAck = client->getWaitREGACKPacketList()->getPacket(msgId);
if ( regAck != 0 )
{
client->getWaitREGACKPacketList()->erase(msgId);
Event* ev = new Event();
ev->setClientSendEvent(client, regAck);
_gateway->getClientSendQue()->post(ev);
}
}
}

View File

@@ -31,7 +31,7 @@ public:
void handlePuback(Client* client, MQTTSNPacket* packet);
void handleAck(Client* client, MQTTSNPacket* packet, uint8_t packetType);
void handleRegister(Client* client, MQTTSNPacket* packet);
void handleRegAck( Client* client, MQTTSNPacket* packet);
private:
Gateway* _gateway;
};