From dab26fe50b270050979fddfeff7eaeb6cc772247 Mon Sep 17 00:00:00 2001 From: "D.R.racer" Date: Tue, 21 Jun 2022 07:37:54 +0200 Subject: [PATCH] Report detected MMU version in the Support menu It was just subtly broken, all the functionality had already been implemented. --- Firmware/mmu2.h | 2 +- Firmware/mmu2_protocol_logic.cpp | 9 ++++++--- Firmware/mmu2_protocol_logic.h | 22 ++++++++++++++++++---- Firmware/ultralcd.cpp | 2 +- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 98a9bfea3..1f92ae15a 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -146,7 +146,7 @@ public: /// In the future we'll return the trully detected FW version Version GetMMUFWVersion()const { if( State() == xState::Active ){ - return { 2, 0, 0 }; + return { logic.MmuFwVersionMajor(), logic.MmuFwVersionMinor(), logic.MmuFwVersionBuild() }; } else { return { 0, 0, 0}; } diff --git a/Firmware/mmu2_protocol_logic.cpp b/Firmware/mmu2_protocol_logic.cpp index 20e6754aa..faa172faa 100644 --- a/Firmware/mmu2_protocol_logic.cpp +++ b/Firmware/mmu2_protocol_logic.cpp @@ -145,7 +145,8 @@ StepStatus StartSeq::Step() { // solve initial handshake switch (state) { case State::S0Sent: // received response to S0 - major - if (logic->rsp.paramValue != 2) { + logic->mmuFwVersionMajor = logic->rsp.paramValue; + if (logic->mmuFwVersionMajor != 2) { return VersionMismatch; } logic->dataTO.Reset(); // got meaningful response from the MMU, stop data layer timeout tracking @@ -153,14 +154,16 @@ StepStatus StartSeq::Step() { state = State::S1Sent; break; case State::S1Sent: // received response to S1 - minor - if (logic->rsp.paramValue != 0) { + logic->mmuFwVersionMinor = logic->rsp.paramValue; + if (logic->mmuFwVersionMinor != 0) { return VersionMismatch; } logic->SendMsg(RequestMsg(RequestMsgCodes::Version, 2)); state = State::S2Sent; break; case State::S2Sent: // received response to S2 - revision - if (logic->rsp.paramValue != 0) { + logic->mmuFwVersionBuild = logic->rsp.paramValue; + if (logic->mmuFwVersionBuild != 0) { return VersionMismatch; } // Start General Interrogation after line up. diff --git a/Firmware/mmu2_protocol_logic.h b/Firmware/mmu2_protocol_logic.h index 85632d88c..a9109d750 100644 --- a/Firmware/mmu2_protocol_logic.h +++ b/Firmware/mmu2_protocol_logic.h @@ -227,15 +227,26 @@ public: Buttons Button() const { return buttonCode; } uint8_t CommandInProgress()const; - + inline bool Running()const { return state == State::Running; } - + inline bool FindaPressed() const { return findaPressed; } + inline uint8_t MmuFwVersionMajor() const { + return mmuFwVersionMajor; + } + + inline uint8_t MmuFwVersionMinor() const { + return mmuFwVersionMinor; + } + + inline uint16_t MmuFwVersionBuild() const { + return mmuFwVersionBuild; + } #ifndef UNITTEST private: #endif @@ -305,9 +316,12 @@ private: Buttons buttonCode; ///< Last received button from the MMU. uint8_t lastFSensor; ///< last state of filament sensor - + bool findaPressed; - + + uint8_t mmuFwVersionMajor, mmuFwVersionMinor; + uint16_t mmuFwVersionBuild; + friend class ProtocolLogicPartBase; friend class Stopped; friend class Command; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 25bdcbeb1..4ccf41bcc 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -1706,7 +1706,7 @@ static void lcd_support_menu() { lcd_set_cursor(6, menu_row); MMU2::Version mmu_version = MMU2::mmu2.GetMMUFWVersion(); - if ((mmu_version.major > 0) && (mmu_version.build > 0)) + if (mmu_version.major > 0) lcd_printf_P(PSTR("%d.%d.%d"), mmu_version.major, mmu_version.minor, mmu_version.build); else lcd_puts_P(_i("unknown")); ////MSG_UNKNOWN c=13