ESPMegaPRO-v3-SDK/ESPMegaPRO-OS-SDK/lib/ESPMegaPRO/RemoteVariable.cpp

58 lines
1.7 KiB
C++
Raw Normal View History

2024-01-16 04:22:41 +00:00
#include <RemoteVariable.hpp>
RemoteVariable::RemoteVariable() {
this->topic = nullptr;
this->value = nullptr;
}
RemoteVariable::~RemoteVariable() {
delete this->topic;
delete this->value;
}
2024-01-16 05:48:06 +00:00
void RemoteVariable::begin(size_t size, char* topic, ESPMegaIoT* iot, bool useValueRequest, char* valueRequestTopic) {
2024-01-16 04:22:41 +00:00
this->iot = iot;
this->size = size;
topic = (char*)calloc(size, sizeof(char));
value = (char*)calloc(size, sizeof(char));
2024-01-16 05:48:06 +00:00
this->valueRequestTopic = nullptr;
2024-01-16 04:22:41 +00:00
auto bindedMqttCallback = std::bind(&RemoteVariable::mqtt_callback, this, std::placeholders::_1, std::placeholders::_2);
this->iot->registerMqttCallback(bindedMqttCallback);
auto bindedSubscribe = std::bind(&RemoteVariable::subscribe, this);
this->iot->registerSubscribeCallback(bindedSubscribe);
}
2024-01-16 05:48:06 +00:00
void RemoteVariable::begin(size_t size, char* topic, ESPMegaIoT* iot) {
this->begin(size, topic, iot, false, nullptr);
}
2024-01-16 04:22:41 +00:00
void RemoteVariable::subscribe() {
this->iot->subscribe(this->topic);
2024-01-16 05:48:06 +00:00
if(this->useValueRequest) {
2024-02-05 16:47:53 +00:00
this->requestValue();
2024-01-16 05:48:06 +00:00
}
2024-01-16 04:22:41 +00:00
}
char* RemoteVariable::getValue() {
return this->getValue();
}
void RemoteVariable::mqtt_callback(char* topic, char* payload) {
if (strcmp(topic, this->topic) == 0) {
strcpy(this->value, payload);
}
2024-01-16 05:48:06 +00:00
}
void RemoteVariable::requestValue() {
if(!this->useValueRequest)
return;
this->iot->publish(this->valueRequestTopic, "request");
}
void RemoteVariable::enableSetValue(char* setValueTopic) {
this->useSetValue = true;
this->setValueTopic = setValueTopic;
}
void RemoteVariable::setValue(char* value) {
if(!this->useSetValue)
return;
this->iot->publish(this->setValueTopic, value);
2024-01-16 04:22:41 +00:00
}