From b94eb542a9c4cc578265442f05f2457c7ee44c6b Mon Sep 17 00:00:00 2001 From: "Mikael Falkvidd git@mjo.se" Date: Thu, 30 May 2019 13:15:33 +0200 Subject: [PATCH] Rename "soft ack" to echo The ack parameter is often confused with what might be called "hardware ack" (see https://forum.mysensors.org/post/34263 for one of many lengthy discussions) This change should make it harder to confuse echo with the hardware ack, and reflects more accurately what will actually happen. This fixes https://github.com/mysensors/MySensors/issues/1103 I hope I have found all places where the naming needs to be changed, and that I haven't inadvertently renamed any of the *real* ack stuff. --- core/MyGatewayTransport.cpp | 11 ++-- core/MyMessage.cpp | 8 ++- core/MyMessage.h | 31 ++++++---- core/MyOTALogging.cpp | 2 +- core/MyProtocol.cpp | 16 ++--- core/MySensorsCore.cpp | 41 ++++++------- core/MySensorsCore.h | 114 ++++++++++++++++++++++-------------- core/MySigning.cpp | 4 +- core/MySigning.h | 2 +- core/MyTransport.cpp | 20 +++---- core/MyTransport.h | 4 +- 11 files changed, 146 insertions(+), 107 deletions(-) diff --git a/core/MyGatewayTransport.cpp b/core/MyGatewayTransport.cpp index 042631f6e..bab8bd1ae 100644 --- a/core/MyGatewayTransport.cpp +++ b/core/MyGatewayTransport.cpp @@ -31,13 +31,14 @@ inline void gatewayTransportProcess(void) _msg = gatewayTransportReceive(); if (_msg.destination == GATEWAY_ADDRESS) { - // Check if sender requests an ack back. - if (mGetRequestAck(_msg)) { + // Check if sender requests an echo + if (mGetRequestEcho(_msg)) { // Copy message _msgTmp = _msg; - mSetRequestAck(_msgTmp, - false); // Reply without ack flag (otherwise we would end up in an eternal loop) - mSetAck(_msgTmp, true); + // Reply without echo flag, otherwise we would end up in an eternal loop + mSetRequestEcho(_msgTmp, + false); + mSetEcho(_msgTmp, true); _msgTmp.sender = getNodeId(); _msgTmp.destination = _msg.sender; gatewayTransportSend(_msgTmp); diff --git a/core/MyMessage.cpp b/core/MyMessage.cpp index 53514098c..305c9e78c 100644 --- a/core/MyMessage.cpp +++ b/core/MyMessage.cpp @@ -51,9 +51,15 @@ void MyMessage::clear(void) miSetVersion(PROTOCOL_VERSION); } +// TODO: Remove before v3 is released, use isEcho instead bool MyMessage::isAck(void) const { - return miGetAck(); + return isEcho(); +} + +bool MyMessage::isEcho(void) const +{ + return miGetEcho(); } uint8_t MyMessage::getCommand(void) const diff --git a/core/MyMessage.h b/core/MyMessage.h index 7a3f1dfe7..035cf307e 100644 --- a/core/MyMessage.h +++ b/core/MyMessage.h @@ -250,11 +250,11 @@ typedef enum { #define mSetCommand(_message,_command) BF_SET(_message.command_ack_payload, _command, 0, 3) //!< Set command field #define mGetCommand(_message) ((uint8_t)BF_GET(_message.command_ack_payload, 0, 3)) //!< Get command field -#define mSetRequestAck(_message,_rack) BF_SET(_message.command_ack_payload, _rack, 3, 1) //!< Set ack-request field -#define mGetRequestAck(_message) ((bool)BF_GET(_message.command_ack_payload, 3, 1)) //!< Get ack-request field +#define mSetRequestEcho(_message,_rack) BF_SET(_message.command_ack_payload, _rack, 3, 1) //!< Set ack-request field +#define mGetRequestEcho(_message) ((bool)BF_GET(_message.command_ack_payload, 3, 1)) //!< Get ack-request field -#define mSetAck(_message,_ackMsg) BF_SET(_message.command_ack_payload, _ackMsg, 4, 1) //!< Set ack field -#define mGetAck(_message) ((bool)BF_GET(_message.command_ack_payload, 4, 1)) //!< Get ack field +#define mSetEcho(_message,_ackMsg) BF_SET(_message.command_ack_payload, _ackMsg, 4, 1) //!< Set ack field +#define mGetEcho(_message) ((bool)BF_GET(_message.command_ack_payload, 4, 1)) //!< Get ack field #define mSetPayloadType(_message, _pt) BF_SET(_message.command_ack_payload, _pt, 5, 3) //!< Set payload type field #define mGetPayloadType(_message) ((uint8_t)BF_GET(_message.command_ack_payload, 5, 3)) //!< Get payload type field @@ -269,11 +269,11 @@ typedef enum { #define miSetVersion(_version) BF_SET(version_length, _version, 0, 2) //!< Internal setter for version field #define miGetVersion() ((uint8_t)BF_GET(version_length, 0, 2)) //!< Internal getter for version field -#define miSetRequestAck(_rack) BF_SET(command_ack_payload, _rack, 3, 1) //!< Internal setter for ack-request field -#define miGetRequestAck() ((bool)BF_GET(command_ack_payload, 3, 1)) //!< Internal getter for ack-request field +#define miSetRequestEcho(_rack) BF_SET(command_ack_payload, _rack, 3, 1) //!< Internal setter for echo request field +#define miGetRequestEcho() ((bool)BF_GET(command_ack_payload, 3, 1)) //!< Internal getter for echo request field -#define miSetAck(_ack) BF_SET(command_ack_payload, _ack, 4, 1) //!< Internal setter for ack field -#define miGetAck() ((bool)BF_GET(command_ack_payload, 4, 1)) //!< Internal getter for ack field +#define miSetEcho(_ack) BF_SET(command_ack_payload, _ack, 4, 1) //!< Internal setter for echo field +#define miGetEcho() ((bool)BF_GET(command_ack_payload, 4, 1)) //!< Internal getter for echo field #define miSetPayloadType(_pt) BF_SET(command_ack_payload, _pt, 5, 3) //!< Internal setter for payload type field #define miGetPayloadType() (uint8_t)BF_GET(command_ack_payload, 5, 3) //!< Internal getter for payload type field @@ -380,11 +380,18 @@ class MyMessage uint8_t getCommand(void) const; /** - * @brief Getter for ack-flag. - * @return true if this is an ack message + * \deprecated, see isEcho + * @brief Getter for echo-flag. + * @return true if this is an echoed message */ bool isAck(void) const; + /** + * @brief Getter for echo-flag. + * @return true if this is an echoed message + */ + bool isEcho(void) const; + /** * @brief Set message type * @param type see http://korturl.nu/stupidurl @@ -485,8 +492,8 @@ typedef union { /** * 3 bit - Command type
- * 1 bit - Request an ack - Indicator that receiver should send an ack back
- * 1 bit - Is ack message - Indicator that this is the actual ack message
+ * 1 bit - Request an echo - Indicator that receiver should echo the message back to the sender
+ * 1 bit - Is echo message - Indicator that this is the echoed message
* 3 bit - Payload data type */ uint8_t command_ack_payload; diff --git a/core/MyOTALogging.cpp b/core/MyOTALogging.cpp index 5c3797fab..2e434ca5b 100644 --- a/core/MyOTALogging.cpp +++ b/core/MyOTALogging.cpp @@ -62,7 +62,7 @@ void OTALog(uint8_t logNode, bool enableAck, const char *fmt, ... ) msg.sender = getNodeId(); msg.setDestination(logNode); mSetCommand(msg, C_INTERNAL); - mSetRequestAck(msg, enableAck); + mSetRequestEcho(msg, enableAck); // Send package for (int pos = 0; pos