mirror of
https://github.com/eclipse/paho.mqtt-sn.embedded-c.git
synced 2025-12-13 23:46:51 +01:00
BugFix: PINGREQ timeout of ClientProxy
reset PINGREQ timer of ClientProxy when QoS-1 PUBLISH is sent. Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
@@ -586,6 +586,11 @@ uint16_t LGwProxy::getNextMsgId(void)
|
||||
|
||||
void LGwProxy::checkPingReq(void)
|
||||
{
|
||||
if ( _isQoSMinus1Mode )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t msg[2];
|
||||
msg[0] = 0x02;
|
||||
msg[1] = MQTTSN_TYPE_PINGREQ;
|
||||
|
||||
@@ -100,7 +100,7 @@ void LPublishManager::publish(uint16_t topicId, Payload* payload, uint8_t qos, b
|
||||
void LPublishManager::publish(uint16_t topicId, uint8_t* payload, uint16_t len, uint8_t qos, bool retain)
|
||||
{
|
||||
uint16_t msgId = 0;
|
||||
if ( qos > 0 )
|
||||
if ( qos > 0 && qos < 3 )
|
||||
{
|
||||
msgId = theClient->getGwProxy()->getNextMsgId();
|
||||
}
|
||||
@@ -148,7 +148,7 @@ void LPublishManager::sendPublish(PubElement* elm)
|
||||
|
||||
theClient->getGwProxy()->writeMsg(msg);
|
||||
theClient->getGwProxy()->setPingReqTimer();
|
||||
if ((elm->flag & 0x60) == MQTTSN_FLAG_QOS_0)
|
||||
if ( ((elm->flag & 0x60) == MQTTSN_FLAG_QOS_0 ) || ( (elm->flag & 0x60) == MQTTSN_FLAG_QOS_M1) )
|
||||
{
|
||||
DISPLAY("\033[0m\033[0;32m Topic \"%s\" was Published. \033[0m\033[0;37m\n\n", elm->topicName);
|
||||
remove(elm); // PUBLISH Done
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
|
||||
using namespace MQTTSNGW;
|
||||
|
||||
#define RESPONSE_DURATION 900 // Secs
|
||||
#define KEEPALIVE_DURATION 900 // Secs
|
||||
#define RESPONSE_DURATION 10 // Secs
|
||||
|
||||
/*
|
||||
* Class ClientProxyElement
|
||||
@@ -198,7 +199,7 @@ void ClientProxy::checkConnection(void)
|
||||
_responseTimer.start(RESPONSE_DURATION * 1000UL);
|
||||
MQTTSNPacket_connectData options = MQTTSNPacket_connectData_initializer;
|
||||
options.clientID.cstring = _client->getClientId();
|
||||
options.duration = RESPONSE_DURATION;
|
||||
options.duration = KEEPALIVE_DURATION;
|
||||
|
||||
MQTTSNPacket* packet = new MQTTSNPacket();
|
||||
packet->setCONNECT(&options);
|
||||
@@ -221,7 +222,7 @@ void ClientProxy::checkConnection(void)
|
||||
|
||||
void ClientProxy::resetPingTimer(void)
|
||||
{
|
||||
_keepAliveTimer.start(RESPONSE_DURATION * 1000UL);
|
||||
_keepAliveTimer.start(KEEPALIVE_DURATION * 1000UL);
|
||||
}
|
||||
|
||||
void ClientProxy::send(MQTTSNPacket* packet)
|
||||
|
||||
@@ -89,7 +89,7 @@ void MQTTSNPublishHandler::handlePublish(Client* client, MQTTSNPacket* packet)
|
||||
|
||||
if( !topic && qos == 3 )
|
||||
{
|
||||
WRITELOG("%s Invali TopicId.%s\n", ERRMSG_HEADER, client->getClientId(), ERRMSG_FOOTER);
|
||||
WRITELOG("%s Invali TopicId.%s %s\n", ERRMSG_HEADER, client->getClientId(), ERRMSG_FOOTER);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -123,6 +123,12 @@ void MQTTSNPublishHandler::handlePublish(Client* client, MQTTSNPacket* packet)
|
||||
Event* ev1 = new Event();
|
||||
ev1->setBrokerSendEvent(client, publish);
|
||||
_gateway->getBrokerSendQue()->post(ev1);
|
||||
|
||||
/* reset PINGREQ of ClientProxy */
|
||||
if ( qos == 3 )
|
||||
{
|
||||
_gateway->getClientProxy()->resetPingTimer();
|
||||
}
|
||||
}
|
||||
|
||||
void MQTTSNPublishHandler::handlePuback(Client* client, MQTTSNPacket* packet)
|
||||
|
||||
@@ -17,6 +17,6 @@
|
||||
#ifndef MQTTSNGWVERSION_H_IN_
|
||||
#define MQTTSNGWVERSION_H_IN_
|
||||
|
||||
#define PAHO_GATEWAY_VERSION "1.2.0"
|
||||
#define PAHO_GATEWAY_VERSION "1.2.1"
|
||||
|
||||
#endif /* MQTTSNGWVERSION_H_IN_ */
|
||||
|
||||
@@ -329,7 +329,7 @@ void Gateway::run(void)
|
||||
}
|
||||
if ( _params.qosMinusClientListName )
|
||||
{
|
||||
WRITELOG(" QoS-1: %s\n", _params.qosMinusClientListName);
|
||||
WRITELOG(" QoS-1File: %s\n", _params.qosMinusClientListName);
|
||||
}
|
||||
WRITELOG(" SensorN/W: %s\n", _sensorNetwork.getDescription());
|
||||
WRITELOG(" Broker: %s : %s, %s\n", _params.brokerName, _params.port, _params.portSecure);
|
||||
|
||||
Reference in New Issue
Block a user