123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /**
- * Lightweight Status Screen for the RepRapDiscount Full
- * Graphics Smart Controller (ST7920-based 128x64 LCD)
- *
- * (c) 2017 Aleph Objects, Inc.
- *
- * The code in this page is free software: you can
- * redistribute it and/or modify it under the terms of the GNU
- * General Public License (GNU GPL) as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option)
- * any later version. The code is distributed WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
- *
- */
- #ifndef STATUS_SCREEN_LITE_ST7920_CLASS_H
- #define STATUS_SCREEN_LITE_ST7920_CLASS_H
- #include "macros.h"
- #include "duration_t.h"
- typedef const __FlashStringHelper *progmem_str;
- class ST7920_Lite_Status_Screen {
- private:
- static struct st7920_state_t {
- uint8_t synced : 1; // Whether a sync has been sent
- uint8_t cmd : 1; // Whether the sync was cmd or data
- uint8_t extended : 1;
- uint8_t graphics : 1;
- uint8_t sa : 1;
- } current_bits;
- static void cs();
- static void ncs();
- static void sync_cmd();
- static void sync_dat();
- static void write_byte(const uint8_t w);
- FORCE_INLINE static void write_word(const uint16_t w) {
- write_byte((w >> 8) & 0xFF);
- write_byte((w >> 0) & 0xFF);
- }
- static void cmd(const uint8_t cmd);
- static void begin_data();
- static void write_str(const char *str);
- static void write_str(const char *str, const uint8_t len);
- static void write_str_P(const char * const str);
- static void write_str(progmem_str str);
- static void write_number(const int16_t value, const uint8_t digits=3);
- static void _extended_function_set(const bool extended, const bool graphics);
- static void _scroll_or_addr_select(const bool sa);
- static void reset_state_from_unknown();
- static void home();
- static void display_status(const bool display_on, const bool cursor_on, const bool blink_on);
- static void extended_function_set(const bool extended);
- static void graphics(const bool graphics);
- static void entry_mode_select(const bool ac_increase, const bool shift);
- static void scroll_or_addr_select(const bool sa);
- static void set_ddram_address(const uint8_t addr);
- static void set_cgram_address(const uint8_t addr);
- static void set_gdram_address(const uint8_t x, const uint8_t y);
- static void clear();
- static void clear_ddram();
- static void clear_gdram();
- static void load_cgram_icon(const uint16_t addr, const void *data);
- static void draw_gdram_icon(uint8_t x, uint8_t y, const void *data);
- static uint8_t string_checksum(const char *str);
- protected:
- static void draw_degree_symbol(uint8_t x, uint8_t y, bool draw);
- static void draw_static_elements();
- static void draw_progress_bar(const uint8_t value);
- static void draw_fan_icon(const bool whichIcon);
- static void draw_heat_icon(const bool whichIcon, const bool heating);
- static void draw_temps(uint8_t line, const int16_t temp, const int16_t target, bool showTarget, bool targetStateChange);
- static void draw_extruder_1_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
- static void draw_extruder_2_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
- static void draw_bed_temp(const int16_t temp, const int16_t target, bool forceUpdate = false);
- static void draw_fan_speed(const uint8_t value);
- static void draw_print_time(const duration_t &elapsed);
- static void draw_feedrate_percentage(const uint8_t percentage);
- static void draw_status_message(const char *str);
- static void draw_position(const float x, const float y, const float z, bool position_known = true);
- static bool indicators_changed();
- static bool position_changed();
- static bool blink_changed();
- static bool status_changed();
- static void update_indicators(const bool forceUpdate);
- static void update_position(const bool forceUpdate, bool resetChecksum);
- static void update_status_or_position(bool forceUpdate);
- static void update_progress(const bool forceUpdate);
- public:
- static void update(const bool forceUpdate);
- static void on_entry();
- static void on_exit();
- static void clear_text_buffer();
- };
- #endif // STATUS_SCREEN_LITE_ST7920_CLASS_H
|