diff --git a/.github/workflows/build-test-rhel8.yml b/.github/workflows/build-test-rhel8.yml index 52bca6b2e54..ce3e311ddc9 100644 --- a/.github/workflows/build-test-rhel8.yml +++ b/.github/workflows/build-test-rhel8.yml @@ -6,7 +6,7 @@ name: CI [RHEL8] # events but only for the master branch on: push: - branches: [ devel, release/**, ci/** ] + branches: [ devel, release/** ] pull_request: # The branches below must be a subset of the branches above branches: [ devel, release/** ] diff --git a/.github/workflows/format-check.yml b/.github/workflows/format-check.yml new file mode 100644 index 00000000000..c639f4443aa --- /dev/null +++ b/.github/workflows/format-check.yml @@ -0,0 +1,38 @@ +name: "Code Format Check" + +on: + push: + branches: [ devel, release/**, ci/** ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ devel, release/** ] + paths-ignore: + - 'docs/**' + - '**.md' + - '.github/actions/spelling/**' + - '.github/ISSUE_TEMPLATE/**' + +jobs: + cpp-formatting: + name: C++ Formatting + runs-on: ubuntu-22.04 + steps: + - name: "Checkout F´ Repository" + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: true + - name: "Setup Python" + uses: actions/setup-python@v5 + with: + python-version: 3.12 + - uses: ./.github/actions/setup + - name: "Check C++ Formatting" + env: + CHECKED_DIRS: >- + Fw/Buffer + Fw/Cmd + Fw/Com + run: | + fprime-util format --check --dirs $CHECKED_DIRS + shell: bash diff --git a/Fw/Buffer/Buffer.cpp b/Fw/Buffer/Buffer.cpp index 8ebc3c53f11..556eb3bf016 100644 --- a/Fw/Buffer/Buffer.cpp +++ b/Fw/Buffer/Buffer.cpp @@ -10,41 +10,28 @@ // // ====================================================================== #include -#include #include +#include #if FW_SERIALIZABLE_TO_STRING - #include +#include #endif #include namespace Fw { -Buffer::Buffer(): Serializable(), - m_serialize_repr(), - m_bufferData(nullptr), - m_size(0), - m_context(0xFFFFFFFF) -{} - -Buffer::Buffer(const Buffer& src) : Serializable(), - m_serialize_repr(), - m_bufferData(src.m_bufferData), - m_size(src.m_size), - m_context(src.m_context) -{ - if(src.m_bufferData != nullptr){ +Buffer::Buffer() : Serializable(), m_serialize_repr(), m_bufferData(nullptr), m_size(0), m_context(0xFFFFFFFF) {} + +Buffer::Buffer(const Buffer& src) + : Serializable(), m_serialize_repr(), m_bufferData(src.m_bufferData), m_size(src.m_size), m_context(src.m_context) { + if (src.m_bufferData != nullptr) { this->m_serialize_repr.setExtBuffer(src.m_bufferData, src.m_size); } } -Buffer::Buffer(U8* data, SizeType size, U32 context) : Serializable(), - m_serialize_repr(), - m_bufferData(data), - m_size(size), - m_context(context) -{ - if(m_bufferData != nullptr){ +Buffer::Buffer(U8* data, SizeType size, U32 context) + : Serializable(), m_serialize_repr(), m_bufferData(data), m_size(size), m_context(context) { + if (m_bufferData != nullptr) { this->m_serialize_repr.setExtBuffer(this->m_bufferData, this->m_size); } } @@ -58,7 +45,8 @@ Buffer& Buffer::operator=(const Buffer& src) { } bool Buffer::operator==(const Buffer& src) const { - return (this->m_bufferData == src.m_bufferData) && (this->m_size == src.m_size) && (this->m_context == src.m_context); + return (this->m_bufferData == src.m_bufferData) && (this->m_size == src.m_size) && + (this->m_context == src.m_context); } bool Buffer::isValid() const { @@ -106,7 +94,8 @@ void Buffer::set(U8* const data, const SizeType size, const U32 context) { Fw::ExternalSerializeBufferWithMemberCopy Buffer::getSerializer() { if (this->isValid()) { - Fw::ExternalSerializeBufferWithMemberCopy esb(this->m_bufferData, static_cast(this->m_size)); + Fw::ExternalSerializeBufferWithMemberCopy esb(this->m_bufferData, + static_cast(this->m_size)); esb.resetSer(); return esb; } else { @@ -116,7 +105,8 @@ Fw::ExternalSerializeBufferWithMemberCopy Buffer::getSerializer() { Fw::ExternalSerializeBufferWithMemberCopy Buffer::getDeserializer() { if (this->isValid()) { - Fw::ExternalSerializeBufferWithMemberCopy esb(this->m_bufferData, static_cast(this->m_size)); + Fw::ExternalSerializeBufferWithMemberCopy esb(this->m_bufferData, + static_cast(this->m_size)); Fw::SerializeStatus stat = esb.setBuffLen(static_cast(this->m_size)); FW_ASSERT(stat == Fw::FW_SERIALIZE_OK); return esb; @@ -187,17 +177,17 @@ Fw::SerializeStatus Buffer::deserialize(Fw::SerializeBufferBase& buffer) { #if FW_SERIALIZABLE_TO_STRING void Buffer::toString(Fw::StringBase& text) const { - static const char * formatString = "(data = %p, size = %u, context = %u)"; + static const char* formatString = "(data = %p, size = %u, context = %u)"; text.format(formatString, this->m_bufferData, this->m_size, this->m_context); } #endif #ifdef BUILD_UT - std::ostream& operator<<(std::ostream& os, const Buffer& obj) { - Fw::String str; - obj.toString(str); - os << str.toChar(); - return os; - } +std::ostream& operator<<(std::ostream& os, const Buffer& obj) { + Fw::String str; + obj.toString(str); + os << str.toChar(); + return os; +} #endif -} // end namespace Fw +} // end namespace Fw diff --git a/Fw/Buffer/Buffer.hpp b/Fw/Buffer/Buffer.hpp index 6dc4ed57fd1..c3e81afb243 100644 --- a/Fw/Buffer/Buffer.hpp +++ b/Fw/Buffer/Buffer.hpp @@ -15,15 +15,17 @@ #include #include #if FW_SERIALIZABLE_TO_STRING - #include - #ifdef BUILD_UT - #include - #include - #endif +#include +#ifdef BUILD_UT +#include +#include +#endif #endif // Forward declaration for UTs -namespace Fw { class BufferTester; } +namespace Fw { +class BufferTester; +} namespace Fw { @@ -43,17 +45,15 @@ namespace Fw { //! prevent excessive copying. //! class Buffer : public Fw::Serializable { + friend class Fw::BufferTester; -friend class Fw::BufferTester; - -public: - + public: //! The size type for a buffer using SizeType = U32; enum { - SERIALIZED_SIZE = sizeof(SizeType) + sizeof(U32) + sizeof(U8*), //!< Size of Fw::Buffer when serialized - NO_CONTEXT = 0xFFFFFFFF //!< Value representing no context + SERIALIZED_SIZE = sizeof(SizeType) + sizeof(U32) + sizeof(U8*), //!< Size of Fw::Buffer when serialized + NO_CONTEXT = 0xFFFFFFFF //!< Value representing no context }; //! Construct a buffer with no context nor data @@ -73,7 +73,7 @@ friend class Fw::BufferTester; //! \param data: data pointer to wrap //! \param size: size of data located at data pointer //! \param context: user-specified context to track creation. Default: no context - Buffer(U8* data, SizeType size, U32 context=NO_CONTEXT); + Buffer(U8* data, SizeType size, U32 context = NO_CONTEXT); //! Assignment operator to set given buffer's members from another without copying wrapped data //! @@ -110,7 +110,6 @@ friend class Fw::BufferTester; //! \return representation of the wrapped data to aid in serializing to it ExternalSerializeBufferWithMemberCopy getSerializer(); - //! Returns a ExternalSerializeBufferWithMemberCopy representation of the wrapped data for deserializing //! //! \warning The entire buffer (up to getSize) is available for deserialization. @@ -138,7 +137,6 @@ friend class Fw::BufferTester; //! \return: status of serialization Fw::SerializeStatus deserialize(Fw::SerializeBufferBase& buffer); - // ---------------------------------------------------------------------- // Accessor functions // ---------------------------------------------------------------------- @@ -175,7 +173,7 @@ friend class Fw::BufferTester; //! \param data: data pointer to wrap //! \param size: size of data located at data pointer //! \param context: user-specified context to track creation. Default: no context - void set(U8* data, SizeType size, U32 context=NO_CONTEXT); + void set(U8* data, SizeType size, U32 context = NO_CONTEXT); #if FW_SERIALIZABLE_TO_STRING || BUILD_UT //! Supports writing this buffer to a string representation @@ -188,13 +186,11 @@ friend class Fw::BufferTester; friend std::ostream& operator<<(std::ostream& os, const Buffer& obj); #endif -private: - Fw::ExternalSerializeBuffer m_serialize_repr; // #include +#include +#include "Fw/Buffer/Buffer.hpp" #include "Fw/Types/test/ut/SerializeBufferBaseTester.hpp" namespace Fw { - class BufferTester{ - - - public: - // ---------------------------------------------------------------------- - // Construction and destruction - // ---------------------------------------------------------------------- - BufferTester() - { - } - - ~BufferTester() - { - } - - // ---------------------------------------------------------------------- - // Tests - // ---------------------------------------------------------------------- - void test_basic() { - U8 data[100]; - U8 faux[100]; - Fw::Buffer buffer; - // Check basic guarantees - ASSERT_EQ(buffer.m_context, Fw::Buffer::NO_CONTEXT); - buffer.setData(data); - buffer.setSize(sizeof(data)); - buffer.setContext(1234); - ASSERT_EQ(buffer.getData(), data); - ASSERT_EQ(buffer.getSize(), sizeof(data)); - ASSERT_EQ(buffer.getContext(), 1234); - - // Test set method is equivalent - Fw::Buffer buffer_set; - buffer_set.set(data, sizeof(data), 1234); - ASSERT_EQ(buffer_set, buffer); - - // Check constructors and assignments - Fw::Buffer buffer_new(buffer); - ASSERT_EQ(buffer_new.getData(), data); - ASSERT_EQ(buffer_new.getSize(), sizeof(data)); - ASSERT_EQ(buffer_new.getContext(), 1234); - ASSERT_EQ(buffer, buffer_new); - - // Creating empty buffer - Fw::Buffer testBuffer(nullptr,0); - ASSERT_EQ(testBuffer.getData(), nullptr); - ASSERT_EQ(testBuffer.getSize(), 0); - - // Assignment operator with transitivity - Fw::Buffer buffer_assignment1, buffer_assignment2; - ASSERT_NE(buffer_assignment1.getData(), data); - ASSERT_NE(buffer_assignment1.getSize(), sizeof(data)); - ASSERT_NE(buffer_assignment1.getContext(), 1234); - ASSERT_NE(buffer_assignment2.getData(), data); - ASSERT_NE(buffer_assignment2.getSize(), sizeof(data)); - ASSERT_NE(buffer_assignment2.getContext(), 1234); - buffer_assignment1 = buffer_assignment2 = buffer; - ASSERT_EQ(buffer_assignment1.getData(), data); - ASSERT_EQ(buffer_assignment1.getSize(), sizeof(data)); - ASSERT_EQ(buffer_assignment1.getContext(), 1234); - ASSERT_EQ(buffer_assignment2.getData(), data); - ASSERT_EQ(buffer_assignment2.getSize(), sizeof(data)); - ASSERT_EQ(buffer_assignment2.getContext(), 1234); - - // Check modifying the copies does not destroy - buffer_new.setSize(0); - buffer_new.setData(faux); - buffer_new.setContext(22222); - buffer_assignment1.setSize(0); - buffer_assignment1.setData(faux); - buffer_assignment1.setContext(22222); - buffer_assignment2.setSize(0); - buffer_assignment2.setData(faux); - buffer_assignment2.setContext(22222); - - ASSERT_EQ(buffer.getData(), data); - ASSERT_EQ(buffer.getSize(), sizeof(data)); - ASSERT_EQ(buffer.getContext(), 1234); - } - - void test_representations() { - U8 data[100]; - Fw::Buffer buffer; - buffer.setData(data); - buffer.setSize(sizeof(data)); - buffer.setContext(1234); - - // Test serialization and that it stops before overflowing - auto serializer = buffer.getSerializer(); - for (U32 i = 0; i < sizeof(data)/4; i++) { - ASSERT_EQ(serializer.serialize(i), Fw::FW_SERIALIZE_OK); - } - Fw::SerializeStatus stat = serializer.serialize(100); - ASSERT_NE(stat, Fw::FW_SERIALIZE_OK); - - // And that another call to repr resets it - serializer.resetSer(); - ASSERT_EQ(serializer.serialize(0), Fw::FW_SERIALIZE_OK); - - // Now deserialize all the things - auto deserializer = buffer.getDeserializer(); - U32 out; - for (U32 i = 0; i < sizeof(data)/4; i++) { - ASSERT_EQ(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); - ASSERT_EQ(i, out); - } - ASSERT_NE(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); - deserializer.setBuffLen(buffer.getSize()); - ASSERT_EQ(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); - ASSERT_EQ(0, out); - } - - void test_serialization() { - U8 data[100]; - U8 wire[100]; - - Fw::Buffer buffer; - buffer.setData(data); - buffer.setSize(sizeof(data)); - buffer.setContext(1234); - - Fw::ExternalSerializeBuffer externalSerializeBuffer(wire, sizeof(wire)); - externalSerializeBuffer.serialize(buffer); - Fw::SerializeBufferBaseTester::verifySerLocLT(externalSerializeBuffer, sizeof(data)); - - Fw::Buffer buffer_new; - externalSerializeBuffer.deserialize(buffer_new); - ASSERT_EQ(buffer_new, buffer); - } - - }; -} +class BufferTester { + public: + // ---------------------------------------------------------------------- + // Construction and destruction + // ---------------------------------------------------------------------- + BufferTester() {} + + ~BufferTester() {} + + // ---------------------------------------------------------------------- + // Tests + // ---------------------------------------------------------------------- + void test_basic() { + U8 data[100]; + U8 faux[100]; + Fw::Buffer buffer; + // Check basic guarantees + ASSERT_EQ(buffer.m_context, Fw::Buffer::NO_CONTEXT); + buffer.setData(data); + buffer.setSize(sizeof(data)); + buffer.setContext(1234); + ASSERT_EQ(buffer.getData(), data); + ASSERT_EQ(buffer.getSize(), sizeof(data)); + ASSERT_EQ(buffer.getContext(), 1234); + + // Test set method is equivalent + Fw::Buffer buffer_set; + buffer_set.set(data, sizeof(data), 1234); + ASSERT_EQ(buffer_set, buffer); + + // Check constructors and assignments + Fw::Buffer buffer_new(buffer); + ASSERT_EQ(buffer_new.getData(), data); + ASSERT_EQ(buffer_new.getSize(), sizeof(data)); + ASSERT_EQ(buffer_new.getContext(), 1234); + ASSERT_EQ(buffer, buffer_new); + + // Creating empty buffer + Fw::Buffer testBuffer(nullptr, 0); + ASSERT_EQ(testBuffer.getData(), nullptr); + ASSERT_EQ(testBuffer.getSize(), 0); + + // Assignment operator with transitivity + Fw::Buffer buffer_assignment1, buffer_assignment2; + ASSERT_NE(buffer_assignment1.getData(), data); + ASSERT_NE(buffer_assignment1.getSize(), sizeof(data)); + ASSERT_NE(buffer_assignment1.getContext(), 1234); + ASSERT_NE(buffer_assignment2.getData(), data); + ASSERT_NE(buffer_assignment2.getSize(), sizeof(data)); + ASSERT_NE(buffer_assignment2.getContext(), 1234); + buffer_assignment1 = buffer_assignment2 = buffer; + ASSERT_EQ(buffer_assignment1.getData(), data); + ASSERT_EQ(buffer_assignment1.getSize(), sizeof(data)); + ASSERT_EQ(buffer_assignment1.getContext(), 1234); + ASSERT_EQ(buffer_assignment2.getData(), data); + ASSERT_EQ(buffer_assignment2.getSize(), sizeof(data)); + ASSERT_EQ(buffer_assignment2.getContext(), 1234); + + // Check modifying the copies does not destroy + buffer_new.setSize(0); + buffer_new.setData(faux); + buffer_new.setContext(22222); + buffer_assignment1.setSize(0); + buffer_assignment1.setData(faux); + buffer_assignment1.setContext(22222); + buffer_assignment2.setSize(0); + buffer_assignment2.setData(faux); + buffer_assignment2.setContext(22222); + + ASSERT_EQ(buffer.getData(), data); + ASSERT_EQ(buffer.getSize(), sizeof(data)); + ASSERT_EQ(buffer.getContext(), 1234); + } + + void test_representations() { + U8 data[100]; + Fw::Buffer buffer; + buffer.setData(data); + buffer.setSize(sizeof(data)); + buffer.setContext(1234); + + // Test serialization and that it stops before overflowing + auto serializer = buffer.getSerializer(); + for (U32 i = 0; i < sizeof(data) / 4; i++) { + ASSERT_EQ(serializer.serialize(i), Fw::FW_SERIALIZE_OK); + } + Fw::SerializeStatus stat = serializer.serialize(100); + ASSERT_NE(stat, Fw::FW_SERIALIZE_OK); + + // And that another call to repr resets it + serializer.resetSer(); + ASSERT_EQ(serializer.serialize(0), Fw::FW_SERIALIZE_OK); + + // Now deserialize all the things + auto deserializer = buffer.getDeserializer(); + U32 out; + for (U32 i = 0; i < sizeof(data) / 4; i++) { + ASSERT_EQ(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); + ASSERT_EQ(i, out); + } + ASSERT_NE(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); + deserializer.setBuffLen(buffer.getSize()); + ASSERT_EQ(deserializer.deserialize(out), Fw::FW_SERIALIZE_OK); + ASSERT_EQ(0, out); + } + + void test_serialization() { + U8 data[100]; + U8 wire[100]; + + Fw::Buffer buffer; + buffer.setData(data); + buffer.setSize(sizeof(data)); + buffer.setContext(1234); + + Fw::ExternalSerializeBuffer externalSerializeBuffer(wire, sizeof(wire)); + externalSerializeBuffer.serialize(buffer); + Fw::SerializeBufferBaseTester::verifySerLocLT(externalSerializeBuffer, sizeof(data)); + + Fw::Buffer buffer_new; + externalSerializeBuffer.deserialize(buffer_new); + ASSERT_EQ(buffer_new, buffer); + } +}; +} // namespace Fw TEST(Nominal, BasicBuffer) { Fw::BufferTester tester; @@ -155,8 +148,7 @@ TEST(Nominal, Serialization) { tester.test_serialization(); } - -int main(int argc, char **argv) { +int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } diff --git a/Fw/Cmd/CmdArgBuffer.cpp b/Fw/Cmd/CmdArgBuffer.cpp index c03b8d58021..189d23650af 100644 --- a/Fw/Cmd/CmdArgBuffer.cpp +++ b/Fw/Cmd/CmdArgBuffer.cpp @@ -3,43 +3,40 @@ namespace Fw { - CmdArgBuffer::CmdArgBuffer(const U8 *args, FwSizeType size) { - SerializeStatus stat = this->setBuff(args,size); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); - } +CmdArgBuffer::CmdArgBuffer(const U8* args, FwSizeType size) { + SerializeStatus stat = this->setBuff(args, size); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); +} - CmdArgBuffer::CmdArgBuffer() { - } +CmdArgBuffer::CmdArgBuffer() {} - CmdArgBuffer::~CmdArgBuffer() { - } +CmdArgBuffer::~CmdArgBuffer() {} - CmdArgBuffer::CmdArgBuffer(const CmdArgBuffer& other) : Fw::SerializeBufferBase() { - SerializeStatus stat = this->setBuff(other.m_bufferData,other.getBuffLength()); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); - } - - CmdArgBuffer& CmdArgBuffer::operator=(const CmdArgBuffer& other) { - if(this == &other) { - return *this; - } +CmdArgBuffer::CmdArgBuffer(const CmdArgBuffer& other) : Fw::SerializeBufferBase() { + SerializeStatus stat = this->setBuff(other.m_bufferData, other.getBuffLength()); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); +} - SerializeStatus stat = this->setBuff(other.m_bufferData,other.getBuffLength()); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); +CmdArgBuffer& CmdArgBuffer::operator=(const CmdArgBuffer& other) { + if (this == &other) { return *this; } - FwSizeType CmdArgBuffer::getBuffCapacity() const { - return sizeof(this->m_bufferData); - } + SerializeStatus stat = this->setBuff(other.m_bufferData, other.getBuffLength()); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); + return *this; +} - const U8* CmdArgBuffer::getBuffAddr() const { - return this->m_bufferData; - } +FwSizeType CmdArgBuffer::getBuffCapacity() const { + return sizeof(this->m_bufferData); +} - U8* CmdArgBuffer::getBuffAddr() { - return this->m_bufferData; - } +const U8* CmdArgBuffer::getBuffAddr() const { + return this->m_bufferData; +} +U8* CmdArgBuffer::getBuffAddr() { + return this->m_bufferData; } +} // namespace Fw diff --git a/Fw/Cmd/CmdArgBuffer.hpp b/Fw/Cmd/CmdArgBuffer.hpp index 67454b683db..f1d8ad5ce6c 100644 --- a/Fw/Cmd/CmdArgBuffer.hpp +++ b/Fw/Cmd/CmdArgBuffer.hpp @@ -13,33 +13,32 @@ #define FW_CMD_ARG_BUFFER_HPP #include -#include #include +#include 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 - }; +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 + }; - CmdArgBuffer(const U8 *args, FwSizeType size); //!< buffer source constructor - CmdArgBuffer(); //!< default constructor - CmdArgBuffer(const CmdArgBuffer& other); //!< other arg buffer constructor - virtual ~CmdArgBuffer(); //!< destructor - CmdArgBuffer& operator=(const CmdArgBuffer& other); //!< Equal operator + CmdArgBuffer(const U8* args, FwSizeType size); //!< buffer source constructor + CmdArgBuffer(); //!< default constructor + CmdArgBuffer(const CmdArgBuffer& other); //!< other arg buffer constructor + virtual ~CmdArgBuffer(); //!< destructor + CmdArgBuffer& operator=(const CmdArgBuffer& other); //!< Equal operator - FwSizeType getBuffCapacity() const; //!< return capacity of buffer (how much it can hold) - U8* getBuffAddr(); //!< return address of buffer (non const version) - const U8* getBuffAddr() const; //!< return address of buffer (const version) + FwSizeType getBuffCapacity() const; //!< return capacity of buffer (how much it can hold) + U8* getBuffAddr(); //!< return address of buffer (non const version) + const U8* getBuffAddr() const; //!< return address of buffer (const version) - private: - U8 m_bufferData[FW_CMD_ARG_BUFFER_MAX_SIZE]; //!< command argument buffer - }; + private: + U8 m_bufferData[FW_CMD_ARG_BUFFER_MAX_SIZE]; //!< command argument buffer +}; -} +} // namespace Fw #endif diff --git a/Fw/Cmd/CmdPacket.cpp b/Fw/Cmd/CmdPacket.cpp index eef2690fef5..ef0bc3a2794 100644 --- a/Fw/Cmd/CmdPacket.cpp +++ b/Fw/Cmd/CmdPacket.cpp @@ -11,55 +11,49 @@ namespace Fw { - CmdPacket::CmdPacket() : m_opcode(0) { - this->m_type = ComPacketType::FW_PACKET_COMMAND; - } - - CmdPacket::~CmdPacket() { - } +CmdPacket::CmdPacket() : m_opcode(0) { + this->m_type = ComPacketType::FW_PACKET_COMMAND; +} - SerializeStatus CmdPacket::serialize(SerializeBufferBase& buffer) const { +CmdPacket::~CmdPacket() {} - // Shouldn't be called - FW_ASSERT(0); - return FW_SERIALIZE_OK; // for compiler +SerializeStatus CmdPacket::serialize(SerializeBufferBase& buffer) const { + // Shouldn't be called + FW_ASSERT(0); + return FW_SERIALIZE_OK; // for compiler +} +SerializeStatus CmdPacket::deserialize(SerializeBufferBase& buffer) { + SerializeStatus stat = ComPacket::deserializeBase(buffer); + if (stat != FW_SERIALIZE_OK) { + return stat; } - SerializeStatus CmdPacket::deserialize(SerializeBufferBase& buffer) { - - SerializeStatus stat = ComPacket::deserializeBase(buffer); - if (stat != FW_SERIALIZE_OK) { - return stat; - } - - // double check packet type - if (this->m_type != ComPacketType::FW_PACKET_COMMAND) { - return FW_DESERIALIZE_TYPE_MISMATCH; - } - - stat = buffer.deserialize(this->m_opcode); - if (stat != FW_SERIALIZE_OK) { - return stat; - } - - // if non-empty, copy data - if (buffer.getBuffLeft()) { - // copy the serialized arguments to the buffer - stat = buffer.copyRaw(this->m_argBuffer,buffer.getBuffLeft()); - } + // double check packet type + if (this->m_type != ComPacketType::FW_PACKET_COMMAND) { + return FW_DESERIALIZE_TYPE_MISMATCH; + } + stat = buffer.deserialize(this->m_opcode); + if (stat != FW_SERIALIZE_OK) { return stat; } - FwOpcodeType CmdPacket::getOpCode() const { - return this->m_opcode; + // if non-empty, copy data + if (buffer.getBuffLeft()) { + // copy the serialized arguments to the buffer + stat = buffer.copyRaw(this->m_argBuffer, buffer.getBuffLeft()); } - CmdArgBuffer& CmdPacket::getArgBuffer() { - return this->m_argBuffer; - } + return stat; +} +FwOpcodeType CmdPacket::getOpCode() const { + return this->m_opcode; +} +CmdArgBuffer& CmdPacket::getArgBuffer() { + return this->m_argBuffer; +} } /* namespace Fw */ diff --git a/Fw/Cmd/CmdPacket.hpp b/Fw/Cmd/CmdPacket.hpp index c2a9ed8f43f..93f0fd1f43b 100644 --- a/Fw/Cmd/CmdPacket.hpp +++ b/Fw/Cmd/CmdPacket.hpp @@ -8,26 +8,25 @@ #ifndef CMDPACKET_HPP_ #define CMDPACKET_HPP_ -#include #include +#include namespace Fw { - class CmdPacket : public ComPacket { - public: - - CmdPacket(); - virtual ~CmdPacket(); +class CmdPacket : public ComPacket { + public: + CmdPacket(); + virtual ~CmdPacket(); - SerializeStatus serialize(SerializeBufferBase& buffer) const; //!< serialize contents - SerializeStatus deserialize(SerializeBufferBase& buffer); - FwOpcodeType getOpCode() const; - CmdArgBuffer& getArgBuffer(); + SerializeStatus serialize(SerializeBufferBase& buffer) const; //!< serialize contents + SerializeStatus deserialize(SerializeBufferBase& buffer); + FwOpcodeType getOpCode() const; + CmdArgBuffer& getArgBuffer(); - protected: - FwOpcodeType m_opcode; - CmdArgBuffer m_argBuffer; - }; + protected: + FwOpcodeType m_opcode; + CmdArgBuffer m_argBuffer; +}; } /* namespace Fw */ diff --git a/Fw/Com/ComBuffer.cpp b/Fw/Com/ComBuffer.cpp index 4bcd3070586..00e1dddb088 100644 --- a/Fw/Com/ComBuffer.cpp +++ b/Fw/Com/ComBuffer.cpp @@ -3,43 +3,40 @@ namespace Fw { - ComBuffer::ComBuffer(const U8 *args, FwSizeType size) { - SerializeStatus stat = SerializeBufferBase::setBuff(args,size); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); - } +ComBuffer::ComBuffer(const U8* args, FwSizeType size) { + SerializeStatus stat = SerializeBufferBase::setBuff(args, size); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); +} - ComBuffer::ComBuffer() { - } +ComBuffer::ComBuffer() {} - ComBuffer::~ComBuffer() { - } +ComBuffer::~ComBuffer() {} - ComBuffer::ComBuffer(const ComBuffer& other) : Fw::SerializeBufferBase() { - SerializeStatus stat = SerializeBufferBase::setBuff(other.m_bufferData,other.getBuffLength()); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); - } - - ComBuffer& ComBuffer::operator=(const ComBuffer& other) { - if(this == &other) { - return *this; - } +ComBuffer::ComBuffer(const ComBuffer& other) : Fw::SerializeBufferBase() { + SerializeStatus stat = SerializeBufferBase::setBuff(other.m_bufferData, other.getBuffLength()); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); +} - SerializeStatus stat = SerializeBufferBase::setBuff(other.m_bufferData,other.getBuffLength()); - FW_ASSERT(FW_SERIALIZE_OK == stat,static_cast(stat)); +ComBuffer& ComBuffer::operator=(const ComBuffer& other) { + if (this == &other) { return *this; } - FwSizeType ComBuffer::getBuffCapacity() const { - return sizeof(this->m_bufferData); - } + SerializeStatus stat = SerializeBufferBase::setBuff(other.m_bufferData, other.getBuffLength()); + FW_ASSERT(FW_SERIALIZE_OK == stat, static_cast(stat)); + return *this; +} - const U8* ComBuffer::getBuffAddr() const { - return this->m_bufferData; - } +FwSizeType ComBuffer::getBuffCapacity() const { + return sizeof(this->m_bufferData); +} - U8* ComBuffer::getBuffAddr() { - return this->m_bufferData; - } +const U8* ComBuffer::getBuffAddr() const { + return this->m_bufferData; +} +U8* ComBuffer::getBuffAddr() { + return this->m_bufferData; } +} // namespace Fw diff --git a/Fw/Com/ComBuffer.hpp b/Fw/Com/ComBuffer.hpp index e13a31aff70..74a63dc5457 100644 --- a/Fw/Com/ComBuffer.hpp +++ b/Fw/Com/ComBuffer.hpp @@ -17,28 +17,27 @@ namespace Fw { - 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 - }; - - ComBuffer(const U8 *args, FwSizeType size); - ComBuffer(); - ComBuffer(const ComBuffer& other); - virtual ~ComBuffer(); - ComBuffer& operator=(const ComBuffer& other); - - FwSizeType getBuffCapacity() const; // !< returns capacity, not current size, of buffer - U8* getBuffAddr(); - const U8* getBuffAddr() const; - - private: - U8 m_bufferData[FW_COM_BUFFER_MAX_SIZE]; // packet data buffer +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 }; -} + ComBuffer(const U8* args, FwSizeType size); + ComBuffer(); + ComBuffer(const ComBuffer& other); + virtual ~ComBuffer(); + ComBuffer& operator=(const ComBuffer& other); + + FwSizeType getBuffCapacity() const; // !< returns capacity, not current size, of buffer + U8* getBuffAddr(); + const U8* getBuffAddr() const; + + private: + U8 m_bufferData[FW_COM_BUFFER_MAX_SIZE]; // packet data buffer +}; + +} // namespace Fw #endif diff --git a/Fw/Com/ComPacket.cpp b/Fw/Com/ComPacket.cpp index 222c6887d28..c3f715d2eab 100644 --- a/Fw/Com/ComPacket.cpp +++ b/Fw/Com/ComPacket.cpp @@ -9,24 +9,21 @@ namespace Fw { - ComPacket::ComPacket() : m_type(ComPacketType::FW_PACKET_UNKNOWN) { - } +ComPacket::ComPacket() : m_type(ComPacketType::FW_PACKET_UNKNOWN) {} - ComPacket::~ComPacket() { - } +ComPacket::~ComPacket() {} - SerializeStatus ComPacket::serializeBase(SerializeBufferBase& buffer) const { - return buffer.serialize(static_cast(this->m_type)); - } +SerializeStatus ComPacket::serializeBase(SerializeBufferBase& buffer) const { + return buffer.serialize(static_cast(this->m_type)); +} - SerializeStatus ComPacket::deserializeBase(SerializeBufferBase& buffer) { - FwPacketDescriptorType serVal; - SerializeStatus stat = buffer.deserialize(serVal); - if (FW_SERIALIZE_OK == stat) { - this->m_type = static_cast(serVal); - } - return stat; +SerializeStatus ComPacket::deserializeBase(SerializeBufferBase& buffer) { + FwPacketDescriptorType serVal; + SerializeStatus stat = buffer.deserialize(serVal); + if (FW_SERIALIZE_OK == stat) { + this->m_type = static_cast(serVal); } - + return stat; +} } /* namespace Fw */ diff --git a/Fw/Com/ComPacket.hpp b/Fw/Com/ComPacket.hpp index 8e328b13d4a..a5be0c522c4 100644 --- a/Fw/Com/ComPacket.hpp +++ b/Fw/Com/ComPacket.hpp @@ -16,20 +16,21 @@ namespace Fw { - // This type is defined in config/ComCfg.fpp - using ComPacketType = ComCfg::APID::T; - - class ComPacket: public Serializable { - public: - - ComPacket(); - virtual ~ComPacket(); - - protected: - ComPacketType m_type; - SerializeStatus serializeBase(SerializeBufferBase& buffer) const ; // called by derived classes to serialize common fields - SerializeStatus deserializeBase(SerializeBufferBase& buffer); // called by derived classes to deserialize common fields - }; +// This type is defined in config/ComCfg.fpp +using ComPacketType = ComCfg::APID::T; + +class ComPacket : public Serializable { + public: + ComPacket(); + virtual ~ComPacket(); + + protected: + ComPacketType m_type; + SerializeStatus serializeBase( + SerializeBufferBase& buffer) const; // called by derived classes to serialize common fields + SerializeStatus deserializeBase( + SerializeBufferBase& buffer); // called by derived classes to deserialize common fields +}; } /* namespace Fw */ diff --git a/requirements.txt b/requirements.txt index b81ff2932fb..3e0475930ef 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,8 +8,9 @@ Brotli==1.1.0 certifi==2024.8.30 chardet==5.2.0 charset-normalizer==3.4.0 +# no pre-built wheels for armv7l - only needed for code formatting so skip it on armv7l +clang-format==20.1.6 ; platform_machine != "armv7l" click==8.1.7 -# CMake versions prior to 3.24.2 were not signed correctly for modern macOS versions cmake==3.26.0 colorlog==6.8.2 cookiecutter==2.6.0 @@ -36,7 +37,7 @@ fprime-fpp-to-json==3.0.0a12 fprime-fpp-to-xml==3.0.0a12 fprime-fpp-to-layout==3.0.0a12 fprime-gds==4.0.0a3 -fprime-tools==4.0.0a1 +fprime-tools==4.0.0a2 fprime-visual==1.0.2 gcovr==8.2 idna==3.10