Commit Graph

63 Commits

Author SHA1 Message Date
gudnimg 396a8ca4f9 Remove VT100 code 2024-07-31 10:35:18 +00:00
gudnimg 2cbbdbacd5 Remove a bit of unused code which is disabled at compile time
Some of these have been used > 6 years and don't compile anymore.

Reason to want this removed is just to reduce the code we maintain
2024-07-31 09:53:45 +00:00
Alex Voinea 32cee8b529 Move custom character type to lcd.cpp 2023-10-03 08:19:48 +02:00
Alex Voinea 245a2852ac Font table compression 2023-10-03 08:19:48 +02:00
Alex Voinea 1c260f94a0 Expand list of custom characters 2023-10-03 08:19:48 +02:00
Alex Voinea 4736a1624f First working implementation
Fix cherry-pick conflict
2023-10-03 08:19:48 +02:00
Alex Voinea c7f9a46c86 Cleanup around invalidating the custom characters 2023-10-03 08:19:48 +02:00
Alex Voinea 100a8e3b33 Dynamic characters initial
Fix more hardcoded characters

Finally optimize the lcd printf with custom characters

FontGen.py script

Add arguments and action

Fix build

Fix conflicts
2023-10-03 08:19:48 +02:00
Guðni Már Gilbert 63775dfabb PFW-1504 fix conflicting UI issues
Proposal to fix some of the issues with the initial implementation
it is safer to use the status line code to print the message so
there aren't any conflicts in the LCD cursor position.

Allow inserting a byte into any position in the LCD status message

Also, add a variable to control from which index in the array
should the message start printing. This is very useful for progress
bars and messages which continually update. I think we can save some
memory by applying this to Mesh Bed Leveling later.

Change in memory:
Flash: +106 bytes
SRAM: +1 byte
2023-07-27 16:44:34 +00:00
Alex Voinea 32e68c33b4
lcd encoder: use lookup table
Also handle the scenario where the encoder moves two steps in a single lcd_buttons_update cycle.

Flash: -46B
SRAM: 0B
2023-04-24 11:56:13 +02:00
Alex Voinea ea101f49d4
`lcd_buttons` is actually `lcd_click_trigger`
Flash: -4B
SRAM: 0B
2023-04-24 11:56:04 +02:00
Guðni Már Gilbert 18c389543b Fix lcd_update() FW crashes
Change in memory:
Flash: +10 bytes
SRAM: 0 bytes
2023-04-19 15:41:36 +00:00
Guðni Már Gilbert 062ea1cf25 optimisation: make lcd_encoder two bytes (int16_t)
lcd_encoder was int32_t (4 bytes) because of the menu code
when editing through the menus, the menus only accept
int16_t so it doesnt make sense to use int32_t.

Change in memory:
Flash: -892 bytes
SRAM: -2 bytes
2023-04-06 07:44:16 +02:00
Guðni Már Gilbert ffc34edf4c Pull in changes from PR 4080
Additionally make lcd_encoder_bits static
since it's not used outside the ISR context
2023-04-05 10:30:59 +02:00
Guðni Már Gilbert a7e9ccfb57 Major refactoring
Fixes all the issues I've found so far.

Roughly 60B of flash saved. Need to double check that later.
2023-04-05 10:30:59 +02:00
Guðni Már Gilbert d89e6de040 Update lcd_encoder in lcd_update
This fixes the spurious feedback when rotating the knob
because lcd_update is called much often than the interval
at which the lcd rendering is updated

Change in memory
Flash: -88 bytes
SRAM: -9 bytes
2023-04-05 10:30:59 +02:00
Guðni Már Gilbert da63d73585 optimisation: don't print floats with lcd_print()
Change in memory:
Flash: -442 bytes
SRAM: 0 bytes
2023-01-25 18:21:22 +00:00
Guðni Már Gilbert eeb5f3d50c optimisation: refactor menu_draw_P()
Add a way to only change the LCD column

Change in memory:
Flash: -90 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert 730bb3708e Fix an issue with menu_draw_item_puts_P
Change in memory:
Flash: +16 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert cc08b938b7 Optimisations: implement lcd_print_pad_P()
Used lcd_print_pad_P is some obvious places. We can probably use
this function in more places to further save flash memory

Change in memory:
Flash: -268 bytes
SRAM: 0 bytes
2023-01-16 12:36:57 +01:00
Guðni Már Gilbert 184e19dd60 further optimise lcdui_print_status_line
We can use lcd_print_pad to determine
whether the end of the file name was reached

lcd_print_pad now returns the last character pointed to.
If the end of the string was reached, it will be the null delimeter which
evaluates to "false" in an if statment (same as NULL).
Else "true" means the end of the string was not reached.

Change in memory:
Flash: -42 bytes
SRAM: 0 bytes
2022-11-13 09:29:37 +01:00
Yuri D'Elia 49f96213a4 Also consume longpress in lcd_consume_click() 2022-09-30 14:29:37 +02:00
Alex Voinea 7fb53899dc Merge branch 'MK3' into MK3_MMU2_fix1 2022-09-23 14:55:23 +02:00
Yuri D'Elia 80c06bda55 Improve warning behavior during thermal anomaly
The current code forces any warning to return the user to the status
screen in order to show the message.

