From 29d1052f0e688ed1005d6097099db523594ffd5f Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 11 Jul 2018 21:58:49 +0200 Subject: [PATCH 01/18] Save 80B of flash and 8B of RAM and fix compiler warning: sketch/adc.c: In function 'adc_init': sketch/adc.c:20:2: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] printf(("adc_init\n")); ^ sketch/adc.c:20:2: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default] --- Firmware/adc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/adc.c b/Firmware/adc.c index 5cb88b79..1798b083 100644 --- a/Firmware/adc.c +++ b/Firmware/adc.c @@ -1,8 +1,9 @@ //adc.c #include "adc.h" +#include #include - +#include uint8_t adc_state; uint8_t adc_count; @@ -17,7 +18,7 @@ uint16_t adc_sim_mask; void adc_init(void) { - printf(("adc_init\n")); + printf_P(PSTR("adc_init\n")); adc_sim_mask = 0x00; ADCSRA |= (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); ADMUX |= (1 << REFS0); From 2b5e63eb7ffe146da7283d95f37eb0e3c49918eb Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 17:23:50 +0200 Subject: [PATCH 02/18] Fix compiler warnings in language.c and document _SEC_LANG_TABLE macro. --- Firmware/language.c | 6 ++-- Firmware/language.h | 69 +++++++++++++++++++++++++++------------------ 2 files changed, 44 insertions(+), 31 deletions(-) diff --git a/Firmware/language.c b/Firmware/language.c index ca3b9e88..79b6cb0a 100644 --- a/Firmware/language.c +++ b/Firmware/language.c @@ -63,7 +63,7 @@ uint8_t lang_select(uint8_t lang) if (lang_check(_SEC_LANG_TABLE)) if (pgm_read_dword(((uint32_t*)(_SEC_LANG_TABLE + 12))) == pgm_read_dword(((uint32_t*)(_PRI_LANG_SIGNATURE)))) //signature valid { - lang_table = _SEC_LANG_TABLE; // set table pointer + lang_table = (lang_table_t*)(_SEC_LANG_TABLE); // set table pointer lang_selected = lang; // set language id } } @@ -138,7 +138,7 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off if (lang == LANG_ID_SEC) { uint16_t ui = _SEC_LANG_TABLE; //table pointer - memcpy_P(header, ui, sizeof(lang_table_header_t)); //read table header from progmem + memcpy_P(header, (lang_table_t*)(_SEC_LANG_TABLE), sizeof(lang_table_header_t)); //read table header from progmem if (offset) *offset = ui; return (header->magic == LANG_MAGIC)?1:0; //return 1 if magic valid } @@ -147,7 +147,7 @@ uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* off lang--; while (1) { - w25x20cl_rd_data(addr, header, sizeof(lang_table_header_t)); //read table header from xflash + w25x20cl_rd_data(addr, (uint8_t*)(header), sizeof(lang_table_header_t)); //read table header from xflash if (header->magic != LANG_MAGIC) break; //break if not valid if (offset) *offset = addr; if (--lang == 0) return 1; diff --git a/Firmware/language.h b/Firmware/language.h index 569d9f9e..f0cff9a1 100644 --- a/Firmware/language.h +++ b/Firmware/language.h @@ -1,3 +1,4 @@ +/** @file */ //language.h #ifndef LANGUAGE_H #define LANGUAGE_H @@ -22,11 +23,14 @@ #define STRINGIFY_(n) #n #define STRINGIFY(n) STRINGIFY_(n) -//section progmem0 will be used for localized translated strings +/** @def PROGMEM_I2 + * @brief section progmem0 will be used for localized translated strings */ #define PROGMEM_I2 __attribute__((section(".progmem0"))) -//section progmem1 will be used for localized strings in english +/** @def PROGMEM_I1 + * @brief section progmem1 will be used for localized strings in english */ #define PROGMEM_I1 __attribute__((section(".progmem1"))) -//section progmem2 will be used for not localized strings in english +/** @def PROGMEM_N1 + * @brief section progmem2 will be used for not localized strings in english */ #define PROGMEM_N1 __attribute__((section(".progmem2"))) #if (LANG_MODE == 0) //primary language only @@ -43,7 +47,7 @@ #define _N(s) (__extension__({static const char __c[] PROGMEM_N1 = s; &__c[0];})) #define _n(s) _N(s) -//lang_table_header_t structure - (size= 16byte) +/** @brief lang_table_header_t structure - (size= 16byte) */ typedef struct { uint32_t magic; //+0 @@ -54,67 +58,76 @@ typedef struct uint32_t signature; //+12 } lang_table_header_t; -//lang_table_t structure - (size= 16byte + 2*count) +/** @brief lang_table_t structure - (size= 16byte + 2*count) */ typedef struct { lang_table_header_t header; uint16_t table[]; } lang_table_t; -// Language indices into their particular symbol tables. +/** @name Language indices into their particular symbol tables.*/ +///@{ #define LANG_ID_PRI 0 #define LANG_ID_SEC 1 +///@} -// Language is not defined and it shall be selected from the menu. +/** @def LANG_ID_FORCE_SELECTION + * @brief Language is not defined and it shall be selected from the menu.*/ #define LANG_ID_FORCE_SELECTION 254 -// Language is not defined on a virgin RAMBo board. +/** @def LANG_ID_UNDEFINED + * @brief Language is not defined on a virgin RAMBo board. */ #define LANG_ID_UNDEFINED 255 -// Default language ID, if no language is selected. +/** @def LANG_ID_DEFAULT + * @brief Default language ID, if no language is selected. */ #define LANG_ID_DEFAULT LANG_ID_PRI -// Magic number at begin of lang table. +/** @def LANG_MAGIC + * @brief Magic number at begin of lang table. */ #define LANG_MAGIC 0x4bb45aa5 -// Language codes (ISO639-1) -#define LANG_CODE_XX 0x3f3f //'??' -#define LANG_CODE_EN 0x656e //'en' -#define LANG_CODE_CZ 0x6373 //'cs' -#define LANG_CODE_DE 0x6465 //'de' -#define LANG_CODE_ES 0x6573 //'es' -#define LANG_CODE_IT 0x6974 //'it' -#define LANG_CODE_PL 0x706c //'pl' +/** @name Language codes (ISO639-1)*/ +///@{ +#define LANG_CODE_XX 0x3f3f //!<'??' +#define LANG_CODE_EN 0x656e //!<'en' +#define LANG_CODE_CZ 0x6373 //!<'cs' +#define LANG_CODE_DE 0x6465 //!<'de' +#define LANG_CODE_ES 0x6573 //!<'es' +#define LANG_CODE_IT 0x6974 //!<'it' +#define LANG_CODE_PL 0x706c //!<'pl' +///@} #if defined(__cplusplus) extern "C" { #endif //defined(__cplusplus) -// Currectly active language selection. +/** @brief Currectly active language selection.*/ extern uint8_t lang_selected; #if (LANG_MODE != 0) extern const char _SEC_LANG[LANG_SIZE_RESERVED]; extern const char* lang_get_translation(const char* s); +/** @def _SEC_LANG_TABLE + * @brief Align table to start of 256 byte page */ #define _SEC_LANG_TABLE ((((uint16_t)&_SEC_LANG) + 0x00ff) & 0xff00) -//extern const uint32_t _PRI_LANG_SIGNATURE; #endif //(LANG_MODE != 0) -//selects language, eeprom is updated in case of success +/** @brief selects language, eeprom is updated in case of success */ extern uint8_t lang_select(uint8_t lang); -//performs checksum test of secondary language data +/** @brief performs checksum test of secondary language data */ extern uint8_t lang_check(uint16_t addr); -//returns total number of languages (primary + all in xflash) +/** @return total number of languages (primary + all in xflash) */ extern uint8_t lang_get_count(void); -//reads lang table header and offset in xflash or progmem +/** @brief reads lang table header and offset in xflash or progmem */ extern uint8_t lang_get_header(uint8_t lang, lang_table_header_t* header, uint32_t* offset); -//reads lang code from xflash or progmem +/** @brief reads lang code from xflash or progmem */ extern uint16_t lang_get_code(uint8_t lang); -//returns localized language name (text for menu item) +/** @return localized language name (text for menu item) */ extern const char* lang_get_name_by_code(uint16_t code); -//reset language to "LANG_ID_FORCE_SELECTION", epprom is updated +/** @brief reset language to "LANG_ID_FORCE_SELECTION", epprom is updated */ extern void lang_reset(void); -//returns 1 if language is selected +/** @retval 1 language is selected */ extern uint8_t lang_is_selected(void); #ifdef DEBUG_SEC_LANG From fb6aa72de9f9b3cfa5b0d8bebb1343f8c5583861 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 17:38:13 +0200 Subject: [PATCH 03/18] Fix compiler warnings in sm4.c --- Firmware/sm4.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Firmware/sm4.c b/Firmware/sm4.c index f50591c3..509ac23f 100644 --- a/Firmware/sm4.c +++ b/Firmware/sm4.c @@ -3,9 +3,10 @@ #include "sm4.h" #include #include +#include +#include "Arduino.h" #include "boards.h" -#define bool int8_t #define false 0 #define true 1 #include "Configuration_prusa.h" @@ -191,4 +192,4 @@ uint16_t sm4_line_xyze_ui(uint16_t dx, uint16_t dy, uint16_t dz, uint16_t de) } -#endif //NEW_XYZCAL \ No newline at end of file +#endif //NEW_XYZCAL From 2c00f065fdc210fbbe20108c380e5e78d7b72ef8 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 18:06:07 +0200 Subject: [PATCH 04/18] Fix error in recovering after power panic. (Function pointer was passed instead of function been called.) It manifested istself as following compiler warnings: sketch/Marlin_main.cpp: In function 'void print_physical_coordinates()': sketch/Marlin_main.cpp:9065:86: warning: pointer to a function used in arithmetic [-Wpointer-arith] printf_P(_N("physical coordinates: (%.3f, %.3f, %.3f)\n"), st_get_position_mm[X_AXIS], st_get_position_mm[Y_AXIS], st_get_position_mm[Z_AXIS]); ^ sketch/Marlin_main.cpp:9065:114: warning: pointer to a function used in arithmetic [-Wpointer-arith] printf_P(_N("physical coordinates: (%.3f, %.3f, %.3f)\n"), st_get_position_mm[X_AXIS], st_get_position_mm[Y_AXIS], st_get_position_mm[Z_AXIS]); ^ sketch/Marlin_main.cpp:9065:142: warning: pointer to a function used in arithmetic [-Wpointer-arith] printf_P(_N("physical coordinates: (%.3f, %.3f, %.3f)\n"), st_get_position_mm[X_AXIS], st_get_position_mm[Y_AXIS], st_get_position_mm[Z_AXIS]); ^ sketch/Marlin_main.cpp:9066:1: warning: pointer offset from symbol maybe incorrect [enabled by default] } ^ _Z18st_get_position_mmh+2 sketch/Marlin_main.cpp:9066:1: warning: pointer offset from symbol maybe incorrect [enabled by default] _Z18st_get_position_mmh+2 sketch/Marlin_main.cpp:9066:1: warning: pointer offset from symbol maybe incorrect [enabled by default] _Z18st_get_position_mmh+1 sketch/Marlin_main.cpp:9066:1: warning: pointer offset from symbol maybe incorrect [enabled by default] _Z18st_get_position_mmh+1 --- Firmware/Marlin_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 4f73e62f..0017c1d5 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -9062,7 +9062,7 @@ void print_world_coordinates() void print_physical_coordinates() { - printf_P(_N("physical coordinates: (%.3f, %.3f, %.3f)\n"), st_get_position_mm[X_AXIS], st_get_position_mm[Y_AXIS], st_get_position_mm[Z_AXIS]); + printf_P(_N("physical coordinates: (%.3f, %.3f, %.3f)\n"), st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS), st_get_position_mm(Z_AXIS)); } void print_mesh_bed_leveling_table() From bc1f416602e21824797239315243b3bfe89d41ed Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 18:26:29 +0200 Subject: [PATCH 05/18] Fix compiler warning symbol __AVR redefined. --- Firmware/uni_avr_rpi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/uni_avr_rpi.h b/Firmware/uni_avr_rpi.h index 6a7200c3..616a5662 100644 --- a/Firmware/uni_avr_rpi.h +++ b/Firmware/uni_avr_rpi.h @@ -1,5 +1,4 @@ // unification for AVR and RPI -#define __AVR #ifdef __AVR //#include "Arduino.h" @@ -29,3 +28,4 @@ void print(int v) { printf("%d", v); } void print(float v) { printf("%f", v); } #endif //RC522_RPI + From 2116262845e9100b575ccf23c17ba3de59cfa45f Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 18:46:12 +0200 Subject: [PATCH 06/18] Fix *_MAX_ACCEL integer overflow. --- Firmware/temperature.cpp | 2 +- Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h | 4 ++-- Firmware/variants/1_75mm_MK3-MMU-EINSy10a-E3Dv6full.h | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 83ead13b..0d7c6a3b 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -1473,7 +1473,7 @@ void bed_min_temp_error(void) { } #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE Stop(); -#endif*/ +#endif } #ifdef HEATER_0_USES_MAX6675 diff --git a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h index 2889c4e7..b89b668c 100644 --- a/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h @@ -96,12 +96,12 @@ #define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min) //Silent mode limits -#define SILENT_MAX_ACCEL 960 // max axxeleration in silent mode in mm/s^2 +#define SILENT_MAX_ACCEL 960ul // max axxeleration in silent mode in mm/s^2 #define SILENT_MAX_ACCEL_ST (100*SILENT_MAX_ACCEL) // max accel in steps/s^2 #define SILENT_MAX_FEEDRATE 172 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (172mm/s=9600mm/min>2700mm/min) //Normal mode limits -#define NORMAL_MAX_ACCEL 2500 // Y-axis max axxeleration in normal mode in mm/s^2 +#define NORMAL_MAX_ACCEL 2500ul // Y-axis max axxeleration in normal mode in mm/s^2 #define NORMAL_MAX_ACCEL_ST (100*NORMAL_MAX_ACCEL) // max accel in steps/s^2 #define NORMAL_MAX_FEEDRATE 200 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (172mm/s=9600mm/min>2700mm/min) diff --git a/Firmware/variants/1_75mm_MK3-MMU-EINSy10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK3-MMU-EINSy10a-E3Dv6full.h index f57c6da1..88f0075c 100644 --- a/Firmware/variants/1_75mm_MK3-MMU-EINSy10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK3-MMU-EINSy10a-E3Dv6full.h @@ -97,12 +97,12 @@ #define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min) //Silent mode limits -#define SILENT_MAX_ACCEL 960 // max axxeleration in silent mode in mm/s^2 +#define SILENT_MAX_ACCEL 960ul // max axxeleration in silent mode in mm/s^2 #define SILENT_MAX_ACCEL_ST (100*SILENT_MAX_ACCEL) // max accel in steps/s^2 #define SILENT_MAX_FEEDRATE 172 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (172mm/s=9600mm/min>2700mm/min) //Normal mode limits -#define NORMAL_MAX_ACCEL 2500 // Y-axis max axxeleration in normal mode in mm/s^2 +#define NORMAL_MAX_ACCEL 2500ul // Y-axis max axxeleration in normal mode in mm/s^2 #define NORMAL_MAX_ACCEL_ST (100*NORMAL_MAX_ACCEL) // max accel in steps/s^2 #define NORMAL_MAX_FEEDRATE 200 //max feedrate in mm/s, because mode switched to normal for homming , this value limits also homing, it should be greater (172mm/s=9600mm/min>2700mm/min) From 070e6f49e8303a6ae006675d853b9fc2eafe19e6 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Thu, 12 Jul 2018 18:56:11 +0200 Subject: [PATCH 07/18] Fix error in sine wave compression algorithm in tmc2130. This problem could manifest itself only for negative function slope, which is not used. --- Firmware/tmc2130.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/tmc2130.cpp b/Firmware/tmc2130.cpp index bfc720c6..558ea5aa 100644 --- a/Firmware/tmc2130.cpp +++ b/Firmware/tmc2130.cpp @@ -878,7 +878,7 @@ void tmc2130_set_wave(uint8_t axis, uint8_t amp, uint8_t fac1000) uint8_t x[3] = {255,255,255}; //X segment bounds (MSLUTSEL) uint8_t s = 0; //current segment int8_t b; //encoded bit value - uint8_t dA; //delta value + int8_t dA; //delta value int i; //microstep index uint32_t reg; //tmc2130 register tmc2130_wr_MSLUTSTART(axis, 0, amp); From 9d72062cd71cfca65c4b80e34865a8d0d912e32c Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 17:21:22 +0200 Subject: [PATCH 08/18] Save 82B flash and 1B RAM, fix compiler warning: sketch/ultralcd.cpp:7212:61: warning: integer overflow in expression [-Woverflow] lcd_next_update_millis = millis() + (LCD_UPDATE_INTERVAL * 10000); --- Firmware/ultralcd.cpp | 20 +++++++++++--------- Firmware/ultralcd.h | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 64379b31..8831d5d2 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -344,7 +344,7 @@ bool lcd_oldcardstatus; #endif //ULTIPANEL menuFunc_t currentMenu = lcd_status_screen; /* function pointer to the currently active menu */ -uint32_t lcd_next_update_millis; +ShortTimer lcd_next_update_millis; uint8_t lcd_status_update_delay; bool ignore_click = false; bool wait_for_unclick; @@ -6500,7 +6500,7 @@ bool lcd_selftest() lcd_reset_alert_level(); enquecommand_P(PSTR("M84")); lcd_implementation_clear(); - lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL; + lcd_next_update_millis.start(); if (_result) { @@ -7209,7 +7209,7 @@ static bool lcd_selftest_fan_dialog(int _fan) static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay) { - lcd_next_update_millis = millis() + (LCD_UPDATE_INTERVAL * 10000); + lcd_next_update_millis.stop(); int _step_block = 0; const char *_indicator = (_progress > _progress_scale) ? "-" : "|"; @@ -7410,6 +7410,7 @@ static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, void lcd_init() { lcd_implementation_init(); + lcd_next_update_millis.start(); #ifdef NEWPANEL SET_INPUT(BTN_EN1); @@ -7479,8 +7480,6 @@ void lcd_update_enable(bool enabled) // Enabling the normal LCD update procedure. // Reset the timeout interval. lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - // Force the keypad update now. - lcd_next_update_millis = millis() - 1; // Full update. lcd_implementation_clear(); #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) @@ -7491,14 +7490,15 @@ void lcd_update_enable(bool enabled) else lcd_set_custom_characters_arrows(); #endif - lcd_update(2); + // Force the keypad update now. + lcd_update(2,true); } else { // Clear the LCD always, or let it to the caller? } } } -void lcd_update(uint8_t lcdDrawUpdateOverride) +void lcd_update(uint8_t lcdDrawUpdateOverride, bool forceRedraw) { if (lcdDrawUpdate < lcdDrawUpdateOverride) @@ -7513,6 +7513,7 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) lcd_buttons_update(); + #if (SDCARDDETECT > 0) if ((IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected())) { @@ -7538,8 +7539,9 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) } #endif//CARDINSERTED - if (lcd_next_update_millis < millis()) + if (lcd_next_update_millis.expired(LCD_UPDATE_INTERVAL) || forceRedraw) { + lcd_next_update_millis.start(); #ifdef DEBUG_BLINK_ACTIVE static bool active_led = false; active_led = !active_led; @@ -7547,6 +7549,7 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) digitalWrite(LED_PIN, active_led?HIGH:LOW); #endif //DEBUG_BLINK_ACTIVE + #ifdef ULTIPANEL #ifdef REPRAPWORLD_KEYPAD if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) { @@ -7607,7 +7610,6 @@ void lcd_update(uint8_t lcdDrawUpdateOverride) #endif//ULTIPANEL if (lcdDrawUpdate == 2) lcd_implementation_clear(); if (lcdDrawUpdate) lcdDrawUpdate--; - lcd_next_update_millis = millis() + LCD_UPDATE_INTERVAL; } if (!SdFatUtil::test_stack_integrity()) stack_error(); #ifdef DEBUG_STEPPER_TIMER_MISSED diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index a03c5f1d..1da244f6 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -11,7 +11,7 @@ extern int lcd_printf_P(const char* format, ...); static void lcd_language_menu(); - void lcd_update(uint8_t lcdDrawUpdateOverride = 0); + void lcd_update(uint8_t lcdDrawUpdateOverride = 0, bool forceRedraw = false); // Call with a false parameter to suppress the LCD update from various places like the planner or the temp control. void lcd_update_enable(bool enable); void lcd_init(); From 49dd8d83fb791fd98cdf6aea2afc40479e2aaf07 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 18:03:05 +0200 Subject: [PATCH 09/18] Fix indentation in lcd_update() and split some of the preprocessor disabled functionality into separate functions. No change in resulting binary. --- Firmware/ultralcd.cpp | 227 ++++++++++-------- .../ultralcd_implementation_hitachi_HD44780.h | 5 +- 2 files changed, 128 insertions(+), 104 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 8831d5d2..0b2a37fd 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2482,8 +2482,8 @@ static void lcd_menu_xyz_skew() //|01234567890123456789| //|Measured skew: N/A | //|--------------------| -//|Slight skew: 0.12°| -//|Severe skew: 0.25°| +//|Slight skew: 0.12d| +//|Severe skew: 0.25d| //---------------------- float angleDiff = eeprom_read_float((float*)(EEPROM_XYZ_CAL_SKEW)); lcd_printf_P(_N( @@ -7498,126 +7498,149 @@ void lcd_update_enable(bool enabled) } } +static inline void debugBlink() +{ +#ifdef DEBUG_BLINK_ACTIVE + static bool active_led = false; + active_led = !active_led; + pinMode(LED_PIN, OUTPUT); + digitalWrite(LED_PIN, active_led?HIGH:LOW); +#endif //DEBUG_BLINK_ACTIVE +} + +static inline void handleReprapKeyboard() +{ +#ifdef REPRAPWORLD_KEYPAD + if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) + { + reprapworld_keypad_move_z_up(); + } + if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) + { + reprapworld_keypad_move_z_down(); + } + if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) + { + reprapworld_keypad_move_x_left(); + } + if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) + { + reprapworld_keypad_move_x_right(); + } + if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) + { + reprapworld_keypad_move_y_down(); + } + if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) + { + reprapworld_keypad_move_y_up(); + } + if (REPRAPWORLD_KEYPAD_MOVE_HOME) + { + reprapworld_keypad_move_home(); + } +#endif +} + +static inline void readSlowButtons() +{ +#ifdef LCD_HAS_SLOW_BUTTONS + slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context +#endif +} + +/** + * @brief Handle keyboard input and update display + * + * @param lcdDrawUpdateOverride + * @param forceRedraw if true, force redraw of display regardless of timer + */ void lcd_update(uint8_t lcdDrawUpdateOverride, bool forceRedraw) { - if (lcdDrawUpdate < lcdDrawUpdateOverride) - lcdDrawUpdate = lcdDrawUpdateOverride; + if (lcdDrawUpdate < lcdDrawUpdateOverride) + { + lcdDrawUpdate = lcdDrawUpdateOverride; + } - if (!lcd_update_enabled) - return; - -#ifdef LCD_HAS_SLOW_BUTTONS - slow_buttons = lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context -#endif - - lcd_buttons_update(); + if (!lcd_update_enabled) return; + readSlowButtons(); + lcd_buttons_update(); #if (SDCARDDETECT > 0) - if ((IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected())) - { - lcdDrawUpdate = 2; - lcd_oldcardstatus = IS_SD_INSERTED; - lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. + if ((IS_SD_INSERTED != lcd_oldcardstatus && lcd_detected())) + { + lcdDrawUpdate = 2; + lcd_oldcardstatus = IS_SD_INSERTED; + lcd_implementation_init( // to maybe revive the LCD if static electricity killed it. #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT) - currentMenu == lcd_status_screen + currentMenu == lcd_status_screen #endif - ); + ); - if (lcd_oldcardstatus) - { - card.initsd(); - LCD_MESSAGERPGM(_i("Card inserted"));////MSG_SD_INSERTED c=0 r=0 - //get_description(); - } - else - { - card.release(); - LCD_MESSAGERPGM(_i("Card removed"));////MSG_SD_REMOVED c=0 r=0 - } - } -#endif//CARDINSERTED - - if (lcd_next_update_millis.expired(LCD_UPDATE_INTERVAL) || forceRedraw) - { - lcd_next_update_millis.start(); -#ifdef DEBUG_BLINK_ACTIVE - static bool active_led = false; - active_led = !active_led; - pinMode(LED_PIN, OUTPUT); - digitalWrite(LED_PIN, active_led?HIGH:LOW); -#endif //DEBUG_BLINK_ACTIVE + if (lcd_oldcardstatus) + { + card.initsd(); + LCD_MESSAGERPGM(_i("Card inserted"));////MSG_SD_INSERTED c=0 r=0 + } + else + { + card.release(); + LCD_MESSAGERPGM(_i("Card removed"));////MSG_SD_REMOVED c=0 r=0 + } + } +#endif //(SDCARDDETECT > 0) + if (lcd_next_update_millis.expired(LCD_UPDATE_INTERVAL) || forceRedraw) + { + lcd_next_update_millis.start(); + debugBlink(); #ifdef ULTIPANEL -#ifdef REPRAPWORLD_KEYPAD - if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) { - reprapworld_keypad_move_z_up(); - } - if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) { - reprapworld_keypad_move_z_down(); - } - if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) { - reprapworld_keypad_move_x_left(); - } - if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) { - reprapworld_keypad_move_x_right(); - } - if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) { - reprapworld_keypad_move_y_down(); - } - if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) { - reprapworld_keypad_move_y_up(); - } - if (REPRAPWORLD_KEYPAD_MOVE_HOME) { - reprapworld_keypad_move_home(); - } -#endif - if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) - { - if (lcdDrawUpdate == 0) - lcdDrawUpdate = 1; - encoderPosition += encoderDiff / ENCODER_PULSES_PER_STEP; - encoderDiff = 0; - lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; - } + handleReprapKeyboard(); - if (LCD_CLICKED) lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + if (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) + { + if (lcdDrawUpdate == 0) lcdDrawUpdate = 1; + encoderPosition += encoderDiff / ENCODER_PULSES_PER_STEP; + encoderDiff = 0; + lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; + } + + if (LCD_CLICKED) lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; #endif//ULTIPANEL - (*currentMenu)(); - -#ifdef LCD_HAS_STATUS_INDICATORS - lcd_implementation_update_indicators(); -#endif - -#ifdef ULTIPANEL - if (lcd_timeoutToStatus < millis() && currentMenu != lcd_status_screen) - { - // Exiting a menu. Let's call the menu function the last time with menuExiting flag set to true - // to give it a chance to save its state. - // This is useful for example, when the babystep value has to be written into EEPROM. - if (currentMenu != NULL) { - menuExiting = true; (*currentMenu)(); - menuExiting = false; - } - lcd_implementation_clear(); - lcd_return_to_status(); - lcdDrawUpdate = 2; - } + lcd_implementation_update_indicators(); + +#ifdef ULTIPANEL + if (lcd_timeoutToStatus < millis() && currentMenu != lcd_status_screen) + { + // Exiting a menu. Let's call the menu function the last time with menuExiting flag set to true + // to give it a chance to save its state. + // This is useful for example, when the babystep value has to be written into EEPROM. + if (currentMenu != NULL) + { + menuExiting = true; + (*currentMenu)(); + menuExiting = false; + } + lcd_implementation_clear(); + lcd_return_to_status(); + lcdDrawUpdate = 2; + } #endif//ULTIPANEL - if (lcdDrawUpdate == 2) lcd_implementation_clear(); - if (lcdDrawUpdate) lcdDrawUpdate--; - } - if (!SdFatUtil::test_stack_integrity()) stack_error(); + if (lcdDrawUpdate == 2) lcd_implementation_clear(); + if (lcdDrawUpdate) lcdDrawUpdate--; + } + if (!SdFatUtil::test_stack_integrity()) stack_error(); #ifdef DEBUG_STEPPER_TIMER_MISSED - if (stepper_timer_overflow_state) stepper_timer_overflow(); + if (stepper_timer_overflow_state) stepper_timer_overflow(); #endif /* DEBUG_STEPPER_TIMER_MISSED */ - lcd_ping(); //check that we have received ping command if we are in farm mode - lcd_send_status(); - if (lcd_commands_type == LCD_COMMAND_V2_CAL) lcd_commands(); + lcd_ping(); //check that we have received ping command if we are in farm mode + lcd_send_status(); + if (lcd_commands_type == LCD_COMMAND_V2_CAL) lcd_commands(); } void lcd_printer_connected() { diff --git a/Firmware/ultralcd_implementation_hitachi_HD44780.h b/Firmware/ultralcd_implementation_hitachi_HD44780.h index 1aa0f303..e3a36313 100644 --- a/Firmware/ultralcd_implementation_hitachi_HD44780.h +++ b/Firmware/ultralcd_implementation_hitachi_HD44780.h @@ -1390,9 +1390,10 @@ static void lcd_implementation_quick_feedback() #endif } -#ifdef LCD_HAS_STATUS_INDICATORS + static void lcd_implementation_update_indicators() { +#ifdef LCD_HAS_STATUS_INDICATORS #if defined(LCD_I2C_PANELOLU2) || defined(LCD_I2C_VIKI) //set the LEDS - referred to as backlights by the LiquidTWI2 library static uint8_t ledsprev = 0; @@ -1408,8 +1409,8 @@ static void lcd_implementation_update_indicators() ledsprev = leds; } #endif -} #endif +} #ifdef LCD_HAS_SLOW_BUTTONS extern uint32_t blocking_enc; From f620a662110fa883a65f28963b5e1083068047db Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 18:26:52 +0200 Subject: [PATCH 10/18] Use public interface instead of manipulating lcd_next_update_millis timer. --- Firmware/ultralcd.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 0b2a37fd..e5b05d80 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -6499,8 +6499,7 @@ bool lcd_selftest() } lcd_reset_alert_level(); enquecommand_P(PSTR("M84")); - lcd_implementation_clear(); - lcd_next_update_millis.start(); + lcd_update_enable(true); if (_result) { @@ -7209,7 +7208,7 @@ static bool lcd_selftest_fan_dialog(int _fan) static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay) { - lcd_next_update_millis.stop(); + lcd_update_enable(false); int _step_block = 0; const char *_indicator = (_progress > _progress_scale) ? "-" : "|"; From bc99db8233ea65993be31b59c26d2e7626c90d29 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 18:35:42 +0200 Subject: [PATCH 11/18] Fix compiler warning: sketch/uart2.c:48:1: warning: control reaches end of non-void function [-Wreturn-type] --- Firmware/uart2.c | 2 +- Firmware/uart2.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/uart2.c b/Firmware/uart2.c index e12b254a..e6d5c3f8 100644 --- a/Firmware/uart2.c +++ b/Firmware/uart2.c @@ -41,7 +41,7 @@ void uart2_init(void) fdev_setup_stream(uart2io, uart2_putchar, uart2_getchar, _FDEV_SETUP_WRITE | _FDEV_SETUP_READ); //setup uart2 i/o stream } -uint8_t uart2_rx_clr(void) +void uart2_rx_clr(void) { rbuf_w(uart2_ibuf) = 0; rbuf_r(uart2_ibuf) = 0; diff --git a/Firmware/uart2.h b/Firmware/uart2.h index e5455148..95a1bff9 100644 --- a/Firmware/uart2.h +++ b/Firmware/uart2.h @@ -18,7 +18,7 @@ extern FILE _uart2io; extern void uart2_init(void); -extern uint8_t uart2_rx_clr(void); +extern void uart2_rx_clr(void); extern uint8_t uart2_rx_ok(void); @@ -26,4 +26,4 @@ extern uint8_t uart2_rx_ok(void); #if defined(__cplusplus) } #endif //defined(__cplusplus) -#endif //_UART2_H \ No newline at end of file +#endif //_UART2_H From c2517775900485ecccdaf2e882b89691b0795b44 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 18:44:54 +0200 Subject: [PATCH 12/18] Fix compiler warning: In file included from sketch/BlinkM.cpp:5:0: sketch/Marlin.h:422:13: warning: 'void print_time_remaining_init()' declared 'static' but never defined [-Wunused-function] static void print_time_remaining_init(); Make local functions static. Saves 6B of flash. --- Firmware/Marlin.h | 1 - Firmware/Marlin_main.cpp | 5 +++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 35cce09f..329e8f7c 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -419,7 +419,6 @@ extern void fsensor_init(); //estimated time to end of the print extern uint16_t print_time_remaining(); extern uint8_t print_percent_done(); -static void print_time_remaining_init(); #ifdef HOST_KEEPALIVE_FEATURE diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 0017c1d5..11c1c6e3 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -535,8 +535,9 @@ static bool saved_extruder_relative_mode = false; //=============================Routines====================================== //=========================================================================== -void get_arc_coordinates(); -bool setTargetedHotend(int code); +static void get_arc_coordinates(); +static bool setTargetedHotend(int code); +static void print_time_remaining_init(); void serial_echopair_P(const char *s_P, float v) { serialprintPGM(s_P); SERIAL_ECHO(v); } From ff56e491e85aede3b1b1be4e17fe62d28bb5dc00 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 18:49:14 +0200 Subject: [PATCH 13/18] Save 2B flash, fix compiler warning: In file included from sketch/ConfigurationStore.cpp:5:0: sketch/ConfigurationStore.h: In function 'uint8_t calibration_status_store(uint8_t)': sketch/ConfigurationStore.h:24:124: warning: no return statement in function returning non-void [-Wreturn-type] inline uint8_t calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } --- Firmware/ConfigurationStore.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ConfigurationStore.h b/Firmware/ConfigurationStore.h index facdcca2..79055fdc 100644 --- a/Firmware/ConfigurationStore.h +++ b/Firmware/ConfigurationStore.h @@ -21,7 +21,7 @@ FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_Prin #endif inline uint8_t calibration_status() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS); } -inline uint8_t calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } +inline void calibration_status_store(uint8_t status) { eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS, status); } inline bool calibration_status_pinda() { return eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA); } #endif//CONFIG_STORE_H From ee366ce3b59180f079efea6bcdb42a253fd5b516 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 19:18:54 +0200 Subject: [PATCH 14/18] Fix compiler warnings: In file included from sketch/ConfigurationStore.cpp:3:0: sketch/temperature.h:193:14: warning: 'temp_runaway_status' defined but not used [-Wunused-variable] static float temp_runaway_status[4]; ^ sketch/temperature.h:194:14: warning: 'temp_runaway_target' defined but not used [-Wunused-variable] static float temp_runaway_target[4]; ^ sketch/temperature.h:195:14: warning: 'temp_runaway_timer' defined but not used [-Wunused-variable] static float temp_runaway_timer[4]; ^ sketch/temperature.h:196:12: warning: 'temp_runaway_error_counter' defined but not used [-Wunused-variable] static int temp_runaway_error_counter[4]; --- Firmware/temperature.cpp | 10 ++++++++++ Firmware/temperature.h | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Firmware/temperature.cpp b/Firmware/temperature.cpp index 0d7c6a3b..cf9cccfd 100644 --- a/Firmware/temperature.cpp +++ b/Firmware/temperature.cpp @@ -205,6 +205,16 @@ unsigned long watchmillis[EXTRUDERS] = ARRAY_BY_EXTRUDERS(0,0,0); //============================= functions ============================ //=========================================================================== +#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0) +static float temp_runaway_status[4]; +static float temp_runaway_target[4]; +static float temp_runaway_timer[4]; +static int temp_runaway_error_counter[4]; + +static void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed); +static void temp_runaway_stop(bool isPreheat, bool isBed); +#endif + void PID_autotune(float temp, int extruder, int ncycles) { pid_number_of_cycles = ncycles; diff --git a/Firmware/temperature.h b/Firmware/temperature.h index b20a67cd..462412d3 100644 --- a/Firmware/temperature.h +++ b/Firmware/temperature.h @@ -189,16 +189,6 @@ FORCE_INLINE bool isCoolingBed() { #error Invalid number of extruders #endif -#if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0) -static float temp_runaway_status[4]; -static float temp_runaway_target[4]; -static float temp_runaway_timer[4]; -static int temp_runaway_error_counter[4]; - -void temp_runaway_check(int _heater_id, float _target_temperature, float _current_temperature, float _output, bool _isbed); -void temp_runaway_stop(bool isPreheat, bool isBed); -#endif - int getHeaterPower(int heater); void disable_heater(); void setWatch(); From 6bd8e60176f8badd6a8070476f9322b580234092 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 19:27:25 +0200 Subject: [PATCH 15/18] Fix compiler warning: In file included from sketch/ConfigurationStore.cpp:4:0: sketch/ultralcd.h:12:14: warning: 'void lcd_language_menu()' declared 'static' but never defined [-Wunused-function] static void lcd_language_menu(); --- Firmware/ultralcd.cpp | 1 + Firmware/ultralcd.h | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e5b05d80..daf26014 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -209,6 +209,7 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg, /* Different menus */ static void lcd_status_screen(); +static void lcd_language_menu(); #ifdef ULTIPANEL extern bool powersupply; static void lcd_main_menu(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 1da244f6..39e26fda 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -9,8 +9,6 @@ extern int lcd_printf_P(const char* format, ...); #ifdef ULTRA_LCD - static void lcd_language_menu(); - void lcd_update(uint8_t lcdDrawUpdateOverride = 0, bool forceRedraw = false); // Call with a false parameter to suppress the LCD update from various places like the planner or the temp control. void lcd_update_enable(bool enable); From ea59d8a6e6566acb13c8ce38ab3ffbde31b083fc Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 19:50:51 +0200 Subject: [PATCH 16/18] Fix compiler warnings: In file included from sketch/ConfigurationStore.cpp:4:0: sketch/ultralcd.h:40:15: warning: 'void lcd_selftest_v()' declared 'static' but never defined [-Wunused-function] static void lcd_selftest_v(); ^ sketch/ultralcd.h:42:15: warning: 'bool lcd_selfcheck_endstops()' declared 'static' but never defined [-Wunused-function] static bool lcd_selfcheck_endstops(); ^ sketch/ultralcd.h:45:15: warning: 'void reset_crash_det(char)' declared 'static' but never defined [-Wunused-function] static void reset_crash_det(char axis); ^ sketch/ultralcd.h:46:15: warning: 'bool lcd_selfcheck_axis_sg(char)' declared 'static' but never defined [-Wunused-function] static bool lcd_selfcheck_axis_sg(char axis); ^ sketch/ultralcd.h:47:15: warning: 'bool lcd_selfcheck_axis(int, int)' declared 'static' but never defined [-Wunused-function] static bool lcd_selfcheck_axis(int _axis, int _travel); ^ sketch/ultralcd.h:54:15: warning: 'bool lcd_selfcheck_check_heater(bool)' declared 'static' but never defined [-Wunused-function] static bool lcd_selfcheck_check_heater(bool _isbed); ^ sketch/ultralcd.h:55:15: warning: 'int lcd_selftest_screen(int, int, int, bool, int)' declared 'static' but never defined [-Wunused-function] static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); ^ sketch/ultralcd.h:56:15: warning: 'void lcd_selftest_screen_step(int, int, int, const char*, const char*)' declared 'static' but never defined [-Wunused-function] static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); ^ sketch/ultralcd.h:57:15: warning: 'bool lcd_selftest_manual_fan_check(int, bool)' declared 'static' but never defined [-Wunused-function] static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite); ^ sketch/ultralcd.h:58:15: warning: 'bool lcd_selftest_fan_dialog(int)' declared 'static' but never defined [-Wunused-function] static bool lcd_selftest_fan_dialog(int _fan); ^ sketch/ultralcd.h:59:15: warning: 'bool lcd_selftest_fsensor()' declared 'static' but never defined [-Wunused-function] static bool lcd_selftest_fsensor(); ^ sketch/ultralcd.h:60:15: warning: 'void lcd_selftest_error(int, const char*, const char*)' declared 'static' but never defined [-Wunused-function] static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); sketch/ultralcd.h:68:24: warning: 'blink' defined but not used [-Wunused-variable] static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD sketch/ultralcd.h:222:13: warning: 'void lcd_colorprint_change()' declared 'static' but never defined [-Wunused-function] static void lcd_colorprint_change(); ^ sketch/ultralcd.h:223:12: warning: 'int get_ext_nr()' declared 'static' but never defined [-Wunused-function] static int get_ext_nr(); ^ sketch/ultralcd.h:225:13: warning: 'void extr_adj_0()' declared 'static' but never defined [-Wunused-function] static void extr_adj_0(); ^ sketch/ultralcd.h:226:13: warning: 'void extr_adj_1()' declared 'static' but never defined [-Wunused-function] static void extr_adj_1(); ^ sketch/ultralcd.h:227:13: warning: 'void extr_adj_2()' declared 'static' but never defined [-Wunused-function] static void extr_adj_2(); ^ sketch/ultralcd.h:228:13: warning: 'void extr_adj_3()' declared 'static' but never defined [-Wunused-function] static void extr_adj_3(); ^ sketch/ultralcd.h:229:13: warning: 'void fil_load_menu()' declared 'static' but never defined [-Wunused-function] static void fil_load_menu(); ^ sketch/ultralcd.h:230:13: warning: 'void fil_unload_menu()' declared 'static' but never defined [-Wunused-function] static void fil_unload_menu(); ^ sketch/ultralcd.h:231:13: warning: 'void extr_unload_0()' declared 'static' but never defined [-Wunused-function] static void extr_unload_0(); ^ sketch/ultralcd.h:232:13: warning: 'void extr_unload_1()' declared 'static' but never defined [-Wunused-function] static void extr_unload_1(); ^ sketch/ultralcd.h:233:13: warning: 'void extr_unload_2()' declared 'static' but never defined [-Wunused-function] static void extr_unload_2(); ^ sketch/ultralcd.h:234:13: warning: 'void extr_unload_3()' declared 'static' but never defined [-Wunused-function] static void extr_unload_3(); ^ sketch/ultralcd.h:235:13: warning: 'void lcd_disable_farm_mode()' declared 'static' but never defined [-Wunused-function] static void lcd_disable_farm_mode(); ^ sketch/ultralcd.h:236:13: warning: 'void lcd_set_fan_check()' declared 'static' but never defined [-Wunused-function] static void lcd_set_fan_check(); ^ sketch/ultralcd.h:240:13: warning: 'char snmm_stop_print_menu()' declared 'static' but never defined [-Wunused-function] static char snmm_stop_print_menu(); ^ sketch/ultralcd.h:242:14: warning: 'void lcd_sort_type_set()' declared 'static' but never defined [-Wunused-function] static void lcd_sort_type_set(); ^ sketch/ultralcd.h:244:14: warning: 'float count_e(float, float, float)' declared 'static' but never defined [-Wunused-function] static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); ^ sketch/ultralcd.h:245:13: warning: 'void lcd_babystep_z()' declared 'static' but never defined [-Wunused-function] static void lcd_babystep_z(); ^ sketch/ultralcd.h:290:13: warning: 'void lcd_send_status()' declared 'static' but never defined [-Wunused-function] static void lcd_send_status(); ^ sketch/ultralcd.h:291:13: warning: 'void lcd_connect_printer()' declared 'static' but never defined [-Wunused-function] static void lcd_connect_printer(); sketch/ultralcd.h:227:13: warning: 'char snmm_stop_print_menu()' declared 'static' but never defined [-Wunused-function] static char snmm_stop_print_menu(); ^ sketch/ultralcd.h:229:14: warning: 'void lcd_sort_type_set()' declared 'static' but never defined [-Wunused-function] static void lcd_sort_type_set(); ^ sketch/ultralcd.h:231:14: warning: 'float count_e(float, float, float)' declared 'static' but never defined [-Wunused-function] static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); ^ sketch/ultralcd.h:232:13: warning: 'void lcd_babystep_z()' declared 'static' but never defined [-Wunused-function] static void lcd_babystep_z(); --- Firmware/ultralcd.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++ Firmware/ultralcd.h | 44 +----------------------------------------- 2 files changed, 46 insertions(+), 43 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index daf26014..040ea9b3 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -144,6 +144,8 @@ int8_t FSensorStateMenu = 1; int8_t CrashDetectMenu = 1; +static unsigned char blink = 0; //!< Variable for visualization of fan rotation in GLCD + extern void fsensor_block(); extern void fsensor_unblock(); @@ -238,6 +240,49 @@ static void lcd_menu_xyz_offset(); static void lcd_menu_fails_stats(); #endif //TMC2130 or PAT9125 +static void lcd_selftest_v(); +static bool lcd_selfcheck_endstops(); + +#ifdef TMC2130 +static void reset_crash_det(char axis); +static bool lcd_selfcheck_axis_sg(char axis); +static bool lcd_selfcheck_axis(int _axis, int _travel); +#else +static bool lcd_selfcheck_endstops(); +static bool lcd_selfcheck_axis(int _axis, int _travel); +static bool lcd_selfcheck_pulleys(int axis); +#endif //TMC2130 + +static bool lcd_selfcheck_check_heater(bool _isbed); +static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); +static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); +static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite); +static bool lcd_selftest_fan_dialog(int _fan); +static bool lcd_selftest_fsensor(); +static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); +static void lcd_colorprint_change(); +static int get_ext_nr(); +static void extr_adj_0(); +static void extr_adj_1(); +static void extr_adj_2(); +static void extr_adj_3(); +static void fil_load_menu(); +static void fil_unload_menu(); +static void extr_unload_0(); +static void extr_unload_1(); +static void extr_unload_2(); +static void extr_unload_3(); +static void lcd_disable_farm_mode(); +static void lcd_set_fan_check(); +static char snmm_stop_print_menu(); +#ifdef SDCARD_SORT_ALPHA + static void lcd_sort_type_set(); +#endif +static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); +static void lcd_babystep_z(); +static void lcd_send_status(); +static void lcd_connect_printer(); + void lcd_finishstatus(); #ifdef DOGLCD diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index 39e26fda..3250a4c1 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -37,27 +37,8 @@ extern int lcd_printf_P(const char* format, ...); //void lcd_mylang(); bool lcd_detected(void); - static void lcd_selftest_v(); extern bool lcd_selftest(); - static bool lcd_selfcheck_endstops(); -#ifdef TMC2130 - static void reset_crash_det(char axis); - static bool lcd_selfcheck_axis_sg(char axis); - static bool lcd_selfcheck_axis(int _axis, int _travel); -#else - static bool lcd_selfcheck_endstops(); - static bool lcd_selfcheck_axis(int _axis, int _travel); - static bool lcd_selfcheck_pulleys(int axis); -#endif //TMC2130 - - static bool lcd_selfcheck_check_heater(bool _isbed); - static int lcd_selftest_screen(int _step, int _progress, int _progress_scale, bool _clear, int _delay); - static void lcd_selftest_screen_step(int _row, int _col, int _state, const char *_name, const char *_indicator); - static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite); - static bool lcd_selftest_fan_dialog(int _fan); - static bool lcd_selftest_fsensor(); - static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2); void lcd_menu_statistics(); extern const char* lcd_display_message_fullscreen_P(const char *msg, uint8_t &nlines); @@ -84,7 +65,6 @@ extern int lcd_printf_P(const char* format, ...); void lcd_setcontrast(uint8_t value); #endif - static unsigned char blink = 0; // Variable for visualization of fan rotation in GLCD #define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x)) #define LCD_ALERTMESSAGEPGM(x) lcd_setalertstatuspgm(PSTR(x)) @@ -239,30 +219,11 @@ extern void lcd_implementation_print_at(uint8_t x, uint8_t y, const char *str); void change_extr(int extr); -static void lcd_colorprint_change(); -static int get_ext_nr(); void extr_adj(int extruder); -static void extr_adj_0(); -static void extr_adj_1(); -static void extr_adj_2(); -static void extr_adj_3(); -static void fil_load_menu(); -static void fil_unload_menu(); -static void extr_unload_0(); -static void extr_unload_1(); -static void extr_unload_2(); -static void extr_unload_3(); -static void lcd_disable_farm_mode(); -static void lcd_set_fan_check(); + void extr_unload_all(); void extr_unload_used(); void extr_unload(); -static char snmm_stop_print_menu(); -#ifdef SDCARD_SORT_ALPHA - static void lcd_sort_type_set(); -#endif -static float count_e(float layer_heigth, float extrusion_width, float extrusion_length); -static void lcd_babystep_z(); void stack_error(); void lcd_printer_connected(); @@ -307,7 +268,4 @@ void lcd_language(); void lcd_wizard(); void lcd_wizard(int state); -static void lcd_send_status(); -static void lcd_connect_printer(); - #endif //ULTRALCD_H From 83081b0fbaef8cf8c154748b820ee3d4791f29ba Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 20:00:20 +0200 Subject: [PATCH 17/18] Fix compiler warning: sketch/LiquidCrystal_Prusa.cpp:502:1: warning: label 'end' defined but not used [-Wunused-label]. --- Firmware/LiquidCrystal_Prusa.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Firmware/LiquidCrystal_Prusa.cpp b/Firmware/LiquidCrystal_Prusa.cpp index e06f8fa2..38dae5e4 100644 --- a/Firmware/LiquidCrystal_Prusa.cpp +++ b/Firmware/LiquidCrystal_Prusa.cpp @@ -499,7 +499,6 @@ inline size_t LiquidCrystal_Prusa::escape_write(uint8_t chr) break; } escape_cnt = 0; // reset escape -end: return 1; // assume sucess } From 42893b7a941a4d461377ca47981cc69ea878b7a9 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Fri, 13 Jul 2018 20:47:40 +0200 Subject: [PATCH 18/18] Fix compiler warnings: sketch/Marlin_main.cpp:806:6: warning: unused variable 'cursor_pos' [-Wunused-variable] sketch/Marlin_main.cpp:1922:7: warning: unused variable 'stack_integrity' [-Wunused-variable] sketch/Marlin_main.cpp:4254:8: warning: unused variable 'clamped' [-Wunused-variable] --- Firmware/Marlin_main.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 11c1c6e3..951467d6 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -803,7 +803,6 @@ int er_progress = 0; void factory_reset(char level, bool quiet) { lcd_implementation_clear(); - int cursor_pos = 0; switch (level) { // Level 0: Language reset @@ -1920,7 +1919,6 @@ void host_keepalive() { void loop() { KEEPALIVE_STATE(NOT_BUSY); - bool stack_integrity = true; if ((usb_printing_counter > 0) && ((millis()-_usb_timer) > 1000)) { @@ -4254,10 +4252,11 @@ void process_commands() // The move to the first calibration point. current_position[X_AXIS] = pgm_read_float(bed_ref_points); current_position[Y_AXIS] = pgm_read_float(bed_ref_points + 1); - bool clamped = world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]); #ifdef SUPPORT_VERBOSITY - if (verbosity_level >= 1) { + if (verbosity_level >= 1) + { + bool clamped = world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]); clamped ? SERIAL_PROTOCOLPGM("First calibration point clamped.\n") : SERIAL_PROTOCOLPGM("No clamping for first calibration point.\n"); } #endif //SUPPORT_VERBOSITY