From d6af13dfc1ef1deae4ef4d9b409ce6e2c8274e9d Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:31:07 +0200 Subject: [PATCH 1/6] cleanup: Supress missing return warnings Rewrite the function with a temporary to avoid the spourious no-return warning. The generated code is *unchanged*. --- Firmware/Filament_sensor.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Firmware/Filament_sensor.cpp b/Firmware/Filament_sensor.cpp index 5b235f121..732ac6247 100644 --- a/Firmware/Filament_sensor.cpp +++ b/Firmware/Filament_sensor.cpp @@ -278,7 +278,9 @@ void IR_sensor_analog::voltUpdate(uint16_t raw) { // to be called from the ADC I } uint16_t IR_sensor_analog::getVoltRaw() { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { return voltRaw; } + uint16_t ret; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { ret = voltRaw; } + return ret; } const char *IR_sensor_analog::getIRVersionText() { @@ -339,7 +341,9 @@ bool IR_sensor_analog::checkVoltage(uint16_t raw) { } bool IR_sensor_analog::getVoltReady() const { - ATOMIC_BLOCK(ATOMIC_RESTORESTATE){ return voltReady; } + bool ret; + ATOMIC_BLOCK(ATOMIC_RESTORESTATE){ ret = voltReady; } + return ret; } void IR_sensor_analog::clearVoltReady(){ From 398a4bf403ddde1ece977730d247be92625cefc3 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:41:00 +0200 Subject: [PATCH 2/6] cleanup: Do not return const values from functions This generates a warning under -Wextra, since in most cases a const value doesn't prevent buggy code (as copies are allowed) while preventing some optimizations (such as move operations) to take place. --- Firmware/mmu2_error_converter.cpp | 14 +++++++------- Firmware/mmu2_error_converter.h | 8 ++++---- Firmware/mmu2_progress_converter.cpp | 6 +++--- Firmware/mmu2_progress_converter.h | 2 +- Firmware/mmu2_reporting.cpp | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Firmware/mmu2_error_converter.cpp b/Firmware/mmu2_error_converter.cpp index fd000226f..a4dd070df 100644 --- a/Firmware/mmu2_error_converter.cpp +++ b/Firmware/mmu2_error_converter.cpp @@ -132,24 +132,24 @@ uint16_t PrusaErrorCode(uint8_t i){ return pgm_read_word(errorCodes + i); } -const char * const PrusaErrorTitle(uint8_t i){ - return (const char * const)pgm_read_ptr(errorTitles + i); +const char * PrusaErrorTitle(uint8_t i){ + return (const char *)pgm_read_ptr(errorTitles + i); } -const char * const PrusaErrorDesc(uint8_t i){ - return (const char * const)pgm_read_ptr(errorDescs + i); +const char * PrusaErrorDesc(uint8_t i){ + return (const char *)pgm_read_ptr(errorDescs + i); } uint8_t PrusaErrorButtons(uint8_t i){ return pgm_read_byte(errorButtons + i); } -const char * const PrusaErrorButtonTitle(uint8_t bi){ +const char * PrusaErrorButtonTitle(uint8_t bi){ // -1 represents the hidden NoOperation button which is not drawn in any way - return (const char * const)pgm_read_ptr(btnOperation + bi - 1); + return (const char *)pgm_read_ptr(btnOperation + bi - 1); } -const char * const PrusaErrorButtonMore(){ +const char * PrusaErrorButtonMore(){ return _R(MSG_BTN_MORE); } diff --git a/Firmware/mmu2_error_converter.h b/Firmware/mmu2_error_converter.h index 597cc35a5..0e158aa2f 100644 --- a/Firmware/mmu2_error_converter.h +++ b/Firmware/mmu2_error_converter.h @@ -11,11 +11,11 @@ uint8_t PrusaErrorCodeIndex(uint16_t ec); /// @returns pointer to a PROGMEM string representing the Title of the Prusa-Error-Codes error /// @param i index of the error - obtained by calling ErrorCodeIndex -const char * const PrusaErrorTitle(uint8_t i); +const char * PrusaErrorTitle(uint8_t i); /// @returns pointer to a PROGMEM string representing the multi-page Description of the Prusa-Error-Codes error /// @param i index of the error - obtained by calling ErrorCodeIndex -const char * const PrusaErrorDesc(uint8_t i); +const char * PrusaErrorDesc(uint8_t i); /// @returns the actual numerical value of the Prusa-Error-Codes error /// @param i index of the error - obtained by calling ErrorCodeIndex @@ -27,10 +27,10 @@ uint8_t PrusaErrorButtons(uint8_t i); /// @returns pointer to a PROGMEM string representing the Title of a button /// @param i index of the error - obtained by calling PrusaErrorButtons + extracting low or high nibble from the Btns pair -const char * const PrusaErrorButtonTitle(uint8_t bi); +const char * PrusaErrorButtonTitle(uint8_t bi); /// @returns pointer to a PROGMEM string representing the "More" button -const char * const PrusaErrorButtonMore(); +const char * PrusaErrorButtonMore(); /// Sets the selected button for later pick-up by the MMU state machine. /// Used to save the GUI selection/decoupling diff --git a/Firmware/mmu2_progress_converter.cpp b/Firmware/mmu2_progress_converter.cpp index b7d3fcf34..b44951385 100644 --- a/Firmware/mmu2_progress_converter.cpp +++ b/Firmware/mmu2_progress_converter.cpp @@ -62,11 +62,11 @@ static const char * const progressTexts[] PROGMEM = { _R(MSG_PROGRESS_FEED_FSENSOR) }; -const char * const ProgressCodeToText(uint16_t pc){ +const char * ProgressCodeToText(uint16_t pc){ // @@TODO ?? a better fallback option? return ( pc <= (sizeof(progressTexts) / sizeof(progressTexts[0])) ) - ? static_cast(pgm_read_ptr(&progressTexts[pc])) - : static_cast(pgm_read_ptr(&progressTexts[0])); + ? static_cast(pgm_read_ptr(&progressTexts[pc])) + : static_cast(pgm_read_ptr(&progressTexts[0])); } } // namespace MMU2 diff --git a/Firmware/mmu2_progress_converter.h b/Firmware/mmu2_progress_converter.h index 72dcc031b..19cb1e3fc 100644 --- a/Firmware/mmu2_progress_converter.h +++ b/Firmware/mmu2_progress_converter.h @@ -4,6 +4,6 @@ namespace MMU2 { -const char * const ProgressCodeToText(uint16_t pc); +const char * ProgressCodeToText(uint16_t pc); } diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 37b316d4f..33b221acc 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -11,7 +11,7 @@ namespace MMU2 { -const char * const ProgressCodeToText(uint16_t pc); // we may join progress convertor and reporter together +const char * ProgressCodeToText(uint16_t pc); // we may join progress convertor and reporter together void BeginReport(CommandInProgress cip, uint16_t ec) { custom_message_type = CustomMsg::MMUProgress; From 6cfe000ac90b79b8fd7ea3687f525da8d3765cba Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:43:53 +0200 Subject: [PATCH 3/6] cleanup: Reorder members to match initialization order --- Firmware/mmu2.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/mmu2.h b/Firmware/mmu2.h index 005653726..08fde19c0 100644 --- a/Firmware/mmu2.h +++ b/Firmware/mmu2.h @@ -279,9 +279,8 @@ private: /// unlike the mid-print ToolChange commands, which only load the first ~30mm and then the G-code takes over. bool loadingToNozzle; - uint8_t retryAttempts; - bool inAutoRetry; + uint8_t retryAttempts; }; /// following Marlin's way of doing stuff - one and only instance of MMU implementation in the code base From 71be6b19d483c30545b30209d672d4fa83035bd1 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:45:59 +0200 Subject: [PATCH 4/6] cleanup: Remove return value from MMU2Serial::write() Removes a missing return warning. Looks like we don't handle overflow at the moment and in all surrounding code, so let's remove the return value for now. --- Firmware/mmu2_serial.cpp | 2 +- Firmware/mmu2_serial.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2_serial.cpp b/Firmware/mmu2_serial.cpp index 5ac8e3e29..f26f44f41 100644 --- a/Firmware/mmu2_serial.cpp +++ b/Firmware/mmu2_serial.cpp @@ -19,7 +19,7 @@ void MMU2Serial::flush() { // @@TODO - clear the output buffer } -size_t MMU2Serial::write(const uint8_t *buffer, size_t size) { +void MMU2Serial::write(const uint8_t *buffer, size_t size) { while(size--){ fputc(*buffer, uart2io); ++buffer; diff --git a/Firmware/mmu2_serial.h b/Firmware/mmu2_serial.h index 176a8f336..43066af18 100644 --- a/Firmware/mmu2_serial.h +++ b/Firmware/mmu2_serial.h @@ -12,7 +12,7 @@ public: void close(); int read(); void flush(); - size_t write(const uint8_t *buffer, size_t size); + void write(const uint8_t *buffer, size_t size); }; extern MMU2Serial mmu2Serial; From b95d508574a1fb182cc801bf3e161bd1be48aea8 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:50:47 +0200 Subject: [PATCH 5/6] cleanup: Remove implicit fallthrough in CRC validation --- Firmware/mmu2_protocol.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Firmware/mmu2_protocol.cpp b/Firmware/mmu2_protocol.cpp index 16fe69f4a..c79443238 100644 --- a/Firmware/mmu2_protocol.cpp +++ b/Firmware/mmu2_protocol.cpp @@ -112,6 +112,10 @@ DecodeStatus Protocol::DecodeRequest(uint8_t c) { rqState = RequestStates::Code; return DecodeStatus::MessageCompleted; } + } else { + requestMsg.code = RequestMsgCodes::unknown; + rqState = RequestStates::Error; + return DecodeStatus::Error; } default: //case error: if (IsNewLine(c)) { From c7b6b9a99bd99a46897a922b6e4c1ec44ffb3f8c Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Fri, 30 Sep 2022 12:55:26 +0200 Subject: [PATCH 6/6] cleanup: Suppress unused argument warnings --- Firmware/mmu2.cpp | 2 ++ Firmware/mmu2_reporting.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Firmware/mmu2.cpp b/Firmware/mmu2.cpp index 95e234e74..365ac4b71 100644 --- a/Firmware/mmu2.cpp +++ b/Firmware/mmu2.cpp @@ -380,6 +380,8 @@ bool MMU2::set_filament_type(uint8_t index, uint8_t type) { return false; // @@TODO - this is not supported in the new MMU yet + index = index; // @@TODO + type = type; // @@TODO // cmd_arg = filamentType; // command(MMU_CMD_F0 + index); diff --git a/Firmware/mmu2_reporting.cpp b/Firmware/mmu2_reporting.cpp index 33b221acc..d63bb681e 100644 --- a/Firmware/mmu2_reporting.cpp +++ b/Firmware/mmu2_reporting.cpp @@ -13,12 +13,12 @@ namespace MMU2 { const char * ProgressCodeToText(uint16_t pc); // we may join progress convertor and reporter together -void BeginReport(CommandInProgress cip, uint16_t ec) { +void BeginReport(CommandInProgress /*cip*/, uint16_t ec) { custom_message_type = CustomMsg::MMUProgress; lcd_setstatuspgm( _T(ProgressCodeToText(ec)) ); } -void EndReport(CommandInProgress cip, uint16_t ec) { +void EndReport(CommandInProgress /*cip*/, uint16_t /*ec*/) { // clear the status msg line - let the printed filename get visible again custom_message_type = CustomMsg::Status; }