Thermal anomaly warnings can repeat at very short intervals, making menu
navigation (to pause/tune the print) impossible.

We now check if the message to be displayed is the same and only force a
kickback for new messages.

This partially reverts https://github.com/prusa3d/Prusa-Firmware/pull/3600
since we need the string to be null terminated for ease of comparison.

We pad the status line at display time instead using the new
lcd_print_pad() function which achieves the same effect.
2022-09-22 16:12:35 +02:00
D.R.racer 09cb9c6ecd Fixup after rebase + discussion 2022-09-16 10:22:38 +02:00
Guðni Már Gilbert 1c26875e0e PFW-1318 Implement callback to render status line
To render the thermometer and degree symbols
the CGRAM table will instead swap out
the feedrate and clock symbol when
lcd_set_custom_characters_nextpage()
is called.
2022-09-16 10:22:37 +02:00
Guðni Már Gilbert 74ea9a7e43 Remove class LcdUpdateDisabler
Calling lcd_update_enable directly gives us more control

This also save a bit of flash memory
2022-09-16 10:22:37 +02:00
Guðni Már Gilbert f6fd91a235 Optimise lcd_status_screen
Saves 20 bytes of flash
2022-07-27 11:14:18 +00:00
Alex Voinea 670214a30b Fix indentation 2022-02-06 11:01:35 +01:00
Guðni Már Gilbert d5b666d260 Add LCD_STR_SOLID_BLOCK to represent \xFF 2022-02-05 19:53:42 +00:00
Guðni Már Gilbert da2c802440 Add two defines and use LCD_STR_DEGREE with consistency
This saves 12 bytes of flash and 2 bytes of SRAM
2021-08-01 11:10:03 +00:00
Guðni Már Gilbert 6afc87d3c8 Reduce unnecessary LCD CGRAM writes 2021-07-30 23:53:57 +00:00
Yuri D'Elia 06d91ddcee Handle Long-Press in the main loop
The longpress function is currently called within the temperature ISR,
which is bogus. Calling the longpress function at the wrong moment
can corrupt the menu buffers.

Move the call to the main loop by changing the logic slightly:

- still sample the lcd buttons inside the temperature ISR, which keeps
  scrollong/pressing responsive, but...
- set a flag to indicate that longpress has been triggered instead of
  calling the function directly
- call the function on the next manage_inactivity run

Combined with #3180 this removes _most_ unsafe operations out of the ISR
which can happen during a normal run (max/mintemp warnings are still an
exception).
2021-06-17 20:07:01 +02:00
Alex Voinea 4c977cc335 Merge branch 'MK3' into MK3_NEW_SD_COMPILATION 2021-02-03 18:28:18 +02:00
D.R.racer 783e4bbaf9 Add lcd_putc_at (code down >150B), refactor lcd_selftest_screen_step
(RAM down 10B)
2021-01-25 14:58:57 +01:00
Alex Voinea f35e553373
Code cleanup 2020-03-04 20:33:43 +02:00
Alex Voinea 7028583e9b
Merge branch 'MK3_ShellSort' into MK3_NEW_SD_COMPILATION 2020-01-08 16:27:31 +02:00
Alex Voinea 960f4a88ed
Status bar, lcd optimization, compile warning fix 2019-11-26 13:36:28 +02:00
Alex Voinea b3a587f5a4 SD first attempt. Broken 2019-11-20 20:25:51 +02:00
leptun 818befb91b Fix compile warning
function was defined as static in lcd.cpp and redefined in lcd.h
2019-09-09 14:05:20 +03:00
leptun d8ecb2d0c9 Fix status screen 2019-07-16 21:11:27 +03:00
Marek Bel 0c660a6fb1 Revert "Fix sketch/lcd.cpp:196:1: warning: no return statement in function returning non-void [-Wreturn-type]."
This reverts commit a54fd29fa4.
2019-07-16 21:10:11 +03:00
Marek Bel a54fd29fa4 Fix sketch/lcd.cpp:196:1: warning: no return statement in function returning non-void [-Wreturn-type]. 2019-07-16 20:02:01 +03:00
leptun 8b1c687629 Lcd optimization - 1K of flash saved 2019-07-15 20:32:58 +03:00
Marek Bel 75fac9dab2 Do not kill printer if External SPI flash W25X20CL is not responding.
Remove internationalization macro for this message. It has no sense to be translated as internationalization in most cases doesn't work if it is not responding.
Show this message instead of splash screen if the error is encountered.
There is no additional delay or wait for click, as such functions doesn't work in setup function.
2019-04-16 22:20:53 +02:00
Marek Bel 95b0506284 Make lcd_long_press_active private. 2018-11-06 20:48:28 +01:00
PavelSindler 3a58489c6a
Merge pull request #1169 from mkbel/remove_duplicate_debouncing_4
Remove duplicate debouncing 4
2018-10-02 11:21:17 +02:00
Marek Bel 05d3b7032d Update documentation. 2018-09-18 17:48:11 +02:00
Marek Bel a7fdfdd258 Put repetitive code into separate function. No change in functionality. 2018-09-18 17:15:13 +02:00
Marek Bel a687b8e64a Don't enable lcd update inside mmu_eject_filament(). 2018-09-17 17:12:36 +02:00