From 212eca7f8eb3517d3598d037b551142ace9044e9 Mon Sep 17 00:00:00 2001 From: Ruslan Popov Date: Wed, 23 Sep 2015 15:59:35 +0300 Subject: [PATCH] Configtool: add display page implementation. Most work by Ruslan Popov, collected from various commits and made compatible with regression tests by Traumflug. Display test code is now enabled by #defining DISPLAY_BUS to i2c_twi. --- config/board.3drag.h | 38 +++++++++++++++++++++++ config/board.cnc-shield-v3.h | 38 +++++++++++++++++++++++ config/board.gen3.h | 38 +++++++++++++++++++++++ config/board.gen6.h | 38 +++++++++++++++++++++++ config/board.gen7-arm.h | 38 +++++++++++++++++++++++ config/board.gen7-v1.1-v1.3.h | 38 +++++++++++++++++++++++ config/board.gen7-v1.4.h | 38 +++++++++++++++++++++++ config/board.melzi.h | 38 +++++++++++++++++++++++ config/board.nanoheart-v1.0.h | 38 +++++++++++++++++++++++ config/board.ramps-v1.2.h | 38 +++++++++++++++++++++++ config/board.ramps-v1.3.h | 38 +++++++++++++++++++++++ config/board.rumba.h | 38 +++++++++++++++++++++++ config/board.sanguinololu-v1.1.h | 38 +++++++++++++++++++++++ config/board.sanguinololu-v1.2.h | 38 +++++++++++++++++++++++ config/board.sanguish.h | 38 +++++++++++++++++++++++ config/board.sinaptec-at328-02.h | 38 +++++++++++++++++++++++ config/board.teensy++-v2.0.h | 38 +++++++++++++++++++++++ config/board.teensy-v2.0.h | 38 +++++++++++++++++++++++ config/board.tronxy.h | 38 +++++++++++++++++++++++ config_wrapper.h | 17 ++++++++++ configtool/board.generic.h | 38 +++++++++++++++++++++++ configtool/boardpanel.py | 39 +++++++++++++++++++++++ configtool/data.py | 2 ++ configtool/displaypage.py | 53 ++++++++++++++++++++++++++++++++ testcases/config.h.Profiling | 42 ++++++++++++++++++++++++- 25 files changed, 912 insertions(+), 1 deletion(-) create mode 100644 configtool/displaypage.py diff --git a/config/board.3drag.h b/config/board.3drag.h index 0a28439..62bd176 100644 --- a/config/board.3drag.h +++ b/config/board.3drag.h @@ -275,3 +275,41 @@ DEFINE_HEATER(fan, DIO8, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.cnc-shield-v3.h b/config/board.cnc-shield-v3.h index 2d5300c..ebc4880 100644 --- a/config/board.cnc-shield-v3.h +++ b/config/board.cnc-shield-v3.h @@ -271,3 +271,41 @@ DEFINE_HEATER(extruder, AIO2, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.gen3.h b/config/board.gen3.h index 35a23a6..3453af2 100644 --- a/config/board.gen3.h +++ b/config/board.gen3.h @@ -263,3 +263,41 @@ DEFINE_TEMP_SENSOR(noheater, TT_INTERCOM, AIO0, 0) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.gen6.h b/config/board.gen6.h index 40d445b..3eb8507 100644 --- a/config/board.gen6.h +++ b/config/board.gen6.h @@ -266,3 +266,41 @@ DEFINE_HEATER(extruder, DIO6, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.gen7-arm.h b/config/board.gen7-arm.h index c1e504d..9348d68 100644 --- a/config/board.gen7-arm.h +++ b/config/board.gen7-arm.h @@ -281,3 +281,41 @@ DEFINE_HEATER(bed, PIO1_9, 1, 10) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.gen7-v1.1-v1.3.h b/config/board.gen7-v1.1-v1.3.h index e2006a7..0671321 100644 --- a/config/board.gen7-v1.1-v1.3.h +++ b/config/board.gen7-v1.1-v1.3.h @@ -277,3 +277,41 @@ DEFINE_HEATER(bed, DIO3, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.gen7-v1.4.h b/config/board.gen7-v1.4.h index d134e65..3af88e2 100644 --- a/config/board.gen7-v1.4.h +++ b/config/board.gen7-v1.4.h @@ -278,3 +278,41 @@ DEFINE_HEATER(bed, DIO3, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.melzi.h b/config/board.melzi.h index d050ba5..1b127d7 100644 --- a/config/board.melzi.h +++ b/config/board.melzi.h @@ -279,3 +279,41 @@ DEFINE_HEATER(fan, DIO4, 0, 0) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.nanoheart-v1.0.h b/config/board.nanoheart-v1.0.h index 70c37ef..d46394d 100644 --- a/config/board.nanoheart-v1.0.h +++ b/config/board.nanoheart-v1.0.h @@ -275,3 +275,41 @@ DEFINE_HEATER(bed, DIO3, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS i2c_twi + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.ramps-v1.2.h b/config/board.ramps-v1.2.h index 5468707..c578e98 100644 --- a/config/board.ramps-v1.2.h +++ b/config/board.ramps-v1.2.h @@ -276,3 +276,41 @@ DEFINE_HEATER(fan, DIO9, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.ramps-v1.3.h b/config/board.ramps-v1.3.h index e1722d0..43880af 100644 --- a/config/board.ramps-v1.3.h +++ b/config/board.ramps-v1.3.h @@ -279,3 +279,41 @@ DEFINE_HEATER(fan, DIO9, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.rumba.h b/config/board.rumba.h index 50d4ac4..73a4767 100644 --- a/config/board.rumba.h +++ b/config/board.rumba.h @@ -279,3 +279,41 @@ DEFINE_HEATER(fan, DIO8, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.sanguinololu-v1.1.h b/config/board.sanguinololu-v1.1.h index 903c63a..9cc4cd4 100644 --- a/config/board.sanguinololu-v1.1.h +++ b/config/board.sanguinololu-v1.1.h @@ -275,3 +275,41 @@ DEFINE_HEATER(bed, DIO14, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.sanguinololu-v1.2.h b/config/board.sanguinololu-v1.2.h index 163bff8..a4765ce 100644 --- a/config/board.sanguinololu-v1.2.h +++ b/config/board.sanguinololu-v1.2.h @@ -275,3 +275,41 @@ DEFINE_HEATER(bed, DIO13, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.sanguish.h b/config/board.sanguish.h index 5b52dc1..8b9e82e 100644 --- a/config/board.sanguish.h +++ b/config/board.sanguish.h @@ -275,3 +275,41 @@ DEFINE_HEATER(bed, DIO4, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.sinaptec-at328-02.h b/config/board.sinaptec-at328-02.h index e5e6d33..a23d58e 100644 --- a/config/board.sinaptec-at328-02.h +++ b/config/board.sinaptec-at328-02.h @@ -278,3 +278,41 @@ DEFINE_HEATER(fan, DIO5, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.teensy++-v2.0.h b/config/board.teensy++-v2.0.h index 0c88d3b..3c440d9 100644 --- a/config/board.teensy++-v2.0.h +++ b/config/board.teensy++-v2.0.h @@ -275,3 +275,41 @@ DEFINE_HEATER(fan, DIO16, 0, 0) USB-equipped ATmegas, like the ATmega32U4, only. */ #define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.teensy-v2.0.h b/config/board.teensy-v2.0.h index 089d2b4..09e4d20 100644 --- a/config/board.teensy-v2.0.h +++ b/config/board.teensy-v2.0.h @@ -275,3 +275,41 @@ DEFINE_HEATER(fan, DIO8, 0, 0) USB-equipped ATmegas, like the ATmega32U4, only. */ #define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config/board.tronxy.h b/config/board.tronxy.h index 469e2b7..4b698ac 100644 --- a/config/board.tronxy.h +++ b/config/board.tronxy.h @@ -277,3 +277,41 @@ DEFINE_HEATER(fan, DIO4, 0, 1) USB-equipped ATmegas, like the ATmega32U4, only. */ //#define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/config_wrapper.h b/config_wrapper.h index d6ea720..d0b38db 100644 --- a/config_wrapper.h +++ b/config_wrapper.h @@ -1,4 +1,14 @@ +/** + Display bus stuff. This likely goes away soon or gets at least moved + elsewhere. +*/ +#define disabled 0 +#define direct_4bit 1 +#define direct_8bit 2 +#define i2c_twi 3 +#define spi 4 + /** Some stuff common to all config.h files. Put it here to allow files like board.*.config.h or printer.*.h to be moved to about everywhere in the @@ -42,6 +52,13 @@ #define SPI #endif +/** + Check wether we need I2C. +*/ +#if DISPLAY_BUS == i2c_twi + #define I2C +#endif + /** ACCELERATION_TEMPORAL doesn't support lookahead, yet. */ diff --git a/configtool/board.generic.h b/configtool/board.generic.h index acc0498..3668e67 100644 --- a/configtool/board.generic.h +++ b/configtool/board.generic.h @@ -263,3 +263,41 @@ USB-equipped ATmegas, like the ATmega32U4, only. */ #define USB_SERIAL + + +/***************************************************************************\ +* * +* 6. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 diff --git a/configtool/boardpanel.py b/configtool/boardpanel.py index 7e2c32a..523b4b1 100644 --- a/configtool/boardpanel.py +++ b/configtool/boardpanel.py @@ -11,11 +11,13 @@ from configtool.data import (defineValueFormat, reStartSensors, reEndSensors, reStartHeaters, reEndHeaters, reCandHeatPins, reCandThermPins, reCandProcessors, reCandCPUClocks, reFloatAttr, + reCandDisplayBuses, reCandDisplayTypes, reDefine, reDefineBL, reDefQS, reDefQSm, reDefQSm2, reDefBool, reDefBoolBL, reDefHT, reDefTS, reDefTT, reSensor, reHeater3, reHeater4, reTempTable4, reTempTable7) from configtool.pinoutspage import PinoutsPage +from configtool.displaypage import DisplayPage from configtool.sensorpage import SensorsPage from configtool.heaterspage import HeatersPage from configtool.communicationspage import CommunicationsPage @@ -58,6 +60,7 @@ class BoardPanel(wx.Panel): self.pgCpu = self.registerPage(CpuPage, "CPU") self.pgPins = self.registerPage(PinoutsPage, "Pinouts") + self.pgDisplay = self.registerPage(DisplayPage, "Display") self.pgHeaters = self.registerPage(HeatersPage, "Heaters") self.pgSensors = self.registerPage(SensorsPage, "Temperature Sensors", heatersPage = self.pgHeaters) @@ -215,6 +218,8 @@ class BoardPanel(wx.Panel): self.candThermPins = [] self.candProcessors = [] self.candClocks = [] + self.candDisplayBuses = [] + self.candDisplayTypes = [] self.tempTables = {} gatheringHelpText = False helpTextString = "" @@ -273,6 +278,8 @@ class BoardPanel(wx.Panel): self.candThermPins = [] self.candProcessors = [] self.candClocks = [] + self.candDisplayBuses = [] + self.candDisplayTypes = [] self.tempTables = {} gatheringHelpText = False @@ -338,6 +345,8 @@ class BoardPanel(wx.Panel): self.pgSensors.setCandidatePins(self.candThermPins) self.pgCpu.setCandidateProcessors(self.candProcessors) self.pgCpu.setCandidateClocks(self.candClocks) + self.pgDisplay.setCandidateDisplayBuses(self.candDisplayBuses) + self.pgDisplay.setCandidateDisplayTypes(self.candDisplayTypes) for pg in self.pages: pg.insertValues(self.cfgValues) @@ -422,6 +431,20 @@ class BoardPanel(wx.Panel): self.candClocks.append(t[0]) return True + m = reCandDisplayBuses.match(ln) + if m: + t = m.groups() + if len(t) == 1: + self.candDisplayBuses.append(t[0]) + return True + + m = reCandDisplayTypes.match(ln) + if m: + t = m.groups() + if len(t) == 1: + self.candDisplayTypes.append(t[0]) + return True + m = reDefTT.match(ln) if m: t = m.groups() @@ -545,6 +568,8 @@ class BoardPanel(wx.Panel): candHeatPinsWritten = False candProcessorsWritten = False candCPUClocksWritten = False + candDisplayBusesWritten = False + candDisplayTypesWritten = False for ln in self.cfgBuffer: m = reStartSensors.match(ln) @@ -633,6 +658,20 @@ class BoardPanel(wx.Panel): candCPUClocksWritten = True continue + if reCandDisplayBuses.match(ln): + if not candDisplayBusesWritten: + for value in self.candDisplayBuses: + fp.write("//#define DISPLAY_BUS_OPT {}\n".format(value)) + candDisplayBusesWritten = True + continue + + if reCandDisplayTypes.match(ln): + if not candDisplayTypesWritten: + for value in self.candDisplayTypes: + fp.write("//#define DISPLAY_TYPE_OPT {}\n".format(value)) + candDisplayTypesWritten = True + continue + m = reDefine.match(ln) if m: t = m.groups() diff --git a/configtool/data.py b/configtool/data.py index 67294cf..11d0fcd 100644 --- a/configtool/data.py +++ b/configtool/data.py @@ -51,6 +51,8 @@ reCandHeatPins = re.compile("^\s*//\s*#define\s+HEATER_PIN\s+(\w+)") reCandThermPins = re.compile("^\s*//\s*#define\s+TEMP_SENSOR_PIN\s+(\w+)") reCandProcessors = re.compile("^\s*//\s*#define\s+CPU_TYPE\s+(\w+)") reCandCPUClocks = re.compile("^\s*//\s*#define\s+F_CPU_OPT\s+(\w+)") +reCandDisplayBuses = re.compile("^\s*//\s*#define\s+DISPLAY_BUS_OPT\s+(\w+)") +reCandDisplayTypes = re.compile("^\s*//\s*#define\s+DISPLAY_TYPE_OPT\s+(\w+)") reHelpTextStart = re.compile("^\s*/\*\*\s+\\\\def\s+(.*)") reHelpTextEnd = re.compile("^\s*\*/") diff --git a/configtool/displaypage.py b/configtool/displaypage.py new file mode 100644 index 0000000..b102d12 --- /dev/null +++ b/configtool/displaypage.py @@ -0,0 +1,53 @@ + +import wx +from configtool.page import Page + +class DisplayPage(wx.Panel, Page): + def __init__(self, parent, nb, idPg, font): + wx.Panel.__init__(self, nb, wx.ID_ANY) + Page.__init__(self, font) + self.parent = parent + self.id = idPg + + self.labels = {'DISPLAY_BUS': "Display Bus:", + 'DISPLAY_TYPE': "Display Type:"} + self.buses = [] + self.types = [] + + sz = wx.GridBagSizer() + sz.AddSpacer((20, 40), pos = (0, 0)) + + k = 'DISPLAY_BUS' + ch = self.addChoice(k, self.buses, 0, 100, self.onChoice, size = (140, -1)) + sz.Add(ch, pos = (1, 1)) + sz.AddSpacer((100, 10), pos = (1, 2)) + + k = 'DISPLAY_TYPE' + ch = self.addChoice(k, self.types, 0, 100, self.onChoice, + size = (140, -1)) + sz.Add(ch, pos = (1, 3)) + + self.SetSizer(sz) + self.enableAll(False) + + def setCandidateDisplayBuses(self, busList): + k = 'DISPLAY_BUS' + self.choices[k].Clear() + for p in busList: + self.choices[k].Append(p) + self.buses = busList + + def setCandidateDisplayTypes(self, typeList): + k = 'DISPLAY_TYPE' + self.choices[k].Clear() + for c in typeList: + self.choices[k].Append(c) + self.types = typeList + + def insertValues(self, cfgValues): + Page.insertValues(self, cfgValues) + + if len(self.buses) > 0: + self.setChoice('DISPLAY_BUS', cfgValues, self.buses[0]) + if len(self.types) > 0: + self.setChoice('DISPLAY_TYPE', cfgValues, self.types[0]) diff --git a/testcases/config.h.Profiling b/testcases/config.h.Profiling index 64876f4..79e9c55 100644 --- a/testcases/config.h.Profiling +++ b/testcases/config.h.Profiling @@ -666,9 +666,49 @@ PWM value for 'off' */ + /***************************************************************************\ * * -* 8. APPENDIX A - PWMABLE PINS AND MAPPINGS * +* 8. DISPLAY SUPPORT * +* * +\***************************************************************************/ + +/** \def DISPLAY_BUS_OPT + + Display buses a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_BUS_OPT disabled +//#define DISPLAY_BUS_OPT direct_4bit +//#define DISPLAY_BUS_OPT direct_8bit +//#define DISPLAY_BUS_OPT i2c_twi +//#define DISPLAY_BUS_OPT spi + +/** \def DISPLAY_BUS + + The display bus in use. 'disabled' if there is no display. +*/ +#define DISPLAY_BUS disabled + +/** \def DISPLAY_TYPE_OPT + + Display types a user should be able to choose from in Configtool. All + commented out. +*/ +//#define DISPLAY_TYPE_OPT ssd1306 +//#define DISPLAY_TYPE_OPT lcd1602 + +/** \def DISPLAY_TYPE + + The type of display in use. +*/ +#define DISPLAY_TYPE ssd1306 + + + +/***************************************************************************\ +* * +* 9. APPENDIX A - PWMABLE PINS AND MAPPINGS * * * * * * list of PWM-able pins and corresponding timers *