/Arduino/libraries/U8g2/src/U8g2lib.h

https://github.com/CongducPham/LowCostLoRaGw · C Header · 8258 lines · 8093 code · 72 blank · 93 comment · 2 complexity · bcde866006d6bfc9de705e247aa19a85 MD5 · raw file

Large files are truncated click here to view the full file

  1. /*
  2. U8g2lib.h
  3. C++ Arduino wrapper for the u8g2 struct and c functions for the u8g2 library
  4. Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
  5. Copyright (c) 2016, olikraus@gmail.com
  6. All rights reserved.
  7. Redistribution and use in source and binary forms, with or without modification,
  8. are permitted provided that the following conditions are met:
  9. * Redistributions of source code must retain the above copyright notice, this list
  10. of conditions and the following disclaimer.
  11. * Redistributions in binary form must reproduce the above copyright notice, this
  12. list of conditions and the following disclaimer in the documentation and/or other
  13. materials provided with the distribution.
  14. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  15. CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  16. INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  17. MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  18. DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  19. CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  20. SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  21. NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  22. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  23. CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  24. STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  25. ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  26. ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. Note:
  28. U8x8lib.h is included for the declaration of the helper functions in U8x8lib.cpp.
  29. U8g2 class is based on the u8g2 struct from clib/u8g2.h, the U8x8 class from U8x8lib.h is not used.
  30. */
  31. #ifndef _U8G2LIB_HH
  32. #define _U8G2LIB_HH
  33. #include <Arduino.h>
  34. #include <Print.h>
  35. #include <U8x8lib.h>
  36. #include "clib/u8g2.h"
  37. class U8G2 : public Print
  38. {
  39. protected:
  40. u8g2_t u8g2;
  41. u8x8_char_cb cpp_next_cb; /* the cpp interface has its own decoding function for the Arduino print command */
  42. public:
  43. u8g2_uint_t tx, ty;
  44. U8G2(void) { cpp_next_cb = u8x8_ascii_next; home(); }
  45. u8x8_t *getU8x8(void) { return u8g2_GetU8x8(&u8g2); }
  46. u8g2_t *getU8g2(void) { return &u8g2; }
  47. void setI2CAddress(uint8_t adr) { u8g2_SetI2CAddress(&u8g2, adr); }
  48. void enableUTF8Print(void) { cpp_next_cb = u8x8_utf8_next; }
  49. void disableUTF8Print(void) { cpp_next_cb = u8x8_ascii_next; }
  50. /* u8x8 interface */
  51. uint8_t getCols(void) { return u8x8_GetCols(u8g2_GetU8x8(&u8g2)); }
  52. uint8_t getRows(void) { return u8x8_GetRows(u8g2_GetU8x8(&u8g2)); }
  53. void drawTile(uint8_t x, uint8_t y, uint8_t cnt, uint8_t *tile_ptr) {
  54. u8x8_DrawTile(u8g2_GetU8x8(&u8g2), x, y, cnt, tile_ptr); }
  55. #ifdef U8X8_WITH_USER_PTR
  56. void *getUserPtr() { return u8g2_GetUserPtr(&u8g2); }
  57. void setUserPtr(void *p) { u8g2_SetUserPtr(&u8g2, p); }
  58. #endif
  59. #ifdef U8X8_USE_PINS
  60. /* set the menu pins before calling begin() or initDisplay() */
  61. void setMenuSelectPin(uint8_t val) {
  62. u8g2_SetMenuSelectPin(&u8g2, val); }
  63. void setMenuPrevPin(uint8_t val) {
  64. u8g2_SetMenuPrevPin(&u8g2, val); }
  65. void setMenuNextPin(uint8_t val) {
  66. u8g2_SetMenuNextPin(&u8g2, val); }
  67. void setMenuUpPin(uint8_t val) {
  68. u8g2_SetMenuUpPin(&u8g2, val); }
  69. void setMenuDownPin(uint8_t val) {
  70. u8g2_SetMenuDownPin(&u8g2, val); }
  71. void setMenuHomePin(uint8_t val) {
  72. u8g2_SetMenuHomePin(&u8g2, val); }
  73. #endif
  74. /* return 0 for no event or U8X8_MSG_GPIO_MENU_SELECT, */
  75. /* U8X8_MSG_GPIO_MENU_NEXT, U8X8_MSG_GPIO_MENU_PREV, */
  76. /* U8X8_MSG_GPIO_MENU_HOME */
  77. uint8_t getMenuEvent(void) { return u8x8_GetMenuEvent(u8g2_GetU8x8(&u8g2)); }
  78. void initDisplay(void) {
  79. u8g2_InitDisplay(&u8g2); }
  80. void clearDisplay(void) {
  81. u8g2_ClearDisplay(&u8g2); }
  82. void setPowerSave(uint8_t is_enable) {
  83. u8g2_SetPowerSave(&u8g2, is_enable); }
  84. void setFlipMode(uint8_t mode) {
  85. u8g2_SetFlipMode(&u8g2, mode); }
  86. void setContrast(uint8_t value) {
  87. u8g2_SetContrast(&u8g2, value); }
  88. void setDisplayRotation(const u8g2_cb_t *u8g2_cb) {
  89. u8g2_SetDisplayRotation(&u8g2, u8g2_cb); }
  90. void begin(void) {
  91. /* note: call to u8x8_utf8_init is not required here, this is done in the setup procedures before */
  92. initDisplay(); clearDisplay(); setPowerSave(0); }
  93. void beginSimple(void) {
  94. /* does not clear the display and does not wake up the display */
  95. /* user is responsible for calling clearDisplay() and setPowerSave(0) */
  96. initDisplay(); }
  97. #ifdef U8X8_USE_PINS
  98. /* use U8X8_PIN_NONE if a pin is not required */
  99. void begin(uint8_t menu_select_pin, uint8_t menu_next_pin, uint8_t menu_prev_pin, uint8_t menu_up_pin = U8X8_PIN_NONE, uint8_t menu_down_pin = U8X8_PIN_NONE, uint8_t menu_home_pin = U8X8_PIN_NONE) {
  100. setMenuSelectPin(menu_select_pin);
  101. setMenuNextPin(menu_next_pin);
  102. setMenuPrevPin(menu_prev_pin);
  103. setMenuUpPin(menu_up_pin);
  104. setMenuDownPin(menu_down_pin);
  105. setMenuHomePin(menu_home_pin);
  106. begin(); }
  107. #endif
  108. /* u8g2 */
  109. u8g2_uint_t getDisplayHeight() { return u8g2_GetDisplayHeight(&u8g2); }
  110. u8g2_uint_t getDisplayWidth() { return u8g2_GetDisplayWidth(&u8g2); }
  111. /* u8g2_buffer.c */
  112. void sendBuffer(void) { u8g2_SendBuffer(&u8g2); }
  113. void clearBuffer(void) { u8g2_ClearBuffer(&u8g2); }
  114. void firstPage(void) { u8g2_FirstPage(&u8g2); }
  115. uint8_t nextPage(void) { return u8g2_NextPage(&u8g2); }
  116. uint8_t *getBufferPtr(void) { return u8g2_GetBufferPtr(&u8g2); }
  117. uint8_t getBufferTileHeight(void) { return u8g2_GetBufferTileHeight(&u8g2); }
  118. uint8_t getBufferTileWidth(void) { return u8g2_GetBufferTileWidth(&u8g2); }
  119. uint8_t getPageCurrTileRow(void) { return u8g2_GetBufferCurrTileRow(&u8g2); } // obsolete
  120. void setPageCurrTileRow(uint8_t row) { u8g2_SetBufferCurrTileRow(&u8g2, row); } // obsolete
  121. uint8_t getBufferCurrTileRow(void) { return u8g2_GetBufferCurrTileRow(&u8g2); }
  122. void setBufferCurrTileRow(uint8_t row) { u8g2_SetBufferCurrTileRow(&u8g2, row); }
  123. // this should be renamed to setBufferAutoClear
  124. void setAutoPageClear(uint8_t mode) { u8g2_SetAutoPageClear(&u8g2, mode); }
  125. /* clib/u8g2.hvline.c */
  126. void setDrawColor(uint8_t color_index) { u8g2_SetDrawColor(&u8g2, color_index); }
  127. uint8_t getDrawColor(void) { return u8g2_GetDrawColor(&u8g2); }
  128. void drawPixel(u8g2_uint_t x, u8g2_uint_t y) { u8g2_DrawPixel(&u8g2, x, y); }
  129. void drawHLine(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w) { u8g2_DrawHLine(&u8g2, x, y, w); }
  130. void drawVLine(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t h) { u8g2_DrawVLine(&u8g2, x, y, h); }
  131. void drawHVLine(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t len, uint8_t dir) {
  132. u8g2_DrawHVLine(&u8g2, x, y, len, dir); }
  133. /* u8g2_box.c */
  134. void drawFrame(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) { u8g2_DrawFrame(&u8g2, x, y, w, h); }
  135. void drawRFrame(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, u8g2_uint_t r) { u8g2_DrawRFrame(&u8g2, x, y, w, h,r); }
  136. void drawBox(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h) { u8g2_DrawBox(&u8g2, x, y, w, h); }
  137. void drawRBox(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, u8g2_uint_t r) { u8g2_DrawRBox(&u8g2, x, y, w, h,r); }
  138. /* u8g2_circle.c */
  139. void drawCircle(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rad, uint8_t opt = U8G2_DRAW_ALL) { u8g2_DrawCircle(&u8g2, x0, y0, rad, opt); }
  140. void drawDisc(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rad, uint8_t opt = U8G2_DRAW_ALL) { u8g2_DrawDisc(&u8g2, x0, y0, rad, opt); }
  141. void drawEllipse(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rx, u8g2_uint_t ry, uint8_t opt = U8G2_DRAW_ALL) { u8g2_DrawEllipse(&u8g2, x0, y0, rx, ry, opt); }
  142. void drawFilledEllipse(u8g2_uint_t x0, u8g2_uint_t y0, u8g2_uint_t rx, u8g2_uint_t ry, uint8_t opt = U8G2_DRAW_ALL) { u8g2_DrawFilledEllipse(&u8g2, x0, y0, rx, ry, opt); }
  143. /* u8g2_line.c */
  144. void drawLine(u8g2_uint_t x1, u8g2_uint_t y1, u8g2_uint_t x2, u8g2_uint_t y2)
  145. { u8g2_DrawLine(&u8g2, x1, y1, x2, y2); }
  146. /* u8g2_bitmap.c */
  147. void setBitmapMode(uint8_t is_transparent)
  148. { u8g2_SetBitmapMode(&u8g2, is_transparent); }
  149. void drawBitmap(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t cnt, u8g2_uint_t h, const uint8_t *bitmap)
  150. { u8g2_DrawBitmap(&u8g2, x, y, cnt, h, bitmap); }
  151. void drawXBM(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
  152. { u8g2_DrawXBM(&u8g2, x, y, w, h, bitmap); }
  153. void drawXBMP(u8g2_uint_t x, u8g2_uint_t y, u8g2_uint_t w, u8g2_uint_t h, const uint8_t *bitmap)
  154. { u8g2_DrawXBMP(&u8g2, x, y, w, h, bitmap); }
  155. /* u8g2_polygon.c */
  156. void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2)
  157. { u8g2_DrawTriangle(&u8g2, x0, y0, x1, y1, x2, y2); }
  158. /* u8g2_font.c */
  159. void setFont(const uint8_t *font) {u8g2_SetFont(&u8g2, font); }
  160. void setFontMode(uint8_t is_transparent) {u8g2_SetFontMode(&u8g2, is_transparent); }
  161. void setFontDirection(uint8_t dir) {u8g2_SetFontDirection(&u8g2, dir); }
  162. int8_t getAscent(void) { return u8g2_GetAscent(&u8g2); }
  163. int8_t getDescent(void) { return u8g2_GetDescent(&u8g2); }
  164. void setFontPosBaseline(void) { u8g2_SetFontPosBaseline(&u8g2); }
  165. void setFontPosBottom(void) { u8g2_SetFontPosBottom(&u8g2); }
  166. void setFontPosTop(void) { u8g2_SetFontPosTop(&u8g2); }
  167. void setFontPosCenter(void) { u8g2_SetFontPosCenter(&u8g2); }
  168. void setFontRefHeightText(void) { u8g2_SetFontRefHeightText(&u8g2); }
  169. void setFontRefHeightExtendedText(void) { u8g2_SetFontRefHeightExtendedText(&u8g2); }
  170. void setFontRefHeightAll(void) { u8g2_SetFontRefHeightAll(&u8g2); }
  171. /*
  172. uint8_t u8g2_IsGlyph(u8g2_t *u8g2, uint16_t requested_encoding);
  173. int8_t u8g2_GetGlyphWidth(u8g2_t *u8g2, uint16_t requested_encoding);
  174. u8g2_uint_t u8g2_GetStrWidth(u8g2_t *u8g2, const char *s);
  175. u8g2_uint_t u8g2_GetUTF8Width(u8g2_t *u8g2, const char *str);
  176. */
  177. u8g2_uint_t drawGlyph(u8g2_uint_t x, u8g2_uint_t y, uint16_t encoding) { return u8g2_DrawGlyph(&u8g2, x, y, encoding); }
  178. u8g2_uint_t drawStr(u8g2_uint_t x, u8g2_uint_t y, const char *s) { return u8g2_DrawStr(&u8g2, x, y, s); }
  179. u8g2_uint_t drawUTF8(u8g2_uint_t x, u8g2_uint_t y, const char *s) { return u8g2_DrawUTF8(&u8g2, x, y, s); }
  180. u8g2_uint_t drawExtUTF8(u8g2_uint_t x, u8g2_uint_t y, uint8_t to_left, const uint16_t *kerning_table, const char *s)
  181. { return u8g2_DrawExtUTF8(&u8g2, x, y, to_left, kerning_table, s); }
  182. u8g2_uint_t getStrWidth(const char *s) { return u8g2_GetStrWidth(&u8g2, s); }
  183. u8g2_uint_t getUTF8Width(const char *s) { return u8g2_GetUTF8Width(&u8g2, s); }
  184. // not required any more, enable UTF8 for print
  185. //void printUTF8(const char *s) { tx += u8g2_DrawUTF8(&u8g2, tx, ty, s); }
  186. /* virtual function for print base class */
  187. size_t write(uint8_t v) {
  188. uint16_t e = cpp_next_cb(&(u8g2.u8x8), v);
  189. if ( e < 0x0fffe )
  190. tx += u8g2_DrawGlyph(&u8g2, tx, ty, e);
  191. return 1;
  192. }
  193. size_t write(const uint8_t *buffer, size_t size) {
  194. size_t cnt = 0;
  195. while( size > 0 ) {
  196. cnt += write(*buffer++);
  197. size--;
  198. }
  199. return cnt;
  200. }
  201. /* user interface */
  202. /*
  203. uint8_t u8g2_UserInterfaceSelectionList(u8g2_t *u8g2, const char *title, uint8_t start_pos, const char *sl);
  204. uint8_t u8g2_UserInterfaceMessage(u8g2_t *u8g2, const char *title1, const char *title2, const char *title3, const char *buttons);
  205. uint8_t u8g2_UserInterfaceInputValue(u8g2_t *u8g2, const char *title, const char *pre, uint8_t *value, uint8_t lo, uint8_t hi, uint8_t digits, const char *post);
  206. */
  207. uint8_t userInterfaceSelectionList(const char *title, uint8_t start_pos, const char *sl) {
  208. return u8g2_UserInterfaceSelectionList(&u8g2, title, start_pos, sl); }
  209. uint8_t userInterfaceMessage(const char *title1, const char *title2, const char *title3, const char *buttons) {
  210. return u8g2_UserInterfaceMessage(&u8g2, title1, title2, title3, buttons); }
  211. uint8_t userInterfaceInputValue(const char *title, const char *pre, uint8_t *value, uint8_t lo, uint8_t hi, uint8_t digits, const char *post) {
  212. return u8g2_UserInterfaceInputValue(&u8g2, title, pre, value, lo, hi, digits, post); }
  213. /* LiquidCrystal compatible functions */
  214. void home(void) { tx = 0; ty = 0; u8x8_utf8_init(u8g2_GetU8x8(&u8g2)); }
  215. void clear(void) { home(); clearDisplay(); clearBuffer(); }
  216. void noDisplay(void) { u8g2_SetPowerSave(&u8g2, 1); }
  217. void display(void) { u8g2_SetPowerSave(&u8g2, 0); }
  218. void setCursor(u8g2_uint_t x, u8g2_uint_t y) { tx = x; ty = y; }
  219. /* u8glib compatible functions */
  220. void sleepOn(void) { u8g2_SetPowerSave(&u8g2, 1); }
  221. void sleepOff(void) { u8g2_SetPowerSave(&u8g2, 0); }
  222. void setColorIndex(uint8_t color_index) { u8g2_SetDrawColor(&u8g2, color_index); }
  223. uint8_t getColorIndex(void) { return u8g2_GetDrawColor(&u8g2); }
  224. int8_t getFontAscent(void) { return u8g2_GetAscent(&u8g2); }
  225. int8_t getFontDescent(void) { return u8g2_GetDescent(&u8g2); }
  226. u8g2_uint_t getHeight() { return u8g2_GetDisplayHeight(&u8g2); }
  227. u8g2_uint_t getWidth() { return u8g2_GetDisplayWidth(&u8g2); }
  228. };
  229. /*
  230. U8G2_<controller>_<display>_<memory>_<communication>
  231. memory
  232. "1" one page
  233. "2" two pages
  234. "f" full frame buffer
  235. communication
  236. "SW SPI"
  237. */
  238. #ifdef U8X8_USE_PINS
  239. /* Arduino constructor list start */
  240. /* generated code (codebuild), u8g2 project */
  241. class U8G2_SSD1305_128X32_NONAME_1_4W_SW_SPI : public U8G2 {
  242. public: U8G2_SSD1305_128X32_NONAME_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  243. u8g2_Setup_ssd1305_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  244. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  245. }
  246. };
  247. class U8G2_SSD1305_128X32_NONAME_1_4W_HW_SPI : public U8G2 {
  248. public: U8G2_SSD1305_128X32_NONAME_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  249. u8g2_Setup_ssd1305_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  250. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  251. }
  252. };
  253. class U8G2_SSD1305_128X32_NONAME_1_2ND_4W_HW_SPI : public U8G2 {
  254. public: U8G2_SSD1305_128X32_NONAME_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  255. u8g2_Setup_ssd1305_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  256. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  257. }
  258. };
  259. class U8G2_SSD1305_128X32_NONAME_1_6800 : public U8G2 {
  260. public: U8G2_SSD1305_128X32_NONAME_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  261. u8g2_Setup_ssd1305_128x32_noname_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  262. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  263. }
  264. };
  265. class U8G2_SSD1305_128X32_NONAME_1_8080 : public U8G2 {
  266. public: U8G2_SSD1305_128X32_NONAME_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  267. u8g2_Setup_ssd1305_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  268. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  269. }
  270. };
  271. class U8G2_SSD1305_128X32_NONAME_2_4W_SW_SPI : public U8G2 {
  272. public: U8G2_SSD1305_128X32_NONAME_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  273. u8g2_Setup_ssd1305_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  274. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  275. }
  276. };
  277. class U8G2_SSD1305_128X32_NONAME_2_4W_HW_SPI : public U8G2 {
  278. public: U8G2_SSD1305_128X32_NONAME_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  279. u8g2_Setup_ssd1305_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  280. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  281. }
  282. };
  283. class U8G2_SSD1305_128X32_NONAME_2_2ND_4W_HW_SPI : public U8G2 {
  284. public: U8G2_SSD1305_128X32_NONAME_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  285. u8g2_Setup_ssd1305_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  286. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  287. }
  288. };
  289. class U8G2_SSD1305_128X32_NONAME_2_6800 : public U8G2 {
  290. public: U8G2_SSD1305_128X32_NONAME_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  291. u8g2_Setup_ssd1305_128x32_noname_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  292. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  293. }
  294. };
  295. class U8G2_SSD1305_128X32_NONAME_2_8080 : public U8G2 {
  296. public: U8G2_SSD1305_128X32_NONAME_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  297. u8g2_Setup_ssd1305_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  298. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  299. }
  300. };
  301. class U8G2_SSD1305_128X32_NONAME_F_4W_SW_SPI : public U8G2 {
  302. public: U8G2_SSD1305_128X32_NONAME_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  303. u8g2_Setup_ssd1305_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  304. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  305. }
  306. };
  307. class U8G2_SSD1305_128X32_NONAME_F_4W_HW_SPI : public U8G2 {
  308. public: U8G2_SSD1305_128X32_NONAME_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  309. u8g2_Setup_ssd1305_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  310. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  311. }
  312. };
  313. class U8G2_SSD1305_128X32_NONAME_F_2ND_4W_HW_SPI : public U8G2 {
  314. public: U8G2_SSD1305_128X32_NONAME_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  315. u8g2_Setup_ssd1305_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  316. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  317. }
  318. };
  319. class U8G2_SSD1305_128X32_NONAME_F_6800 : public U8G2 {
  320. public: U8G2_SSD1305_128X32_NONAME_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  321. u8g2_Setup_ssd1305_128x32_noname_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  322. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  323. }
  324. };
  325. class U8G2_SSD1305_128X32_NONAME_F_8080 : public U8G2 {
  326. public: U8G2_SSD1305_128X32_NONAME_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  327. u8g2_Setup_ssd1305_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  328. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  329. }
  330. };
  331. class U8G2_SSD1305_128X32_NONAME_1_SW_I2C : public U8G2 {
  332. public: U8G2_SSD1305_128X32_NONAME_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  333. u8g2_Setup_ssd1305_i2c_128x32_noname_1(&u8g2, rotation, u8x8_byte_sw_i2c, u8x8_gpio_and_delay_arduino);
  334. u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset);
  335. }
  336. };
  337. class U8G2_SSD1305_128X32_NONAME_1_HW_I2C : public U8G2 {
  338. public: U8G2_SSD1305_128X32_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() {
  339. u8g2_Setup_ssd1305_i2c_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino);
  340. u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data);
  341. }
  342. };
  343. class U8G2_SSD1305_128X32_NONAME_1_2ND_HW_I2C : public U8G2 {
  344. public: U8G2_SSD1305_128X32_NONAME_1_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  345. u8g2_Setup_ssd1305_i2c_128x32_noname_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino);
  346. u8x8_SetPin_HW_I2C(getU8x8(), reset);
  347. }
  348. };
  349. class U8G2_SSD1305_128X32_NONAME_2_SW_I2C : public U8G2 {
  350. public: U8G2_SSD1305_128X32_NONAME_2_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  351. u8g2_Setup_ssd1305_i2c_128x32_noname_2(&u8g2, rotation, u8x8_byte_sw_i2c, u8x8_gpio_and_delay_arduino);
  352. u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset);
  353. }
  354. };
  355. class U8G2_SSD1305_128X32_NONAME_2_HW_I2C : public U8G2 {
  356. public: U8G2_SSD1305_128X32_NONAME_2_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() {
  357. u8g2_Setup_ssd1305_i2c_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino);
  358. u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data);
  359. }
  360. };
  361. class U8G2_SSD1305_128X32_NONAME_2_2ND_HW_I2C : public U8G2 {
  362. public: U8G2_SSD1305_128X32_NONAME_2_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  363. u8g2_Setup_ssd1305_i2c_128x32_noname_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino);
  364. u8x8_SetPin_HW_I2C(getU8x8(), reset);
  365. }
  366. };
  367. class U8G2_SSD1305_128X32_NONAME_F_SW_I2C : public U8G2 {
  368. public: U8G2_SSD1305_128X32_NONAME_F_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  369. u8g2_Setup_ssd1305_i2c_128x32_noname_f(&u8g2, rotation, u8x8_byte_sw_i2c, u8x8_gpio_and_delay_arduino);
  370. u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset);
  371. }
  372. };
  373. class U8G2_SSD1305_128X32_NONAME_F_HW_I2C : public U8G2 {
  374. public: U8G2_SSD1305_128X32_NONAME_F_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() {
  375. u8g2_Setup_ssd1305_i2c_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino);
  376. u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data);
  377. }
  378. };
  379. class U8G2_SSD1305_128X32_NONAME_F_2ND_HW_I2C : public U8G2 {
  380. public: U8G2_SSD1305_128X32_NONAME_F_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  381. u8g2_Setup_ssd1305_i2c_128x32_noname_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino);
  382. u8x8_SetPin_HW_I2C(getU8x8(), reset);
  383. }
  384. };
  385. class U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI : public U8G2 {
  386. public: U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  387. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  388. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  389. }
  390. };
  391. class U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI : public U8G2 {
  392. public: U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  393. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  394. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  395. }
  396. };
  397. class U8G2_SSD1306_128X64_NONAME_1_2ND_4W_HW_SPI : public U8G2 {
  398. public: U8G2_SSD1306_128X64_NONAME_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  399. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  400. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  401. }
  402. };
  403. class U8G2_SSD1306_128X64_NONAME_1_3W_SW_SPI : public U8G2 {
  404. public: U8G2_SSD1306_128X64_NONAME_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  405. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  406. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  407. }
  408. };
  409. class U8G2_SSD1306_128X64_NONAME_1_6800 : public U8G2 {
  410. public: U8G2_SSD1306_128X64_NONAME_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  411. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  412. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  413. }
  414. };
  415. class U8G2_SSD1306_128X64_NONAME_1_8080 : public U8G2 {
  416. public: U8G2_SSD1306_128X64_NONAME_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  417. u8g2_Setup_ssd1306_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  418. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  419. }
  420. };
  421. class U8G2_SSD1306_128X64_VCOMH0_1_4W_SW_SPI : public U8G2 {
  422. public: U8G2_SSD1306_128X64_VCOMH0_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  423. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  424. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  425. }
  426. };
  427. class U8G2_SSD1306_128X64_VCOMH0_1_4W_HW_SPI : public U8G2 {
  428. public: U8G2_SSD1306_128X64_VCOMH0_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  429. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  430. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  431. }
  432. };
  433. class U8G2_SSD1306_128X64_VCOMH0_1_2ND_4W_HW_SPI : public U8G2 {
  434. public: U8G2_SSD1306_128X64_VCOMH0_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  435. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  436. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  437. }
  438. };
  439. class U8G2_SSD1306_128X64_VCOMH0_1_3W_SW_SPI : public U8G2 {
  440. public: U8G2_SSD1306_128X64_VCOMH0_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  441. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  442. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  443. }
  444. };
  445. class U8G2_SSD1306_128X64_VCOMH0_1_6800 : public U8G2 {
  446. public: U8G2_SSD1306_128X64_VCOMH0_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  447. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  448. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  449. }
  450. };
  451. class U8G2_SSD1306_128X64_VCOMH0_1_8080 : public U8G2 {
  452. public: U8G2_SSD1306_128X64_VCOMH0_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  453. u8g2_Setup_ssd1306_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  454. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  455. }
  456. };
  457. class U8G2_SSD1306_128X64_ALT0_1_4W_SW_SPI : public U8G2 {
  458. public: U8G2_SSD1306_128X64_ALT0_1_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  459. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  460. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  461. }
  462. };
  463. class U8G2_SSD1306_128X64_ALT0_1_4W_HW_SPI : public U8G2 {
  464. public: U8G2_SSD1306_128X64_ALT0_1_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  465. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  466. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  467. }
  468. };
  469. class U8G2_SSD1306_128X64_ALT0_1_2ND_4W_HW_SPI : public U8G2 {
  470. public: U8G2_SSD1306_128X64_ALT0_1_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  471. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  472. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  473. }
  474. };
  475. class U8G2_SSD1306_128X64_ALT0_1_3W_SW_SPI : public U8G2 {
  476. public: U8G2_SSD1306_128X64_ALT0_1_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  477. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  478. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  479. }
  480. };
  481. class U8G2_SSD1306_128X64_ALT0_1_6800 : public U8G2 {
  482. public: U8G2_SSD1306_128X64_ALT0_1_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  483. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  484. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  485. }
  486. };
  487. class U8G2_SSD1306_128X64_ALT0_1_8080 : public U8G2 {
  488. public: U8G2_SSD1306_128X64_ALT0_1_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  489. u8g2_Setup_ssd1306_128x64_alt0_1(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  490. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  491. }
  492. };
  493. class U8G2_SSD1306_128X64_NONAME_2_4W_SW_SPI : public U8G2 {
  494. public: U8G2_SSD1306_128X64_NONAME_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  495. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  496. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  497. }
  498. };
  499. class U8G2_SSD1306_128X64_NONAME_2_4W_HW_SPI : public U8G2 {
  500. public: U8G2_SSD1306_128X64_NONAME_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  501. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  502. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  503. }
  504. };
  505. class U8G2_SSD1306_128X64_NONAME_2_2ND_4W_HW_SPI : public U8G2 {
  506. public: U8G2_SSD1306_128X64_NONAME_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  507. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  508. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  509. }
  510. };
  511. class U8G2_SSD1306_128X64_NONAME_2_3W_SW_SPI : public U8G2 {
  512. public: U8G2_SSD1306_128X64_NONAME_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  513. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  514. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  515. }
  516. };
  517. class U8G2_SSD1306_128X64_NONAME_2_6800 : public U8G2 {
  518. public: U8G2_SSD1306_128X64_NONAME_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  519. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  520. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  521. }
  522. };
  523. class U8G2_SSD1306_128X64_NONAME_2_8080 : public U8G2 {
  524. public: U8G2_SSD1306_128X64_NONAME_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  525. u8g2_Setup_ssd1306_128x64_noname_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  526. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  527. }
  528. };
  529. class U8G2_SSD1306_128X64_VCOMH0_2_4W_SW_SPI : public U8G2 {
  530. public: U8G2_SSD1306_128X64_VCOMH0_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  531. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  532. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  533. }
  534. };
  535. class U8G2_SSD1306_128X64_VCOMH0_2_4W_HW_SPI : public U8G2 {
  536. public: U8G2_SSD1306_128X64_VCOMH0_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  537. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  538. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  539. }
  540. };
  541. class U8G2_SSD1306_128X64_VCOMH0_2_2ND_4W_HW_SPI : public U8G2 {
  542. public: U8G2_SSD1306_128X64_VCOMH0_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  543. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  544. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  545. }
  546. };
  547. class U8G2_SSD1306_128X64_VCOMH0_2_3W_SW_SPI : public U8G2 {
  548. public: U8G2_SSD1306_128X64_VCOMH0_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  549. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  550. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  551. }
  552. };
  553. class U8G2_SSD1306_128X64_VCOMH0_2_6800 : public U8G2 {
  554. public: U8G2_SSD1306_128X64_VCOMH0_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  555. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  556. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  557. }
  558. };
  559. class U8G2_SSD1306_128X64_VCOMH0_2_8080 : public U8G2 {
  560. public: U8G2_SSD1306_128X64_VCOMH0_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  561. u8g2_Setup_ssd1306_128x64_vcomh0_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  562. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  563. }
  564. };
  565. class U8G2_SSD1306_128X64_ALT0_2_4W_SW_SPI : public U8G2 {
  566. public: U8G2_SSD1306_128X64_ALT0_2_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  567. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  568. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  569. }
  570. };
  571. class U8G2_SSD1306_128X64_ALT0_2_4W_HW_SPI : public U8G2 {
  572. public: U8G2_SSD1306_128X64_ALT0_2_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  573. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  574. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  575. }
  576. };
  577. class U8G2_SSD1306_128X64_ALT0_2_2ND_4W_HW_SPI : public U8G2 {
  578. public: U8G2_SSD1306_128X64_ALT0_2_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  579. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  580. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  581. }
  582. };
  583. class U8G2_SSD1306_128X64_ALT0_2_3W_SW_SPI : public U8G2 {
  584. public: U8G2_SSD1306_128X64_ALT0_2_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  585. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  586. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  587. }
  588. };
  589. class U8G2_SSD1306_128X64_ALT0_2_6800 : public U8G2 {
  590. public: U8G2_SSD1306_128X64_ALT0_2_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  591. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  592. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  593. }
  594. };
  595. class U8G2_SSD1306_128X64_ALT0_2_8080 : public U8G2 {
  596. public: U8G2_SSD1306_128X64_ALT0_2_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  597. u8g2_Setup_ssd1306_128x64_alt0_2(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  598. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  599. }
  600. };
  601. class U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI : public U8G2 {
  602. public: U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  603. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  604. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  605. }
  606. };
  607. class U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI : public U8G2 {
  608. public: U8G2_SSD1306_128X64_NONAME_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  609. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  610. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  611. }
  612. };
  613. class U8G2_SSD1306_128X64_NONAME_F_2ND_4W_HW_SPI : public U8G2 {
  614. public: U8G2_SSD1306_128X64_NONAME_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  615. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  616. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  617. }
  618. };
  619. class U8G2_SSD1306_128X64_NONAME_F_3W_SW_SPI : public U8G2 {
  620. public: U8G2_SSD1306_128X64_NONAME_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  621. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  622. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  623. }
  624. };
  625. class U8G2_SSD1306_128X64_NONAME_F_6800 : public U8G2 {
  626. public: U8G2_SSD1306_128X64_NONAME_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  627. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  628. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  629. }
  630. };
  631. class U8G2_SSD1306_128X64_NONAME_F_8080 : public U8G2 {
  632. public: U8G2_SSD1306_128X64_NONAME_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  633. u8g2_Setup_ssd1306_128x64_noname_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  634. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  635. }
  636. };
  637. class U8G2_SSD1306_128X64_VCOMH0_F_4W_SW_SPI : public U8G2 {
  638. public: U8G2_SSD1306_128X64_VCOMH0_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  639. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  640. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  641. }
  642. };
  643. class U8G2_SSD1306_128X64_VCOMH0_F_4W_HW_SPI : public U8G2 {
  644. public: U8G2_SSD1306_128X64_VCOMH0_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  645. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  646. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  647. }
  648. };
  649. class U8G2_SSD1306_128X64_VCOMH0_F_2ND_4W_HW_SPI : public U8G2 {
  650. public: U8G2_SSD1306_128X64_VCOMH0_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  651. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  652. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  653. }
  654. };
  655. class U8G2_SSD1306_128X64_VCOMH0_F_3W_SW_SPI : public U8G2 {
  656. public: U8G2_SSD1306_128X64_VCOMH0_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  657. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  658. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  659. }
  660. };
  661. class U8G2_SSD1306_128X64_VCOMH0_F_6800 : public U8G2 {
  662. public: U8G2_SSD1306_128X64_VCOMH0_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  663. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  664. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  665. }
  666. };
  667. class U8G2_SSD1306_128X64_VCOMH0_F_8080 : public U8G2 {
  668. public: U8G2_SSD1306_128X64_VCOMH0_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  669. u8g2_Setup_ssd1306_128x64_vcomh0_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  670. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  671. }
  672. };
  673. class U8G2_SSD1306_128X64_ALT0_F_4W_SW_SPI : public U8G2 {
  674. public: U8G2_SSD1306_128X64_ALT0_F_4W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  675. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_arduino_4wire_sw_spi, u8x8_gpio_and_delay_arduino);
  676. u8x8_SetPin_4Wire_SW_SPI(getU8x8(), clock, data, cs, dc, reset);
  677. }
  678. };
  679. class U8G2_SSD1306_128X64_ALT0_F_4W_HW_SPI : public U8G2 {
  680. public: U8G2_SSD1306_128X64_ALT0_F_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  681. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
  682. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  683. }
  684. };
  685. class U8G2_SSD1306_128X64_ALT0_F_2ND_4W_HW_SPI : public U8G2 {
  686. public: U8G2_SSD1306_128X64_ALT0_F_2ND_4W_HW_SPI(const u8g2_cb_t *rotation, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  687. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_spi, u8x8_gpio_and_delay_arduino);
  688. u8x8_SetPin_4Wire_HW_SPI(getU8x8(), cs, dc, reset);
  689. }
  690. };
  691. class U8G2_SSD1306_128X64_ALT0_F_3W_SW_SPI : public U8G2 {
  692. public: U8G2_SSD1306_128X64_ALT0_F_3W_SW_SPI(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  693. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_3wire_sw_spi, u8x8_gpio_and_delay_arduino);
  694. u8x8_SetPin_3Wire_SW_SPI(getU8x8(), clock, data, cs, reset);
  695. }
  696. };
  697. class U8G2_SSD1306_128X64_ALT0_F_6800 : public U8G2 {
  698. public: U8G2_SSD1306_128X64_ALT0_F_6800(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  699. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_8bit_6800mode, u8x8_gpio_and_delay_arduino);
  700. u8x8_SetPin_8Bit_6800(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  701. }
  702. };
  703. class U8G2_SSD1306_128X64_ALT0_F_8080 : public U8G2 {
  704. public: U8G2_SSD1306_128X64_ALT0_F_8080(const u8g2_cb_t *rotation, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  705. u8g2_Setup_ssd1306_128x64_alt0_f(&u8g2, rotation, u8x8_byte_arduino_8bit_8080mode, u8x8_gpio_and_delay_arduino);
  706. u8x8_SetPin_8Bit_8080(getU8x8(), d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset);
  707. }
  708. };
  709. class U8G2_SSD1306_128X64_NONAME_1_SW_I2C : public U8G2 {
  710. public: U8G2_SSD1306_128X64_NONAME_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  711. u8g2_Setup_ssd1306_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_sw_i2c, u8x8_gpio_and_delay_arduino);
  712. u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset);
  713. }
  714. };
  715. class U8G2_SSD1306_128X64_NONAME_1_HW_I2C : public U8G2 {
  716. public: U8G2_SSD1306_128X64_NONAME_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() {
  717. u8g2_Setup_ssd1306_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino);
  718. u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data);
  719. }
  720. };
  721. class U8G2_SSD1306_128X64_NONAME_1_2ND_HW_I2C : public U8G2 {
  722. public: U8G2_SSD1306_128X64_NONAME_1_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  723. u8g2_Setup_ssd1306_i2c_128x64_noname_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino);
  724. u8x8_SetPin_HW_I2C(getU8x8(), reset);
  725. }
  726. };
  727. class U8G2_SSD1306_128X64_VCOMH0_1_SW_I2C : public U8G2 {
  728. public: U8G2_SSD1306_128X64_VCOMH0_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  729. u8g2_Setup_ssd1306_i2c_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_sw_i2c, u8x8_gpio_and_delay_arduino);
  730. u8x8_SetPin_SW_I2C(getU8x8(), clock, data, reset);
  731. }
  732. };
  733. class U8G2_SSD1306_128X64_VCOMH0_1_HW_I2C : public U8G2 {
  734. public: U8G2_SSD1306_128X64_VCOMH0_1_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE, uint8_t clock = U8X8_PIN_NONE, uint8_t data = U8X8_PIN_NONE) : U8G2() {
  735. u8g2_Setup_ssd1306_i2c_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino);
  736. u8x8_SetPin_HW_I2C(getU8x8(), reset, clock, data);
  737. }
  738. };
  739. class U8G2_SSD1306_128X64_VCOMH0_1_2ND_HW_I2C : public U8G2 {
  740. public: U8G2_SSD1306_128X64_VCOMH0_1_2ND_HW_I2C(const u8g2_cb_t *rotation, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  741. u8g2_Setup_ssd1306_i2c_128x64_vcomh0_1(&u8g2, rotation, u8x8_byte_arduino_2nd_hw_i2c, u8x8_gpio_and_delay_arduino);
  742. u8x8_SetPin_HW_I2C(getU8x8(), reset);
  743. }
  744. };
  745. class U8G2_SSD1306_128X64_ALT0_1_SW_I2C : public U8G2 {
  746. public: U8G2_SSD1306_128X64_ALT0_1_SW_I2C(const u8g2_cb_t *rotation, uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE) : U8G2() {
  747. u8g2_Setup