diff --git a/Drv/Ports/DataTypes/DataBuffer.hpp b/Drv/Ports/DataTypes/DataBuffer.hpp index 46d01a60c7c..7415fda01d0 100644 --- a/Drv/Ports/DataTypes/DataBuffer.hpp +++ b/Drv/Ports/DataTypes/DataBuffer.hpp @@ -11,7 +11,7 @@ class DataBuffer : public Fw::SerializeBufferBase { enum { DATA_BUFFER_SIZE = 256, SERIALIZED_TYPE_ID = 1010, - SERIALIZED_SIZE = DATA_BUFFER_SIZE + sizeof(FwBuffSizeType) + SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(DATA_BUFFER_SIZE) }; DataBuffer(const U8* args, FwSizeType size); diff --git a/Fw/Cmd/CmdArgBuffer.hpp b/Fw/Cmd/CmdArgBuffer.hpp index b784fe28053..840485fdb73 100644 --- a/Fw/Cmd/CmdArgBuffer.hpp +++ b/Fw/Cmd/CmdArgBuffer.hpp @@ -21,8 +21,9 @@ namespace Fw { class CmdArgBuffer final : public SerializeBufferBase { public: enum { - SERIALIZED_TYPE_ID = FW_TYPEID_CMD_BUFF, //!< type id for CmdArgBuffer - SERIALIZED_SIZE = FW_CMD_ARG_BUFFER_MAX_SIZE + sizeof(I32) //!< size when serialized. Buffer + size of buffer + SERIALIZED_TYPE_ID = FW_TYPEID_CMD_BUFF, //!< type id for CmdArgBuffer + SERIALIZED_SIZE = + STATIC_SERIALIZED_SIZE(FW_CMD_ARG_BUFFER_MAX_SIZE) //!< size when serialized. Buffer + size of buffer }; CmdArgBuffer(const U8* args, FwSizeType size); //!< buffer source constructor diff --git a/Fw/Com/ComBuffer.hpp b/Fw/Com/ComBuffer.hpp index ae2a5f523b6..2ad699450b3 100644 --- a/Fw/Com/ComBuffer.hpp +++ b/Fw/Com/ComBuffer.hpp @@ -21,7 +21,7 @@ class ComBuffer final : public SerializeBufferBase { public: enum { SERIALIZED_TYPE_ID = 1010, - SERIALIZED_SIZE = FW_COM_BUFFER_MAX_SIZE + sizeof(FwBuffSizeType) // size of buffer + storage of size word + SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_COM_BUFFER_MAX_SIZE) // size of buffer + storage of size word }; ComBuffer(const U8* args, FwSizeType size); diff --git a/Fw/Fpy/StatementArgBuffer.hpp b/Fw/Fpy/StatementArgBuffer.hpp index cfeadee6ca1..426cc91bb28 100644 --- a/Fw/Fpy/StatementArgBuffer.hpp +++ b/Fw/Fpy/StatementArgBuffer.hpp @@ -11,7 +11,7 @@ class StatementArgBuffer : public SerializeBufferBase { public: enum { SERIALIZED_TYPE_ID = FW_TYPEID_TLM_BUFF, - SERIALIZED_SIZE = FW_STATEMENT_ARG_BUFFER_MAX_SIZE + sizeof(FwBuffSizeType) + SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_STATEMENT_ARG_BUFFER_MAX_SIZE) }; StatementArgBuffer(const U8* args, FwSizeType size); diff --git a/Fw/Log/LogBuffer.hpp b/Fw/Log/LogBuffer.hpp index be1153bf676..5d5a8d55b21 100644 --- a/Fw/Log/LogBuffer.hpp +++ b/Fw/Log/LogBuffer.hpp @@ -20,7 +20,7 @@ namespace Fw { class LogBuffer final : public SerializeBufferBase { public: - enum { SERIALIZED_TYPE_ID = FW_TYPEID_LOG_BUFF, SERIALIZED_SIZE = FW_LOG_BUFFER_MAX_SIZE + sizeof(FwBuffSizeType) }; + enum { SERIALIZED_TYPE_ID = FW_TYPEID_LOG_BUFF, SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_LOG_BUFFER_MAX_SIZE) }; LogBuffer(const U8* args, FwSizeType size); LogBuffer(); diff --git a/Fw/Prm/PrmBuffer.hpp b/Fw/Prm/PrmBuffer.hpp index 5da565e4fdc..1c46c846c64 100644 --- a/Fw/Prm/PrmBuffer.hpp +++ b/Fw/Prm/PrmBuffer.hpp @@ -27,7 +27,7 @@ class ParamBuffer final : public SerializeBufferBase { public: enum { SERIALIZED_TYPE_ID = FW_TYPEID_PRM_BUFF, - SERIALIZED_SIZE = FW_PARAM_BUFFER_MAX_SIZE + sizeof(FwBuffSizeType) + SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_PARAM_BUFFER_MAX_SIZE) }; ParamBuffer(const U8* args, FwSizeType size); diff --git a/Fw/Sm/SmSignalBuffer.hpp b/Fw/Sm/SmSignalBuffer.hpp index 1465ab51040..41033cf9487 100644 --- a/Fw/Sm/SmSignalBuffer.hpp +++ b/Fw/Sm/SmSignalBuffer.hpp @@ -19,7 +19,7 @@ class SmSignalBuffer final : public SerializeBufferBase { public: enum { SERIALIZED_TYPE_ID = 1010, - SERIALIZED_SIZE = FW_COM_BUFFER_MAX_SIZE + sizeof(FwSizeStoreType) // size of buffer + storage of size word + SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_COM_BUFFER_MAX_SIZE) // size of buffer + storage of size word }; SmSignalBuffer(const U8* args, Serializable::SizeType size); diff --git a/Fw/Tlm/TlmBuffer.hpp b/Fw/Tlm/TlmBuffer.hpp index c17b9884492..b10ee6307af 100644 --- a/Fw/Tlm/TlmBuffer.hpp +++ b/Fw/Tlm/TlmBuffer.hpp @@ -19,7 +19,7 @@ namespace Fw { class TlmBuffer final : public SerializeBufferBase { public: - enum { SERIALIZED_TYPE_ID = FW_TYPEID_TLM_BUFF, SERIALIZED_SIZE = FW_TLM_BUFFER_MAX_SIZE + sizeof(FwBuffSizeType) }; + enum { SERIALIZED_TYPE_ID = FW_TYPEID_TLM_BUFF, SERIALIZED_SIZE = STATIC_SERIALIZED_SIZE(FW_TLM_BUFFER_MAX_SIZE) }; TlmBuffer(const U8* args, FwSizeType size); TlmBuffer(); diff --git a/Fw/Types/Serializable.hpp b/Fw/Types/Serializable.hpp index 56c23f92d4d..70bd8aed18d 100644 --- a/Fw/Types/Serializable.hpp +++ b/Fw/Types/Serializable.hpp @@ -682,6 +682,14 @@ class LinearBufferBase : public SerialBufferBase { LinearBufferBase& operator=(const LinearBufferBase& src); public: + //! \brief Get the static serialized size of a buffer + //! This is the max size of the buffer data plus the size of the stored size + static constexpr Serializable::SizeType STATIC_SERIALIZED_SIZE( + Serializable::SizeType maxSize //!< The maximum buffer data size + ) { + return static_cast(sizeof(FwSizeStoreType)) + maxSize; + } + //! \brief Destructor //! //! Destroys a LinearBufferBase instance. This is a virtual destructor