From 42fa2b0924b4de80ae9a236675c9088f3b6e104d Mon Sep 17 00:00:00 2001 From: espr14 Date: Thu, 1 Jul 2021 13:29:43 +0200 Subject: [PATCH] odometer: Fix storing of axis and filament values --- lib/Marlin/Marlin/src/gcode/gcode.cpp | 4 ++++ src/gui/screen_menu_info.cpp | 4 ++-- src/gui/screen_menu_version_info.cpp | 2 +- src/gui/screen_printing.cpp | 3 +++ src/gui/screen_printing_serial.cpp | 2 ++ src/guiapi/include/MItem_menus.hpp | 20 ++++++++++---------- src/guiapi/src/MItem_menus.cpp | 17 +++++++++-------- src/guiapi/src/MItem_tools.cpp | 4 ++-- src/guiapi/src/window_numb.cpp | 2 +- src/lang/i18n.h | 1 + 10 files changed, 35 insertions(+), 24 deletions(-) diff --git a/lib/Marlin/Marlin/src/gcode/gcode.cpp b/lib/Marlin/Marlin/src/gcode/gcode.cpp index 06168b6437..79e8917f7e 100644 --- a/lib/Marlin/Marlin/src/gcode/gcode.cpp +++ b/lib/Marlin/Marlin/src/gcode/gcode.cpp @@ -47,6 +47,8 @@ GcodeSuite gcode; #include "../Marlin.h" // for idle() and suspend_auto_report +#include "odometer.hpp" + millis_t GcodeSuite::previous_move_ms; // Relative motion mode for each logical axis @@ -121,6 +123,8 @@ void GcodeSuite::get_destination_from_command() { } else destination[i] = current_position[i]; + + Odometer_s::instance().add_value(i, destination[i] - current_position[i]); } #if ENABLED(POWER_LOSS_RECOVERY) && !PIN_EXISTS(POWER_LOSS) diff --git a/src/gui/screen_menu_info.cpp b/src/gui/screen_menu_info.cpp index 4c189938d0..05111048ea 100644 --- a/src/gui/screen_menu_info.cpp +++ b/src/gui/screen_menu_info.cpp @@ -8,9 +8,9 @@ #ifdef _DEBUG using Screen = ScreenMenu; + MI_SUPPORT_disabled, MI_SENSOR_INFO, MI_VERSION_INFO, MI_ODOMETER>; #else -using Screen = ScreenMenu; +using Screen = ScreenMenu; #endif //_DEBUG //cannot move it to header - 'ScreenMenuInfo' has a field 'ScreenMenuInfo::' whose type uses the anonymous namespace [-Wsubobject-linkage] diff --git a/src/gui/screen_menu_version_info.cpp b/src/gui/screen_menu_version_info.cpp index 2f0c74c25b..4e3fdc3da7 100644 --- a/src/gui/screen_menu_version_info.cpp +++ b/src/gui/screen_menu_version_info.cpp @@ -89,7 +89,7 @@ ScreenMenuVersionInfo::ScreenMenuVersionInfo() serial_numbers); } - // this MakeRAM is safe - version_info_str is allocated in RAM for the lifetime of ths + // this MakeRAM is safe - version_info_str is allocated in RAM for the lifetime of this help.SetText(string_view_utf8::MakeRAM((const uint8_t *)version_info_str.data())); } diff --git a/src/gui/screen_printing.cpp b/src/gui/screen_printing.cpp index 4daae32d7c..d2826f2469 100644 --- a/src/gui/screen_printing.cpp +++ b/src/gui/screen_printing.cpp @@ -10,6 +10,7 @@ #include "wui_api.h" #include "../lang/format_print_will_end.hpp" #include "window_dlg_popup.hpp" +#include "odometer.hpp" #ifdef DEBUG_FSENSOR_IN_HEADER #include "filament_sensor.hpp" @@ -553,4 +554,6 @@ void screen_printing_data_t::change_print_state() { set_tune_icon_and_label(); set_stop_icon_and_label(); } + if (st == printing_state_t::PRINTED || st == printing_state_t::PAUSED) + Odometer_s::instance().force_to_eeprom(); } diff --git a/src/gui/screen_printing_serial.cpp b/src/gui/screen_printing_serial.cpp index d19e40c6de..57ebab722d 100644 --- a/src/gui/screen_printing_serial.cpp +++ b/src/gui/screen_printing_serial.cpp @@ -9,6 +9,7 @@ #include "i18n.h" #include "ScreenHandler.hpp" #include "screen_menus.hpp" +#include "odometer.hpp" //octo icon static point_ui16_t pt_ico() { return icon_meas(resource_ptr(IDR_PNG_serial_printing)); } @@ -62,6 +63,7 @@ void screen_printing_serial_data_t::windowEvent(EventLock /*has private ctor*/, marlin_gcode("M104 S0 D0"); /// set temperatures to zero marlin_gcode("M140 S0"); /// set temperatures to zero marlin_gcode("M107"); /// print fan off. + Odometer_s::instance().force_to_eeprom(); return; } if (connection == connection_state_t::disconnected) { diff --git a/src/guiapi/include/MItem_menus.hpp b/src/guiapi/include/MItem_menus.hpp index 68bcfa86e0..230904988c 100644 --- a/src/guiapi/include/MItem_menus.hpp +++ b/src/guiapi/include/MItem_menus.hpp @@ -25,6 +25,16 @@ class MI_SENSOR_INFO : public WI_LABEL_t { virtual void click(IWindowMenu &window_menu) override; }; +class MI_ODOMETER : public WI_LABEL_t { + static constexpr const char *const label = N_("Odometer"); + +public: + MI_ODOMETER(); + +protected: + virtual void click(IWindowMenu &window_menu) override; +}; + class MI_FILAMENT : public WI_LABEL_t { static constexpr const char *const label = N_("Filament"); @@ -205,13 +215,3 @@ class MI_EXPERIMENTAL_SETTINGS : public WI_LABEL_t { protected: virtual void click(IWindowMenu &window_menu) override; }; - -class MI_ODOMETR : public WI_LABEL_t { - static constexpr const char *const label = N_("Odometr"); - -public: - MI_ODOMETR(); - -protected: - virtual void click(IWindowMenu &window_menu) override; -}; diff --git a/src/guiapi/src/MItem_menus.cpp b/src/guiapi/src/MItem_menus.cpp index d9efdc5992..634be67c8c 100644 --- a/src/guiapi/src/MItem_menus.cpp +++ b/src/guiapi/src/MItem_menus.cpp @@ -27,6 +27,15 @@ void MI_SENSOR_INFO::click(IWindowMenu & /*window_menu*/) { Screens::Access()->Open(GetScreenMenuSensorInfo); } +/*****************************************************************************/ +MI_ODOMETER::MI_ODOMETER() + : WI_LABEL_t(_(label), 0, is_enabled_t::yes, is_hidden_t::no) { +} + +void MI_ODOMETER::click(IWindowMenu & /*window_menu*/) { + Screens::Access()->Open(GetScreenMenuOdometer); +} + /*****************************************************************************/ //MI_FILAMENT MI_FILAMENT::MI_FILAMENT() @@ -209,11 +218,3 @@ MI_EXPERIMENTAL_SETTINGS::MI_EXPERIMENTAL_SETTINGS() void MI_EXPERIMENTAL_SETTINGS::click(IWindowMenu & /*window_menu*/) { Screens::Access()->Open(GetScreenMenuExperimentalSettings); } -/*****************************************************************************/ -// MI_ODOMETER -MI_ODOMETR::MI_ODOMETR() - : WI_LABEL_t(_(label), 0, is_enabled_t::yes, is_hidden_t::no) { -} -void MI_ODOMETR::click(IWindowMenu &window_menu) { - Screens::Access()->Open(GetScreenMenuOdometer); -} diff --git a/src/guiapi/src/MItem_tools.cpp b/src/guiapi/src/MItem_tools.cpp index bdc0386a04..77a08dbfb5 100644 --- a/src/guiapi/src/MItem_tools.cpp +++ b/src/guiapi/src/MItem_tools.cpp @@ -440,7 +440,7 @@ void I_MI_Filament::click_at(FILAMENT_t filament_index) { } MI_FILAMENT_SENSOR_STATE::MI_FILAMENT_SENSOR_STATE() - : WI_SWITCH_0_1_NA_t(get_state(), _(label), 0, is_enabled_t::no, is_hidden_t::no) { + : WI_SWITCH_0_1_NA_t(get_state(), _(label), IDR_NULL, is_enabled_t::no, is_hidden_t::no) { } MI_FILAMENT_SENSOR_STATE::state_t MI_FILAMENT_SENSOR_STATE::get_state() { @@ -460,7 +460,7 @@ bool MI_FILAMENT_SENSOR_STATE::StateChanged() { } MI_MINDA::MI_MINDA() - : WI_SWITCH_0_1_NA_t(get_state(), _(label), 0, is_enabled_t::no, is_hidden_t::no) { + : WI_SWITCH_0_1_NA_t(get_state(), _(label), IDR_NULL, is_enabled_t::no, is_hidden_t::no) { } MI_MINDA::state_t MI_MINDA::get_state() { diff --git a/src/guiapi/src/window_numb.cpp b/src/guiapi/src/window_numb.cpp index c43feef674..f38746dd1d 100644 --- a/src/guiapi/src/window_numb.cpp +++ b/src/guiapi/src/window_numb.cpp @@ -73,7 +73,7 @@ window_numb_t::window_numb_t(window_t *parent, Rect16 rect, float value, const c , color_text(GuiDefaults::ColorText) , font(GuiDefaults::Font) , value(value) - , format("%.0f") + , format(frmt == nullptr ? "%.0f" : frmt) , padding(GuiDefaults::Padding) { PrintAsFloat(); } diff --git a/src/lang/i18n.h b/src/lang/i18n.h index 48ab85898d..ec869d4518 100644 --- a/src/lang/i18n.h +++ b/src/lang/i18n.h @@ -56,6 +56,7 @@ #include "translator.hpp" /// Translate the surrounded text. Does not alter the content. Provides proper translation at the output. +/// If translation not available, returns the same text. #define _(String) gettext(String) /// This just marks the text to be translated (extracted by gettext tools). Does not alter its content.