From 3163f5c1e348f53fcbfff2527409bcec74d4d2ac Mon Sep 17 00:00:00 2001 From: Nav Date: Sun, 27 Feb 2022 23:33:45 +0000 Subject: [PATCH] More tidying of EDBG AVR commands frames --- .../AVR8Generic/Avr8GenericCommandFrame.hpp | 4 +- .../AVR/CommandFrames/AvrCommandFrame.hpp | 56 +++++-------------- .../Discovery/DiscoveryCommandFrame.hpp | 4 +- .../HouseKeeping/HouseKeepingCommandFrame.hpp | 4 +- 4 files changed, 17 insertions(+), 51 deletions(-) diff --git a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AVR8Generic/Avr8GenericCommandFrame.hpp b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AVR8Generic/Avr8GenericCommandFrame.hpp index 84f5dbb9..6e5b701e 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AVR8Generic/Avr8GenericCommandFrame.hpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AVR8Generic/Avr8GenericCommandFrame.hpp @@ -13,8 +13,6 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames public: using ResponseFrameType = ResponseFrames::Avr8Generic::Avr8GenericResponseFrame; - Avr8GenericCommandFrame() { - this->setProtocolHandlerId(ProtocolHandlerId::AVR8_GENERIC); - } + Avr8GenericCommandFrame(): AvrCommandFrame(ProtocolHandlerId::AVR8_GENERIC) {} }; } diff --git a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AvrCommandFrame.hpp b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AvrCommandFrame.hpp index 142849bd..f94e326f 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AvrCommandFrame.hpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/AvrCommandFrame.hpp @@ -47,11 +47,10 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr "Invalid payload container type - must be an std::array or an std::vector" ); - public: using ResponseFrameType = AvrResponseFrame; - AvrCommandFrame() { + explicit AvrCommandFrame(ProtocolHandlerId protocolHandlerId): protocolHandlerId(protocolHandlerId) { if (LAST_SEQUENCE_ID < std::numeric_limits::max()) { this->sequenceId = ++(LAST_SEQUENCE_ID); @@ -69,49 +68,28 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr AvrCommandFrame& operator = (const AvrCommandFrame& other) = default; AvrCommandFrame& operator = (AvrCommandFrame&& other) noexcept = default; - [[nodiscard]] unsigned char getProtocolVersion() const { - return this->protocolVersion; - } - - void setProtocolVersion(unsigned char protocolVersion) { - this->protocolVersion = protocolVersion; - } - - [[nodiscard]] std::uint16_t getSequenceId() const { - return this->sequenceId; - } - - [[nodiscard]] ProtocolHandlerId getProtocolHandlerId() const { - return this->protocolHandlerID; - } - - void setProtocolHandlerId(ProtocolHandlerId protocolHandlerId) { - this->protocolHandlerID = protocolHandlerId; - } - - void setProtocolHandlerId(unsigned char protocolHandlerId) { - this->protocolHandlerID = static_cast(protocolHandlerId); - } - [[nodiscard]] virtual const PayloadContainerType& getPayload() const { return this->payload; }; /** - * Converts the command frame into a container of unsigned char - a raw buffer to send to the EDBG device. + * Converts the command frame into a container of unsigned char - a raw buffer to include in an AVR + * command packet, for sending to the EDBG device. + * + * See AvrCommandFrame::generateAvrCommands() and the AvrCommand class for more. * * @return */ [[nodiscard]] auto getRawCommandFrame() const { auto rawCommand = std::vector(5); - rawCommand[0] = this->SOF; - rawCommand[1] = this->getProtocolVersion(); + rawCommand[0] = 0x0E; // Start of frame + rawCommand[1] = 0x00; // Protocol version - rawCommand[2] = static_cast(this->getSequenceId()); - rawCommand[3] = static_cast(this->getSequenceId() >> 8); + rawCommand[2] = static_cast(this->sequenceId); + rawCommand[3] = static_cast(this->sequenceId >> 8); - rawCommand[4] = static_cast(this->getProtocolHandlerId()); + rawCommand[4] = static_cast(this->protocolHandlerId); if (!this->payload.empty()) { rawCommand.insert( @@ -171,22 +149,16 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr } protected: - PayloadContainerType payload; - - private: - unsigned char SOF = 0x0E; - - unsigned char protocolVersion = 0x00; - /** - * Incrementing from 0x00 + * Incrementing from 0 */ std::uint16_t sequenceId = 0; /** * Destination sub-protocol handler ID */ - ProtocolHandlerId protocolHandlerID = ProtocolHandlerId::DISCOVERY; - }; + ProtocolHandlerId protocolHandlerId = ProtocolHandlerId::DISCOVERY; + PayloadContainerType payload; + }; } diff --git a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/Discovery/DiscoveryCommandFrame.hpp b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/Discovery/DiscoveryCommandFrame.hpp index 2aa44b76..472300df 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/Discovery/DiscoveryCommandFrame.hpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/Discovery/DiscoveryCommandFrame.hpp @@ -40,8 +40,6 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames public: using ResponseFrameType = ResponseFrames::DiscoveryResponseFrame; - DiscoveryCommandFrame() { - this->setProtocolHandlerId(ProtocolHandlerId::DISCOVERY); - } + DiscoveryCommandFrame(): AvrCommandFrame(ProtocolHandlerId::DISCOVERY) {} }; } diff --git a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/HouseKeeping/HouseKeepingCommandFrame.hpp b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/HouseKeeping/HouseKeepingCommandFrame.hpp index 7eb24107..4cb441e0 100644 --- a/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/HouseKeeping/HouseKeepingCommandFrame.hpp +++ b/src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/HouseKeeping/HouseKeepingCommandFrame.hpp @@ -25,8 +25,6 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames class HouseKeepingCommandFrame: public AvrCommandFrame { public: - HouseKeepingCommandFrame() { - this->setProtocolHandlerId(ProtocolHandlerId::HOUSE_KEEPING); - } + HouseKeepingCommandFrame(): AvrCommandFrame(ProtocolHandlerId::HOUSE_KEEPING) {} }; }