diff --git a/src/Homie.cpp b/src/Homie.cpp index 70951c92..ec9e4313 100644 --- a/src/Homie.cpp +++ b/src/Homie.cpp @@ -117,7 +117,7 @@ void HomieClass::setBrand(const char* name) { strcpy(this->_interface.brand, name); } -void HomieClass::registerNode(HomieNode& node) { +void HomieClass::registerNode(const HomieNode& node) { this->_checkBeforeSetup(F("registerNode")); if (this->_interface.registeredNodesCount > MAX_REGISTERED_NODES_COUNT) { Serial.println(F("✖ register(): the max registered nodes count has been reached")); @@ -180,7 +180,7 @@ void HomieClass::disableResetTrigger() { this->_interface.reset.enabled = false; } -bool HomieClass::setNodeProperty(HomieNode& node, const char* property, const char* value, bool retained) { +bool HomieClass::setNodeProperty(const HomieNode& node, const char* property, const char* value, bool retained) { if (!this->isReadyToOperate()) { Logger.logln(F("✖ setNodeProperty(): impossible now")); return false; diff --git a/src/Homie.h b/src/Homie.h index 7bcfefff..337de799 100644 --- a/src/Homie.h +++ b/src/Homie.h @@ -26,7 +26,7 @@ namespace HomieInternals { void setLedPin(unsigned char pin, unsigned char on); void setBrand(const char* name); void setFirmware(const char* name, const char* version); - void registerNode(HomieNode& node); + void registerNode(const HomieNode& node); void setGlobalInputHandler(GlobalInputHandler globalInputHandler); void setResettable(bool resettable); void onEvent(EventHandler handler); @@ -36,10 +36,10 @@ namespace HomieInternals { void setSetupFunction(OperationFunction function); void setLoopFunction(OperationFunction function); bool isReadyToOperate(); - bool setNodeProperty(HomieNode& node, const String& property, const String& value, bool retained = true) { + bool setNodeProperty(const HomieNode& node, const String& property, const String& value, bool retained = true) { return this->setNodeProperty(node, property.c_str(), value.c_str(), retained); } - bool setNodeProperty(HomieNode& node, const char* property, const char* value, bool retained = true); + bool setNodeProperty(const HomieNode& node, const char* property, const char* value, bool retained = true); private: bool _setup; Boot* _boot; diff --git a/src/Homie/Boot/BootConfig.cpp b/src/Homie/Boot/BootConfig.cpp index 6671db60..4311290a 100644 --- a/src/Homie/Boot/BootConfig.cpp +++ b/src/Homie/Boot/BootConfig.cpp @@ -127,7 +127,7 @@ void BootConfig::_onDeviceInfoRequest() { JsonArray& nodes = json.createNestedArray("nodes"); for (int i = 0; i < this->_interface->registeredNodesCount; i++) { jsonLength += 20; // {"id":"","type":""}, - HomieNode* node = this->_interface->registeredNodes[i]; + const HomieNode* node = this->_interface->registeredNodes[i]; JsonObject& jsonNode = jsonBuffer.createObject(); jsonLength += strlen(node->getId()); jsonNode["id"] = node->getId(); diff --git a/src/Homie/Boot/BootNormal.cpp b/src/Homie/Boot/BootNormal.cpp index d834c332..93e3b4d8 100644 --- a/src/Homie/Boot/BootNormal.cpp +++ b/src/Homie/Boot/BootNormal.cpp @@ -133,7 +133,7 @@ void BootNormal::_mqttSetup() { char nodes[MAX_REGISTERED_NODES_COUNT * (MAX_NODE_ID_LENGTH + 1 + MAX_NODE_ID_LENGTH + 1) - 1]; strcpy_P(nodes, PSTR("")); for (int i = 0; i < this->_interface->registeredNodesCount; i++) { - HomieNode* node = this->_interface->registeredNodes[i]; + const HomieNode* node = this->_interface->registeredNodes[i]; strcat(nodes, node->getId()); strcat_P(nodes, PSTR(":")); strcat(nodes, node->getType()); @@ -227,7 +227,7 @@ void BootNormal::_mqttCallback(char* topic, char* payload) { int homieNodeIndex = -1; for (int i = 0; i < this->_interface->registeredNodesCount; i++) { - HomieNode* homieNode = this->_interface->registeredNodes[i]; + const HomieNode* homieNode = this->_interface->registeredNodes[i]; if (node == homieNode->getId()) { homieNodeIndex = i; break; @@ -241,7 +241,7 @@ void BootNormal::_mqttCallback(char* topic, char* payload) { return; } - HomieNode* homieNode = this->_interface->registeredNodes[homieNodeIndex]; + const HomieNode* homieNode = this->_interface->registeredNodes[homieNodeIndex]; int homieNodePropertyIndex = -1; for (int i = 0; i < homieNode->getSubscriptionsCount(); i++) { diff --git a/src/Homie/Datatypes/Interface.hpp b/src/Homie/Datatypes/Interface.hpp index e06a4af3..5bf2612f 100644 --- a/src/Homie/Datatypes/Interface.hpp +++ b/src/Homie/Datatypes/Interface.hpp @@ -30,7 +30,7 @@ namespace HomieInternals { ResetFunction userFunction; } reset; - HomieNode* registeredNodes[MAX_REGISTERED_NODES_COUNT]; + const HomieNode* registeredNodes[MAX_REGISTERED_NODES_COUNT]; unsigned char registeredNodesCount; GlobalInputHandler globalInputHandler; diff --git a/src/HomieNode.cpp b/src/HomieNode.cpp index 16f5559d..f38384b3 100644 --- a/src/HomieNode.cpp +++ b/src/HomieNode.cpp @@ -31,22 +31,22 @@ void HomieNode::subscribe(const char* property, PropertyInputHandler inputHandle this->_subscriptions[this->_subscriptionsCount++] = subscription; } -const char* HomieNode::getId() { +const char* HomieNode::getId() const { return this->_id; } -const char* HomieNode::getType() { +const char* HomieNode::getType() const { return this->_type; } -Subscription* HomieNode::getSubscriptions() { +const Subscription* HomieNode::getSubscriptions() const { return this->_subscriptions; } -unsigned char HomieNode::getSubscriptionsCount() { +unsigned char HomieNode::getSubscriptionsCount() const { return this->_subscriptionsCount; } -NodeInputHandler HomieNode::getInputHandler() { +NodeInputHandler HomieNode::getInputHandler() const { return this->_inputHandler; } diff --git a/src/HomieNode.h b/src/HomieNode.h index cc44ed60..944be569 100644 --- a/src/HomieNode.h +++ b/src/HomieNode.h @@ -22,11 +22,11 @@ class HomieNode { void subscribe(const char* property, HomieInternals::PropertyInputHandler inputHandler = [](String value) { return false; }); private: - const char* getId(); - const char* getType(); - HomieInternals::Subscription* getSubscriptions(); - unsigned char getSubscriptionsCount(); - HomieInternals::NodeInputHandler getInputHandler(); + const char* getId() const; + const char* getType() const; + const HomieInternals::Subscription* getSubscriptions() const; + unsigned char getSubscriptionsCount() const; + HomieInternals::NodeInputHandler getInputHandler() const; const char* _id; const char* _type;