use connect and disconnect callback for reconnect logic

This commit is contained in:
technyon
2023-01-31 21:02:46 +01:00
parent 3a65e2ad5a
commit df9b971eed
9 changed files with 152 additions and 7 deletions

View File

@@ -35,8 +35,12 @@ public:
virtual bool mqttConnected() const = 0;
virtual void mqttSetServer(const char* host, uint16_t port) = 0;
virtual bool mqttConnect() = 0;
virtual bool mqttDisonnect(bool force) = 0;
virtual void mqttSetCredentials(const char* username, const char* password) = 0;
virtual void mqttOnMessage(espMqttClientTypes::OnMessageCallback callback) = 0;
virtual void mqttOnConnect(espMqttClientTypes::OnConnectCallback callback) = 0;
virtual void mqttOnDisconnect(espMqttClientTypes::OnDisconnectCallback callback) = 0;
virtual uint16_t mqttSubscribe(const char* topic, uint8_t qos) = 0;
protected:

View File

@@ -217,6 +217,11 @@ bool W5500Device::mqttConnect()
return _mqttClient.connect();
}
bool W5500Device::mqttDisonnect(bool force)
{
return _mqttClient.disconnect(force);
}
void W5500Device::mqttSetCredentials(const char *username, const char *password)
{
_mqttClient.setCredentials(username, password);
@@ -227,6 +232,16 @@ void W5500Device::mqttOnMessage(espMqttClientTypes::OnMessageCallback callback)
_mqttClient.onMessage(callback);
}
void W5500Device::mqttOnConnect(espMqttClientTypes::OnConnectCallback callback)
{
_mqttClient.onConnect(callback);
}
void W5500Device::mqttOnDisconnect(espMqttClientTypes::OnDisconnectCallback callback)
{
_mqttClient.onDisconnect(callback);
}
uint16_t W5500Device::mqttSubscribe(const char *topic, uint8_t qos)
{
return _mqttClient.subscribe(topic, qos);

View File

@@ -39,10 +39,16 @@ public:
bool mqttConnect() override;
bool mqttDisonnect(bool force) override;
void mqttSetCredentials(const char *username, const char *password) override;
void mqttOnMessage(espMqttClientTypes::OnMessageCallback callback) override;
void mqttOnConnect(espMqttClientTypes::OnConnectCallback callback) override;
void mqttOnDisconnect(espMqttClientTypes::OnDisconnectCallback callback) override;
uint16_t mqttSubscribe(const char *topic, uint8_t qos) override;
private:

View File

@@ -241,6 +241,18 @@ bool WifiDevice::mqttConnect()
}
}
bool WifiDevice::mqttDisonnect(bool force)
{
if(_useEncryption)
{
return _mqttClientSecure->disconnect(force);
}
else
{
return _mqttClient->disconnect(force);
}
}
void WifiDevice::mqttSetCredentials(const char *username, const char *password)
{
if(_useEncryption)
@@ -265,6 +277,32 @@ void WifiDevice::mqttOnMessage(espMqttClientTypes::OnMessageCallback callback)
}
}
void WifiDevice::mqttOnConnect(espMqttClientTypes::OnConnectCallback callback)
{
if(_useEncryption)
{
_mqttClientSecure->onConnect(callback);
}
else
{
_mqttClient->onConnect(callback);
}
}
void WifiDevice::mqttOnDisconnect(espMqttClientTypes::OnDisconnectCallback callback)
{
if(_useEncryption)
{
_mqttClientSecure->onDisconnect(callback);
}
else
{
_mqttClient->onDisconnect(callback);
}
}
uint16_t WifiDevice::mqttSubscribe(const char *topic, uint8_t qos)
{
if(_useEncryption)

View File

@@ -38,10 +38,16 @@ public:
bool mqttConnect() override;
bool mqttDisonnect(bool force) override;
void mqttSetCredentials(const char *username, const char *password) override;
void mqttOnMessage(espMqttClientTypes::OnMessageCallback callback) override;
void mqttOnConnect(espMqttClientTypes::OnConnectCallback callback) override;
void mqttOnDisconnect(espMqttClientTypes::OnDisconnectCallback callback) override;
uint16_t mqttSubscribe(const char *topic, uint8_t qos) override;
private: