From 82fdc29f2ab5b5ca724cd86ab3ca3ed41eba3a91 Mon Sep 17 00:00:00 2001 From: Matt Way Date: Sat, 4 May 2024 23:11:29 +1000 Subject: [PATCH] Modify helpers for publishing to accept a std::string --- src/main.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 78a782f..b4e679c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -74,9 +74,9 @@ bool sendPacket(Packet *packet); bool checkPosition(uint16_t shadeID); void startFetchingPosition(uint16_t shadeID, int8_t targetPosition); -void publishPosition(const String& shadeName, const uint8_t position); -void publishState(const String& shadeName, const String& state); -void publishBattery(const String& shadeName, const uint8_t battery); +void publishPosition(const std::string& shadeKey, const uint8_t position); +void publishState(const std::string& shadeKey, const String& state); +void publishBattery(const std::string& shadeKey, const uint8_t battery); void publishDiscoveryTopics(); @@ -168,15 +168,15 @@ void processPacket(const Packet *packet) { } shade->lastPosition = position; - publishPosition(shade->key.c_str(), position); + publishPosition(shade->key, position); } } else if (field.identifier == 0x42) { auto shade = shadeRepository.findById(source); if (shade != nullptr) { uint8_t value = std::get(field.value); uint8_t battery = uint8_t(((float)value / 200) * 100); - - publishBattery(shade->key.c_str(), battery); + + publishBattery(shade->key, battery); } } } @@ -304,13 +304,13 @@ void processCommandMessage(const String &topic, const String &payload) { startFetchingPosition(shade->ID, 100); - publishState(shade->key.c_str(), "opening"); + publishState(shade->key, "opening"); } else if (payload == "CLOSE") { sendClosePacket(shade->ID); startFetchingPosition(shade->ID, 0); - publishState(shade->key.c_str(), "closing"); + publishState(shade->key, "closing"); } else if (payload == "STOP") { sendStopPacket(shade->ID); @@ -333,9 +333,9 @@ void processSetPositionMessage(const String& topic, const String &payload) { sendSetPosition(shade->ID, percentage); if (payload.toInt() > shade->lastPosition) { - publishState(shade->key.c_str(), "opening"); + publishState(shade->key, "opening"); } else if (payload.toInt() < shade->lastPosition) { - publishState(shade->key.c_str(), "closing"); + publishState(shade->key, "closing"); } startFetchingPosition(shade->ID, payload.toInt()); @@ -358,7 +358,7 @@ bool checkPosition(uint16_t shadeID) { } } - publishState(shade->key.c_str(), shade->lastPosition > 0 ? "open" : "closed"); + publishState(shade->key, shade->lastPosition > 0 ? "open" : "closed"); return false; } return false; @@ -381,16 +381,16 @@ void startFetchingPosition(uint16_t shadeID, int8_t targetPosition) { } } -void publishState(const String& shadeName, const String& state) { - client.publish(topic_prefix.c_str() + shadeName + "/state", state, true); +void publishState(const std::string& shadeKey, const String& state) { + client.publish((topic_prefix + shadeKey + "/state").c_str(), state, true); } -void publishPosition(const String& shadeName, const uint8_t position) { - client.publish(topic_prefix.c_str() + shadeName + "/position", String(position), true); +void publishPosition(const std::string& shadeKey, const uint8_t position) { + client.publish((topic_prefix + shadeKey + "/position").c_str(), String(position), true); } -void publishBattery(const String& shadeName, const uint8_t battery) { - client.publish(topic_prefix.c_str() + shadeName + "/battery", String(battery), true); +void publishBattery(const std::string& shadeKey, const uint8_t battery) { + client.publish((topic_prefix + shadeKey + "/battery").c_str(), String(battery), true); } void publishDiscoveryTopics() {