From 7f087ae85496b1fb42fdbbed2224b3c8ecfe819e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= <ondra@ondrovo.com>
Date: Sun, 30 Oct 2022 23:00:53 +0100
Subject: [PATCH] initial

---
 .gitignore                                    |    2 +
 Makefile                                      |   95 +
 lib/libssd1306/README.txt                     |    5 +
 lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d     |   15 +
 lib/libssd1306/bld/intf/i2c/ssd1306_i2c.o     |  Bin 0 -> 7092 bytes
 .../bld/intf/i2c/ssd1306_i2c_embedded.d       |   16 +
 .../bld/intf/i2c/ssd1306_i2c_embedded.o       |  Bin 0 -> 20104 bytes
 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d |   16 +
 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.o |  Bin 0 -> 16548 bytes
 lib/libssd1306/bld/intf/spi/ssd1306_spi.d     |   15 +
 lib/libssd1306/bld/intf/spi/ssd1306_spi.o     |  Bin 0 -> 5916 bytes
 lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d |   15 +
 lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.o |  Bin 0 -> 16720 bytes
 lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d |   15 +
 lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.o |  Bin 0 -> 2196 bytes
 lib/libssd1306/bld/intf/ssd1306_interface.d   |   14 +
 lib/libssd1306/bld/intf/ssd1306_interface.o   |  Bin 0 -> 8680 bytes
 .../bld/intf/uart/ssd1306_uart_builtin.d      |   14 +
 .../bld/intf/uart/ssd1306_uart_builtin.o      |  Bin 0 -> 10360 bytes
 .../bld/intf/vga/atmega328p/vga128x64.d       |   14 +
 .../bld/intf/vga/atmega328p/vga128x64.o       |  Bin 0 -> 28540 bytes
 .../bld/intf/vga/atmega328p/vga96x40.d        |   14 +
 .../bld/intf/vga/atmega328p/vga96x40.o        |  Bin 0 -> 33624 bytes
 .../bld/intf/vga/esp32/CompositeOutput.d      |   14 +
 .../bld/intf/vga/esp32/CompositeOutput.o      |  Bin 0 -> 2304 bytes
 lib/libssd1306/bld/intf/vga/esp32/vga128x64.d |   14 +
 lib/libssd1306/bld/intf/vga/esp32/vga128x64.o |  Bin 0 -> 2540 bytes
 lib/libssd1306/bld/intf/vga/vga.d             |   13 +
 lib/libssd1306/bld/intf/vga/vga.o             |  Bin 0 -> 3256 bytes
 lib/libssd1306/bld/lcd/lcd_common.d           |   14 +
 lib/libssd1306/bld/lcd/lcd_common.o           |  Bin 0 -> 23528 bytes
 lib/libssd1306/bld/lcd/lcd_il9163.d           |   15 +
 lib/libssd1306/bld/lcd/lcd_il9163.o           |  Bin 0 -> 51224 bytes
 lib/libssd1306/bld/lcd/lcd_ili9341.d          |   15 +
 lib/libssd1306/bld/lcd/lcd_ili9341.o          |  Bin 0 -> 38508 bytes
 lib/libssd1306/bld/lcd/lcd_pcd8544.d          |   14 +
 lib/libssd1306/bld/lcd/lcd_pcd8544.o          |  Bin 0 -> 15596 bytes
 lib/libssd1306/bld/lcd/oled_sh1106.d          |   16 +
 lib/libssd1306/bld/lcd/oled_sh1106.o          |  Bin 0 -> 17052 bytes
 lib/libssd1306/bld/lcd/oled_ssd1306.d         |   16 +
 lib/libssd1306/bld/lcd/oled_ssd1306.o         |  Bin 0 -> 32172 bytes
 lib/libssd1306/bld/lcd/oled_ssd1325.d         |   14 +
 lib/libssd1306/bld/lcd/oled_ssd1325.o         |  Bin 0 -> 25464 bytes
 lib/libssd1306/bld/lcd/oled_ssd1327.d         |   14 +
 lib/libssd1306/bld/lcd/oled_ssd1327.o         |  Bin 0 -> 26560 bytes
 lib/libssd1306/bld/lcd/oled_ssd1331.d         |   15 +
 lib/libssd1306/bld/lcd/oled_ssd1331.o         |  Bin 0 -> 46700 bytes
 lib/libssd1306/bld/lcd/oled_ssd1351.d         |   15 +
 lib/libssd1306/bld/lcd/oled_ssd1351.o         |  Bin 0 -> 32348 bytes
 lib/libssd1306/bld/lcd/oled_template.d        |   14 +
 lib/libssd1306/bld/lcd/oled_template.o        |  Bin 0 -> 22540 bytes
 lib/libssd1306/bld/lcd/vga_monitor.d          |   14 +
 lib/libssd1306/bld/lcd/vga_monitor.o          |  Bin 0 -> 20376 bytes
 lib/libssd1306/bld/libssd1306.a               |  Bin 0 -> 1573852 bytes
 lib/libssd1306/bld/nano_engine/canvas.d       |   21 +
 lib/libssd1306/bld/nano_engine/canvas.o       |  Bin 0 -> 377256 bytes
 lib/libssd1306/bld/nano_engine/core.d         |   17 +
 lib/libssd1306/bld/nano_engine/core.o         |  Bin 0 -> 23308 bytes
 lib/libssd1306/bld/nano_gfx.d                 |   18 +
 lib/libssd1306/bld/nano_gfx.o                 |  Bin 0 -> 107164 bytes
 lib/libssd1306/bld/sprite_pool.d              |   19 +
 lib/libssd1306/bld/sprite_pool.o              |  Bin 0 -> 36140 bytes
 lib/libssd1306/bld/ssd1306_16bit.d            |   14 +
 lib/libssd1306/bld/ssd1306_16bit.o            |  Bin 0 -> 62876 bytes
 lib/libssd1306/bld/ssd1306_1bit.d             |   21 +
 lib/libssd1306/bld/ssd1306_1bit.o             |  Bin 0 -> 195580 bytes
 lib/libssd1306/bld/ssd1306_8bit.d             |   15 +
 lib/libssd1306/bld/ssd1306_8bit.o             |  Bin 0 -> 62976 bytes
 lib/libssd1306/bld/ssd1306_console.d          |   20 +
 lib/libssd1306/bld/ssd1306_console.o          |  Bin 0 -> 15248 bytes
 lib/libssd1306/bld/ssd1306_fonts.d            |   13 +
 lib/libssd1306/bld/ssd1306_fonts.o            |  Bin 0 -> 16688 bytes
 lib/libssd1306/bld/ssd1306_generic.d          |   21 +
 lib/libssd1306/bld/ssd1306_generic.o          |  Bin 0 -> 64856 bytes
 .../bld/ssd1306_hal/arduino/platform.d        |   16 +
 .../bld/ssd1306_hal/arduino/platform.o        |  Bin 0 -> 2292 bytes
 lib/libssd1306/bld/ssd1306_hal/avr/platform.d |   13 +
 lib/libssd1306/bld/ssd1306_hal/avr/platform.o |  Bin 0 -> 11416 bytes
 .../bld/ssd1306_hal/energia/platform.d        |   13 +
 .../bld/ssd1306_hal/energia/platform.o        |  Bin 0 -> 2292 bytes
 .../bld/ssd1306_hal/linux/platform.d          |    1 +
 .../bld/ssd1306_hal/linux/platform.o          |  Bin 0 -> 1124 bytes
 .../bld/ssd1306_hal/mingw/platform.d          |    1 +
 .../bld/ssd1306_hal/mingw/platform.o          |  Bin 0 -> 1124 bytes
 .../bld/ssd1306_hal/stm32/platform.d          |   13 +
 .../bld/ssd1306_hal/stm32/platform.o          |  Bin 0 -> 2192 bytes
 .../bld/ssd1306_hal/template/platform.d       |   13 +
 .../bld/ssd1306_hal/template/platform.o       |  Bin 0 -> 2200 bytes
 lib/libssd1306/bld/ssd1306_menu.d             |   18 +
 lib/libssd1306/bld/ssd1306_menu.o             |  Bin 0 -> 51752 bytes
 lib/libssd1306/bld/ssd1306_uart.d             |   13 +
 lib/libssd1306/bld/ssd1306_uart.o             |  Bin 0 -> 10932 bytes
 lib/libssd1306/src/Makefile.avr               |   47 +
 lib/libssd1306/src/Makefile.common            |  107 +
 lib/libssd1306/src/Makefile.energia           |    4 +
 lib/libssd1306/src/Makefile.esp32             |    5 +
 lib/libssd1306/src/Makefile.linux             |   38 +
 lib/libssd1306/src/Makefile.mingw32           |   42 +
 lib/libssd1306/src/Makefile.src               |   80 +
 lib/libssd1306/src/Makefile.stm32             |   49 +
 lib/libssd1306/src/README.md                  |  169 ++
 lib/libssd1306/src/doxygen.cfg                | 2499 +++++++++++++++++
 lib/libssd1306/src/font6x8.h                  |   23 +
 lib/libssd1306/src/intf/i2c/ssd1306_i2c.c     |   65 +
 lib/libssd1306/src/intf/i2c/ssd1306_i2c.h     |  112 +
 .../src/intf/i2c/ssd1306_i2c_conf.h           |   77 +
 .../src/intf/i2c/ssd1306_i2c_embedded.c       |  191 ++
 .../src/intf/i2c/ssd1306_i2c_embedded.h       |   63 +
 lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.c |  173 ++
 lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.h |   72 +
 lib/libssd1306/src/intf/spi/ssd1306_spi.c     |   56 +
 lib/libssd1306/src/intf/spi/ssd1306_spi.h     |   85 +
 lib/libssd1306/src/intf/spi/ssd1306_spi_avr.c |  150 +
 lib/libssd1306/src/intf/spi/ssd1306_spi_avr.h |   60 +
 .../src/intf/spi/ssd1306_spi_conf.h           |   34 +
 lib/libssd1306/src/intf/spi/ssd1306_spi_usi.c |  136 +
 lib/libssd1306/src/intf/spi/ssd1306_spi_usi.h |   60 +
 lib/libssd1306/src/intf/ssd1306_interface.c   |   68 +
 lib/libssd1306/src/intf/ssd1306_interface.h   |  152 +
 .../src/intf/uart/ssd1306_uart_builtin.c      |   75 +
 .../src/intf/uart/ssd1306_uart_builtin.h      |   59 +
 .../src/intf/vga/atmega328p/vga128x64.c       |  243 ++
 .../src/intf/vga/atmega328p/vga96x40.c        |  292 ++
 .../src/intf/vga/atmega328p/vga_isr.h         |  312 ++
 .../src/intf/vga/esp32/CompositeOutput.cpp    |  286 ++
 .../src/intf/vga/esp32/CompositeOutput.h      |  112 +
 .../src/intf/vga/esp32/vga128x64.cpp          |  211 ++
 lib/libssd1306/src/intf/vga/vga.c             |   41 +
 lib/libssd1306/src/intf/vga/vga.h             |   86 +
 lib/libssd1306/src/lcd/composite_video.c      |  142 +
 lib/libssd1306/src/lcd/composite_video.h      |   63 +
 lib/libssd1306/src/lcd/lcd_common.c           |  150 +
 lib/libssd1306/src/lcd/lcd_common.h           |  459 +++
 lib/libssd1306/src/lcd/lcd_il9163.c           |  434 +++
 lib/libssd1306/src/lcd/lcd_il9163.h           |  144 +
 lib/libssd1306/src/lcd/lcd_ili9341.c          |  283 ++
 lib/libssd1306/src/lcd/lcd_ili9341.h          |  117 +
 lib/libssd1306/src/lcd/lcd_pcd8544.c          |  108 +
 lib/libssd1306/src/lcd/lcd_pcd8544.h          |   72 +
 lib/libssd1306/src/lcd/oled_sh1106.c          |  127 +
 lib/libssd1306/src/lcd/oled_sh1106.h          |   81 +
 lib/libssd1306/src/lcd/oled_ssd1306.c         |  259 ++
 lib/libssd1306/src/lcd/oled_ssd1306.h         |  198 ++
 lib/libssd1306/src/lcd/oled_ssd1325.c         |  182 ++
 lib/libssd1306/src/lcd/oled_ssd1325.h         |   98 +
 lib/libssd1306/src/lcd/oled_ssd1327.c         |  195 ++
 lib/libssd1306/src/lcd/oled_ssd1327.h         |   83 +
 lib/libssd1306/src/lcd/oled_ssd1331.c         |  287 ++
 lib/libssd1306/src/lcd/oled_ssd1331.h         |  146 +
 lib/libssd1306/src/lcd/oled_ssd1351.c         |  226 ++
 lib/libssd1306/src/lcd/oled_ssd1351.h         |   88 +
 lib/libssd1306/src/lcd/oled_template.c        |  173 ++
 lib/libssd1306/src/lcd/oled_template.h        |   99 +
 lib/libssd1306/src/lcd/pcd8544_commands.h     |   76 +
 lib/libssd1306/src/lcd/ssd1306_commands.h     |   82 +
 lib/libssd1306/src/lcd/ssd1331_commands.h     |   69 +
 lib/libssd1306/src/lcd/ssd1351_commands.h     |   75 +
 lib/libssd1306/src/lcd/vga_commands.h         |   71 +
 lib/libssd1306/src/lcd/vga_monitor.c          |  145 +
 lib/libssd1306/src/lcd/vga_monitor.h          |   75 +
 lib/libssd1306/src/nano_engine.h              |  134 +
 lib/libssd1306/src/nano_engine/README.md      |  299 ++
 lib/libssd1306/src/nano_engine/adafruit.h     |  335 +++
 lib/libssd1306/src/nano_engine/canvas.cpp     | 1477 ++++++++++
 lib/libssd1306/src/nano_engine/canvas.h       |  613 ++++
 lib/libssd1306/src/nano_engine/core.cpp       |  193 ++
 lib/libssd1306/src/nano_engine/core.h         |  301 ++
 lib/libssd1306/src/nano_engine/point.h        |  183 ++
 lib/libssd1306/src/nano_engine/rect.h         |  257 ++
 lib/libssd1306/src/nano_engine/sprite.h       |  303 ++
 lib/libssd1306/src/nano_engine/tiler.h        |  364 +++
 lib/libssd1306/src/nano_gfx.cpp               |  522 ++++
 lib/libssd1306/src/nano_gfx.h                 |  239 ++
 lib/libssd1306/src/nano_gfx_types.h           |  261 ++
 lib/libssd1306/src/sprite_pool.cpp            |  132 +
 lib/libssd1306/src/sprite_pool.h              |  131 +
 lib/libssd1306/src/ssd1306.h                  |   72 +
 lib/libssd1306/src/ssd1306_16bit.c            |  366 +++
 lib/libssd1306/src/ssd1306_16bit.h            |  303 ++
 lib/libssd1306/src/ssd1306_1bit.c             | 1098 ++++++++
 lib/libssd1306/src/ssd1306_1bit.h             |  458 +++
 lib/libssd1306/src/ssd1306_8bit.c             |  378 +++
 lib/libssd1306/src/ssd1306_8bit.h             |  426 +++
 lib/libssd1306/src/ssd1306_console.cpp        |   91 +
 lib/libssd1306/src/ssd1306_console.h          |  116 +
 lib/libssd1306/src/ssd1306_fonts.c            | 1355 +++++++++
 lib/libssd1306/src/ssd1306_fonts.h            |  100 +
 lib/libssd1306/src/ssd1306_generic.c          |  395 +++
 lib/libssd1306/src/ssd1306_generic.h          |  318 +++
 .../src/ssd1306_hal/Print_internal.h          |  111 +
 lib/libssd1306/src/ssd1306_hal/README.md      |   14 +
 lib/libssd1306/src/ssd1306_hal/UserSettings.h |   96 +
 lib/libssd1306/src/ssd1306_hal/arduino/io.h   |  225 ++
 .../src/ssd1306_hal/arduino/platform.cpp      |  220 ++
 .../src/ssd1306_hal/avr/arduino/Arduino.h     |   13 +
 .../src/ssd1306_hal/avr/arduino/Print.h       |   10 +
 .../src/ssd1306_hal/avr/arduino/Wire.h        |    1 +
 lib/libssd1306/src/ssd1306_hal/avr/io.h       |  117 +
 lib/libssd1306/src/ssd1306_hal/avr/platform.c |   96 +
 lib/libssd1306/src/ssd1306_hal/energia/io.h   |  176 ++
 .../src/ssd1306_hal/energia/platform.cpp      |  158 ++
 lib/libssd1306/src/ssd1306_hal/esp/io.h       |  135 +
 lib/libssd1306/src/ssd1306_hal/esp/platform.c |  292 ++
 lib/libssd1306/src/ssd1306_hal/io.h           |  136 +
 .../src/ssd1306_hal/linux/arduino/Arduino.h   |   18 +
 .../src/ssd1306_hal/linux/arduino/Print.h     |   10 +
 .../src/ssd1306_hal/linux/arduino/Wire.h      |    1 +
 .../ssd1306_hal/linux/arduino/avr/interrupt.h |    1 +
 .../ssd1306_hal/linux/arduino/avr/pgmspace.h  |    1 +
 .../src/ssd1306_hal/linux/arduino/avr/sleep.h |    1 +
 lib/libssd1306/src/ssd1306_hal/linux/io.h     |  168 ++
 .../src/ssd1306_hal/linux/platform.c          |  583 ++++
 lib/libssd1306/src/ssd1306_hal/mingw/io.h     |  132 +
 .../src/ssd1306_hal/mingw/platform.c          |  342 +++
 lib/libssd1306/src/ssd1306_hal/stm32/io.h     |  147 +
 .../src/ssd1306_hal/stm32/platform.c          |  130 +
 lib/libssd1306/src/ssd1306_hal/template/io.h  |  173 ++
 .../src/ssd1306_hal/template/platform.c       |  124 +
 lib/libssd1306/src/ssd1306_menu.c             |  297 ++
 lib/libssd1306/src/ssd1306_uart.c             |  145 +
 lib/libssd1306/src/ssd1306_uart.h             |  134 +
 src/main.c                                    |   46 +
 src/sevenseg.c                                |  146 +
 src/sevenseg.h                                |   30 +
 src/twi.c                                     |  166 ++
 src/twi.h                                     |  178 ++
 226 files changed, 27881 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 Makefile
 create mode 100644 lib/libssd1306/README.txt
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c.o
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.d
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.o
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d
 create mode 100644 lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.o
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi.d
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi.o
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.o
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d
 create mode 100644 lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.o
 create mode 100644 lib/libssd1306/bld/intf/ssd1306_interface.d
 create mode 100644 lib/libssd1306/bld/intf/ssd1306_interface.o
 create mode 100644 lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.d
 create mode 100644 lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.o
 create mode 100644 lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.d
 create mode 100644 lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.o
 create mode 100644 lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.d
 create mode 100644 lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.o
 create mode 100644 lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.d
 create mode 100644 lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.o
 create mode 100644 lib/libssd1306/bld/intf/vga/esp32/vga128x64.d
 create mode 100644 lib/libssd1306/bld/intf/vga/esp32/vga128x64.o
 create mode 100644 lib/libssd1306/bld/intf/vga/vga.d
 create mode 100644 lib/libssd1306/bld/intf/vga/vga.o
 create mode 100644 lib/libssd1306/bld/lcd/lcd_common.d
 create mode 100644 lib/libssd1306/bld/lcd/lcd_common.o
 create mode 100644 lib/libssd1306/bld/lcd/lcd_il9163.d
 create mode 100644 lib/libssd1306/bld/lcd/lcd_il9163.o
 create mode 100644 lib/libssd1306/bld/lcd/lcd_ili9341.d
 create mode 100644 lib/libssd1306/bld/lcd/lcd_ili9341.o
 create mode 100644 lib/libssd1306/bld/lcd/lcd_pcd8544.d
 create mode 100644 lib/libssd1306/bld/lcd/lcd_pcd8544.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_sh1106.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_sh1106.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1306.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1306.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1325.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1325.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1327.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1327.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1331.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1331.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1351.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_ssd1351.o
 create mode 100644 lib/libssd1306/bld/lcd/oled_template.d
 create mode 100644 lib/libssd1306/bld/lcd/oled_template.o
 create mode 100644 lib/libssd1306/bld/lcd/vga_monitor.d
 create mode 100644 lib/libssd1306/bld/lcd/vga_monitor.o
 create mode 100644 lib/libssd1306/bld/libssd1306.a
 create mode 100644 lib/libssd1306/bld/nano_engine/canvas.d
 create mode 100644 lib/libssd1306/bld/nano_engine/canvas.o
 create mode 100644 lib/libssd1306/bld/nano_engine/core.d
 create mode 100644 lib/libssd1306/bld/nano_engine/core.o
 create mode 100644 lib/libssd1306/bld/nano_gfx.d
 create mode 100644 lib/libssd1306/bld/nano_gfx.o
 create mode 100644 lib/libssd1306/bld/sprite_pool.d
 create mode 100644 lib/libssd1306/bld/sprite_pool.o
 create mode 100644 lib/libssd1306/bld/ssd1306_16bit.d
 create mode 100644 lib/libssd1306/bld/ssd1306_16bit.o
 create mode 100644 lib/libssd1306/bld/ssd1306_1bit.d
 create mode 100644 lib/libssd1306/bld/ssd1306_1bit.o
 create mode 100644 lib/libssd1306/bld/ssd1306_8bit.d
 create mode 100644 lib/libssd1306/bld/ssd1306_8bit.o
 create mode 100644 lib/libssd1306/bld/ssd1306_console.d
 create mode 100644 lib/libssd1306/bld/ssd1306_console.o
 create mode 100644 lib/libssd1306/bld/ssd1306_fonts.d
 create mode 100644 lib/libssd1306/bld/ssd1306_fonts.o
 create mode 100644 lib/libssd1306/bld/ssd1306_generic.d
 create mode 100644 lib/libssd1306/bld/ssd1306_generic.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/arduino/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/arduino/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/avr/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/avr/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/energia/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/energia/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/linux/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/linux/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/mingw/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/mingw/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/stm32/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/stm32/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/template/platform.d
 create mode 100644 lib/libssd1306/bld/ssd1306_hal/template/platform.o
 create mode 100644 lib/libssd1306/bld/ssd1306_menu.d
 create mode 100644 lib/libssd1306/bld/ssd1306_menu.o
 create mode 100644 lib/libssd1306/bld/ssd1306_uart.d
 create mode 100644 lib/libssd1306/bld/ssd1306_uart.o
 create mode 100644 lib/libssd1306/src/Makefile.avr
 create mode 100644 lib/libssd1306/src/Makefile.common
 create mode 100644 lib/libssd1306/src/Makefile.energia
 create mode 100644 lib/libssd1306/src/Makefile.esp32
 create mode 100644 lib/libssd1306/src/Makefile.linux
 create mode 100644 lib/libssd1306/src/Makefile.mingw32
 create mode 100644 lib/libssd1306/src/Makefile.src
 create mode 100644 lib/libssd1306/src/Makefile.stm32
 create mode 100644 lib/libssd1306/src/README.md
 create mode 100644 lib/libssd1306/src/doxygen.cfg
 create mode 100644 lib/libssd1306/src/font6x8.h
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c.c
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c.h
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c_conf.h
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.c
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.h
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.c
 create mode 100644 lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.h
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi.c
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi.h
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi_avr.c
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi_avr.h
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi_conf.h
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi_usi.c
 create mode 100644 lib/libssd1306/src/intf/spi/ssd1306_spi_usi.h
 create mode 100644 lib/libssd1306/src/intf/ssd1306_interface.c
 create mode 100644 lib/libssd1306/src/intf/ssd1306_interface.h
 create mode 100644 lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.c
 create mode 100644 lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.h
 create mode 100644 lib/libssd1306/src/intf/vga/atmega328p/vga128x64.c
 create mode 100644 lib/libssd1306/src/intf/vga/atmega328p/vga96x40.c
 create mode 100644 lib/libssd1306/src/intf/vga/atmega328p/vga_isr.h
 create mode 100644 lib/libssd1306/src/intf/vga/esp32/CompositeOutput.cpp
 create mode 100644 lib/libssd1306/src/intf/vga/esp32/CompositeOutput.h
 create mode 100644 lib/libssd1306/src/intf/vga/esp32/vga128x64.cpp
 create mode 100644 lib/libssd1306/src/intf/vga/vga.c
 create mode 100644 lib/libssd1306/src/intf/vga/vga.h
 create mode 100644 lib/libssd1306/src/lcd/composite_video.c
 create mode 100644 lib/libssd1306/src/lcd/composite_video.h
 create mode 100644 lib/libssd1306/src/lcd/lcd_common.c
 create mode 100644 lib/libssd1306/src/lcd/lcd_common.h
 create mode 100644 lib/libssd1306/src/lcd/lcd_il9163.c
 create mode 100644 lib/libssd1306/src/lcd/lcd_il9163.h
 create mode 100644 lib/libssd1306/src/lcd/lcd_ili9341.c
 create mode 100644 lib/libssd1306/src/lcd/lcd_ili9341.h
 create mode 100644 lib/libssd1306/src/lcd/lcd_pcd8544.c
 create mode 100644 lib/libssd1306/src/lcd/lcd_pcd8544.h
 create mode 100644 lib/libssd1306/src/lcd/oled_sh1106.c
 create mode 100644 lib/libssd1306/src/lcd/oled_sh1106.h
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1306.c
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1306.h
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1325.c
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1325.h
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1327.c
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1327.h
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1331.c
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1331.h
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1351.c
 create mode 100644 lib/libssd1306/src/lcd/oled_ssd1351.h
 create mode 100644 lib/libssd1306/src/lcd/oled_template.c
 create mode 100644 lib/libssd1306/src/lcd/oled_template.h
 create mode 100644 lib/libssd1306/src/lcd/pcd8544_commands.h
 create mode 100644 lib/libssd1306/src/lcd/ssd1306_commands.h
 create mode 100644 lib/libssd1306/src/lcd/ssd1331_commands.h
 create mode 100644 lib/libssd1306/src/lcd/ssd1351_commands.h
 create mode 100644 lib/libssd1306/src/lcd/vga_commands.h
 create mode 100644 lib/libssd1306/src/lcd/vga_monitor.c
 create mode 100644 lib/libssd1306/src/lcd/vga_monitor.h
 create mode 100644 lib/libssd1306/src/nano_engine.h
 create mode 100644 lib/libssd1306/src/nano_engine/README.md
 create mode 100644 lib/libssd1306/src/nano_engine/adafruit.h
 create mode 100644 lib/libssd1306/src/nano_engine/canvas.cpp
 create mode 100644 lib/libssd1306/src/nano_engine/canvas.h
 create mode 100644 lib/libssd1306/src/nano_engine/core.cpp
 create mode 100644 lib/libssd1306/src/nano_engine/core.h
 create mode 100644 lib/libssd1306/src/nano_engine/point.h
 create mode 100644 lib/libssd1306/src/nano_engine/rect.h
 create mode 100644 lib/libssd1306/src/nano_engine/sprite.h
 create mode 100644 lib/libssd1306/src/nano_engine/tiler.h
 create mode 100644 lib/libssd1306/src/nano_gfx.cpp
 create mode 100644 lib/libssd1306/src/nano_gfx.h
 create mode 100644 lib/libssd1306/src/nano_gfx_types.h
 create mode 100644 lib/libssd1306/src/sprite_pool.cpp
 create mode 100644 lib/libssd1306/src/sprite_pool.h
 create mode 100644 lib/libssd1306/src/ssd1306.h
 create mode 100644 lib/libssd1306/src/ssd1306_16bit.c
 create mode 100644 lib/libssd1306/src/ssd1306_16bit.h
 create mode 100644 lib/libssd1306/src/ssd1306_1bit.c
 create mode 100644 lib/libssd1306/src/ssd1306_1bit.h
 create mode 100644 lib/libssd1306/src/ssd1306_8bit.c
 create mode 100644 lib/libssd1306/src/ssd1306_8bit.h
 create mode 100644 lib/libssd1306/src/ssd1306_console.cpp
 create mode 100644 lib/libssd1306/src/ssd1306_console.h
 create mode 100644 lib/libssd1306/src/ssd1306_fonts.c
 create mode 100644 lib/libssd1306/src/ssd1306_fonts.h
 create mode 100644 lib/libssd1306/src/ssd1306_generic.c
 create mode 100644 lib/libssd1306/src/ssd1306_generic.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/Print_internal.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/README.md
 create mode 100644 lib/libssd1306/src/ssd1306_hal/UserSettings.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/arduino/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/arduino/platform.cpp
 create mode 100644 lib/libssd1306/src/ssd1306_hal/avr/arduino/Arduino.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/avr/arduino/Print.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/avr/arduino/Wire.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/avr/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/avr/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_hal/energia/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/energia/platform.cpp
 create mode 100644 lib/libssd1306/src/ssd1306_hal/esp/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/esp/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_hal/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/Arduino.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/Print.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/Wire.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/interrupt.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/pgmspace.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/sleep.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/linux/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_hal/mingw/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/mingw/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_hal/stm32/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/stm32/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_hal/template/io.h
 create mode 100644 lib/libssd1306/src/ssd1306_hal/template/platform.c
 create mode 100644 lib/libssd1306/src/ssd1306_menu.c
 create mode 100644 lib/libssd1306/src/ssd1306_uart.c
 create mode 100644 lib/libssd1306/src/ssd1306_uart.h
 create mode 100644 src/main.c
 create mode 100644 src/sevenseg.c
 create mode 100644 src/sevenseg.h
 create mode 100644 src/twi.c
 create mode 100644 src/twi.h

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..08fe6ed
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.idea
+build
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..21b56d6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,95 @@
+# https://github.com/jkent/caterina-promicro
+
+MCU = atmega328p
+F_CPU = 16000000
+
+# AVRDUDE settings
+PROG_BAUD = 57600
+PROG_DEV  = /dev/ttyUSB0
+PROG_TYPE = arduino
+# Build the final AVRDUDE arguments
+PROG_ARGS = -c $(PROG_TYPE) -p $(MCU) -b $(PROG_BAUD) -P $(PROG_DEV)
+
+INCFLAGS += -Isrc -Ilib/libssd1306/src
+
+CFLAGS = -std=gnu99 -mmcu=$(MCU) -DF_CPU=$(F_CPU)UL
+CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
+CFLAGS += -Wall -Wno-main -Wno-strict-prototypes -Wno-comment
+CFLAGS += -g2 -Wextra -Wfatal-errors -Wno-unused-but-set-variable
+CFLAGS += -ffunction-sections -fdata-sections -Os  -Wno-array-bounds
+
+LFLAGS =  -Wl,--gc-sections -Wl,--relax
+#-Llib/libssd1306/bld/ -l:libssd1306.a
+
+# CFLAGS += -lm  ## Math
+# CFLAGS += -Wl,-u,vfprintf -lprintf_flt -lm  ## for floating-point printf
+# CFLAGS += -Wl,-u,vfprintf -lprintf_min      ## for smaller printf
+
+
+# ---------------------------------------------------------------------------
+
+APP = App
+SRC_DIR = src
+BUILD_DIR = build
+
+## Defined programs / locations
+CC = avr-gcc
+LD = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+AVRSIZE = avr-size
+AVRDUDE = avrdude
+
+SOURCES=$(wildcard $(SRC_DIR)/*.c)
+OBJECTS=$(SOURCES:$(SRC_DIR)/%.c=$(BUILD_DIR)/%.o)
+DEPENDS=$(BUILD_DIR)/.depends
+
+TARGET=$(BUILD_DIR)/$(APP)
+
+
+.PHONY: all clean eeprom size
+
+
+all: $(TARGET).hex size
+
+debug:
+	@echo "SOURCES $(SOURCES)"
+	@echo "OBJECTS $(OBJECTS)"
+	@echo "TARGET $(TARGET)"
+
+eeprom: $(TARGET).eeprom
+
+size: $(TARGET).elf
+	$(AVRSIZE) -C --mcu=$(MCU) $<
+
+$(TARGET).elf: $(OBJECTS) | $(BUILD_DIR)
+	$(LD) $(CFLAGS) $(LFLAGS) -o $@ $^ lib/libssd1306/bld/libssd1306.a
+
+%.hex: %.elf
+	$(OBJCOPY) -R .eeprom -O ihex $< $@
+
+%.eeprom: %.elf
+	$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@
+
+$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR)
+	$(CC) -c $(CFLAGS) $(INCFLAGS) -o $@ $<
+
+$(DEPENDS): $(SOURCES) | $(BUILD_DIR)
+	$(CC) $(INCFLAGS) -MM $(SOURCES) | sed -e 's!^!$(BUILD_DIR)/!' >$@
+
+$(BUILD_DIR):
+	mkdir -p $@
+
+clean:
+	rm -rf $(BUILD_DIR)
+
+## === avrdude ===
+
+flash: $(TARGET).hex
+	$(AVRDUDE) $(PROG_ARGS) -U flash:w:$<
+
+flashe: $(TARGET).eeprom
+	$(AVRDUDE) $(PROG_ARGS) -U eeprom:w:$<
+
+shell:
+	$(AVRDUDE) $(PROG_ARGS) -nt
diff --git a/lib/libssd1306/README.txt b/lib/libssd1306/README.txt
new file mode 100644
index 0000000..96c1b03
--- /dev/null
+++ b/lib/libssd1306/README.txt
@@ -0,0 +1,5 @@
+to build the lib, run
+
+make -f Makefile.avr MCU=atmega328p
+
+the output is in the bld directory
diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d
new file mode 100644
index 0000000..b60f223
--- /dev/null
+++ b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d
@@ -0,0 +1,15 @@
+../bld/intf/i2c/ssd1306_i2c.o: intf/i2c/ssd1306_i2c.c \
+ intf/i2c/ssd1306_i2c.h intf/i2c/ssd1306_i2c_conf.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/i2c/ssd1306_i2c_embedded.h \
+ intf/i2c/ssd1306_i2c_twi.h intf/ssd1306_interface.h
diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c.o b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c.o
new file mode 100644
index 0000000000000000000000000000000000000000..669f4b21e66b1b931de826968f8a87565db63d41
GIT binary patch
literal 7092
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
T#-VV|eZLUiiI+PgY!3b#KN0%M

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.d b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.d
new file mode 100644
index 0000000..3504be0
--- /dev/null
+++ b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.d
@@ -0,0 +1,16 @@
+../bld/intf/i2c/ssd1306_i2c_embedded.o: intf/i2c/ssd1306_i2c_embedded.c \
+ intf/i2c/ssd1306_i2c_embedded.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/i2c/ssd1306_i2c_conf.h \
+ intf/ssd1306_interface.h intf/i2c/ssd1306_i2c.h \
+ intf/i2c/ssd1306_i2c_twi.h
diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.o b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.o
new file mode 100644
index 0000000000000000000000000000000000000000..df7463c1935f470736ce305fb2312bfb088ff121
GIT binary patch
literal 20104
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
Gw)nr$vBK5>

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d
new file mode 100644
index 0000000..79f7ac8
--- /dev/null
+++ b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d
@@ -0,0 +1,16 @@
+../bld/intf/i2c/ssd1306_i2c_twi.o: intf/i2c/ssd1306_i2c_twi.c \
+ intf/i2c/ssd1306_i2c_twi.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h \
+ intf/i2c/ssd1306_i2c_conf.h intf/ssd1306_interface.h \
+ intf/i2c/ssd1306_i2c.h intf/i2c/ssd1306_i2c_embedded.h \
+ /usr/avr/include/util/twi.h
diff --git a/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.o b/lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.o
new file mode 100644
index 0000000000000000000000000000000000000000..f6ab8fb0e377bce9d7a76eced3e411fa1a264f7f
GIT binary patch
literal 16548
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi.d b/lib/libssd1306/bld/intf/spi/ssd1306_spi.d
new file mode 100644
index 0000000..5b62a8c
--- /dev/null
+++ b/lib/libssd1306/bld/intf/spi/ssd1306_spi.d
@@ -0,0 +1,15 @@
+../bld/intf/spi/ssd1306_spi.o: intf/spi/ssd1306_spi.c \
+ intf/spi/ssd1306_spi.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h \
+ intf/spi/ssd1306_spi_avr.h intf/spi/ssd1306_spi_conf.h \
+ intf/spi/ssd1306_spi_usi.h intf/ssd1306_interface.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi.o b/lib/libssd1306/bld/intf/spi/ssd1306_spi.o
new file mode 100644
index 0000000000000000000000000000000000000000..f45442599937b59e162fbc36741df43bad3f985d
GIT binary patch
literal 5916
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
TmK@~K6!uF);qLu(b$<T@|COlT

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d b/lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d
new file mode 100644
index 0000000..31a8d7a
--- /dev/null
+++ b/lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d
@@ -0,0 +1,15 @@
+../bld/intf/spi/ssd1306_spi_avr.o: intf/spi/ssd1306_spi_avr.c \
+ intf/spi/ssd1306_spi_avr.h intf/spi/ssd1306_spi_conf.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/spi/ssd1306_spi.h \
+ intf/ssd1306_interface.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.o b/lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.o
new file mode 100644
index 0000000000000000000000000000000000000000..d2fa08d59f24997c448dd4ee2875b115d1f9838d
GIT binary patch
literal 16720
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d b/lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d
new file mode 100644
index 0000000..483ce92
--- /dev/null
+++ b/lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d
@@ -0,0 +1,15 @@
+../bld/intf/spi/ssd1306_spi_usi.o: intf/spi/ssd1306_spi_usi.c \
+ intf/spi/ssd1306_spi_usi.h intf/spi/ssd1306_spi_conf.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/spi/ssd1306_spi.h \
+ intf/ssd1306_interface.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.o b/lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.o
new file mode 100644
index 0000000000000000000000000000000000000000..89428c36e501436a9fbd0652939356813330da6d
GIT binary patch
literal 2196
zcmbVN&2JM&6o2E5(?kyWfT*nql?{S6sNJ<4LJpA}5Gf53QHelR+taf4j_qyjU2AuZ
zXnOz&ae^ZkE}Z!nIPnkk&OgD0b1Tu`n-6;(TD9tvX5R08&YPJxyAQ4(ej|h+OM>pu
zR3ds?CVC9xwsP2{HCm+rxJ+V>RVAK2<H?c`^9+SpVCIy{QJj+~eWa9gNC(@TmKL<M
zU?i2$gp)W=mC9blS;iV`;==N&ic{UFu6}})#=`m6F;oepf;qXOCgw797r{$H{IPrj
z1*vUfa{yHxq^#A_irTRl$63^iWmw~i2T9zk&1j6V(+^T@{m^CNKXsbq3X^erAnD-S
z?`r$aX05s9ZF!BFJB;1#AjtZyCga4-evU?Nd)$MhBU+cXfO##~D0a4?7<R_3;9h#U
z=EC(>R&%pFZ1v(XQoG&mIPT<861$mH9OiBq<Uvu!TJnBJj@U1wX~Ak&Ts20wo{ge<
zmW9nrjU6A@A7_!*p?W_V%6bxqX;42(lb^6kR!;^pbaR>I_09;o`XFlaFwy@j#+E=I
zmOuyl`@6MG9Op%Img?e*Q?ZZd=-vCG&6(+PG?i&1>*GLk3c{XMApQ(+s~}$hzEY6A
z31;x_{VwKd4ae7?ZCHoYtC?hQNIi;zyg0!O9I70Xm*`+dGf&^o$crRr<m2m~puag~
z-@kL@-|&4>;826x*AEoPha*3gJ%xXjX<`KLFqCLuKWMj8d9OiM9z?O6N>SWR8bthv
z#i}k06_CJt=Q>X^UeWrG4c-7h&3H}g&oYL86@1g+Yv4NugQ@#spCjO}jh@%JX)u2i
zZX5h1_>TrNziaTH;CwrRivpd);M#71e{S$2aBN5EpMsN@{W8phHh7+D-nS^1_jB_2
zJ(7p#L0&2cfu|3Rj|H~E0nV6%G>Ch0HiXaBhF}Q`S?w#ilMIIv5Bk3npELKZ?MVIY
zpGMoBR_713V@&_#_XX^H&;RDfA8nhPQ*ypy&sy78&~x`*#b9~};Uze(S?Srfgu!ps
z#sJcD48AW**2cYIG232ae9FL(wQ<iB*WE1Zb$DHVt#;iI*v0_T8;r{g3|X5GxtMPo
z`OZVf`S`Wld?R3v;r?P;f}np{T4o!M-wd~Y8~Dk+&@O7Weov11y@DTq>nvG6<}gj@
rcL-OZ<Y&2#!S$_TaIN-k0ci<_jDaD}!^F?F==THm`%GE%Wc~gEKXfAb

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/ssd1306_interface.d b/lib/libssd1306/bld/intf/ssd1306_interface.d
new file mode 100644
index 0000000..3242eee
--- /dev/null
+++ b/lib/libssd1306/bld/intf/ssd1306_interface.d
@@ -0,0 +1,14 @@
+../bld/intf/ssd1306_interface.o: intf/ssd1306_interface.c \
+ intf/ssd1306_interface.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h \
+ intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/intf/ssd1306_interface.o b/lib/libssd1306/bld/intf/ssd1306_interface.o
new file mode 100644
index 0000000000000000000000000000000000000000..4e8142078142b3bbc4ae4197773ef625c43df2b1
GIT binary patch
literal 8680
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
DC4=CK

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.d b/lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.d
new file mode 100644
index 0000000..ef636ab
--- /dev/null
+++ b/lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.d
@@ -0,0 +1,14 @@
+../bld/intf/uart/ssd1306_uart_builtin.o: intf/uart/ssd1306_uart_builtin.c \
+ intf/uart/ssd1306_uart_builtin.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/ssd1306_interface.h ssd1306_uart.h
diff --git a/lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.o b/lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.o
new file mode 100644
index 0000000000000000000000000000000000000000..fdbdc96f927e1c20e286d7235dc93ba68b44fac2
GIT binary patch
literal 10360
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
SiFaY2TGg(?o_0pq9Q<E0cCMcQ

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.d b/lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.d
new file mode 100644
index 0000000..f460ef2
--- /dev/null
+++ b/lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.d
@@ -0,0 +1,14 @@
+../bld/intf/vga/atmega328p/vga128x64.o: intf/vga/atmega328p/vga128x64.c \
+ intf/vga/vga.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h \
+ intf/ssd1306_interface.h lcd/lcd_common.h lcd/vga_commands.h
diff --git a/lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.o b/lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.o
new file mode 100644
index 0000000000000000000000000000000000000000..e7da81cdd439572338a2c7324c79b552ed7a8706
GIT binary patch
literal 28540
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.d b/lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.d
new file mode 100644
index 0000000..564111a
--- /dev/null
+++ b/lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.d
@@ -0,0 +1,14 @@
+../bld/intf/vga/atmega328p/vga96x40.o: intf/vga/atmega328p/vga96x40.c \
+ intf/vga/vga.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h \
+ intf/ssd1306_interface.h lcd/lcd_common.h lcd/vga_commands.h
diff --git a/lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.o b/lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.o
new file mode 100644
index 0000000000000000000000000000000000000000..d276c977268f73459ff0b37ee07c8f3816ff95b4
GIT binary patch
literal 33624
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
JoPsvr{{z;bB%J^N

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.d b/lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.d
new file mode 100644
index 0000000..c0b0061
--- /dev/null
+++ b/lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.d
@@ -0,0 +1,14 @@
+../bld/intf/vga/esp32/CompositeOutput.o: \
+ intf/vga/esp32/CompositeOutput.cpp intf/vga/esp32/CompositeOutput.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h
diff --git a/lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.o b/lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.o
new file mode 100644
index 0000000000000000000000000000000000000000..11b90f50442b2fe21a486b26a6b1459979895ec3
GIT binary patch
literal 2304
zcmbVNOOM<{5U!rt4I53e+06qYA~6mGm{qX7vzzPzG9hRQ3u48t5)jEHBahwlNIbS>
z_bdq<IC0{d69>dE;KWbh#-Bjq7v#(#eAVurv6mnaC3V+VkFM%RmHqAQ{f~qYWJ%Cn
zT1Z6qP7r+u<2CKjp><lLA@DMZB~~?fdX*<jLSPAz5G%}@jpa$ANHkv3%BAI!mC{Nn
ztr$rM)RT!p;tI7|H(SkBBw815uAXZ(+n3sFuOP0mAj#5u#13>GLvM$43{Iq}i+LHk
z4e*8#f3BX!=Jb(qP=I#1NL$;DGy3!*l3}c#WU`aY;y6?J2F;RUGD>9R@Ok1i896nL
zF^1zHFRg!fnfouC=CPu5Hi#wdefEX3d-ZC!>vXrgEpO9tr-?g^gJRt40+(LB?JZ!A
z?;6F<H7KUxtQQ>R*By7{xCe#f7Aoq6I+!~g&XQ0~(!?#K<}eSVKm`@KmMKZy;?X2?
z2Qvg4Ldunzlt?DSG!LaK$8M3ykR!n^ABQsI3<WKYr|*Ezh%xk!Mu9JjY<tV!O{ZB}
zOq4vBscfdaFw4jvr&H;tNt6fvVV*w3J_|pMW#lSZC_l`g^W({YM^QxG?aiJ4wWhum
zdeK&BZ+G`yr-R4XFz=uXsXA4AWQm?VuiBcm4nnP(va~);Xf8mwX%$%i8gQ>7zYY9;
zMc$la2G5?~z`WSQ@%;4$Xp-*8d4wkEhO5XY=a@m0TF2y5^hr%~g6`MklQgQy$Mc`2
z7v6KffA_HealcO*?3duq?L7_DH0$Sbr194>PmSR1M-oNZ4+eu=9&M79<4GbH(gZcC
zuZ%xJVy)a9c0mGPim$-WGCou4UpDv+aQ>8u^-_PCG5q-h(lPjR@EwCW2EQ5m48T7$
zxDEcP!5`p}?ikFzd~fXk2>gM;U?dH`0e^li!NEbVWAHw|1b@rm@4@+Stp5R=yyD4J
z1p{!EmwarIl8+U6-09?@ZOF@I9C+mw@+HAmxz3t7$b)1g>r42S?GmK0kkx%Hhv{@G
z(eVG3F2RxO*j8xypINMC8`EVB#!VJL|K!Jg!*Bj?e*C63HlU98kbxm<dj~RC^DU$Q
z9l|fbctWjb+bIlP2jG@|1aPeYZsQ$RFq?nFxX8ee_2c@f=6#A^CFkM1+`Tq$1Z>v;
z(jOSt85pv*KICe=pAhc~bR3Vn-^R;;c@5VW(?tjeHV9;fJiam9`i<}t{TVt-){kqI
zvGu!vhdF1RjLrHY#GE?ty9EQc=y?p@-x>z*)xIqtjbWHEFvPK#xP_~Jzv8@4wWXY_
F-(N7&Lw^7O

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/vga/esp32/vga128x64.d b/lib/libssd1306/bld/intf/vga/esp32/vga128x64.d
new file mode 100644
index 0000000..e9ebee4
--- /dev/null
+++ b/lib/libssd1306/bld/intf/vga/esp32/vga128x64.d
@@ -0,0 +1,14 @@
+../bld/intf/vga/esp32/vga128x64.o: intf/vga/esp32/vga128x64.cpp \
+ intf/ssd1306_interface.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h intf/vga/vga.h \
+ lcd/lcd_common.h lcd/vga_commands.h
diff --git a/lib/libssd1306/bld/intf/vga/esp32/vga128x64.o b/lib/libssd1306/bld/intf/vga/esp32/vga128x64.o
new file mode 100644
index 0000000000000000000000000000000000000000..02ca036160ef8152b584310d20a28fdf336f45e2
GIT binary patch
literal 2540
zcmbW3&u`pB6vv;}Nt&{4nh+Ea0cC?|Nl9&IHz7(Jwp1)7iHOob+Db^3EU!KLqj+u0
z_C{%u-~<N{2c+Kl7kc2#2_!Du`42ev+(Y@k@yx~>34wUh_<i1+H*d!C%l`WI{>O%4
zkQRfE=+q+m=p4~EsN9eND>O&5^aFU3j0tv`{CJ%oS`1@~QPx(zTG#|nUdF>PrrAGL
zne0b785Jakb7Hbkg*9DR)5?-L3NDgXIC!;=hbi$I<4a_`P1WknsyRbc*&uV~#<H<p
zy}rD#H~&Tzp>xLNnfa=@w74|;Dh9T|5mf|K_vSISE5vF_rN9`^Z6g4AUqO+*6z>A7
zkQUS=eB00!!+1V(5$`6a5EBPjlEYTPQdNwl$|X5da%yE#GZ225KT5<(Gz`NePp{Gt
z6SL*!G>o!-HxfaOCn}7it_0=tdtO>NgLv2uMZq#^tlh|v4eq-~pC7c`!@YwdepJg{
z>>S*ywN_W_^;*4QH|({VHHfTE=w-cT9bEL&TyKE6A4@qlH{clf!=`tfzE`ulHS11R
zv$8yB`ZAf-=?o)3@5hmq38_)t3B24Z*<(FLv6X$%PptM3$vUvoJnt7IqE4Lp!V*0z
zON7svP%ln=k#G+g$=BRH^O~c{!)tb&<F4n3ELm?b)f-zUn;W*DB;@qsfpFp|NImB;
zjUQsLnG=U1uyT>*j-SBig#9*`EDP%EYn%V8&G;b5cC>?>VU{|WMtJ;i7zi34AS}B_
zm{~Lc&`zs$qqc%&yQ)^Kyx9sapWz95_M#kNj-7Bm!^Jk&F(y2hVBFLWw0{lUEZNK8
z4@&mCBW8H^f{*>_7|!-TenL!=H^wM~N%G8>?DHdLFbSu+Bqm)TK9r|2g<GsF=gBLZ
zXAZPU7wOE5yYA7UyX(3nVZVUSZtqCQ2Z@`CuH?rejg?{V2Le0S_1f)J9IuhK!+s=A
ztv)vL8WG=x#%wVt^iBqDobRAtX6DI<ETAyI3C&lmF^30)=bqz{hOQ{)cGnfV&^wB`
z-GSnFpzkR@fqtOa#X|XtccC9Dejhqk3`NI^?;!q5#dpEqDjq=dN*X*E$Xh5p{!gLh
zIKlia;l0BCC(yRypP;uCKZWMK#xcJ@f2jCZXtJ|MgWPLF=V_sPnsRZHlg$?l**K_V
zry}(1Vo`Y7QCC`^v1%{%qOKTk!t17+pbL%ccBSpdgMq;P`Cnxbftaq*ZZE#6r>(h;
zWf_H8elei`DUR2Z_tC$_@kdhU2FiRtGAPk?*I@I>yrujn_!|ES##WPluDgID*9Kb4
zZ-D#SfY$jAOU%`asNj1<i;nvQj&i?;*hJh9_schd?l%DIHb7d3!TVf`uH*e*&i4TM
z?!w3U_$JZ$5-_*nbHwr(#y}^5&B#UWb!Z*;7p}`cU~AEF-^0PI<9^1%;MZa#I*v6`
ujO2I3-GUR_UH)|N_-0Xfta@#M#D7OIgA&fe!q-AM?kV2)iL5CeI__`Bj$NGq

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/intf/vga/vga.d b/lib/libssd1306/bld/intf/vga/vga.d
new file mode 100644
index 0000000..7443b2a
--- /dev/null
+++ b/lib/libssd1306/bld/intf/vga/vga.d
@@ -0,0 +1,13 @@
+../bld/intf/vga/vga.o: intf/vga/vga.c ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/vga/vga.h
diff --git a/lib/libssd1306/bld/intf/vga/vga.o b/lib/libssd1306/bld/intf/vga/vga.o
new file mode 100644
index 0000000000000000000000000000000000000000..a2744dd1b735e8a837e97f9d2736c1599ebb50ce
GIT binary patch
literal 3256
zcmbVO-EUMy6hE`KErl(Gf)o(UE~I=Zdv{wZ5wL(X&^B42p#fvmtlQnYAF_M5?!AkE
z26!=1A2cQ!AMhhlV|?J*S6_Ja#WxcDC;BW&{r%?7?A~2sG@fMU{LaUmIWu!+?!9+0
ze@Q7NmXxeWPZC+&Eb<|Yv)bXPOv)}9{qlQA!=i?$bl5$|Zjh83p(^saJ9!p(ID<~9
zQR+t$!*xFtmDof{4Gl*ul13wG)JQspiI<??3#ZUI8XhOy5;-2yGg7U-7BwZw<k_S%
zE|QoPXZ-Ym#F^x&1CvWT_a`xULLD04nRHV7QrC7*sO`Iv=_I|9a7r%iM6!p4Y{Y~?
z(wkg4x7WHH**l?jjGW(dXD_DPkEXMUmJ7+s8p<}XVPn&&Cge?{dYP_D{WZQ7JEM;R
z2LO=LI~xtBM=G%`+6Joh8R;%DtYlbE?Hp2$!g;C95S8lqLA~mG<urG>gYKn5D2<k1
zP4`)}hAzgtR4cY62+GqZawiKntHmY1ZiYQQwi`$fx?Wg${qlTadFgUAO}W)sZFsV9
z`C58@dOAHl<IcFbbf)QNDve@Lo0}$XWr7>^wajX#3Mm>fcVY&Zvt^9p<SZ1;QfIDs
zv;AT^1J^4-IunHDxvJkm=uD;3@k?R7<!1s<bC@gTVpxpJn9I9W^491Vh)#KNAm#36
zU_&Zdte(v+Nw(H%dfAp=ZWpu5?bbV(B*?ZJUO5wbL6|MAL6>dRSJ}+o{jV{0TFG{T
zb{4D6*8NhWQ}!gvqu192%ZIyL6Iqy_Kb<~`eLiM3S!6qEWCNrmac^oYo%j*8GG=QD
zJgU{00#KKeQ4PuZM%?Q3S$XUGBRJ5ou6fBLTHjy}b5=w=-jj1N`Cu0ltZ%sJdpQiw
zKO|@R{D<VifP85{roES?zB^qH2e&a!QT9EJBl?Z%DjeC;#RN{@Zc@f86C(#VesKQ&
zd?)19m_ObYc?)vyjJ8O*&psyYK6yxPLyoWSexH4CeLRgGIWi%i8j&$}@NJ5!t58^3
zE-V%bqCq|aS1&GT5H{BeZLg~F9k1Oof}3xZ+??cdN;I4XD|@)qh2rXJ+q;>AoWGhU
zi`0#}?@_vRVMeoynnkv{Uuor@dV)lsh}sh+y%kJ7Bl3~X9e7uypQIj`@9ne1EIQCZ
zG(`pI7#hdsz;(?5Gu|skUjn~kFqm97_y{=9h+{b&&xbgRqP<~o9-QYy{RiMYBjOZ%
z?ixG={IS9Bf`4H!KLihm_n`xQhnC*2q42w=%vY8tX?+m7>!bI?jMeK!lJl@1ra$m|
z;LjU;AAHu}&%sX_{1rIwF#W#)=Xl~Dz*(;fUry3%XemwzdIK%RjR)~~6h5USrmjpu
zr-9S<inzh;W>{PmHwfDiuUQm&w?c9Ga*K<XR9q_D!OxM~_8LXES1lM3D>jLni|wLc
z^$;jFr0rK5^&sq5vLbC9WMd)K1ud6a&8CO%WIR%(U2J+-+J7b<4~}1-CkOEi;zS$i
z02;AF0rXFPtVzC9|K@ibK7;f2-j2uy7g;cV#H5pGKWP+oHoprH`J$eW)bbDo`UDvN
zOZsJ{jYq$NX2$@^pJ)vNL)KP-Y%xuX5YhyOtgQ$+KJU-?=uAP!dASdE-aEi{44~8?
z(8rRsb)bmH`wj7!H+}iy+jyS=+cALhK7_Xk3|ZSJkmK<lBi=3O7>{vnya&J>!#9ZZ
z2ZT8r1TrBT_nzGP?ZH7mglx(B{Q^bY?-Be4*Gu~&<7dY|hToJGz?mQES2W`DXryIq
zF8vsD0*yAVhcV-I^aSy?L!sX#<Hz?3zop$81(Y$=%eMrE7>C5z2+^ew^ZwqIqWLKP
E4b47*1^@s6

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/lcd_common.d b/lib/libssd1306/bld/lcd/lcd_common.d
new file mode 100644
index 0000000..82253f6
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/lcd_common.d
@@ -0,0 +1,14 @@
+../bld/lcd/lcd_common.o: lcd/lcd_common.c lcd/lcd_common.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/ssd1306_interface.h \
+ intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/lcd_common.o b/lib/libssd1306/bld/lcd/lcd_common.o
new file mode 100644
index 0000000000000000000000000000000000000000..48cf0482fde35828862d045a32a1c4c20f5fbfb7
GIT binary patch
literal 23528
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
ICYvn$ANi#y-~a#s

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/lcd_il9163.d b/lib/libssd1306/bld/lcd/lcd_il9163.d
new file mode 100644
index 0000000..4749057
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/lcd_il9163.d
@@ -0,0 +1,15 @@
+../bld/lcd/lcd_il9163.o: lcd/lcd_il9163.c lcd/lcd_il9163.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h nano_gfx_types.h \
+ ssd1306_hal/io.h
diff --git a/lib/libssd1306/bld/lcd/lcd_il9163.o b/lib/libssd1306/bld/lcd/lcd_il9163.o
new file mode 100644
index 0000000000000000000000000000000000000000..8ab3724915aa8e80da0d4cccdfe060ae3ba93dc0
GIT binary patch
literal 51224
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/lcd_ili9341.d b/lib/libssd1306/bld/lcd/lcd_ili9341.d
new file mode 100644
index 0000000..38ca25c
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/lcd_ili9341.d
@@ -0,0 +1,15 @@
+../bld/lcd/lcd_ili9341.o: lcd/lcd_ili9341.c lcd/lcd_ili9341.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h nano_gfx_types.h \
+ ssd1306_hal/io.h
diff --git a/lib/libssd1306/bld/lcd/lcd_ili9341.o b/lib/libssd1306/bld/lcd/lcd_ili9341.o
new file mode 100644
index 0000000000000000000000000000000000000000..f99a00c24b816f32b5055cbc3ba93b56e65f5eeb
GIT binary patch
literal 38508
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/lcd_pcd8544.d b/lib/libssd1306/bld/lcd/lcd_pcd8544.d
new file mode 100644
index 0000000..b2db64a
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/lcd_pcd8544.d
@@ -0,0 +1,14 @@
+../bld/lcd/lcd_pcd8544.o: lcd/lcd_pcd8544.c lcd/lcd_pcd8544.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/pcd8544_commands.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/lcd_pcd8544.o b/lib/libssd1306/bld/lcd/lcd_pcd8544.o
new file mode 100644
index 0000000000000000000000000000000000000000..78c145c35d58fb2b58bddebf786b8dd772c94c06
GIT binary patch
literal 15596
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_sh1106.d b/lib/libssd1306/bld/lcd/oled_sh1106.d
new file mode 100644
index 0000000..1141e8f
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_sh1106.d
@@ -0,0 +1,16 @@
+../bld/lcd/oled_sh1106.o: lcd/oled_sh1106.c lcd/oled_sh1106.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/ssd1306_commands.h \
+ intf/ssd1306_interface.h intf/i2c/ssd1306_i2c.h \
+ intf/i2c/ssd1306_i2c_conf.h intf/i2c/ssd1306_i2c_embedded.h \
+ intf/i2c/ssd1306_i2c_twi.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/oled_sh1106.o b/lib/libssd1306/bld/lcd/oled_sh1106.o
new file mode 100644
index 0000000000000000000000000000000000000000..d9d1e39143399884d23ad3045a1ae50fd08136ff
GIT binary patch
literal 17052
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
ULPh_DkFB>H=g-Hi2D|Wo0nQOte*gdg

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_ssd1306.d b/lib/libssd1306/bld/lcd/oled_ssd1306.d
new file mode 100644
index 0000000..7fec160
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_ssd1306.d
@@ -0,0 +1,16 @@
+../bld/lcd/oled_ssd1306.o: lcd/oled_ssd1306.c lcd/oled_ssd1306.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/ssd1306_commands.h \
+ intf/ssd1306_interface.h intf/i2c/ssd1306_i2c.h \
+ intf/i2c/ssd1306_i2c_conf.h intf/i2c/ssd1306_i2c_embedded.h \
+ intf/i2c/ssd1306_i2c_twi.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/oled_ssd1306.o b/lib/libssd1306/bld/lcd/oled_ssd1306.o
new file mode 100644
index 0000000000000000000000000000000000000000..b425ac75f984f77840e3b7667591b9b3f141d4c7
GIT binary patch
literal 32172
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_ssd1325.d b/lib/libssd1306/bld/lcd/oled_ssd1325.d
new file mode 100644
index 0000000..1aad19c
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_ssd1325.d
@@ -0,0 +1,14 @@
+../bld/lcd/oled_ssd1325.o: lcd/oled_ssd1325.c lcd/oled_ssd1325.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/oled_ssd1325.o b/lib/libssd1306/bld/lcd/oled_ssd1325.o
new file mode 100644
index 0000000000000000000000000000000000000000..5799f31558033f0cb7c261e0fba3c8e6f6a3f153
GIT binary patch
literal 25464
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
NXV1j5AEyDU_rJ;O(qI4p

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_ssd1327.d b/lib/libssd1306/bld/lcd/oled_ssd1327.d
new file mode 100644
index 0000000..02535ff
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_ssd1327.d
@@ -0,0 +1,14 @@
+../bld/lcd/oled_ssd1327.o: lcd/oled_ssd1327.c lcd/oled_ssd1327.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/oled_ssd1327.o b/lib/libssd1306/bld/lcd/oled_ssd1327.o
new file mode 100644
index 0000000000000000000000000000000000000000..7365e98850766cc266ee035da786958e7be55f54
GIT binary patch
literal 26560
zcmbV!33!#&wf6qbISC1e3=jfgkaL1eDkM1}KtdIn6%86ea3+Kd5DiJ11W>CIKt*qz
z5UFTUY}K|_Yi+Ns_SRZjy_MR*+V*eN4o2IewRP(6_11bV_kH(T`+Pf}*x%=0`knp0
zYp=cb-fIuvNVYDiUm65~aT1u7CS=Bxtu^K<WY$=NX(nT;%rm=R+<mYzy~~*N2j)Qk
zZeywj`oV6(ac$9UQ*TQJw@w>fHzauHz`%0@)b8rO?daewqW#_1Rc`CP28<=P@9Ez<
zfb=aK*B+O@=LdVJy?PIQKHKo@aCis5v61}6UC->w+vBYBZz<ZH+Rc{yHMlOwEgGFV
zF#1{4NUPMYB3NF#tMC>y`as?uu`;&?@AMDcG;kAq(VvgAUib75u$1HdujOZJ?0@Me
z#|3X)`BJE1UHP{JNAPP7NZX#P998+un+J=YELw6LqJh4Aufh4wkJNRQ=lS}|u$F$5
zV&tY*Rt+$!<}G@>&a=4cmC$+{^eo|O+18N1XWM{8Wf*#P_+}Tk>w>=oPX}q(R^d22
z=^wW+Lgv6*h3^!eKBHk^;pmm9i~7G68pP{>#_h%#{o`arif=}Ip>=f~sYeHc&+OTm
zjbYf%8)sa-CuHow_{!l${Lgt~PaN(?3mJo%13xbMU25*0;GL<TIXL?HA?BT(1KWzi
z9v1C7d=q<#79ZHwU=FzQ`FrN0bi=?}{B{p?HEuoKdK{qbz`$DrS7Ki5+R?wG|J9oY
zcJJ7}W6zE&cW{2(y5nk_?%LVElYIBi?Ka)B^GciEy7Ow$e|r0;J6@s%XHUza?g3(Y
z=iK{2<u5CDVx?SYb2nCAS4k_52`xSt@!*%Xe$IT}+;!Id!M5(Nt@`)ivAoBJd^5PG
z;;Y9EF($_Z2`;{I{5gt0QOTtucKOI^B#FQ>QC%_W6sSt-tUeFFW_&ECy|d3qcK@gr
z=EP75l0=Rq!t#XWDYGr`ea9Es!XxQn=F|AGhVmO&EN<iCKx$0Pi+>KLw$ReoBZbst
zW&BsjC>@zN`%3IXabS};ub4F`SyQ|RI3_twmL!Dq47&|Qa)n$vY(Gezkp5v`1sN)2
z=dd4w3=?vL%_$VJXV~+|DHd|ius?&0Fa>lPvvp>FOdcC|RNkHVEuiZdV{G#7A%BwG
z{+w-<OPKR8bLc%L%Ab<6f*9jq@_r9!M<sD@{5>cNsZD%&)Em&3CUa^oh#51Xx4Yfs
z)D_seY$J0{u)Pd~EU+XlWU1{~j*tf1<sm}Owr2TKUCuf2T)4K?<*XUcYAg;W4rfDC
zZ2T@L(;Vn=reqs%KA@R2fokz@6$^{mE>E#2s#qLVEQu<XMinP{iXv8<yQFXux)GZK
zY=6uss*exmX0<jvVtiU*J=LLRNNesIYI<16mP`bFRM_#dcB7f~ZM#|~0tNdFCjU^Y
zoW@$6h-%J<RZD%<Fq*T)zr_&*8{&5d8-k!Mm}_iK0krQ*PV745x5ci<IoDRfC1>06
z1smQqpuxTs(At9R#cYrucf;<WeRm*nr{{W8%<}AbFsyBNuzq(SCb7I0W6GHq+-yzy
z2={#!UTj}(KF&@>8bE9<4C)Q61&yvU3<qH>|1M*Ww&Z$DPecz#ux~h_DE3;#CD=of
z7emE$<0N@WRIw$Z7}3Krb}Y0|wk>1fQQ87v%rQ!rV3UN@31tW^U#9#z<>x5R+a&qz
z%C}+7vpjoC?-^spkZ<SDG#tUc@4(asY5OeB6er1!)=sm1sa?{lo5b{QFc%+}ld@#6
zk4o#~@?-qYO{N8^<;*a~2600Hb(c}U@622+wPBiHYAh}0;TX|wJ~`?`Ikm{K(=g~Q
z^)sQiHLSHYu&u$qUesWx9D$jN!vxE0{u?$QL%3{OWC)kd8l>1_mM!!Z9Kus&pQ1ZR
zb_jomO1vTbt5O}pe+o@(HJQmWNQF3oz&_>%ZG!S63>unkVr5sLFR>i6tOO^F0uwKs
zoBTwwF1f6vHi->&l1V1#CF9uQa!w8|4+0qFj`ECf9-9U_9=3T!CRrY%oBSGDln3G`
z2LD5I25Ck=vJfjZ31wbrCdy%~W@`y6Dku%6jv*+t{<K*qjyZmeF+~-@iDO(_r$R-$
zVwT+=jM)l2yduc9Vd|LS!HC@XWtUm25%Bh*YD=cr0E|oo^U8<VZp<xDp#9~x%cUhj
zGHK&dp3jO#Y3(q{sVmQQ^^bOH+jCdzrMA|xlTEg5W5TwT7YsHVn+(`ioH~XFlM73d
z@zl7~s?o!PV#I5_4hFW`qe{(GL}3EPE6*RVR1hq)u}hbuKb07ja$A>;ovVpGn8;9J
zQ>w_0rOUk(ekZZ9jN)XCC>Do51~D0{sUP-z8A_Wcu)pQ-ETDq!U@Dp6!G^@}i3u#*
z{ev?KgSJHBgrFlafw^sw+~Gk>V)*!AV`4mWTU;((sN+K2(-Vc~=XUH4Htr4*=dZE#
zB-XUKytY2gvvq69qh0RNdxNlH*-SYbBqUSYmCbC~9kik*$<$_P=3?|^@v>l@b`$H-
zHMQ7PSUlD>H9gUxiBsa&ZQY-kGR<qLUsRh@Tx_G1D4v#!Xl2GrM6~LB1UY}G_63Er
zK^lRK5z}K;`x6x%K?nDUFs~NTt(_ac9+l6X7i`pKtH<J?J%QF<YpyZn`x9fwao3Gl
zWIHtw<gVQvG$AYl!6Aug;!yC0)4Fm<)%gXv+Nlc;1}+Q-rD)rJ6n!ml2Cu=5?e~YB
zOv}}=n6}upWU;NiMO|pNy6~ouwxTd-OcWMlo)te906rNUL}FS{6VKF~yH0qHq1f{h
zQl9N7VrL955h!~lF+3wsc;=w+s)RC868n1+e%*4xW{ne>{T*t5r`cb*H|Vo?uiP%Y
zA;~1GTVsDGnyZk~m2G+uykA&=ake9k(FRCi@A%ge3sSKnYsL8?k2Y-QaIV)t@LVn9
zHzX%8Ig<M-uB_s`(hYKQa^pdME<lOX;I1M+0Y!dpJZ8aYmjg{;H95#(VU+ol1vT-U
z{1_A`pll)1u}H}a<5$qRvVz=ru2q-PBlISgU><8L08V7vBE;q#$tKShg}KQe>R@0!
zk8mZ~ysS?)Wt^W=F62@c&lyhwR}7$Sgl)Sj**3%|-*$7Di$s7xpeXu)fePdL0gaIb
zt+owtkj3_3aO7D(Zq^u#&^JPFW2U2Uxywa2bOh8ET^{89x`5$?E}C(3q+0mT$#WHE
z2Rfx1_|U3@e1tkDtIv_q=fr?sVt`+^Hpm|a%i+!^uGnd!LClVq43dV~I?2hgHdk2B
zLv!O>>@Z@c$n^Z!Z9^lXp->-8WR}E2Xy*>vtqqiXPJ&Q}{%Ecs%mR}?)+*UM3<k2f
zSQIfEVN<1)VRnd$F)+AP^k>Wu!*RDO5hgiR^aQgU+&^g$Ijo#2Hdt;I>h#V|T-b1;
z=V_~@Su81iaw{$CgT}=)cJ*a*IQoSjnUnm;oKi1`P+K%iG2ITTqr|fxoa6UxP>ywF
z7oQ?GU@`&6e8^+A|8{qA108UiQV(vRgZz<b;BenV#+uks$QkS5l;Z4|NKc^+<IUd7
ze6Te$+O|dxpNtJHxV~&m;#=+LvE#9Lw=6V^i->Uynl}S121n51m(4hqqljQYZRZM<
zgGzh>(@sm|jLMEU8-xDmWcPSG3)!eL&qmGz<2;RQ3?J6GtwPQ#^fTEjB`bb{rx8D6
zJxxxywL}-ow<Eh4-G68oqbtT59kI<u2We+_PDV>}CEOC$=8mr3R@2+s*SN8(1)#Sj
zGqY-TV@GpKV;|I=Ee4MjYk}(*Ep9yXoQ5Thi&m{X^YrDWv9Y(YyJ>x^>1@5YPY}JV
z>*#8}NZeG<X@q9Eb?b5(JDd92H=~}$u8!80#!PkX#W)(<JKOsfH}y4{me!7@ON?y_
zny?9Vvl(m@y!qDVq|;WV7iBW(Om#(dMOAvn#?BdS9ZkI(PRI~<&FH<Ty?e&GP3ys0
zx;CxrXgy(OHE>5)=lU6{m|X+K#^y~YG;Qvgm7W39(|gl1diz>VSl_t`u4lBhZR%|9
zYwzlu(c5ZMWVf}Tojylhtrs`9cGIrcu*nP;L)X~desOC@Z{xa6ZEdYR8DE!~oegzQ
zE26ZhtFy1CtD~c}Ck%AMqQ$kdYHG}u_Lja4S#vxpWTYglI$F(L9bG+!T}#^^J_+V{
zEkAwnlE#%Q7uz9Sbo%m!1!sztGq3|{4Q8TwS#O<f?dv!7v@WY|UfkZ>%@Ofxkl>l#
zzNVf&v#GPUeSK$ZOS*YOQ;(e!Ta2#>+my9r-O&+6r|cXseV25%nhmY(>o<75S%PuR
z%tm0FTYDSYI|s!w+j7{n_OvxMw+<eFS~Rw++t?;%r?G}5oW5>q+KJuOYdeE(Z`#;t
zVMl9QUjxU}Z~|m|z;U+fUL(US0Up#_dfZa&)zsXzvAe0y^z_1GXE@+1PtIhjW*e?O
zt^halu^bVfWmqCdsI}IbGi<KU+6*_E@aD&-?Fc>=+WCo)>hf*W_GPEgX{WDPzM$T;
zG_$#ISZNop4q`>Ksoc=Dv9+?Rv!$o0vZ1HzLM)bEYcr#-wYRUbxf{C5j`nptv|ayS
zW!RU>O}#ypSg@7toy{Gauw_+Lx~^_$>Hwor1#<h^G^ym%^+8rFZz6q&Q0xM5QL(|a
zci{&<8I+A(ogl8d>}>ONsLGWwCoNhuH$4se)G@kA*@uybAvhOqoir>Ry9c)}_5mGl
zR3N-*TTmF^7h6!6xC8ew_Su@vksG<RVkW$ygY8YU-4$O@n6odjpfLB29KQ_jczpl7
z>GS=M2Y137LFDbCzkT#~M<RRENE_ZDBL7C_-^Bb~tZ!e=g2Ewp@b1*Fmp73<=gp+w
zj)~$c+fUFzV(;iwlQ3@|_A}$ScJU>iy`>dx9B-5O(3g);MczKlXFVr43V*EsM2{br
z#RP93o`c`8mT3J6vsmppUNPLoo~2xpME2&{@pX~>c5r(~Z}kb&9pPKlo^1&5u3#%t
zcO%bx+pEFxq*Enfu8(lMe6%9v%kT=4@4K8N%zY95P=r4MKGK<^zV9j)f8)*5gZNnU
zEI4B-k}%H$a1Mwh%u4{rItqV(2A=Nmw}C4>{vL3R$N6BO*5mo$;rQ}_oiPi&{4wB5
zJzfren#Yd;KilIO@N+$07vT%Q&-e0|Mfe%uZC?I45#9v8!OL$4@9_91Bm9yG-v++f
zv*&u^+!Mj&u_tlNtZQLU;hc$q-=W+p!C5|(Tyt+E|103(d=q=0hh_QhHqU%R%X3eP
zf%6?`D0z|k^31Oy`Fuwj`p+|m!0n40>m<+cU8&FC1-I|`H2<IA_PvR6zW7XA%%40{
z2p-PQJTnS>ikCkj!Wkd-MI_Gwo5s=7DX^z7iGj~iZk6DJ<2%%xc!c~=751Fv<0ffN
z(oF8xG4QiOV`!2Q|4Gvr$zKniOJ`P+rYpj?fQPjv&DIFt2~OcTA!Z89Uhr_gNt(OB
z!}ur7mm>Tj@Nhhm=27s8)+2wC<^XuO{*&e)IKOcaNt&O5&vO*^&qeqEc(}fk=2h@;
zeJ9OZ;0<2+zk`SC9WNVjZVlIS(tb=3j#<)vDB$xl*st^ar6YVAIOPo-F;isfz{C9@
zX%>KYS_}Rp&9VqTL(6l|jNv^V>*m;tpuL{NF&^vGUepDV`A}dkjO6!#hvQvfE(H(w
z_X4vWJRGkA^Kanc{#{^h20u32h5~at_-v1V9(<w4zYHG6x4?WIJd9_7`48~5p8fa1
zTRi?Wc(=!Y4j%4z1?C0t>%4sW=3EuAZ#W&nP#2k(VINA7*A{Av%xjVSzk!GQO_BLW
zgvYSumSr7^zqH4PB7dUCM}UX>O_3QJ;YWjq`%RIV4j#t4$jkz-^8C#M56_Q9<|OcN
zJc>+1gr5UG*DJp+!Y=}+U>n6T#`J;Dvl{*snad;m>OuD7%yr=5_!pTy5q>B5V$a_f
z!B6)1L*Vru|5k*5A3R*oMdn8l{!8#Pz4E^U59eEvIRxI~<-Z9Y&aWc#_XrR0=3ujD
zkGI06-{U3VH+XzJ`0XB_4E~_UD<XUj_&2@$`QVRxoZmMb^!N(!r#*fi_|H7v0{%;n
zZv_99$2WsN=kcxJ10KHy{AG{t0zc&O+reM+IAhDbPQ-qZ;|SK<aC0~8Ly`T==MO~k
zzX3ipYcSkA4qoi>r@+JgN&HRn^0N>iZc5D02Kg`X<^nBC%=3}_mm~Zy;KQ;`OUyeF
z{sDNnf0mfs+`+sEJlr2jOj(4NgQq?J$42-}@NhpUF~>*v67VXo{Am$>7I>|fzc#|#
z!RLGVJrVvX@Nj*Wm@C04<8cJ|RB<2p3ajCd#5Y`TcpdLa+?1MowY;cHBjZtO9*pEa
z0-l%kQECoE_z%Iu@hLSw2QT#Oe*+%g@06N9f`{{`)Vv<y?}D>$BBkaq_ykAMe)cWg
z&r7p81abM6E31opBQN>9`wS)SwS?NZeE*p>h<h!O{K21w#=VwFemYxLczJ{$9pRHB
zd}@Rr6XD0&{)gvZxxWq9tK1)i^Hr|*V_7e9J=~Y&a{anD%jNpT-%l8Ce|?kl5Rv)j
zk4KnCi|K|Rw@z1U-Y*XW@9=mr_&kq~1V7E=W#APa9}k|+@;p-x9_~+hW(s)NhNR)w
zy`jIPsR9q%n>4e)!}*vra|iJPb0YZKY<&f0G5Db@FEY!({qy~4;0L_?Gr|4+`W)~n
zUOwN#`{#>haDTmQ01qW?E(Q<R+ho%}D1WNCVGu7hd%(l~mYRLwVZ6%CJ>a3ga`OOq
zIP1#I!{FhpEjN#WpOkG-xp@+NfyaLg?zjIJ;9-1A%?sdudtL$$rNq1n9*$p$c@x~<
z-`<Vne=w+g(j>51`SUvo-kz<X+>8Kk^!OO?>MT#1G<Y~4lV&P-C__yJcr2?JYGw_}
zFEGc0`|D{D_}y9ia&rp!evh94e!$~rgFoi+M)2QxybYYsbVSO{M(}?)YRb(f@OM3a
zIry<zUSO^S59e!v`84=KFaKun7LVTs-tF<bz{CBgz<d$h@9%@)q2PH0__VAd&pZY`
zGH{A=^91-%k3S85y2qad=QAFWa`PN`xPJ1?i{PQ;nnU3Je)u~0Ca?TE;C#j-Qf}Ul
z*z=2$P!fh;T!j5im}2l7yz-;LukrW<aDTs=1n%#5$AW*^v(JF@*|SKwsg0DM2j1qg
zv41WGf6B8z75sZ1UjZJ<aB~j0zkjcd@b!c2i%ci@8(9ZMW)t|IJ^z=3zvS_&z$axF
zM7g;he5}X!fVX@64)E|9Nx8Wf{L5bcSHM5-@o#{K^RdW01|H7GBJ%|J4PJYn2EX0o
z&w@Yb@#nw~dHhB2P)g0AK|E<*AH)mHJK*7dR$$&Al#h=d!pR4>xqJuiNx~F?`}3m|
zJlt;*X51kAA~O*@obN^Em_hjyJm0*28T|A-jx+BZ&z}4Kk_cZB;cFtiM>+T85xBnG
z8Ogsp!tYZ)(b|`q??>`qi161UJo+xEv2kTX<H?PUc<~2NFJQ%zlPu`l*xlIEy58bT
zTYI{c=-V*7^3J{xtf=p5uBbBgRe`ZEBT2O+Gwo}|ZoFx<nKhEkl4N$|ouf6GBYCxw
z)Jc-5vZmgfO1x^6>a@O$<1<ySRb{j;yo(ll^`FrSGFn4*mE>2u_N%{Y^;fO_s?}e$
z`m0ud)#|TW{moQ=c;#&Co#_HH^9b)Iwd_o-W2V+IQ{SK4Zwy?(^*yFI)yii&2U>ZJ
zR$il(*J$N6+8MlWx8-ZJq8jZ?%^dIjt$xHHhFU>Qo!5H#>cQsE(h6s3g|oE6Sz6&N
zt#H;X?**)1!7OdTEbY-Ot#Fq1Xtq``TPv8Y70lKOW@`nrwMVnn-)!|aTm8*ee{<B|
z9Q8Lx{msGfMBfnG9?sDU=4b_TW_zL1SIJ_iHO|o*=V*<!T4Sx&SgSSGY7c6)f?BPh
zR(nvZ{%X}<t@^7|e|74wPW{!XzdH3-r~c~HU!D4^Q-5{pFH@xsGgay_Q>895Rq8WS
zrA{+d>XonZZMQR3>NitWD{G#g&1jaZLYMIt)n{Bq*~Oc26=hsS+4Y-Uz!_Ijb_u&R
zoN<dd<5qE|+I7LL<BVI#8Ml%%ZYgKnTE-_h+CsOQ@okA}+<L~hI!@!-?3QoFt=|k5
zutZ>{YqMLanVBvoZmnkAV$HbKnsLiD<JN1&E!d1(u^B8`siMZU8EaHDZc%33s?4}$
znQ`kf;}&KHD^p9kHoK*maceQ-7GuV(#*ABz8MhuYZb4?;ip;nrnZcU;s4t?VYPVQ3
zZnb9Ia?QB)nsEy@<5p}2OIC`zC7N+-G=oK|SuRR;RdVE5h;xkHrj?ylc8=LeWao{Y
zMRvZ}nPF#zod|a9GciuznRH|)g&lr7zAdfzB&)G$-MXIE&73#&E9&iB6@5p0XDhW!
z7uwmibcs#sSDtC7`s!6HZA#8|kuxP{C&+DDZ=<!k-o|Qmy^RZ8au&cP6XdaRNZ3*2
zu^jT4z@2)xNxfYjtLtrNVM!${ZL-iV6flMg<+K&*#a6UxB@^Uv>Y;^9*kE>(4Yp~$
zjoNC77!o!LiPUcw2$;0nt_d{5wtI<9;La9UwUP-KTLa%Vskb`-3b4OuDHE93-mh9I
zL9km3OgQ*3VFD9vA(Mp*sav>2b2zwcyUn4Cg-g^e4UoeG{%8Py*1X;>11RYaN+zhp
z?sN1-BXad%Q*v#nP06*VlGfV=y}I5mXC$_8y<Ndz*0kQPOboO{!`6$zw4+gPXYA^F
zbtZM!+kV?cu-YyI{7Mh(o+A^ry|b;WD*GXjd>rR}7Nj3p$#;}lGkhB~_{+WMCymZS
zbJvGIz>^On-9@JR5)v-uyE#`h`Z1x?!_a;}*4Wt6)!5w8+SJpCFR^$bk6Tfbu>W*W
zp2@`Vr7nfn?FoI<If__sK$s-#KUtT1>{zbYS9$il*N+Vm{aot#Pq-k9am4ZjpA78u
z4a8UApJ*UGQ*ka*UjMr`@P5qU3xVVL;-`~(Z9kvEILzBQ=aasOnU2H})0=;Lzo4&I
zdA}1+iciKQHcT*Y70S-R4}{OG#wfP&*&5h?7*C%GVESjQ%1*@(QygOyj|Zj=Z{5<0
zSr6}%**4ZTO)=Zf`?V4M(uNw<Gd{J7S=W5U)HAlOkEZ~~3ZyKbV^JSRx>|7p=~^7I
zLa|u~T&52U80RsHHvqHEeB4Eq>my@c){P$slQD{Wfa68ta|Cd#Sg@Tx@WX!DIB0*<
z;A|W9jKAyebk(z8Rf^eP*LUiV_w=ss)Sv9>>xs4A2E~lSxj16OrEP80qYW&}dF5ir
zzBv76Pk#k5d@_dHJ)5gNn_GZgUl<411{Vjmfp^jPm*KYWY2f$>X%ELeRwCH;SJ$2G
z?_Oj==Hp0wmdF^6wOfy;5$l>=L9FY-jXS-v?=I$Rfn7U4Dh?N`J>zqkVvfZ}_5CK#
zo^f#TyvNgj$<sgN=^ys=j}mK~A5+XW`~XKxALjj(xKv{GGO+8*tHAM5qW>%LXu&aH
zwukX&ABZ`Q!-zGWcDyvs<Ehv9r-4Uw;727FZKKfV5XEJ{ZXL0hTSsZ?yYT~=h{LUy
zX~1Q={~Sxb;wtJn;E-w@V-(i{m(8M9-sg`|JRiL53~J@M>KMhG8@Vr7wSB)nL^0>d
zi0#t;bBT8d9ts>U6I@9BRf0KhM_etK^L7M3NQ30z2>7ubgkN0*e>dh^NEyT6J^Vme
zmY8n^8IxeF*fS2nIKfkiQI<M(iFhRfJ6CZ7%$6(Ww^ZDMX~XZ1)+_!jaHrz8VZTZ7
z3JmsTihl(C4#j*P_-~450Pj-#7vRq*z8&cUiup~^*A?FkKaVQj0soIH{s;6=Dn173
zj}-I!mX{Qd$Ao)D@$;~ML-B6d#K76F8&MaxQR2Iij#qpO^v5W!N4eRG7XmL*%x|q2
zFP1$U=>>|PhyFsv9Z0t*<~n#&G2i6BulRYiXFST#PaV=@6dyu5TQT2EE>ipx*f%JK
z+N@FhpGYrM{3qCKR{R~*bE{&0?|L`!3oI$)%6iAb{$c7laUkDP`{hXKH_$cvwCY=6
z|0`m>KKYI6>rnO;;=R_5`K#(D!=B%U1*M|@K=mV_&&Lty{>i^0!}i>Xlx2u7Mf*RY
z_&(s}if@FgM#V|^+oYKN{uD6>6S5UJeUxB+Z$+P%A-#oog6Q`Wrv&qRaN2wge!fVY
z7XAIi<$@nl8-72;Z>)leqJNzDXu(eqPZIn);>m*ln|O-g0OeWNJ!t0;;;Euf0;i`5
z9z{JTBZT$2v71ADtmsz~!w=6t=Mo<$`Zd7m>4MwUW)Ez7iD!s@3vq?u%ZMul-$;xn
zs+4`i@Q;7lWbP);h@RgUrK<%$s5Wh|f0%ft=pUs`jbMIH6wDI*3^5lL<hR6g1P>6`
z3VxlqPVn2ra|ItJ{)FH-PFBJ3g84U>f)fOfBc3PtSmF}}&n2EO_!Qy=g3l#hDELBR
zE_BGH#OOP}Rpa+O!D7+x08TFve1qDY3Y)#eOGUqr_$0yi6Q3;jtHjF$KTLdzV1AFo
zx*mj|Cx}lKJ-^FI*9-o++RTK_Z;6+Set`Hi!G9t?UGV=^`&!t)N6bwN!f$KRX9&*2
z=EQpGlYeU>SRwjR#481lBR*4b3OKz=@O0`|3$7wQOYkgWZj6vR+MgqM9`&eeD%RIB
z;&Vm6ocKJ!tJLNqwC6nH^F`kXoaROgxsdubg8S5->xSRd1dXEKO8d2fZ=k+O@Xf^Q
z1n(zq7JN5xi{OWdTLnK%+$Q+@#OnqBfOv!89}%|;{yi~I0uX)!6I>+tFfmUGkRn{{
z2O9;ah&u&yD-5~>^IFB>lRbPPaktpqL;Oj>-}CVAJ^Vg#kJ#`sF6b3(&tHl+Q{N~0
z8;LgwzMq(xkb}fLp+R0FzF6>NjHSc&9HjdDslP;Q&~+1VGlvut>pUC@?B-z^^*ZNy
zP3Y!)ntEM#lc?8q$Ll(`7fq*L_aa``xjnFkdffwSsn>mpmwIkrnoqsXnZ?wvm3G>g
z>)hjYfSY>_wAa1*OzL&7KAU<y@0?G)o_FjuoA#I2XReQ9h_zoSV%=9K6CWpSIF4A`
z%xhHFPM&Msx;T+o+p~mN+c1&%J^7|%isDZpwet%4t-uwkzX_@J5B;6MvsKUeWv>sR
zzaMy>>c5H9#s~U?!1lTk_}9QI)aDS<vlPFHlrdp@-a*==I6ybs6mxD~q?o5sdu=%k
z3dm2u12zisCb9lQBVMBf92`g+F)N3hjlCnVPhN~UOnkNI=i~x^M=-z73;t8^bgn@z
z8pt*rDPEXEc<q|fPcL^9bMiuXNt7C4p*?@6IIxhf;7D;&Ll~pfC=2biYihLMr>N&-
zhdhHLHO4|4yA&rr<V74QUid*?!I7F^p?RH{lLhiFj#QcmeZ-L}x6tGxJ}C}9WEAny
zf*I2k7Z8M}{}d-0gs0Wi6v13tsi}fFWm8;a5N^9EUTj0SwWT<TAlwd8oTQK|iMbFV
zHxbVe{8?g7G|0Wgm4Y86=3<3BLYxu&U1Cl~$P>i>5c~o$7ct}|;yS^9BIYIs;dOQD
zM8OHnhtzz*!-y9ME+JkhcpUK}!R5r<03gQ_b1^|O#7hO&5}zcP_ed!&0tm0qQ~x9Q
zY~s@dpHKXO;2vUb7?4j9uM&JE@oK@>6LZl(K10k+1+tI$T*3DepC|Z1VlFHQui;Y{
z2>uT78o^HxHwykC@mj&p5H|^aj(DBm0pe!CuMxKh{x9NI!7;3<RGVO4x2M(%9!<PK
zaGJPX@G-<ZaY3qyxzHiJE=g?^ynwh<@F~Pyf=?s<r(oWDq_{CaczuxCEO;~V7Qx$y
zFBbf1;!6bYA-+`beqwHhko$-)6Z|mo<$`%VpSnWuLE^1~e?i<YnAi5HZGvAR-Y)oU
z;vItji<k=(!fTY&HG)SHUn}@1Vs18&$;6))TuFSr;NyvJ5WI}|M!~%PPjLf>G!pYB
z8^UY;)Xjo<&7a~12I(ihMey~+yeWX(PW&0cytYr>Dwx;vsoMm9kN9@MKPBEL_&3CN
z2>uiCoq~DYp4u<?pTu_w#vgk#sm}>6BmTT#e$$`2TW~e;J%W!XzE|*4;x7npApWA@
z3y8lYn17ovb)Voq;x7xng7|*H{2o8`fZ&^nzan@)@q>bS-JbfY;75ob63pxK)Yk+*
zL;Q8Y{N_FN?}Gn8{IK9Rh`%BDed2El&dCLSMDTFpM+F~6{4K%95dVkZ8N?>AWHIq~
zMSlwM0l_PYzbBa2&#CVV=JhlFBAg|giJuZZuai>;1z$t_L&3X<pB8*O@s9-aIyv=Y
z!4DAsMDRC=e=7KK;%5XuMf@|tKO=rt@bkn!7yL5uF9iRE_?Lp;A^tytKOp{<;M^g=
zzZT4E>C|(A`Au=^dBOZshpFEPo=D6GKag7D0SnCn;+F)ULj1B|{Ox9w`h(zeiT@~=
z-|(jXB)FaUkl-HTR|NAr-qfpt`3-OC&w{Tcj!PTLpb8R##}gNbO&Uphrr;VR&Zd@l
zj_8j^lAbGgG4<-_Wa4?E=Os~kncxl7t4#;-a?y7qNuMtGV(Qg~TVb$L^!-TEpA^h3
z!`bX5?h`$?fb^AuAEsXYJW9M%^p7D)e_QYX5@*A(29JxLAxl3Y_$}(y&pX6F5dGhg
zq<<^eAbie-rooG%&jU`srZyG5mu&27T4ySH`+6kZ;7}j_q>8Dqe`lhCujwj!@Mlpf
zsI72s0R7L*{#7pC8vm<o_sNv?o&8HL?oVMHv8aCA<ay10734l!I#Qnd5Gc$GtNU=C
z>!y3r$v+Ttq@K9^?2AywtHS*Wk1PrQct=)c|8`B5@tZkUa!UyHtGWvO0gLq;TQ}Mv
zsrbk*HEh?y7sMDr?`sEby?*G>)!fnE+vi4B?RuIz*S8MV^>nWPupvK_aLzGh9HhF@
za{j4`R{YTv89(vf*3-1HRj1y^Nyfp5y8yN}D>a(Bgn5*59K^Vku<}uMQ<0m8<Nsxs
zflahtu6rl0-sw;zaLm_?X$y^c4!8mb^*n~*;5Op><7sjz4kymvDNy+S%p$x~fsXzd
z1Lv<3*!RcN-!vRfoWFJ`e1B!|HwilWV;r2n>w$fL+~#9AoH&2?LE+o|5xmbCX&&i4
zIOuym4$ASUcQFdG-XsoJ?~}m3KRy!M3!M|@QFt2n{q-+K`_&&$4bI;Hu<!3JkT;-n
z;{5Tn=li>63H~jw`YX~rj@$p>@csQBL74=d6X);0q452UJW1~V+27%sM}K7~;QQl!
z!W!tEIDaJozQ6O~&&{h67&DLlY9s#E!rw&a45{<SM<l+#nv><7HrrQ<!};UmNq>E8
zhd<|oZXIs<n0CDX{W$)v`j~dRKBnEik7@S+?C^hfuCu@6*-;hdQGTs<!sH!H<q*fh
zxcnS;ew<qn=fA>^ah`y~#rY2re?P%y;QxIESMR$KyGfYrPk9T|*}V<m*W1t#&X;np
zUcL)*W!U<^V6tx@P;q(u+ZDdQX=lh<U_Xw=;rfw^_*+?Q%&E>9Qs<BVF2eUWX@xNt
zBcJ{z<8c0JBL41#ziW>W=gNq`eekz0U;It={LNQ?RnSqUVl%B~Wh!hRk5eOd=U@`(
zV@qr4?9PkWZ97WdDXTl{i?;lCA55Lx0z0mKC$0%Cu=C?mdp^bkc8tq(94;;_3e&7S
ufXUR4zEnbUIWlR7P}%Q#Fom-+9oNL~c_$jz1nx<`-CY;RJ5g8A+5IoQ@=IL+

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_ssd1331.d b/lib/libssd1306/bld/lcd/oled_ssd1331.d
new file mode 100644
index 0000000..971b619
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_ssd1331.d
@@ -0,0 +1,15 @@
+../bld/lcd/oled_ssd1331.o: lcd/oled_ssd1331.c lcd/oled_ssd1331.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ lcd/ssd1331_commands.h intf/ssd1306_interface.h intf/spi/ssd1306_spi.h \
+ nano_gfx_types.h ssd1306_hal/io.h
diff --git a/lib/libssd1306/bld/lcd/oled_ssd1331.o b/lib/libssd1306/bld/lcd/oled_ssd1331.o
new file mode 100644
index 0000000000000000000000000000000000000000..53379469882f8902114f5f4b78714bc9d86e1e5b
GIT binary patch
literal 46700
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
KI|A0n^uGYGe=axx

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_ssd1351.d b/lib/libssd1306/bld/lcd/oled_ssd1351.d
new file mode 100644
index 0000000..06555c2
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_ssd1351.d
@@ -0,0 +1,15 @@
+../bld/lcd/oled_ssd1351.o: lcd/oled_ssd1351.c lcd/oled_ssd1351.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ lcd/ssd1351_commands.h intf/ssd1306_interface.h intf/spi/ssd1306_spi.h \
+ nano_gfx_types.h ssd1306_hal/io.h
diff --git a/lib/libssd1306/bld/lcd/oled_ssd1351.o b/lib/libssd1306/bld/lcd/oled_ssd1351.o
new file mode 100644
index 0000000000000000000000000000000000000000..71577edac80c7bc628a139b63dd2df36080ec446
GIT binary patch
literal 32348
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
E2Y{|b=>Px#

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/oled_template.d b/lib/libssd1306/bld/lcd/oled_template.d
new file mode 100644
index 0000000..64f3d6b
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/oled_template.d
@@ -0,0 +1,14 @@
+../bld/lcd/oled_template.o: lcd/oled_template.c lcd/oled_template.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/lcd_common.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h intf/spi/ssd1306_spi.h
diff --git a/lib/libssd1306/bld/lcd/oled_template.o b/lib/libssd1306/bld/lcd/oled_template.o
new file mode 100644
index 0000000000000000000000000000000000000000..24886e4d3f5c8d9559dc8e14f3d8ae6cddf20e88
GIT binary patch
literal 22540
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/lcd/vga_monitor.d b/lib/libssd1306/bld/lcd/vga_monitor.d
new file mode 100644
index 0000000..3964c98
--- /dev/null
+++ b/lib/libssd1306/bld/lcd/vga_monitor.d
@@ -0,0 +1,14 @@
+../bld/lcd/vga_monitor.o: lcd/vga_monitor.c lcd/vga_monitor.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h lcd/vga_commands.h lcd/lcd_common.h \
+ intf/ssd1306_interface.h
diff --git a/lib/libssd1306/bld/lcd/vga_monitor.o b/lib/libssd1306/bld/lcd/vga_monitor.o
new file mode 100644
index 0000000000000000000000000000000000000000..a0085450551b96d23c5b7269bed6a3ddbca15bd1
GIT binary patch
literal 20376
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
NU54>>g(!3IKLOATO)dZc

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/libssd1306.a b/lib/libssd1306/bld/libssd1306.a
new file mode 100644
index 0000000000000000000000000000000000000000..c11f68020976b9031eb615062b88e7b33776e420
GIT binary patch
literal 1573852
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/nano_engine/canvas.d b/lib/libssd1306/bld/nano_engine/canvas.d
new file mode 100644
index 0000000..6f46457
--- /dev/null
+++ b/lib/libssd1306/bld/nano_engine/canvas.d
@@ -0,0 +1,21 @@
+../bld/nano_engine/canvas.o: nano_engine/canvas.cpp nano_engine/canvas.h \
+ nano_engine/point.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h nano_engine/rect.h \
+ ssd1306_hal/Print_internal.h /usr/avr/include/stdio.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdarg.h nano_gfx_types.h \
+ ssd1306_hal/io.h lcd/lcd_common.h ssd1306.h nano_gfx_types.h \
+ ssd1306_generic.h ssd1306_1bit.h ssd1306_8bit.h ssd1306_16bit.h \
+ ssd1306_fonts.h lcd/lcd_common.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h \
+ lcd/oled_ssd1327.h lcd/oled_ssd1331.h lcd/oled_ssd1351.h \
+ lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h lcd/lcd_ili9341.h \
+ lcd/composite_video.h lcd/oled_template.h
diff --git a/lib/libssd1306/bld/nano_engine/canvas.o b/lib/libssd1306/bld/nano_engine/canvas.o
new file mode 100644
index 0000000000000000000000000000000000000000..054cbf34cd4dc71f83d1b3fc6b8f8200edabd249
GIT binary patch
literal 377256
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
GbpH=fnO{o)

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/nano_engine/core.d b/lib/libssd1306/bld/nano_engine/core.d
new file mode 100644
index 0000000..9dba390
--- /dev/null
+++ b/lib/libssd1306/bld/nano_engine/core.d
@@ -0,0 +1,17 @@
+../bld/nano_engine/core.o: nano_engine/core.cpp nano_engine/core.h \
+ nano_engine/tiler.h nano_engine/canvas.h nano_engine/point.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h nano_engine/rect.h \
+ ssd1306_hal/Print_internal.h /usr/avr/include/stdio.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdarg.h nano_gfx_types.h \
+ ssd1306_hal/io.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/nano_engine/core.o b/lib/libssd1306/bld/nano_engine/core.o
new file mode 100644
index 0000000000000000000000000000000000000000..3f9cba127a771fbc77e29c08c03d865859e6d1f0
GIT binary patch
literal 23308
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
abmQV*Nu?&|6RL*nUdA`O6Y#|)XZJtYn4mlW

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/nano_gfx.d b/lib/libssd1306/bld/nano_gfx.d
new file mode 100644
index 0000000..7c9306f
--- /dev/null
+++ b/lib/libssd1306/bld/nano_gfx.d
@@ -0,0 +1,18 @@
+../bld/nano_gfx.o: nano_gfx.cpp nano_gfx.h nano_gfx_types.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h font6x8.h ssd1306_fonts.h ssd1306.h \
+ ssd1306_generic.h ssd1306_1bit.h ssd1306_8bit.h ssd1306_16bit.h \
+ lcd/lcd_common.h ssd1306_hal/io.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h \
+ lcd/lcd_common.h lcd/oled_ssd1327.h lcd/oled_ssd1331.h \
+ lcd/oled_ssd1351.h lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h \
+ lcd/lcd_ili9341.h lcd/composite_video.h lcd/oled_template.h
diff --git a/lib/libssd1306/bld/nano_gfx.o b/lib/libssd1306/bld/nano_gfx.o
new file mode 100644
index 0000000000000000000000000000000000000000..8ce4e4b1a80d926a7f1ada25a860406e9e247e70
GIT binary patch
literal 107164
zcmd3v3wTu3)%W+AnG7L!hG7UXgb*XQgj_HnA|fCn*a#6(fm#D035kXfLqMPixj;Zf
zNPr+>xM-<Ts+6i#t5#Esiq;EKwP;bNh=__1ECM3R_h0*5_L`m8+xNcT^Bo@MoZnt+
zuYFs4?S0N%viPdp(S~6N`!K}yLXi;78w{}&!W^m4M+_HNh;v3mO=(wgvbJUnUh8U7
zGkZ1BzlvbrEmNa!@7^iZQ~ga%u>axM(>)q$uCC}A%nFK@l-O&UTql=bXtdV$zU#v3
zy6~noX$^QiXP9<+!PeAZbxjG*eY%R)%;SAxmt@vA(Z7b^)fL&Waj~>Pn&C|qHS@M?
zHRf;0i|&*<I`+Em+iHGSvn}>_J#rhbOv_z6D_^w4uI;h*t+gMoJ!hC!Q;~0Y&@9a^
zp(1Dm<ANmlxbdyV9*wb$;Z5r@*Ei9>>YBe98@6nX{w-SchC%kX$Ns*@?#x#z_86jN
zdF*{XUPFtH8Y>%Drmb8%9wi=MbAF9o>i*1EGY@B+%<yH#tP`SV=J3q&{`X`yOG?fh
z-#?V5Ws=OU!}*5e4N=JT!kV|%e7uHRJ!cf4uChI?qGdR)MT<waOA^v#`*61V({5>P
zO*ncr_IP+~UCs09Pxq?IoZCeIvN8uX(Z8!JRv&K&#%FpmL`$dGh;^=$4+po!=4IYg
z@yiRIjT9|SP0N~gpuN;`8p&5O_Xe9Yhr;HV%-LOy))ATW@jCwarJY5~*34bOtxda{
z9<F${_xR&^7`Ypou9msiXTFoMcirxcKPUG^t$VJw>I<v9?H@P1)$l??coW)ymP|$d
z&ofS>53kAHve&qF%Px%g&gd7qkE*%B8u4p;=C0jZ^9cOmQRxrkqVt(Q<o3;7y9J|j
z&KOxUx{3Z(*NlN~r_|{+6~QGnO*PclnQN|CGk#6}nptZWuUWlj%bMS;Y1{j6JoV92
zeeaEZ^31xAUWk4EjTa6Wla0ZKZ~e+f-@Rkdo+X(L!PLy&6)73n=|_UC!PSPVTj!1m
zbsg)DA1CTqEn2!Xb!ejA?OqpE*Ia!Jy?rdIANtd*SzfT8(c}1tgzF+sq&FLV@~;?w
zd0l$lH^%Yk6Wyz8YC4IQzUx)_ZTsvu4O<#kH!N<L)sWvXzTt|7O!Q*)gh9c<TUyXw
zZ_pbXS+~-t2(D}>=^{=B8--}a|7rf)JqCLENbI*g4mBQGb~v*&c)spf-IC2yjisCS
zMs-SkGv?zY|N8!oLmRu?n;w06_iv58)$b?otxa!C-7?j<Xbb6N)Lc>XV$5Gc^v*0j
z4qM+YJF;w+;Yt@RuSZeaDffXsdux5`)6sKT!J{?b*BtEnj}D%bu(t{JHvO1A%J~t>
zJ<#w@bA$12a~6EzSk3vGjMyuB_}9PDaG;^fy;O%jOD|nYy*;q0x9sgpm-Sh8%1Ev`
zvotde=ek+>#`@U&9^=z$dcj}+u}-w~3>E~?3nzoIC(s9r(&jB&lqp)8jZBQe!PtKw
z?T5_P#i!HGAboL#X!&>jrC*4@yqqyM#AB8RO^>O)pt0ku;}yX)M3x)YUA=AvJmN<9
z#tqUpn)_D-yVd3e(;L(BE{^;hJ!<yWN#oO4+b_oCn|`<~@4m>?%&cIau9u=e??Ale
zTK)cG@0na<1S@(s_n%y6+DWcSo)8H7wlu(>?D*UV{(haY`uO&Qrz4_*9b+Tvder(e
zyH><63rBQazBK%TP8}2LBI^#J=Btfx^m|fWbe-;f)XRm9RO5oCSrx(H)bBqDRtKkj
zzcRQgEf_5LKKRM1wCU#&502KS9f76rB@~OupCU2R-!y$DN4h-oVDO`i_hYD+&My0W
zSz@DaQ-#raQ!705Sj>5NXLMsCyf`MhNB1*EYxT+G)>^L9acRQRV9bd&dT08z!e67{
zuW`YzYJR8*c0GaqO>9hn^$Vo+AItd-N;ubWwz=B)t~n0=`uWncOJibtz+b;=JcpW)
z$HmnI(&Fm2<Zr?ZCy$G$X@FnmBWiUDPLqCV`rxdZ^0ec1qUA1wyw~*A^317=SJ#xJ
z9fwy^to(O9GcCk3#~Se}k|7pw&!p(J7@qmfy3eF%eqQ?neDl2Y&F|_5Wg@}{lY=y#
zJ2QTpUWX`nf8C0@m5mL-72WRd_(jckHLJRA>ELOtG7iR^NIZ@8m?9bX*h7f#M*`n^
zJt#RpzZ#a7qWwz@S8OMYQgsdX4Ok-vWx7z7ZKa~7V#4jiL~BKmV%SoYdU{KBbR$;l
z6&RDdF(w=3xSX#&R%?6ecGPbmBJ8w;+auzFi2j+&D)whk+&*UvUjJR)7j?^nM^Klq
z;!lKsUwgE6S!P{q1FX--N|c#D7!hGmW-?xF-yK(-U%ln{*o4UuJ^k4-h90XvUwth4
ze0PeY4Z)+0U!X2u%6c4$`4(PfjyZYaX`{8~t&GoW-b^`dwAB8nCTyKqay<P+`nUB*
z>Z1`ukI5L?TKz*G^2l=yzI%`NZw-D?{ay93z<ICd<hjOEDD!mNGGVE;`p-+wNq;=m
z+-jU|ZiPRtirqrK*l-T9lj^v9>3vJ1Fr#S2r`dJivgONY%+4%borZJW;{5#DakZkQ
zG1xbNHlI{2PD+bkmW19p6#Wg_Px0~u;$>214|rzUe;j%KT|e$0;>VN!g&(hmAJZC4
z5w>F;)wWYCt-lx4)gx-2NKX#tVZ1*@^!TCftGe*aIE-Oy@Qvz^s$Y-#F!5-&?>oww
z-};Sl5V5zRrcw7~<UG>#TX?%@xg!4)5P5S$koJp|PV20h*Y@iA%&#-Dg0{Ve361dS
z23d<wG7mSk1}AR`V)gHo8eNlA6U1u!cdWLpa>f0i{?&SWw>mcCy7ZCo?3#qeh>GC#
znb%d^T(>Us-ipsNC<b>#1g4m)B5?e&*g9(IeM_6WHA(LlE%lk1{grQ*E?Ka|oGG?%
z%Ls>P<!?-=ySe5DMCy$-YnrxHY^?jDCNCKL{`%nAnug$s@0){7X%R?qeV_M9Q(8hz
z-qFtI^N>a{IR+klpN!g@mPNC;eM{z=;D*?ZbrjjpE&FoW(Z)lYs*O)KQN;Xm>A9s8
z>zvq)=y}G7tLa!1cVS$euBpdXS_R^2zF*oSjUsPcoo_wj{k?xjIk7eIOJlnBKpa2X
zcm$<=?v$q6h^vW|WhFMoZ)!EVZK8P-xinGMitO9-+U}vanl6avtMe0TY7oa3)R)$a
zmg|BS$@yaI&@N*^9qlp>N1w)gNy>~{+%+u$DYU=n{~ym6+O@XbvmP*ZXTID-|5j!+
zrcVk^j19~5HqpPh;J3!|;L{mT##CkAQPBr?X}vGV?%3Q&_jXGf&B!tyyTlFHk=-YE
zWG~0OooGjjqfy@{erD{i-jLY=Yk@VQeK(+Yo6)<IVWYXR0p8juJyp-y5Og7z9brB*
zHq_jewj8^%?De-{KDFJ~(ylhV>0j^A4;b|s!!w>T@`48u#V2G;idr6|m_M-#-AQ<y
zmTw5Ii|uROw`K*GTKAc&Ft)4Z*wVf0^8T;lUT>gLmT-GG-SrJcjbCqEiI%Nv@U1_9
zR$hzi7PRq?vW<IW@4V4?0Bic|(I0l-Q~iFr8{Yn*jMoSH>_@bI9l4s3>p;W4%|YWY
zoA<(x_Qby3-QK%WzE{)VPWK|;yX#(ANAY(*_R9NfSEFwx`9#a4{IT$uwmqcp{KK2t
z_lI-;#2?;o#~;jl{gsVhSGV<rL)G6@|Ck@FsUaU|s0sA}JI9ZWf2V&s{%yVcsPQ+9
zHTkZ&`<;YH*0yiLn~pZ@sXmcjlvxpc#i)<Hx5wM*E4yq8qZr*quE>FVX~dss=!AQ@
zPWNuCxeImQU_A$DMr7C|BLnRjy|G<;9IgJony!~s+>dy9Uo5R9cV(WzbCJ8!s_Qzf
z&xMUM!IQBYYrch@Q%&?QzJ~TgC#)R`)uF8B&YF_g`8~eG>V0*^tHu)C1Mt=9JFL0Y
zut&SVSUk%(XVhmFW_oJ6)TGo5uc4<3=JSekMl#x8TVp*dskv(l-Rsf*U$lld(Q}Ij
zV;}Favaz~p<yzWXV&~>Or8sBAIXUA|*AbcaedsgBto+5}$+BqKUGr|u$;~asH=7&a
zuLlgW_eks?dPFs@#(vAVxAuayk$Ym_@3FjQCGNu?LirDGAx%?aKRJn#rMFhE?qA>3
z2jkQO?NVb!PlBe_jldHjx*NCupNJPCOc)+|{FF&A3G|{LafX+Y{Pf~l6c~n6m;QK(
zGr}n;%N15yUS)}^1CvPN>Ohh>PndZ!Dcq!RNz$78y{=L{T-G34Dw~CMSqm7@!9`-v
zX!*=+H!gdUiur2DYnNHB=Nk7G2vR(xkBSKqNf(~U(Ns|jrbsYM$xkJ?Ot@Ks+p_gD
z_g>^liM*AvR>4-M65+Y6D_ONHl}UY%nR%v!FcZopcukn)r`#P(xLra=(fLxCk*)X4
zb|*rf;;E&AUc#lRxkTC!ovLP42v5BPtJ2FQSe0HO!LIb(?xiqrF<I*9SrZrSMz!Y&
zPm^V9zVO^@TIzI%@Z4wG=~M=d`%N>Q%Am4IUR&+j(uHbowd(;19TLg@uju7Umk`(E
zzuSkB4C-b1BBaJ|NTUeS+iVRp{Rv9H6KQp!>A$D+CZyf(q+du$FLa{UM3nFt1W%Lj
zLV%FMH@lILy6r6p-VGIg<Oq*K@U<h%p*)`Bj?@ctrcKf1ZJ6pzFI}ijaRxFWfqHVF
z%;hrNBppQH4eQ<Eb4&|4GjgP3-vGs1$=op{sva@UkdD;5N;c<C=-ks*&s52cAnRKp
z-t}WDH%OH~LHuD`6;-Zj?`KlE6^db)V|vx(<d9V>l6vvb>HkmlW=Xx_(8>Q1J-r51
zGDjt}=h->Tsx6YeaW@iwX$w?d<9q7F-P9Sfek-Jvr=hs-Un{Sb%AZ2<{J&P-B$a&_
z!gT!Cdq}Is!&3PQC{F&@%8yFrGAP!xqfC>_Y}->(Zyj_VZ%5CWT87H;2btq#X#cI9
z97^v`QtudazIF6uXilY$-6NwA*^fgX2k_tBfnu{1zTpV_LvV4Za9<b7PmX;J{^vPD
zTnMpW7CIf*r6i!)V7Bu^DOd=ubp)3blvRnaLsDYgi{yuGk@5x6X=eT%BJ496oCqpJ
z*bxZ^phSdyF2M|oVP8ma%TOBjWeio)Bf1R44CqWRU8p{tsnMM`(n}u_&`j<H5{X@@
z^W<gs3+CgpJEd+nE=Io?vgc&NPGeMP!h^;Qp$VDB0!mPWr>^Ai3?{oBzKq!jE&6ZB
zm#dIy{G3FWx}qsYc5wX;LOS5c!f5^wBp2PTsJ4A1(M1X*9lRxLjncJ-`xi!u5YZHT
zU9M9h29l7weFM})%>c#s?~O~OzFmX-A2mQ-q8Z4Bfz!r3%K)8><_B;ZLN%r)SQYLu
z4{F_I7ZvxIkLy12x==)u3mq|@u`H~Y7E(G|ZTJU-_7O`Li}1hWeDQ_RiSpZr6qSKG
z&J$l6a_bTzx&?%a3h|ZU=lLipnw<NfaT$uFV*vge%|-21022%)l!`-!FPAQzBbvPZ
zLt~L;f)+@l`LFGn@Xdo>60d@9K2rMfl*`C2Ia>##1mj%X!6?S5u!DE%T4UN;!&MD&
zG)0BCj8?0}vq&<UD>27pH}YN!Km^T;%>5dHY{T1zIoHetY!NBBP`uktzs5i$JMUei
z3vaib#_JB%XbN#H#@%wlBbXz}X#T#vs-ZJljEi`7ct(qnMJYz1tayttLQW>6(1Ff>
zF|^`x<Y}6t@-K&09#x^Jyu%2{NFhW9X1mdx5cOldv?H`KvI0AdfxLpgJ7DjskdzXn
z<b|XZ%qd1%K}f~tiAO>!4kv!Zh~@d@7|2fjZKw;QX^)4dNUbMA(^U4yjc#qm32D46
zbXYX4ZySw^(H(Rg#D6$#d!2)E+Gx&Ksfibi6LOM4Yn(P3qe7ZnDw;!^E5~UEGN3Vd
z=aAP$il{}hRa@I}GNkbgP>rUQe3a2@RXz)W#%LC>)W-jZLR%Q4jNY=g#h7lRv>}~d
zf}|^H8(<%D<VP73ciRa#!}UgoHmT#SNQvVWlMT2!R7<9f2~9(k8XKC@n@W;1QeFkf
zsvOXc)5VO??ve(}+DV%k8kUqlRD^b4S1Ri&%xY<Awh`aPS&+t?C6Xye9RA;D=b9Jl
zPI3ro!b_8Pv||!!Atr^a#izEt#i908-50fE3u&RY%$_P2cNqzx0wLmQe|S1xRuKCk
z)X!)R!?v`IpIlCDG)~KKWE4kWiIV<JsdPlZOHPmAPLe>$rzdb9i76G|hJ@9aTgA5_
z9ztupI2)oPlfDZ{ikT<Qg(O@+*}j)a=4FV3B(&oUJ=#f2{xJu+upI{}#(2xo?A6W)
zAT6Y$lc|2>AkWyj(n1F`)Is{SV-jg0CQbL3H5d?TOF2h&J9dy3Y6rE7r#p)6-R0c~
zVxDw@$j<FJfgIEAAxjcGVS5`-*xuF?w(Fj-BV+{O2|L<)!mmShW)&8SM?#b4iAO^c
z<nZs5N#>>UgqZ2#wUEFnJ?qaQNwV)``kNskRnEqneC8HVyd4q}r25;Ty_$?(6*S?u
z+j-s#SzqLMQ$&@S-)(E}-B5dGI5=S&`!K|qs`P=jh7M?kq;gET_^fRxpqtPI7h>G$
z$dX?00`7s@go229P~%PnA6SqPl7MKiU}&3Yu;AL=rg8Z?tW+2a&B4RyFKj#d3*}9U
zokI@i!bB>@Y{PU>7czFTE0=^Msh(Nhb~t;XZ8Fc@ZF}wR&|XWXO3+$*hn=S(WCTKo
zb9GyLt3&OXEs%xZ8)8URczs(V>op^&&lU6x!tm~wx2i(WeUQ=okM;&_I7EW($V5Cn
z-?%PP-oOemPHy@>1GO{G+2T5Fppk;N@YE48Z-BV&vXGSdNV%G)$f$AM^*l*7-FzBp
z+mcD<Gf6v1^~TLUo?E5g(ssD9INT;Dy={fg@$@Wd%z3NLc}Ovu4`CbAZkxxnY4eyi
zZ64F6&0|8^d=Zt3kNt@yD23k>;%>#Y2)8bUuElsQaMcLm=x!rjM_wHwr`qlgk(>Fe
z%~2O5H}8ZBU|il183i~^6`~J4_!{;#6sSUdsb+Ks)NNk27?w)?+HF3rvdpUiV%Si+
z>X(L{pxNnt=qX#y0OT#y^XEAEbIkm3ha4;aJTb(~A5YKvdM`v?I>zC@(Yy=PPUnl>
zTHlM_A%R7VpeESI6lv<Fc+5?zoqa@I#^EXs;~AuLQz9pd%c4SZh1laI^~YOK^2nIN
z3?pSE4TpVH;=*W-q5-gvE58F6#Zh4_TU0EAbZ$Tl3z3E9B1`rWQbzx7cI6V7VNx~1
z#8`xRSB`MU4C!fH7Itam*v_u5PmP40n`Ak7I_$BfkxUvEY1{xMZ-#M2H_97!8KmVg
z19}=myA^geV6?+n;fh~`A;Ehc?iey<8SV&s;d*HiP?CwfkjQANS0tGp+j%f<PNTv^
zwq3vI4CCs~rkS4J!p@xxpLcltf^JlFj9mgZ78_}h4z^#ZA~JGVq#Il6PADLp7l3D<
zZR^%KRz&u6QAha$tU`Ez)=PF@fEuVbs4I04RVLo9XXK@NJ-gYZ$$H`~C)*IO_XQ!{
zkLPlBmwV7JJtN9v><;g43%nS|o=B$Blg1c#8ns5Z#klTa7iSJLh9=qU6H@Hi2aQNX
zAE$ISA|r?Nl-7;%7?NFRTc$*e^4QLHnW?tK8vn7KnFm}%WiOV_&?}@7S9BW+zv^wL
z^?c1m1C00-+EvLt4Jy4a^@{0={UWhQrK!>F*@?2HcQ>*-PcWVy8F@q3Nj;6pkvH|k
zF!zr{D*0$ej&hpJPR2zsog>{nF6ePX*G@(p#95X*AP8k&hLZ4P%VP|Sj6{u0&oKMo
z;?9OU1|1{4k*bwrHC-myeS-H#EEkb|jCV-zPDx0%OJp|7=`dj;?XDcm?NJX?A(z7S
zFeXFnE^uMcE;GATh@sM5BCS~q$>mmp={`spCcDa-Ks2~l$R36~bixcDBOEUok%4|I
zkKyxaWM~rJ@sjfp1&D{S#RxNZPcrt<Ru<^Co@RR79uJ<t(i@W2lkfjt7Gv9tS#NmD
z*BZ0d8uA+iR*^1O))tRziD67bT!WjK586Fqj8Whjlk2WEws>-<7zGf><z@gah&Zg=
zUfZ~LKs&ZQWZRSFEm&(zN2%sv<qWrThIg@Ydb%X4Mmr@$7{#85E=GwdEjGKvk@}26
zkFN_<WZpts>c|uAQWE=l%hnn**BYLFLu4tQA!iLMN!H7%R-(6ftuX^?i4fnq*0>Gz
z#!lX8FSW>f$S{h~hq6P~8OBe|8(CW?DttxQI#<0&+2V=HwcD0E!AXTRm6OW0iXLp&
zb?`oCpdjUgG8!!%{g{E*$BZWocRdE@31c6a%;2yrjkJ2)Gjg=m2G8hy2AW;4MY!B<
zTWzC3t=VWiW4N-Z=VYyJrU(DZ)DXK;Lw36C{*ZFpNIz7j--9k=lIKC!P8Z6shRCYQ
z5DXBqBHbArM^fM!vfgFf;#qHIMCC#(4>6{ChU{<|6Foajg{h{3l|RFK%UUBJBb9-g
znS+KUnT^!~?{YCuByRC6SQsv^E<|@NTy9v&d|2bCBjT30<ghy3xDZ~qaFKiY;w|=I
zR~nOr8v|lhVUTyJSVH4GsM5V89DQqcVU;}<tS+TobXd96I3ILe4AM5^{34C>i^gtq
zoOc@s|LHiJGut!zVB2xtA;)=#@tPcG%Wumt&Q^WrYV{=%tM72z1%~hPau=|g^N4{V
ze#F@2H40@er=7XB7v^sEdZ(;4eu}Z$?A_%x{m|64Y)rD=d+<!!>Ge)nYg`Z2ou(=V
zU5gw;X|RUohBub1GZxbLPS|TG*x}yqcF4+Vl`@Pn4tvgp$o9NzcNl^iyoGnWsj$^B
z@;zHIzo7So0lj>I{Wte4M{l~+BePO*Iz@D8Fr;<EFpk42;7k>;Sq#;uU4W-u&$~df
zCMBNTVW-06G?tSv%fP+8v|+wl4Jf3N3agA6o&|^9cs=4i>Nd(fN8RU$esEWNj2WS0
z5a((v@dVZxbUNm0cH``Hry-j}UoNxE4{$Y3^9;!G-i2?J_1xmg8EKSyM&_Y_-L5?@
zoc6e0bD^BqT(7%GbD!%YO8v+cbYbzJuC(lghp!SC92X`=c$DK?=0|-5tur_*RkG*u
zz#8SZ6M6m!C%-wj!i{n$%1-i{rP{eX-c@2QO-7Gb%M*h<me==k4G0M$%D4A~ao=WD
z+(G`m!$4aL(bhv0unxKQg#Ea;KNIGiwAPpm7k(yePgpzNKG*j4xi5#=-u|+w>Ug`=
zKZB*OUxQxCtHl_%=g-^8pLe(pcz(>E8w>=}2IC>}=Z6gFO>N(wp;sjJs7$F?r1`Ts
z30U7q&n`End&*(G7@5|%0P9`b$icU{5WI^~wX<%}S@%O8?=n$GBlM7GyC=L(EE6dd
zlDB(ydc2ah;0pCC!OJQ(8-_a#519>9sGhf!8PhzKE8KWp>29Fe(BR%m^q_kiPE=Pq
ztVwD0YL>lpWDRyT&hQMqhF<f?t7mv#cfINA&^TkAi>mgf>m8T73K#FVYB6`r{%<pH
zCb$|)Jriz*W3(D44OHQzaSHn>&ne>!CSIxM2V(_IlohU(E@PG*bfuG{m=yS<JvGR+
zomqfMC8tJddpX*f3}o5KOp~GNM<)X-WuzV4M{fMF32-9@@kVSiZuaamj?n5-yv1|G
z*cfKqOm^g9_3Ij%Dr=yG(-Grqa=5Qa(Owvw>ZzsS1H+yyADG4qOygFnU4T8wtL&*$
z^^xJdajkI^X4yw(#;I0DGgU6rPI*V<F87G*lnXl@&nee-H+&~_GRc`XcmbxsBgRJ_
zYy>Evnf~UOF?Gsajc|BVb0-FPx@V{HB+Z>Ckr7C<3kRRUusg%FJHy=c>y{JH#|eYc
z#e*jz=uTWuy}jOe#Om!w$o|dJzOyi}BD^t6MfmxIc_L+<5uS_%(HnsXY+XnAFbcj=
zDq&Qfrf#;BoX4(n9?h)0<?#4Y&vN&2npG>@E9tb-jjn677bnVMxI%6xyl6;xDqd21
zVV_k`>qxI0%;=oq$i3Nxjbb?h!$TAp9&=$SF2@4c0-{c{*AH^uTFrUwDN>A;SVn(5
z{m~s>&tocj5dEzc!z1&^?9@Zh$0WCf5o(o4{n1romxr$s))2S4(VABGE;4T(mY|*{
zLcP&!paYtXU35?9?1G)nzQ*1rU9-oqw@G`956o?x=L2N3QZ3s~#vARqaN}NQF6=ck
zVlK#x)?5e)o0Dj8Clz9kv);h=AwRUry|7mF8W0(NzOfJvbUvXMHXP5mIfqUgmwP!1
zb48$q5q`(X<j91S>ZeluPttn-v^nn2x%Lsg<9ZJ#X|zpXo#<-3%`>q8PEzZtCts;|
zEvG!oT`Lf)Z^J?({pmqkZ`y>v<v-#<T97sOAGhhgRITOyk$~&?5=vvfL_3ZUPl&R^
zY*cq^bK>cq1b47*@$I3t{3gNHPROveGX~jdgQ{J2Vm11~PF{g^OYM6!gT3IOy+-2Y
zka3h2>T2r8V%d)}p4;j;TUAJh=cZ>!hxKHX17yxZ<iuKL$8$^f8bp|Da-oaZo%<%X
zBaS&sVIrJr;*GAxpL=e^`ZyIvpf#1nSIS`N`mv1q6T+9f*BOgM?=7B$jPO<Vb;cl-
zK4`0<1XMXiR7XdVOxw1r4LHw3#uqs8<ayY$Y^K|*>EwoTSL|fTL5`d%qs&t^*S!)O
zfw}W=EtSixiQuTFyE~rW;z=Kb&Kfk#bEing)Y)#xi_keEA8Ggy=LauDIA`_iW)Eh!
zJnkD-&ve6xb<0Kf<dW2R65^EK4Fz|*2J`xw@wggKN^PS}H;h%c(b!sy9uIR;Nx$zN
zgAp1t9(q!0-E=#pMA&tV=wrKKpK+?TR$WtIJcW`&p9W;1Vp)`IRm{@%*fu>=xC>j-
z7}$!L(#BRF*y=;cp|%oG@dQeCn&nhou7rLm^7u2Lmo>rhRjaII7)`d^K5K$)T+VVl
z=-^}J%*?C_cAY8US$1eWPsHw+=TI@A($2xgK7f(~m3E1ap%hdzg_8e8bCRIfr$9DG
z);7VKq*i^BP#=gx>XYP*Ux8g8)`AGs$3G5Mo<k+&=D^&!$QF&0uR_opNOaIUG<47#
zgLKfFqIAg5mEufqhSNbGji7@*CqoB)u8NL>=1G2njxP6EeAYVCCm!h-V4lQ!>nxj!
zYut9rLqAjE6DZ4m)M~x)nSqhF-$G8nIN8@p=p*|&0<E{N=VJ8^8a55^46Y1Gh`~g*
zg>fEVqG!qy!?VPwc6+Mbc;D12R7!3x^OQ?rt4k9;gIf)y`i$#khr&H^@wQ~72OD4P
zc)xagPU42jPEPUkyU}ywM=sA%*Jh`{aL*5}jf`sDs~E)v?92(ClwqEE^E?aQbBa7@
zcn%x&F08k$ZtQF}I|cbY@k2d%w|Z`U-6e01<c*PSDBP3K%f61l;=IGLN7U@l8N+kd
z*y!?XbnW+e_Iv8X>`Z=7V5nz8nWt=r+e6QBRC>x#+=A~gu!r8}q=pvvh3f~WfC$eQ
zu2zR)JpR4T;DvkAM|y6)#kTD6q<rMa;0jrS-r*PH<m(jqS}9-i<ST9sNt`5KcX{M#
zW0*YcF;Ba^k`5a3wA0kzXVO{olqf|5<m-Af$^1f-Y0r8U7pIthOLNL)7~jQ2<9<Zm
zH(+w%qK7qis6wRC!xd{!2Q$fBbm0AM4kHY0mI8Ng1K(f4r+kgDFt6L_=)y&`lL84P
z_yiu&;MxO=<`tz%eI$i-wDr5YU8E09pM3Q~m=2<IFUwY#dr`+IGn0!9hV`&>!;Gh6
zI8QNP4=S*U_Npr9w5c+gpelL2uuew9+-}*XE+ml&cH?60;=;^4luinMOR=jZw=6oH
zl0=HsP5mK>kj<kK6TI%lgmyVpWzs@p7RxFjpV__1ILAW*i;Jm8C><8`#tjQ?oMrm|
zRpWY@l`@-!ZfUn!s8g8JEE?Y=Bv4N3M`~uwzi#Fp)3)Px0c44x(wr1B7Men4|4E90
z0Wt>$y$eg|GxIep#vBU}jG}}PZ+cs+i67a_k?w4@-m)THflRxkL))&Uq>JQ$%Un(k
z%vk~qv-K%OPLnX*6~p|PT~3#GwE@+oOI40JOaH6fk?sYulBh!m*$Oq+$-im#wMnr@
zCBfZM=EXPL<Vg2+FO)Mm&Ef={$pFdCaiDpgYBuBN=BzOL&gx$ubp(xfN6cFCa15?T
znsy{Hro>L~<aOU6bHrG6L1oP-(#x(T`5(ECT^me97dfOY?**i?vQP=q>u%QXP6E5f
zDLo9}^15%Q;>=6wn{<g1U_o7lb#~8}wKCj^)B{#OppT1W2g#9F9ubY4Zm+wmtOj)t
z!1ViG1h`H_`IeR;N2y&c3ML)R?01ruZ3%UQ=@1`3soF2Sm^$DpyHtD~QjS|B&Jf@g
z(Hrdvv2a$iFvOlEWCev=VbmJgWXrZG3%kHPThs+->1a69w0CM0XV*xkP?YKEbth2I
zS~=6;9#r)X?tIJBdRR3kWjIHn90q4*bh1h^+!xXCf|BJcl@7o7nRHV**KLo43W_6B
z^j#YxEZ*JODuMEJa+jMm_hNaWiummsM<XK=LVF?J_U~v|llduuF5=B{_$yg5>nQD5
z=FIBA%j0Bq&>v<Bjado|L1NBYN75S-v{J6S)GMTkd5Bl4u+*n$WG{1JRCA|plp)P7
zgBCingw8O_a3q5)327i)N?*lXaY=8Ffgb{7J?RoxR5E!glBdgd*c%G!;*RbfGGBz1
z$JDoSArO?BBl0hMj<Q=_M`mTM>7rYRT{9he)`+7Y7E=LMdB_zetNSA(gbw<#a-0a%
z4YnwP$Qsav-PfuN8Nsc3p}3Hlw%w3LP}Su;7;4wmtZ~~{vZH2T*afP+G|)8LaJK3s
zEmBx^=2|qOI9g?`kmjBx&Lk>7+#EdgK2=DrZFE61i$*opvfI%*_r@qwSyXZoyOwd9
zs$s6I&J30QNQMGdtr1Jj+*AT}9{DHEv;vUPPN)gcvSW{}tdH4BQZn3wtT9C-MSl3V
zWv#ROI%+M=17{5`m*pTH_?2bLK5YuAxhThs2UII6A>Qqi%I4g;$Q>=!GEqtD+)nOW
z<Q{0a`$9Rl2BD9!1R<|%DvXl@%2kqTBIkrvq8>A#<;+g1$&dJ@?4c0<hg~yf1gv48
z&b)xGt)8}$sYcEyWGml+Iy5|Ho$+dNxXF-&JFN)OlzHs-QIWKcdF*(ZY?-8%WSfFJ
zWzVHafmim=5P9vP9<$VCpL*RtmtAp@?I{%LQejBWGwP%eNivt%b3*zFsbWcXNk_=E
zt!2X+<$=VEc5Nh`P#YQL$N^*ov-46LA-O|VpV~-4kJ>1M9(DoL5wy8;(%rpf>7g-?
z=GzN08hPC>N&{wZhan2)OMB$~RQ-S33uNC=P1H;YS)=S0bai{p0!Rv%u+qKmJ7t@G
zq`d!uXlS)C+brKC6d4i`Piqm;*?X9CrtK@$9)m<}p|P?@-%Pb5qKqtY5Tn;+n?qwF
zt(h_!TCwm)V`6W+4=EPX;7|mkGrpWG2i}g2gW&-7tk1Nrsd_RNA%octbywib%6}&|
zO0TeM;^egah4&Ei1gk${-E*WfCR%&y?pAjoB1X#5SH5HAfW+)s#Bp=`jTH0N-;D3+
zc1?1uJ{Vw~N8n6Vl@_qgq#a%tGXglVvq);hng+uLxC62holzu3?xEOvQD?~!HmzB<
zt-GgUbLL@JK?Sv)VIxTHb+?!^G}b*z4pL_XbTcSh0WnIV*&I74qd&-Iw0pL!3MSV-
zosQ6@e!%3ny8{E$&PI-IpXHFz4K6ywtQmzjx)GooY-%`d<gBI3?0jcfXo)0=tPfo{
z8#UUXkqswA+7hIb>(fS#f@^ylIT@~G`{~NARme83vnffWu9E8J;)rl{n;A|1t^QHr
z#;hj~SEwJ2hpay?Oh={-)qk>Svj(8Oa{k**n^iA-MwuE4!a`*BCF&azymq^s(U*bd
ze<paLEEzg*rUC!I3}Joj(WMYZ{y-s&)-3W1I#Vbk&$mO_<rr;i3WnvdYk0AIIAV>{
zf49w}f-vLES)f9honqICLW<o7R7ZO@nq^xxaOQ};aid^I1^kD>jtcmf!ES`rTXxOH
zSiMFML@3tDphuQ2^18cQenZ|(+eSHmaYssZi?*H(49B*TMuWDGbPk|V$PR0yZH2pO
zWQc}<`iHboN*_7<+J?TTt<A-&cI<oB-0%NC4t^=jW8@8kJ+yMLsRy#H6e!XT6iIl+
zV1wJ+ftnI)uPXD{J5cE$l=7eKK&?_K8ryqO43m{gT?|)iXD`~vl$gsDhFFF1R9ixs
z?cIpni_$>;r+ZOZ4r=os?nQC$7D;_*_9X2orR$&?|IQ-TUhuRh7c7z+|Nk4LyIPYi
zS+*VvpB|()x<i9B9<5mcB*q#>EX&x<qm|ttpkcJ0A3{tE>6KO=48z%+qBPGj6@M<{
zCpz2o1`43EE6s<GbaM`)+AHg888WEYXcSA%f_j*iXgiQ#mSLC=VJwX-TZ0yNTKos&
zOyfgg$qEqi4#(ER;xSJ)&1x&9lfL1OAb-J|79k7T4y~{HIeldZ9Q2XAle6qxYCdWP
z(QKs0L+I?;vP5i0WEpTmvw3N7M(Vk4c%n+pO+#LKMmWN;WiCiVabrT(5HS|W@L+D#
zY>$+Cd)CkNNammRvy42XA?=v2s#11O(b7YGF16_`F0)jp^0pq`OH$8Yj5D={@}cMP
zN_DojP;;n8<}{X-qf2N|&(qDNbVvgEAR3P!$PmBlRQlExDH!Jd(kag@74Z|<Lq@Sh
z8^wR(@$qQpf9&zj^CivW5hP6im7Y!QBhRL83Gr+ibEzR8FIpNQo=s1`|A#&MEv-*b
z32THS?ONx-A5m$v!5$8bllAc5i~A?|tR+M3=gZLG+`Z8|6V%{<b*6VHi0S5<tdU&$
zhnY_ISQt2YyQ=vv)dnL%Cm68n=EMs5egm?|?V2@9%sw7y>;42;Q=oCVX(H?r)1pPv
z5@qae>*Kv<r*2eNIRi*zq^&`lon$2Z3}@2Fvus^s<s5~x<Bj&aE3)UveaQ-%g8w02
z`k^x-kW*(k8(sEHmC|XTP%7#elK-HSU*&XSalAdtsJcUKpngjruu2?gUCWWOuBqYn
z+koLn!y7o}MyiJiriatrk=w4ft%a<%4%Js{?-5mB>{!fc=gb)A4MD0(BCI$gFC|t<
z7vlby8Z;2uDS}4XCDRn9=YP(-O&1a%7ip(k*OY^vO;9?uk~W#Pj%7)1t-?l-z#e<r
z(2*9cgdtioyRAj<w2>B7zpr&IW4v`u<ypNcA4yZPo!5DANtF$0J9RmY6<L*9xF#hJ
z(&1K%3Cv5WLzkAefw_#)2BBo#b55&~aC{C<Z;ou+6!JgRKp)TV-Edim$f=meqDn{#
z@zh$+zpJ^7Y1+3*W}8i$`BTRIWYG0_6UI)w>XI2nRTGM)S6ww%OrJFeKd_sfbN%Sj
zc}0bzXO&ltEiaxWDk@87POF@sUp1|utVmQ9&8x~UEiWvZCrZob7FAY>*`*7L@^LDf
zKC8S?DY7yKql{duko^2<g@u*bgT(BrX_ZxzMa8rkMYF~9l4+Hr2hAHSs^(V|nUp<X
z9%&U-<;|Kc$XIsPxM}6HuAEjrciQYhB}Jt(N~qE*O_a?lpOGwI=9JGaol#y?m`uMI
zjJ!N+c2;5Kv^%axtE!5wDk;hPNr}kLx{6wRebsz4u#yZ@CaZ%67FAB0U4)X9d9rF1
zKouABDp1AjORgs)V~VB~7FD9LvnmUz>&mNSZw{Czq#c%I8YEjY(V^6pBj;BYv62Uw
zjYlQ*HViB-E3FuVI?X}$>_O=LvchRq(}dm6%t#Kk7MfR&yCM0?w6yH(<m>?%12VFb
z`_C-zUtBhAcFE=0xGtPE2cvuW#RG6n4ef6w49Y>m%;|G3pEkF0U~>N%$^FOAPVPUu
zs_^pZ(pdlE;yLBht4e2;_lE<}8RBB94C9cJ%4hYTeOqZo|AIL%Rt&1Fswy?Fir{XQ
z(~J5SmGqxoQ8b+_L0&X(dQpY6Eb{X!i)PQkPk9#1s;ZhbQ#wk1G5JmD>~TfYDzBY2
zw@6$+adPfe`6I{Yj?%mBV*Cmy^``0hVz%@F5#lV_1FpY*RQAPLgYqX_b>&2Jh(Z+F
z4)W~$Vtc*_>g*eHOUsMI9i@d;B|?r0n+e$$V~B33Kyr~aA7)RloUGS#ust25e@+i^
z&#KC4<+CfMRTh<3T{~^|ZEdm^mzI@D(<OAs3YorcPPj?vx>;pya#hT!%0nZ{sCNpB
zrkBw)>{C9ctgND{vai4|M7LK~_Qh%@<;|EWD_cT7s2T{@E`U?drc|nxm|liqGP~9E
zFse%E)W$Ct78g~*WzjX0WCLW?^g4&k<2-A!wy!j@v})$G3e?Y>?sD?5o<ZGZ7|Nej
zT#PBF+qjfQLwZ>|!$CbTMh>`&7};5Js!yz(Hl5<e?Ae9Vp=6>p7N(Dm8$aRN5xH&3
zb8J$Lo$RWw+s)t%ANRH_H7zJu*ilgitr=zWD@yVyc#DE*<+o+a*8#fiL1tt^?rF29
zmzLUHq#CGaxRmNCr+}<Ik=gx%#aLMZR5Ua$ORtw<znzY*Dw<hQCQRReD^sKn=~&s@
zPLeEE`jM~(mD(sm=C-!XQ5I2EQrdR087Sv6y1<?#VrJ1ya+H}g0Wtj%_9+Hw4H`@q
zovA4OO-=!d*@F?XHT8jVYM>M?{mLBbjS?&5wL1?7@O7r0zB9dT?8FhdW3R*lKC?oY
z%cm$SDsEGc>?~!i9b0yM5#?Bn^Jf&#%a~qKAu>y5%`D2q`d>LMGp};it(fYwGiQ|*
z752yEugaWWfwauB(gON#4cmX0XU^=(Oe{s2rRCGh<`fo*OiCcbGp0|M0&{h9<RP^T
z0jyydhzv}ys=~seVqDnbe2RXvSpq3plQ_Ge)XamGeFoCS)mL6QB)Jb(*S^-micK4S
ze^8vqflcM&)Tm_FHhdV@`jJpb@X2BP=S-iFPsV@ypijz=h;cW#M#Oj;-6LYcnmr?8
zyqmBCR|kFK7dop*XEo_GkWORRh?ow|-Vrh3oAA+L`Lm-|7W%Y3^zSD9m85?U>8~RF
z)ui9hVMI*F#_$m_5zQS(#6-%UE9Z5jPwAJb;^n9HVXv0#)sej=WN#_it0#NQ$lh|Y
zcNf`P5iuer>h8!9G0`idM#RM26Fnj(c2&%Xn7GxkBVsx=#EppYHFg>i)4AC<BF4X|
z^T_DL5i#9)dGxJ-|K;+MczN{gga767dhqh-TMqxr<@FrJ#_u4mQQmSIzq@Gs?xyiu
zN#l19jo&I7ztuE;4K#j@G=9xAew(61A+tljXAC=aWM>K4SxR>5$<8vevz+YQMRrz@
zox91-O0shg`N1mkgVp2*4de%n<Oj{<2b+8-gV&e7?eX8%m(K(Gwg~L}NArMwjK@Cc
zTPDbF&CSqxOy4}|V=LlJ-#~%xYU-N?>YGODn`Y{pP4u0cD5e{(F`mVR$lGI<U0z}+
zoWmndoOb{hZrtMX!)<+E$4+xYBL*<cPC$PAf|HOxNh{M%oKMF23VBU0C(ieEu1y|@
zlPX0o-y=qb=zGLijjz>sA{f)qIy~a18W(`6U(CZJN^wE`XdWI>feZS5Q1kGJJ8(g5
zG!Kvb9e2)4A)wf89v-n07b!NPq;<Gf<LeR4;0z|;hU+ZGkKkJQo<}?Z9?s;?X}lXe
zhRI*o_#JRAlT-hVW9(ewf_}i~08api_P19Y(&R_Ms=vMBBv|#YSDXW@{`CqE2Agvf
zILfi<6@IYlU$3A)L&G^0toqw4(!qX~KL@Plo>vUjcoaB+>F0tI8Bf&sW^gYiF9fUc
z^olYt&0+KK%0J38$VT+vLdZEU0S{*Kl^U-D=P`LR_(sOtz>^r$_|RU!JSak_!;PMP
z1p4X-*TyqkJfX>-11tXz7rVh~e8R=+VAcQO;vJ0-fYo?}i$mamQ-N@CRO6FiHD2NP
z8{>RD!i5LUmCW)-Y3v85FnJ<4m2s-Z>0mXU;UWjzkLeEutN9r&MroW2R^t~gCTe^$
zSdCY>C<LqV2^VGH5>{RnxSa7qa0O!;-%7^LB`(|;sU^@?M}#)M5n`n#Uk6s>5h0p2
z-Ue3lBSJi)@e^R>{}JLjjdz0wITeZ!uWS4ccsP?E0FP#T2t0=IQSdd4Pl8oEixB6)
zYQC85=j>#~g&UrXck|g1rS(^oh|=Wvs4ny8DESwklz&HwRLGV8MhSeZiuIpq-~P5L
z%_Mwsjrp@FSN<9$hC;6VGfLq74d$OwA{U(Qv>-}M1S@|v?WuSaC2od1hv^rA)%ckD
zLzuiA@}Z3H01sze4Iat(E{)fKM=|;RU^SjmVw=W~g4Os&i6_Boe51q*8t(y*WA@($
zPhk9k#-D&EGWk)knx9eP8}Q9c{)5IHu$UDxd7Q@Gz-3IHqH!8n&2Nl9Sk31saXEMq
z%Rd@i%XmC^1>;HJb&RKhw=%v}<JsVcn0%qeOEq2v-p=&z1wX=gtH!?q?_~1Fz>hJ0
zR^#2^Cz$*V@Y9Un)A(cXb4-2&yqoa}@IJ<8HO9~8ig%bCKUpjGGwuRDz&HsUWZYZh
zER8P(A7uI?!G{?CL}QBQUoiPZ$d5Aq8TcgQVzAmEoAcF!HPSqy#4O0YjOT&F8Pi{q
ziD0}!<F(*kOx_GmXZ%ZzcY;ST`BUI)7`K3P8B=@hZ|(D)1l6DJ9$tmMI%2eV93%E=
za{Bv0E+<2bIHd7c;0Pu^1&(5T9<1WASsrIc6&G&obi%znB~Ghfoam&<6Tm8-#)%6x
zP6rQnOvZ_U;8Bc+X?(TD^hcjmyo?i*!D_vW69r%u-{Qn=;9HpeDsUC!JHc}q*K52Q
zT+QSgG=2bF&*VG6%NaioZeaWzcn#y1z|D-`)cCI&2f^Ez{^wv7uj0hl;5|(K9e6Ke
z`WE~LjH5LUXxu~NJ{o6(Rs4t(L%?eO$B8S!YJSIwT<|egKK;Ec&bNSDnS2IV#e+Ce
zq49i;Yr*GOewu&yB`xcS6L&+d;zyiVr!hSP<no6!{tZ~gmpJh>SjCq(@kekJEAKUp
z|Dy2$jXwp`^C9zy6UV@V7@yXdZYFPJa(tXaOl9l?modHoT+TQZT*bJ*#)H5MnfwZH
zJ>xMNUk84O$)|vKGM=t+8Td^mp94O~coFy*<7FB*fLodTK8+vL_}5^%$FlqP361{%
z{(;F~2CIM@C*IO{KRDb8$Z_KD8h@ejKQulEj$--g(~vQY>4Wf`=`)v{lQr%Oj$`=;
zfPIYV&*gC*rSY|3KhwVv9AHdenBrWbF@3R{%NKx?S^he33geX;H)*_C<A=e$SpHq$
zevE&w@r&SeCjT=ygYi2WkHv7?zpBIU^vPe`!Y4k2zB+u`dgv2}HTiMyP$z>=oYC08
zV$J0d8h6$>QR9oiBbogS@My-DXgnO8%j9Fh6BthbtM$_-ehMyN@<NSgg3FkEE?DjN
zePS`Vg2|VID;YO})q3m`8#Vrg#*cv2dhHXx1216qo(HS@37>ccyoAa3f>$tpAFS4A
zpE#)Tml~f0tM%I_=no`vroS(}f!U7*H#3e0Z)MyQ{1D@Q;2n%F)_ADKSAlmi{c+$Y
z8Q-MwRPa6~F9oapfKOC{KVtHqgO4y?0{(*WJz%wd`^0+i*G#@e<Lw&%R^w+h{uB5N
zv-dh!t?xeZE?BMCKJk&ppMm9{2bVT{q7|Iv#CM<g7OeLF_#iMg%Q;LQ30CW`Px!%u
znY=rAB;#HhXKFlH;}KwW|6s<GJZA42$R{wqUgMiJF4DMM<2%4=zu*(q;7QE>T^g^^
z_<r!sOn;lkkAiPu@+ZM+KjITFXuJnp$n@U^7c>3<d@JKmz-m9^6Gy>nKjRbMfGe5)
z4`8*w@re%6h#yQI2VTIq8(8gkd?H2TG>vn>i&*~4!7CY$25(?I9=w(DB#ozmcQg5|
z;MW<?)_5WKD3dP*(=%oB@QGC#-wRgzAD`F?_B!jKPy9;b$G~d6^@(S}YW?(y-5S3E
z9>?sx2cF3IV~vl1Z)EZl8lMGEVRHI|D4e6fg-qT><0Nn~llRs*OXEwyB}{*$#y<g9
zF!@A{f2MJ<#<RdxEdM<4T*fsTuh4j{#?9abEdMVx-l_3Z8n=KKviz@VybrvH$^WMD
zA&tM%_!M|K%YPocf^j(hL>=c&8YgIcA$S$bpAKHbc%a6^!0VX&YVdl-c^Xd!Z(#DV
zm`L<F3VS};S9Esc$#?<u)#2CngMM+FCa(gk=Ocb`r^fXfuhw{j#t&$`13cWRkXfHm
zj30+w?GOFpIgMWe=Q8~_!4nw&6<okL2rgv&xyE0E)&9>fz5`b>eNP<U|M^8USncop
zA^@Jp^m}OBN8@a8HPasgUe5SR@JhzH;0DGwfHyL}1-zB<4Dfcw6&laixE8GTbAEBR
z#_Pbln7vKlCm25jews1)<MWJv19=PMr#1c~_(djv4g4D8zi50w<4-j{2Hwl^Q+@U`
zJ`K6rPx|pU&G_>nzvu{7`%Ay@frBjn1sbP<4>Ngx@KMHtz^#n00IU6{UyRZCI*q4*
zPqF;d!Dktlfz|UPznBB|JL{`oEYf%xIGM>Cz<n6s2kyuCL2x?bUxU?t(=VO?4`cE_
zfJZTY8Jx@bEwI`@`o(^Y{|;9BJ-_%u<9~psFni}T#&_jH<S}5i-}8&EV71@#i)3&C
zv)31__IrLYK;z3a9tAFA`L6}5{hJxz)PBt`ZiHOz$NVB+;}VT;*LVR~J>T++I`9fs
z{z{FTG~TT7!{F^K|1R*8jDN53i{O1s{%7z3#_xa+GyV{)_J4kHSmWd1Q%wI1SUu0e
z*8uTX-8e^p6P@+WFFJ!$87FFd5jcm*Gr+?cUjkP9Kff3bp33C(2lF^j(D<hs7lI2|
z{+VF4U-OH(8q*&dRQol*SgvuS#v3*M1$Z7S?-8)tZ~4XVG=5&=S2W%WR{Jf#cpt3x
zSAKC&<1aNn39e@K`5s)$*o%<MIacF%jeCOYS^j=twO{j#i!~mq@l_g+1FvNEZUQ$j
zo~m&vSnc2Zq7tn3Yku)_jhBGc{>?A$(Re-h8CKpF@XL&8z1qXr3H7*e<C7uVp|6gB
zwx0`#-)iz_z-m7i5P#D6b&cQE_#=%!)3_Bp+^LXRAGMzgh;JcR`#Jn58UB<oXZmx>
zYCjhce((fluRC}W<6htb#+hKXzYB=L8jk>1F#T)5m5i?kS24aBtoC;SQ3O`|yMQRy
z_zsP$!AqFEyTEFH7Z7W}YJV3H_k-6l{cYe4j2{JWX8a_08{-$iYX24xdo+Gq;}5`(
zu>7BBd=&f`lYawN&+7u>2k<jYPX5}$xI=*N=K=yhH_rBV0nrV-o9U-$oCe;*<T>Cs
z8D9?G$2fF<7Z9T%SNpqw7_adpji+gRD>$gxSNpqwm<{<6CSM3v&l>|`DOm0Q0%8^T
z7}LL3<E`M6O#UnI8OD!+)$_!FcozHvlke8}4UOLetNmd>d<<6a4+g{$uzLO&5GTMX
z&UzdWXTj?EBmP(`K0wSl3as{z0nr6KfaOmD4`JLJJd|-3cnsr9!4nzNpH^1;!GQP)
zSnbyWVxq=B1FPq40a2{+ERE-ZD_D6o8n4iJEm%Fj3y5ZL70driu-g9x#7^)$CVxuf
z7L8v8S2O*6V70$9<7)$x{|)jrj1Ou2mByzurVoT~WckD65pNiG(l|lm3&Go%e!9j3
z!H+QcFpaMUKf&aA;Aa?520zER0Q@}T+ra91WI$AbUuN<<!Fw3jgVp=F0kImqm&rG1
z{D8(gz-s>+5RZd{EdO)hgN$DStM`Wk;!UvH?*_zQH4cK4ob^8-J_q+<{I$m4fpeMM
zgTE9#iE*^X0kGPi21E~V8Po5haW+`(mjYr4SnYoT;!2Hk!Ot;!H-KMce2d02z`L2e
zLgV@1*O<H(yqEFa8m|NIXYx%NKcw+*G=3T!WcmLHKFIhrjsK$Y0gXQeA7c5Bfe$l2
ztucK#mCNzNGvWx-_kq7)e1XQP8u!<D5cn9&e+9Ue@feM-(|C%;)4?ZM{xa|x#&a}Y
z1U}2;%fROtH)wnx7=PfyIs)QBjeiYJ!e>IwBOsmtXE3Jyf&JHJ_$RAL-;GZO{{i~y
zh}ZVh@#1Ao{uUTh&N|}7evSXG@fRBZ1DtAShoy7iK8*2W7VPuu@gfF1gvq;thcQkD
zk7V2ztoGOOVt~e%fyXfYQDC+Iju+Qze51zs8kc~_F?+Xbyg=hR@Fb?cQsXAD+MmaZ
z&ER^b|1h|L@h**j4_5ozc<~~5C)58k_!-9UfL~<%p~i<bKCbZ@u-eb!*NGDO^Gnm8
z4l?`BB`(~U>=DpcM}p>m38J$mPXzaKG9-wLG|tfY5^y@x9}do7JQke8cmi1YTY~th
z#x$Rl|0Re*$cMB1Gr`v|o(op~ksua>)%Yif<=}Fr-w0OsYYAc_Slyo`h+lvgF#Sis
zwTyqK@$(wL0$#%O_kx!*eqZB*8h@$rN$?7m|9g$S-9zQE8pmtg6RhqB6GT6aF9s`r
zP7p)EEv)>jG#&?jjmdA)cq&-k-z11q@E1(K5`2pB&%x&yFVXlOjn{+K{Yrw^0v68x
zC_!uodl>&#<7dELCjS#Sg7NDbzY7j9`A1-NKa(In1FPrT=6uUw`cBhu;l?-5TA{Cw
zL~VX1if=W!D~YcUi6T;CzsB7)?gdusL!!t8tMwsK3<eK&DwHTjfYp3W6xV=<G5Pi2
zk&JH!tMwsK6lq)zR_jBexC5-#heT1W@m*jwzZ1n8@I+SL{Tgor-^%2Vf)_D<60GKD
zqIf~$J>X`h|2B9t;}5_)7=Hp*&odImQH{UR_y>(U^x*GzC5kw(T0cyGP|qVU`Pt#d
zC)v9}UmZ!B|0IbNO`ZnEEw^<fi5!hD*LXBo?MITtc(AHPl9;6NG;lB5JnDBVxF6%$
zVC7FqVxh)M!9$t;D)2DI_kxEr-U=SY_*dX-7(WJ9{$=*h1SWqLa^+7+Vz<U`X#AeW
zAA_eddq=<pj8ABMR%3T^sD2c<gyru7R_j-iNYc1BSnXGmL>73Bu#Y5hDR{Gu7>|+Q
zt&D#Heu(izjeiDK`<*0F4Bo}`XMvw&JWt~q@Ow<Y0{j8vwcrDco52Se{}OzR@lLQ>
zFOtMl8n=MYFn!ujoMr4>;=(PG#jD9YC0Uz4$zq=-{~I{m$&xG%fg>1yrSU1SkIB!2
z1B|JDYCb{84mZBp8s3v7fJt8+DWa1mPXN0dg%ok2#_3=$lMmE*7&wN>uLj34&I7CZ
zr-;d5RsR%G07i(jjudg5##LYyA5z4f;B;FZ?W+f8F{btoVC-Dt!i|+|HT2bys`XE*
z*r3TD07p3)QpFC99|x=Ur;6t^ehIAFpDNx2Cop?|1*`QnRRqDRJ*nbzjlTxxu>9YF
zRlG|To)jM6Qbjaat)HnP09NrXRrJuf4|oc*pAEj5@eqx#1mD8sxnLEKQpFA6awfk8
zJdg1VjVr(lnS8#+wctfeemA(5@j7rl<4xe@j2{B8VEh}6p9VKDIr-Ci#?B=!-0;jl
zLSG%dG=J(PUen}%0lS<Gy~F{HKLvZ3{Fuh4!D>F5<*E3hW(t{bi{3(9=orIAZ>@g4
zMT92zYn%jD^)d5v=GNV!ujmt!zpqwaUok+F57l^dNO@*{RbF3S9NL#A@<Q^bY2~Gf
zDVn@c<MNR5%>1gnG_Ab;8fR*(W-bZbEE1WlX0FMD=;R!3wv(nrx42ZcXPl#9{+@}N
zpXTpvR626=_ZspXHoxCK&ae~A?}Ms%Ykr?G%Vo>W?<?}p?~(uW_kW4`^DE+mc6RLi
zi23~s@jgdx?oZD;Z0@hrdSI@nJbqJtKL3chzZ0wR(*0BSAKgDL6Z0_sxlVmNVj*}i
z<65v9C68DR9>e4-L*!o309NaPSF8i8_IbqyaE6oLD>j4Gdgc||z^Z(&_!U_7hgUor
zl0RHL1`as(!o^eIRL0MNmA!EBM{og?zXDeAJ6ya0?#JZ&z^cAc;;-PNjyy^n03Txf
zckoEYhr#OpI!b&AR{b3%TERCm{cpev7=H&=>ji#17>!f$IZAW@uVnhs;0=sBgO&e8
ziEd!!k5M8C{3g>+1;56)A6VVrM~O`ERwmB@tEd|#E(IT8@?qfZ4&(cs;4;Qz!6l5x
zgVp*MCvE_%{)iJl1%JTwr-Idj5+{nlCC+@06J_9H#<Ri47|#QLz<4qEJ;wE<&&s<S
z+|0NE9ANRI2^_`pZv;Q-==;PLu<|#bcnCa&$sYx){_u$>z{O1dELe@dPqcu)X7ZQ7
zM;N~b{(|va;1Z|4KJgBCs#9N|cpt1jFN5#LfR{7*r{H?VN5ShD{{yVv5A}(&;EAlf
z^Wd#a-*Zvu_hCAMt5|(w!0Pi(KG7Mh-hcLqc(D3>l}~gBFJ$&pz^Xld(HpG#-!C%2
zs{j3BAoy0Ne7_h9R^#CpSAw@Q`517J@wH(7`Nj!gH9mfE6S&Z+pI_VzR`c60rh(P?
z_(d^Ty?^N!Gr>WYzY09n>0iH?4_5C#`b9N(43jS-Im^EiT+8H*;1x{19?akGxgV_h
z5AXkgRsRLVufVGR0%8|f^<O|d1>WKGS3o=mR`V+${s`vp=f48}f$6^i=I`JCg_z0T
z2lMwMKL+#nyFUdVaM~9TN5N|T2gE<XUoiPu@L|RVg58Twe+5JbFn|9z8eG8iJA?WA
zgWbUV{rn!_7oGaYi;KYZjMKo27!Lre_!uuP1*`ZHFNT93WBONvM>D<_tm1isxE`$5
zrvxz>e9qBN5c%L1#zo+#8JB@o`3Yh+SowQ`SO8Yzn;>eywJiTK@DRrLfK~ky#aggx
zf1<b#JlD}r6kEY6UL=Z#!4EO{PVj?_e+M4T_*t+jKS}%%e9Dn0iC4f6F@6KA*4HHQ
z4tPD2{|&6-ZIU<$KFs8wgA*Aa2PZk4BEA888Gi>};c%)ja7&}cKUH)9t6ewlcfm1C
zzcW}Jnc_llrsKakB0WStNDK+#G%*6~aSWu1G2l3dv&41aD8^GX{Q|H$`ijyJd0$Zh
zPInZt#C&ic#<iOM3a~nQi^dRnZ?OS9#!<);4}eE8-l6F~23AKe@q2K%lh8}Fgve9H
zD_}L=c%A_+bo8^tU%^uu2f?a;QpFK4AJ0~B9n=37yqK{Iosr;hs)zvBGxmY+cQ{L2
z0B&NOs^w1yt9Y3za==e8{ma2>{$+{LV0EO3YrzAYgcLCm{6~kg#LvKgU|bBokonsz
z@W)I(5BxXAHDGlli{)T7Uy{XY@OO?vme>IPhVcX73!V6zC3b+jGkzRAg7I_U%NV}|
z4mkFb#T#ICV7`OTItfYQZ{TSx{~_>X#$SQe=fSeXDex*LKM(#b<M6&hJj%EeSnV%!
zL<0CFCchB;C&uaEiL8D(-~z@&!S6EttH5tD9tXycDqBaExC#6{<EdbEB#If}eNIB6
zC<jM7<DDh$0Mno2Fpn%z4OaKtS>i5mA0}S|zKQYu;OiJ~1FQXDmUtAb_J3L8NpQSf
z96aZFu=3|b@iMrH*?SATmhpbDIugXkV17S;82lj9KMvl^_zd_@jE#Pn4~!$g2N`z;
zf5bQutUiB}B`yM=V)6`dceh=`EO7}Ke-_d@vczyO{U)AyWQnn0{Cy^eCxCy(_^05T
z7#D(<GoA@v!gwzDtm6+kVlj9#lP?EvWZVdTjPXYBF2=tA({I+9N0xX5{4C?&fjc<u
z&k@gq_cQq`;P)8s1s`GjKKL->gJ5;Ui_gIaorHMN3Z~z<Gmk9sE%*du7aoblI}2i#
zhy>Gb+}Zkm@D+@^gD+*=3tY@N6I{S}Fj)C7_H*DDZS#<f0pH2=uLJ*_@f2__(=Pyz
zV|*)kIn$pFu4lXuyn*pj@Os9p!0HHyCNO^<)(rk7)Bh#-0meJQyBR+PZeiR4{*dvj
z;J-572M!OjYmg=W26iz%1RluvD{z0tr@-Zm&x1=ChhsCcnsF!aGR6sD`VBYp$PyQV
zf5SK(e3<b-@P5X_z<0Cxb2XTL1I@OV2aabv8Jx+u08GD;X6xSup2oNe{8Pqvg152q
z>cOj+d^LC>;|*Z-dD<ND0Qfy7-$8Q5kAqJ#eh&OK<Cnnuo%tIOZ-9?5eiv+XQ0@5$
z{5{M6nU?=JSjEqPI1Q%XAhY{J;1RWtaYt|tV;^_`;|stavHnQ~U%}-4!Iv{01U}02
zuK?3;l-cEv0gqvP9k_(?6mT))>0tGF>Ksu9p3UTQz_&AA1XhP%ECugz`qM8~f@_%m
zI`Ey0o59-{Zv!_oegyny#!rA>V*DKV6yx3CR>rS`dxqOJ%o6W_={Lm8BTF0r4`ci(
zcrfE*;C#lX!8b9chq22TcLXnH>;tzjz5u+PaVoe!8^8Ww`a8XL{RV-1F}?zPIpZ<l
zY{u7t?_fLyT*`Plcr+`o4E!>a&jCNpcoBFy(_aSup2-`)-!Z-q92=qP{~$P;@vp%Z
z%s(CnS2KPVOurFjw|_S{p79%6{&&G@zvUMnf-{-^VQ_!O$H5~Qp8;RN*uYyzvsim0
zz`0D`8GH@nMDU$V|03{YCeHxh!1xmI9LB@Jvl)*CtHUSq!2JE6o4~b9KOek^@eJ@U
z8P5XCKkOlmV*d+%i^&&*Utzoqe1`FAa4X|`!P${^4YR}+a9_p`gG(6y23)}SDe&El
zUjQ#<{0jItjNbzPg7II$pD_Ly{2}Ad!1#lb){!NSgTG_))8LnFG2Xd94<60*JK*8P
zP{y&~dl`2H-@~{E_(Nu|H+UbDXM$T8UjmL{{&EF45N#XC5?6zLjK_lqFun<##W)|V
z=95npgVlWSiJ4&fO&{~f5_7<pF}_pFzXUwjnU6kkH~1Q+zZOit31r*5A6(4%7vMt1
zzXpG8tE0ak2j9-*&w^(${u5X||H~172Gef@nMaoR3wQzJzk%sDf^7LG;FXNO1Shcm
z{s;IzCjSmhzbRzrcW2wzbdD1dV0C|p--`u5%=Ei~f5EsX_+`d@!7nn-2Gef{nManm
z6#PEp5nxY@l8*(SWAf|3moxcf@Ic1Xz*US(!R3r^2d`l~AH0%r4S0rKJjUxT@QX~|
z2!4+7ec&$`KL8Fg{uQ`}+50WHN35NYC4LX4-^?+OEb&M1Gd809SHY8*{B7_=#_xma
zH)-tre+O4G{u~_c_;Z|S1^XGF2G=nC^I-Z-8{1w7JY3@WW56*ie;4q2rr#aBhVez<
z#~Akq?_xX<yxA@e?Y$iQ2PVG?{4C>Z!H+Qg8^C**{Ab{o85e;+U_2ANpYa^9I%32^
zuzLO*BkI8Pn>gl?CGG})!g#HwzY(mCDDePzoHPHT#CCAkI9nr2>;gwJei~fDxCKnV
zVPhUyVh?yD<GtVp#{0o9GY*1V7#{(D#<&&yG2=7f&Ye_w;$k7f7>9#rF^&V@#yB2a
z&o~)e%eW7CsBIqOodu@fP%)1zF&Mmo@o?}pwix<jz;7^l9{453lfXY^`cuKDn7jns
z%D4iojtFrFIL}Fl5R1UEK06^x)Po}#uLAdHydK<}@n$gn=81V^iHE>fG2RKTWc(!f
zR>seR={HL3{4ax7Gkz1So<~QBcfoyZb$qh(0C*7NPr$r=Ux3wtzn}yj=OlQ<8Svw*
zyz}5k8GCaOzZpk^-(~Cvw=%u}e3WqtSRG!`7d*vD@QN&Oht75ap09!3jE8~gH%!bU
zOI!u+$v780l=1c8!HlPXuV*|BJf3k0*tuO1UQrHqwlna@IpA`pzYtu^xDMRNcm?=w
z#*N^ejPC=}Z<N^Wc>w$@<6nWFV*FdMdOnpSeh+@1$^Qs`m+`A$b%cw(;7TVUT>KUM
z71RG1{5j*#z>$7C1NN8T4vbHOQy8BICo%3YkiTCQE@Hr`wmI}?0DL*qPXZ5Q+zWg&
z;|%Z=#)H80n<VCuC5C~E7>@?u$#@)iKI0p~S$1~R=N9n&OkNDWmvK2*9cf~22=^6>
zLb$i658+g?3atDoRjdcA@>9iTu!?`F;-QfIDPkwsS&s4f<0nJp$>RACP7*JJ)%z()
z;!SXY(|{!L9(W?-k3#Y%io;;#Z;9d<SjCG(aVkVVLHq!&b?hYwFM?4&#xdX(j0521
zjFZ6Xh!?%Us{DA70aoS5i$UOACquj#7Lp&oe*y00tj7T{4m`xs4~QGVXBgiC{(*5Z
zn17z29LzsIFc+-eUkZpt;KR-U1w=iVKYv>V=FiX8gU>Mi&0zj{g@?ecOuiG$zn}jk
zSRH=xJlOBF*DqcMtM>ZEo8Y5P2ETX@{59i`!2I(khrx@Oy<@~qef;7SSly5L#SdV0
zKjs(SOR!&I`Z3^I#sTnh#z|mx_(U(Ts-I6}fYpA&CkBD}=aGhiCph)>iP2zHAD<Wp
zR`vCX8^Qek?-sE7eIwjof>nEcq8z-!sjpAW1@q54Edr|}PAmnFauVXiO7L99Yr!8d
z-U#NOUwZ)TaoQ6nwu606`ElYmV7^~}63qAOe*pJm`Y(ai`<Zd#b#Mxk{{^g$81X>}
zM~T0K3mt_haRgk(_&E3>#;3sh{!e4~0U$NC{(XFA7ZtG~R%}^2D&S6^QAAt;+lmN?
zs3;u-X#yhlh8-0Zy>`7;?5NnW7re-|aupRjD)!#6z0ddj&a;er_5R=Jl26W@oXI5l
zC7DbzQ#JgX4KM3jrCOAi4RNJIt3M4dpK5Kx)%)YMZFt$|(aWbc{8Rmwsm*M-byJfq
zQ`^|^vi(iVRQ6BxJEXeUaCQ6LZMeGqMjNhfueS|Xx3|9yk8OIsl~aS74Iga7)vte?
z4IkfBzjbPIv*BZGcv02kQ=1K+X~W-DJ${}IPih)&le*Z3f2|t6s@d=j&4zEY;fAL5
z%f6r8hL^2xZBlb=cuG@yYo?yC;p*+nJR2U`H2#{Ymuz@+)$r@hhTpT{DNXIIo%+Ov
ztGCbJG#g$@{igQp`?4xF|Eh*tH5+bY!|j{eUoW*@v*Ar_c-^MQH%e`7!%eHd?N6(_
z+Nv!l<+Z8pQ(3D|$3Ccyt*<@eFvqZM?09i>9G(z{Tc*y4!#%@rtJF*%-(Eu-I}(^1
zhj|a$#;zQCI}Y1mSnocJ!}T_iZLDPVWgGMG`1)~}bEa+Vzun^SGhukm)ZxwQpA?7r
z%&?6e8Qc|z-wV%g-`^02`OLkIz0>$L4zmuov1DwtJyWJ@FxuEV=bhs)nQ4=%OYI+r
zsY7nY#Nljs-0qi(!xx5OJKl-IWYD(usk`EEi!i)p>Zv$vgQ2~Je|mhY)Yr`(Z_$aG
zY)NQuo76gSn6i*#{{`&uo8AKk^zJ!e*8u}k0gXbhZo33b8Z&;tgkd9sj~q5(TpZ}w
zIBrPC`cz|mIu)2vFRNZoy}Wt_^@{41)GMo3Q7=;;`>~x&Y$y|3%EYEJv8_yOEE8MH
z#O5-wy=-hR>(dq6%f|MyvAt|;FB{v-#`bIj8D5sH=%JsB?d4*7Ie($Cy<BWB7u(Cl
z_HwbkTx>5F+snuH^0B>qY%lL~F1DAC?d4;8`Pg1QwwI6X6=HjZ*q)tW3e#PP?G<8s
zh1gypwpWPl6=HjZ*j_QVSB&iyV|&HeUNN>;jO`U;d&SsZF}7EX?b!+NFg>N%UMaR$
zitX7OTs<D!E5-IovAt4kuN2!W$M(vxy>e{NPNal(%CWt2Y_A;KE64WAvAuF^uM*p<
z#P%w&y-IAa65Ff9_A0TxN^GwZ+pEO(GWD^+Onq!IQy-hm*vX$TjTw8F9}!#4)W>Es
z^|9SdeQY>W?=3HjinrVpmZr2c#ic1PO@V1jOjBe$GZ_y}##58Y`ZRlPG9H|aCnw|4
z$#`}$9-fS+C*$$Scz!Y-piIu^hDRvl8OnHwGM=K0$0*}D%6O16o}`RNDdSnn<b6JS
znlc`zjOQuify#KIG9IanXDZ{N%6O_W9;=M!D&xV*c(O7ct&C?Y<KfD9x-uTGjOQ!k
z0n2#8G9IyvXDs6(%XrE%9<z++EaO4Tc+xT+wM@y^IuBdM)0XkLWjt>g4_w9*m+{DD
zJaZWjUB*+F@z`ZNcNq^}#*>%v=w&>684q8^)0gr1Wjucw4`9X<nDGc^JcC)!VAeC3
z^$cb`gIUjDwm!~{tY<Lm8O(YHv!21MXE2+I8O(YHv!21MXE5s-%z6g1p24hVFzXr2
zdIqze!K`O6>lw^?2D6^QtY<Lm8O(YHv!21MXE5s-%z6g1p24hVFzXr2dIqze!K`O6
z>lw^?2D6^QtY<Lm8O(YHv!21MXE5s-%z6g1p24hVFzXr2dIqze!K`O6>lw^?2D6^Q
ztY<Lm8O(YHv!21MXE5s-%z6g1p24hVFzXr2dIqze!K`O6>lw^?2D6^QtY<Lm8O(YH
zv!21MXE5s-%z6g1p24hVFzXr2dIqze!K`O6>lw^?2D6^QtY<Lm8O(YHv!21MXE5s-
z%z6g1p24hVFzXr2c?NTy!JKC>=NZg-26LXloM$lS8O(VGbDqJRXE5g(%y|ZLp23`F
zFy|S}c?NTy!JKC>=NZg-26LXloM$lS8O(VGbDqJRXE5g(%y|ZLp23`FFy|S}c?NTy
z!JKC>=NZg-26LXloM$lS8O(VGbDqJRXE5g(%y|ZLp23`FFy|S}c?NTy!JKC>=NZg-
z26LXloM$lS8O(VGbDqJRXE5g(%y|ZLp23`FFy|S}c?NTy!JKC>=NZg-26LXloM$lS
z8O(VGbDqJRXE5g(%y|ZLp23`FFy|S}c?NTy!JKC>=NZg-26LXloM$lS8O(VGbDqJR
zXE5g(%y|ZLp23`FFy|S}c?NTy!JKC>=NZg<2J@c5yk{`)8O(bI^Pa)HXE5&>%zFm&
zp256lFz*@6dj|8K!MtZM?-|T{2J@c5yk{`)8O(bI^Pa)HXE5&>%zFm&p256lFz*@6
zdj|8K!MtZM?-|T{2J@c5yk{`)8O(bI^Pa)HXE5&>%zFm&p256lFz*@6dj|8K!MtZM
z?-|T{2J@c5yk{`)8O(bI^Pa)HXE5&>%zFm&p256lFz*@6dj|8K!MtZM?-|T{2J@c5
zyk{`)8O(bI^Pa)HXE5&>%zFm&p256lFz*@6dj|8K!MtZM?-|T{2J@c5yk{`)8O(bI
z^Pa)HXE5&>%zFm&p256lFz*@6dj|8K!MtZM?-|T{2J@c5yk{`)87z1P3!cG(XRzQI
zEO-VBp231=u;3Xicm@le!GdS7;2A7<1`D3Sf@iSc87z1P3!cG(XRzQIEO-VBp231=
zu;3Xicm@le!GdS7;2A7<1`D3Sf@iSc87z1P3!cG(XRzQIEO-VBp231=u;3Xicm@le
z!GdS7;2A7<1`D3Sf@iSc87z1P3!cG(XRzQIEO-VBp231=u;3Xicm@le!GdS7;2A7<
z1`D3Sf@iSc87z1P3!cG(XRzQIEO-VBp231=u;3Xicm@le!GdS7;2A7<1`D3Sf@iSc
z87z1P3!cG(XRzQIEO-VBp231=u;3Xicm@le!GdS7;2A7<1`D3Sf@iSc87z1P3!cG(
zXRzQIEP4iup24DLu;>{qdIpQ0!J=od=ou_}28*7-qGzz^87z7Ri=M%vXRzoQEP4iu
zp24DLu;>{qdIpQ0!J=od=ou_}28*7-qGzz^87z7Ri=M%vXRzoQEP4iup24DLu;>{q
zdIpQ0!J=od=ou_}28*7-qGzz^87z7Ri=M%vXRzoQEP4iup24DLu;>{qdIpQ0!J=od
z=ou_}28*7-qGzz^87z7Ri=M%vXRzoQEP4iup24DLu;>{qdIpQ0!J=od=ou_}28*7-
zqGzz^87z7Ri=M%vXRzoQEP4iup24DLu;>{qdIpQ0!J=od=ou_}28*7-qGzz^87z7R
zi=M%vXRzoQEP4iup24DLu;>{qc?L_K!IEdN<QXh^21}m7l4r2w87z4QOP;}!XRzcM
zEO`b?p23o5u;dvmc?L_K!IEdN<QXh^21}m7l4r2w87z4QOP;}!XRzcMEO`b?p23o5
zu;dvmc?L_K!IEdN<QXh^21}m7l4r2w87z4QOP;}!XRzcMEO`b?p23o5u;dvmc?L_K
z!IEdN<QXh^21}m7l4r2w87z4QOP;}!XRzcMEO`b?p23o5u;dvmc?L_K!IEdN<QXh^
z21}m7l4r2w87z4QOP;}!XRzcMEO`b?p23o5u;dvmc?L_K!IEdN<QXh^21}m7l4r2w
z87z4QOP;}!XRzcMEO`b?p23o5u;dvmc?L_K!IEdN<QXh`2FsqovS+aD87zAS%bvlq
zXRz!UEPDpap24zbu<RKudj`v%!Lnzt>=`V32FsqovS+aD87zAS%bvlqXRz!UEPDpa
zp24zbu<RKudj`v%!Lnzt>=`V32FsqovS+aD87zAS%bvlqXRz!UEPDpap24zbu<RKu
zdj`v%!Lnzt>=`V32FsqovS+aD87zAS%bvlqXRz!UEPDpap24zbu<RKudj`v%!Lnzt
z>=`V32FsqovS+aD87zAS%bvlqXRz!UEPDpap24zbu<RKudj`v%!Lnzt>=`V32Fsqo
zvS+aD87zAS%bvlqXRz!UEPDpap24zbu<RKudj`v%!Lnzt>=`V32FsqovS+aD8LW5)
zE1toMXRzWKtat`1p23P|u;Ll4cm^w;!HQ?F;u)-X1}mPyif6Fm8LW5)E1toMXRzWK
ztat`1p23P|u;Ll4cm^w;!HQ?F;u)-X1}mPyif6Fm8LW5)E1toMXRzWKtat`1p23P|
zu;Ll4cm^w;!HQ?F;u)-X1}mPyif6Fm8LW5)E1toMXRzWKtat`1p23P|u;Ll4cm^w;
z!HQ?F;u)-X1}mPyif6Fm8LW5)E1toMXRzWKtat`1p23P|u;Ll4cm^w;!HQ?F;u)-X
z1}mPyif6Fm8LW5)E1toMXRzWKtat`1p23P|u;Ll4cm^w;!HQ?F;u)-X1}mPyif6Fm
z8LW5)E1toMXRzWKw9n|9KBV^)TA6?3UGF)xGXDU%-jir$O&`^J7Okx5!+KAnef;0_
z93hW<UYM=n-%R+IPrqrM))+fm!}DkKFQf9Yzs96$$ZLpbwk8bgU&apU3|S4S46zGo
z47m%L%hvEznecD6h7UY5;oocx4P?T<A&S`=u0P0xe?t;OQbWi?LPO57HB4|O{F}8a
z(lGyq%!HKL3*{x)E2S6GWkvDD(+fEZ5e*p(i3|a=YMKwBXG40ip%?NNvKChP5VjDs
z5UH?=+X#B4p=U#St)UmP6mk?Y6!H^N88RAH=#aaxM%$>GHKAuinlGUjR`9TLhZQoc
z-C<=7D{5G^Z3NAu&<m@y6=_z5UPwY%=R*R*T5GF-=3404kY-rug_St0z!|;5unK21
zvow>!3Y-Zms*M}hCVDocxu~8Njh04O{dGNxE>F?L9J-Rj#?#Ey+Ef#^?6!u6c^Xy>
zUDlzCGBRO1t&2EpOwB#5j5T3Rv@yd>3>$4-2cnBNbmfMPqgfW$SUo|FdSM081sS?x
zLzin<7Bt7=${W_vOpSVB9n%FGx?V%qXy_^oU7eweHHHoweAtKqg9Z<tFl;i-HTG)M
zWd?d+^vJQpDDK`6HiO-}g<fOtKDsEO?>@aF8uhuM)#JrmJ$j)YvoX{QXw)Z;R*yMp
z_2`9qET&K|!0Iu>tRACTz0hk28*Ce*4r7J2i?IS48g!*bLpSw9yG(v)7f^%Mf*SNg
z4OX>K15kt3so~EOR`pPWacr7GuUqJaso=$isR*yyW?@*d!$U0B@DQ+3c@BF4^upue
z)$#)T$wH*U7`)_Ahj|oA0vh%Cvb7bKOt;XZUYO_9Ynu6CX@wGIW~k%S6ZU2-?GXO(
zG(M-oM!@DnXvXG4Q*&WA7bc`>@|hE%L~|zWbh~#8z3_BY3=`mEgqapf7$em2S<tjp
z!@>@Am<3D;RhSZ=Nny1KHNtAt5cc}^yu3Qv4BIvy4+tg9fl%VJA{>K+lBTiPNQDx>
zSmCIIl7LX+uPAIULy6CWu#pWV{))mDmzf;4y5S*TmSGbdN_^!B8}?A*lNt_c!stGQ
zVaA5(@hJ>TpAxMN4PhLc6aFg0o`uH)Xg(anQ4$bJ{56HWOepc!6m~hb1j1{xCD8O5
z!yYKK5|)kCh|5T?ndf2Qg&Mvhhn-C*iA#-_Zqpi4V`GG^J&y-49br=*N_=ez+woB1
z>q6K<hZ29Du$2xaJWpuHXL8smhZ3L3VZ$6sJQ`sm97=qB2peJ+MA+8yP}t1!6ak^c
zXIVIQ2qnH6gv0qTx=&#^oDZXiDWqjz#NjADJmiZw94k-~U<)Huv4s)(JX6@*hZ?+2
ztD&0R)DJcM<%R>5P~tB)9OW~0;oU-b$X`l0pa~E8%npYv;hFrUgd?0#()3b%d4|0m
z4+V5@2<yBp@3>ULajQKX`u4oxK!D*memII{IIhd#IDp|etHL1x!#<<Jae)=sL1|p>
zVILn#eESoQ6heuwQQ?p`l!O;)Ga?-NG9$tPMR>?pq;LcrO8iBJBjHdICX>;9QHBHJ
z@KBgSdng=#&~i8g;h}&~;xj!Q*Vr-)Pi0Fv^g|6_V&TAw8ayL4;ta}!!>iD$&ysLB
zMM(gQG8{04=2(KEa#)l+<gYRu_=Si3RffHBDB-zmQ8JD#%D5JU&5b?mo1L&BW;o6Y
z-){Mi!M9qz?+W`vtMB_o-%I!|Hf;ELJg$enhX{RpF}^?W!wKINYS-1P(GOd~UXOO-
zbcLNC!*KzHU7xk*d%DoKxfTv_tvnp%TK&*xI4-o%Z_pmOp=pmCjsmQ9=-Z>LgZ5}#
z6~hrQkH%^7W0}ym=kx=VaAZKexO#>I1g4RtMR{Cm;ozI$u*__l<Gc#*6RkY-ZOKt=
zOD;a@few9Z)#Duc4AYv89r_Hj{27kxT-bUr9AAa+Z+v&-dmHU+dNukkChS;jywJCH
zeSZ@A_UgmlgYx()L*L4q*0@;i8<VgTvGzj0p&@K>8oGs^wGwvLJQ@~3L)h5bqrP^=
zrRY1iFmI?G=eQq4g!fuZb9n7GjdA>N5`*%XIzMU%eVgMnZ*!a;bC6c8w)&0QC^m#C
zvr2L02zwl>q&-jXK4HgW!@dLZ{g3Z{!cK?B<CBD44#ROVhc_q;$H4jyDD-Wj!f7QQ
zk1LPQxG;+-4==S>qwjKjpA`DGSbX0R_83+_^zEhV5Y>;Kd{-U%_N>064t<8>%I16N
zuy3~3d><Y5%nUO%eH-;~qYp9n`!<GG*u5bvqwd|bsCxH_$F{y-&=T-@t)Z}#8p1NQ
z@#3P5%PP)AW*#rjdN#GbW@;!-I=zP7;tCQo5~kLIsfuATEsh!rdjxB9*`C4584eR?
z8|An_!)BXuCdFPJquXS9D{;!g`(vB5uqCH<+%`0A&^38s(3V=*s#85qVdyg)r!n+x
z*!LpZiP$g`XU*$4tyg0>Oru_$UFzF=!Z6$Iy<BMD`e7#78<;Tbtnb6|aqTdzJhX3p
zUc4=59U0hy4lmRC8edoL+T+@E+WHX7wfVPlJ-@Diwt5P-^<#O+9_6uJZM+(F3AUAM
z<755!c$_X>)NYUa^o7}O!<y~Z*Xz->>Q)}-hb|+xVWrXfdi}a$+{%?I>&Mp}S8&~X
z(bwKasNHyIZNnO0cSqRc+MQXS70-slZp-@GHCR86uOlyeT+gFh4XmCHg>0SE{MUhy
zm1}Ec{n)N{8u5tH9*>(cy~kiUPM3BLc5tibiIW>&h4%T4+9fx}MH+T`eH-HhYImzW
z8Iz~QrsKj!9sV`OWvUID&cpR>j87bPHhmklud&4(=8788ni5}+isIVo3y*oAvmhhK
z4j)Gq+l7aJNrxSN(VX>|rwt7u0@fn|)?<aSo@$1TwC$5r7^bwLAuQ_#?HsJ9$HMWG
z4XI7N?bRujhKBI6trwp?tcx53>KV1HY&dKUtsnLj^m!fh^$fbfh+(}JtwS~(pIUdw
z*s!fj1NQHcsqZmp?6{o=jh#GbVtM>wlX{MvGHi6WgAZ>0SY_yhL5J_!Xs3(p!M}dA
z@83OIX53!GhD>7A{~EVEeB|iSO^^Q9!-XNEhYgz0ZE|YNurU*dO=><}<sk<Tn$W#C
zrEG2Y++#?lzFYTkV<+{Vbj0Xksfh!Io9(gYBW3EtSefjUOz|(qYc^Xl_2Vau96PDI
z&6%NpQQMw{M|j%*dY<gEF|$+tV%+A>lw(fywvi?c>p5af7~#KWNT!}j4I?Lw88qH%
z@Us7=jvD%3t;8BVi@kgH+O1Ew=F^`WJep;enmBQ&t!~8u;fW6$K781O<~55W$4(wL
zVUjJTW-qBQeDuiiyQ(}sOVJi%&v6rJ*eb`uJZ)RG>Zj7wRaMH=51TM(;;=pw1`Qcj
zRd-ooRoy};ZC)!jX?Jtmz2RfIlUU!`;?CP}?KqWldvwisxidag4&zRcTTwnyZi8d_
z+IW)6`Hqy@!{mC(C(Arn&EaxC>P(SWrThpvw0WewUR62wl-I;Br{<pcnxj>xzqvMk
ziS<y*k5&12%8!$owl=%#i)A;fa=4Fs50y7k9vxoG@fw$V!D|k;KkG9MwI`^26UvWJ
zIc?USsPcA{pCmJ#wb5Zd9IN^~Z|zjov9AP3)tsPm=D)We=6@WwJ9SQ0{hl~}$@XOG
zpQ`esDUV;q&3Dq&p04uqC_h7<LHU{TC6rH-uf_3o-Gt9l`K&76W3G+m&)~CF=LPDV
zBfo{G%iM!sd#=2M^84)1`kzo9UssLYmtQkS<$O;=?Rl!-vdWG4e3i34wAo9`tARFW
zsC+nWULf=R6*cio#-~vJ50%@jPu0XPBfp;Vi&g#&<*}U~%q{j-`%9zk>BDzg*8E}h
zj7)RwB^sCSim1I*9%Zh%OrDA_mlsgy3Yp&us<~3;d+%$nl7Gkll$W<BskvI_yAErw
zkvmqoE7NhU%0rIgm!uD*{CbrSHP_xCkD`30d?LP4KASo>$=6aI+nkASR{3n|+#+|i
z>Gb)tYqa&kcLdhh7wy<2rh4*PZdLvL%{8~leD6i=?K1PHc9zWd^VHlSpH2Cl@`aS&
zCAYAKYi7&+m=AZ$gYiA`aD1;kmiqU}M^k>kJOe)<UxXi&8+g56YWlnKdgrJ-%-e_L
zfz)|e4(r<^@@UE*m5(&H=(9rj3e<}ze@x|JeS2KC)jd_Sa!r_551akDo{Z!2_3j~G
zPpJMY)L%>W7gp8(g7Wy~_urX$UdHA7f_xhKG7q0pJN=orPs@A<RBfD|;junzJ?k*z
zwlp7UuGvA)%Xb3R&egblzj^I5@?z@zOJ*IenJ0H=-aae$FxSkN!!r7}9G1~@^6}Jv
zUJlDBIxLrInue}6O|>tmPFOB4$^)&u<|R2SmzU+RTo%aH%jGia|3~Gl=e4iMEQ^|(
z^<0lq9-nKT+2?Io7I#%Gi}+&#iy8NRm48?@F58frg=(Lb!rK`dZN2dQGBvNM&Uh=R
zeO;c6<Fv6X7?)+l_gDEcA}=-e1za}!!tdnOzM*lirhJjS&|DjT1c7B&^Onk4cC~NI
zd<T8aJMt)&*Sj*`yHfj}{2YE?euX-V<t3DVAoE)z?%jFqAF8}B{zzt7)Gm>ar~G4?
zZIRb!zf=2(%I~B6Q#s_~Gr1GxqiVxz?@ayARen7FLOz8$U&>)W_>~;CX<y3^Q0E(&
z_PzdRwDYaX$yd#Ha@hWVFNgiq4{~_DKgzwR|C2m{c7B$pP`*??5y$#hQRf$xvrg9h
zD)ZWFf0H+({C7DV1H7Qu&U4lNq4KcKhpmA9jw0o0{aC~$j2nO0g4bRX>o2BGt?KZ4
zYg))ZQNEnq#@yxr?Gx9d&hjd+r_KuUx|GKs(&$L}iYlK<c`Nxe%2$$&sWt=EX7J!D
z50zWm1L>7jpRZ6(_id5-*49&|C%vy;@7mEk&a|ahQT<Kus`6IY#@*S*W!f;mVX#y5
z4_0l@=zm$A1EN>4?-UvweTtQjjNZ!1$43{e+zt&xn`|47j;6gcqK~&pJtulY^Mzi%
zd@6Ng^lH}5ozW-Q^swBS&NnSjY?tttHqB2(A7<me9NovpT@=l7{y2JwP3I5MX`7j~
zR*!b_Hty=t+gqI^dIPJQi)Oxdi9XZ3XLJi2mwh_zbg=Rf(S6KpqbOg_rjy_J#Oqo6
z=SH`*X}CFh1MA-x{g}PRr=x$e_Fszr!^+pSKiU~-?Q9;+@A+h-Z?fktMPFv)^@(27
zreVM6cddMM^iJ0Pq0xP8K2ME4%<7yTy@~m<=$EX2b@U>uZ=3iqJris>J`!z{kYant
zbh52o6g||+zm4v1^_NDEWuDs~^?$WK>l5bn7NeiFad)orZqb+9>pCQw!?Q!9AF*jW
zJGx|bW<;m0&K=Q{to+{SzUH^0ceimDN1tt8-o{~i_Or5;qZ@6$b&THLmSaBpS*tTJ
z`bg^!k3QMjKO&la$Z^pdS^L*VpKGs?!%CiOy0yb@8((SV><;nC_PlJ)@KH8z+4SI5
zY#R6-9(=Hs=b|66=iNV=P1(TclC^hY^eAidv}ks<v!g$;X?P&|b9-8rH|<mYUNncD
zOQXpbZ>p)Ykv;D^(PVAI=sT<md85w#*559Anzgfcba$(>Z}j@sXZonmrha@hzv*^H
zH2d4<qt9V|iyme5SF!0}Tz*4l-RM1SIya3TW7D3Ge%i+C7JZAAvraJXYgT?#bQkO2
zfLF5$*4=EbYc1as>$J80!+3R-KaShTbMYGT61=ATnYnH)`A5p_d1>blytc|~Z9b;g
zk=b^n*Oj-zZRHN;y7gp!_r=@kg4b7hSG<9|8{SYJg;^o38*8ph<Rd7L({l^1Q~50F
zY%D)mRp$x3iOT2VP38G`Gx-H`-RAOJly4!whqshJ!tLZwslS!{Gv!;$zu|4<nib9M
z<>k$F@rS8aqTHtcSDTk><BqDc9^O{&fa_&`f2J-YccMJL_O3Xq@?9|@vu;nEmk+@4
z2eJm>qRPkPl03;=SC)^XJhp!-uBiM>yq$b8-d?^Ocam?$JIJ@=&hl)$qx>H3B7bPE
z+e!YK^7y<z;|7)UTR7>R<(gKiv%KYn-@Hk8Rr%_;o1Eb8@}_tfxgFkBF5=zf?Jyfy
z>-e3T^d9og=DJ3CSITYLj<Pzv@t!K*7x$3+$2#{}_DA5oRDKBVDIbIPmQOI(^^&Ji
z9$)(m+*{=rVRnMnU61#XZwmG02ZLLrm?ux;eN{dW_mdam{p3Y>fB9W}fc$~EuD|>(
z<p;_?;)CRt_B$`>0rJY`IyT<ctwVX7{sa$F`KEZV+%DGPxAt;)h{{WNsN5;mnQCqB
zf`_Sm4?JAn508)!#0SfV;F0n;JW4(eA0nTGN6Y78Hn!GXfXB-G7EXGcd;=aY-+~X7
z@4)tY*-y^F6IA{vo+v+uC&@42!{k@7jeDlehxhPgm4Ap2mp{c*<ga3V);)e_Cw+v<
z|G-DeEmk&Lo2+}Q;iFW(20mKe93LZZWv)9`&Ql(j9ly(yK2GIb@bPjF%t5bpz3_?h
z5NzYJ?v2GKseA&SDj$zemZ#!V<kRt~GQamz#}41RODR8Hz7n4yUyIL_XHtKfd@JQP
z4a}eW@L4LKgE?5T?y*>h`7<A%qw*K<boo7euKc07?mYQx%H#a`8K1B6-|!5%W);=h
z%l7r_;R{s05x!9Ffd3(9@I`VFTl<gNK7A*AvC6yQOXS}8Qh8r|nLG?%E|0`l$YZg!
zxxKyiBk+|fKL%eVpBU@3vB9(OKUID%zFNK#UnBDyJn3uYnb_Lj*4F<!qi5T`Y!1Fo
zb>`vg<>&AX^2@P4?;+m8GgbZ`zES=t*7?ll$v5~WmH&WmmVd#w$ov2{)5Cj^mGG@9
zUk%?TuZeG$H;naJXWHReDsPYPkTbCk>r5wnr^>tFyX5Y8w!FK!?rym^<u*O+-w(p~
zsC+QKR~~`ylMgZ1-7k-)+{R_vj=~S9{5breJT=x~+RnjqRDM2wNWKI=EMF7rGd;KA
zM^t_%epJ2}KPL10Lp}|2@#89g7C#}s5bH1vZ{R0Y{x*I}{t!Pce~0JFKjCNOR`y#r
z>3_+qn(OAtZ7H|;z%l2>_*s>2j_1o;$2#P$3;wstyW;2MUif*rFMdHj09*UyZWw-1
z<s<P+@?`w7d?a2VpNjt@pNU_Qr(<iA++BiSRrwWop?poOL+)<Huc`bF{JQ)wenWm7
zFOuhCYoFY`6ix2l#BZw3r}!=TOZ>L{U93;;{=o03ytcLZUAZN;_Q~BE_&t@cgWs1o
zz>DRLV|{Yh9)F<ndi<eWz#qw-V|~``-S85X?}<N_d&N4eR|n!xR6YoQDv!XQ$%mNh
zK9?s^Zqv_tejNTn<tO1U<<sz2@-%bZ*YdfP+qg{IW%wJFUxmMwuZwk<wpsW)mCwfC
z%Maoo<VRzDrsrAwqspJhKgkR5&+==rKGU!mFID*x{EPf~tiv??gnw1}ulP54HT(Uc
z^zZT-=DI)RjVQO*NT#;Hyg9aRYn+z1jdjRW1=py22V5)fjycg}T@SpR+#fG555z0T
z!>~OsS>v~z(k)d!5w9p8k6X!8@k;W!cxCwlyo!7Ywl>MywRlyP&%~?A_u|&_gLrlM
z8QeymkJpf2#MUPHS`<ybKEi9N&Ubh%`6s-#{9CL~zE-dkplMDvSjTTUrQ;9$w#IE$
zz81FUB0C9=KMK4l<|Ko4?eGS2Ce~-&*dB8N!@3>uMsn9!hjpU|PE_6t*UA0x#&Umi
z-6rxd%58dBSI6P_qr(&NW~ws<Z!RBguG>OBfpQy{X*&~dsd9ctD&0<=5$iB*SKzHw
zel^}&z7cOD-x=#OJ#%n-l|PC*$WP&p^1N7|X;^^ck0>w1^{Vq`tiv>XgflAt6ldjc
za8CXMb8^T!eiJHPkk`URxvjabByUE!%?I+;9+y>Kk1O&Hn3GJ_?S!|Nd*DuTFT8_1
z5O<b`;vMCY*q)0_O~hSPemLeNs&(h!2KjuvvwRV@aaqr=#$8o@J?<vo9P6<D--ElW
z{0Y2^JQwdO&yV$4|6jqosr+@kyZkoZLtY%~v;Kd98&&=d-c$Y&_mER-n&Udw3h$-z
zRdG*wjaY}}yCLQTo^>1JUh<Z>x4ezHu8*9j+}dY->x}nNc|$0dcfp(pv~CY`T|c>J
zsH63t--=4_r}BgF{_>DmhiMyw<BxV9iu<e16nvn}Z%Fy{oQe-p`I&ftJRJ{|FNpP7
z|F6V@RDKN}EYFN}n1(y?5S8D9hsyKtF!?!i-EjFe%5DCzZoi91sQd$bu>1)gDgTB?
z$?3JMokQf6&EC$Mc(lsb#be|x@K||kJWeiSPPkgv2_Gu&jwi@H@I<*ko+J;%d?;hx
zFl?{oE*l(&C#!rSK3tv>>#!?15l>P1DfkHa%vgur!3Fq8m0ygHlCQu=%h$yE-`e1<
z_!yPnfsd8%!N<uD#`?S1JbwxwukwH46XfUciSirxB>8PTRsI^EEPrpVJ4NP)x_nu*
z#HXr!Wqg{v9zI>(2%jOh$7jm*c$(Z9pCvcov*n)n9JvpkF7JoWl~2a!$=BiY<)`or
z`CA;<!`wQ{JQiP|Iup!w7s|&})j1jeL*=LAi{uOO#quTi68Q#vseCiOOuif2G;n(1
zetfygA2QcnA<w7$O8EtRmHZn1r~D?qTK*7UBY%RgmA}Q;$v@)jWqwp9eS^Flo++<}
zZ<N=-H_02|o8>xui@X)SRqlXqlZ*Ivc{@By-WlH^H{v_xo|r&c*B{&bVUs=(&sO<R
zbKTwYILhylC*phMlkk1=srY_*I(|T&fghAF$8+SX@k8=0_+fb#enh?>KPo?jACsTP
zkIVD$6Y|UWN%>X$l>82UTK*W%l|RSN$aY9*?``D{c%Hl)epVia=gU*^zvavDbMoEz
zdHHetg8UACQT`RbByVQ>V0S~62jiDj=lm+)i5I9me9rqH`4!4vk-3N?9m`k6uc|y#
z<$hH@4lh)l3-N36HTZS;$tu5J<=?8jksTj+{T-@&5Pn1LoQ@aCS5}qZh2K>9qg8$l
zzoqhztIB`CZ>zkm9UHm3RCxq`M|F<H@5)@tnSM{cxT-vSmioTRxy&ma%_TnW6>U4>
zF5<<iKMsE&bDGl4X(Kmpt=;Qe)%1s|UynbM2je9&o8a`vGK(<%iTr(4d5!IF(x0k)
z9sHSGz@N)}?wI~U-V=W*kHlZelknH_iTE4&x+>4Fa`>Dv*4c#5(b!R1w<G>e9$4km
zs{B}$x8gG+UXXR2@elG89NV0We^mMJ_$RqFpLfLa4e`$^ug6Q}2K<Y>C;nC5AO9v#
z#=pxa;XmZ?IZpHoRpmcdIm@~ISZ5?o*-Wx-8cxfzs=T<$tvD|o>+FK#xEEFVWz0gh
zZXM2}*2*~?%RA#1D&GTh(TH^;@bdBmyn-CgEw_}<p?pR865L7-=Z#mA=TaX1PL-GA
z++Zy4T;;>?${IJE=j4NQ>z<%|Rr%8@*Kv+(HI?s&Tg!)4m7j=LSNT718~HB0h8)ht
ztttPD^0nkQ@Y?bxn4nm<F6UwRVBfltRlc;!bE_QA?Zo<Pat<MSJmz5Ax>NCb@-<a{
z4zI8BAMplqIM1-5+>!UN(czpxba-DMePLCd*_ewZtb4u6Ust&$@5>U^*`mtfy=^S-
zQ&m0=*Qx$_RldE-bE+KPGj6Q<;l1G|^2)rYh~Biy;r$vHP*`^$<<X<6d~B63!<(r-
zsZ4J!+hS=thO{b8$B?#5Z#u@~8Z1A?tD`&~+iXVp-O6}7%H#2Nd&=YSc0J{zR3}gQ
zA#$1WVR9$Rhs#|kFUnmhFUh-79?$PJQXbFm^`tzWOYcK@JeS^&^7z?Sf6C9ZorZM-
z?ax0G9BTH@1P`Wsfa;8<e4sp@^1bCrl=qUSP~Js8n)03G<0&u6Qz<XYr%_%nPoq2|
zPp7<2o<aG>@<o(yBwt2(B40&$Tlreb*OO;bzNUN&<!i~aC|^yUO?hkCHa~W~ht`3%
zcuRS6+)mEmt>hi>*76>B8<}~VZZC&<*g-y#@{TgsPNlb%Z^iZUgE%A4#aa0+oRh!B
zc{$Co89QX_R>MVkeO!|HO~rIs-UU}=u5C_lCv!b>dV87cmeZZ&X?O?uI^0=)2=6Gr
zj5!dn?rpr2{5furf5AJ;Ejh01DzAgNxXHTBaCe#Co%Hu{MI7H-b;2=g4LIg&R~$37
z7mhjF2gmI6$1yKMaLfqTQF|`JHHXJ&eV9UdT>ryyY+UD0p**hVXW_VRpO54Ed@+ve
z@Krdjx7XviuHJ&<`gtdg>*OXjFSu@YC+lw!eVFyPjy}cu`RMDd&rfwy|1RrueKmg6
z`a4Je%lf-UzhwPAqu;lFujntVzi;$!)*poJc!G}KT}?Al)_sk4lovA12g-vvW@f`+
zUH9e9JgIe@K1jbTf5Y)rS8Kq!7VIlOkRM~4f1)*J-Ea$Dx@3)6cb;7+oE{+e+rWIW
zJbFX(L-Ow%nZK4hC+1(|FYqcYLOWA7HfQCBaVL2R-dS#AuP?p3%(gCJV_+TgJ+b2n
zx?}AxvFWBe#r~4kfvNMb?RV+eE^!{8?mGKR?6uL|W`D_=fvJ12oqwU5V}FUA%b<JQ
z{t|m{PdCs0l63>a@AxKckgR*%{t_;rw(foVOV$qzzpb6vJfi#F{t}x<bidnQV)KY@
zd7Isd%@?{>xSw7x*A*w5sk|L#gJ<2gcni6Vx0Ji!cJgj`E4deDCAIDVyp22rx0ktZ
zCFvkfz#V0-8BMm8Pr&su_Z%f`bgkpPYLb;N#X0$(m_S%}6E4VHi<uPV`*BHr9GB&1
zF#)oU?O3v%ya;bEzmGe~AL0Ep-+skAseCzGeUk>+ZW&4?JIi)EP%7yvZ-~3eTj1{U
zws;r0j0vlCUGQ%5E_ipD?OVbQ$2#6?Cynw!m~dM+0{4*l-SK2EnQdCqQ$7LjEuV(j
z7+5zQ_m<g?C4FSBuTJ)nZ^C_Lwp|Gu59=Pl{p2U`e)2rLzs&t9$^M#$i}3)Je~t&r
zKj1+!*IOrp<(3xjWQe>v9x8MFdNNGj6c3l%;}LQmvqQFSJ3LbEf=9{S@gZ^#%*MdF
zK6s4W4<DfE57&rKQ2F7MPn3_rljKwIVe&LQS-t>IkuSwZ%GY8};9GYSK3e8HMskci
z2OlRtj*pkQ&O13#UVu-M-^5ep5An(J7nqHib!<A5Q{|TS@{-f!Hu!XTeSC(z89q~P
zkEh8Me3slDpDp*q=g4e&lIijwe6Gy3(aCx8M0~z{G@c=!j4zP6K0CQko`L@%UxqJ|
zxm7Z`SmrwR<Pv!{zEqxrFO#|5F1cKO9$z89im#NpO)I%d{t*9D=60s!YWYWejhtG}
ze68FPUnjH6Pp+5O#W%<tIwUjYt?-R<7T+Xqhi{e}@GbHl_*R)i^Msv`b^GJn<-vHC
z%=x9{4*5uYr+g~DOXjUYGF!e3-z{@#S8|WcC05D3GM73f_sete12UHcB@fD6nv*;v
zb4g9|u*_vB$s;nCZX}P&OYvj!3d@@xm)FEk$aVNhxdVPmF5{==PPo4<9P4`FXH|Xx
zo-Yr@|CUGN=j2KFdHG2Ef_yAKP;Jh@|4})It;s7gr}dLp<(u$AnbYXWYx2GLb(z!C
z$s6+1c#+KM;N(qt0e(y7)MxUx%&EiV9hp;g$-6SAz>@c5PAw(x%bc=F7R#JQNj{J{
zwUK-%b2=dTNak%)vP9;sPV%wLTan}wnYRkbr!t52$!Bs8{JGo*e<AOWzm$jIuVl_8
zCSS|r@Hg_|_*?mS{GEIn{$4&C{~%w8f0VDpKgl!k&+;t1RK6GgB0q$Gm7m7H$<N{6
z<yUbk9R}XUyg9S(16(72in+ndx^Hj``6s-b{0HV>&AR1Vnpcol!`#Sd-MV;1xejwc
zXC3!kBrC~Tyt2F<UPW%etIE4$-Z)y<6StQ4!>h}KaT}R?F_JapiI_JB)*X%4lBeRe
z<+JcQ@`ZR^`3l@tz8<e9--XwgAH^HU^YDi9t9T>%ear!@b=-@Q)XCrBjpe0y6FIe_
zc~f~s%!ee_t&TUB+u|+c1aB#CjyXWKu07sL&f%@)?eI48&bYnYh&#x=FmKAO<Gzf9
z18wUD;d*%#&dA)Ok!0l~a85n}=Vk8ENVv(-y0dUmo`Fm9rI-VG>#oKXnfo=8?PTuJ
zNVb>f;7;;WcnA48+*w|Lca-16yg9ILG2TgDf)CQRk#p=xca^Wu%FGD~>$s02*;QTx
z^Txuuws?1$dpeRm<jrxT+#Yk|qjfplL+*t4k~vqO^ptnUd&@mBZ(OX~5BHV_V{X{A
zZWP`}9*_IVoZC<Km5;^!<Wuo}@;P{anfo}B1LUi4e|aW8P@aVklIP$7@-uj#{30GC
zzlsOT?_l0+S@$vK1dny!;9>GoJY23>$vi@Cg%6fj$0Oyoc$CaN9mydw_i-en<$63u
zF5<CrXFN{siaE(--R}5MxhLk0pmqK5M0pUNB#*+}_-WllJXt;hA1-r$M>0h|6(1o_
z$4AN+;iKfM@X_-1_!#*%%n2~-?!m{&598zIr|}6g_je>G$_wyG@*+G{=KhZ4WSM(9
zl2hcb@u~7se41RdviWqmB|cML9Z!?n;<MxgpDlBLM{<tb9#5BZ_*{8Ae4e~BK40Do
z&yf4$3*_PWLU|nihdc#eBp-_}mQTZ%$Y<kAWj=dKE|agum&@G8kz66)iLaEocO$t<
zejNW(ejZ;fzk#ojm*8vV@9=eUY8CVKaw~j;yat{rZ-8%<H^Vo{+^><`EOU=Wa*NF8
zV#%%YF8DUNC%#?ohiA!y@E!6fe5cH3XUSdiQFyjI72hpS!}rJ+<9p@n@qO}L_<s2j
z{DAx{eo%fD&ynB856MgL!}1sS5&0+lsLZ_;$z$^J_;HzgE0QPVb?}oi=gg9)<jwKZ
z@-}#`oW;+`75p!mdn=N8@^1K9xfh-<AAtWY55mvM2jk~u?x9FtkdMGG%E#lE<Wup>
zGWSp<3*-y%f8<N?EArL&RryA|P@aWflkdl`%a7wX<av0J{4#!1UWDJ0-@|XqOYl4L
zSNL7|2mGGA6c5n8we@P|k5tZm6Uh>pbC$`+GWSg+pUB(bPvs2$OfKQi<<9sExf}jU
z?t#CS``~Zn{`gyYDE>|!gTI%#pCb7|J{JEdPsKmUXW*aZ^YBvnQv8d|Jrv2W@-6r`
zc{cuCo`e68pTwz}ux+1@)AB-GBQM6a^5?jP{4M4rpLM_D<>lpCn^%xm#eBG7-P(9X
zc_Z9P-U6>AcfhO2Ma%^?*6oN_lXt<bW$uqiR+oF@HgbQwhCCGWWmMLU#%s&m6Or&?
zi*-lib>)+BTls9fo_rx*U%nD=AkV~{$h7Vbypen_PGs(PNb2Ng@W%2BcoTUc-c)`U
z^Wl$mpJ2W~!n$uTCrYhbino+&RyVhkTj8zbHh61!J-m%vhuh2C?~rtm+vAQh_c$b+
zh_!Af%m+}`agRg7#ZA`r#94VioRbIPygU*Y<U=tZURifI<_j>a;~s~kET4ia@;P`r
znR^_P?d8icAADJNJ?<>uhIf=_V@?=b_W<5WehfFr-0zU=EI*IC$_sHf`CZ&y{up!O
z*}88qAF^5Z3*JqxZDZbD<{pP+4|xsTC~tuGlsCsc<PMmV+13?tPnmlelD*|!a4)$h
z?k(?!`4SQ924Ftuvu*_LD|7!svaig23Q0ft6uh5&F5X|}euU%z`DV-qhSuGU50oFq
zoM^Z1X*@uF4iA*M?;sf@bL~VjSbi4|k(c11@|Sp+{1YB7r`IrZBHy|d@WFCxJW^g8
zkCOSUDLF*m9FLYe;xTd&kCi*&adHD5FYku=Ak?~^c!Inyo+xuaLNZC_9)#pD`A|Gr
zJ`x`;pM<B#r{g1Jt^-MqlrP3d$yef|<s0xZ@~!w-`7V5%d@mlT{oudxRF!iNLUOXa
z2%jRqhfkH4;L~KTGf7UDzr$z9zu+_Fnl;U5$t&Tr<<;>ya$7uI=5xQ~T$%e0lJn$x
ze7;=4GvuA{1v2*<Bp1qi;(y5d;EQDLFGwzyhvQ4+arjdCaD1739KKxUo`U2G`5b(u
z{11GU%)JB2Kjqu;)$)D#8u?*-tvnZBC%=HNm$`Q!xk2XMfn=uqF}_j$8s8-Ugm00#
zcObb{ZiR1?*TA>S>*HDSruYtd8+@mn$Ft?_@ZEA3e2=^vzE|EG-zV>fACL#(2j!7?
zjywTBBp-zzmQTWu$kXtnGWQE4kICF4kUTD5i=U9WM<97pz8gO!KZKu_xi27@EB_lm
zBfo<GC37!8GEe>hKP!KZ=gZs|ko;Tz4L>I@x3>9tc@_MEycT{@ULU_Cx5F>XIlMsb
zg#ROV!>`DD;8*2+@Iv`O{F*!*zb=o(Z^)DIBKa8nrhF29OP+?`me0fQ$d}-E<!kW!
z^38a$d<XtOz88NeKa4+;xi=wMBG1Pk%m2Zj$nWA$<uCAO@{jm)Ikk@Y3%M2kQf`gE
zlGnpu%bVeE<gM|yavpytcgEk#UGWd{-uOrPK>U+D3jZum#!Kbn@h|c;{Hx4;6UlG#
zmH2mgCjLX7g;VwcqjlUXk)-9vag96=*UB&B7V;vzoV*zGMHAM2j#rR>z<fAt-S2os
zd4+Y&t>o5tC3#)Evb;IwOXRG};#K7x@oMrOxV78|^Wn2~`{Oq95WI$b2wqd>zJ_Ei
z`3StWd>md!J_WBUpM~4X+~bh&;kI?$<B+T`UynDCxyK>dP`(>;vAlH;V!pu4x+ig+
z%zX{X#xnOcB%8=@U_Lyz?p?f@{1M(<{sM0ye~-76f5q+O<=UFJl2^rB%WLCpWUgmP
z_;B93cDRGw5qFeJcw4zMu9v&wjNFK`axa{d`(Zxtx2`|tLuTtH;EKwR!dwVo-3fSm
z`E=Y#J`e98UxGW!SK}S!nV5?Rteb^*lJCO}^22y%c`oiMzks{R3vqY(ZM=*85#Ck)
z9PcK7i+7iQ#(T(o!D7-VuZa0#G3!>xJ>>Q9Uh*cmr@Rf`Th8HLawptd?uxk}!n#Jh
zkK70Ml@G-G%0n?1O;|Su?<XII_m_{x2gp-#fB7^#Sj+ATJV@m?gmU>-JVd?+50xLr
z!{jINaCtr+A-{wVmfyxB<t6wK`71nH{t1tfQ|p_@$}RCYxiuayuZs_r>+l45D?Cx&
z7EhAP_%OK(o-FTzxxmD_z3>!yAAE#-06tP4gpZOB#z)JCVlGax?r?mpd<;HLJ{cb`
zpN&tDFT^LxSK^c8>+n?hR(!I24?abH7@sOXjZc%G!>7v&@EP*E_)PgTJWc)qpC#9B
zU_M)34WA=#fTzn_;B)1Ae4bp!=gXb(47n@j!W`>%#}~>y@DQzsL-D05AA>KGC*sTH
zqwp2-RD7j84PPbC!2gsl!B@*y<7?!b@U`+Re4TthzFvMD-yqM!GvycYjq>aGCi#7Q
zv-~N(Mg9)oD*uXalb74je7n2~o+Yo1?~pgbcgkDfyX1~|wp_w@%boE(@-FyZc`tmQ
z+!x<3AA}!}2jihy7E|yeDn9`~DxZoUlc(dy<%{qW@)h_=`DXl-JR3hPKY-`TPvB?d
z`S@S*0z6M%grAic<N5Mu_}}t(_&NDk{JdPdk@-b=CH#`SI(}JR2QQE}!vB#s$FIok
z@vCwHFO)mu*W~W_b$KuRhTIP?k_X~9<%98C@_78VJQ=?uABW$SPs8uY)A9TAMR>9N
zPyB&=6aG-X6MrN>fS1UR<B#Qe_!Idh{HeSUe<pu`KbOD4U&!C#VOoD$CFXBc-Wq==
zx5eMfo8TYhcKAoR9{(ig@o=@dJN`}Oz47mIfBc6$5~oyuGUf|ltveCd$Y<kP`4Zeh
zz8Wtl-;S4;=in9OXD}D>S@$2jqWlhSB`?O@$Y|YCyqa8FXKpR8j8~W2VlD=>ZVSAI
zoW*O(+u^n32E4Ys7hXs1kJptC#%<+Ecs==e%*BS*O~V_=7h}Gh*}CiTM)I9FksrZz
z@_f9pyby09FUFh7Utun0wC*>&x!iJN^A_@2cuRQ`+)nO@x01KRTg$uPZRB2<3nZ=U
zk2}aiF<;he-6+f#aacDNA1qJBe2K4hXW@c;Auh^S;*vZQm*rWQi!rU6jYrDQ;?D8{
zyrcX&?jpa1xfs*B?{PQzcidfWv59#Xxg|bCPH>~#4(};<#69FJ9xdBj2m8(k*>*d2
ze;?19O4aelKi0LgKd;jsZ%Sz@Rd0WFI|Qc6*7G`@a2J)+t2;pMZ#}Ow5Fe!Sq1LM#
zD^H_5PS13FsLE$puWqh9pYmAe1w2pX3#?c7qP&RmSmzzggVrs!zq*EWaHI9SPEXuT
z<$bJI_rA<WwqEB^{GrPEsI~6+n$S*r>v^4ee3HuZ)~hRMo5SfpufwUmbXnz`wyQf(
z=9Gum;dDlNpvpN_QTGqI(RyBow+-n_RNlvWbq~rjD37oGBK)w*IaI3qQf4>ib=XCv
zzfn26pSqvruPBf0uxU>Js&Y2Fbt`F|VKeG=*hHpRRXLl#x_X)Tc^!(<Ih7Nwy6xmn
zl*i{H2I(DC-qm__JISopUWe<M(>!QhAM4faDsyS6*BOZSQ29{n)$JvxI!-)d%%nks
ztv_jk`Ukrv4VyA4)p6*cNrO@y2Tz=s>NsK8=s_JR?bz%Gtp4<)Xn$X=+3%zM9~GDV
zRNCKHZ1$^Z|D$5FA5i=InoYl@_V-o(*YBzQ{aF9U532pI5tsc!TKJ)|KmUT;{}}QA
z`f0WQG3sCb%G&>^|5rb__J39X({Hc+e^ze#8MeQ#@4v|Q_cfON65HR`Y5GyNrZxV*
zf12&jV>kPiw!eI^*{`$xWu2y9Wz(a}etyxyIBf7?BL)l_Jb1#e$uW;A8a-~v=#djA
zc}Qcu34_Lt820C~31dh6cg4~6lZD>6rQb>MfG|8{+?X-L?6>=>r)c<uL1Tu6jn4n)
zKlYY6#U8^h_YPe?_PwXQiG4qo6<}>)b&sLfq3`v!G}|S$|7X2S9H;tudsvxw-X8mN
zwu)Wi1CzE+r`Uh9Tc@1AmF=&e{V|TWccOWJ`}5A*>um+q?ai|G23i^IF|N0Fg1Ndq
z_SX~a&pU7LXe+30uk|*|+G9R=dpDV@+v{NiJ-xB`7=zc@Uv+!qtv!xom_EBav#Gt8
z&DHH)VFR@3o%1;>sBZ5nYmdwFXpi~k)AyU1aeV%<Pq(*1O`W&*la*ArSMHDw?a<z;
z@iE%1vk|J>Yh^1A#~$8!d+Qsj+v{rW{c4qHueJU8^!07l9{0Dzk1|7(-rnBL+UwFW
z9e&G<_Uz;HruNQh*4}~@?Dx9<V*1W#*534Om(9O5tJ>pIHT%D5{#|AZtKP$6<vd2m
z<#5%nw_PTk;uwzUvyXb3rmxnfrMkWOcD>zuG!Q#)k4u@V+gqGnw*GPK?DH?ztUbQt
z*Je#q=j>?ps@v<DOQ)t=EvC;-Z#K2ZWebes>&qg$?&&2P_RiZouvvQxti6F&iS{<I
zKcBvHnzeVEE&QeSxOd(jAGudgUp}8sO|eR}$NK8+@o{SP^zogaJfC;o9v|6Ow|9%R
z$NEcqb@u1&@iAa^drw+>S$o_&Z;y`}tJ}NJ+G9D;-X`|v?JZ~PMs<5XSbG<GW7hZf
z*pODY_ky+O+k?%j+S{~Qd(&)XXZz!wx3_b%dVJ?5?R)3-IyZaXRAJeCVH@wSgSP<H
zuj8V>Y43n$?X6tZ-d0uZajLkwz03Zlz2lm-w{BH?+f=p3X;XhqyvD1nJwBWA&L88{
zZ1sHJ%-XB7^Byd>4)*7-m(!j;4sBduPu5U11O2hbn$>%CTl?J=HW;z<dUKjRZ`VHQ
z)U~!P;(1xl{=A&N^Koe6#IC8-qab$v7^essr%NnfazHxO!q!RJ%i5o}$LTR2hpG+T
z?7Q);o_GEjr{JpF`|QAU>a^G%#|qvar>=Y)+E}`a{if3<-rBOqmNsi|(!g};D|?|#
zU(x=&J>I_29`k@MGb)whH(<QuG5$D(R9)||3ARn5Aa-7lQ#IA~j+$uSU+tBw@AY`k
zS2cQSy48!PTS9GnICPwj!Cf?%8hUOz#YgJAj_vJ_$Jmb0mK8U3KOJuS{mJ?+hTUvA
qQ?IrC*{v^4$4pe-^@~($n@&ibPm^sX{#38ujC3l#{R|bo-v0w|J1+A8

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/sprite_pool.d b/lib/libssd1306/bld/sprite_pool.d
new file mode 100644
index 0000000..1e0dd04
--- /dev/null
+++ b/lib/libssd1306/bld/sprite_pool.d
@@ -0,0 +1,19 @@
+../bld/sprite_pool.o: sprite_pool.cpp sprite_pool.h nano_gfx.h \
+ nano_gfx_types.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h font6x8.h \
+ ssd1306_fonts.h ssd1306.h ssd1306_generic.h ssd1306_1bit.h \
+ ssd1306_8bit.h ssd1306_16bit.h lcd/lcd_common.h ssd1306_hal/io.h \
+ lcd/oled_ssd1306.h lcd/oled_ssd1325.h lcd/lcd_common.h \
+ lcd/oled_ssd1327.h lcd/oled_ssd1331.h lcd/oled_ssd1351.h \
+ lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h lcd/lcd_ili9341.h \
+ lcd/composite_video.h lcd/oled_template.h
diff --git a/lib/libssd1306/bld/sprite_pool.o b/lib/libssd1306/bld/sprite_pool.o
new file mode 100644
index 0000000000000000000000000000000000000000..a7402b887536f359259acc21c4e3a0a256c8f60d
GIT binary patch
literal 36140
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
P_1@cn@0^_mtls|vRP&)U

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_16bit.d b/lib/libssd1306/bld/ssd1306_16bit.d
new file mode 100644
index 0000000..0969b28
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_16bit.d
@@ -0,0 +1,14 @@
+../bld/ssd1306_16bit.o: ssd1306_16bit.c ssd1306_16bit.h nano_gfx_types.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h ssd1306_generic.h intf/ssd1306_interface.h \
+ ssd1306_hal/io.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/ssd1306_16bit.o b/lib/libssd1306/bld/ssd1306_16bit.o
new file mode 100644
index 0000000000000000000000000000000000000000..434b94dd471c930bfeef613a82e714cf0e20155c
GIT binary patch
literal 62876
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
C%0UnS

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_1bit.d b/lib/libssd1306/bld/ssd1306_1bit.d
new file mode 100644
index 0000000..6f8b05a
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_1bit.d
@@ -0,0 +1,21 @@
+../bld/ssd1306_1bit.o: ssd1306_1bit.c ssd1306.h nano_gfx_types.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h ssd1306_generic.h ssd1306_1bit.h \
+ ssd1306_8bit.h ssd1306_16bit.h ssd1306_fonts.h lcd/lcd_common.h \
+ ssd1306_hal/io.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h lcd/lcd_common.h \
+ lcd/oled_ssd1327.h lcd/oled_ssd1331.h lcd/oled_ssd1351.h \
+ lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h lcd/lcd_ili9341.h \
+ lcd/composite_video.h lcd/oled_template.h intf/i2c/ssd1306_i2c.h \
+ intf/i2c/ssd1306_i2c_conf.h intf/i2c/ssd1306_i2c_embedded.h \
+ intf/i2c/ssd1306_i2c_twi.h intf/spi/ssd1306_spi.h \
+ intf/ssd1306_interface.h lcd/ssd1306_commands.h
diff --git a/lib/libssd1306/bld/ssd1306_1bit.o b/lib/libssd1306/bld/ssd1306_1bit.o
new file mode 100644
index 0000000000000000000000000000000000000000..58a2c5250277f3c5985aa5940211d4c5f9f025c0
GIT binary patch
literal 195580
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%0DSHLq
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
S6S4UFdg45mF<h?=>-!(gG_p$o

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_8bit.d b/lib/libssd1306/bld/ssd1306_8bit.d
new file mode 100644
index 0000000..add99dc
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_8bit.d
@@ -0,0 +1,15 @@
+../bld/ssd1306_8bit.o: ssd1306_8bit.c ssd1306_8bit.h nano_gfx_types.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h ssd1306_generic.h intf/ssd1306_interface.h \
+ ssd1306_hal/io.h intf/spi/ssd1306_spi.h lcd/ssd1331_commands.h \
+ lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/ssd1306_8bit.o b/lib/libssd1306/bld/ssd1306_8bit.o
new file mode 100644
index 0000000000000000000000000000000000000000..b8d6660cf25a6e59a5da6496e7828c8fafd5967f
GIT binary patch
literal 62976
zcmce<31AdO{`Oy;nS_Ld5F$swzziYAfFa2o5D-NOhp15yJP?&|BoGt`LXblgP((y-
zL|p|@*K57kTh{|uUGHmkJy*eFz1M5iU3b^@eV+POb=NeyzxRFrN5M>go~r6^o!{!7
z=}GtUQ4OO#&r>#dYJv)sQXhY+)VWAZ>kO6ZP&Ha@+_H1aty>=6^1_zgTfW@#)0U1~
zV_RR?x_j#+Z<aU4`^ej~S*fq^%G>rx=a-`1w^r}o{KDqg=8l_x+Vth7-J4$6^zf!z
zH|^ZCaZ}!fHplDU`pxUTylsVDV%grePj+~t=Wq8s)8nOFwQGa7(EGgb$6jjJrmae?
zz$<s#4E=BRX)DfJeL(%T(fBuFUQ12W0rU3EL;4h*r{F@R8n?7=S-$0$YJG~g#QWHb
zqrM8S)2e!RQoH6=t39?(*P=e1_PpEq>!|nDQQl<lrh*4cCsmzVrFMPmt=v4;Z|%xH
zYx;O!o!38a+x4CAL#sP=>;y}X_kXp2r#)Zq`Lf5?XvK;ewaeQ5rQTS+sdZB$`o#9^
zVsEWih*sF1%iU&EGGjRc>P7Wp$1Ts@^Ugi%&#~nU+cR#@ls)tItk|<@Pu{jT+E|O%
z6?ol-7j4WsXX!Z?oU{F$^H*NF^2U`9tn@CvGVix}=bv-wIX9m3z&RTa**W&su@8?8
z#<Alj`;To1MsNMfylrUX9`-qFvun?bd%jrt(@NGLZ`&8={&emNl$f{8)=c)6xzo93
z@7ybEGV{hzmYr*#p;xS(;o5#dx1Q~yd(E|=c2aili_|V_<8#M`)Nxn0m)b?YvUcqV
z{hW>eHlvn#7kHn-7Y_28dMs=|rrQayd7#(QV@dm6U0=$Heml{-spP@jQ#zj!RbM^d
zWp{S;+f6kqYgT(tRli<+dH;?5&+?wCdA(+3)n?4G<Gd?+{I<Q$`|bAr>-)EOc{L?9
z+iTX>eB^yn{f}zNwYuQq(zTs0gT1vSm*tAh-WT2NJ+EiZ#xI}j@p}7$E<I6_ZPQO7
zALOjd-PZeJwQFs`Wu>b-UkqETOD@ipy*f6=#@_2aVXS@J;~(v%47JM}*C|i!3a<pS
z(F3p4JYKUz?{Q?!Nj3L)f6#oLcdtY1(UNeDID702=PWwIyWji7tL}0LYCp7p4SMI%
znm^XGbX$Va9#qq}<{58#&HS2{eV624;IW=|^se{rf#*KoeRp2(i+1gt=RLCXtAZEt
z>Qt_Md9Rtm9tn^1$~_-zzy0OaW77YydR&vSda!TjdTQ7A-m1;Ep252D)0Z#w*xmlg
z&Tq)-fz{+FPipW1_Tk#mY0v-8`jL0x&#lf&y%Vs`*;4bieY$;$_u2Lr3;u~0`lRaX
zDz4V=MzPNQY~R=wJMY5(IJM8)*88Hb_q>2L`rTZvaCRoVu=V#fA5?!`HP2s1uk*P6
zJilX#_reaA*r7@le3AQ8?%t)o;2$BJ@xZ<-_dMyBV~+yCN^iY7SOdAXZ9L?XcHUPH
zd997h$5I!p?76bv%Gy1Lt;DK`)o31GEAZNc7t`&^)^U@am$}>awp>!PzSjG;Xp2&O
zab^9v{nk2p;;=uh2CJ|sYjwwqW3~;$5H}95(fb~s&(%VGt9CJN3SKMruvR@_N$vW%
z_Vit8EuOva=DaxesKx8-Zd==_uN0^VuTJ~xJbQS2;!0!7or1J^c<EGZhv9XZ*Lz$d
zue@WT=O-&~@`jH)I`62CNB8_}CEr<o5ss<~um7nZ`>woTWo5_I{;8O?em1(%mb?-@
zrgqu>b5~@wr)baln^)q<`J@+&087s8*gX~;{pXn@{L^|>$=#M!tW>u0qC8FM%eS6<
z3y1bz4x@Cgth2ff1;_g1t-Y7a_<mX0v*xy$<P}{fG9{}WQ`$$fxse^u?mAybNlLCx
zX`ic=&JcOEo8C27D^q6dQoDb2c!yCwkI<#$KZ=M0dT_7o(eL3s4=?lXY0i?evk#9v
zhJ>!s?Bfr>X<CH2vQOy1HW)EU3r|u`)FMm7Nm@jVp_3zDV4tq}*|RQyp?HhRKDAq5
za<<MJl^y43ku74b7C9nXJ9FoDB2LpHPvsAWVcqoX1(7<Wcg@Z|{SCjii?sn$+a+3<
z+Ah_?)b<Q*&DM5VWIGJxU#Y8{lOC3ZDleEfOXUpK`{)Yf99-}a(#2TLa4jN|GP>Xh
z>>(}48CNg`LMojzQD@6j-I$@B?#Fyu@22zU)-}MW${&YF-Kd-sBA=ozg^bOaT-uCy
zJ#g((*8%q)I2{ww?@_VPZfN98f3MNcg!VFdCPeN)Lf6jiCQd^ebTitWSi~ZXm|S!_
zSbD47R4rt@+RZOmg#0o@?Uw2W=8Az8x*yt$I8XOOfrt${rBKASg7W}HBCamD7*MRb
z(P%rC8N8`{R<0X!x07yKM$H}Cv0W;E9Z+{$yK5q^Ax3vwyBoT0N4#dQPbcmvTwcTx
z5Z<qtWeHa}ynnY%=>96CsoXPj+QGOkx*bX7bDrr@%)PWd?UpfJN9@Zz7I=AD088-l
zwqK6)oW+Q*xR&WA<Sao<G9zYs3!;Yq1?Fv_0mO}a&qiR|kxZLjPRmwr)>bd_Yp+Qu
zU3QC?d!EVK4_j~h$1EFmTf8#YZuMN{o#GYPyxgUfZ_F;1>H<sCP$6&oF04VcROjjC
zjJX+l^KGcdKFM0=6;U1HiTjZe%J{Ybd+Wq{uUL;FBN23|1t?Xw>MM+xmosClH*>3(
zwfS_Vx--v7cwLPBYbd;lUMF_1-mx2}d?!Y)#G-ox@_1g0S1ZPT#A@l~Oxfy9g|QXL
z(}x-R>E4|L^0ps|opPols<$05=Fruw@(SH*>Q+|UR_YR2>0U5^5-|WRQVlksj*(6y
zbjyCeGUd85#kw+VLHT0UhcnU)Z21yZtEKda+K<)iuJ>ut`*cPVF|)dRWo`p7v$}iz
zGh!AYW>7{<3t~pNF}m5MUf~QDVuC)vwbT9BwAE`yKb{4TU?N(bwH#Yrr4G7EOBubL
z4b`)@gV*O;<}|^?Wls1-s)JY07TS>0f|#*xjM;B0mq{CRRf{sKs%Hvk@5`uw&ajWy
z#~nf&=eF6jCGevbJ8&4%8D37%Xw`v*f5Erg@bb2E>S4YiZhyC#5;f3`%37qp80|JG
zt3`b=!Htlen%yQAPn*@IzRK{U3YPXYt6xC+CL>Wd{~$zXqh7^}7OU^~aZA{rd+6PM
z=;C%jE#uj1l2+<=n2B<;BcqJI?HP`_?wPj$Y7<`G_D4{Iti=iSR_}~nSb~`9jF`nq
z_12J#m?elA<HqPZe3;>i`)q^#&TVRUp3b<>)gs>)X{u+Ikh9>3W(-%LZe8$FFX!-m
z9A4h`$J$F(U*4;#FYi^=m-njb%NbSGi^3cEN*x8Gc4^L97AyrT{L1JB+s{A$7xKf^
zbe<#730M9?p1>wOvyv@i_Me-@D0G_Xg6nk`6vCst?W{3J>-xRA;QGC~;QGC~;QEX%
zC~jJ;ZqR25tO!GK(-L)KW=!+^`Rb;OsC{Ol4j9qjc90Q0UF7XXo-6WEBQF&Bm`L42
zhhPfci)g>s*ZDnw0g$5s^Z4nU7iNmAKrQtQ-og5g#LL^xE@YqVDAN^U0zwvM@Q#{{
z7|h@u2e~n3`pI!QE2xIMoZ$E*C2pZrDe*y5;+DNi+>%)$JY>r+mxyBg6-<{dliy32
z5-(th)p&W^*&kVp)dd;nBw0(;1sN-}UYRa9xIgzZK_3&6PH(z}hT19JfkVYg?5ulv
z6|MBc3#Ua=gH@r4r&jg<#UA}HMTv7S&!K(3dD|a_eeDqhIWLepv@y>bohOZRKi$T*
zj3X#UL#ai39}4$Fb~}l@T04hGrlV{9qhoaQvJ2s0ddX?kwd$%%jN)_v{ocBt+eq|#
zYa%0Jk!l_4F5oz3v>xF`=vuc<+&gNndl=E@9=q^vYyC?-i1;QiXWCY8x;~$r=A1Zr
zIg__~jdJXl_MD>I(?hq1#?hWrGLC|1&nc-;drleV))nnJ<w!R|x960`|EtPptw8(!
z=eolS&=HgLJj7~=DRN$suKc8skEuzS3*90$X^dM}RDRO2ZiKG<q-lFcEq2?ZPlQiK
zk$QSHW*ngHan(Pg_x;#)sVx6^JA`eyTQ}k~tbw`$Lo&udqQYk)L&9ewL-sxs8M618
z$iW#W8x<^kXn(xvmK>6isLw<OBCQei;+e>ZjD`khBBL|TM8anlShrOYFXau)y9kzg
z%~usHvDZwM(A#P1AZ}$wCU6pf(`UTA?YogXYrabCr;{0vkcHi9Ga{y`#1J<^rI^pF
z(w1<zg{8E_=+j7Zj)>^PR94AZI4#Y}R*~ETdwWCj2j?HQPgb{k>bv1{a|abEJTPD4
z2H}_#?dn8eps-V6c&8j|DciBsE?XV84|-*ccP7@6yh`j>3VZF#Ret`^{0LT}{EjNW
zcNQ}hq<_Y0hidPT?zXVrIs13-<Q3-(EAf!OQ0F(bJf!<U7_*KnXF1Y}tSz@Pog|g}
z79)MHX77{lF|Bh(8pg)0LcXoR((cULbssN3U-wk+JnC*;y!~}TiR~h{0^RdHR-YMr
zM7^QC+v%3e?z-rGgQBqC{@oATN17{zm5x!;x}IzZt@N^e-g_WB9beK_=>Cpl0CW8T
z?2Q@FJLr(!9Wl@t`m%iQ*lx7a$1OGJV=1)UFXHMfJ+Rnwzn|ZMwkm8n`Gb3RV2$=?
zDL96)%4d7sIXHbgdHWUalOKug8#}gJC$9*}{mg{GvG#y2YJUu6l_^7y@BSEFTJN73
zdDuP@U9Cqfe~8=HHM$}u4qx_4*DIB%_UzoYLrKfYOv{W)Wk%VNz$IQiwr1k7C)G9j
z2ppxS>7WlSQB`dGE!w3dij$h1Zdw;}?j~t7LTPd&mb9i&nj9k}ZJMOPFfL7-QVVUV
zg+)2Dw|aB7deNdDk#);=M&p%wQ`yhN`xmgyp3$t@ozZA#^L0bCb60DrYuv=?a@Y*B
zN8D?P#?#)^XnK%tVRX=YS>9BYg?zrv#LnorrmO^Os!ydl`m0c2rwi<KnPfZZ7qi8X
zE!JYQ`L&37GbGw{qf^0BuPIu3xHma^_&Ds=gsQZ7lbNoAsbkEW7LASeW=BUe(=?rF
zHr7To1Hoic1t)FwPTuOtc|=r|MwX#Vd!_XzJuoBH-LH@B#6C;+s(2qe33QrYdsAW`
zb3zvFGtiv9L<iD_nGjCh`j``kXrGgECT;aj#E_pfS(-9=sfjT|XKW9&gFLXoP7>sl
z>GD6dyi7N_vR-fMM`pI1eP+rCre7)N9TN1w=HYuLr|t*a{yF$IZ?6tI*mjU4hI{BB
z+d~Ik@7ac5?`b>IN#+L|rb6Ymo63jT4js0_i=2gVT;Z*<r-;#2-W57h*HYe$flAwJ
zmE&x$ja!-{^8&lA^DM9PF7a${;=reau@Q$WMB|g-Gfk)9ZT3?5i|LtV-to+-=bg!2
z+J2deFI8phRN2mGX=&b4wM><YNV-YsgB%6F);--GJ?)G~sjXdlkRe+zGfFVUR@*_T
zPU<m<CJ%GHmU&IiB0EAwy=<TMD#JcAc1Fu4n;31{<WJfmOAa)9O2L7}Qaeheaofr9
zGHbi+DBG=J_p~`w4?UozwR%&VbnD>Px~FYl&j#Bm4fK7pMzcz$zCCUGdXBV%KXR;%
z8_Rt%*Y2LSeLZEt3Ae7NZC%eXw#H+|+I_UWU`-G2JKolMyzSZO<Y_WKEvx<MyV_f0
z=U#LJenntA@m23lpWpO0WMy`Ylw}${%{H)QnQink7?p1u#Hg9{+Nfb|RKBYAYwq{s
zG~31&7&3=9T|2X$YD0##A-fj+oGEh%Z1H_>DU6y(ZB%Lz)kY0#qf%3C(lqsQFXy<e
z-tky5ukc>CY|1oQD(uoywbox{F7%$Y3~v(`x7m3Vt!m(V!v-&B;#ThjSl2rUXIk%W
z2eo^Z9jW9<f084wG27jCfA^8Wq@yX5USfN-q}GmEEu9y~JlJ!F#kVIP)1um*Kk@xk
zGuXdWtN#Zjcd;$*QmrR1P1#lir$tN)ulJpCH1Ax6RkMnznI}e_tkq8a_OjZ^_MJ}4
zbl7s7Q<Sf<haPjlaB8Fqq$f;osjgX@7e~9+6^K4%t9L3!w{8$)2i0fB){jQ4+q!&P
z$Na8))iK}JQKx0rG2f1@PRnd}zMc3w%`6^f6pQRkC}Me2<YdvLb+*e-XQoZgNVBJC
z(T+X#s%J-APn{MXp^mnu9fQ+I+Q_VPM_XrY!(Z@B%?fO-3rcJqOK2mr{(Ws<_C0H_
zI`*}7)M<Vl{aM!6*0OJd_3ei7x|Y%LXZhz#{&|qIpIK!3_OpkLeq;1$(D?a!Gr!Ho
zx1Gg^@cD8-+q8b;?7}dP1y9+@g6;AklTg2#F6n1GqTfMwkr+S4+L|&gvI3_t(`MU<
z*=ITH2hJvpk;3*Xf^&(&BAiRCFy|6QJ)9(W!Vb5cJp69!A%U+Bx4kThem9%qhS^RY
zcCCM2bgifD{M^Y|rJWO%BW+_xu91_oHTeCZja%zom2q-r9M+UsWxJqiqV1=NlWk8=
zo)=k+ewuf-zbLQuHh4O2gLkPtHfAp7a<(=ZOU{hN!HL>ZIZ^XG{j&*Ec24`nD!$B|
zs^ygAty7CtDfG^02?YomqQcFW92n%&9q-RIoRdY{cgkA4JX%$YcXw2DQu$u9J_jFz
zau}VtcobsMEMzo#{S}yzPc^}ZRep=ez^{uK_yrV$&A~6|82D8w1HS@hSR)&mU0{A8
z&QL8IeNlio(r8|)Vc=COhE1~3mm-P$T9Cn>iWZAhlgyS^@EL45{NQcF3xI4>WBr|B
z6hCMvuad76qpBpD9B8=|pH(e)j&?3nxYVlDS^B-belOSWQT=|mr#C(HdsqFwMxt`G
z=%?SS_4`QYeS`cQYMhSRBzxQ@o25FgMZXv8_euKwJ=sMpmZ*dA9V?r}PX}3^_pibZ
z_>8Y-JNf|-)6<T14~Hx-meo;z0~n;}zSAR*i~A<%0oJ{xvOSe8sc+(wdxXEv@v^gX
zB3@oxd3bLRi66i)+DUDnmxFl3czL<Vrt+fty})vIc4Rr@vODBN&dAG>eG9qqsIrS9
zXSx>iaw6H<VxcL+w}@iEvWqr^^3VrCt*cO57-g;Zu@z*!Q7!D2ku?!y?GltDB}n~Q
zWA5D9-#O3r&HxYX$uKv>?GP`o95t1C)Yy7-FwNku9y$cgKo+0zWolM5niI)lf}mo5
z3ra_I5V1@*uplQAWnSMtyA5^Cw#{L8d%7b_3G9?&l#9MVk4rapVgjmQij_San?*U1
zC843o(-vV`CI<#f>W1p*7`$^fbdrWhITDu>S!(NxA~~%(=t}8%;7%O&jJASz_K)rd
zJBeT-qvJmfdO%N9bQx;`8+!0$fB!wa_m`o)**UsC{vJ|?@P6Nh_A3&N?zjD6C$G3q
zDeM}@$wsG3-!Y=A^h8v<mhB1MRyYXUAaWL)!adM1^hQS8f8x$EwCMDVq*b2YiG!}Y
z1?|bkXiCBOVV{h;_GlP@ZQp-?siQ9lS=93=WD#}|ZMpz<{q7`i6~NR8cjcClT`U{4
zsy8yV@GCn#QL@dtpbLOSX@#vXJL^n#7RqJc<(s-87b3%@?)V=|?fCyesn>@}Ek`{o
zO+De;_;DiJZI=RZ-b%X|U@VbN=h7p}rAoXy*Ny^uptH{4I3tEutip`#vC7CP|ILo%
z$2&XIE<z+|E)lW>_|sS~Ga2)%nCl5E+SS$!F?ylNj@y`CrasID3wqhh?jBjJ=S(Lj
z5u@Fc#!x=o3-7*bW|t#dR%90IrOB^hp|0xxT@C%^Gsa4=x~yVvE9g<WzHIT&)wiFn
zN{((v71^{{N9)?7av8q*a%ficKr`jY;Bh*DUH?Rd_L}?BD{ztwyKnh+k&YEg<_!nY
z&KShY{E(4m603|>%XsjZ<bm1fTuE>idF;)u@%LblxO-GMdt@J=P3iWVOnPt0A|A`0
z(;d#@YMlHWXFLCN0h~?r@x9MQqPj}3B8v~#9D0<ykYW~vN8k&;r=*YKy4Q6z?0o(I
z<?zixDn+-V<j_0%)~^X0$GZI=AJ+YoA~SMukpI)edv@nYj`2X5Gvb+?Ik0v*{f_md
zkLH+WNIvGky46nC+>VdQX;&Jt^<Rz^>$Ch`&}*Q03caI;?HwL0I5qsE-rjR0JM2%a
ztyy_7UpS5Ju_U_>5`K0xm_;XXG+2X<Mk7{QjL7gj`&Fp^`XHx$lU7)8iQ5jE)$L%H
z?A?yclLo(Bnz3ix?!3pTMz}s#XECeHCV$=YOY~#71fdGyy>AG$rr52&-~V>4k(O|X
zb$NJa^Dv&-{BVJ_J!9><CuAE=>#thu`YhdB-ED6nMjYNh$MGWl^epsOzKL4evgtp5
z&9Ha-U$EELme3vj%VE$Zu{J52!htbsOjIw;W^J<R*yA*P0F!?9KbUAs94vdZ7TeN8
z=o`B~dQw*4F+3Y&#SfOT&dx;wOGb`DJ?Zl#r}S|4Kw4lYcf<OLzja_1Lwb&r?Y!Gh
zgf2+ukq-)K&C<08X_ghd*5sk}BTPI!yxwp)KF{Pwxul#(MEAF@nBPuG$zmVs?0RD8
zBQJK)zLuTR338m*Cq||xx|n!$UU2rrQ7RClvNw*~v-I(yr?H3L$(VH?hh`m`Vfqqd
zw48l!`iuLU6)ju0L?<8}@v@5P9?pp@)7ktF1NlfdDcav{Jwj&$fBWC_OW#xN3^KK1
zrBRCb>-5%z_#3Tx^JmSOI)6!H+tg{Zo7I9@OPd?p)Pm;et#g}#=q2-77pTU@sZCAu
z69d)s*{utjRl|spjmMlYZdBuh2_qA!R6@<0I<t9!YFjd|S<Rl_v=Dy)21~PB=gy4l
zw}o>T%$hm3xhc-S3|p|EDUqrj*f?X>?Aha+r?(AK3+7FoK5Onwb?8yY#z!O)@kFvZ
zSzR0NKWA?L8MCJ@XgN4RZtcI|)LHZTPg^(>s;PA$>U?l231$)fO~k-7BIZnAc<|KI
z=MRYYN7k_m;{6x2H61*2?n0REKV!zixzpQbwa)F2hH{JK8BJ5$rn(wsH7}mtJWr?l
z6>ge8by5Ao88e#akDj^!)ehRHn<Xur-ZFK*TFgGP?F@DswHR$RtzXdGHh$)`5v{XZ
z=l@*XprDV(jTkv-KsqhOg*$M<^!d%ra|5$1tYOyNX2i5D;h>u0rt5+@Fo}T}n#RWY
z%?lRJ#u!a+YUHqS;7wM{in(kZtYpTGK+_OEy$R{aKjD}Y8b&qNk8K#KGRL>Mt#M9k
zQ?r`D9S)m2qgAS&k!ix{*12tCnx{53&&M2So!_Ku!rfqb=IkZ&@RvfEA&Z-vm{Bd7
z)zsFaI81((*wW)nQ=8{DHO@ok*$WbwzrF~%WoC05D^owKZO+trz6p$h8GvA)#%X$l
z6H0o_b_$x@Jb%X2>261{24kcKbDI~pHPQ)u+j`V>ab}{(1ohKd_QLrKTG6Adu^+E{
ze>58&)PCMVspmL0F^JY<7tE6p$4)qA?2*!bX@r_Lt8IFV;*@Nh#c^2B7_{f~=J{>)
zOWK+h{jhN)yOwT!<k*p;8jl(~{>b4CW`vFK6SdF7e@Bcxa@_D^g0W{YGIWhxO4QT^
z(`U_UY@IO!P4$~MUAK8+NT1+q-EDdV#<A{$)F_Vsgp9e&JV&<9ZI#g+q&TZnNoNM5
zV^FPG(>V!ewzjn%)vSF&cSO)%6UHPGwFA*#ZH?1rw@yFRN#Ux7q-nFKPCqr%MN!lY
zH9?OLE2d|+?bGSAn=!>`Di|Zy)hu$s9K$-wIuCNH?6*m`eUQRm$G9^UGr$bKc->*g
z3~xAW1blqz{5I9nJZol4(8Y`9&uY{D-x|zxUA6F9VY(<WaP<7vImfom2x>hD#aB;P
zH7%`knrm=0m_M~<-2B#4uwX8zX`S8N)W5BHL0irAd5Ei-J!=|YrW5|}_F1@Kehn7v
znptzF&t8Z@t6>BU&zwG8C&&@OPq#hZGIh4nBf=54k*4xt*~Vq78p}#sQ&aN{z^qoh
z&7C^8wQ=T*#d;B3z+|%uBC|L=;^=78Tj$Jao$F+n**v#-{;cVUQHPEgabUa>N3Xu-
z(1p+3_=aBngn+Y_<>dwOtgG=Y`xx`(IybzsGQ2RdCTn<M^!&*1!tAxt;e|ODWDhTF
zw=QRRVea~N!wd5^<PI-vzcFukVg9D}!wU;G=MOLJu)Sb-Vd0Jr`iIHJ9<R>0x;&)$
zW&T8ymm6NSLD}cB?A0v$JeIwNWuMQo*Rt#jSoS)Wy`E)nVA&g4_NETQ3p;Ku99~$o
zz2or0PCJTJoJLLHl_1#OK-(K>dlPMM&W_s**zzjT&*jm7@@Vp{kv!XJXGdg2VP1WQ
zQn!t~!r@-!;guiQH2KY+Pa0di>V&k-w6&de+7ZpD^GHeG#PrQf-_APk$f)x#<vGTb
z!40osp`6vUa~|!ip`G*DuWQ+_7qDN~v0vA-UpKH{H?m(hv0pc{U$?Vgci>MB^iQ*m
zZC(|F-F39Po_06T?nc_(M7x`5cRTIw$g48@aKo!;*l(|~z<%4g-ws?`qHP;)10er-
zEN2bNIiKaMWjPlx|2melp5<&{{Wr4yn^^zNtp9e_e@7u~46_EY<&`_wTuYl5(B?YY
zTu+-DXmcZNZlcZ2w7H!&ci?B>m5vR#*e|tzJLiErFL-6p-IrGgQT|?IJEAZjGb%GL
zuOj}pym8pF!OXY4?7DSv=cnBdMff4AzW&J<fCxV0xFKS$$J)3Eauh)fwGr5#e~oak
zqszdDIQjse319zIhxeeAaQRXHiY(VB-Y?-~?&gQ6YVw&7^{>cEbX2th;v(=KRj1>f
zeI+5P&IGu6RY+d|T`QUK9#vcLKFHC(0w3h)E5KtMeI2;L(YJzwIUZH_K#zCQ9|lix
z^b_D|j^@>4SHBk0yP-KhB}COn09StrJ=>(RJ%0z!cQhwJo1@!daM))Oq`&P|c<%3p
z2(GVp3<eWPIic~%QQbo6v5?*$I@dQU`?q(rkAMhr)@1CT8!9gse?9N+k&C~T&(w!P
z2Un+a)mZ4Dyj*oWG}jObxvCMGbJ}Xozj7;`nlmZ_OH2<!do>gL2SL(<UJOcRo(NWw
z){OiGA$tXCQ7C;mbWooHbzVqs4C#xZEBy);sGZPNj=m1s{z`%?+pW+^C;cAi;Mh>0
z9)=$1q(1>Y%+W7E*E{;PklqbF(n<d)q`!m?&K(NW-$VK*=*iCh?Xog;N9Y+&dN=66
zKMGU~I`EGIwLkP+Cw~p}JV)1s^dTXAXh@HR4*aP=9Usz-(2E`WGef!+I`BV?KlBPG
z|8nTF9ep138b@!0UhC+Kp*J{sXGmWMeUX!XEA*v~z6W}{qaTL8%F$0iU+d@>pl@^Z
zYtVN(x(R%@qkRNK;EB7DKL~{(e<)NRh0?!-4!o*R{T;f%H&Cd4f-Z72Zz0p!(YV6u
zoYzTtJg1ZptPIpV8g>hQvx1nSQ2mNjER?=Kbg<qPsT$~@enqMdI;dZfIs`hXpV;pz
zmC@z-2#DYgFNY$35Q;<fDOO{DCOudWC4W%AVs(5*eTr2hbg<qOtC`Rheu2fRHKZ3o
z*E{JeLi+rW-U1!?d$GC<dYZHU)zGIn`ex|Be~Q)J&^+gpP^=z?US%cvhx0A)k77TC
z5J68riTpw69O}Q$>ZPAa5Be_{DcXqOlg67F`MZYfbye?&(m#ie`W5J^z6<I9KnLT~
zRq>8FK`XkdBIw|AOjp$%y4<l>23_gsCU8GT`v{1@6AnQBAe4maU!u~X^n;;;`jx2B
zAw3p4nC~TOB6QGeC2A^kFuzOGDbT(A3Y4e?(7}8wQOlsKob)DeaQrIqQwS0KPVijh
z4?>SndwQr1p>*6s(W!3_bp>=_wTJo*bg(}3P`8Kl@1Wy;fj!h?&_VzAP|raJ_3xox
zg|2n-?}iSJzdiH~goZikUnAYs|AY?wP1-lo$?qc|f|(MLAK97c(olbts)A5@7wBO8
zO8IA=PJfiD{h@>YC{?u~Js3LfSE5waLkIm)s*ZpT`lD1G10D27sX7@t=#Nr01A3Ta
zuQj9>LkImK?F;%N@D!SeV5Y4^{vh-U^+zwYHk7^<y4>HPm)aiE*FXpL@1<^m9_Zx1
zC!}{l2cIu`si&ZW`u9?Q4C%K*`UB`Oj{U!e^!L!?o%ElegY&0eDi@2{G$*|ibc>^V
zKnLeXy;Pr&t_tY^(7}4#OAUoy=GZ$FdbOj+L9cQ23DCj$N-s4nq)&z3;^c1&=`*1(
zane_Z^hW6IPWmMweI@i&PWlbdS3CL+=$jn<0QBvSejNH<M?Vk!tfOCpe$ml;pkHzH
zC(y4t`Wxui9sMupHyzEN2D`cg^gB*Ee<$qf81x5DdSyr_pg(rf4-DxM&|f&|4IzCj
z^fylWWaxi7dM0%6g+MPg4>}j;^b&fhB_Vw_bb*uJgpBsr+wPHq`$w?STtNGNh==?+
zt}YCv^E;^?PX245gX2$J-3lEXFXQT7=(Lmn5$M2w<LYVXkxn}Ao)!3KT>Tlk!AbuM
z^f*VeeXjPC01<pL{Q~)eP!?)mnfiMuod@S4e}^*ue!w|@C{x8Dy)SgBlfN7~=#Mhh
zA3E-&4}>mr^dTWVCZvysu5|KGf)0+~WokNf(n+5k(hEcSEa+f;EmP+~2jfwuHbEcm
z*!xvTUj==XlYS#~(EnxXPUy)_`hy|;hmd{&nqw%TOuY_0+e-A*yU>dr{VDWPNB<2v
zSpQ^vH#zA(0wOpP{Tum%Q0|n?*m8aQGB>>tKOl(v5#@@vU2}Cjr29gbJNc8)m5v?)
z9r#DN8VMbYXSq5Oy4J~m9CR?g<*E@n7_V~G0zK5pe_BW{g&yXlpA*vSpo8%%SG>8I
zt1l1f>q7cA=wlrF_l5NDL;9JJeg*m@XaBdMgZWdgK7<aAx8>?f=wQB-tA9YxaQ64w
zXX^IQ!F(!L`-F69Nbd(d-?3L6(sj^nPWrHrJ`6gTujOhybTD7b)rrt6oc)`i&vx`2
z=v9tB9eRzUmxuHk=(SGzX6SW}zBHtN4Sk`LeiQU1j=l@}Qb#`oeTAc+fWF?*FGAnq
zXpYToj`k4{!6%b9kUt0&&R8<GLcJGC{|q`f-c+b>q04;(73#;3&cU^bz+Wm<N9bU^
zt578&-8-cFK@W56r=Z6;`XK1wcvPWAK~HqjkAe>7bA>t{I+)KDYD!4Y3hDVFeFk(e
z|0~q0kX{cR%<l?yQAqEEp6k@_dgx$&O8*D*v%=3wh+yUVE%FDUGBjS5>i$srqtFHZ
z4wdRz=u$`j2|DiRcS8Cj=zdQ6SJ1(DR;nLDItzul>G{yX`dFztLyvUq^@JYn=nCk=
z9bE%`l%oeh2kT*_8V((-H_{(1PJSN&5wzrR<PSo>Q2+H)6GG`Hg>*A?u5X~9nj6xK
zpo^Sz`d_i5eFQ}C$#F%7{i;xXs?_;ElMWX%LGlM#s?-*Upu8$|Sx8?E-PP`n@^235
zyP<>mQKcRZ=_jFsSy`oCf)2({>NCl)?;{|BBkP;UAB5^qd#ly^Ka(D`SMmp0s@3NZ
zoqdDV>bsEs4|Iu>-mXKYE`p9b>D@!R3_4ifs?`C|X(xXgdXS?J4(ZV$JvO8#LI?g)
zt)_<bDbRtxRI3Fcy$rg+DgRvPDURL{(icO|cG5XN=R5ieqzA{-YV{lF;CNWAZV&0-
zL9cQ4e=MY*3+Y#(*E#ujhxEtLTb%T-p|?BwpCQfrp1J7-A>9S~a%cZu&^I`Gf9QK1
zT^rJaL%JUN_fGyJpkH+KG0?9#`ef+W9X%tYTcP(j>5HL1cJxZ<&mFxM`g=!jh5m=5
zw?k)nHlkYJPAlr@TaX@nUaeO5KnI^stMR~xO#KveXJ`LELZ==5R!DyUJ<v)2EA${o
ze-Ay>(LX_tcXV#YOx+23qLbbuq&a`>Uo*RB?(BgG&fNPTe-LUz>rJhy3Z)N#4%VAm
zH8i9T4e4>vXo3l~>ICRu{jXKipo8_PR-GEsZP3B_RING_x|cPF`mctLJ9=YCUjiMh
zPqpew=t?L54I$0`>gS~U2#DaweFyRfAsOngq<SEf{&+|~4;>sIlj^mQ-UA)<Pf~pn
z(%(P_$FHRN7j$sElKPbR6-@d>h&U^==-^CKG=I$zgoqj(2v9`nyJ-4x5$Bg8jEp$H
z6cIg4_s?1W9`gHxVE)MO1A_69>;F+dzg%Cx+t+gaJeUu1Juhg#Tu%$uTe&`z<L@um
ze}eIq>o?VYx?B$#>Fe<K?ecxI`~4K>%Q!#3d>^&R*Yf%PHebu<clZ32`?vV%a()(!
zubh9m=L^j5`ZIOV9`Rpy{FxqvdKJaw3XWe<l?y%I&k$7w(1E?EDuNEq=cB4KbTDfQ
zRCnkN{{9837xX+w_kmvP=t}5`j_wZ~96t+G5_+VQUI#tb(FZ{X{a37pL)ZK1#cDKk
zFzb7$BcOx%(nF2QNH0~#W~7&@Nzg(2dZ|X}V0>`>06Lgoz0@q|pnrO)xzNgAk9(;F
z&}01i^-_zWZ+G;W&{sS9Z0J`V%{%S}{o6~egZ{=z-wYibuX?GApx<=TFN40<(N{p1
z`MOM910D2N8E!}J_HUWG6*~Ali0{iX@|Uaopo8<3a`g~&aQ;-T9)(`zmshTygdXSU
z=b(fBELVSo9_FOK1|7`da`k8EVEoI~yU;=XD%6M2!T43E&!ETo_A1p^&_R1E)pyYD
z`T0Mg2l@G{)lbkt{i;<IH_LU8w|US(|5mF)=(w~0KG5#@YYFs=PI^!1az~dz2mV>D
z_J<Da;dl&P=;yCh3FsgURKuZz@`k9xGSUxL$7krInhagy8%U~VXf)Y`IyDEnz)Dr8
z7D87!`b_9bN1qEF%=bFA9(tscz70AU&pNdOdWw^N4RlvuC)Lf+L8w)CLI>+pt@<7G
zYCl7rdK7w@qo0A^<>;58gYl|UZ$StBU#s4S4nnp16xv;HzlIL{uTK2{{i(l0o$`v^
z^T9fm2VLZ^2X(3wbgiF%i0Teq>7@6Du5ff;=)k|KRRY>QpC1ezw5M7PgLcnH4~2Hm
zU&lh9?U!Gzj)!*7R~w;&P^D%-Px2$G)Ewvoo%$_=4$f!m)S1v@o%C~|k972U=wN)S
z)Hdh}$Nmmz*B`He4njY56Lb*OPu&p+WW)D6&@KKBmFf}bsZRM%L7(jCm!KCr`VHtd
zN52cb)zP0o2lptiQ(r^h>!kkxeVe0sci*=iod^9VM|XmbJN4}jeUhVlLkFQkRYC{r
zUxliH?viD5)Tuh?PL4hVI^pO;q5C^}Ec94M9}j()qZ^@@IC>`ZX^w7%zR}T(ps#T>
zZ^F#qh)JkZ=Rxx~WL9s4cGvHVpr_en%#0n-{0*1Qe+@MLz|q$?LsvTbF6atJKL{Q8
zcZGT!Itb<JS?JsRh;sEZ^Z;l7x1bY_ejj?gqd$W_%F%y=KF!hpf<D#J5q#LW!qNHA
z7dd(#=yx5xFZ64U?gPDF)K<7o9RS_a(JAP9M-PD>=I9a7<LvI}nZuxi^`%^mg`VK#
zKOXuBM>j&3`}+@3GoiOQ>8;S49K8tIE$>X|WBmQg)j7~Ro%|O-<C&=@)Tyn|{LPJo
zI&~TJeUAP$^iZ3On%xK;gfewI^d>)|Ox*|lw6p&s(EJULggW&U^tX<F3HozKzX4s2
z-&olE??T5N{R#AFM}G}H)X_gcFLShq2VS%}IuH7AYaVB6o%91SY(!j@KnML9S21Wl
z$4f$;+8_FAN7q2V;^;c)XB~YAbTlW}|4``Q2i0|IEOfb(emr!kqZ^@n+1;^{&4dn)
z&vDfXop#a}LA&)|4jqJEYBjX``D#7%6sNpx+~3hVpr3N|HP8<_`ex`-|C)K7x(izF
zgvL_q)PvCaHw(HFb?R~G6P^6eLEq`<KSAH-=(nL?bM#-JUvl(cp>uL=3+vQ((EoAL
ze}ultCZi{_ad7;nqdNo#OT?C{&d?+M^is7i^Z>_xALtrK9{_!_qf^i)IC=>5nT{R-
z&1>)y>eLa?J*-6e<DrAlL!AH})Tf7<0)4Zye+%?)96b;E8AmUMe%#S3p#SdZHPBx=
zdJ}X|pC0OB=pdA+%b~0Nh!S-T^!~W!Dxpr@4Bf}kcR`PE^n=icIQntusg8aQ`b0<n
z2^#-RC{cfg2>hW$y&ohZPgnIRbl@Ld)z{FxGo1vSPeSv4DOP*kl=_vU^PqXn+opGd
z#wmvhT~!Hm5IU<EwC@i1rmZ5R`)A}YR%z%pzJX#j1o|$gyb;j9b@UO?e{%E$=%*Zg
zB6NjgZyNM!N6&%|LXnyW9ducdS_Iv@z0FalmP7Y+^m)(+J9;DZU`JmJeS)KRLLcks
z>!24p`c~-E9DNTouTe{=Qx8M0ck~m`H#_<T=-)W{HRuAnJ3d*x1094y^%v-1J{PLb
zp`UX0{}%djNB<l8FOH7l!`r)#E`W~Unxlj|)ft-CoUJZ}?(3wNL+|J4D(FKUorWIn
z=!2k(tT}uV9RVGLs5%__EI%Tuj)tD&>^~8j*N`RDsYdAY9X$h@4=}UobD)3Y=r-sp
z9eoD$yN*5^n%8XY{^vuN`2$d=HbM7r^u^GV9DO<TQI5U_+L!qL^Csw>eng$R1Nv8v
zz8|`uEgrx8-US_m0`&y+-F`%YdLH_Z&i=1LKkw*wpucqVhtQun`U_~>uG54%^*wa1
zqyGcVYi<(iR1W^YFXiY$=(8Q&6}rvQy`W!qbOki8Sy_A4(4RSaAoM4W9tu6tW=Bts
zgbu#XDo}?*|HsKc9{O8HPl84hOc<i3K_BUV0aB+<fj-pH^P%f)c9gdSItaOH1$4O|
zk*m&wZgKYC0Nv#1ZP3ddy&d`tNB<i7B1hi{y~WXYKnEd5-4E@%BUa`|GSZXksSI7K
zUdqT{tKP^+uU79u5AqABR-a^~SE;WvG=7f&o%HipDlb@k5L==0pa=Tt6{-{TWJh<0
zc0Zr>&e*?P^@Wc6`O8%TIw-GP4TcWR|H{>H=wqDxhd~FSOdSm!lwYP!$ViW?sTsPL
zYJm>w-%GVZ2lJtqIz1zQsX8-5_fV@cbcwnkLw8kMGIX)}6?9;~SY45kUZk$e(1q%j
z3>{T>LXY<w998#cq!*}1po95Zpq_*d+E<`nfOh@sRp_9<3e?-sLC94fWazZ|CPTMZ
zKR`$Q9WYbzm}IwpInZu-1<>wz7DET;57oXULPQM@>3Y>2`EB5FWxtS48cm-mhQEvm
zr5|lH`=}UK)|!oG8;ap+OO585Ta5K!OKAV=jAl0!<9PP4(OtDJQhzd<Z7RmUPeS{D
zXEe{TigA9`z7&AKV?Z&^WJ--@PZVP%OBp><>mF)!hAven7|qW>#W<5Z)oAu{F+A%`
zqc>??rZyUVo7Uy(I-{3rU7>zwbc@!N>II{VweF|hGa6DK*S`trEdBUO`3|rc-~4tl
z+UBnb=}|`WJJVvEi60Y6pJKH1PpxV-nrnP9R|<Q>40GF!#>NTb8pkv?;ub@I27&RT
z4%N^$XC7`mG*k1^=J~BgSQESniriqy-2A1wp>=w7t!k+Cl*WW?lCnw3CM}x*vKc6w
zI@t`8&0yIiYR%TzNf<*3V<}-wC5$cHr$vf2))K~C!q`h1dr4a_V=rm!C5^qLv4<Ot
zYkNs!FKO&0jlGnyhZ}0?d@0*dV=rawrHs9lv6nLTQpR4&*h?FGX=5*K?4@nb8GC7C
zFKz6ljXm59UDqRR><uvX1{iw-jJ*NI-T-57fU!5g*c)K%4KVfw7<&Vay@AHwKx1#9
zu{Y4z8))neH1-A>djpNVfyQ2)u~%p8)fszr#$KJVS7+?i8GCicUY)U5XY36!_68Yy
zgN(gF#@--fZ;-J!$k-cX><u#Z1{r&UjlIFf-e6;Iu(3DT*c)u@4L0@$8+(I|y}`y_
zqShEp)EbM4T4OR%YiuTJjnPD{vC5ks$+WIDb`!P6aH7^)4qU}r_MOG|7T;ZbfAJkA
zVJ-VEV|^xJohD(uCXuvtwtkbaj+3ySld!Inu)dS9&Xcg-gIhM4c3J;PSO>yA>THtj
z4eLV*>qH6bMG5Oh3F}7*>qrUfNeSyp3F}J<+@Vc+)p}FHx>LgXQ^Gn_!g^G~x>UmY
zRKhw{!g^K0x>dsZRl+(}!g^N1x>myaR>C@0!g^Q2x>v&bSHe12!g^T3x>&;cSi(A4
z!g^W4x>>^dS;9J6!g^Z5x>~~eTEaS8!g^c6x?95fTf#bA!g^f7x?IBgT*5kC!g^i8
zx?RHhUBWtE!g^l9x?aNiUcx$G!g^oAx?jTjU&1<I!g^rBx?sZkVAA?v()wW1`e4%f
zVAA?v()wW1`e4%fVAA?v()wW1`d~6)d@yN!Fll`-X?-wheK2W#Fll`-X?-wheK2W#
zFll`-X?-wheK2W#Fll`-X?-wheK2W#Fll`-X?-wheK2W#Fll`-X%Ayb>w`(_gGuXy
zN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12
z>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_
zgGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w`(_gGuXy
zN$Z12>w`(_gGuXyN$Z12>w`(_gGuXyN$Z12>w_ulgDLBSDeHqN>w_ulgDLBSyu+WI
zW?3IhSszSUA52*vOj#dHSszSUA52*vOj#dHSszSUA52*vOj#dHSszSUA52*vOj#dH
zSszSUA52*vOj#dHSszSUA52*v<c(RSfz}68)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl
z)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D8
z2UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGu
zQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl)(2D82UFGuQ`QGl
z)(2D82UFGuQ`QGl)(2D82UFGu)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp
z2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE
z)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m
z)(6wp2h-LE)7A&m)(6wp2h-LE)7A&m)(6wp2h-LE)7l65(SoPgJd@{nupTl!0=oD0
zc<CY1!=uMh4}$Jo-PO9oboc50(Y>X+LwAMl2Hh%Mf880n*}6A$Pw2+$_Ug9k=II{R
zb=UQls<N(nnb2OZJzlR7dRfr!uGbFj?|OyM?ya3&d$aa!?Zw(DwI6C9)SjgMQ@fjX
zHSNIKF}0&;w`pp|J**q2PMbEr`E-6{X&B$&#Phz(j2&ICt2TO+-ZV@&M!V&4$4<~&
zYBq$LTWTK8sJW%)XE18LZIIJISmpS@DmTo<A!9CXsX2_)dW*eu_IlkB*o(2qr56_D
z(pzeNZlvax?a}RmH6DRzO>Z0IWcfI3sq5>t@%mAE!&sJeT!WlsQ?q5LF{_5MO$~K#
zvMke1z1mSrJLOcLR-{Zh(T5dESkaq$J>pQNo_d&QgQ;wf=@q@DHoc;^)Vij~Z+cOW
zKlj&T(jXsXPzPPd(e-*ljUJ^p*jvva<knkiV@+?V&B*F4wHaBxr8Xn0x77UjPJ7&<
zSJ?>ks%eWpsxVcL4eHJ|v#xsEARq8hNA8R|as!*XpO8y$sZEdAQP4Ai>1Iag`9y7c
zM9*4kGduMGmD-G&b~I|XrM_OjkK#MaGVRe@%qD%rWjjsH^|rpA?WrGSTBV&7_Vku{
zO?_qCARorjN)~}unv(R2fW7n<d+B&;n{H}idqs~R(@m**{y@vNLB3}|DQqN4F>Te$
zDEBfmSg%ObrtkFPL~Z&`udUQ(Ht97Kvq>MoxMk_s>V*@fF&j!VJ+0S3?5($GlU@#~
zO>OiFN^RPxS4wI#^7?o{ZQ7_03($JYKH|Kh)>|y~W~-0Is0|x|+L*TJRhrgJ+x0R{
zZQ8CEb!z56u0c;y7-1@mm`r-TM<%^xlgvcWTWV7!**54o03$3CMoh{2XhI{VAM}BR
z+Vq1y#!%}qZ;%Pxpyw-Wu>{!S1_kN^3-g**>LWO{jF_x0^}5HflQ^0<SiSDn(W7kd
z>H{73w6$cDsr9x&rcQ%Q+j>1j*w>7dJ`q7)y+y6``3SXXkv=V<w)yqEfi@$nkGU+1
z6=bVSH_Em_Pms~|vKeKki#}DNQPUOrjEUMbKu=0)Gj{qAPi?wNpGHwjSLu0xLd0Y2
z95v%>>Sd~B3zQDB{bjmKTA(KpCX*;#0wyXIRuPG0-=KKCX`o3I&K&4gopHi3df`MC
zyMXGm7iv?ap6Jx3g>v|UHpS|59Hv`)EScKWK-?Lcb*QiBUiG8wzIyT@O%K_49L12z
zp*1}s+XmzL(s`q-FPVMKXq&+{2J{&jD?vkOGTVYCbAuzTt{RWH(k=336jm5>79d}Q
zLCbNzLB6`9)<c71i0MwfQX^iDaM-e0(BiPzn*7Gw<qJ`!>&jw9Gx?1lB}~1{VO5U&
z4dy^EM?pC_9M>SnqXt=^8?4KT6UhqLU<%hgsb>Q#D)rMnhi;JG;JBeP^sr$~hmun^
zK0`sePq!DR4>E%6#QJ*fRbNj_I0PsC>tgP$>Gi$p?bWW}=@S{x=x~z%`vXF3#_*#9
ze)b^`Zf5rxCVR)b4=LfJA?#BF8XFhRSvb38)`D3nzimJJSb^YK1=jd4Jime!w@>ge
zUBD>wNDaF)qs(JIoJ{7K3MR&Rl#G+deMW?9%|186#{JxL8{Efp7?c0gqbu~2JNT55
z;5iDv{Dg&{e;|o{bc6Hc6I)61RF({B9uuPfJ}mki?*=Wu-6QiStGtGtH8KnD@|%w6
z^Spz&{2qbKYwr9l2lMkMF#MeW8GoXx??I6@O7@)(9T_dWjC`mt-=i<eUCUWEnSqz2
zZG7A?HaZlW8+cYgMPHHpytZujtp!KMi2Xr~H|;veFxxc-uPpON566KchfDq`VB3}^
z!)(hbcx4?SdD_Sg!o21lIZ~Lv7l<4sypC-C$b#4HZNFV;nEl3|bQPQ5t>rq*w8+_b
zLtvjo&e4c#<w0BcTLspWZK*WOlB*1}SJ)5CLwjk%{2BN_yoz6!ewzZ$8Ygwu?KR`u
zf_OW=9534^D-5$wR^t^pTK468vH7C~mY0Ka8Cd^zhIzf;j!`eNDXYvd_hUcUecOZW
zzHzY4Uv8NBIp<h6mSg*eeM0+L<E3uaK5JBgmu;8r6WXxzgzeJv#LUBb=*R@I^Iyw4
z=KrO#jukuAC^zdk;RDIX3y&sG6mB4&AUp#cnIueK%Q{h5&%=|1FJk=3!dH+d3ttZ|
zHaEGwoAHej|2jBg^1sLUDH8uVd8+XDV7o8xsgN~I;&Z@}>B9V5w20YP|K{dxnHwC7
zV#A!P#ebG~w##x?a8{GpVg9UU;h|tV?)8Q_?$elOhU8(N*f~T0wd4Lv^LZ8Xm~r0#
zj?5H0WsEoL4C`R?R54GB<gs%p2XS^Tu|6a5%9<s4j$-~(gpUJTpPFQtb8iY>S*J>#
zdF0u`r<3OhpAC-86<$ql6<$l8C(QcWwr?>^e<>v!e~BArJ=vdG=8wGU8E<@Zv|;Ys
zM8>{_*y{BG%sMZ|D>7fo?QHU}A4&|<zMjJiB#$0DW8aoV`{PZ1+PD2f`!n#0w8_4F
zkN(9uUVs_6RzyFPc<xVT;Cd3d9TO0Nc_McRbFC=;Sn_aAW-S!^WsLts;`NvsJ9<ow
zeZ4-Ia)%+mtxrAoHGjyZ%YDQt_xHkjKA$dSv0S?^*DErE?yE(TNB5O!FYVhrdR#t}
zr+Xa5cvDZ^ho+vBOgu}T?Btn7#@MmX*|%gK7xa9?&HY*Oe7quyr4F2X%tN)5Y|1(d
zTx@QBy$YOV{%CMDII>jsUBf)4pEog&iNA#Lrk}3>Tl-fVW>4HiHhprNVYcONyt2*^
z`}Z^6`0PW5nddRG@!6-rS<58<A59)?^xxcbU*><4@upqx7-sx?WK)L^4Kw~zvgv>R
zEq?JH89V-l&)O_DjI64RZ0z%IeaYCUeq>|6+A!nsb2Wc14Ri90bn-MfJkH5;95`~O
zw09EYO<9u-vp!Rp=Pb!XUx+Lhj)RLom9|teeuc#Io%O_S`dDl0{7ZgEo5j2lIs$#c
zTPb$<GjFeNmVQ0~^LYIvo_;~5zxN=YE%9aKbA<bnvF`*_qS`R;^*r1#|7P(>!+gfX
ziH3O^HqG#zh@WYg_w8P2m`f;+3$#B9dCoE1j4kId<GHq7WOy!`w!`rEuydW^A+U3Y
zVV3`*;R@t=)i6(||7`ev)c<|MHz3d74IhUskEbm6HstSQ_&Mb7Ww;6Xs|>Sy4>ycm
z^)pbo?>KOii9Z4PPcxi@__GZ2=d7Cz^Y0d~G0bwgbkYvX<#R&F8<785!<Qq^n}&I4
z=CeGQ=LzI5fF{2W?rwNJ`mMt7Ti}%8!LZ50HuLvIJP#-21ol1OFz;Kw(eSTP&NjpU
zLc1<A%;y$eY4{n~x!!OdwhtTbiu{ioPJy2_ycOF$hS~prHOzkar(yO(JJ@C2^1+=A
zkHfaN;pdUJ+A#l)d5Gb+5I@H70_=ONVV<7tF#I64zcI}F$lqo76SVgc!+*yX%dxJ*
zX~^@2;gw)6C9K=ku=%y&kHH;~#`qsmZXd&ZPD3?$6*3?s!SQp2dCz}uweaEO^MrY?
ze{YTON#yf|PbIGvZY5tJ+(t&Z@1y?9$?GKk9P)bMHRKJ#{JUW0?+i(Q@HpTIw}9iD
zgdb)6X5lBuTZGwP9tRQOP4b1py#Kz($%60+8TR@2vHY7~?;?r+2RMGQa0jG$mk4(v
z|4O(k8T<Yf{l>osCVz_kYRH#Lo)npr5n&K{yYO(6|2^byAn%a)ab!9X!m;F?!js8Y
z2=i}+Jx*!_-U~l|l`z*n)&b8FR~yK`miSA^oB#+nlCKed#N@Apq<?zXO8hh6_;td&
z8BeD{px=7G5&oErvRMDWk#CUrzmv_)0RC<Auz%WPf$?sVJTdak!h^`S2p>g;&85hH
z4Ea`xp9qfA=@8B~d5(nbHRRt){5s~jUHA&d-ywW8`A*^6$#)6gO}<<BG4egaPm=Ey
zewBQm@SEiOg?E!tPliv)zZ3p~{DAP^$PWtV;)K_GNVp3b`%Xd|_a$=?Lf}2y<GY0W
znLLf~kpbjKBz`dY_rgO>o&&J&VdO_8{z&p;!u%U%j|&?@Bl!=)bI4B!pGJOC_;fPr
zb|w0DCHX0dKbQQp@LH3HHn)+Vk@#Pcxo{#}PJT}KDsY?&Ai|A|hy7ac-Q*V}{(ka{
z!VjA~3X=C(_g<3t=gEH*euez9F#nF4Ht)hbjNrt=dqv{gf#ZJ?=Kar^hy7VfepTY*
z<ky7vGkMsb{M%{ob%{@r-w+-~ep7fPnF}}q?|1I~S@>A;+rqr>x$Vy;@;egWLf$RB
zh|Gfw!Wraug;$VK=L(F)TEq0~3(4<Eo=eE@3-2I*Abce_{ukjp82_R0J>-vsA0U4$
z{0JFk(H;1A+1@7-&-<Kvp9;T1{!EznJCA=Z{5IpUFURyFG7pjnpOL>1{>tRxnEsRe
zrNsY-{FQJH{$AMoTDXJ^n>_#ON&ZISdxPVD6CS|$Z-obwzY{)`{JroI<i87_K>mmD
z$>bk|PbKqUj?hZ}mv9>ybznG){BPm2$v+BTL;jC2?-|bgQ!!pol7Eu;XTfp(4Jpng
z81G>a5k4Si34cS52!BtG3P*7=?PUw+l5>Q+l6lgB(1V;S93$rmk0rMkUO>(lzKUER
z%)cpSonL}qJVWjv@h^bmg~IPM-rRiUBXW_%e@E^l`~$gIxE;Q~^!5?XC-Z~|p*y*Y
za8Ghq;RDFsglotp!UvPP3-fP}y&l5j$omQ(LoOBGM(!zmAGw$Cn`E@{V94EM^YE_s
z!ST4{`8(rzvWD<4a+z>m0hmsQz=z{{<-+@t_Y;nhD}>9*`wKUaQ7#V+N0Tch{#bCF
zC$tE&7~fBL4*3A#GssoK%gOzP*OPf7iLjYmBYY9LR`?+@%DooyQF21!p8&^`!o0t*
zmlA%5oEGNa6no~zH~f2JZ=l3~ONLE$1@9H?)k%C7KD>E@gn7?kZ?G``w%9vRco-S`
zUJt(*Mdryb!eQX}LBc07o&$t1g*;Sv4w(;2LpY5*O!##2aN(U~*ys7kHRO7U=RJAj
zBZTi{{77Nmdzbki#GHSMJWAsE_ssFp!mpb=1vsX>M?O^IKP2;n9f5!EOgjwUkq?vj
zAIOIb^KY8HBZMpPC6w17Jb;XS`8jL|`ACUB1ROs~cs%3B3Li)22MUDg<fDaWlFf~X
z+Q<_mp7+P~juAeW%nud_=aY{U-atkjK7zc2e7wZ--niaG;VVrZ9v5yTpCIwKl6eAy
za3}dh;cR?Zr_KIoS3db9iSG!GpDbL)_{qW*WIlWjAw`}dTt}WNJd!+3cno>E@Ui43
zVct*HYZjhNMjcq^7V-><pG}@Ad>Xk$_z{zTGsgN!@+^se792lCcsJuu6@H&QTlg#T
z9N}-tbA`PkaI0`Od7f}F`846K<oUw;lFeA`M_wTDeaUUY)g}+yHHf@W;(0Gj?{wke
z<VC`VoBVx{{}}ROiJwSbB0QPARCtZae?I(ZJ^2iY-wci~6W(s}@I2~T@|hCP`$c+Z
z3G-f&Y|8-{)BDKFCH_J33gM^8D}|pYpDp|r`5fWh<W<5SkYSVOrC*TGmH2PStA#z>
zgU>rpIGemixIG#B@;s`uVXkAn$mdHQ-fz)cE6jT>dKU;E0FJK{KA7?Ag?WEPZ-ek?
z@<!n!$S8|rbS!z3#GgRkEIft0MR>l+zXAPuvEij)-Vf2+DtWF1$1fDVlkwYx?<HR(
z{5bhy;it%#2)|1HmGGP7ONIB4QBR(_d_=xX;y(k&w+nw`^02Rf_<Sny{T)8c;bw==
zBVR80A0h7){u}uU;Vx*WccpM&viY1lgnX66^E*uYnUQ}>?EPBempFW(!}mG-4*6=y
z-xcljt`SZ;JkH^z4)bHG&Cibk9uKAnMc8=P3G)!{T`$bTr1u+PF2R=R-j>-^%kMeN
z?*Y9V5P>j)e53F&<eP-Il5ZBi!ij&tiGPNCi{$yv;r%f0ZTz7QpGm$|^6T#eZWI0!
z;|*u?GpynL9G*)4t>k~&;hy{~X5w2MzKeXj<bR!fhcG{*S>`jQygMa+vcr7#la0TH
ze3#^T*5Q9RT*>q2yCn~wQ)GFX!}@&w9?5el;|<?UzE|R3CEq7p#`D|zg@-yk$zeY8
z#^%}L@GTBMP5zzO`Ox7g&pAyzpXFkCjKg!u56Hf29lpWg_Z;rS^E8wHM2D{+KPYxy
zCO;(nmBSr*-eTg1I(&}9uaF;>eLpAf68?$&i11N7H~78qEb^nmD;&PqVN4}_cOiMO
zwEM?me$Q@?#k_`S*Q-*-oAoNrc(Z1fGv2J3m5hH}Y*sP;55l#KH^(?$*R#hsUe~kd
zEeA2)oVN^Pyg5%B$#`>~Hiq$|#AXBIM+=W*e7*27j2|I9k?})>Ph$K*!c!QZ5N=|8
zQn-cjmBO<b&xHqJ9$xmdOdHsKmRZdB4w8qTpY7+k6^u8ZNmnsmNuD)~H=nQ9G2VQ>
z-o$wGUCM=wH{YdP!uW@=C?agf%YJ8d1=xNUcQxa0mps=q-h7XD6XVVIc(*a$eBXE{
z<IVSt_cHz>+4lj)o9|$EF@B@OKgRe?!cQ{Zd|&-6<IVTgn1=X{OWMfW-*`_7??--0
zI6;0|_+auZ;SuD^gbyQ|c{P@7=F+ibGk-XacFs&An|Y$g&diNg#+&(|uQ8c9a0cVe
zxUVFeu|AI+lRB&?n=$2B*m1m+Y{u?NvKcSk=Vpv<VZ8Z{l>KbSg4aoH|L-E3K7WF2
z`uRDs>Dw}LzbwVRsW7|<+kS@EU|VgN<tGiZ%z=jQ!*-bA2eBPxnB#W1;kU5W{fx3c
z03T!G|BCGihQGm<*RNTh2#)j94R-_UK1X~xcs}C`@P@$qD|@Us0<RZ({e?G?2MJ$A
z9wNLiy55^D%#S_Z>B5`I%Z0l|!CQrSt;C~qAgm%^E&ONlZ-vM6*!p|nC&@1hzr$l<
z5ei4p$3b4uLzu#2&>_OPT-z53KS|yqJQ3~lt`*kb1KcY74dWjY)}Mp2v$Re9nWaRS
z*Xv_ge;GL6V)zWh!1)#{(x|qPc>;()e~<AZEy6W;#rDytpQRS-EX?ud{YV)&$6{SI
zs$FE<w~paSykaF9)k|bLD8lP_#dxt7VK-heUWi2a2(MVFM*UpUn7LmJuZ_lfNxVW+
zV=-a=)+iPi=5LK+y@h%GJys^%gWN}$-5onX`h@qvj#Wzh!Q{TeyapWOWJfrRTqXJW
zStwQ`@h#+9;kjfkFbKStbc_yx!1Mc9O89JYT6i_Nzu3HlTrGSvnTr#`-Q=Od50H6r
z6X9|4FpcUt@^Imo$@Ri-kVgpbCXW>U3z?3H@C|vi@Q>s}g>zAr*cjn1WG;#by~uQ2
zg#E}z2(#+32H`sLk;22sM+qNBrlTVqO&%wF0{Lj+Y2@+3v&a*K=aacGAS@wsF-AC>
z%nP*$=aY{Y-a?)zd>NSw3BuLnNy5Aw6+2OwmyTjw)DigoUF>9GUWSQH7Ut!XSfem6
zZ^Whu^Dr5kD*O(4nlQh1k4+cmSLCrKVIFQ{&BFXjIyOU?hw9i&;cToqF)nNfJPgEU
z33npbAS1&5<hc@GOKugeBhM2)gnXJX4@)sFkO=&WDz-qFUpd8U#bz^kvBdMMjo1?5
zMdYQzXOhnlK8L(am><Ps39++-yi(%%Q7X1d_-69C!aVhltrmWe%moR7r)#k_!q1b>
z7k-VrR(Lo00^yIz>x921b1_5sfxJOD3u|(0qi`O1lQ6G|$C6U#axxb`gi3Ns;)jwi
zmH0!+mkEy}Zx`k@@z@UGM)Kvt&E%cJbIDf-pH99~cqut8W$_-`v1=v%SLEx2uOeSB
z%xmJY-w5AEzCrjN@{Pg|l5Z0J1Nmm*=gGGS|B*aE%Keyphs5()^f4~#2)rg9yG!^d
z^4-GivcdNVcO>5{TtdE2n9r1t-7n1VVq(7&=C$(J1HuEy4+`^lC$WcwN0J{F9zz}|
z_2f12*kckull-{wT=E};7m}Y4=4am6lfvhcpAzP^^4QbD7m}Y5=5ya;&kFOI@3H5E
z`FT0^yzrgm7lirSo!E=Q50Sa}A@H{au|G-t+vHb;KP0~<{1ur8K!hL3ZwT|cdF)N$
zBJx|p-N}Cz=JoX0+rpLPcZ3t<-NFZw_XrOozbibN{GKrHsU3S?nAhB69|-gFe(W#8
zGszzc&m(^%d^-7K;br7cgn7L__Ng$h(Z@a$-bVgh_;T`Jg|8!jA$%M8OX2&-UkU%7
z{I&2i<ZpyuA^%Ny5BXbRK5sqto$%M>?}dLP^CSWxrycko!Ug0Xgn6Iv*gu6!$o~>9
zC;wZxn*5`19r-`P!^l4g^BR4OCn*Ty$(}H;(Z{lco5(z&Mc_617=Q4E!0Ym{Y~gdr
zJi$TOL~bX{>+doC@DSlja-Q(b<o3e%k@JQBK<3F2!i(e%!o0Q~8zl4gQ!-DQ5dKEq
zNB9SFXW^g7{4x(AI~UwlxRA^fa)i$065$@??!skco`@k-lJ^y^A`g~2)RW^9&*zNC
zdJFTKd#p^D*V$uzgr|^s@{cfsyq_?iF&?WBUP9hq_*^nS93X5V^UFvCUR#gx$CwD0
zlMfK)v%_QjksSiBr^k4)1K}|;f3S)0BDqHR&*WNRULTJoguf*xg;gFnC0sz}Nhm^h
z@&I98`;M81tnfRoSe?Wt$b*CrBo7v@Cm$%x>)<hdv5GLBe2_4o(;Yid`gt~axWq3c
z*9)IP9wEGnJW`m?;Es(F-a;NNd<pqbVLpdDHb(erGEbZlc<=BSf1HT$0Qm^vC&&%L
ze8zU{Na451M+x(~dCWXq=C5RaNsRCv`Do#Pk;e;r?ZN!OhtQ6EjBp|OSmADD{zw)f
zPCj0^k~~qkmVAOR?=2piBs`3KqA;JM9Xm;w&(MyYEIg4sS$Ha$9~ux^$Ww%Qzwy{q
z;icqh!sn2u3$G(L313KV7QU1`L--2vOyO(E{7`~$D|wdi-Q-h*A0VG9{Co0j;U~#+
zgkK`_0}aBP<W}K5<axsUJ~MWj@aN?D!rzb=2>+AJ4?_t5ArFzc*Et`&MB@3|fY?&u
zKIAimtH{fQ)8sRS`8$EwS;Bm-b!@qC19^q;vE-G)lgVcbH<8Z~K83tWn9sA0oh!^|
zS;tljpF=)RnD;A>tr6ZxK3|x>Lx`;vzMOo4@HOOh!ncsu3*SlJAk61d$2JN-L_SFR
z=N0mW68|=NoA3wZi-bQTUo8AB`4ZuOlYb?gT>!pRn7?O;T_()uO~<wi^I6le9m0Ih
zbnJ5BD)LU@B>4*A1Ibqkk04(q%x6f)el5&<smBhMw(!}|vFjzC&xMZtMwripj@=-<
zf_$U!8uCrT>&QdJ&Q;{!O8kxFJB9Bg-zEGY`EKDqkna(Gfqbv<pUC$KzeT=Z_yh9q
zgg+)9BIWY;53yYm&)+=69u?*@l4Fkv^ZCfJ$A!zte-P$#kz-E?r^!zWA4GmixSss9
z@Db!^gpVdaD||fpIbr@@BKExSEb<G&^T{s?pFw^}coq4N!t2N{3vVO8B78adPr}!d
zUlqQU{JQX6<Tr#LBEKp81o<st{-z@KXJJ0mIQF(MpJyC<N0`qtj`0f#1U|<&wnzBy
z<adSnJBrwQ!tDyd?+X`^KM*b<|3x@X{!q9t`6J;3`D5Wa@+ZQ>$e#)~kUtaV?=E7W
z3-fmuvA+t>BYz>hl>DXeYVudYy#IUbYvIeu-w5A8{+saK<Zp$4PySB$dGhzdZ;<~k
z{2}=t!ha+GAp9fwpTg}sg8wDlmHcmE{_Z07qi{9(Kf*)EKMC{q6*2xu58-ICCp?Lq
zCCuMf#P~%H0-wtpYbVTS^2Yc@5yCm-JmGcZ_QG4q`NEfy3xt17?jU><xls6aa!28N
z$wk8a%|@(~@YCdC;Xji15q^u@S@=CNzqms9kUU)YM{*D0oFeeP!X3$_!X@OM!oA7-
z(hH#<IVN07jtld*8L{5N{B1_8UbqDNcq4>M$(Yj&alXn)^7nK$PYblSzmC?=(u^M<
z+{SogXEC{2;+J6)A0WJn@g~n2a-GDl!zMmh_(H~;JeQCUlKAb|#7`0ait#27KT3K3
ztFiM7jiZXf_ykMILy^=58#UFT1_@G^R*D3)vglfi`cMTWs9?5r(?oWYcC*DORe}@=
zn1_g15Q<1?O{=Yjng<^W2K+<BP+AlzQm~+)4<ZP8@S&jJH|Ku4C%3cJ12=Q#oO6G3
zcV_O)oqs1av-2`3WkVp{*mV@sL;Yp5_d-u!Gkw6tJV1TQ>_x`BZTg^#d7e5O2pM9`
z5z|LpOqKe3X6FzjJ!U#j;cCw`^%G{FVa%tdA9pb)sh>6bX~ry?zT{$-sefs99#Yeb
zrvKq$*zG%hFgv?+dL#ZoO4#IT&o1ig&He=Rlq(5x$i+-izr*Z&^pfr{J$ol1Yzsa@
z>nNIifiVY7=OaBWYYp{Dvv)#IXH74;m|fK0F*{#POSxho`&~?f`kdMM3Q>B-^eGo}
znEJfgrx|n3biTfz_V6`=jxWs4dwuB*XgK7Oi@8jFt=X?IhA(bFuDTe0q}Xwb+1Ef%
zH=CXmCSIvE%6l+v)NMK<tx=h5B!w5tjdD`hGcl1A>XmA_Kx;v{510{Rb(;8VW17h|
za_Ym^%&c*JH<Ec=i{|39)Dj1Whbu_-&?dxZ*|=^96K>=L_}m*g?p3Kba{R3<9Qn?N
z$E)M@-J_G0YVOkcBSUVEoci>JG#zccma(Ia(~@`OI9qu<a-7ZeKH8|2_qT1evU}tZ
ze4>vWx6ApF<8|pha=amPM~){X?r7%;IXukWN;88l;IagU{liSv@x9g2iH5pHh^v>!
z_ElEf>SOz^4P<&j!O`cW()>a;zjwS=tBj!!W_!NThwJ59CF|b*>(6b7;?V=Q>@wLN
zrkdE11>fAkKplsSOxnfq)QVd${~5OpG4XO=&&c*i%iV%m9FCHrnUkpx?K}8Vu+xW2
zhvaD#&*P~Fm%>dEZ#OKS_cwSPLy*UHAl?D!o_7xOeJB#~sxWw7*IbLo^&s9XbkDmI
ze3)b+-dmXSyngWb`${PMJ>tzn_q<;*A08V(GasiPqj=tS@D^bsk6iJ-hwgd2oV^t`
ziQ0D_2G3h@?Za@n$>XhH&s)IE&4L9VXa7R+yyRr-_jUyz+qn_-J&%`i9D_;dqud0=
z^VWg40DFl(6#B@!4{@x+ZBBU#r#tDK7jIj{TXgN~Mx1!hM7%-p?j|URcuz*WW$-ve
zWc#>&#N(|U)=`_@051$lVQsZ<EaG*ZvV1h;alaPt-H6Ar4r3%-7KOtZ)+urZG5}r`
zQ^s<C5bv{yx6+39NyIzuc)gByG2#v2Kof>~h-&>_jv0OXx<0b^8`!?vQPjRaBObrA
zW#5;;oe3{hJ@0q$w!%YRiXt8_uUJRh;|LtHn3sshVV39hpaUL8Pzhx-3Vq!F`Xe5n
z-Oa-;5%123cNDy31d-Q=BHrT>??>=n6%14Hc1FCB(@8P}KY4edi1$*&<1?%g_$A_1
zBHohY^&?n3zBj-+T7REIVSki}$FVu<6oaGxOly0vKZ!RN@%X;%v!M<r;vI{4gWyfV
zUqab}BHq^#kI$jPtztyAc#9G50(iWJAdmf1yq_c9o1OW`gP$VaA?yTw;E>1tP&~fF
z;Md<gc<kR2{a*G%)+q+Z2jJ=WaxZM+^>FMTVmMg>Z>`%P@@+tz=UoPGeuK4-V*v5`
zBHno%EcniYL_EGXA)UTW=(MMJ;s_!iU(@u<o%ss;9}FeL@v@t~btt^PQXR}D-(aI&
zq7p>DM<d?K66#`Ik;hAS@rEMa`}g2~Gzx~Pc+W+=;&(W{z)9Zyj>peQREL-Y*h%<3
zi9|kL8?p_>;Fw*8zR`F)U{m|}c?auo-=Lg*5a&j9D$LWzG84spi-z%>CsEwdDDIy}
zk_4N#DT?E(^sai+y%Xa+HY$kJ6NsZ;4E77Z;P?U?7N0zXLLavqSy=r|>3s~}apJdN
o@mbCV#&I>_kyC=|O}RRa`(T@zv&}ZGhsnon{SD6%ok4B?7e7rY^Z)<=

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_console.d b/lib/libssd1306/bld/ssd1306_console.d
new file mode 100644
index 0000000..7b79d10
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_console.d
@@ -0,0 +1,20 @@
+../bld/ssd1306_console.o: ssd1306_console.cpp ssd1306_console.h ssd1306.h \
+ nano_gfx_types.h ssd1306_hal/io.h ssd1306_hal/UserSettings.h \
+ ssd1306_hal/avr/io.h /usr/avr/include/avr/io.h \
+ /usr/avr/include/avr/sfr_defs.h /usr/avr/include/inttypes.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdint.h /usr/avr/include/stdint.h \
+ /usr/avr/include/avr/iom328p.h /usr/avr/include/avr/portpins.h \
+ /usr/avr/include/avr/common.h /usr/avr/include/avr/version.h \
+ /usr/avr/include/avr/fuse.h /usr/avr/include/avr/lock.h \
+ /usr/avr/include/avr/interrupt.h /usr/avr/include/avr/pgmspace.h \
+ /usr/lib/gcc/avr/12.2.0/include/stddef.h /usr/avr/include/avr/sleep.h \
+ /usr/avr/include/avr/eeprom.h /usr/avr/include/util/delay.h \
+ /usr/avr/include/util/delay_basic.h /usr/avr/include/math.h \
+ /usr/avr/include/stdlib.h /usr/avr/include/string.h ssd1306_generic.h \
+ ssd1306_1bit.h ssd1306_8bit.h ssd1306_16bit.h ssd1306_fonts.h \
+ lcd/lcd_common.h ssd1306_hal/io.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h \
+ lcd/lcd_common.h lcd/oled_ssd1327.h lcd/oled_ssd1331.h \
+ lcd/oled_ssd1351.h lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h \
+ lcd/lcd_ili9341.h lcd/composite_video.h lcd/oled_template.h \
+ ssd1306_hal/Print_internal.h /usr/avr/include/stdio.h \
+ /usr/lib/gcc/avr/12.2.0/include/stdarg.h
diff --git a/lib/libssd1306/bld/ssd1306_console.o b/lib/libssd1306/bld/ssd1306_console.o
new file mode 100644
index 0000000000000000000000000000000000000000..2d26c39777148f9d517b1e1f2b55b73c2e96bdd9
GIT binary patch
literal 15248
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
MfqFMtCwvzE4<p`}L;wH)

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_fonts.d b/lib/libssd1306/bld/ssd1306_fonts.d
new file mode 100644
index 0000000..c27dfbe
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_fonts.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_fonts.o: ssd1306_fonts.c ssd1306_fonts.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h nano_gfx_types.h
diff --git a/lib/libssd1306/bld/ssd1306_fonts.o b/lib/libssd1306/bld/ssd1306_fonts.o
new file mode 100644
index 0000000000000000000000000000000000000000..ae5f3b43f71b27082b53dcaf8c703b1d7501f6d1
GIT binary patch
literal 16688
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
X4?9i+&jE3Zo+ft+^F3HFfFt+cUP&|e

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_generic.d b/lib/libssd1306/bld/ssd1306_generic.d
new file mode 100644
index 0000000..622dde2
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_generic.d
@@ -0,0 +1,21 @@
+../bld/ssd1306_generic.o: ssd1306_generic.c ssd1306.h nano_gfx_types.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h ssd1306_generic.h ssd1306_1bit.h \
+ ssd1306_8bit.h ssd1306_16bit.h ssd1306_fonts.h lcd/lcd_common.h \
+ ssd1306_hal/io.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h lcd/lcd_common.h \
+ lcd/oled_ssd1327.h lcd/oled_ssd1331.h lcd/oled_ssd1351.h \
+ lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h lcd/lcd_ili9341.h \
+ lcd/composite_video.h lcd/oled_template.h intf/i2c/ssd1306_i2c.h \
+ intf/i2c/ssd1306_i2c_conf.h intf/i2c/ssd1306_i2c_embedded.h \
+ intf/i2c/ssd1306_i2c_twi.h intf/spi/ssd1306_spi.h \
+ intf/ssd1306_interface.h
diff --git a/lib/libssd1306/bld/ssd1306_generic.o b/lib/libssd1306/bld/ssd1306_generic.o
new file mode 100644
index 0000000000000000000000000000000000000000..e716c3b2f43f79b40d1d54d6416736bec91b1e8c
GIT binary patch
literal 64856
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
V$V5%J4V$RCF3UHNE5jKS_douQ!_5Ey

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/arduino/platform.d b/lib/libssd1306/bld/ssd1306_hal/arduino/platform.d
new file mode 100644
index 0000000..7062b72
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/arduino/platform.d
@@ -0,0 +1,16 @@
+../bld/ssd1306_hal/arduino/platform.o: ssd1306_hal/arduino/platform.cpp \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h intf/ssd1306_interface.h \
+ intf/i2c/ssd1306_i2c.h intf/i2c/ssd1306_i2c_conf.h \
+ intf/i2c/ssd1306_i2c_embedded.h intf/i2c/ssd1306_i2c_twi.h \
+ intf/spi/ssd1306_spi.h lcd/lcd_common.h
diff --git a/lib/libssd1306/bld/ssd1306_hal/arduino/platform.o b/lib/libssd1306/bld/ssd1306_hal/arduino/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..57986e1c6d40480822b6c0c3ae09975605720a06
GIT binary patch
literal 2292
zcmbVNPjA#l6o0c$XwX7P08s>oH7IQpfxX!PIka60q%^IFAOdmdrN(Q|?i#$dWqT>m
zLr;}Jy>e|oK+iq!9k})z^b>II0e){hvumfVsQRRt_j~{6&l~&4n|oggA;^%Rdo-7b
z_6`yK1mk7puuiMALPOw15(}(q@pOhKLqZ^gNQfn7R%<azN)oLPlyYIQVwJR1NlRK%
z3Du-?kXWO3`)b=-Mxj;l(ejD5)j8W)`4D-v1w|G<BX*#Z7-~7Ba&RF<J<N;HZGg9g
z_-pwn7N@q1jRJJ4AZ6{ej;Y;?PzG`NG?VMeG>)?}-=JwyM59E8Ht#1+labxfXk#$;
z^U4~g(?KjN{CD?R>^y+;?%uv{?_9Xh>)E|6cgx+hok`*hW4{>pd%#uB{-rHo&gp2y
z_GKt0!L;u`&ac?c$ad}&wo{a0KTye>;c%J+Wt1jPAr*&t82Y7OlN*(i)F~cCnKPIo
z*$`4*mQjUdGEDP8I&$n3nG84+?D9z<Gp<n3d`oKIysx4NdzUu1y|Ev6{XCpTN!ra~
zzeJ{q8)O-E$LU0N(<IFO?tY#=#43w!8q3frWl?s647zR{4S48e|10Jn7DA1M(C*I8
zr}jE7Vng47YNGm7e;*6<=55_(HC_+;RJWw@v7q5*y=oMQM>|u$CfmSY)MRelIlXy%
z1;Ts{2kSSR-y-!IXW<s9$5xXM&oBdv+6Uw#bfcj;M0XqVVS3Pz57s|Q%>(wld;8wk
zo<|DoRp9Q;T?NWX=H+sv@H3gGT5$J5iB9zV!6289H_6Cxl*qXhp)ohH7XI*vm1<F_
zP67x1J@|3P$143Pjn9Ge=S!?sdY0LrKN{;AKLFp>m~-%5u}=d2rN$lbTN+=-<?tD?
z&o|)TYRqxpX$(eE<ImyGw<I_@=sX6m^FH{;8ovPNy|MlmaB_>MlhPl6mwCm<29@$j
zNiM%`a`9Nm&1LMn)d}($!B#uXhS|^kWF(s*e8?sQB@AS>r{o}=Oe7xpf2Ff<#Fl5B
zS^Zn)(QIQnhr!rl0rYQvpTNd<{ysmxQ<ED|<$K6Lld)Zd%w2p<>;Hi8J20+O>DhJ!
zL-hf;p<e+UBY>NH`!&qw*BGZ6Xfl4>KlQrL@q6StT$f+1sT%^D7(n_HgTD!ejLn0h
zp6?~{twG26_|=<y88F9ie=(hgaK|Kp%#g<qnj60new@ESXUO>d3<YE3w~C87VVtzh
v_#(xO*5G#y27aO^F?f9|7`#?<w}2GFkTB51xtRC~*Zp2$zb}=gnvCB&;E6rx

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/avr/platform.d b/lib/libssd1306/bld/ssd1306_hal/avr/platform.d
new file mode 100644
index 0000000..60db732
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/avr/platform.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_hal/avr/platform.o: ssd1306_hal/avr/platform.c \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h
diff --git a/lib/libssd1306/bld/ssd1306_hal/avr/platform.o b/lib/libssd1306/bld/ssd1306_hal/avr/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..53f2b0f23021df3d96784f371dd0e4ae54013571
GIT binary patch
literal 11416
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/energia/platform.d b/lib/libssd1306/bld/ssd1306_hal/energia/platform.d
new file mode 100644
index 0000000..9e507c0
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/energia/platform.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_hal/energia/platform.o: ssd1306_hal/energia/platform.cpp \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h
diff --git a/lib/libssd1306/bld/ssd1306_hal/energia/platform.o b/lib/libssd1306/bld/ssd1306_hal/energia/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..9500e5d7674fbbf1b4d0a5c1c9e02efc9e71cfb3
GIT binary patch
literal 2292
zcmbVN&5qPY5Uw8Yl0^f{Za@hNhcVG6?26d4v%nr810)OCNLj%O!hs8p$L^Uicx=n|
z5J(Q3kP>m_nmj<xIpiI3<qdcO&K$^B?d}<SAxcC^?fR<f>#F{#o_TV8?;9Zm84+}w
z<`&W3A)==Uo>zo*TBQ{l0xyzSU{{MjpYX?s5ST(F#1bp3wHPHOiPi_oxv*HN%37+d
zC2gsM>Z5azSfh6Pa@$%)p;htO^6|FSIn`PD7<qLBMHVg*6X*nnS`MikTu4a|-$nQ~
zpj$$`UOtM&sV!rp0G(=*igsGZ)b2$ngSdR0$@OF!$61+g&@?HcQ6fW|_Y<ed$ZmLa
zFc|xJ6@8mB<IhR6TwyvL#FBPz+_87gp6&JQ-j=)NZraWyafY#9jQc&{iq${21<d&!
z?btpK$0V5c{fGGl+Zox;&BAtyGVBK`nKK+tlc0>!#3`iG2oFQQ^lNsbQj$8wgD7(b
zQzRS0%F8mUkW7YY9!N)yog$L~XF^;)3S`C=3Yu?EodNH$D8k;k&24Y&$6cAod=&ZJ
zEcQ!enz%uhQFok9WH(L1-0$w^>3yuS=%%p@ol+KMH^|`Y#?gR>PWE1N-mwsBEQEG<
zb}riMxQGpX2datcpZfb)pjU6|F{|-<(5Jd34ab6qoAt7BU_RQJ`Ze1IzEZQfap&^t
z%>@|qH5{zpY<`Q>Yn)BDNIkZieRzf$SkyjXAEB=so<nr2VIQU+8ur2ZN2z(ho_BlS
z`_}VFfxQacy1uJGImx_Sjuie$=BYN^y-=bPJ%2FB<-<)fb{r*gZbfL!O{|4~c*IJz
zC{!nb1OE~FL&nD{|3@01hUT9yv0C}rW<LLDtZV!|^tQ&FgYSwt1L$iScc8!1_$yov
zpAmDIdspKJ(DyWkBB}A0;PWjBP7e7LgV%Wn`g4tch337n|2JrIi^r4FA3&FRrN;)9
z@=-}Hzix8zSjf#~?7P(o@);pkJIzMe&;4X1n^X9Z%@mX{klmiLgLE>Hc;x?APJxIm
z&pNaEZ<){L7|Ur4#ugipf8(7&jPLxvczmZOH=xRQpMe$=`vNw1@m1}A0pm|#T&MDL
z><EVH185_^131QjHu?5zn8SZ#oMfQI@VI~Kb$`L%BiG@&{Ax|z5ZKHCq?Z`{n_$Gm
zJUHt4o+IBHe4LM8y~&pW^BnFkmXk1Unk29p^7vV6!yC1T{(#Sj;XQ+cvEi-aVvZY<
xju|de%w!F`s|fHDJ%PdNTfyM9n!5$05P^h&7S6@OPq@ze3;TVpBGt$6{sG~sJ;VS2

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/linux/platform.d b/lib/libssd1306/bld/ssd1306_hal/linux/platform.d
new file mode 100644
index 0000000..642c222
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/linux/platform.d
@@ -0,0 +1 @@
+../bld/ssd1306_hal/linux/platform.o: ssd1306_hal/linux/platform.c
diff --git a/lib/libssd1306/bld/ssd1306_hal/linux/platform.o b/lib/libssd1306/bld/ssd1306_hal/linux/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..970a36e74b6a27e5e6d43128ce81b7fb4dc8720d
GIT binary patch
literal 1124
zcmah|&5qMB5T4TIAE8|#P9PLcED}kYc3G{E0!Y<T4l5{B+>oL)aoR!>N3pXiTsZLz
zyaaE;OYjPPg7P`FH)$on(qz7G=JVJdJKs*vUUfPhGNVHiY8cVaOGMw1JgNnUbdzq-
z=*<Uf=y{gcclu7xva{Sy(ooEOPhoD0&x^vIRx_}eSJRaFgFbM|^O>y!$43ZcQRRo{
z<x|Us^sTULA!C1*S14^KNtH)(!E;-%+9RFBp$yv`Yq4d-3Z)YyMC=WE$H6>I-E@&x
zOSecvneZ}mB68<EV=m9*GIYl!|AeB#<tdA8$%J&H0x`^*D$|9CM#JGV>k!9%tj}t?
z)cAI<_Gq<kGDO|2PAZOOwni6`Tj0+xVypFCV86v50KaJQM;BOu)p~$$vxnXF_qNns
zy1c`$?C`5Zt)2zJWE{K>0;<8;2E0EV)j(!NP_kK#zp|2RLXP;7$#4oU%Z;BKB-v7u
zqb`vgG#QZLl?1peW-z1%s&G*Ah-Vqg<<?&RMeZS~dSXtudArRF)31kG*VU=N=~U0J
z!TzUvqU-5$`kyhZxu+AY>*<tQ_eUeE_pbIhgeh-yzkuJt%uqRH6YY)eK7x0QNau{U
s{Q`Rk{zm>f>^4ljmVM35SwU$ZlU^#IhpMH<0j#YXL-(=HY(7T!2ddYe<NyEw

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/mingw/platform.d b/lib/libssd1306/bld/ssd1306_hal/mingw/platform.d
new file mode 100644
index 0000000..74d5baa
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/mingw/platform.d
@@ -0,0 +1 @@
+../bld/ssd1306_hal/mingw/platform.o: ssd1306_hal/mingw/platform.c
diff --git a/lib/libssd1306/bld/ssd1306_hal/mingw/platform.o b/lib/libssd1306/bld/ssd1306_hal/mingw/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..8d7da5dddfb814c3ec8b2c76fed1194845a01613
GIT binary patch
literal 1124
zcmah|&5qMB5T4QnmLH)-Xitk!II&1LY1(DALJA;NOF68dP;o=D(!@yvaU8`CEL=G8
z47>zy!b|W9eS$Jh?M+$<7-=%!H}hp|Pn>V3XD@oa9$4$a3|a>8^Af;!EFLw2L%0Fg
zVe;yoGxmMQAG$+#;1FJrBoE~x@HG}he#}ZTuTx~PsOLEgMnlB8C{kh)$48jpQ5}Sz
zs>cpN>1*i_sp23lYHUrCq%I<riGoPhL@Xz9sKPGCwb*&YO0AP1W$cdz$8-_q9?y#O
zvsdP!N<_uo2)u>h%o9aih2FFhAF!$PM9yNOm{eX=V$RF6xpvbCU@{&*aSrjg56xNa
zl-k&x)ebCIZ3UpeF-gsFm>uh5<|gu|7rEtXA92v(_Ygnp@CO%IgXL<3&vp;n>+fu+
z`*3-SU)kbU0Xj3IbT*|gDTM}{t-;&VNdpuwX~oh8e`S?01YG%rt8k7{RqMF0NU?JT
zuKtMN;*b$Cyd^Zx3T81%E!1h+@JMjZ3bnD<e~|+$>Y3Qnt?zF8hMm`aqwAZ}-*kHB
zyXgPZJu>}FJM+(2)_$iGqZ^o#UiU{UYxb`9I7Zje>V6@9gKkaNw9ibmy1SUXV@0NB
uwcQ&yz~pbNUqiozu5Zhp;r6UZVGmz=u7NS#OWSSqu5OCD_f2K}u)05aPoCBQ

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/stm32/platform.d b/lib/libssd1306/bld/ssd1306_hal/stm32/platform.d
new file mode 100644
index 0000000..cf8be48
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/stm32/platform.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_hal/stm32/platform.o: ssd1306_hal/stm32/platform.c \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h
diff --git a/lib/libssd1306/bld/ssd1306_hal/stm32/platform.o b/lib/libssd1306/bld/ssd1306_hal/stm32/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..f657f0d886c5ec8976aab75e78293bd3e62922c8
GIT binary patch
literal 2192
zcmbVNOK%)S5U$y=gQInvH3<)4!7j)FM=<-a6CaQ^SeRfWEHFtpaABC;>3zUFRx`6v
zcu1T$aYaI0Iq@eDe}Nl+fosknh41U>-ko(oAWG_~uO3}h(_J<5_3hKQ9mf$%j@*@{
zB=Y;Z$Tu+F&<=aDEe#2P*Tq?*s>a9jd{}av3xtldLFU%hr%54B?Fp@1Lpa#hN@=5%
zHjJbLn(gB3O1*xo?rtH+wsURkO5JVlG#k$#q_HsmRV-bC=*<kSsfXt}bl1Uaj`PRX
zB^0Dz6E6qQEH`Ouvvyg(u`^Hd={Qkgixo#{GH$JCjBz*#veNpv%ff%@w1^d^^FgHK
z<h>7D$Gu*wx8L4xcUxYZc%vxDC;c9A>gAtJXWn2whE(q8AM67&muD1*H=u}z^L}tY
zyV>&K`hMQ>@*?bylQ}|rqtQGW7SlBGa-})UqcA9fs*GIf!BEZUm&>wX{Z_0x&%@q9
z_t2jNQ713rgZ<7d3W`yh#qFVVCTXlXX%c2Z=PXM<MV`EqMk@3Ql^31i47yG<9dMaI
z|7*`<MM$LxIXOOly|srUy>8A^Uw-vb?d3Ij_^4`gS2`VyWm?JlxX^4uxMdaC{}gb)
zBEJCqMn!&Qfe9WyI>2*T!}<KHP3wxDoJ9mz^k7uviwjKPO8uO?DMu@s3v#w1UzCqm
z<n#G2N%eSr|L&Rpj_->GrzN;^`$U5xp81&?Yy5@EQX{laLxt}3gTWwE_q$@{Xqu>{
zG)+cnS2(~<qbvxS#lfsA@F$5cm-?p-<|pPk;_XuZA~F1%;ClwY34UlWn7$|a@C@EE
zdggi8V15to82l>uM+TFBV(_2fycLH<fnLI5Z6AQYY%sr%U4y>|mv;VnTm%E~A}jgC
zqC!0=q|I5BHU>l5nTmpTd1gEn*ed6@Vh*w(8LQPTJXX5}DJ-Pg*YYrpV})V<ue1Y4
z_N(p0^1Hv>ZF^atKh&-<{gWT(f%p7xe*9qD*bK>d>;+5K_8JuI+9PB53c^poxMr=V
zjWf#`wR-^N2Q1!~C2M1ESWMe5SkDp|vNrZiHSaEdUChJ0oKl-N1h#ts<u|OG1ct25
zhg^-<MZ8_;7>`qK<IRA%hy6v`gi!vjN|`pUFAcYTJ2jCXOBemLe&3$+`x$;${>G2~
tFfHg;2uDzIEU#j*z6KU+wRa0B4HzN<LySY>*jD}S;eEf;mhxf!{sN+pA#nfz

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_hal/template/platform.d b/lib/libssd1306/bld/ssd1306_hal/template/platform.d
new file mode 100644
index 0000000..8a6f1db
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_hal/template/platform.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_hal/template/platform.o: ssd1306_hal/template/platform.c \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h
diff --git a/lib/libssd1306/bld/ssd1306_hal/template/platform.o b/lib/libssd1306/bld/ssd1306_hal/template/platform.o
new file mode 100644
index 0000000000000000000000000000000000000000..7b559eca43713c4e8eab9f53060b6cc7ad976005
GIT binary patch
literal 2200
zcmbVNOK%)S5U$>_gQImEn*<VJ!44=8M`UJq?Zk?ZHdr{pNLa*5$RSe1FuT+HfO)KD
zW}^fSxqyVkl?w;%{0k2J2>2P~3{v>2AG<S#C{ar4uCE?lRnuLy`}pSJ$3h6QB<Kz;
zB%;5TiN1&NigMVZ4O*uVc$vf!s~Wt$$(to1PB0W=g_+Y>o}?v-#w$v>gmADeX=z1E
zD@IZQ&2bVJsM);Ubk>k#L%h3ors=dcTkGc#(pWhDSu9loslyyxQ5X9%beF&zLj1jU
z3I(ap#K!@&^dV(!HBPH97PGXNj8Yl7TydPGBe$k8#=$tuwe`O)bN_|YJXVy=`mv;g
z&+fYW-LBi+_P70x>m{i-jKgBw>oU%~;_J!O>(54z^oiciHZbS%jAHi+6v<%L3m@cH
zT@S9e3fC*js5eSy2<;7rvvg2SveYZ2;xG@Runem*a><7SIc2|s76q%X;;M@x>h5%Q
zgK-$QOPNgLu#|1yhgqKZ18R@6M7Fau%ER_io_&Q>MLUaS<dw20+k+`|?Re7XWn#V5
zng6SUDs|Ao{{9E<7B2RZxmDEy^{v{|OZ4Pv)#}tb9t~z%%KA9atU|bM6*&JIaIYf2
z1^i(}zBtDWo;=;bzNq1N{(AE|q$X${!67vu75U^GGjOPROkSnEn&t!@)#Q`(MNK}Q
z{}fd(I0)_>1)l@~DR8L4?VAS*l*u&6<w)UgWS$wpKa3>0I0*awTt4WKmE%b&7t$mh
zW*y=|7VEkoWF~=`m*B55KCShy8|;F=!FU53=xr?aZ-H+a{1N!B!C>m0*oW`nhS77L
zPYveZh1&+d4}Q;J=3g584>-Sy;G#h9U~z4qgTH6+58xexe*q`Ic$Ac3AH2*pA6rz)
zhb8$uljLJM$j@aQ`ufiJR$!~#U(FomVLFoaBYds)2vS(c>OjeZEJ-AW`bB9Ij@+-d
z6ZP-^;<W8$b^lO1#`G*do(F#C=lSsuw~fsqIUe_dC2PA31$XV9F?<K%S71D|(zA_c
zmS@zS0i>U?_`NJy8~29AZ2JxCJOe}4#ywNbdl`RWoQL!Bl-j%zuss7ve_&l@V9446
z$klk)5bpwX9FM2m#+w538SXEpRS5cTOUrEI^{wI7Z?mEAMSE!<_WSXe-|z4{W1Wo6
v#)N53e?r)UfyeSJ7T33q#kJbE1*G#Z#0(5^EG8b?s^5Kl?@!92H|zH=%1tE-

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_menu.d b/lib/libssd1306/bld/ssd1306_menu.d
new file mode 100644
index 0000000..4126594
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_menu.d
@@ -0,0 +1,18 @@
+../bld/ssd1306_menu.o: ssd1306_menu.c font6x8.h ssd1306_fonts.h \
+ ssd1306_hal/io.h ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h nano_gfx_types.h ssd1306.h ssd1306_generic.h \
+ ssd1306_1bit.h ssd1306_8bit.h ssd1306_16bit.h lcd/lcd_common.h \
+ ssd1306_hal/io.h lcd/oled_ssd1306.h lcd/oled_ssd1325.h lcd/lcd_common.h \
+ lcd/oled_ssd1327.h lcd/oled_ssd1331.h lcd/oled_ssd1351.h \
+ lcd/oled_sh1106.h lcd/lcd_pcd8544.h lcd/lcd_il9163.h lcd/lcd_ili9341.h \
+ lcd/composite_video.h lcd/oled_template.h
diff --git a/lib/libssd1306/bld/ssd1306_menu.o b/lib/libssd1306/bld/ssd1306_menu.o
new file mode 100644
index 0000000000000000000000000000000000000000..8303a4f80f570fa1682f78c25c4c9b7563e9d175
GIT binary patch
literal 51752
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/bld/ssd1306_uart.d b/lib/libssd1306/bld/ssd1306_uart.d
new file mode 100644
index 0000000..8214b7c
--- /dev/null
+++ b/lib/libssd1306/bld/ssd1306_uart.d
@@ -0,0 +1,13 @@
+../bld/ssd1306_uart.o: ssd1306_uart.c ssd1306_uart.h ssd1306_hal/io.h \
+ ssd1306_hal/UserSettings.h ssd1306_hal/avr/io.h \
+ /usr/avr/include/avr/io.h /usr/avr/include/avr/sfr_defs.h \
+ /usr/avr/include/inttypes.h /usr/lib/gcc/avr/12.2.0/include/stdint.h \
+ /usr/avr/include/stdint.h /usr/avr/include/avr/iom328p.h \
+ /usr/avr/include/avr/portpins.h /usr/avr/include/avr/common.h \
+ /usr/avr/include/avr/version.h /usr/avr/include/avr/fuse.h \
+ /usr/avr/include/avr/lock.h /usr/avr/include/avr/interrupt.h \
+ /usr/avr/include/avr/pgmspace.h /usr/lib/gcc/avr/12.2.0/include/stddef.h \
+ /usr/avr/include/avr/sleep.h /usr/avr/include/avr/eeprom.h \
+ /usr/avr/include/util/delay.h /usr/avr/include/util/delay_basic.h \
+ /usr/avr/include/math.h /usr/avr/include/stdlib.h \
+ /usr/avr/include/string.h /usr/avr/include/util/setbaud.h
diff --git a/lib/libssd1306/bld/ssd1306_uart.o b/lib/libssd1306/bld/ssd1306_uart.o
new file mode 100644
index 0000000000000000000000000000000000000000..dd4a820f1ae1b3bae10d680f97cf791b3f211fad
GIT binary patch
literal 10932
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

literal 0
HcmV?d00001

diff --git a/lib/libssd1306/src/Makefile.avr b/lib/libssd1306/src/Makefile.avr
new file mode 100644
index 0000000..cce4c3a
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.avr
@@ -0,0 +1,47 @@
+#    MIT License
+#
+#    Copyright (c) 2018, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+#################################################################
+# Makefile to build ssd1306 library for AVR controllers
+#
+# Accept the following parameters:
+# CC
+# CXX
+# STRIP
+# AR
+# MCU
+# FREQUENCY
+
+CC = avr-gcc
+CXX = avr-g++
+STRIP = avr-strip
+AR = avr-ar
+MCU ?= atmega328p
+FREQUENCY ?= 16000000
+
+CCFLAGS += -mmcu=$(MCU) -DF_CPU=$(FREQUENCY) -Wno-array-bounds
+
+ifeq ($(ADAFRUIT),y)
+INCLUDES += -I./ssd1306_hal/avr/arduino
+endif
+
+include Makefile.common
diff --git a/lib/libssd1306/src/Makefile.common b/lib/libssd1306/src/Makefile.common
new file mode 100644
index 0000000..189bdf4
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.common
@@ -0,0 +1,107 @@
+#    MIT License
+#
+#    Copyright (c) 2018, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+#################################################################
+# Makefile containing common logic for all systems
+#
+# Accepts the following parameters:
+# CC
+# CXX
+# STRIP
+# AR
+
+default: all
+
+DESTDIR ?=
+BLD ?= ../bld
+BACKSLASH?=/
+MKDIR?=mkdir -p
+convert=$(subst /,$(BACKSLASH),$1)
+
+.SUFFIXES: .c .cpp .ino
+
+$(BLD)/%.o: %.c
+	-$(MKDIR) $(call convert,$(dir $@))
+	$(CC) -std=gnu11 $(CCFLAGS) -c $< -o $@
+
+$(BLD)/%.o: %.ino
+	-$(MKDIR) $(call convert,$(dir $@))
+	$(CXX) -std=c++11 $(CCFLAGS) $(CXXFLAGS) $(CCFLAGS-$(basename $(notdir $@))) -x c++ -c $< -o $@
+
+$(BLD)/%.o: %.cpp
+	-$(MKDIR) $(call convert,$(dir $@))
+	$(CXX) -std=c++11 $(CCFLAGS) $(CXXFLAGS) $(CCFLAGS-$(basename $(notdir $@))) -c $< -o $@
+
+################ OPTIONS ##########################
+
+ifeq ($(ADAFRUIT),y)
+ADAFRUIT_DIR ?= $(shell readlink -f ~)/Arduino/libraries/Adafruit_GFX_Library
+
+INCLUDES += -I$(ADAFRUIT_DIR) \
+
+#	-I$(shell readlink -f ../src)/ssd1306_hal/linux/arduino
+
+CCFLAGS-Adafruit_GFX= -DARDUINO=100
+
+SRCS += \
+	$(ADAFRUIT_DIR)/Adafruit_GFX.cpp
+endif
+
+# ************* Common defines ********************
+
+INCLUDES += \
+        -I.
+
+CCFLAGS += -MD -g -Os $(INCLUDES) -Wall -Werror -ffunction-sections -fdata-sections \
+	-fno-exceptions
+
+CXXFLAGS += -fno-rtti
+
+ifeq ($(SDL_EMULATION),y)
+    CCFLAGS += -DSDL_EMULATION -I../tools/sdl
+endif
+
+.PHONY: clean ssd1306 all help
+
+include Makefile.src
+
+####################### Compiling library #########################
+
+$(BLD)/libssd1306.a: $(OBJS)
+	$(AR) rcs $@ $(OBJS)
+
+ssd1306: $(BLD)/libssd1306.a
+
+all: ssd1306
+
+clean:
+	rm -rf $(BLD)
+
+help:
+	@echo "Makefile accepts the following options:"
+	@echo "    ADAFRUIT=y/n       Enables compilation of Adafruit GFX library"
+	@echo "    ADAFRUIT_DIR=path  Path to Adafruit GFX library"
+	@echo "    SDL_EMULATION=y/n  Enables SDL emulator in the library"
+	@echo "    FREQUENCY=N        Frequency in Hz"
+	@echo "    MCU=mcu_code       Specifies MCU to compile for (valid for AVR)"
+
+-include $(OBJS:%.o=%.d)
diff --git a/lib/libssd1306/src/Makefile.energia b/lib/libssd1306/src/Makefile.energia
new file mode 100644
index 0000000..840c85c
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.energia
@@ -0,0 +1,4 @@
+# NO MAKEFILE REQUIRED FOR ENERGIA PLATFORM
+#
+# For using ssd1306 library just copy it to the libraries folder
+# located in the Energia folder in Documents.
diff --git a/lib/libssd1306/src/Makefile.esp32 b/lib/libssd1306/src/Makefile.esp32
new file mode 100644
index 0000000..ac1f970
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.esp32
@@ -0,0 +1,5 @@
+# NO MAKEFILE REQUIRED FOR ESP32 IDF platform, as Makefile.esp32 in examples
+# generates all required mk file to compile sketches and library.
+#
+# For using ssd1306 library as IDF component module, there is component.mk,
+# located in root folder of ssd1306 library
diff --git a/lib/libssd1306/src/Makefile.linux b/lib/libssd1306/src/Makefile.linux
new file mode 100644
index 0000000..4a7de73
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.linux
@@ -0,0 +1,38 @@
+#    MIT License
+#
+#    Copyright (c) 2018, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+#################################################################
+# Makefile to build ssd1306 library for AVR controllers
+#
+# Accept the following parameters:
+# CC
+# CXX
+# STRIP
+# AR
+# MCU
+# FREQUENCY
+
+ifeq ($(ADAFRUIT),y)
+INCLUDES += -I./ssd1306_hal/linux/arduino
+endif
+
+include Makefile.common
diff --git a/lib/libssd1306/src/Makefile.mingw32 b/lib/libssd1306/src/Makefile.mingw32
new file mode 100644
index 0000000..eb01c2b
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.mingw32
@@ -0,0 +1,42 @@
+#    MIT License
+#
+#    Copyright (c) 2018, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+#################################################################
+# Makefile to build ssd1306 library for AVR controllers
+#
+# Accept the following parameters:
+# CC
+# CXX
+# STRIP
+# AR
+# MCU
+# FREQUENCY
+
+CC=gcc
+MKDIR=mkdir
+BACKSLASH=\\
+
+ifeq ($(ADAFRUIT),y)
+INCLUDES += -I./ssd1306_hal/mingw/arduino
+endif
+
+include Makefile.common
diff --git a/lib/libssd1306/src/Makefile.src b/lib/libssd1306/src/Makefile.src
new file mode 100644
index 0000000..7bb1317
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.src
@@ -0,0 +1,80 @@
+#    MIT License
+#
+#    Copyright (c) 2018-2019, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+
+SRCS_C = \
+	ssd1306_fonts.c \
+	ssd1306_generic.c \
+	ssd1306_1bit.c \
+	ssd1306_8bit.c \
+	ssd1306_16bit.c \
+	ssd1306_menu.c \
+	ssd1306_hal/avr/platform.c \
+	ssd1306_hal/linux/platform.c \
+	ssd1306_hal/mingw/platform.c \
+	ssd1306_hal/stm32/platform.c \
+	ssd1306_hal/template/platform.c \
+	intf/i2c/ssd1306_i2c.c \
+	intf/i2c/ssd1306_i2c_embedded.c \
+	intf/i2c/ssd1306_i2c_twi.c \
+	intf/spi/ssd1306_spi.c \
+	intf/spi/ssd1306_spi_avr.c \
+	intf/spi/ssd1306_spi_usi.c \
+	intf/ssd1306_interface.c \
+	intf/uart/ssd1306_uart_builtin.c \
+	lcd/lcd_common.c \
+	lcd/lcd_pcd8544.c \
+	lcd/lcd_il9163.c \
+	lcd/lcd_ili9341.c \
+	lcd/oled_sh1106.c \
+	lcd/oled_ssd1306.c \
+	lcd/oled_ssd1325.c \
+	lcd/oled_ssd1327.c \
+	lcd/oled_ssd1331.c \
+	lcd/oled_ssd1351.c \
+	lcd/oled_template.c \
+	lcd/vga_monitor.c \
+	intf/vga/vga.c \
+	intf/vga/atmega328p/vga128x64.c \
+	intf/vga/atmega328p/vga96x40.c \
+	ssd1306_uart.c \
+
+SRCS_CPP = \
+	nano_engine/canvas.cpp \
+	nano_engine/core.cpp \
+	nano_gfx.cpp \
+	sprite_pool.cpp \
+	ssd1306_console.cpp \
+	ssd1306_hal/arduino/platform.cpp \
+	ssd1306_hal/energia/platform.cpp \
+	intf/vga/esp32/vga128x64.cpp \
+	intf/vga/esp32/CompositeOutput.cpp \
+
+SRCS = $(SRCS_C) $(SRCS_CPP)
+
+# Due to absence of Print class tiny_ssd1306.cpp cannot be compiled without Arduino libs.
+#	tiny_ssd1306.cpp \
+
+OBJS_C = $(addprefix src/, $(addsuffix .o, $(basename $(SRCS_C))))
+
+OBJS = $(addprefix $(BLD)/, $(addsuffix .o, $(basename $(SRCS))))
+
diff --git a/lib/libssd1306/src/Makefile.stm32 b/lib/libssd1306/src/Makefile.stm32
new file mode 100644
index 0000000..b9dfc92
--- /dev/null
+++ b/lib/libssd1306/src/Makefile.stm32
@@ -0,0 +1,49 @@
+#    MIT License
+#
+#    Copyright (c) 2018, Alexey Dynda
+#
+#    Permission is hereby granted, free of charge, to any person obtaining a copy
+#    of this software and associated documentation files (the "Software"), to deal
+#    in the Software without restriction, including without limitation the rights
+#    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#    copies of the Software, and to permit persons to whom the Software is
+#    furnished to do so, subject to the following conditions:
+#
+#    The above copyright notice and this permission notice shall be included in all
+#    copies or substantial portions of the Software.
+#
+#    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+#    SOFTWARE.
+#
+#################################################################
+# Makefile to build ssd1306 library for STM32 controllers
+#
+# Accept the following parameters:
+# CC
+# CXX
+# STRIP
+# AR
+# MCU
+# FREQUENCY
+
+CC = arm-none-eabi-gcc
+CXX = arm-none-eabi-g++
+STRIP = arm-none-eabi-strip
+AR = arm-none-eabi-ar
+CORE ?= cortex-m3
+MCU ?= stm32f4x
+FREQUENCY ?= 16000000
+
+CCFLAGS += -DSTM32F4
+CCFLAGS += -mlittle-endian -mthumb -mthumb-interwork -mcpu=$(CORE) -DF_CPU=$(FREQUENCY)
+
+ifeq ($(ADAFRUIT),y)
+INCLUDES += -I./ssd1306_hal/avr/arduino
+endif
+
+include Makefile.common
diff --git a/lib/libssd1306/src/README.md b/lib/libssd1306/src/README.md
new file mode 100644
index 0000000..d1775d1
--- /dev/null
+++ b/lib/libssd1306/src/README.md
@@ -0,0 +1,169 @@
+# ssd1306 library introduction # {#index}
+
+***
+
+[tocstart]: # (toc start)
+
+  * [Introduction](#introduction)
+  * [Key Features](#key-features)
+  * [Supported displays](#supported-displays)
+  * [Supported platforms](#supported-platforms)
+  * [Setting up](#setting-up)
+  * [License](#license)
+
+[tocend]: # (toc end)
+
+
+<a name="introduction"></a>
+## Introduction
+
+SSD1306 driver is Arduino style C/C++ library with unicode support. The library can be compiled for plain Linux
+(for example, raspberry spi), or you can use it with plain avr-gcc compiler without Arduino IDE, or with
+ESP32 IDF. It supports monochrome and RGB oleds and has debug mode, allowing to execute code on PC, using SDL2.0.
+Initially the library is intended for very small microcontrollers (with a little of RAM). It was developed to use as
+few resources as possible, but still has powerful capabilities, allowing to develop nice animation.
+It works on any powerful devices like raspberry pi, esp32; and can be easily ported to new platform.
+
+Since ssd1306 library supports different display types: monochrome, 8-bit color, 16-bit color displays, -
+there are several group of API functions:
+
+  * Generic API functions (font specific, cursor positioning, menu implementation)
+  * 1-bit API functions for monochrome displays (these ones can be used both for color and mono lcd)
+  * 8-bit API functions for color displays (these ones work only for color displays)
+  * 16-bit API functions for color displays (only color displays)
+
+Also, for graphics animation there special C++ API, called [Nano Engine](nano_engine/README.md).
+
+<a name="key-features"></a>
+## Key Features
+
+ * Supports color, monochrome OLED displays, and VGA monitor
+ * The library has modular structure, and some modules can be excluded from compilation at all to reduce flash usage.
+ * Needs very little RAM (Attiny85 with Damellis package needs minimum 25 bytes of RAM to communicate with OLED)
+ * Fast implementation to provide reasonable speed on slow microcontrollers
+ * Supports i2c and spi interfaces:
+   * i2c (software implementation, Wire library, AVR Twi, Linux i2c-dev)
+   * spi (4-wire spi via Arduino SPI library, AVR Spi, AVR USI module)
+ * Primitive graphics functions (lines, rectangles, pixels, bitmaps)
+ * Printing text to display (using fonts of different size, you can use GLCD Font Creator to create new fonts)
+ * Includes [graphics engine](https://github.com/lexus2k/ssd1306/wiki/Using-NanoEngine-for-systems-with-low-resources) to support
+   double buffering on tiny microcontrollers.
+ * Can be used for game development (bonus examples):
+   * Arkanoid game ([arkanoid](examples/games/arkanoid) in old style API and [arkanoid8](examples/games/arkanoid8) in new style API)
+   * Simple [Lode runner](examples/games/lode_runner) game.
+   * [Snowflakes](examples/nano_engine/snowflakes)
+
+The i2c pins can be changed via API functions. Please, refer to documentation. Keep in mind,
+that the pins, which are allowed for i2c or spi interface, depend on the hardware.
+The default spi SCLK and MOSI pins are defined by SPI library, and DC, RST, CES pins are configurable
+through API.
+
+<a name="supported-displays"></a>
+## Supported displays:
+
+| **Display** | **I2C** | **SPI** | **Orientation** | **Comments** |
+| :-------- |:---:|:---:|:---:|:---------|
+| sh1106 128x64 | X |   |   |   |
+| ssd1306 128x64 | X | X |   |   |
+| ssd1306 128x32 | X | X |   |   |
+| ssd1325 128x64 |   | X |   |   |
+| ssd1327 128x128 |   | X |   |   |
+| ssd1351 128x128 |   | X |   |   |
+| il9163 128x128 |   | X | X |   |
+| st7735 128x160 |   | X | X |   |
+| ili9341 240x320 |   | X | X |    |
+| pcd8544 84x48 |   | X  |   | Nokia 5110 |
+| vga 96x40 color |   |   |   | direct D-sub output, atmega328p only |
+| vga 128x64 bw |   |   |   | direct D-sub output, atmega328p only |
+
+<a name="supported-platforms"></a>
+## Supported platforms
+
+| **Platforms** | **I2C** | **SPI** | **Comments** |
+| :-------- |:---:|:---:|:---------|
+| **Arduino** |     |     |          |
+| Attiny85, Attiny45  |  X  |  X  | Refer to [Damellis attiny package](https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json) |
+| Attiny84, Attiny44  |  X  |  X  | Refer to [Damellis attiny package](https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json) |
+| Atmega328p, Atmega168  |  X  |  X  |    |
+| Atmega32u4  |  X  |  X  |    |
+| Atmega2560  |  X  |  X  |    |
+| Digispark, including PRO version  |  X  |  X  |  check [examples compatibility list](examples/Digispark_compatibility.txt)  |
+| ESP8266  |  X  |  X  | check [examples compatibility list](examples/ESP8266_compatibility.txt)   |
+| ESP32  |  X  |  X  | check [examples compatibility list](examples/ESP8266_compatibility.txt)   |
+| STM32  |  X  |  X  | [stm32duino](https://github.com/stm32duino/wiki/wiki)  |
+| Arduino Zero | X  | X  |    |
+| Nordic nRF5 (nRF51, nRF52) | X | X | nRF users, enable c++11 in platform.txt `-std=gnu++11`   |
+| Nordic nRF5 (nRF51, nRF52) | X | X | via [Sandeep Mistry arduino-nRF5](https://github.com/sandeepmistry/arduino-nRF5) package |
+| **Plain AVR** |   |     |          |
+| Attiny85, Attiny45 |  X  |  X  |         |
+| Atmega328p, Atmega168 |  X  |  X  |         |
+| Atmega32u4  |  X  |  X  |    |
+| **Plain ESP32** |   |     |          |
+| ESP32 |  X  | X  |  library can be used as IDF component  |
+| **Linux**  |    |     |          |
+| Raspberry Pi |  X  |  X  | i2c-dev, spidev, sys/class/gpio  |
+| [SDL Emulation](https://github.com/lexus2k/ssd1306/wiki/How-to-run-emulator-mode) |  X  |  X  | demo code can be run without real OLED HW via SDL library |
+| **Windows**  |    |     |          |
+| [SDL Emulation](https://github.com/lexus2k/ssd1306/wiki/How-to-run-emulator-mode) |  X  |  X  | demo code can be run without real OLED HW via MinGW32 + SDL library |
+
+Digispark users, please check compilation options in your Arduino prior to using this library.
+Ssd1306 library requires at least c++11 and c99 (by default Digispark package misses the options
+-std=gnu11, -std=gnu++11).
+
+<a name="setting-up"></a>
+## Setting up
+
+*i2c Hardware setup is described [here](https://github.com/lexus2k/ssd1306/wiki/Hardware-setup)*
+
+*Setting up for Arduino from github sources)*
+ * Download source from https://github.com/lexus2k/ssd1306
+ * Put the sources to Arduino/libraries/ssd1306/ folder
+
+*Setting up for Arduino from Arduino IDE library manager*
+ * Install ssd1306 library (named ssd1306 by Alexey Dynda) via Arduino IDE library manager
+
+*Using with plain avr-gcc:*
+ * Download source from https://github.com/lexus2k/ssd1306
+ * Build the library (variant 1)
+   * cd ssd1306/src && make -f Makefile.avr MCU=\<your_mcu\>
+   * Link library to your project (refer to [Makefile.avr](examples/Makefile.avr) in examples folder).
+ * Build demo code (variant 2)
+   * cd ssd1306/tools && ./build_and_run.sh -p avr -m \<your_mcu\> ssd1306_demo
+
+ *For esp32:*
+  * Download source from https://github.com/lexus2k/ssd1306
+  * Put downloaded sources to components/ssd1306/ folder.
+  * Compile your project as described in ESP-IDF build system documentation
+
+For more information about this library, please, visit https://github.com/lexus2k/ssd1306.
+Doxygen documentation can be found at [github.io site](http://lexus2k.github.io/ssd1306).
+If you found any problem or have any idea, please, report to Issues section.
+
+<a name="license"></a>
+## License
+
+The library is free. If this project helps you, you can give me a cup of coffee. [Donate via Paypal](https://www.paypal.me/lexus2k)
+
+MIT License
+
+Copyright (c) 2016-2019, Alexey Dynda
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
diff --git a/lib/libssd1306/src/doxygen.cfg b/lib/libssd1306/src/doxygen.cfg
new file mode 100644
index 0000000..e326b30
--- /dev/null
+++ b/lib/libssd1306/src/doxygen.cfg
@@ -0,0 +1,2499 @@
+# Doxyfile 1.8.12
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
+
+DOXYFILE_ENCODING      = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME           = "SSD1306 OLED display driver"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER         = 1.8.3
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF          = "This library is developed to control SSD1306/SSD1331/SSD1351/IL9163/PCD8554 RGB i2c/spi LED displays"
+
+# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+# in the documentation. The maximum height of the logo should not exceed 55
+# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+# the logo to the output directory.
+
+PROJECT_LOGO           = 
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
+
+OUTPUT_DIRECTORY       = ../docs
+
+# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
+
+CREATE_SUBDIRS         = NO
+
+# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+# characters to appear in the names of generated files. If set to NO, non-ASCII
+# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+# U+3044.
+# The default value is: NO.
+
+ALLOW_UNICODE_NAMES    = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
+
+OUTPUT_LANGUAGE        = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
+
+BRIEF_MEMBER_DESC      = YES
+
+# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+# The default value is: YES.
+
+REPEAT_BRIEF           = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
+
+ABBREVIATE_BRIEF       = "The $name class" \
+                         "The $name widget" \
+                         "The $name file" \
+                         is \
+                         provides \
+                         specifies \
+                         contains \
+                         represents \
+                         a \
+                         an \
+                         the
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
+# description.
+# The default value is: NO.
+
+ALWAYS_DETAILED_SEC    = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+# The default value is: NO.
+
+INLINE_INHERITED_MEMB  = NO
+
+# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
+
+FULL_PATH_NAMES        = YES
+
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
+STRIP_FROM_PATH        = 
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
+
+STRIP_FROM_INC_PATH    = 
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
+
+SHORT_NAMES            = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
+
+JAVADOC_AUTOBRIEF      = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
+
+QT_AUTOBRIEF           = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
+
+INHERIT_DOCS           = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+# page for each member. If set to NO, the documentation of a member will be part
+# of the file/class/namespace that contains it.
+# The default value is: NO.
+
+SEPARATE_MEMBER_PAGES  = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE               = 4
+
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
+
+ALIASES                = 
+
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
+
+TCL_SUBST              = 
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_FOR_C  = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_JAVA   = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN   = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL   = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
+# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
+# Fortran. In the later case the parser tries to guess whether the code is fixed
+# or free formatted code, this is the default for Fortran type files), VHDL. For
+# instance to make doxygen treat .inc files as Fortran files (default is PHP),
+# and .f files as C (default is Fortran), use: inc=Fortran f=C.
+#
+# Note: For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING      = 
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT       = YES
+
+# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+# to that level are automatically included in the table of contents, even if
+# they do not have an id attribute.
+# Note: This feature currently applies only to Markdown headings.
+# Minimum value: 0, maximum value: 99, default value: 0.
+# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
+# TOC_INCLUDE_HEADINGS   = 0
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT       = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
+
+BUILTIN_STL_SUPPORT    = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+# The default value is: NO.
+
+CPP_CLI_SUPPORT        = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT            = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT   = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+# The default value is: NO.
+
+DISTRIBUTE_GROUP_DOC   = NO
+
+# If one adds a struct or class to a group and this option is enabled, then also
+# any nested class or struct is added to the same group. By default this option
+# is disabled and one has to add nested compounds explicitly via \ingroup.
+# The default value is: NO.
+
+# GROUP_NESTED_COMPOUNDS = NO
+
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
+
+SUBGROUPING            = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS  = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT   = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE      = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
+
+EXTRACT_ALL            = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PRIVATE        = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE        = NO
+
+# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
+
+EXTRACT_STATIC         = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO,
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
+
+EXTRACT_LOCAL_CLASSES  = YES
+
+# This flag is only useful for Objective-C code. If set to YES, local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO, only methods in the interface are
+# included.
+# The default value is: NO.
+
+EXTRACT_LOCAL_METHODS  = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
+
+EXTRACT_ANON_NSPACES   = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_MEMBERS     = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO, these classes will be included in the various overviews. This option
+# has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
+
+HIDE_UNDOC_CLASSES     = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO, these declarations will be
+# included in the documentation.
+# The default value is: NO.
+
+HIDE_FRIEND_COMPOUNDS  = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO, these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
+
+HIDE_IN_BODY_DOCS      = NO
+
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
+
+INTERNAL_DOCS          = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES, upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
+
+CASE_SENSE_NAMES       = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES, the
+# scope will be hidden.
+# The default value is: NO.
+
+HIDE_SCOPE_NAMES       = NO
+
+# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+# append additional text to a page's title, such as Class Reference. If set to
+# YES the compound reference will be hidden.
+# The default value is: NO.
+
+HIDE_COMPOUND_REFERENCE= NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
+
+SHOW_INCLUDE_FILES     = YES
+
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC  = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES   = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
+
+INLINE_INFO            = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order.
+# The default value is: YES.
+
+SORT_MEMBER_DOCS       = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO, the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
+
+SORT_BRIEF_DOCS        = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES       = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
+
+SORT_BY_SCOPE_NAME     = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING  = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+# list. This list is created by putting \todo commands in the documentation.
+# The default value is: YES.
+
+GENERATE_TODOLIST      = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+# list. This list is created by putting \test commands in the documentation.
+# The default value is: YES.
+
+GENERATE_TESTLIST      = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
+
+GENERATE_BUGLIST       = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
+
+ENABLED_SECTIONS       = 
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
+
+MAX_INITIALIZER_LINES  = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES, the
+# list will mention the files that were used to generate the documentation.
+# The default value is: YES.
+
+SHOW_USED_FILES        = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES             = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES        = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
+
+FILE_VERSION_FILTER    = 
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE            = 
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. See also \cite for info how to create references.
+
+CITE_BIB_FILES         = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
+
+WARNINGS               = YES
+
+# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO, doxygen will only warn about wrong or incomplete
+# parameter documentation, but not about the absence of documentation.
+# The default value is: NO.
+
+WARN_NO_PARAMDOC       = NO
+
+# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+# a warning is encountered.
+# The default value is: NO.
+
+# WARN_AS_ERROR          = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
+# Note: If this tag is empty the current directory is searched.
+
+INPUT                  = . README.md nano_engine/README.md ssd1306_hal/README.md
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING         = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# read by doxygen.
+#
+# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
+# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
+
+FILE_PATTERNS          = *.c \
+                         *.cc \
+                         *.cxx \
+                         *.cpp \
+                         *.c++ \
+                         *.java \
+                         *.ii \
+                         *.ixx \
+                         *.ipp \
+                         *.i++ \
+                         *.inl \
+                         *.idl \
+                         *.ddl \
+                         *.odl \
+                         *.h \
+                         *.hh \
+                         *.hxx \
+                         *.hpp \
+                         *.h++ \
+                         *.cs \
+                         *.d \
+                         *.php \
+                         *.php4 \
+                         *.php5 \
+                         *.phtml \
+                         *.inc \
+                         *.m \
+                         *.markdown \
+                         *.md \
+                         *.mm \
+                         *.dox \
+                         *.py \
+                         *.pyw \
+                         *.f90 \
+                         *.f95 \
+                         *.f03 \
+                         *.f08 \
+                         *.f \
+                         *.for \
+                         *.tcl \
+                         *.vhd \
+                         *.vhdl \
+                         *.ucf \
+                         *.qsf
+
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
+
+RECURSIVE              = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE                = 
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+# The default value is: NO.
+
+EXCLUDE_SYMLINKS       = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
+
+EXCLUDE_PATTERNS       = *.cpp
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
+
+EXCLUDE_SYMBOLS        = 
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
+
+EXAMPLE_PATH           = 
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
+
+EXAMPLE_PATTERNS       = *
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
+
+EXAMPLE_RECURSIVE      = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
+
+IMAGE_PATH             =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
+
+INPUT_FILTER           = 
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
+#
+# Note that for custom extensions or not directly supported extensions you also
+# need to set EXTENSION_MAPPING for the extension otherwise the files are not
+# properly processed by doxygen.
+
+FILTER_PATTERNS        = 
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
+
+FILTER_SOURCE_FILES    = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS = 
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
+
+SOURCE_BROWSER         = YES
+
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
+
+REFERENCES_RELATION    = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS        = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
+
+VERBATIM_HEADERS       = YES
+
+# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# generated with the -Duse-libclang=ON option for CMake.
+# The default value is: NO.
+
+# CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+# CLANG_OPTIONS          = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
+
+ALPHABETICAL_INDEX     = YES
+
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+COLS_IN_ALPHA_INDEX    = 5
+
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+# The default value is: YES.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_OUTPUT            = .
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
+# standard header.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_FOOTER            = 
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET        = 
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# cascading style sheets that are included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefore more robust against future updates.
+# Doxygen will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list). For an example see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET  = 
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES       =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the style sheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE    = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT    = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA  = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to YES can help to show when doxygen was last run and thus if the
+# documentation is up to date.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP         = NO
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_DYNAMIC_SECTIONS  = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET        = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME        = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID       = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME  = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_HTMLHELP      = NO
+
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
+# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_FILE               = 
+
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler (hhc.exe). If non-empty,
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+HHC_LOCATION           = 
+
+# The GENERATE_CHI flag controls if a separate .chi index file is generated
+# (YES) or that it should be included in the master .chm file (NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+GENERATE_CHI           = NO
+
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING     = 
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated
+# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+# enables the Previous and Next buttons.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+TOC_EXPAND             = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP           = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE               = 
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE          = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER     = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME   = 
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS  = 
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS  = 
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION           = 
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP   = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID         = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+DISABLE_INDEX          = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_TREEVIEW      = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+TREEVIEW_WIDTH         = 250
+
+# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW    = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE       = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT    = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX            = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT         = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS     = 
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE       = 
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE           = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+# setting. When disabled, doxygen will generate a PHP script for searching and
+# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+# and searching needs to be provided by external tools. See the section
+# "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH    = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH        = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer (doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL       = 
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE        = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID     = 
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS  = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+# The default value is: YES.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PAPER_TYPE             = a4
+
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. The package can be specified just
+# by its name or with the correct syntax as to be used with the LaTeX
+# \usepackage command. To get the times font for instance you can specify :
+# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+# To use the option intlimits with the amsmath package you can specify:
+# EXTRA_PACKAGES=[intlimits]{amsmath}
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+# string, for the replacement values of the other commands the user is referred
+# to HTML_HEADER.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER           = 
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer. See
+# LATEX_HEADER for more information on how to generate a default footer and what
+# special commands can be used inside the footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_FOOTER           = 
+
+# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+# LaTeX style sheets that are included after the standard style sheets created
+# by doxygen. Using this option one can overrule certain style aspects. Doxygen
+# will copy the style sheet files to the output directory.
+# Note: The order of the extra style sheet files is of importance (e.g. the last
+# style sheet in the list overrules the setting of the previous ones in the
+# list).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_STYLESHEET = 
+
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_EXTRA_FILES      = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+PDF_HYPERLINKS         = YES
+
+# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES, to get a
+# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+USE_PDFLATEX           = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BATCHMODE        = NO
+
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HIDE_INDICES     = NO
+
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE      = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE        = plain
+
+# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+# LATEX_TIMESTAMP        = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_EXTENSIONS_FILE    = 
+
+# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+# with syntax highlighting in the RTF output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
+
+RTF_SOURCE_CODE        = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_EXTENSION          = .3
+
+# The MAN_SUBDIR tag determines the name of the directory created within
+# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+# MAN_EXTENSION with the initial . removed.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_SUBDIR             = 
+
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_OUTPUT             = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK       = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT         = docbook
+
+# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+# program listings (including syntax highlighting and cross-referencing
+# information) to the DOCBOOK output. Note that enabling this will significantly
+# increase the size of the DOCBOOK output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_PROGRAMLISTING = NO
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+# AutoGen Definitions (see http://autogen.sf.net) file that captures the
+# structure of the code including all documentation. Note that this feature is
+# still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_LATEX          = NO
+
+# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO, the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+# in the source code. If set to NO, only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES, the include files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
+INCLUDE_PATH           =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+PREDEFINED             = __AVR_ATtiny85__  __cplusplus \
+        DOXYGEN_SHOULD_SKIP_THIS \
+        CONFIG_AVR_UART_AVAILABLE CONFIG_AVR_UART_ENABLE \
+        CONFIG_SOFTWARE_I2C_ENABLE CONFIG_SOFTWARE_I2C_AVAILABLE \
+        CONFIG_TWI_I2C_ENABLE CONFIG_TWI_I2C_AVAILABLE \
+        CONFIG_AVR_SPI_ENABLE CONFIG_AVR_SPI_AVAILABLE \
+        CONFIG_USI_SPI_ENABLE CONFIG_USI_SPI_AVAILABLE \
+        CONFIG_VGA_ENABLE CONFIG_VGA_AVAILABLE \
+        CONFIG_PLATFORM_I2C_ENABLE CONFIG_PLATFORM_I2C_AVAILABLE \
+        CONFIG_PLATFORM_SPI_ENABLE CONFIG_PLATFORM_SPI_AVAILABLE \
+        CONFIG_ADAFRUIT_GFX_ENABLE \
+        CONFIG_SSD1306_UNICODE_ENABLE \
+
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all references to function-like macros that are alone on a line, have
+# an all uppercase name, and do not end with a semicolon. Such function macros
+# are typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have a unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+# the class index. If set to NO, only the inherited external classes will be
+# listed.
+# The default value is: NO.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
+
+EXTERNAL_GROUPS        = YES
+
+# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES         = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
+# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS         = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH            = 
+
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
+
+DIA_PATH               = 
+
+# If set to YES the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
+
+HAVE_DOT               = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS        = 0
+
+# When you want a differently looking font in the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME           = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE           = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH           = 
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CLASS_GRAPH            = YES
+
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+COLLABORATION_GRAPH    = YES
+
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GROUP_GRAPHS           = YES
+
+# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LOOK               = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS   = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDE_GRAPH          = YES
+
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INCLUDED_BY_GRAPH      = YES
+
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command. Disabling a call graph can be
+# accomplished by means of the command \hidecallgraph.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
+# functions only using the \callergraph command. Disabling a caller graph can be
+# accomplished by means of the command \hidecallergraph.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GRAPHICAL_HIERARCHY    = YES
+
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DIRECTORY_GRAPH        = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. For an explanation of the image formats see the section
+# output formats in the documentation of the dot tool (Graphviz (see:
+# http://www.graphviz.org/)).
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+# png:gdiplus:gdiplus.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_IMAGE_FORMAT       = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG        = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOTFILE_DIRS           = 
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
+
+MSCFILE_DIRS           = 
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS           = 
+
+# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+# path where java can find the plantuml.jar file. If left blank, it is assumed
+# PlantUML is not used or called during a preprocessing step. Doxygen will
+# generate a warning when it encounters a \startuml command in this case and
+# will not generate output for the diagram.
+
+PLANTUML_JAR_PATH      = 
+
+# When using plantuml, the specified paths are searched for files specified by
+# the !include statement in a plantuml block.
+
+PLANTUML_INCLUDE_PATH  = 
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+MAX_DOT_GRAPH_DEPTH    = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+GENERATE_LEGEND        = YES
+
+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_CLEANUP            = YES
diff --git a/lib/libssd1306/src/font6x8.h b/lib/libssd1306/src/font6x8.h
new file mode 100644
index 0000000..a1492e1
--- /dev/null
+++ b/lib/libssd1306/src/font6x8.h
@@ -0,0 +1,23 @@
+/*
+ * SSD1306xLED - Drivers for SSD1306 controlled dot matrix OLED/PLED 128x64 displays
+ *
+ * @created: 2014-08-12
+ * @author: Neven Boyanov
+ *
+ * Copyright (c) 2015 Neven Boyanov, Tinusaur Team. All Rights Reserved.
+ * Distributed as open source software under MIT License, see LICENSE.txt file.
+ * Please, as a favour, retain the link http://tinusaur.org to The Tinusaur Project.
+ *
+ * Source code available at: https://bitbucket.org/tinusaur/ssd1306xled
+ *
+ */
+/**
+ * @file font6x8.h Fonts 6x8. Header file is here only for compatibility with previous library releases
+ */
+
+#ifndef FONT6x8_H
+#define FONT6x8_H
+
+#include "ssd1306_fonts.h"
+
+#endif // FONT6x8_H
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c.c b/lib/libssd1306/src/intf/i2c/ssd1306_i2c.c
new file mode 100644
index 0000000..cf4224c
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c.c
@@ -0,0 +1,65 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_i2c.h"
+#include "intf/ssd1306_interface.h"
+
+void ssd1306_i2cInitEx(int8_t scl, int8_t sda, int8_t sa)
+{
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+    ssd1306_platform_i2cConfig_t cfg;
+    cfg.scl = scl;
+    cfg.sda = sda;
+    ssd1306_platform_i2cInit(-1, sa, &cfg);
+#elif defined(CONFIG_TWI_I2C_AVAILABLE) && defined(CONFIG_TWI_I2C_ENABLE)
+    ssd1306_i2cConfigure_Twi(0);
+    ssd1306_i2cInit_Twi(sa);
+#elif defined(CONFIG_SOFTWARE_I2C_AVAILABLE) && defined(CONFIG_SOFTWARE_I2C_ENABLE)
+    ssd1306_i2cInit_Embedded(scl, sda, sa);
+#else
+    #warning "ssd1306 library: no i2c support for the target platform"
+#endif
+}
+
+void ssd1306_i2cInitEx2(int8_t busId, int8_t scl, int8_t sda, int8_t sa)
+{
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+    ssd1306_platform_i2cConfig_t cfg;
+    cfg.scl = scl;
+    cfg.sda = sda;
+    ssd1306_platform_i2cInit(busId, sa, &cfg);
+#elif defined(CONFIG_TWI_I2C_AVAILABLE) && defined(CONFIG_TWI_I2C_ENABLE)
+    ssd1306_i2cConfigure_Twi(0);
+    ssd1306_i2cInit_Twi(sa);
+#elif defined(CONFIG_SOFTWARE_I2C_AVAILABLE) && defined(CONFIG_SOFTWARE_I2C_ENABLE)
+    ssd1306_i2cInit_Embedded(scl, sda, sa);
+#else
+    #warning "ssd1306 library: no i2c support for the target platform"
+#endif
+}
+
+void ssd1306_i2cInit()
+{
+    ssd1306_i2cInitEx(-1, -1, SSD1306_SA);
+}
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c.h b/lib/libssd1306/src/intf/i2c/ssd1306_i2c.h
new file mode 100644
index 0000000..cc18d74
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c.h
@@ -0,0 +1,112 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_i2c.h SSD1306 i2c communication functions
+ */
+
+
+#ifndef _SSD1306_I2C_H_
+#define _SSD1306_I2C_H_
+
+#include "ssd1306_i2c_conf.h"
+#include "ssd1306_i2c_embedded.h"
+#include "ssd1306_i2c_twi.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits display interface to use i2c bus.
+ * The function automatically selects available type of i2c implementation
+ * 1. Wire library
+ * 2. sw i2c implementation
+ * In case of using Wire library this function calls Wire.begin() and
+ * sets speed to fast i2c (400kHz). If you prefer to use your own Wire settings
+ * or avoid reinitializing of Wire library, please use ssd1306_i2cInit_Wire().
+ * If you want to use embedded i2c (if it is supported), use ssd1306_i2cInit_Embedded().
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void         ssd1306_i2cInit(void);
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits display interface to use i2c bus.
+ * The function automatically selects available type of i2c implementation
+ * 1. Wire library
+ * 2. sw i2c implementation
+ * In case of using Wire library this function calls Wire.begin() and
+ * sets speed to fast i2c (400kHz). If you prefer to use your own Wire settings
+ * or avoid reinitializing of Wire library, please use ssd1306_i2cInit_Wire().
+ * If you want to use embedded i2c (if it is supported), use ssd1306_i2cInit_Embedded().
+ *
+ * @param scl - i2c clock pin. Use -1 if you don't need to change default pin number
+ * @param sda - i2c data pin. Use -1 if you don't need to change default pin number
+ * @param sa  - i2c address of lcd display. Use 0 to leave default
+ *
+ * @note scl and sda parameters depend on used hardware. For many hardware boards these
+ * parameters do not have any effect. ESP8266 allows to specify these parameters
+ *
+ * @note scl and sda for Linux systems should be the same, and should contain i2c bus id.
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void ssd1306_i2cInitEx(int8_t scl, int8_t sda, int8_t sa);
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits display interface to use i2c bus.
+ * The function automatically selects available type of i2c implementation
+ * 1. Wire library
+ * 2. sw i2c implementation
+ * In case of using Wire library this function calls Wire.begin() and
+ * sets speed to fast i2c (400kHz). If you prefer to use your own Wire settings
+ * or avoid reinitializing of Wire library, please use ssd1306_i2cInit_Wire().
+ * If you want to use embedded i2c (if it is supported), use ssd1306_i2cInit_Embedded().
+ *
+ * @param busId - number of i2c bus if there are multiple hw blocks avialable.
+ * @param scl - i2c clock pin. Use -1 if you don't need to change default pin number
+ * @param sda - i2c data pin. Use -1 if you don't need to change default pin number
+ * @param sa  - i2c address of lcd display. Use 0 to leave default
+ *
+ * @note scl and sda parameters depend on used hardware. For many hardware boards these
+ * parameters do not have any effect. ESP8266 allows to specify these parameters
+ *
+ * @note scl and sda for Linux systems should be the same, and should contain i2c bus id.
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void ssd1306_i2cInitEx2(int8_t busId, int8_t scl, int8_t sda, int8_t sa);
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_I2C_H_
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c_conf.h b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_conf.h
new file mode 100644
index 0000000..403470c
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_conf.h
@@ -0,0 +1,77 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_i2c_conf.h SSD1306 library basic i2c definitions
+ */
+
+#ifndef _SSD1306_I2C_CONF_H_
+#define _SSD1306_I2C_CONF_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef SSD1306_SA
+    /**
+     * @ingroup LCD_HW_INTERFACE_API
+     *
+     * SSD1306_SA defines default i2c address of LCD display. Please, check your device.
+     * If you LCD device has different address, you can set different one via
+     * ssd1306_i2cInit_Wire() or ssd1306_i2cInit_Embedded() functions.
+     * Write command will be SSD1306_SA<<1 and read will be SSD1306_SA<<1 | 1
+     */
+    #define SSD1306_SA    0x3C  // Slave address
+#endif
+
+#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
+    #ifndef SSD1306_SCL
+        #define SSD1306_SCL   3 ///< SCL, Pin 3 on SSD1306 Board
+    #endif
+    #ifndef SSD1306_SDA
+        #define SSD1306_SDA   4 ///< SDA, Pin 4 on SSD1306 Board
+    #endif
+#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
+    #ifndef SSD1306_SCL
+        #define SSD1306_SCL   4 ///< SCL, Pin 4 - physical pin 9 of Attiny84
+    #endif
+    #ifndef SSD1306_SDA
+        #define SSD1306_SDA   6 ///< SDA, Pin 6 - physical pin 7 of Attiny84
+    #endif
+#else
+    #ifndef SSD1306_SCL
+        #define SSD1306_SCL   5 // SCL, Pin A5 on SSD1306 Board
+    #endif
+    #ifndef SSD1306_SDA
+        #define SSD1306_SDA   4 // SDA, Pin A4 on SSD1306 Board
+    #endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.c b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.c
new file mode 100644
index 0000000..24a37ab
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.c
@@ -0,0 +1,191 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_i2c_embedded.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_i2c.h"
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_SOFTWARE_I2C_AVAILABLE) && defined(CONFIG_SOFTWARE_I2C_ENABLE)
+
+#include <util/delay_basic.h>
+
+/**
+ * Port registers, containing pins, which SSD1306 display is connected to.
+ * For ATtiny controllers it is standard PORTB
+ * For ATmega328p, it is PORTC, which corresponds to Analog inputs/outputs
+ */
+
+static uint8_t s_scl = (1<<SSD1306_SCL);
+static uint8_t s_sda = (1<<SSD1306_SDA);
+static uint8_t s_sa  = SSD1306_SA;
+
+#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
+    // at 8Mhz each command takes ~ 0.125us
+    #define DDR_REG      DDRB
+    #define PORT_REG     PORTB
+#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
+    // For AttinyX4 controllers
+    // at 8Mhz each command takes ~ 0.125us
+    #define DDR_REG      DDRA
+    #define PORT_REG     PORTA
+#else // For Atmega
+    // at 16Mhz each command takes ~ 0.0625us
+    #define DDR_REG      DDRC
+    #define PORT_REG     PORTC
+#endif
+
+
+#ifndef F_CPU
+    #warning "F_CPU is not defined, there can be I2C issues"
+    #define F_CPU 8000000
+#endif
+#define CPU_CYCLE_NS   (1000000000/F_CPU)
+
+#define DELAY_LOOP_CYCLES 4
+#define ssd1306_delay(x) _delay_loop_2(x)
+
+/**
+ * Section, which defines I2C timings for SSD1306 display from datasheet
+ */
+#define SSD1306_I2C_START_STOP_DELAY 600
+#define SSD1306_I2C_RISE_TIME        300
+#define SSD1306_I2C_FALL_TIME        300
+#define SSD1306_I2C_DATA_HOLD_TIME   300
+#define SSD1306_I2C_IDLE_TIME        1300
+#define SSD1306_I2C_CLOCK            2500
+
+
+#define I2C_START_STOP_DELAY ((SSD1306_I2C_START_STOP_DELAY/CPU_CYCLE_NS + DELAY_LOOP_CYCLES/2)/DELAY_LOOP_CYCLES)
+
+#define I2C_RISE_TIME ((SSD1306_I2C_RISE_TIME/CPU_CYCLE_NS)/DELAY_LOOP_CYCLES)
+
+#define I2C_DATA_HOLD_TIME ((SSD1306_I2C_DATA_HOLD_TIME/CPU_CYCLE_NS + DELAY_LOOP_CYCLES/2)/DELAY_LOOP_CYCLES)
+
+#define I2C_IDLE_TIME   (((SSD1306_I2C_IDLE_TIME/CPU_CYCLE_NS) + DELAY_LOOP_CYCLES/2)/DELAY_LOOP_CYCLES)
+
+#define I2C_HALF_CLOCK (((SSD1306_I2C_CLOCK - SSD1306_I2C_FALL_TIME - SSD1306_I2C_RISE_TIME - SSD1306_I2C_FALL_TIME)/CPU_CYCLE_NS/2 \
+                         )/DELAY_LOOP_CYCLES)
+
+
+/* I2C HIGH = PORT as INPUT(0) and PULL-UP ENABLE (1) */
+//#define DIGITAL_WRITE_HIGH(DREG, PREG, BIT) { DREG &= ~(1 << BIT); PREG |= (1 << BIT); }
+#define DIGITAL_WRITE_HIGH(DREG, PREG, BIT) { DREG &= ~BIT; PREG |= BIT; }
+
+/* I2C LOW  = PORT as OUTPUT(1) and OUTPUT LOW (0) */
+//#define DIGITAL_WRITE_LOW(DREG, PREG, BIT)  { DREG |= (1 << BIT); PREG &= ~(1 << BIT); }
+#define DIGITAL_WRITE_LOW(DREG, PREG, BIT)  { DREG |= BIT; PREG &= ~BIT; }
+
+static uint8_t oldSREG;
+static uint8_t interruptsOff = 0;
+
+/**
+ * Inputs: SCL is LOW, SDA is has no meaning
+ * Outputs: SCL is LOW
+ */
+static void ssd1306_i2cSendByte_Embedded(uint8_t data)
+{
+    uint8_t i;
+    for(i=8; i>0; i--)
+    {
+        if(data & 0x80)
+          DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_sda)
+        else
+          DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_sda);
+        data<<=1;
+        ssd1306_delay(I2C_RISE_TIME); // Fall time is the same as rise time
+
+        DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_scl);
+        ssd1306_delay(I2C_HALF_CLOCK);
+
+        DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_scl);
+        ssd1306_delay(I2C_HALF_CLOCK);
+    }
+    // generating confirmation impulse
+    DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_sda);
+    ssd1306_delay(I2C_RISE_TIME); // Fall time is the same as rise time
+    DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_scl);
+    ssd1306_delay(I2C_HALF_CLOCK);
+    DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_scl); 
+    ssd1306_delay(I2C_HALF_CLOCK);
+}
+
+static void ssd1306_i2cSendBytes_Embedded(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        ssd1306_i2cSendByte_Embedded(*buffer);
+        buffer++;
+    }
+}
+
+/**
+ * SCL remains HIGH on EXIT, Low SDA means start transmission
+ */
+static void ssd1306_i2cStart_Embedded(void)
+{
+    oldSREG = SREG;
+    cli();
+    interruptsOff = 1;
+    DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_sda);     // Set to LOW
+    ssd1306_delay(I2C_START_STOP_DELAY);
+    DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_scl);     // Set to LOW
+    ssd1306_delay(I2C_HALF_CLOCK);
+    ssd1306_i2cSendByte_Embedded((s_sa << 1) | 0);
+}
+
+static void ssd1306_i2cStop_Embedded(void)
+{
+    DIGITAL_WRITE_LOW(DDR_REG, PORT_REG, s_sda);		// Set to LOW
+    ssd1306_delay(I2C_RISE_TIME); // Fall time is the same as rise time
+    DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_scl);	// Set to HIGH
+    ssd1306_delay(I2C_START_STOP_DELAY);
+    DIGITAL_WRITE_HIGH(DDR_REG, PORT_REG, s_sda);	// Set to HIGH
+    ssd1306_delay(I2C_IDLE_TIME);
+    if (interruptsOff)
+    {
+        SREG = oldSREG;
+        interruptsOff = 0;
+    }
+}
+
+static void ssd1306_i2cClose_Embedded()
+{
+}
+
+void ssd1306_i2cInit_Embedded(int8_t scl, int8_t sda, uint8_t sa)
+{
+    if (scl>=0) s_scl = (1<<scl);
+    if (sda>=0) s_sda = (1<<sda);
+    if (sa)  s_sa  = sa;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = ssd1306_i2cStart_Embedded;
+    ssd1306_intf.stop = ssd1306_i2cStop_Embedded;
+    ssd1306_intf.send = ssd1306_i2cSendByte_Embedded;
+    ssd1306_intf.send_buffer = ssd1306_i2cSendBytes_Embedded;
+    ssd1306_intf.close = ssd1306_i2cClose_Embedded;
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.h b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.h
new file mode 100644
index 0000000..68b3a04
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_embedded.h
@@ -0,0 +1,63 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_i2c_embedded.h embedded SSD1306 i2c communication functions
+ */
+
+#ifndef _SSD1306_I2C_EMBEDDED_H_
+#define _SSD1306_I2C_EMBEDDED_H_
+
+#include "ssd1306_hal/io.h"
+#include "ssd1306_i2c_conf.h"
+
+#if defined(CONFIG_SOFTWARE_I2C_AVAILABLE) && defined(CONFIG_SOFTWARE_I2C_ENABLE)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Initializes software implementation of i2c.
+ * If you do not know i2c parameters, try ssd1306_i2cInit_Embedded(0,0,0).
+ * @warning the function disables interrupts.
+ * @param scl - i2c clock pin. Use -1 if you don't need to change default pin number
+ * @param sda - i2c data pin. Use -1 if you don't need to change default pin number
+ * @param sa  - i2c address of lcd display. Use 0 to leave default
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void ssd1306_i2cInit_Embedded(int8_t scl, int8_t sda, uint8_t sa);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif /* _SSD1306_I2C_EMBEDDED_H_ */
+
+
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.c b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.c
new file mode 100644
index 0000000..23ea2f9
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.c
@@ -0,0 +1,173 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_i2c_twi.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_i2c.h"
+
+#if defined(CONFIG_TWI_I2C_AVAILABLE) && defined(CONFIG_TWI_I2C_ENABLE)
+
+#include <avr/io.h>
+#include <util/twi.h>
+
+/* Max i2c frequency, supported by OLED controllers */
+#define SSD1306_TWI_FREQ  400000
+#define MAX_RETRIES       64
+
+static uint8_t s_sa = SSD1306_SA;
+
+static uint8_t ssd1306_twi_start(void)
+{
+    uint8_t twst;
+    uint8_t iters = MAX_RETRIES;
+    do
+    {
+        TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
+        while ( (TWCR & (1<<TWINT)) == 0 );
+        twst = TWSR & 0xF8;
+        if (!--iters)
+        {
+            break;
+        }
+    } while (twst == TW_MT_ARB_LOST);
+    if ((twst != TW_START) && (twst != TW_REP_START))
+    {
+        return twst;
+    }
+    return 0;
+}
+
+static uint8_t ssd1306_twi_send(uint8_t data)
+{
+    uint8_t twsr;
+    uint8_t iters = MAX_RETRIES;
+    do
+    {
+        TWDR = data;
+        TWCR = (1<<TWINT) | (1<<TWEN);
+        while ( (TWCR & (1<<TWINT)) == 0 );
+        twsr = TWSR & 0xF8;
+        if ((twsr == TW_MT_SLA_ACK) || (twsr == TW_MT_DATA_ACK))
+        {
+            return 0;
+        }
+        if (twsr == TW_MT_ARB_LOST)
+        {
+            return twsr;
+        }
+        iters++;
+        if (!--iters)
+        {
+            break;
+        }
+    } while (twsr != TW_MT_ARB_LOST);
+    return twsr;
+}
+
+
+static void ssd1306_twi_stop(void)
+{
+    TWCR = (1<<TWEN) | (1<<TWSTO) | (1<<TWINT);
+}
+
+static void ssd1306_i2cStart_Twi(void)
+{
+    do
+    {
+        if (ssd1306_twi_start() != 0)
+        {
+            /* Some serious error happened, but we don't care. Our API functions have void type */
+            return;
+        }
+    } while (ssd1306_twi_send(s_sa << 1) == TW_MT_ARB_LOST);
+}
+
+static void ssd1306_i2cStop_Twi(void)
+{
+    ssd1306_twi_stop();
+}
+
+void ssd1306_i2cConfigure_Twi(uint8_t arg)
+{
+#if defined(__AVR_ATmega328P__)
+    /* Enable internal pull-ups */
+    DDRC &= ~(1<<PINC4); PORTC |= (1<<PINC4);
+    DDRC &= ~(1<<PINC5); PORTC |= (1<<PINC5);
+#endif
+#if defined(TWPS0)
+    TWSR = 0;
+#endif
+    TWBR = ((F_CPU / SSD1306_TWI_FREQ) - 16) / 2 / (1); // Always use prescaler 1 (TWSR 0x00)
+    TWCR = (1 << TWEN) | (1 << TWEA);
+}
+
+static void ssd1306_i2cSendByte_Twi(uint8_t data)
+{
+    for(;;)
+    {
+        if (ssd1306_twi_send(data) != TW_MT_ARB_LOST)
+        {
+            break;
+        }
+        if (ssd1306_twi_start() != 0)
+        {
+            /* Some serious error happened, but we don't care. Our API functions have void type */
+            break;
+        }
+        if (ssd1306_twi_send(s_sa << 1) != TW_MT_ARB_LOST)
+        {
+            /* Some serious error happened, but we don't care. Our API functions have void type */
+            break;
+        }
+    }
+}
+
+static void ssd1306_i2cSendBytes_Twi(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        ssd1306_i2cSendByte_Twi(*buffer);
+        buffer++;
+    }
+}
+
+
+static void ssd1306_i2cClose_Twi()
+{
+}
+
+void ssd1306_i2cInit_Twi(uint8_t sa)
+{
+    if (sa) s_sa = sa;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = ssd1306_i2cStart_Twi;
+    ssd1306_intf.stop = ssd1306_i2cStop_Twi;
+    ssd1306_intf.send = ssd1306_i2cSendByte_Twi;
+    ssd1306_intf.send_buffer = ssd1306_i2cSendBytes_Twi;
+    ssd1306_intf.close = ssd1306_i2cClose_Twi;
+}
+
+#endif
+
+
diff --git a/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.h b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.h
new file mode 100644
index 0000000..9b569ac
--- /dev/null
+++ b/lib/libssd1306/src/intf/i2c/ssd1306_i2c_twi.h
@@ -0,0 +1,72 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_i2c_twi.h SSD1306 i2c communication functions for standard AVR TWI interface
+ */
+
+#ifndef _SSD1306_I2C_TWI_H_
+#define _SSD1306_I2C_TWI_H_
+
+#include "ssd1306_hal/io.h"
+#include "ssd1306_i2c_conf.h"
+
+#if defined(CONFIG_TWI_I2C_AVAILABLE) && defined(CONFIG_TWI_I2C_ENABLE)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Configures standard TWI AVR module (at 400kHz).
+ * This function is called by ssd1306_i2cInit().
+ * @param arg - has no meaning for now. Should be zero
+ *
+ * @note scl and sda pins depend on used hardware.
+ */
+void ssd1306_i2cConfigure_Twi(uint8_t arg);
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Initializes ssd1306 library to use TWI AVR module for i2c.
+ * If you do not know i2c parameters, try ssd1306_i2cInit_Twi(0).
+ * SCL and SDA pins depend on platform.
+ * @param sa  - i2c address of lcd display. Use 0 to leave default
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void ssd1306_i2cInit_Twi(uint8_t sa);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif /* _SSD1306_I2C_TWI_H_ */
+
+
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi.c b/lib/libssd1306/src/intf/spi/ssd1306_spi.c
new file mode 100644
index 0000000..59042ed
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi.c
@@ -0,0 +1,56 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+
+#include "ssd1306_spi.h"
+#include "ssd1306_spi_avr.h"
+#include "ssd1306_spi_usi.h"
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "ssd1306_hal/io.h"
+
+int8_t s_ssd1306_cs = 4;
+int8_t s_ssd1306_dc = 5;
+uint32_t s_ssd1306_spi_clock = 8000000;
+
+void ssd1306_spiInit(int8_t cesPin, int8_t dcPin)
+{
+#if defined(CONFIG_AVR_SPI_AVAILABLE) && defined(CONFIG_AVR_SPI_ENABLE)
+    ssd1306_spiInit_avr(cesPin, dcPin);
+#elif defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+    ssd1306_platform_spiInit(-1, cesPin, dcPin);
+#elif defined(CONFIG_USI_SPI_AVAILABLE) && defined(CONFIG_USI_SPI_ENABLE)
+    ssd1306_spiInit_Usi(cesPin, dcPin);
+#else
+    #warning "ssd1306 library: no spi support for the target platform"
+#endif
+}
+
+void ssd1306_spiDataMode(uint8_t mode)
+{
+    if (s_ssd1306_dc)
+    {
+        digitalWrite(s_ssd1306_dc, mode ? HIGH : LOW);
+    }
+}
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi.h b/lib/libssd1306/src/intf/spi/ssd1306_spi.h
new file mode 100644
index 0000000..555e534
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi.h
@@ -0,0 +1,85 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_spi.h SSD1306 spi communication functions
+ */
+
+#ifndef _SSD1306_SPI_H_
+#define _SSD1306_SPI_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * chip enable pin to controll lcd display over spi
+ */
+extern int8_t s_ssd1306_cs;
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * data/command control pin for spi interface of lcd display
+ */
+extern int8_t s_ssd1306_dc;
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ * maximum SPI clock, supported by OLED display
+ */
+extern uint32_t s_ssd1306_spi_clock;
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits lcd interface to use hardware spi for communication.
+ * The function automatically selects available type of spi implementation
+ * 1. SPI library (ssd1306_spiInit_hw())
+ * @param cesPin - pin, controlling chip enable of LCD
+ * @param dcPin - pin, controlling data/command mode of LCD
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void         ssd1306_spiInit(int8_t cesPin, int8_t dcPin);
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Switches spi to data(1) or command(0) mode.
+ * @param mode - 1 data mode
+ *               0 command mode
+ */
+void         ssd1306_spiDataMode(uint8_t mode);
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_SPI_H_
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.c b/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.c
new file mode 100644
index 0000000..0b329ea
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.c
@@ -0,0 +1,150 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_spi_avr.h"
+#include "ssd1306_spi.h"
+
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_AVR_SPI_AVAILABLE) && defined(CONFIG_AVR_SPI_ENABLE)
+
+#include <stdlib.h>
+
+#define PORT_SPI    PORTB
+#define DDR_SPI     DDRB
+
+#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
+    #define DD_MISO     DDB3
+    #define DD_MOSI     DDB2
+    #define DD_SCK      DDB1
+    #define DD_SS       DDB0
+#else
+    #define DD_MISO     DDB4
+    #define DD_MOSI     DDB3
+    #define DD_SCK      DDB5
+    #define DD_SS       DDB2
+#endif
+
+#define SPI_CLOCK_MASK   0x03
+#define SPI_2XCLOCK_MASK 0x01
+
+extern uint32_t s_ssd1306_spi_clock;
+
+static void ssd1306_spiConfigure_avr()
+{
+    uint8_t clockDiv;
+    uint32_t clockSetting = F_CPU / 2;
+    clockDiv = 0;
+    while ((clockDiv < 6) && (s_ssd1306_spi_clock < clockSetting))
+    {
+        clockSetting /= 2;
+        clockDiv++;
+    }
+    if (clockDiv == 6)
+    {
+        clockDiv = 7;
+    }
+    // Invert the SPI2X bit
+    clockDiv ^= 0x1;
+
+    // SS pin must be HIGH, when enabling MASTER SPI mode
+    // Otherwise, SPI will drop automatically to SLAVE mode
+    DDR_SPI &= ~((1<<DD_SCK)|(1<<DD_SS)|(1<<DD_MOSI));
+    PORT_SPI |= (1<<DD_SS);
+    /* Define the following pins as output */
+    DDR_SPI |= ((1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS));
+    PORT_SPI |= (1<<DD_SS);
+
+    SPCR =  (1<<SPE)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|
+            ((clockDiv >> 1) & SPI_CLOCK_MASK);
+    SPSR = clockDiv & SPI_2XCLOCK_MASK; // Double Clock Rate
+    // Wait for some time to give SPI HW module to initialize
+    delay(10);
+}
+
+static void ssd1306_spiClose_avr()
+{
+}
+
+static void ssd1306_spiStart_avr()
+{
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs,LOW);
+    }
+}
+
+static void ssd1306_spiSendByte_avr(uint8_t data)
+{
+    SPDR = data;
+    asm volatile("nop");
+    while((SPSR & (1<<SPIF))==0);
+}
+
+static void ssd1306_spiSendBytes_avr(const uint8_t * buffer, uint16_t size)
+{
+    while (size--)
+    {
+        SPDR = *buffer;
+        asm volatile("nop"); // to improve speed
+        while((SPSR & (1<<SPIF))==0);
+        SPDR; // read SPI input
+        buffer++;
+    }
+}
+
+static void ssd1306_spiStop_avr()
+{
+    if (ssd1306_lcd.type == LCD_TYPE_PCD8544)
+    {
+        digitalWrite(s_ssd1306_dc, LOW);
+        ssd1306_spiSendByte_avr( 0x00 ); // Send NOP command to allow last data byte to pass (bug in PCD8544?)
+                                         // ssd1306 E3h is NOP command
+    }
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs, HIGH);
+    }
+}
+
+void ssd1306_spiInit_avr(int8_t cesPin, int8_t dcPin)
+{
+    if (cesPin >=0) pinMode(cesPin, OUTPUT);
+    if (dcPin >= 0) pinMode(dcPin, OUTPUT);
+    if (cesPin) s_ssd1306_cs = cesPin;
+    if (dcPin) s_ssd1306_dc = dcPin;
+    ssd1306_intf.spi = 1;
+    ssd1306_spiConfigure_avr();
+    ssd1306_intf.start = ssd1306_spiStart_avr;
+    ssd1306_intf.stop = ssd1306_spiStop_avr;
+    ssd1306_intf.send = ssd1306_spiSendByte_avr;
+    ssd1306_intf.send_buffer = ssd1306_spiSendBytes_avr;
+    ssd1306_intf.close = ssd1306_spiClose_avr;
+}
+
+#endif
+
+
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.h b/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.h
new file mode 100644
index 0000000..af2e8fb
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi_avr.h
@@ -0,0 +1,60 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_spi_avr.h SSD1306 AVR spi communication functions
+ */
+
+#ifndef _SSD1306_AVR_SPI_H_
+#define _SSD1306_AVR_SPI_H_
+
+#include "ssd1306_spi_conf.h"
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(CONFIG_AVR_SPI_AVAILABLE) && defined(CONFIG_AVR_SPI_ENABLE)
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits lcd interface to use hardware SPI for communication (SPI.h library).
+ * It uses standard MOSI, SCLK pins to send data to LCD.
+ * @param cesPin - pin, controlling chip enable of LCD
+ * @param dcPin - pin, controlling data/command mode of LCD
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void         ssd1306_spiInit_avr(int8_t cesPin, int8_t dcPin);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_AVR_SPI_H_
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi_conf.h b/lib/libssd1306/src/intf/spi/ssd1306_spi_conf.h
new file mode 100644
index 0000000..16eabdc
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi_conf.h
@@ -0,0 +1,34 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_spi_conf.h SSD1306 library basic spi definitions. Only for compatibility
+ */
+
+#ifndef _SSD1306_SPI_CONF_H_
+#define _SSD1306_SPI_CONF_H_
+
+// TODO: Remove this module completely
+
+#endif
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.c b/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.c
new file mode 100644
index 0000000..a0fc066
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.c
@@ -0,0 +1,136 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_spi_usi.h"
+#include "ssd1306_spi.h"
+
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_USI_SPI_AVAILABLE) && defined(CONFIG_USI_SPI_ENABLE)
+
+#include <stdlib.h>
+#include <util/atomic.h>
+
+#define PORT_SPI    PORTB
+#define DDR_SPI     DDRB
+#define DD_DI       DDB0
+#define DD_DO       DDB1
+#define DD_SCK      DDB2
+
+static void ssd1306_spiConfigure_Usi()
+{
+    DDR_SPI |= (1<<DD_DO); // as output (DO) - data out
+    DDR_SPI |= (1<<DD_SCK); // as output (USISCK) - clock
+    /* DI pin is still used by USI, although ssd1306 library doesn't need it */
+//    DDR_SPI &= ~(1<<DD_DI); // as input (DI) - data in
+//    PORT_SPI|= (1<<DD_DI); // pullup on (DI)
+}
+
+static void ssd1306_spiClose_Usi()
+{
+}
+
+static void ssd1306_spiStart_Usi()
+{
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs,LOW);
+    }
+    USICR = (0<<USIWM1) | (1<<USIWM0) |
+            (1<<USICS1) | (0<<USICS0) | (1<<USICLK);
+}
+
+static void ssd1306_spiSendByte_Usi(uint8_t data)
+{
+    USIDR = data;
+    USISR = (1<<USIOIF);
+    ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+    {
+        while ( (USISR & (1<<USIOIF)) == 0 )
+        {
+            USICR |= (1<<USITC);
+        }
+    }
+}
+
+static void ssd1306_spiSendBytes_Usi(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        USIDR = *buffer;
+        USISR = (1<<USIOIF);
+        ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
+        {
+            while ( (USISR & (1<<USIOIF)) == 0 )
+            {
+                USICR |= (1<<USITC);
+            }
+        }
+        buffer++;
+    };
+}
+
+static void ssd1306_spiStop_Usi()
+{
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs, HIGH);
+    }
+    if (ssd1306_lcd.type == LCD_TYPE_PCD8544)
+    {
+        digitalWrite(s_ssd1306_dc, LOW);
+        ssd1306_spiSendByte_Usi( 0x00 ); // Send NOP command to allow last data byte to pass (bug in PCD8544?)
+                                         // ssd1306 E3h is NOP command
+    }
+//    USICR &= ~((1<<USIWM1) | (1<<USIWM0));
+}
+
+void ssd1306_spiInit_Usi(int8_t cesPin, int8_t dcPin)
+{
+    if (cesPin >=0)
+    {
+        pinMode(cesPin, OUTPUT);
+        digitalWrite(cesPin, HIGH);
+    }
+    if (dcPin >= 0) pinMode(dcPin, OUTPUT);
+    if ((cesPin >= 0) || (dcPin >= 0))
+    {
+        /* Even if CS pin is not used we need still to set it to value passed to the function */
+        s_ssd1306_cs = cesPin;
+        s_ssd1306_dc = dcPin;
+    }
+    ssd1306_spiConfigure_Usi();
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = ssd1306_spiStart_Usi;
+    ssd1306_intf.stop = ssd1306_spiStop_Usi;
+    ssd1306_intf.send = ssd1306_spiSendByte_Usi;
+    ssd1306_intf.send_buffer = ssd1306_spiSendBytes_Usi;
+    ssd1306_intf.close = ssd1306_spiClose_Usi;
+}
+
+#endif
+
+
diff --git a/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.h b/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.h
new file mode 100644
index 0000000..3a99197
--- /dev/null
+++ b/lib/libssd1306/src/intf/spi/ssd1306_spi_usi.h
@@ -0,0 +1,60 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_spi_usi.h SSD1306 SPI USI communication functions
+ */
+
+#ifndef _SSD1306_SPI_USI_H_
+#define _SSD1306_SPI_USI_H_
+
+#include "ssd1306_spi_conf.h"
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(CONFIG_USI_SPI_AVAILABLE) && defined(CONFIG_USI_SPI_ENABLE)
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Inits lcd interface to use USI for SPI communication.
+ * It uses standard USI CLK, USI DO, USI DI pins to send data to LCD.
+ * @param cesPin - pin, controlling chip enable of LCD
+ * @param dcPin - pin, controlling data/command mode of LCD
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void         ssd1306_spiInit_Usi(int8_t cesPin, int8_t dcPin);
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_SPI_USI_H_
diff --git a/lib/libssd1306/src/intf/ssd1306_interface.c b/lib/libssd1306/src/intf/ssd1306_interface.c
new file mode 100644
index 0000000..0dcd3a1
--- /dev/null
+++ b/lib/libssd1306/src/intf/ssd1306_interface.c
@@ -0,0 +1,68 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_interface.h"
+#include "spi/ssd1306_spi.h"
+#include <stddef.h>
+
+static void ssd1306_send_buffer_generic(const uint8_t* buffer, uint16_t size);
+
+ssd1306_interface_t ssd1306_intf =
+{
+    .send_buffer = ssd1306_send_buffer_generic
+};
+
+void ssd1306_commandStart(void)
+{
+    ssd1306_intf.start();
+    if (ssd1306_intf.spi)
+        ssd1306_spiDataMode(0);
+    else
+        ssd1306_intf.send(0x00);
+}
+
+void ssd1306_dataStart(void)
+{
+    ssd1306_intf.start();
+    if (ssd1306_intf.spi)
+        ssd1306_spiDataMode(1);
+    else
+        ssd1306_intf.send(0x40);
+}
+
+void ssd1306_sendCommand(uint8_t command)
+{
+    ssd1306_commandStart();
+    ssd1306_intf.send(command);
+    ssd1306_intf.stop();
+}
+
+void ssd1306_send_buffer_generic(const uint8_t* buffer, uint16_t size)
+{
+    while (size--)
+    {
+        ssd1306_intf.send(*buffer);
+        buffer++;
+    }
+}
diff --git a/lib/libssd1306/src/intf/ssd1306_interface.h b/lib/libssd1306/src/intf/ssd1306_interface.h
new file mode 100644
index 0000000..0986b94
--- /dev/null
+++ b/lib/libssd1306/src/intf/ssd1306_interface.h
@@ -0,0 +1,152 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_interface.h SSD1306 interface functions.
+ */
+
+
+#ifndef _SSD1306_INTERFACE_H_
+#define _SSD1306_INTERFACE_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup LCD_HW_INTERFACE_API I2C/SPI: physical interface functions
+ * @{
+ *
+ * @brief i2c/spi initialization functions for different platforms
+ *
+ * @details This group of API functions serves to prepare the library to work via specific hardware
+ *          interface. There are a bunch of functions for different platforms. In general display
+ *          initialization goes in two steps: hardware interface initialization, and then display
+ *          driver initialization. But there are functions, which combine 2 steps in single call:
+ *          ssd1306_128x64_i2c_initEx(), ssd1351_128x128_spi_init(), etc.
+ */
+
+/** Describes low level hardware API */
+typedef struct
+{
+    /**
+     * Indicates if spi or i2c interface is used.
+     */
+    uint8_t spi;
+    /**
+     * Starts communication with SSD1306 display.
+     */
+    void (*start)(void);
+    /**
+     * Ends communication with SSD1306 display.
+     */
+    void (*stop)(void);
+    /**
+     * Sends byte to SSD1306 device
+     * @param data - byte to send
+     */
+    void (*send)(uint8_t data);
+    /**
+     * @brief Sends bytes to SSD1306 device
+     *
+     * Sends bytes to SSD1306 device. This functions gives
+     * ~ 30% performance increase than ssd1306_intf.send.
+     *
+     * @param buffer - bytes to send
+     * @param size - number of bytes to send
+     */
+    void (*send_buffer)(const uint8_t *buffer, uint16_t size);
+    /**
+     * @brief deinitializes internal resources, allocated for interface.
+     *
+     * Deinitializes internal resources, allocated for interface.
+     * There is no need to use this function for microcontrollers. In general
+     * the function has meaning in Linux-like systems.
+     */
+    void (*close)(void);
+} ssd1306_interface_t;
+
+/**
+ * Holds pointers to functions of currently initialized interface.
+ */
+extern ssd1306_interface_t ssd1306_intf;
+
+/**
+ * Deprecated
+ */
+#define ssd1306_dcQuickSwitch ssd1306_intf.spi
+
+/**
+ * Deprecated
+ */
+#define ssd1306_startTransmission     ssd1306_intf.start
+
+/**
+ * Deprecated
+ */
+#define ssd1306_endTransmission       ssd1306_intf.stop
+
+/**
+ * Deprecated
+ */
+#define ssd1306_sendByte              ssd1306_intf.send
+
+/**
+ * Deprecated
+ */
+#define ssd1306_sendBytes             ssd1306_intf.send_buffer
+
+/**
+ * Deprecated
+ */
+#define ssd1306_closeInterface        ssd1306_intf.close
+
+/**
+ * Sends command to SSD1306 device: includes initiating of
+ * transaction, sending data and completing transaction.
+ * @param command - command to send
+ */
+void ssd1306_sendCommand(uint8_t command);
+
+/**
+ * Starts transaction for sending commands.
+ */
+void ssd1306_commandStart(void);
+
+/**
+ * Starts transaction for sending bitmap data.
+ */
+void ssd1306_dataStart(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_INTERFACE_H_
diff --git a/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.c b/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.c
new file mode 100644
index 0000000..20cc85a
--- /dev/null
+++ b/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.c
@@ -0,0 +1,75 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+
+#include "ssd1306_uart_builtin.h"
+#include "intf/ssd1306_interface.h"
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_AVR_UART_AVAILABLE) && defined(CONFIG_AVR_UART_ENABLE)
+
+#include "ssd1306_uart.h"
+
+static void ssd1306_uartStart(void)
+{
+}
+
+static void ssd1306_uartStop(void)
+{
+    uart_send_byte(0x7E);
+}
+
+static void ssd1306_uartSendByte(uint8_t data)
+{
+    if ((data == 0x7E) || (data == 0x7D))
+    {
+         uart_send_byte(0x7D);
+         data ^= 0x20;
+    }
+    uart_send_byte(data);
+}
+
+static void ssd1306_uartSendBytes(const uint8_t * buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1306_uartSendByte(*buffer);
+        buffer++;
+    }
+}
+
+void ssd1306_uartInit_Builtin(uint32_t baud)
+{
+    if (!baud) baud = 115200;
+    uart_init(baud);
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = ssd1306_uartStart;
+    ssd1306_intf.stop = ssd1306_uartStop;
+    ssd1306_intf.send = ssd1306_uartSendByte;
+    ssd1306_intf.send_buffer = ssd1306_uartSendBytes;
+    ssd1306_intf.close = ssd1306_uartStart;
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.h b/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.h
new file mode 100644
index 0000000..645a8c9
--- /dev/null
+++ b/lib/libssd1306/src/intf/uart/ssd1306_uart_builtin.h
@@ -0,0 +1,59 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_uart_builtin.h embedded SSD1306 uart communication functions
+ */
+
+#ifndef _SSD1306_UART_BUILTIN_H_
+#define _SSD1306_UART_BUILTIN_H_
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_AVR_UART_AVAILABLE) && defined(CONFIG_AVR_UART_ENABLE)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_HW_INTERFACE_API
+ *
+ * Initializes built-in implementation of uart functions, based on USART hw module.
+ * If you do not know uart parameters, try ssd1306_uartInit_Builtin(0).
+ * @param baud uart baud rate
+ *
+ * @note: after call to this function you need to initialize lcd display.
+ */
+void ssd1306_uartInit_Builtin(uint32_t baud);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif /* _SSD1306_UART_BUILTIN_H_ */
+
+
diff --git a/lib/libssd1306/src/intf/vga/atmega328p/vga128x64.c b/lib/libssd1306/src/intf/vga/atmega328p/vga128x64.c
new file mode 100644
index 0000000..9cdfae0
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/atmega328p/vga128x64.c
@@ -0,0 +1,243 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "intf/vga/vga.h"
+// Never include vga128x64_isr.h here!!!
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "lcd/vga_commands.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(__AVR_ATmega328P__)
+
+extern uint16_t ssd1306_color;
+
+/* This buffer fits 128x64 pixels
+   Each 8 pixels are packed to 3 bytes:
+
+   BYTE1: B7 R2 G2 B2 B8 R1 G1 B1
+   BYTE2: G7 R4 G4 B4 G8 R3 G3 B3
+   BYTE3: R7 R6 G6 B6 R8 R5 G5 B5
+
+   Yeah, a little bit complicated, but this allows to quickly unpack structure
+*/
+
+// Set to ssd1306 compatible mode by default
+static uint8_t s_mode = 0x01;
+static uint8_t s_vga_command = 0xFF;
+static uint8_t s_vga_arg = 0;
+static uint8_t s_column = 0;
+static uint8_t s_column_end = 0;
+static uint8_t s_cursor_x = 0;
+static uint8_t s_cursor_y = 0;
+volatile uint8_t s_vga_frames;
+
+static void vga_controller_init(void)
+{
+    s_vga_command = 0xFF;
+}
+
+static void vga_controller_stop(void)
+{
+    s_vga_command = 0xFF;
+}
+
+static void vga_controller_close(void)
+{
+}
+
+/*
+ * Function sends 8 vertical pixels to buffer
+ */
+static inline void vga_controller_put_pixels(uint8_t x, uint8_t y, uint8_t pixels)
+{
+    uint16_t addr = (x >> 3)   + (uint16_t)(y * 16);
+    uint8_t offset = x & 0x07;
+    uint8_t mask = 1 << offset;
+    if (addr >= 16*64)
+    {
+        return;
+    }
+    for (uint8_t i=8; i>0; i--)
+    {
+        if (pixels & 0x01) __vga_buffer[addr] |= mask;
+                      else __vga_buffer[addr] &= ~mask;
+        addr += 16;
+        pixels >>= 1;
+    }
+}
+
+static void vga_controller_send_byte(uint8_t data)
+{
+    if (s_vga_command == 0xFF)
+    {
+        s_vga_command = data;
+        return;
+    }
+    if (s_vga_command == 0x40)
+    {
+        vga_controller_put_pixels(s_cursor_x, s_cursor_y, data);
+        s_cursor_x++;
+        if (s_cursor_x > s_column_end)
+        {
+            s_cursor_x = s_column;
+            s_cursor_y += 8;
+        }
+        return;
+    }
+    // command mode
+    if (!s_vga_command)
+    {
+        s_vga_command = data;
+        s_vga_arg = 0;
+    }
+    if (s_vga_command == VGA_SET_BLOCK)
+    {
+        // set block
+        if (s_vga_arg == 1)
+        {
+            s_column = data >= ssd1306_lcd.width ? ssd1306_lcd.width - 1 : data ;
+            s_cursor_x = s_column;
+        }
+        if (s_vga_arg == 2) { s_column_end = data >= ssd1306_lcd.width ? ssd1306_lcd.width - 1 : data; }
+        if (s_vga_arg == 3) { s_cursor_y = (data << 3); }
+        if (s_vga_arg == 4) { s_vga_command = 0; }
+    }
+    if (s_vga_command == VGA_SET_MODE)
+    {
+        if (s_vga_arg == 1) { s_mode = data; s_vga_command = 0; }
+    }
+    s_vga_arg++;
+}
+
+static void vga_controller_send_bytes(const uint8_t *buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1306_intf.send(*buffer);
+        buffer++;
+    }
+}
+
+static inline void init_vga_crt_driver(uint8_t enable_jitter_fix)
+{
+    cli();
+    if (enable_jitter_fix)
+    {
+        // Configure Timer 0 to calculate jitter fix
+        TIMSK0=0;
+        TCCR0A=0;
+        TCCR0B=1;
+        OCR0A=0;
+        OCR0B=0;
+        TCNT0=0;
+    }
+    else
+    {
+        // Sorry, we still need to disable timer0 interrupts to avoid wake up in sleep mode
+        TIMSK0 &= ~(1<<TOIE0);
+    }
+
+    // Timer 1 - vertical sync pulses
+    pinMode (V_SYNC_PIN, OUTPUT);
+    TCCR1A=(1<<WGM10) | (1<<WGM11) | (1<<COM1B1);
+    TCCR1B=(1<<WGM12) | (1<<WGM13) | (1<<CS12) | (1<<CS10); //1024 prescaler
+    OCR1A = 259;  // 16666 / 64 us = 260 (less one)
+    OCR1B = 0;    // 64 / 64 us = 1 (less one)
+    TIFR1 = (1<<TOV1);   // clear overflow flag
+    TIMSK1 = (1<<TOIE1);  // interrupt on overflow on timer 1
+
+    // Timer 2 - horizontal sync pulses
+    pinMode (H_SYNC_PIN, OUTPUT);
+    TCCR2A=(1<<WGM20) | (1<<WGM21) | (1<<COM2B1); //pin3=COM2B1
+    TCCR2B=(1<<WGM22) | (1<<CS21); //8 prescaler
+    OCR2A = 63;   // 32 / 0.5 us = 64 (less one)
+    OCR2B = 7;    // 4 / 0.5 us = 8 (less one)
+//    if (enable_jitter_fix)
+    {
+        TIFR2 = (1<<OCF2B);   // on end of h-sync pulse
+        TIMSK2 = (1<<OCIE2B); // on end of h-sync pulse
+    }
+//    else
+//    {
+//        TIFR2 = (1<<TOV2);    // int on start of h-sync pulse
+//        TIMSK2 = (1<<TOIE2);  // int on start of h-sync pulse
+//    }
+
+    // Set up USART in SPI mode (MSPIM)
+
+    pinMode(14, OUTPUT);
+    pinMode(15, OUTPUT);
+    pinMode(16, OUTPUT);
+    PORTC = 0;
+
+    sei();
+}
+
+void ssd1306_vga_controller_128x64_init_no_output(void)
+{
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = vga_controller_init;
+    ssd1306_intf.stop = vga_controller_stop;
+    ssd1306_intf.send = vga_controller_send_byte;
+    ssd1306_intf.send_buffer = vga_controller_send_bytes;
+    ssd1306_intf.close = vga_controller_close;
+}
+
+void ssd1306_vga_controller_128x64_init_enable_output(void)
+{
+    ssd1306_vga_controller_128x64_init_no_output();
+    init_vga_crt_driver(1);
+}
+
+void ssd1306_vga_controller_128x64_init_enable_output_no_jitter_fix(void)
+{
+    ssd1306_vga_controller_128x64_init_no_output();
+    init_vga_crt_driver(0);
+//    set_sleep_mode (SLEEP_MODE_IDLE);
+}
+
+void ssd1306_debug_print_vga_buffer_128x64(void (*func)(uint8_t))
+{
+    for(int y = 0; y < ssd1306_lcd.height; y++)
+    {
+        for(int x = 0; x < ssd1306_lcd.width; x++)
+        {
+            uint8_t color = __vga_buffer[(x >> 3) + y * 16] & (1<< (x&0x07));
+            if (color)
+            {
+                func('#');
+                func('#');
+            }
+            else
+            {
+                func(' ');
+                func(' ');
+            }
+        }
+        func('\n');
+    }
+    func('\n');
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/vga/atmega328p/vga96x40.c b/lib/libssd1306/src/intf/vga/atmega328p/vga96x40.c
new file mode 100644
index 0000000..550ca7a
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/atmega328p/vga96x40.c
@@ -0,0 +1,292 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "intf/vga/vga.h"
+// Never include vga96x40_isr.h here!!!
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "lcd/vga_commands.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(__AVR_ATmega328P__)
+
+extern uint16_t ssd1306_color;
+
+/* This buffer fits 96x40 pixels
+   Each 8 pixels are packed to 3 bytes:
+
+   BYTE1: B7 R2 G2 B2 B8 R1 G1 B1
+   BYTE2: G7 R4 G4 B4 G8 R3 G3 B3
+   BYTE3: R7 R6 G6 B6 R8 R5 G5 B5
+
+   Yeah, a little bit complicated, but this allows to quickly unpack structure
+*/
+
+// Set to ssd1306 compatible mode by default
+static uint8_t s_mode = 0x01;
+static uint8_t s_vga_command = 0xFF;
+static uint8_t s_vga_arg = 0;
+static uint8_t s_column = 0;
+static uint8_t s_column_end = 0;
+static uint8_t s_cursor_x = 0;
+static uint8_t s_cursor_y = 0;
+volatile uint8_t s_vga_frames;
+
+static void vga_controller_init(void)
+{
+    s_vga_command = 0xFF;
+}
+
+static void vga_controller_stop(void)
+{
+    s_vga_command = 0xFF;
+}
+
+static void vga_controller_close(void)
+{
+}
+
+/* This buffer fits 96x40 pixels
+   Each 8 pixels are packed to 3 bytes:
+
+   BYTE1: B7 R2 G2 B2 B8 R1 G1 B1
+   BYTE2: G7 R4 G4 B4 G8 R3 G3 B3
+   BYTE3: R7 R6 G6 B6 R8 R5 G5 B5
+
+   Yeah, a little bit complicated, but this allows to quickly unpack structure
+*/
+static inline void vga_controller_put_pixel3(uint8_t x, uint8_t y, uint8_t color)
+{
+    uint16_t addr = (x >> 3)*3   + (uint16_t)y*36;
+    uint8_t offset = x & 0x07;
+    if (addr >= 36*40)
+    {
+        return;
+    }
+    if (offset < 6)
+    {
+        if (x&1)
+        {
+            __vga_buffer[addr + (offset>>1)] &= 0x8F;
+            __vga_buffer[addr + (offset>>1)] |= (color<<4);
+        }
+        else
+        {
+            __vga_buffer[addr + (offset>>1)] &= 0xF8;
+            __vga_buffer[addr + (offset>>1)] |= color;
+        }
+    }
+    else if (offset == 6)
+    {
+        __vga_buffer[addr+0] &= 0x7F;
+        __vga_buffer[addr+0] |= ((color & 0x01) << 7);
+        __vga_buffer[addr+1] &= 0x7F;
+        __vga_buffer[addr+1] |= ((color & 0x02) << 6);
+        __vga_buffer[addr+2] &= 0x7F;
+        __vga_buffer[addr+2] |= ((color & 0x04) << 5);
+    }
+    else // if (offset == 7)
+    {
+        __vga_buffer[addr+0] &= 0xF7;
+        __vga_buffer[addr+0] |= ((color & 0x01) << 3);
+        __vga_buffer[addr+1] &= 0xF7;
+        __vga_buffer[addr+1] |= ((color & 0x02) << 2);
+        __vga_buffer[addr+2] &= 0xF7;
+        __vga_buffer[addr+2] |= ((color & 0x04) << 1);
+    }
+}
+
+static void vga_controller_send_byte4(uint8_t data)
+{
+    if (s_vga_command == 0xFF)
+    {
+        s_vga_command = data;
+        return;
+    }
+    if (s_vga_command == 0x40)
+    {
+        uint8_t color = ((data & 0x80) >> 5) | ((data & 0x10) >> 3) | ((data & 0x02)>>1);
+        vga_controller_put_pixel3(s_cursor_x, s_cursor_y, color);
+        if (s_mode == 0x00)
+        {
+            s_cursor_x++;
+            if (s_cursor_x > s_column_end)
+            {
+                s_cursor_x = s_column;
+                s_cursor_y++;
+            }
+        }
+        else
+        {
+            s_cursor_y++;
+            if ((s_cursor_y & 0x07) == 0)
+            {
+                s_cursor_y -= 8;
+                s_cursor_x++;
+            }
+        }
+        return;
+    }
+    // command mode
+    if (!s_vga_command)
+    {
+        s_vga_command = data;
+        s_vga_arg = 0;
+    }
+    if (s_vga_command == VGA_SET_BLOCK)
+    {
+        // set block
+        if (s_vga_arg == 1) { s_column = data; s_cursor_x = data; }
+        if (s_vga_arg == 2) { s_column_end = data; }
+        if (s_vga_arg == 3) { s_cursor_y = data; }
+        if (s_vga_arg == 4) { s_vga_command = 0; }
+    }
+    if (s_vga_command == VGA_SET_MODE)
+    {
+        if (s_vga_arg == 1) { s_mode = data; s_vga_command = 0; }
+    }
+    s_vga_arg++;
+}
+
+static void vga_controller_send_bytes(const uint8_t *buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1306_intf.send(*buffer);
+        buffer++;
+    }
+}
+
+static inline void init_vga_crt_driver(uint8_t enable_jitter_fix)
+{
+    cli();
+    if (enable_jitter_fix)
+    {
+        // Configure Timer 0 to calculate jitter fix
+        TIMSK0=0;
+        TCCR0A=0;
+        TCCR0B=1;
+        OCR0A=0;
+        OCR0B=0;
+        TCNT0=0;
+    }
+    else
+    {
+        // Sorry, we still need to disable timer0 interrupts to avoid wake up in sleep mode
+        TIMSK0 &= ~(1<<TOIE0);
+    }
+
+    // Timer 1 - vertical sync pulses
+    pinMode (V_SYNC_PIN, OUTPUT);
+    TCCR1A=(1<<WGM10) | (1<<WGM11) | (1<<COM1B1);
+    TCCR1B=(1<<WGM12) | (1<<WGM13) | (1<<CS12) | (1<<CS10); //1024 prescaler
+    OCR1A = 259;  // 16666 / 64 us = 260 (less one)
+    OCR1B = 0;    // 64 / 64 us = 1 (less one)
+    TIFR1 = (1<<TOV1);   // clear overflow flag
+    TIMSK1 = (1<<TOIE1);  // interrupt on overflow on timer 1
+
+    // Timer 2 - horizontal sync pulses
+    pinMode (H_SYNC_PIN, OUTPUT);
+    TCCR2A=(1<<WGM20) | (1<<WGM21) | (1<<COM2B1); //pin3=COM2B1
+    TCCR2B=(1<<WGM22) | (1<<CS21); //8 prescaler
+    OCR2A = 63;   // 32 / 0.5 us = 64 (less one)
+    OCR2B = 7;    // 4 / 0.5 us = 8 (less one)
+//    if (enable_jitter_fix)
+    {
+        TIFR2 = (1<<OCF2B);   // on end of h-sync pulse
+        TIMSK2 = (1<<OCIE2B); // on end of h-sync pulse
+    }
+//    else
+//    {
+//        TIFR2 = (1<<TOV2);    // int on start of h-sync pulse
+//        TIMSK2 = (1<<TOIE2);  // int on start of h-sync pulse
+//    }
+
+    // Set up USART in SPI mode (MSPIM)
+
+    pinMode(14, OUTPUT);
+    pinMode(15, OUTPUT);
+    pinMode(16, OUTPUT);
+    PORTC = 0;
+
+    sei();
+}
+
+void ssd1306_vga_controller_96x40_init_no_output(void)
+{
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = vga_controller_init;
+    ssd1306_intf.stop = vga_controller_stop;
+    ssd1306_intf.send = vga_controller_send_byte4;
+    ssd1306_intf.send_buffer = vga_controller_send_bytes;
+    ssd1306_intf.close = vga_controller_close;
+}
+
+void ssd1306_vga_controller_96x40_init_enable_output(void)
+{
+    ssd1306_vga_controller_96x40_init_no_output();
+    init_vga_crt_driver(1);
+}
+
+void ssd1306_vga_controller_96x40_init_enable_output_no_jitter_fix(void)
+{
+    ssd1306_vga_controller_96x40_init_no_output();
+    init_vga_crt_driver(0);
+//    set_sleep_mode (SLEEP_MODE_IDLE);
+}
+
+void ssd1306_debug_print_vga_buffer_96x40(void (*func)(uint8_t))
+{
+    for(int y = 0; y < ssd1306_lcd.height; y++)
+    {
+        for(int x = 0; x < ssd1306_lcd.width; x++)
+        {
+            uint8_t color = (__vga_buffer[(y*ssd1306_lcd.width + x)/2] >> ((x&1)<<2)) & 0x0F;
+            if (color)
+            {
+                func('#');
+                func('#');
+            }
+            else
+            {
+                func(' ');
+                func(' ');
+            }
+        }
+        func('\n');
+    }
+    func('\n');
+}
+
+void ssd1306_vga_delay(uint32_t ms)
+{
+    while (ms >= 16)
+    {
+         uint8_t vga_frames;
+         vga_frames = s_vga_frames;
+         while (vga_frames == s_vga_frames);
+         ms-=16;
+    }
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/vga/atmega328p/vga_isr.h b/lib/libssd1306/src/intf/vga/atmega328p/vga_isr.h
new file mode 100644
index 0000000..51516c4
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/atmega328p/vga_isr.h
@@ -0,0 +1,312 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file vga_isr.h VGA ISR code to communicate with VGA-monitor from the sketch directly
+ *
+ * @details Please, include this file only once in your sketch, if you want to control
+ * vga monitor directly from your sketch.
+ * This header supports different modes: VGA_CONTROLLER_DEBUG, SSD1306_VGA_SLEEP_MODE.
+ * If you want to use vga_controller module in debug mode without producing VGA output,
+ * define VGA_CONTROLLER_DEBUG before including this header. If you want to use library with
+ * AVR sleep mode, then jitter fix is not required, you will able to use TIMER0, so define
+ * SSD1306_VGA_SLEEP_MODE before including this header.
+ */
+
+#ifndef _SSD1306_VGA_ATMEGA328P_ISR_H_
+#define _SSD1306_VGA_ATMEGA328P_ISR_H_
+
+#include "intf/vga/vga.h"
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Including this header defines ISR handlers in your application automatically
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(__AVR_ATmega328P__)
+
+#ifndef DEJITTER_OFFSET
+#define DEJITTER_OFFSET -4
+#endif
+
+#if defined(CONFIG_VGA_128X64_ENABLE)
+
+static const uint16_t __VGA_VERTICAL_PIXELS = 64;
+static const uint16_t __VGA_LINE_BYTES = 16;
+static const uint16_t __VGA_PIXEL_HEIGHT = 7;
+volatile uint8_t      __vga_buffer[16*64] = {0};
+static const volatile uint8_t *__VGA_BUFFER_PTR = &__vga_buffer[0];
+
+void ssd1306_vga_controller_128x64_init_no_output(void);
+void ssd1306_vga_controller_128x64_init_enable_output(void);
+void ssd1306_vga_controller_128x64_init_enable_output_no_jitter_fix(void);
+void ssd1306_debug_print_vga_buffer_128x64(void (*func)(uint8_t));
+
+#elif defined(CONFIG_VGA_96X40_ENABLE)
+
+static const uint16_t __VGA_VERTICAL_PIXELS = 40;
+static const uint16_t __VGA_LINE_BYTES = 36;
+static const uint16_t __VGA_PIXEL_HEIGHT = 10;
+volatile uint8_t      __vga_buffer[36*40] = {0};
+static const volatile uint8_t * __VGA_BUFFER_PTR = &__vga_buffer[0];
+
+void ssd1306_vga_controller_96x40_init_no_output(void);
+void ssd1306_vga_controller_96x40_init_enable_output(void);
+void ssd1306_vga_controller_96x40_init_enable_output_no_jitter_fix(void);
+void ssd1306_debug_print_vga_buffer_96x40(void (*func)(uint8_t));
+
+#else
+    #error "Please, define one of VGA options"
+#endif
+
+#if !defined(VGA_CONTROLLER_DEBUG)
+
+// Total number of lines used in specific scan mode
+static const uint16_t VGA_TOTAL_MODE_LINES = __VGA_VERTICAL_PIXELS*__VGA_PIXEL_HEIGHT;
+
+// Lines to skip before starting to draw first line of the screen content
+// This includes V-sync signal + front porch
+static const uint8_t V_BACKPORCH_LINES = 40;
+
+// Lines to skip before starting to draw first line of the screen content
+// This includes V-sync signal + front porch
+volatile int s_current_scan_line;
+
+volatile uint8_t s_lines_to_skip;
+volatile uint8_t s_scan_line_index;
+volatile const uint8_t * volatile s_current_scan_line_data = __VGA_BUFFER_PTR;
+extern volatile uint8_t s_vga_frames;
+extern unsigned long timer0_millis;
+// ISR: Vsync pulse
+ISR(TIMER1_OVF_vect)
+{
+    s_current_scan_line = 0;
+    s_scan_line_index = 0;
+    s_current_scan_line_data = __VGA_BUFFER_PTR;
+    s_lines_to_skip = V_BACKPORCH_LINES;
+    s_vga_frames++;
+    timer0_millis += 16;
+} // end of TIMER1_OVF_vect
+
+#if defined(CONFIG_VGA_128X64_ENABLE)
+static inline void /*__attribute__ ((noinline))*/ do_scan_line()
+{
+    // output all pixels
+
+    asm volatile(
+         ".rept 16\n\t"
+
+         "ld r24, Z+\n\t"      
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+         "lsr r24\n\t"
+         "nop\n\t"
+         "out %[port], r24\n\t"
+
+         ".endr\n\t"
+         "nop\n\t"
+         "ldi r24,0\n\t"
+         "out %[port], r24 \n\t"
+         "nop\n\t"
+    :
+    : [port] "I" (_SFR_IO_ADDR(PORTC)),
+       "z" "I" ((uint8_t *)s_current_scan_line_data )
+    : "r24", "memory"
+    );
+}
+#elif defined(CONFIG_VGA_96X40_ENABLE)
+static inline void /*__attribute__ ((noinline))*/ do_scan_line()
+{
+    // output all pixels
+
+    asm volatile(
+         ".rept 12\n\t"
+
+         "ld r24, Z+\n\t"        // r24 = 82227111
+//         "nop\n\t"               // to make pixel wider in 96x40 mode
+         "out %[port], r24\n\t"  // 111
+
+         "ld r25, Z+\n\t"        // r25 = 84447333
+         "swap r24\n\t"          // r24 = 71118222
+         "out %[port], r24\n\t"  // 222
+
+         "andi r24, 0x88\n\t"    // r24 = 70008000
+         "ld r20, Z+\n\t"        // r20 = 86667555
+         "out %[port], r25\n\t"  // 333
+
+         "swap r25\n\t"          // r25 = 73338444
+         "lsr r24\n\t"           // r24 = 00080007
+         "lsr r24\n\t"           // r24 = 00800070
+         "out %[port], r25\n\t"  // 444
+
+         "andi r25, 0x88\n\t"    // r25 = 70008000
+         "lsr r24\n\t"           // r24 = 08000700
+         "lsr r25\n\t"           // r25 = 00080007
+         "out %[port], r20\n\t"  // 555
+
+         "swap r20\n\t"          // r20 = 75558666
+         "lsr r25\n\t"           // r25 = 00800070
+         "or r24, r25\n\t"       // r24 = 08800770
+         "out %[port], r20\n\t"  // 666
+
+         "andi r20, 0x88\n\t"    // r20 = 70008000
+         "lsr r20\n\t"           // r20 = 00080007 b
+         "or r24, r20\n\t"       // r24 = 08880777 rgb
+         "out %[port], r24\n\t"  // 777
+
+         "swap r24\n\t"          // r24 = 07770888
+//         "nop\n\t"               // to make pixel wider in 96x40 mode
+         "nop\n\t"
+         "out %[port], r24\n\t"  // 888
+
+         ".endr\n\t"
+//         "nop\n\t"               // to make pixel wider in 96x40 mode
+         "nop\n\t"
+         "ldi r24,0\n\t"
+         "out %[port], r24 \n\t"
+         "nop\n\t"
+    :
+    : [port] "I" (_SFR_IO_ADDR(PORTC)),
+       "z" "I" ((uint8_t *)s_current_scan_line_data )
+    : "r24", "r25", "r20", "memory"
+    );
+}
+#endif
+
+//#ifdef SSD1306_VGA_SLEEP_MODE
+//ISR(TIMER2_OVF_vect) // for start of h-sync pulse
+//#else
+ISR(TIMER2_COMPB_vect) // for end of h-sync pulse
+//#endif
+{
+    // ISR should work as fast as possible
+    if (s_lines_to_skip)
+    {
+        s_lines_to_skip--;
+        return;
+    }
+    else if (s_current_scan_line >= VGA_TOTAL_MODE_LINES)
+    {
+        return;
+    }
+    #ifndef SSD1306_VGA_SLEEP_MODE
+    // This is dejitter code, it purpose to start pixels output at the same offset after h-sync
+    asm volatile(
+      "     lds r24, %[timer0]    \n\t" //
+      "     subi r24, %[toffset]  \n\t" // some offset, calculated experimentally
+      "     andi r24, 7           \n\t" // use module 8 value from Timer 0 counter
+      "     ldi r31, pm_hi8(LW)   \n\t" // load label address
+      "     ldi r30, pm_lo8(LW)   \n\t" //
+      "     add r30, r24          \n\t" // no need to multiply by 2 since AVR addresses are half-values
+      "     adc r31, __zero_reg__ \n\t" //
+      "     ijmp                  \n\t" //
+      "LW:                        \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+      "     nop                   \n\t" //
+    :
+    : [timer0] "i" (&TCNT0),
+      [toffset] "i" ((uint8_t)DEJITTER_OFFSET)
+    : "r30", "r31", "r24", "r25");
+    #endif
+    do_scan_line();
+    s_current_scan_line++;
+    s_scan_line_index++;
+    if ( s_scan_line_index >= __VGA_PIXEL_HEIGHT )
+    {
+        s_scan_line_index=0;
+        s_current_scan_line_data += __VGA_LINE_BYTES;
+    }
+}
+
+#endif  // VGA_CONTROLLER_DEBUG
+
+#if defined(CONFIG_VGA_128X64_ENABLE)
+
+static inline void ssd1306_vga_controller_init(void)
+{
+    // if there is no builtin support then only debug mode is available
+#if defined(VGA_CONTROLLER_DEBUG)
+    ssd1306_vga_controller_128x64_init_no_output();
+#elif defined(SSD1306_VGA_SLEEP_MODE)
+    ssd1306_vga_controller_128x64_init_enable_output_no_jitter_fix();
+#else
+    ssd1306_vga_controller_128x64_init_enable_output();
+#endif
+}
+
+void ssd1306_debug_print_vga_buffer(void (*func)(uint8_t))
+{
+    ssd1306_debug_print_vga_buffer_128x64(func);
+}
+
+#elif defined(CONFIG_VGA_96X40_ENABLE)
+
+static inline void ssd1306_vga_controller_init(void)
+{
+    // if there is no builtin support then only debug mode is available
+#if defined(VGA_CONTROLLER_DEBUG)
+    ssd1306_vga_controller_96x40_init_no_output();
+#elif defined(SSD1306_VGA_SLEEP_MODE)
+    ssd1306_vga_controller_96x40_init_enable_output_no_jitter_fix();
+#else
+    ssd1306_vga_controller_96x40_init_enable_output();
+#endif
+}
+
+void ssd1306_debug_print_vga_buffer(void (*func)(uint8_t))
+{
+    ssd1306_debug_print_vga_buffer_96x40(func);
+}
+
+#endif // CONFIG_VGA_XXX_ENABLE
+
+#endif  // SSD1306_BUILTIN_VGA_SUPPORT
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.cpp b/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.cpp
new file mode 100644
index 0000000..470eed5
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.cpp
@@ -0,0 +1,286 @@
+/*
+ * Credits to https://github.com/bitluni/ESP32CompositeVideo
+ */
+
+#include "CompositeOutput.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(__XTENSA__)
+
+#include "driver/i2s.h"
+
+#define I2S_VGA_SAMPLE_RATE   (4000000)
+static const i2s_port_t I2S_PORT = (i2s_port_t)I2S_NUM_0;
+
+const TechProperties PALProperties = {
+  .lineMicros = 64,
+  .syncMicros = 4.7,
+  .blankEndMicros = 10.4,
+  .backMicros = 1.65,
+  .shortVSyncMicros = 2.35,
+  .overscanLeftMicros = 1.6875,
+  .overscanRightMicros = 1.6875,
+  .syncVolts = -0.3,
+  .blankVolts = 0.0,
+  .blackVolts =  0.005,//specs 0.0,
+  .whiteVolts = 0.7,
+  .lines = 625,
+  .linesFirstTop = 23,
+  .linesOverscanTop = 9,
+  .linesOverscanBottom = 9,
+  .imageAspect = 4./3.
+};
+
+const TechProperties NTSCProperties = {
+  .lineMicros = 63.492,
+  .syncMicros = 4.7,
+  .blankEndMicros = 9.2,
+  .backMicros = 1.5,
+  .shortVSyncMicros = 2.3,
+  .overscanLeftMicros = 0,//1.3,
+  .overscanRightMicros = 0,//1,
+  .syncVolts = -0.286,
+  .blankVolts = 0.0,
+  .blackVolts = 0.05, //specs 0.054,
+  .whiteVolts = 0.714,
+  .lines = 525,
+  .linesFirstTop = 20,
+  .linesOverscanTop = 6,
+  .linesOverscanBottom = 9,
+  .imageAspect = 4./3.
+};
+
+CompositeOutput::CompositeOutput(Mode mode, double Vcc)
+    :properties((mode==NTSC) ? NTSCProperties: PALProperties)
+{
+    double dacPerVolt = 255.0 / Vcc;
+    levelSync = 0;
+    levelBlank = (properties.blankVolts - properties.syncVolts) * dacPerVolt + 0.5;
+    levelBlack = (properties.blackVolts - properties.syncVolts) * dacPerVolt + 0.5;
+    levelWhite = (properties.whiteVolts - properties.syncVolts) * dacPerVolt + 0.5;
+    grayValues = levelWhite - levelBlack + 1;
+}
+
+void CompositeOutput::init(int xres, int yres, int bpp)
+{
+    const int LINES_SYNC_TOP = 5;
+    const int LINES_SYNC_BOTTOM = 3;
+
+    m_buffer_width = xres;
+    m_buffer_height = yres;
+    m_bpp = bpp;
+
+    linesOdd = properties.lines / 2;
+    linesEven = properties.lines - linesOdd;
+    linesEvenActive = linesEven - properties.linesFirstTop - LINES_SYNC_BOTTOM;
+    linesOddActive = linesOdd - properties.linesFirstTop - LINES_SYNC_BOTTOM;
+    linesEvenVisible = linesEvenActive - properties.linesOverscanTop - properties.linesOverscanBottom;
+    linesOddVisible = linesOddActive - properties.linesOverscanTop - properties.linesOverscanBottom;
+
+    targetYresOdd = (yres / 2 < linesOddVisible) ? yres / 2 : linesOddVisible;
+    targetYresEven = (yres - targetYresOdd < linesEvenVisible) ? yres - targetYresOdd : linesEvenVisible;
+    targetYres = targetYresEven + targetYresOdd;
+
+    linesEvenBlankTop = properties.linesFirstTop - LINES_SYNC_TOP + properties.linesOverscanTop + (linesEvenVisible - targetYresEven) / 2;
+    linesEvenBlankBottom = linesEven - linesEvenBlankTop - targetYresEven - LINES_SYNC_BOTTOM;
+    linesOddBlankTop = linesEvenBlankTop;
+    linesOddBlankBottom = linesOdd - linesOddBlankTop - targetYresOdd - LINES_SYNC_BOTTOM;
+
+    double samplesPerSecond = I2S_VGA_SAMPLE_RATE;
+    double samplesPerMicro = samplesPerSecond * 0.000001;
+    m_samples_per_line = (int)(samplesPerMicro * properties.lineMicros + 1.5) & ~1;
+    samplesSync = samplesPerMicro * properties.syncMicros + 0.5;
+    samplesBlank = samplesPerMicro * (properties.blankEndMicros - properties.syncMicros + properties.overscanLeftMicros) + 0.5;
+    samplesBack = samplesPerMicro * (properties.backMicros + properties.overscanRightMicros) + 0.5;
+    samplesActive = m_samples_per_line - samplesSync - samplesBlank - samplesBack;
+
+    targetXres = xres < samplesActive ? xres : samplesActive;
+
+    samplesVSyncShort = samplesPerMicro * properties.shortVSyncMicros + 0.5;
+
+    samplesBlackLeft = (samplesActive - targetXres) / 2;
+    samplesBlackRight = samplesActive - targetXres - samplesBlackLeft;
+
+//    pixelAspect = (float(samplesActive) / (linesEvenVisible + linesOddVisible)) / properties.imageAspect;
+
+    line = (uint16_t*)malloc(sizeof(uint16_t) * m_samples_per_line * 2);
+    m_ptr = line;
+    m_end = line + m_samples_per_line * 2;
+
+    init_hardware();
+}
+
+void CompositeOutput::init_hardware()
+{
+    i2s_config_t i2s_config = {
+       .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_TX | I2S_MODE_DAC_BUILT_IN),
+       .sample_rate = I2S_VGA_SAMPLE_RATE,  //not really used
+       .bits_per_sample = (i2s_bits_per_sample_t)I2S_BITS_PER_SAMPLE_16BIT,
+       .channel_format = I2S_CHANNEL_FMT_ONLY_RIGHT,
+       .communication_format = I2S_COMM_FORMAT_I2S_MSB,
+       .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
+       .dma_buf_count = 2,
+       .dma_buf_len = m_samples_per_line  //a buffer per line
+    };
+
+    i2s_driver_install(I2S_PORT, &i2s_config, 0, NULL);    //start i2s driver
+    i2s_set_pin(I2S_PORT, NULL);                           //use internal DAC
+    i2s_set_sample_rates(I2S_PORT, I2S_VGA_SAMPLE_RATE);   //dummy sample rate, since the function fails at high values
+}
+
+void CompositeOutput::fillValues(uint8_t value, int count)
+{
+    for(int j = 0; j < count; j++)
+    {
+        *m_ptr = ((uint16_t)value << 8);
+        m_ptr++;
+    }
+}
+
+void CompositeOutput::sendFrameHalfResolution(const uint8_t *frame)
+{
+    generate_long_sync();       // 1
+    generate_long_sync();       // 2
+    generate_long_short_sync(); // 3
+    generate_short_sync();      // 4
+    generate_short_sync();      // 5
+    for (int y = 0; y < linesEvenBlankTop; y++)
+    {
+        generate_blank_line();  // top blank lines
+    }
+
+    for (int y = 0; y < targetYresEven; y++)
+    {
+        generate_line_from_buffer( &frame[(y >> 3)*(m_buffer_width * m_bpp / 8)] );  // real data
+    }
+    for (int y = 0; y < linesEvenBlankBottom; y++)
+    {
+        generate_blank_line();  // bottom blank lines
+    }
+    generate_short_sync();      // 311
+    generate_short_sync();      // 312
+
+    generate_short_long_sync();      // 313
+    generate_long_sync();       // 314
+    generate_long_sync();       // 315
+    generate_short_sync();      // 316
+    generate_short_sync();      // 317
+
+    generate_short_blank_sync(); // 318
+    for (int y = 0; y < linesOddBlankTop; y++)
+    {
+        generate_blank_line();  // top blank lines
+    }
+    for (int y = 0; y < targetYresOdd; y++)
+    {
+        generate_line_from_buffer( &frame[(y>>3)*(m_buffer_width * m_bpp / 8)] );  // real data
+    }
+    for(int y = 0; y < linesOddBlankBottom; y++)
+    {
+        generate_blank_line();  // bottom blank lines
+    }
+    generate_blank_short_sync();  // 623
+    generate_short_sync();        // 624
+    generate_short_sync();        // 625
+    if (m_ptr != line) // force to send data
+    {
+        size_t bytes_written;
+        i2s_write(I2S_PORT, (char*)line, (m_ptr - line) * sizeof(uint16_t), &bytes_written, portMAX_DELAY);
+        m_ptr = line;
+    }
+}
+
+void CompositeOutput::generate_long_sync()
+{
+    for (int i = 0; i < 2; i++)
+    {
+        fillValues(levelSync, m_samples_per_line / 2 - samplesVSyncShort);
+        fillValues(levelBlank, samplesVSyncShort);
+    }
+    check_buffer();
+}
+
+void CompositeOutput::generate_short_sync()
+{
+    for (int i = 0; i < 2; i++)
+    {
+        fillValues(levelSync, samplesVSyncShort);
+        fillValues(levelBlank, m_samples_per_line / 2 - samplesVSyncShort);
+    }
+    check_buffer();
+}
+
+void CompositeOutput::generate_long_short_sync()
+{
+    fillValues(levelSync, m_samples_per_line / 2 - samplesVSyncShort);
+    fillValues(levelBlank, samplesVSyncShort);
+    fillValues(levelSync, samplesVSyncShort);
+    fillValues(levelBlank, m_samples_per_line / 2 - samplesVSyncShort);
+    check_buffer();
+}
+
+void CompositeOutput::generate_short_long_sync()
+{
+    fillValues(levelSync, samplesVSyncShort);
+    fillValues(levelBlank, m_samples_per_line / 2 - samplesVSyncShort);
+    fillValues(levelSync, m_samples_per_line / 2 - samplesVSyncShort);
+    fillValues(levelBlank, samplesVSyncShort);
+    check_buffer();
+}
+
+void CompositeOutput::generate_short_blank_sync()
+{
+    fillValues(levelSync, samplesVSyncShort);
+    fillValues(levelBlank, m_samples_per_line / 2 - samplesVSyncShort);
+    fillValues(levelBlank, m_samples_per_line / 2);
+    check_buffer();
+}
+
+void CompositeOutput::generate_blank_short_sync()
+{
+    fillValues(levelSync, samplesSync);
+    fillValues(levelBlank, m_samples_per_line / 2 - samplesSync);
+    fillValues(levelSync, samplesVSyncShort);
+    fillValues(levelBlank, m_samples_per_line / 2 - samplesVSyncShort);
+    check_buffer();
+}
+
+void CompositeOutput::generate_blank_line()
+{
+    fillValues(levelSync, samplesSync);
+    fillValues(levelBlank, samplesBlank);
+    fillValues(levelBlack, samplesActive);
+    fillValues(levelBlank, samplesBack);
+    check_buffer();
+}
+
+const uint8_t* CompositeOutput::generate_line_from_buffer(const uint8_t *pixels)
+{
+    fillValues(levelSync, samplesSync);
+    fillValues(levelBlank, samplesBlank);
+    fillValues(levelBlack, samplesBlackLeft);
+    for (int x = 0; x < targetXres; x++)
+    {
+        uint8_t color = pixels[(x >> 3)] & (1<< (x&0x07));
+//        *m_ptr = (levelBlack + pixels[x]) << 8;
+        *m_ptr = (levelBlack + (color ? 0x80: 0x00 )) << 8;
+        m_ptr++;
+    }
+    fillValues(levelBlack, samplesBlackRight);
+    fillValues(levelBlank, samplesBack);
+    check_buffer();
+    return pixels + m_buffer_width * m_bpp / 8;
+//    return pixels + targetXres;
+}
+
+void CompositeOutput::check_buffer()
+{
+    if (m_ptr == m_end)
+    {
+        size_t bytes_written;
+        i2s_write(I2S_PORT, (char*)line, sizeof(uint16_t) * (m_end - line), &bytes_written, portMAX_DELAY);
+        m_ptr = line;
+    }
+}
+
+#endif
+
diff --git a/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.h b/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.h
new file mode 100644
index 0000000..7bac8a0
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/esp32/CompositeOutput.h
@@ -0,0 +1,112 @@
+/*
+ * Credits to https://github.com/bitluni/ESP32CompositeVideo
+ */
+
+#pragma once
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(__XTENSA__)
+
+#include <stdint.h>
+#include "driver/i2s.h"
+
+typedef struct
+{
+  float lineMicros;
+  float syncMicros;
+  float blankEndMicros;
+  float backMicros;
+  float shortVSyncMicros;
+  float overscanLeftMicros;
+  float overscanRightMicros;
+  float syncVolts;
+  float blankVolts;
+  float blackVolts;
+  float whiteVolts;
+  short lines;
+  short linesFirstTop;
+  short linesOverscanTop;
+  short linesOverscanBottom;
+  float imageAspect;
+} TechProperties;
+
+class CompositeOutput
+{
+public:
+
+    enum Mode
+    {
+        PAL,
+        NTSC
+    };
+
+    CompositeOutput(Mode mode, double Vcc = 3.3);
+
+    void init(int xres, int yres, int bpp);
+
+    void fillValues(uint8_t value, int count);
+
+    void sendFrameHalfResolution(const uint8_t *frame);
+
+private:
+    const TechProperties &properties;
+
+    int m_samples_per_line = 0;
+    int samplesSync = 0;
+    int samplesBlank = 0;
+    int samplesBack = 0;
+    int samplesActive = 0;
+    int samplesBlackLeft = 0;
+    int samplesBlackRight = 0;
+
+    int samplesVSyncShort = 0;
+    int samplesVSyncLong = 0;
+
+    uint8_t levelSync = 0;
+    uint8_t levelBlank = 0;
+    uint8_t levelBlack = 0;
+    uint8_t levelWhite = 0;
+    uint8_t grayValues = 0;
+
+    int targetXres = 0;
+    int targetYres = 0;
+    int targetYresEven = 0;
+    int targetYresOdd = 0;
+
+    int linesEven = 0;
+    int linesOdd = 0;
+    int linesEvenActive = 0;
+    int linesOddActive = 0;
+    int linesEvenVisible = 0;
+    int linesOddVisible = 0;
+    int linesEvenBlankTop = 0;
+    int linesEvenBlankBottom = 0;
+    int linesOddBlankTop = 0;
+    int linesOddBlankBottom = 0;
+
+    int m_buffer_width = 0;
+    int m_buffer_height = 0;
+    int m_bpp = 0;
+
+//    float pixelAspect;
+
+    uint16_t *line = nullptr;
+    uint16_t *m_end = nullptr;
+    uint16_t *m_ptr = nullptr;
+
+    void init_hardware();
+    void check_buffer();
+    void generate_vsync();
+    void generate_long_sync();
+    void generate_short_sync();
+    void generate_long_short_sync();
+    void generate_short_long_sync();
+    void generate_short_blank_sync();
+    void generate_blank_short_sync();
+    void generate_blank_line();
+    const uint8_t * generate_line_from_buffer(const uint8_t * buffer);
+};
+
+#endif
+
diff --git a/lib/libssd1306/src/intf/vga/esp32/vga128x64.cpp b/lib/libssd1306/src/intf/vga/esp32/vga128x64.cpp
new file mode 100644
index 0000000..941e074
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/esp32/vga128x64.cpp
@@ -0,0 +1,211 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "intf/ssd1306_interface.h"
+#include "intf/vga/vga.h"
+#include "lcd/lcd_common.h"
+#include "lcd/vga_commands.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(ESP32)
+
+#include "CompositeOutput.h"
+
+//#define VGA_CONTROLLER_DEBUG
+
+static uint8_t *__vga_buffer = nullptr;
+extern uint16_t ssd1306_color;
+
+// Set to ssd1306 compatible mode by default
+static uint8_t s_mode = 0x01;
+static uint8_t s_vga_command = 0xFF;
+static uint8_t s_vga_arg = 0;
+static uint8_t s_column = 0;
+static uint8_t s_column_end = 0;
+static uint8_t s_cursor_x = 0;
+static uint8_t s_cursor_y = 0;
+static uint8_t s_width = 0;
+static uint8_t s_height = 0;
+static uint8_t s_bpp = 0;
+
+static CompositeOutput output(CompositeOutput::PAL);
+
+static void compositeCore(void *data)
+{
+    while (true)
+    {
+        //just send the graphics frontbuffer whithout any interruption 
+        output.sendFrameHalfResolution(__vga_buffer);
+    }
+}
+
+static void vga_controller_init(void)
+{
+    s_vga_command = 0xFF;
+}
+
+#ifdef VGA_CONTROLLER_DEBUG
+#include <stdio.h>
+void uart_send_byte(uint8_t data)
+{
+    printf("%c", data);
+}
+#endif
+
+static void vga_controller_stop(void)
+{
+    s_vga_command = 0xFF;
+    #ifdef VGA_CONTROLLER_DEBUG
+        ssd1306_debug_print_vga_buffer( uart_send_byte );
+    #endif
+}
+
+static void vga_controller_close(void)
+{
+}
+
+/*
+ * Function sends 8 vertical pixels to buffer
+ */
+static inline void vga_controller_put_pixels(uint8_t x, uint8_t y, uint8_t pixels)
+{
+    uint16_t addr = (x >> 3)   + (uint16_t)(y * 16);
+    uint8_t offset = x & 0x07;
+    uint8_t mask = 1 << offset;
+    if (addr >= 16*64)
+    {
+        return;
+    }
+    for (uint8_t i=8; i>0; i--)
+    {
+        if (pixels & 0x01) __vga_buffer[addr] |= mask;
+                      else __vga_buffer[addr] &= ~mask;
+        addr += 16;
+        pixels >>= 1;
+    }
+}
+
+static void vga_controller_send_byte(uint8_t data)
+{
+    if (s_vga_command == 0xFF)
+    {
+        s_vga_command = data;
+        return;
+    }
+    if (s_vga_command == 0x40)
+    {
+        vga_controller_put_pixels(s_cursor_x, s_cursor_y, data);
+        s_cursor_x++;
+        if (s_cursor_x > s_column_end)
+        {
+            s_cursor_x = s_column;
+            s_cursor_y += 8;
+        }
+        return;
+    }
+    // command mode
+    if (!s_vga_command)
+    {
+        s_vga_command = data;
+        s_vga_arg = 0;
+    }
+    if (s_vga_command == VGA_SET_BLOCK)
+    {
+        // set block
+        if (s_vga_arg == 1)
+        {
+            s_column = data >= ssd1306_lcd.width ? ssd1306_lcd.width - 1 : data ;
+            s_cursor_x = s_column;
+        }
+        if (s_vga_arg == 2) { s_column_end = data >= ssd1306_lcd.width ? ssd1306_lcd.width - 1 : data; }
+        if (s_vga_arg == 3) { s_cursor_y = (data << 3); }
+        if (s_vga_arg == 4) { s_vga_command = 0; }
+    }
+    else if (s_vga_command == VGA_SET_MODE)
+    {
+        if (s_vga_arg == 1) { s_mode = data; s_vga_command = 0; }
+        if (s_vga_arg == 2) { s_vga_command = 0; }
+    }
+    else if (s_vga_command == VGA_SET_RESOLUTION )
+    {
+        if (s_vga_arg == 1) { s_width = data; }
+        if (s_vga_arg == 2) { s_height = data; }
+        if (s_vga_arg == 3) { s_bpp = data; s_vga_command = 0; }
+    }
+    else if (s_vga_command == VGA_DISPLAY_ON )
+    {
+        __vga_buffer = (uint8_t *) malloc(s_width * s_height * s_bpp / 8);
+        output.init(s_width, s_height, s_bpp);
+        xTaskCreatePinnedToCore(compositeCore, "c", 1024, NULL, 1, NULL, 0);
+        s_vga_command = 0;
+    }
+    s_vga_arg++;
+}
+
+static void vga_controller_send_bytes(const uint8_t *buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1306_intf.send(*buffer);
+        buffer++;
+    }
+}
+
+extern "C" void ssd1306_CompositeVideoInit_esp32(void);
+void ssd1306_CompositeVideoInit_esp32(void)
+{
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = vga_controller_init;
+    ssd1306_intf.stop = vga_controller_stop;
+    ssd1306_intf.send = vga_controller_send_byte;
+    ssd1306_intf.send_buffer = vga_controller_send_bytes;
+    ssd1306_intf.close = vga_controller_close;
+}
+
+void ssd1306_debug_print_vga_buffer_128x64(void (*func)(uint8_t))
+{
+    for(int y = 0; y < ssd1306_lcd.height; y++)
+    {
+        for(int x = 0; x < ssd1306_lcd.width; x++)
+        {
+            uint8_t color = __vga_buffer[(x >> 3) + y * 16] & (1<< (x&0x07));
+            if (color)
+            {
+                func('#');
+            }
+            else
+            {
+                func(' ');
+            }
+        }
+        func('\n');
+    }
+    func('\n');
+}
+
+void ssd1306_debug_print_vga_buffer(void (*func)(uint8_t))
+{
+    ssd1306_debug_print_vga_buffer_128x64(func);
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/vga/vga.c b/lib/libssd1306/src/intf/vga/vga.c
new file mode 100644
index 0000000..a51bf01
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/vga.c
@@ -0,0 +1,41 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+#include "vga.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE) && defined(ESP32)
+extern void ssd1306_CompositeVideoInit_esp32(void);
+void ssd1306_vgaInit()
+{
+    ssd1306_CompositeVideoInit_esp32();
+}
+
+#else
+
+void ssd1306_vgaInit()
+{
+}
+
+#endif
diff --git a/lib/libssd1306/src/intf/vga/vga.h b/lib/libssd1306/src/intf/vga/vga.h
new file mode 100644
index 0000000..a7f217f
--- /dev/null
+++ b/lib/libssd1306/src/intf/vga/vga.h
@@ -0,0 +1,86 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file vga.h VGA basic data. Do not include this header in your project!!!
+ */
+
+#ifndef _SSD1306_VGA_H_
+#define _SSD1306_VGA_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_VGA_AVAILABLE) && defined(CONFIG_VGA_ENABLE)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+#if defined(__AVR_ATmega328P__)
+/* TODO: Move defines out of this file */
+static const uint8_t H_SYNC_PIN = 3;
+static const uint8_t V_SYNC_PIN = 10;
+extern volatile uint8_t __vga_buffer[];
+
+/**
+ * Make ms milliseconds delay. This function has very low precision: 16ms.
+ *
+ * @param ms time in milliseconds
+ */
+void ssd1306_vga_delay(uint32_t ms);
+
+#elif defined(ESP32)
+
+#endif
+
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/**
+ * Prints vga buffer in text form using passed callback
+ *
+ * @param func callback to use for printing single character
+ */
+void ssd1306_debug_print_vga_buffer(void (*func)(uint8_t));
+
+/**
+ * Initializes hardware VGA controller
+ * Be careful, this function reinitialized Atmega328p timers.
+ * delay() function will not work after call.
+ */
+//void ssd1306_vga_controller_init(void);
+
+#endif
+
+/**
+ *
+ */
+void ssd1306_vgaInit(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/lcd/composite_video.c b/lib/libssd1306/src/lcd/composite_video.c
new file mode 100644
index 0000000..3a599d1
--- /dev/null
+++ b/lib/libssd1306/src/lcd/composite_video.c
@@ -0,0 +1,142 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "composite_video.h"
+#include "vga_commands.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_hal/io.h"
+#include "intf/vga/vga.h"
+
+static const uint8_t PROGMEM s_composite128x64_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1306,
+    0x00,
+#endif
+    VGA_SET_RESOLUTION,128,64,1,
+    VGA_DISPLAY_ON,
+};
+
+static uint8_t s_column = 0;
+static uint8_t s_page = 0;
+
+extern uint16_t ssd1306_color;
+
+static void vga_set_block1(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x00);
+    ssd1306_intf.send(VGA_SET_BLOCK);
+    ssd1306_intf.send(s_column);
+    ssd1306_intf.send(rx);
+    ssd1306_intf.send(s_page * 8);
+    ssd1306_intf.stop();
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x40);
+}
+
+static void vga_next_page1(void)
+{
+    ssd1306_intf.stop();
+    vga_set_block1(s_column,s_page+1,0);
+}
+
+static void vga_set_block2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x00);
+    ssd1306_intf.send(VGA_SET_BLOCK); // set block
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx);
+    ssd1306_intf.send(y);
+    ssd1306_intf.stop();
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x40);
+}
+
+static void vga_next_page2(void)
+{
+}
+
+#if 0
+
+static void vga_send_pixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)ssd1306_color );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+#endif
+
+static void vga_set_mode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = vga_set_block2;
+        ssd1306_lcd.next_page = vga_next_page2;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT)
+    {
+        ssd1306_lcd.set_block = vga_set_block1;
+        ssd1306_lcd.next_page = vga_next_page1;
+    }
+    ssd1306_intf.start();
+    ssd1306_intf.send( 0x00 );
+    ssd1306_intf.send( VGA_SET_MODE );
+    ssd1306_intf.send( (uint8_t)mode );
+    ssd1306_intf.stop();
+    // empty for a while
+}
+
+void composite_video_128x64_mono_init(void)
+{
+    // init vga interface
+    ssd1306_vgaInit();
+    // init display
+    ssd1306_lcd.type = LCD_TYPE_SSD1306;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.set_block = vga_set_block2;
+    ssd1306_lcd.next_page = vga_next_page2;
+    ssd1306_lcd.send_pixels1  = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1306_intf.send_buffer;
+    ssd1306_lcd.set_mode = vga_set_mode;
+    ssd1306_configureI2cDisplay( s_composite128x64_initData, sizeof(s_composite128x64_initData));
+}
+
diff --git a/lib/libssd1306/src/lcd/composite_video.h b/lib/libssd1306/src/lcd/composite_video.h
new file mode 100644
index 0000000..bff6e31
--- /dev/null
+++ b/lib/libssd1306/src/lcd/composite_video.h
@@ -0,0 +1,63 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file vga_monitor.h Interface to vga_monitor
+ */
+
+#ifndef _SSD1306_COMPOSITE_VIDEO_H_
+#define _SSD1306_COMPOSITE_VIDEO_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 128x64 monochrome VGA display.
+ *
+ * Inits 128x64 monochrome VGA display. This mode supports 2 colors: black and white.
+ * User must init communication interface (uart) for vga client mode or init vga
+ * interface for host mode prior to calling this function.
+ *
+ * @see ssd1306_uartInit_Builtin()
+ * @see ssd1306_vga_controller_init()
+ */
+void composite_video_128x64_mono_init(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/lcd/lcd_common.c b/lib/libssd1306/src/lcd/lcd_common.c
new file mode 100644
index 0000000..f8ca675
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_common.c
@@ -0,0 +1,150 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "lcd/lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include <stddef.h>
+
+#define CMD_ARG 0xFF
+#define CMD_DELAY 0xFF
+
+ssd1306_lcd_t ssd1306_lcd = { 0 };
+
+void ssd1306_sendData(uint8_t data)
+{
+    ssd1306_dataStart();
+    ssd1306_lcd.send_pixels1( data );
+    ssd1306_intf.stop();
+}
+
+void ssd1306_configureI2cDisplay(const uint8_t *config, uint8_t configSize)
+{
+    ssd1306_commandStart();
+    for( uint8_t i=0; i<configSize; i++)
+    {
+        uint8_t data = pgm_read_byte(&config[i]);
+        ssd1306_intf.send(data);
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_configureSpiDisplay(const uint8_t *config, uint8_t configSize)
+{
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    for( uint8_t i=0; i<configSize; i++)
+    {
+        uint8_t data = pgm_read_byte(&config[i]);
+        if (data == CMD_ARG)
+        {
+            data = pgm_read_byte(&config[++i]);
+            ssd1306_spiDataMode(1);
+            ssd1306_intf.send(data);
+            ssd1306_spiDataMode(0);
+        }
+        else
+        {
+            ssd1306_intf.send(data);
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_configureSpiDisplay2(const uint8_t *config, uint8_t configSize)
+{
+    uint8_t command = 1;
+    int8_t args = -1;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    for( uint8_t i=0; i<configSize; i++)
+    {
+        uint8_t data = pgm_read_byte(&config[i]);
+        if ( command )
+        {
+            if ( command == CMD_DELAY )
+            {
+                command = 1;
+                delay( data == 0xFF ? 500: data );
+            }
+            else
+            {
+                ssd1306_intf.send(data);
+                command = 0;
+                args = -1;
+            }
+        }
+        else
+        {
+            if (args < 0)
+            {
+                if ( data >= 128 )
+                {
+                    command = data;
+                }
+                else if ( data > 0 )
+                {
+                    args = data;
+                    ssd1306_spiDataMode(1);
+                }
+                else
+                {
+                    command = 1;
+                }
+            }
+            else
+            {
+                args--;
+                ssd1306_intf.send(data);
+                if ( !args )
+                {
+                    command = 1;
+                    ssd1306_spiDataMode(0);
+                }
+            }
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_setMode(lcd_mode_t mode)
+{
+    if (ssd1306_lcd.set_mode)
+    {
+        ssd1306_lcd.set_mode( mode );
+    }
+}
+
+void ssd1306_resetController(int8_t rstPin, uint8_t delayMs)
+{
+    pinMode(rstPin, OUTPUT);
+    digitalWrite(rstPin, HIGH);
+    /* Wait at least 10ms after VCC is up for LCD */
+    delay(10);
+    /* Perform reset operation of LCD display */
+    digitalWrite(rstPin, LOW);
+    delay(delayMs);
+    digitalWrite(rstPin, HIGH);
+}
+
diff --git a/lib/libssd1306/src/lcd/lcd_common.h b/lib/libssd1306/src/lcd/lcd_common.h
new file mode 100644
index 0000000..2744cb0
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_common.h
@@ -0,0 +1,459 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file lcd_common.h global lcd settings
+ */
+
+#ifndef _LCD_COMMON_H_
+#define _LCD_COMMON_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup LCD_INTERFACE_API OLEDs: initialization and service functions
+ * @{
+ * @brief LCD initialization and service functions
+ *
+ * @details This group contains API functions for OLED displays initialization and
+ *          direct programming of GDRAM. This API can be used to create your own
+ *          graphics functions.
+ */
+
+/**
+ * Enumeration, describing display type
+ */
+typedef enum
+{
+    /** Default type of LCD display: ssd1306 oled */
+    LCD_TYPE_SSD1306,
+    /** Experimental type of LCD display: pcd8544 led */
+    LCD_TYPE_PCD8544,
+    /** Support for sh1106 OLED display */
+    LCD_TYPE_SH1106,
+    /** Default type of LCD display: ssd1331 oled */
+    LCD_TYPE_SSD1331,
+    /** User LCD type */
+    LCD_TYPE_CUSTOM,
+} lcd_type_t;
+
+/**
+ * Available lcd modes used by the library.
+ * LCD_MODE_SSD1306_COMPAT is compatible mode, which should be used
+ * with standard monochrome functions.
+ */
+typedef enum
+{
+    /**
+     * Normal mode RGB displays. All ssd1306 monochrome direct draw
+     * functions do not work in this mode.
+     */
+    LCD_MODE_NORMAL = 0,
+
+    /**
+     * ssd1306 compatible mode. This is special mode, that allows
+     * to use ssd1306 monochrome direct draw functions, but RGB
+     * functions will not work.
+     */
+    LCD_MODE_SSD1306_COMPAT = 1,
+} lcd_mode_t;
+
+/**
+ * Structure, describing display driver configuration
+ */
+typedef struct
+{
+    /** Current selected lcd display type */
+    lcd_type_t type;
+
+    /** Current display width */
+    lcduint_t  width;
+
+    /** Current display height */
+    lcduint_t  height;
+
+    /**
+     * @brief Sets block in RAM of lcd display controller to write data to.
+     *
+     * Sets block in RAM of lcd display controller to write data to.
+     * For ssd1306 it uses horizontal addressing mode, while for
+     * sh1106 the function uses page addressing mode.
+     * Width can be specified as 0, thus the library will set the right boundary to
+     * region of RAM block to the right column of the display.
+     * @param x - column (left region)
+     * @param y - page (top page of the block)
+     * @param w - width of the block in pixels to control
+     *
+     * @warning - this function initiates session (i2c or spi) and do not close it.
+     *            To close session, please, use ssd1306_intf.stop().
+     */
+    void (*set_block)(lcduint_t x, lcduint_t y, lcduint_t w);
+
+    /**
+     * Switches to the start of next RAM page for the block, specified by
+     * set_block().
+     * For ssd1306 it does nothing, while for sh1106 the function moves cursor to
+     * next page.
+     */
+    void (*next_page)(void);
+
+    /**
+     * Sends 8 monochrome vertical pixels to OLED driver.
+     * @param data - byte, representing 8 pixels.
+     */
+    void (*send_pixels1)(uint8_t data);
+
+    /**
+     * Sends buffer containing 8 monochrome vertical pixels, encoded in each byte.
+     * @param buffer - buffer containing monochrome pixels.
+     * @param len - length of buffer in bytes.
+     */
+    void (*send_pixels_buffer1)(const uint8_t *buffer, uint16_t len);
+
+    /**
+     * @brief Sends RGB pixel encoded in 3-3-2 format to OLED driver.
+     * Sends RGB pixel encoded in 3-3-2 format to OLED driver.
+     * @param data - byte, representing RGB8 pixel.
+     */
+    void (*send_pixels8)(uint8_t data);
+
+    /**
+     * @brief Sends RGB pixel encoded in 5-6-5 format to OLED driver.
+     * Sends RGB pixel encoded in 5-6-5 format to OLED driver.
+     * @param data 16-bit word, representing RGB16 pixel
+     */
+    void (*send_pixels16)(uint16_t data);
+
+    /**
+     * @brief Sets library display mode for direct draw functions.
+     *
+     * Sets library display mode for direct draw functions.
+     * There are currently 2 modes supported: LCD_MODE_SSD1306_COMPAT and
+     * LCD_MODE_NORMAL. In general, ssd1306 compatible mode uses different GDRAM
+     * addressing mode, than normal mode, intended for using with RBG full-color functions.
+     *
+     * @param mode lcd mode to activate.
+     * @see LCD_MODE_SSD1306_COMPAT
+     * @see LCD_MODE_NORMAL
+     * @see lcd_mode_t
+     */
+    void (*set_mode)(lcd_mode_t mode);
+} ssd1306_lcd_t;
+
+/**
+ * Structure containing callback to low level function for currently enabled display
+ */
+extern ssd1306_lcd_t ssd1306_lcd;
+
+/**
+ * Current display height
+ * @deprecated Use ssd1306_lcd.height instead.
+ */
+#define s_displayHeight   ssd1306_lcd.height
+
+/**
+ * Current display width
+ * @deprecated Use ssd1306_lcd.width instead.
+ */
+#define s_displayWidth    ssd1306_lcd.width
+
+/**
+ * Current selected lcd display type
+ * @deprecated Use ssd1306_lcd.type instead.
+ */
+#define g_lcd_type  ssd1306_lcd.type
+
+/**
+ * Sends byte data to SSD1306 controller memory.
+ * Performs 3 operations at once: ssd1306_intf.start(), ssd1306_intf.send(), ssd1306_intf.stop();
+ * @param data - byte to send to the controller memory
+ * @note At present this function is used only in Arkanoid demo.
+ * @deprecated There is wide variaty of functions, that can be used for this.
+ */
+void         ssd1306_sendData(uint8_t data) __attribute__ ((deprecated));
+
+/**
+ * @brief Sets block in RAM of lcd display controller to write data to.
+ *
+ * Sets block in RAM of lcd display controller to write data to.
+ * For ssd1306 it uses horizontal addressing mode, while for
+ * sh1106 the function uses page addressing mode.
+ * Width can be specified as 0, thus the library will set the right boundary to
+ * region of RAM block to the right column of the display.
+ * @param x - column (left region)
+ * @param y - page (top page of the block)
+ * @param w - width of the block in pixels to control
+ *
+ * @deprecated Use ssd1306_lcd.set_block() instead.
+ * @warning - this function initiates session (i2c or spi) and do not close it.
+ *            To close session, please, use ssd1306_intf.stop().
+ */
+#define ssd1306_setRamBlock   ssd1306_lcd.set_block
+
+/**
+ * Switches to the start of next RAM page for the block, specified by
+ * ssd1306_setRamBlock().
+ * For ssd1306 it does nothing, while for sh1106 the function moves cursor to
+ * next page.
+ * @deprecated Use ssd1306_lcd.next_page() instead.
+ */
+#define ssd1306_nextRamPage   ssd1306_lcd.next_page
+
+/**
+ * Sends 8 monochrome vertical pixels to OLED driver.
+ * @param data - byte, representing 8 pixels.
+ * @deprecated Use ssd1306_lcd.send_pixels1() instead.
+ */
+#define ssd1306_sendPixels    ssd1306_lcd.send_pixels1
+
+/**
+ * Sends buffer containing 8 monochrome vertical pixels, encoded in each byte.
+ * @param buffer - buffer containing monochrome pixels.
+ * @param len - length of buffer in bytes.
+ * @deprecated Use ssd1306_lcd.send_pixels_buffer1() instead.
+ */
+#define ssd1306_sendPixelsBuffer  ssd1306_lcd.send_pixels_buffer1
+
+/**
+ * @brief Sends RGB pixel encoded in 3-3-2 format to OLED driver.
+ * Sends RGB pixel encoded in 3-3-2 format to OLED driver.
+ * @param data - byte, representing RGB8 pixel.
+ * @deprecated Use ssd1306_lcd.send_pixels8() instead.
+ */
+#define ssd1306_sendPixel8        ssd1306_lcd.send_pixels8
+
+/**
+ * @brief Sends configuration being passed to lcd display i2c/spi controller.
+ *
+ * Sends configuration being passed to lcd display i2c/spi controller.
+ * The data bytes are sent to lcd controller as is. In case of spi display
+ * this function sends cmd arguments in command mode. If lcd controller requires
+ * arguments to be sent in data mode, please use ssd1306_configureSpiDisplay().
+ *
+ * @param config configuration, located in flash, to send to i2c/spi controller.
+ * @param configSize - size of configuration data in bytes.
+ */
+void ssd1306_configureI2cDisplay(const uint8_t *config, uint8_t configSize);
+
+/**
+ * @brief Sends configuration being passed to lcd display spi controller.
+ *
+ * Sends configuration being passed to lcd display spi controller. If data byte value
+ * to be sent is less than 255, then data byte is sent in command mode. If data byte
+ * is 0xFF, the function does't send it to controller, but switches to spi data mode,
+ * and next byte after will be sent in data spi mode. Then the function will switch back
+ * to command mode. If lcd controller requires cmd arguments to be sent in command mode,
+ * please use ssd1306_configureI2cDisplay().
+ *
+ * @param config configuration, located in flash, to send to i2c/spi controller.
+ * @param configSize - size of configuration data in bytes.
+ */
+void ssd1306_configureSpiDisplay(const uint8_t *config, uint8_t configSize);
+
+/**
+ * @brief Sends configuration being passed to lcd display spi controller.
+ *
+ * Sends configuration being passed to lcd display spi controller. If data byte value
+ * to be sent is less than 255, then data byte is sent in command mode. Each command has
+ * additional parameter: number of arguments.
+ * If lcd controller requires cmd arguments to be sent in command mode,
+ * please use ssd1306_configureI2cDisplay().
+ *
+ * @param config configuration, located in flash, to send to i2c/spi controller.
+ * @param configSize - size of configuration data in bytes.
+ */
+void ssd1306_configureSpiDisplay2(const uint8_t *config, uint8_t configSize);
+
+/**
+ * @brief Sets library display mode for direct draw functions.
+ *
+ * Sets library display mode for direct draw functions.
+ * There are currently 2 modes supported: LCD_MODE_SSD1306_COMPAT and
+ * LCD_MODE_NORMAL. In general, ssd1306 compatible mode uses different GDRAM
+ * addressing mode, than normal mode, intended for using with RBG full-color functions.
+ *
+ * @param mode lcd mode to activate.
+ * @see LCD_MODE_SSD1306_COMPAT
+ * @see LCD_MODE_NORMAL
+ * @see lcd_mode_t
+ */
+void ssd1306_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Does hardware reset for oled controller.
+ *
+ * Does hardware reset for oled controller. The function pulls up rstPin
+ * for 10 milliseconds, then pulls down rstPin for delayMs milliseconds
+ * and then finally pulls rstPin up.
+ *
+ * @param rstPin reset pin number
+ * @param delayMs delay in milliseconds to hold rstPin in low state
+ */
+void ssd1306_resetController(int8_t rstPin, uint8_t delayMs);
+
+/**
+ * Macro SSD1306_COMPAT_SPI_BLOCK_8BIT_CMDS() generates 2 static functions,
+ * applicable for many oled controllers with 8-bit commands:
+ * set_block_compat(), next_page_compat(). These functions are to be used
+ * when working in ssd1306 compatible mode.
+ * @param column_cmd command opcode for setting column address according to
+ *        oled controller datasheet
+ * @param row_cmd command opcode for setting row address according to
+ *        oled controller datasheet
+ * @note It is assumed that column and row commands accept 2 single byte
+ *       arguments: start and end of region
+ */
+#define SSD1306_COMPAT_SPI_BLOCK_8BIT_CMDS(column_cmd, row_cmd) \
+    static uint8_t __s_column; \
+    static uint8_t __s_page; \
+    static void set_block_compat(lcduint_t x, lcduint_t y, lcduint_t w) \
+    { \
+        uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1); \
+        __s_column = x; \
+        __s_page = y; \
+        ssd1306_intf.start(); \
+        ssd1306_spiDataMode(0); \
+        ssd1306_intf.send(column_cmd); \
+        ssd1306_intf.send(x); \
+        ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)); \
+        ssd1306_intf.send(row_cmd); \
+        ssd1306_intf.send(y<<3); \
+        ssd1306_intf.send(((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1)); \
+        ssd1306_spiDataMode(1); \
+    } \
+    static void next_page_compat(void) \
+    { \
+        ssd1306_intf.stop(); \
+        set_block_compat(__s_column,__s_page+1,0); \
+    } \
+
+/**
+ * Macro CONTROLLER_NATIVE_SPI_BLOCK_8BIT_CMDS() generates 2 static functions,
+ * applicable for many oled controllers with 8-bit commands:
+ * set_block_native(), next_page_native(). These functions are to be used
+ * when working in oled controller native mode.
+ * @param column_cmd command opcode for setting column address according to
+ *        oled controller datasheet
+ * @param row_cmd command opcode for setting row address according to
+ *        oled controller datasheet
+ * @note It is assumed that column and row commands accept 2 single byte
+ *       arguments: start and end of region
+ */
+#define CONTROLLER_NATIVE_SPI_BLOCK_8BIT_CMDS(column_cmd, row_cmd) \
+    static void set_block_native(lcduint_t x, lcduint_t y, lcduint_t w) \
+    { \
+        uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1); \
+        ssd1306_intf.start(); \
+        ssd1306_spiDataMode(0); \
+        ssd1306_intf.send(column_cmd); \
+        ssd1306_intf.send(x); \
+        ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)); \
+        ssd1306_intf.send(row_cmd); \
+        ssd1306_intf.send(y); \
+        ssd1306_intf.send(ssd1306_lcd.height - 1); \
+        ssd1306_spiDataMode(1); \
+    } \
+    static void next_page_native(void) \
+    { \
+    } \
+
+/**
+ * Macro SSD1306_COMPAT_SEND_PIXELS_RGB8_CMDS() generates 2 static functions,
+ * applicable for many oled controllers in 8-bit RGB mode:
+ * send_pixels_compat(), send_pixels_buffer_compat(). These functions are to be used
+ * when working in ssd1306 compatible mode.
+ */
+#define SSD1306_COMPAT_SEND_PIXELS_RGB8_CMDS() \
+    extern uint16_t ssd1306_color; \
+    static void send_pixels_compat(uint8_t data) \
+    { \
+        for (uint8_t i=8; i>0; i--) \
+        { \
+            if ( data & 0x01 ) \
+            { \
+                ssd1306_intf.send( (uint8_t)ssd1306_color ); \
+            } \
+            else \
+            { \
+                ssd1306_intf.send( 0B00000000 ); \
+            } \
+            data >>= 1; \
+        } \
+    } \
+    static void send_pixels_buffer_compat(const uint8_t *buffer, uint16_t len) \
+    { \
+        while(len--) \
+        { \
+            send_pixels_compat(*buffer); \
+            buffer++; \
+        } \
+    }
+
+/**
+ * Macro SSD1306_COMPAT_SEND_PIXELS_RGB16_CMDS() generates 2 static functions,
+ * applicable for many oled controllers in 16-bit RGB mode:
+ * send_pixels_compat16(), send_pixels_buffer_compat16(). These functions are to be used
+ * when working in ssd1306 compatible mode.
+ */
+#define SSD1306_COMPAT_SEND_PIXELS_RGB16_CMDS() \
+    extern uint16_t ssd1306_color; \
+    static void send_pixels_compat16(uint8_t data) \
+    { \
+        for (uint8_t i=8; i>0; i--) \
+        { \
+            if ( data & 0x01 ) \
+            { \
+                ssd1306_intf.send( (uint8_t)(ssd1306_color >> 8 ) ); \
+                ssd1306_intf.send( (uint8_t)(ssd1306_color & 0xFF) ); \
+            } \
+            else \
+            { \
+                ssd1306_intf.send( 0B00000000 ); \
+                ssd1306_intf.send( 0B00000000 ); \
+            } \
+            data >>= 1; \
+        } \
+    } \
+    static void send_pixels_buffer_compat16(const uint8_t *buffer, uint16_t len) \
+    { \
+        while(len--) \
+        { \
+            send_pixels_compat16(*buffer); \
+            buffer++; \
+        } \
+    }
+
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LCD_COMMON_H_ */
diff --git a/lib/libssd1306/src/lcd/lcd_il9163.c b/lib/libssd1306/src/lcd/lcd_il9163.c
new file mode 100644
index 0000000..ea66a7b
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_il9163.c
@@ -0,0 +1,434 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2020, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "lcd_il9163.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#include "nano_gfx_types.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+#define CMD_ARG     0xFF
+#define CMD_DELAY   0xFF
+
+extern uint16_t ssd1306_color;
+extern uint32_t s_ssd1306_spi_clock;
+
+static uint8_t s_rotation = 0x00;
+static uint8_t s_rgb_bit  = 0b00001000;
+static lcdint_t s_offset_x = 0;
+static lcdint_t s_offset_y = 0;
+
+static const PROGMEM uint8_t s_oled128x128_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_IL9163,
+    0x00,
+#endif
+//    0x01,                     // sw reset. not needed, we do hardware reset
+    0x11,                       // exit sleep mode
+    0x3A, CMD_ARG, 0x05,        // set 16-bit pixel format
+    0x26, CMD_ARG, 0x04,        // set gamma curve: valid values 1, 2, 4, 8
+//    0xF2, CMD_ARG, 0x01,        // enable gamma adjustment, 0 - to disable
+//    0xE0, CMD_ARG, 0x3F, CMD_ARG, 0x25, CMD_ARG, 0x1C,
+//          CMD_ARG, 0x1E, CMD_ARG, 0x20, CMD_ARG, 0x12,
+//          CMD_ARG, 0x2A, CMD_ARG, 0x90, CMD_ARG, 0x24,
+//          CMD_ARG, 0x11, CMD_ARG, 0x00, CMD_ARG, 0x00,
+//          CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, // positive gamma correction
+//    0xE1, CMD_ARG, 0x20, CMD_ARG, 0x20, CMD_ARG, 0x20,
+//          CMD_ARG, 0x20, CMD_ARG, 0x05, CMD_ARG, 0x00,
+//          CMD_ARG, 0x15, CMD_ARG, 0xA7, CMD_ARG, 0x3D,
+//          CMD_ARG, 0x18, CMD_ARG, 0x25, CMD_ARG, 0x2A,
+//          CMD_ARG, 0x2B, CMD_ARG, 0x2B, CMD_ARG, 0x3A, // negative gamma correction
+//    0xB1,  CMD_ARG,  0x08, CMD_ARG, 0x08, // frame rate control 1, use by default
+//    0xB4,  CMD_ARG, 0x07,                 // display inversion, use by default
+    0xC0,  CMD_ARG,  0x0A, CMD_ARG, 0x02, // power control 1
+    0xC1,  CMD_ARG,  0x02,                // power control 2
+    0xC5,  CMD_ARG,  0x50, CMD_ARG, 0x5B, // vcom control 1
+    0xC7,  CMD_ARG,  0x40,                // vcom offset
+//    0x2A,  CMD_ARG,  0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x7F,   // set column address, not needed. set by direct API
+//    0x2B,  CMD_ARG,  0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x9F,   // set page address, not needed. set by direct API
+    0x36,  CMD_ARG,  0b10001100,          // enable fake "vertical addressing" mode (for il9163_setBlock() )
+    0x29,                                 // display on
+};
+
+static const PROGMEM uint8_t s_oled128x160_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_ST7735, 0x00,
+    0b00000011, 0x00,
+#endif
+    0x01, CMD_DELAY,  150,   // SWRESET sw reset. not needed, we do hardware reset
+    0x11, CMD_DELAY,  255,   // SLPOUT exit sleep mode
+    0xB1, 0x03, 0x01, 0x2C, 0x2D,  // FRMCTR1 frame rate control 1, use by default
+    0xB2, 0x03, 0x01, 0x2C, 0x2D,  // FRMCTR2, Frame Rate Control (In Idle mode/ 8-colors)
+    0xB3, 0x06,              // FRMCTR3 (B3h): Frame Rate Control (In Partial mode/ full colors)
+                0x01, 0x2C, 0x2D,
+                0x01, 0x2C, 0x2D,
+    0xB4, 0x01, 0x07,        // INVCTR display inversion, use by default
+    0xB6, 0x02, 0x15, 0x02,  // DISSET5
+    0xC0, 0x03, 0xA2, 0x02, 0x84,  // PWCTR1 power control 1
+    0xC1, 0x01, 0xC5,        // PWCTR2 power control 2
+    0xC2, 0x02, 0x0A, 0x00,  // PWCTR3 power control 3
+    0xC3, 0x02, 0x8A, 0x2A,  // PWCTR4 (C3h): Power Control 4 (in Idle mode/ 8-colors)
+    0xC4, 0x02, 0x8A, 0xEE,  // PWCTR5 (C4h): Power Control 5 (in Partial mode/ full-colors)
+    0xC5, 0x01, 0x0E,        // VMCTR vcom control 1
+    0x20, 0x00,              // INVOFF (20h): Display Inversion Off
+//    0xFC, 0x02, 0x11, 0x15,  // PWCTR6
+
+    0x36, 0x01, 0b00100000,  // MADCTL // enable fake "vertical addressing" mode (for il9163_setBlock() )
+    0x3A, 0x01, 0x05,        // COLMOD set 16-bit pixel format
+
+//    0x26, 1, 0x08,        // GAMSET set gamma curve: valid values 1, 2, 4, 8
+//    0xF2, 1, 0x01,        // enable gamma adjustment, 0 - to disable
+    0xE0, 0x10, // GMCTRP1 positive gamma correction
+                0x0F, 0x1A, 0x0F, 0x18,
+                0x2F, 0x28, 0x20, 0x22,
+                0x1F, 0x1B, 0x23, 0x37,
+                0x00, 0x07, 0x02, 0x10,
+    0xE1, 0x10, // GMCTRN1 negative gamma correction
+                0x0F, 0x1B, 0x0F, 0x17,
+                0x33, 0x2C, 0x29, 0x2E,
+                0x30, 0x30, 0x39, 0x3F,
+                0x00, 0x07, 0x03, 0x10,
+//    0xC7,  1,  0x40,                // vcom offset
+//    0x2A,  CMD_ARG,  0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x7F,   // set column address, not needed. set by direct API
+//    0x2B,  CMD_ARG,  0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x9F,   // set page address, not needed. set by direct API
+    0x29, CMD_DELAY,  100, // DISPON display on
+    0x13, CMD_DELAY,   10, // NORON
+};
+
+static uint8_t s_column;
+static uint8_t s_page;
+
+static void il9163_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(x + s_offset_x);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)) + s_offset_x);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((y<<3) + s_offset_y);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1)) + s_offset_y);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+static void il9163_setBlock2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(x + s_offset_x);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)) + s_offset_x);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(y + s_offset_y);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(ssd1306_lcd.height - 1 + s_offset_y);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+void il9163_setOffset(lcdint_t x, lcdint_t y)
+{
+    s_offset_x = x;
+    s_offset_y = y;
+}
+
+static void il9163_nextPage(void)
+{
+    ssd1306_intf.stop();
+    ssd1306_lcd.set_block(s_column,s_page+1,0);
+}
+
+static void il9163_nextPage2(void)
+{
+}
+
+void    il9163_setMode(lcd_mode_t mode)
+{
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send( 0x36 );
+    ssd1306_spiDataMode(1);
+    ssd1306_intf.send( ( mode ? 0b00100000 : 0b00000000 ) | s_rgb_bit );
+    ssd1306_intf.stop();
+    if (mode == LCD_MODE_SSD1306_COMPAT )
+    {
+        ssd1306_lcd.set_block = il9163_setBlock;
+        ssd1306_lcd.next_page = il9163_nextPage;
+    }
+    else if ( mode == LCD_MODE_NORMAL )
+    {
+        ssd1306_lcd.set_block = il9163_setBlock2;
+        ssd1306_lcd.next_page = il9163_nextPage2;
+    }
+    s_rotation = mode ? 0x00 : 0x04;
+}
+
+static void il9163_sendPixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)(ssd1306_color>>8) );
+            ssd1306_intf.send( (uint8_t)(ssd1306_color) );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+static void il9163_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while(len--)
+    {
+        il9163_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+static void il9163_sendPixel8(uint8_t data)
+{
+    uint16_t color = RGB8_TO_RGB16(data);
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+static void il9163_sendPixel16(uint16_t color)
+{
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+void    il9163_128x128_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.height = 128;
+    ssd1306_lcd.width = 128;
+    s_rgb_bit = 0b00001000; // set BGR mode mapping
+    ssd1306_lcd.set_block = il9163_setBlock;
+    ssd1306_lcd.next_page = il9163_nextPage;
+    ssd1306_lcd.send_pixels1  = il9163_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = il9163_sendPixelsBuffer;
+    ssd1306_lcd.send_pixels8 = il9163_sendPixel8;
+    ssd1306_lcd.send_pixels16 = il9163_sendPixel16;
+    ssd1306_lcd.set_mode = il9163_setMode;
+    ssd1306_configureSpiDisplay(s_oled128x128_initData, sizeof(s_oled128x128_initData));
+}
+
+void   il9163_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        pinMode(rstPin, OUTPUT);
+        digitalWrite(rstPin, HIGH);
+        /* Wait at least 1ms after VCC is up for LCD */
+        delay(1);
+        /* Perform reset operation of LCD display */
+        digitalWrite(rstPin, LOW);
+        delay(20);
+        digitalWrite(rstPin, HIGH);
+    }
+    /* ssd1351 cannot work faster than at 4MHz per datasheet */
+    s_ssd1306_spi_clock = 8000000;
+    ssd1306_spiInit(cesPin, dcPin);
+    il9163_128x128_init();
+}
+
+void il9163_setRotation(uint8_t rotation)
+{
+    uint8_t ram_mode;
+    if ((rotation^s_rotation) & 0x01)
+    {
+        uint16_t t = ssd1306_lcd.width;
+        ssd1306_lcd.width = ssd1306_lcd.height;
+        ssd1306_lcd.height = t;
+    }
+    s_rotation = (rotation & 0x03) | (s_rotation & 0x04);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x28);
+    ssd1306_intf.send(0x36);
+    ssd1306_spiDataMode(1);
+    switch (s_rotation)
+    {
+    case 0:
+        ram_mode = 0b00000000;
+        break;
+    case 1: // 90 degree CW
+        ram_mode = 0b01000000;
+        break;
+    case 2: // 180 degree CW
+        ram_mode = 0b11100000;
+        break;
+    case 3: // 270 degree CW
+        ram_mode = 0b10000000;
+        break;
+    case 4:
+        ram_mode = 0b00000000;
+        break;
+    case 5: // 90 degree CW
+        ram_mode = 0b01100000;
+        break;
+    case 6: // 180 degree CW
+        ram_mode = 0b11000000;
+        break;
+    default: // 270 degree CW
+        ram_mode = 0b10100000;
+        break;
+    }
+    s_offset_x = ((s_rotation & 0x03) == 3 ? 32 : 0);
+    s_offset_y = ((s_rotation & 0x03) == 2 ? 32 : 0);
+    ssd1306_intf.send( ram_mode | s_rgb_bit );
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x29);
+    ssd1306_intf.stop();
+}
+
+////////////////////////////////////////////////////////////////////////////////////////
+//                         ST7735 support
+////////////////////////////////////////////////////////////////////////////////////////
+
+static void st7735_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)));
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((y<<3));
+    ssd1306_intf.send(0);
+    ssd1306_intf.send((((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1)));
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+static void st7735_setBlock2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send( rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1) );
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(0);
+    ssd1306_intf.send(y);
+    ssd1306_intf.send(0);
+    ssd1306_intf.send( ssd1306_lcd.height - 1 );
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+static void    st7735_setMode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_SSD1306_COMPAT )
+    {
+        ssd1306_lcd.set_block = st7735_setBlock;
+        ssd1306_lcd.next_page = il9163_nextPage;
+    }
+    else if ( mode == LCD_MODE_NORMAL )
+    {
+        ssd1306_lcd.set_block = st7735_setBlock2;
+        ssd1306_lcd.next_page = il9163_nextPage2;
+    }
+    s_rotation = mode ? (s_rotation & 0x03) : (s_rotation | 0x04);
+    il9163_setRotation( s_rotation & 0x03 );
+}
+
+void    st7735_128x160_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.height = 160;
+    s_rgb_bit = 0b00000000; // set RGB mode mapping
+    ssd1306_lcd.set_block = st7735_setBlock;
+    ssd1306_lcd.next_page = il9163_nextPage;
+    ssd1306_lcd.send_pixels1  = il9163_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = il9163_sendPixelsBuffer;
+    ssd1306_lcd.send_pixels8 = il9163_sendPixel8;
+    ssd1306_lcd.send_pixels16 = il9163_sendPixel16;
+    ssd1306_lcd.set_mode = st7735_setMode;
+    ssd1306_configureSpiDisplay2(s_oled128x160_initData, sizeof(s_oled128x160_initData));
+}
+
+void   st7735_128x160_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 20 );
+        /* Give 120ms display to initialize */
+        delay(120);
+    }
+    /* ssd1351 cannot work faster than at 4MHz per datasheet */
+    s_ssd1306_spi_clock = 8000000;
+    ssd1306_spiInit(cesPin, dcPin);
+    st7735_128x160_init();
+}
diff --git a/lib/libssd1306/src/lcd/lcd_il9163.h b/lib/libssd1306/src/lcd/lcd_il9163.h
new file mode 100644
index 0000000..9f4733b
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_il9163.h
@@ -0,0 +1,144 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2020, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file lcd_il9163.h support for RGB TFT 128x128 display
+ */
+
+
+#ifndef _TFT_IL9163_H_
+#define _TFT_IL9163_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with RGB oled display,
+ * RGB oled is initialized in vertical auto-increment mode.
+ * But for pure rbg oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * il9163_setMode(0) prior to using pure RGB methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void        il9163_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits 128x128 RGB OLED display (based on il9163 controller).
+ *
+ * Inits 128x128 RGB OLED display (based on il9163 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         il9163_128x128_init(void);
+
+/**
+ * @brief Sets screen offset (refer to datasheet of your display)
+ *
+ * Set offset for the display
+ * @param x offset in pixels
+ * @param y offset in pixels
+ */
+void         il9163_setOffset(lcdint_t x, lcdint_t y);
+
+/**
+ * @brief Inits 128x160 RGB OLED display (based on st7735 controller).
+ *
+ * Inits 128x160 RGB OLED display (based on st7735 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         st7735_128x160_init(void);
+
+/**
+ * @brief Inits 128x128 RGB TFT display over spi (based on il9163 controller).
+ *
+ * Inits 128x128 RGB TFT display over spi (based on il9163 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         il9163_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @brief Inits 128x160 RGB TFT display over spi (based on st7735 controller).
+ *
+ * Inits 128x160 RGB TFT display over spi (based on st7735 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         st7735_128x160_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup IL9163_ST7734_API IL9163/ST7735: il9163/st7735 control functions
+ * @{
+ */
+
+/**
+ * @brief Sets screen orientation (rotation)
+ *
+ * Sets screen orientation (rotation): 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @param rotation - screen rotation 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @note works only with IL9163 display
+ */
+void il9163_setRotation(uint8_t rotation);
+
+/**
+ * @brief Sets screen orientation (rotation)
+ *
+ * Sets screen orientation (rotation): 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @param rotation - screen rotation 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @note works only with ST7735 display
+ */
+#define st7735_setRotation il9163_setRotation
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _TFT_IL9163_H_
diff --git a/lib/libssd1306/src/lcd/lcd_ili9341.c b/lib/libssd1306/src/lcd/lcd_ili9341.c
new file mode 100644
index 0000000..e12682d
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_ili9341.c
@@ -0,0 +1,283 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "lcd_ili9341.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#include "nano_gfx_types.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+#define CMD_ARG     0xFF
+
+extern uint16_t ssd1306_color;
+extern uint32_t s_ssd1306_spi_clock;
+
+static uint8_t s_rotation = 0x00;
+static uint8_t s_rgb_bit  = 0b00001000;
+static uint8_t s_rotate_output = 0;
+
+
+static const PROGMEM uint8_t s_oled240x320_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_ILI9341,
+    0x00,
+#endif
+    0x01,                     // sw reset. not needed, we do hardware reset
+    0x11,                       // exit sleep mode
+    0x3A, CMD_ARG, 0x05,        // set 16-bit pixel format
+    0x26, CMD_ARG, 0x04,        // set gamma curve: valid values 1, 2, 4, 8
+    0xF2, CMD_ARG, 0x01,        // enable gamma adjustment, 0 - to disable
+    0xE0, CMD_ARG, 0x3F, CMD_ARG, 0x25, CMD_ARG, 0x1C,
+          CMD_ARG, 0x1E, CMD_ARG, 0x20, CMD_ARG, 0x12,
+          CMD_ARG, 0x2A, CMD_ARG, 0x90, CMD_ARG, 0x24,
+          CMD_ARG, 0x11, CMD_ARG, 0x00, CMD_ARG, 0x00,
+          CMD_ARG, 0x00, CMD_ARG, 0x00, CMD_ARG, 0x00, // positive gamma correction
+    0xE1, CMD_ARG, 0x20, CMD_ARG, 0x20, CMD_ARG, 0x20,
+          CMD_ARG, 0x20, CMD_ARG, 0x05, CMD_ARG, 0x00,
+          CMD_ARG, 0x15, CMD_ARG, 0xA7, CMD_ARG, 0x3D,
+          CMD_ARG, 0x18, CMD_ARG, 0x25, CMD_ARG, 0x2A,
+          CMD_ARG, 0x2B, CMD_ARG, 0x2B, CMD_ARG, 0x3A, // negative gamma correction
+//    0xB1,  CMD_ARG,  0x08, CMD_ARG, 0x08, // frame rate control 1, use by default
+//    0xB4,  CMD_ARG, 0x07,                 // display inversion, use by default
+    0xC0,  CMD_ARG,  0x0A, CMD_ARG, 0x02, // power control 1
+    0xC1,  CMD_ARG,  0x02,                // power control 2
+    0xC5,  CMD_ARG,  0x50, CMD_ARG, 0x5B, // vcom control 1
+    0xC7,  CMD_ARG,  0x40,                // vcom offset
+    0x36,  CMD_ARG,  0b10100000,          // enable fake "vertical addressing" mode (for ili9341_setBlock() )
+    0x29,                                 // display on
+};
+
+static lcduint_t s_column;
+static lcduint_t s_page;
+
+static void ili9341_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    lcduint_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(x >> 8);
+    ssd1306_intf.send(x & 0xFF);
+    ssd1306_intf.send((rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)) >> 8);
+    ssd1306_intf.send((rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1)) & 0xFF);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send((y<<3) >> 8);
+    ssd1306_intf.send((y<<3)  & 0xFF);
+    ssd1306_intf.send((((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1))>>8);
+    ssd1306_intf.send((((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1)) & 0xFF);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+static void ili9341_setBlock2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    lcduint_t width = s_rotate_output ? ssd1306_lcd.height : ssd1306_lcd.width;
+    lcduint_t height = s_rotate_output ? ssd1306_lcd.width : ssd1306_lcd.height;
+    lcduint_t rx = w ? (x + w - 1) : (width - 1);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2A);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(x >> 8);
+    ssd1306_intf.send(x & 0xFF);
+    ssd1306_intf.send((rx < width ? rx : (width - 1))>>8);
+    ssd1306_intf.send((rx < width ? rx : (width - 1)) & 0xFF);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2B);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(y >> 8);
+    ssd1306_intf.send(y & 0xFF);
+    ssd1306_intf.send((height - 1) >> 8);
+    ssd1306_intf.send((height - 1) & 0xFF);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x2C);
+    ssd1306_spiDataMode(1);
+}
+
+static void ili9341_nextPage(void)
+{
+    ssd1306_intf.stop();
+    ssd1306_lcd.set_block(s_column,s_page+1,0);
+}
+
+static void ili9341_nextPage2(void)
+{
+}
+
+void    ili9341_setMode(lcd_mode_t mode)
+{
+    s_rotation &= 0x03;
+    s_rotation |= (mode == LCD_MODE_SSD1306_COMPAT ? 0x00 : 0x04);
+    ili9341_setRotation( s_rotation );
+    if (mode == LCD_MODE_SSD1306_COMPAT)
+    {
+        ssd1306_lcd.set_block = ili9341_setBlock;
+        ssd1306_lcd.next_page = ili9341_nextPage;
+    }
+    else if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = ili9341_setBlock2;
+        ssd1306_lcd.next_page = ili9341_nextPage2;
+    }
+}
+
+static void ili9341_sendPixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)(ssd1306_color>>8) );
+            ssd1306_intf.send( (uint8_t)(ssd1306_color) );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+static void ili9341_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while(len--)
+    {
+        ili9341_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+static void ili9341_sendPixel8(uint8_t data)
+{
+    uint16_t color = RGB8_TO_RGB16(data);
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+static void ili9341_sendPixel16(uint16_t color)
+{
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+void    ili9341_240x320_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.width = 240;
+    ssd1306_lcd.height = (lcduint_t)320;
+    s_rgb_bit = 0b00001000; // set BGR mode mapping
+    ssd1306_lcd.set_block = ili9341_setBlock;
+    ssd1306_lcd.next_page = ili9341_nextPage;
+    ssd1306_lcd.send_pixels1  = ili9341_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = ili9341_sendPixelsBuffer;
+    ssd1306_lcd.send_pixels8 = ili9341_sendPixel8;
+    ssd1306_lcd.send_pixels16 = ili9341_sendPixel16;
+    ssd1306_lcd.set_mode = ili9341_setMode;
+    ssd1306_configureSpiDisplay(s_oled240x320_initData, sizeof(s_oled240x320_initData));
+}
+
+void   ili9341_240x320_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        pinMode(rstPin, OUTPUT);
+        digitalWrite(rstPin, HIGH);
+        /* Wait at least 1ms after VCC is up for LCD */
+        delay(1);
+        /* Perform reset operation of LCD display */
+        digitalWrite(rstPin, LOW);
+        delay(100);
+        digitalWrite(rstPin, HIGH);
+        delay(100);
+    }
+    s_ssd1306_spi_clock = 10000000;
+    ssd1306_spiInit(cesPin, dcPin);
+    ili9341_240x320_init();
+}
+
+void ili9341_setRotation(uint8_t rotation)
+{
+    uint8_t ram_mode;
+    if ((rotation^s_rotation) & 0x01)
+    {
+        uint16_t t = ssd1306_lcd.width;
+        ssd1306_lcd.width = ssd1306_lcd.height;
+        ssd1306_lcd.height = t;
+    }
+    s_rotation = (rotation & 0x03) | (s_rotation & 0x04);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x28);
+    ssd1306_intf.send(0x36);
+    ssd1306_spiDataMode(1);
+    switch (s_rotation)
+    {
+    case 0:
+        ram_mode = 0b10100000;
+        break;
+    case 1: // 90 degree CW
+        ram_mode = 0b11010000;
+        break;
+    case 2: // 180 degree CW
+        ram_mode = 0b01100000;
+        break;
+    case 3: // 270 degree CW
+        ram_mode = 0b00000000;
+        break;
+    case 4:
+        ram_mode = s_rotate_output ? 0b11100100: 0b10000100;
+        break;
+    case 5: // 90 degree CW
+        ram_mode = 0b11100000;
+        break;
+    case 6: // 180 degree CW
+        ram_mode = 0b01010100;
+        break;
+    default: // 270 degree CW
+        ram_mode = 0b00100000;
+        break;
+    }
+    ssd1306_intf.send( ram_mode | s_rgb_bit );
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x29);
+    ssd1306_intf.stop();
+}
+
+void ili9341_rotateOutput(uint8_t on)
+{
+    s_rotate_output = on;
+    ili9341_setRotation( s_rotation );
+}
diff --git a/lib/libssd1306/src/lcd/lcd_ili9341.h b/lib/libssd1306/src/lcd/lcd_ili9341.h
new file mode 100644
index 0000000..88850d0
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_ili9341.h
@@ -0,0 +1,117 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file lcd_ili9341.h support for RGB TFT 320x240 display
+ */
+
+
+#ifndef _TFT_ILI9341_H_
+#define _TFT_ILI9341_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with RGB oled display,
+ * RGB oled is initialized in vertical auto-increment mode.
+ * But for pure rbg oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * ili9341_setMode(0) prior to using pure RGB methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void        ili9341_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits 240x320 RGB OLED display (based on ili9341 controller).
+ *
+ * Inits 240x320 RGB OLED display (based on ili9341 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         ili9341_240x320_init(void);
+
+/**
+ * @brief Inits 240x320 RGB TFT display over spi (based on ili9341 controller).
+ *
+ * Inits 240x320 RGB TFT display over spi (based on ili9341 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ili9341_240x320_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+/**
+ * @defgroup ili9341_API ili9341: ili9341 control functions
+ * @{
+ */
+
+/**
+ * @brief Sets screen orientation (rotation)
+ *
+ * Sets screen orientation (rotation): 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @param rotation - screen rotation 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @note works only with ili9341 display
+ */
+void ili9341_setRotation(uint8_t rotation);
+
+/**
+ * @brief Sets rotation of all output functions
+ *
+ * Sets rotation of all output functions. 0 - no rotation, 1 - change by 90 degrees
+ * Actually doesn't change screen orientation, only rotates primitives being output
+ *
+ * @param on enable (1) of disable (0)
+ * @warning experimental feature, may work incorrectly
+ */
+void ili9341_rotateOutput(uint8_t on);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _TFT_ILI9141_H_
diff --git a/lib/libssd1306/src/lcd/lcd_pcd8544.c b/lib/libssd1306/src/lcd/lcd_pcd8544.c
new file mode 100644
index 0000000..1da8468
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_pcd8544.c
@@ -0,0 +1,108 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "lcd_pcd8544.h"
+#include "lcd_common.h"
+#include "pcd8544_commands.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+
+static const uint8_t PROGMEM s_lcd84x48_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_PCD8544,
+    0x00,
+#endif
+    PCD8544_FUNCTIONSET | PCD8544_EXTENDEDINSTRUCTION, // switch to extented commands
+    PCD8544_SETVOP | 0x16,  // Set vop contrast
+    PCD8544_SETTEMP,
+    PCD8544_SETBIAS | 0x04, // Set bias mode
+    PCD8544_FUNCTIONSET, // switch to basic commands
+    PCD8544_DISPLAYCONTROL | PCD8544_DISPLAYNORMAL
+};
+
+static uint8_t s_column;
+static uint8_t s_page;
+static uint8_t s_width;
+
+static void pcd8544_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    s_width = w;
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    if (w == 1) ssd1306_intf.send( 0x22 ); else ssd1306_intf.send( 0x20 );
+    ssd1306_intf.send(0x80 | x);
+    ssd1306_intf.send(0x40 | y);
+    ssd1306_spiDataMode(1);
+}
+
+static void pcd8544_nextPage(void)
+{
+    if ( s_width != 1)
+    {
+        ssd1306_intf.stop();
+        pcd8544_setBlock(s_column, s_page+1, s_width);
+    }
+}
+
+static void pcd8544_setMode(lcd_mode_t mode)
+{
+}
+
+void pcd8544_84x48_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_PCD8544;
+    ssd1306_lcd.width = 84;
+    ssd1306_lcd.height = 48;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_lcd.set_block = pcd8544_setBlock;
+    ssd1306_lcd.next_page = pcd8544_nextPage;
+    ssd1306_lcd.send_pixels1 = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1306_intf.send_buffer;
+    ssd1306_lcd.set_mode = pcd8544_setMode;
+
+    for( uint8_t i=0; i<sizeof(s_lcd84x48_initData); i++)
+    {
+        ssd1306_intf.send(pgm_read_byte(&s_lcd84x48_initData[i]));
+    }
+    ssd1306_intf.stop();
+}
+
+void    pcd8544_84x48_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 1 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    pcd8544_84x48_init();
+}
diff --git a/lib/libssd1306/src/lcd/lcd_pcd8544.h b/lib/libssd1306/src/lcd/lcd_pcd8544.h
new file mode 100644
index 0000000..6facc03
--- /dev/null
+++ b/lib/libssd1306/src/lcd/lcd_pcd8544.h
@@ -0,0 +1,72 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file lcd_pcd8544.h support for LED 84x48 display (PCD8544)
+ */
+
+
+#ifndef _LCD_PCD8544_H_
+#define _LCD_PCD8544_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 84x48 LED display (based on PCD8544 controller).
+ *
+ * Inits 84x48 LED display (based on PCD8544 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void pcd8544_84x48_init(void);
+
+
+/**
+ * Inits 84x48 LED display over spi (based on PCD8544 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void pcd8544_84x48_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _LCD_PCD8544_H_
diff --git a/lib/libssd1306/src/lcd/oled_sh1106.c b/lib/libssd1306/src/lcd/oled_sh1106.c
new file mode 100644
index 0000000..3302edb
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_sh1106.c
@@ -0,0 +1,127 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_sh1106.h"
+#include "lcd_common.h"
+#include "ssd1306_commands.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+
+static const uint8_t PROGMEM s_oled128x64_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SH1106,
+    0x00,
+#endif
+    SSD1306_DISPLAYOFF, // display off
+    SSD1306_COMSCANDEC,             // Scan from 127 to 0 (Reverse scan)
+    SSD1306_SETSTARTLINE | 0x00,    // First line to start scanning from
+    SSD1306_SETCONTRAST, 0x7F,      // contast value to 0x7F according to datasheet
+    SSD1306_SEGREMAP | 0x01,        // Use reverse mapping. 0x00 - is normal mapping 
+    SSD1306_NORMALDISPLAY,
+    SSD1306_SETMULTIPLEX, 63,       // Reset to default MUX. See datasheet
+    SSD1306_SETDISPLAYOFFSET, 0x00, // no offset
+    SSD1306_SETDISPLAYCLOCKDIV, 0x80,// set to default ratio/osc frequency
+    SSD1306_SETPRECHARGE, 0x22,     // switch precharge to 0x22 // 0xF1
+    SSD1306_SETCOMPINS, 0x12,       // set divide ratio
+    SSD1306_SETVCOMDETECT, 0x20,    // vcom deselect to 0x20 // 0x40
+    SSD1306_CHARGEPUMP, 0x14,       // Enable charge pump
+    SSD1306_DISPLAYALLON_RESUME,
+    SSD1306_DISPLAYON
+};
+
+static uint8_t s_column;
+static uint8_t s_page;
+
+static void sh1106_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    if (ssd1306_intf.spi)
+        ssd1306_spiDataMode(0);
+    else
+        ssd1306_intf.send(0x00);
+    ssd1306_intf.send(SSD1306_SETPAGE | y);
+    ssd1306_intf.send(((x+2)>>4) | SSD1306_SETHIGHCOLUMN);
+    ssd1306_intf.send(((x+2) & 0x0f) | SSD1306_SETLOWCOLUMN);
+    if (ssd1306_intf.spi)
+    {
+        ssd1306_spiDataMode(1);
+    }
+    else
+    {
+        ssd1306_intf.stop();
+        ssd1306_intf.start();
+        ssd1306_intf.send(0x40);
+    }
+}
+
+static void sh1106_nextPage(void)
+{
+    ssd1306_intf.stop();
+    sh1106_setBlock(s_column,s_page+1,0);
+}
+
+static void sh1106_setMode(lcd_mode_t mode)
+{
+}
+
+void    sh1106_128x64_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SH1106;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.set_block = sh1106_setBlock;
+    ssd1306_lcd.next_page = sh1106_nextPage;
+    ssd1306_lcd.send_pixels1 = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1306_intf.send_buffer;
+    ssd1306_lcd.set_mode = sh1106_setMode;
+    for( uint8_t i=0; i<sizeof(s_oled128x64_initData); i++)
+    {
+        ssd1306_sendCommand(pgm_read_byte(&s_oled128x64_initData[i]));
+    }
+}
+
+void    sh1106_128x64_i2c_init()
+{
+    ssd1306_i2cInit();
+    sh1106_128x64_init();
+}
+
+void   sh1106_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    sh1106_128x64_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_sh1106.h b/lib/libssd1306/src/lcd/oled_sh1106.h
new file mode 100644
index 0000000..5d704e2
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_sh1106.h
@@ -0,0 +1,81 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file oled_sh1106.h support for OLED 128x64 display
+ */
+
+
+#ifndef _OLED_SH1106_H_
+#define _OLED_SH1106_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 128x64 OLED display (based on SH1106 controller).
+ *
+ * Inits 128x64 OLED display (based on SH1106 controller).
+ * User must init communication interface (i2c or spi) prior to calling this function.
+ */
+void         sh1106_128x64_init(void);
+
+/**
+ * @brief Inits 128x64 OLED display over i2c (based on SH1106 controller).
+ *
+ * Inits 128x64 OLED display over i2c (based on SH1106 controller)
+ * This function uses hardcoded pins for i2c communication, depending on your hardware.
+ * If you use non-standard pins in your project, please perform call ssd1306_i2cInitEx() and
+ * sh1106_128x64_init().
+ */
+void         sh1106_128x64_i2c_init(void);
+
+/**
+ * @brief Inits 128x64 OLED display over spi (based on SH1106 controller).
+ *
+ * Inits 128x64 OLED display over spi (based on SH1106 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         sh1106_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SH1106_H_
diff --git a/lib/libssd1306/src/lcd/oled_ssd1306.c b/lib/libssd1306/src/lcd/oled_ssd1306.c
new file mode 100644
index 0000000..25b0001
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1306.c
@@ -0,0 +1,259 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_ssd1306.h"
+#include "lcd_common.h"
+#include "ssd1306_commands.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+uint8_t s_ssd1306_startLine = 0;
+
+static const uint8_t PROGMEM s_oled128x64_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1306,
+    0x00,
+#endif
+    SSD1306_DISPLAYOFF, // display off
+    SSD1306_MEMORYMODE, HORIZONTAL_ADDRESSING_MODE, // Page Addressing mode
+    SSD1306_COMSCANDEC,             // Scan from 127 to 0 (Reverse scan)
+    SSD1306_SETSTARTLINE | 0x00,    // First line to start scanning from
+    SSD1306_SETCONTRAST, 0x7F,      // contast value to 0x7F according to datasheet
+    SSD1306_SEGREMAP | 0x01,        // Use reverse mapping. 0x00 - is normal mapping
+    SSD1306_NORMALDISPLAY,
+    SSD1306_SETMULTIPLEX, 63,       // Reset to default MUX. See datasheet
+    SSD1306_SETDISPLAYOFFSET, 0x00, // no offset
+    SSD1306_SETDISPLAYCLOCKDIV, 0x80,// set to default ratio/osc frequency
+    SSD1306_SETPRECHARGE, 0x22,     // switch precharge to 0x22 // 0xF1
+    SSD1306_SETCOMPINS, 0x12,       // set divide ratio
+    SSD1306_SETVCOMDETECT, 0x20,    // vcom deselect to 0x20 // 0x40
+    SSD1306_CHARGEPUMP, 0x14,       // Enable charge pump
+    SSD1306_DISPLAYALLON_RESUME,
+    SSD1306_DISPLAYON,
+};
+
+static const uint8_t PROGMEM s_oled128x32_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1306,
+    0x00,
+#endif
+    SSD1306_DISPLAYOFF, // display off
+    SSD1306_SETDISPLAYCLOCKDIV, 0x80,
+    SSD1306_SETMULTIPLEX, 31,
+    SSD1306_SETDISPLAYOFFSET, 0x00, // --no offset
+    SSD1306_SETSTARTLINE | 0x00,
+    SSD1306_CHARGEPUMP, 0x14, // 0x10
+    SSD1306_SEGREMAP | 0x01,  // Reverse mapping
+    SSD1306_COMSCANDEC,
+    SSD1306_SETCOMPINS, 0x02,
+    SSD1306_SETCONTRAST, 0x7F, // contast value
+    SSD1306_SETPRECHARGE, 0x22, // 0x1F
+    SSD1306_SETVCOMDETECT, 0x40,
+    SSD1306_MEMORYMODE, HORIZONTAL_ADDRESSING_MODE,
+    SSD1306_DISPLAYALLON_RESUME,
+    SSD1306_NORMALDISPLAY,
+    SSD1306_DISPLAYON,
+};
+
+static void ssd1306_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    ssd1306_intf.start();
+    if (ssd1306_intf.spi)
+        ssd1306_spiDataMode(0);
+    else
+        ssd1306_intf.send(0x00);
+    ssd1306_intf.send(SSD1306_COLUMNADDR);
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(w ? (x + w - 1) : (ssd1306_lcd.width - 1));
+    ssd1306_intf.send(SSD1306_PAGEADDR);
+    ssd1306_intf.send(y);
+    ssd1306_intf.send((ssd1306_lcd.height >> 3) - 1);
+    if (ssd1306_intf.spi)
+    {
+        ssd1306_spiDataMode(1);
+    }
+    else
+    {
+        ssd1306_intf.stop();
+        ssd1306_intf.start();
+        ssd1306_intf.send(0x40);
+    }
+}
+
+static void ssd1306_nextPage(void)
+{
+}
+
+static void ssd1306_setMode_int(lcd_mode_t mode)
+{
+}
+
+void ssd1306_displayOff()
+{
+    ssd1306_sendCommand(SSD1306_DISPLAYOFF);
+}
+
+
+void ssd1306_displayOn()
+{
+    ssd1306_sendCommand(SSD1306_DISPLAYON);
+}
+
+void ssd1306_setContrast(uint8_t contrast)
+{
+    ssd1306_commandStart();
+    ssd1306_intf.send(SSD1306_SETCONTRAST);
+    ssd1306_intf.send(contrast);
+    ssd1306_intf.stop();
+}
+
+void ssd1306_invertMode()
+{
+    ssd1306_sendCommand(SSD1306_INVERTDISPLAY);
+}
+
+void ssd1306_normalMode()
+{
+    ssd1306_sendCommand(SSD1306_NORMALDISPLAY);
+}
+
+void ssd1306_flipHorizontal(uint8_t mode)
+{
+    ssd1306_sendCommand( SSD1306_SEGREMAP | (mode ? 0x00: 0x01 ) );
+}
+
+void ssd1306_flipVertical(uint8_t mode)
+{
+    ssd1306_sendCommand( mode ? SSD1306_COMSCANINC : SSD1306_COMSCANDEC );
+}
+
+void ssd1306_setStartLine(uint8_t line)
+{
+    s_ssd1306_startLine = line;
+    ssd1306_sendCommand( SSD1306_SETSTARTLINE | (line & 0x3F) );
+}
+
+uint8_t ssd1306_getStartLine(void)
+{
+    return s_ssd1306_startLine;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//  I2C SSD1306 128x64
+///////////////////////////////////////////////////////////////////////////////
+
+void    ssd1306_init()
+{
+    ssd1306_128x64_i2c_init();
+}
+
+
+void    ssd1306_128x64_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1306;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.set_block = ssd1306_setBlock;
+    ssd1306_lcd.next_page = ssd1306_nextPage;
+    ssd1306_lcd.send_pixels1  = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1306_intf.send_buffer;
+    ssd1306_lcd.set_mode = ssd1306_setMode_int;
+    for( uint8_t i=0; i<sizeof(s_oled128x64_initData); i++)
+    {
+        ssd1306_sendCommand(pgm_read_byte(&s_oled128x64_initData[i]));
+    }
+}
+
+void    ssd1306_128x64_i2c_init()
+{
+    ssd1306_i2cInit();
+    ssd1306_128x64_init();
+}
+
+void    ssd1306_128x64_i2c_initEx(int8_t scl, int8_t sda, int8_t sa)
+{
+    ssd1306_i2cInitEx(scl, sda, sa);
+    ssd1306_128x64_init();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//  SPI SSD1306 128x64
+///////////////////////////////////////////////////////////////////////////////
+
+void   ssd1306_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1306_128x64_init();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//  I2C SSD1306 128x32
+///////////////////////////////////////////////////////////////////////////////
+
+void    ssd1306_128x32_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1306;
+    ssd1306_lcd.height = 32;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.set_block = ssd1306_setBlock;
+    ssd1306_lcd.next_page = ssd1306_nextPage;
+    ssd1306_lcd.send_pixels1  = ssd1306_intf.send;
+    ssd1306_lcd.set_mode = ssd1306_setMode_int;
+    for( uint8_t i=0; i < sizeof(s_oled128x32_initData); i++)
+    {
+        ssd1306_sendCommand(pgm_read_byte(&s_oled128x32_initData[i]));
+    }
+}
+
+
+void    ssd1306_128x32_i2c_init()
+{
+    ssd1306_i2cInit();
+    ssd1306_128x32_init();
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//  SPI SSD1306 128x32
+///////////////////////////////////////////////////////////////////////////////
+
+void   ssd1306_128x32_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1306_128x32_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_ssd1306.h b/lib/libssd1306/src/lcd/oled_ssd1306.h
new file mode 100644
index 0000000..506470d
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1306.h
@@ -0,0 +1,198 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_ssd1306.h support for OLED ssd1306-based displays
+ */
+
+
+#ifndef _OLED_SSD1306_H_
+#define _OLED_SSD1306_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 128x64 OLED display (based on SSD1306 controller).
+ *
+ * Inits 128x64 OLED display (based on SSD1306 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         ssd1306_128x64_init(void);
+
+/**
+ * @brief Inits 128x64 OLED display over i2c (based on SSD1306 controller).
+ *
+ * Inits 128x64 OLED display over i2c (based on SSD1306 controller)
+ * This function uses hardcoded pins for i2c communication, depending on your hardware.
+ * If you use non-standard pins in your project, please perform call ssd1306_i2cInitEx() and
+ * ssd1306_128x64_init(), or you can use ssd1306_128x64_i2c_initEx().
+ */
+void         ssd1306_128x64_i2c_init(void);
+
+/**
+ * @brief Inits 128x64 OLED display over i2c (based on SSD1306 controller).
+ *
+ * Inits 128x64 OLED display over i2c (based on SSD1306 controller)
+ * This function uses hardcoded pins for i2c communication, depending on your hardware.
+ *
+ * @param scl - i2c clock pin. Use -1 if you don't need to change default pin number
+ * @param sda - i2c data pin. Use -1 if you don't need to change default pin number
+ * @param sa  - i2c address of lcd display. Use 0 to leave default
+ *
+ * @note scl and sda parameters depend on used hardware. For many hardware boards these
+ * parameters do not have any effect. ESP8266 allows to specify these parameters
+ *
+ * @note scl and sda for Linux systems should be the same, and should contain i2c bus id.
+ */
+void         ssd1306_128x64_i2c_initEx(int8_t scl, int8_t sda, int8_t sa);
+
+/**
+ * @brief Inits 128x64 OLED display over spi (based on SSD1306 controller).
+ *
+ * Inits 128x64 OLED display over spi (based on SSD1306 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ssd1306_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @brief Inits 128x32 OLED display over spi (based on SSD1306 controller).
+ *
+ * Inits 128x32 OLED display over spi (based on SSD1306 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ssd1306_128x32_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @copydoc ssd1306_128x64_i2c_init
+ * @deprecated Use ssd1306_128x64_i2c_init() instead.
+ */
+void         ssd1306_init(void) __attribute__((deprecated));
+
+/**
+ * @brief Inits 128x32 OLED display over i2c (based on SSD1306 controller).
+ *
+ * Inits 128x32 OLED display over i2c (based on SSD1306 controller)
+ * This function uses hardcoded pins for i2c communication, depending on your hardware.
+ * If you use non-standard pins in your project, please perform call ssd1306_i2cInitEx() and
+ * ssd1306_128x32_init().
+ */
+void         ssd1306_128x32_i2c_init(void);
+
+/**
+ * @brief Inits 128x32 OLED display (based on ssd1306 controller).
+ *
+ * Inits 128x32 OLED display (based on ssd1306 controller)
+ * spi or i2c bus must be initialized prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         ssd1306_128x32_init(void);
+
+/**
+ * Turns off display
+ */
+void         ssd1306_displayOff(void);
+
+/**
+ * Turns on display
+ */
+void         ssd1306_displayOn(void);
+
+/**
+ * Set display contrast, ie light intensity
+ * @param contrast - contrast value to see, refer to ssd1306 datasheet
+ */
+void         ssd1306_setContrast(uint8_t contrast);
+
+/**
+ * Switches display to inverse mode.
+ * LCD will display 0-pixels as white, and 1-pixels as black.
+ * @note Not supported for SSD1331
+ */
+void         ssd1306_invertMode(void);
+
+/**
+ * Switches display to normal mode.
+ * @note Not supported for SSD1331
+ */
+void         ssd1306_normalMode(void);
+
+/**
+ * @brief performs horizontal flip
+ *
+ * Performs horizontal flip. If you need to turn display by 180 degree,
+ * please use both ssd1306_flipHorizontal() and ssd1306_flipVertical().
+ *
+ * @param mode - 0 to disable horizontal flip
+ *               1 to enable horizontal flip
+ */
+void         ssd1306_flipHorizontal(uint8_t mode);
+
+/**
+ * @brief performs vertical flip
+ *
+ * Performs vertical flip. If you need to turn display by 180 degree,
+ * please use both ssd1306_flipHorizontal() and ssd1306_flipVertical().
+ *
+ * @param mode - 0 to disable vertical flip
+ *               1 to enable vertical flip
+ */
+void         ssd1306_flipVertical(uint8_t mode);
+
+/**
+ * Sets start line in gdram to start display content with
+ *
+ * @param line start line in range 0 - 63
+ */
+void ssd1306_setStartLine(uint8_t line);
+
+/**
+ * returns start line in gdram.
+ */
+uint8_t ssd1306_getStartLine(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SSD1306_H_
diff --git a/lib/libssd1306/src/lcd/oled_ssd1325.c b/lib/libssd1306/src/lcd/oled_ssd1325.c
new file mode 100644
index 0000000..cd5289f
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1325.c
@@ -0,0 +1,182 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_ssd1325.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+extern uint16_t ssd1306_color;
+
+static const PROGMEM uint8_t s_oled_128x64_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1325,
+    SDL_LCD_SSD1325_GENERIC,
+#endif
+    0xAE,        // OFF		                /* display off */
+    0xB3, 0x91,	 // CLK
+    0xA8, 0x3F,  // multiplex 64
+    0xA2, 0x00,	 // Display offset
+    0xA1, 0x00,	 // Start line
+    0xAD, 0x02,	 // VCOMH
+    0xA0, 0x40 | 0x10 | 0x04 | 0x02 | 0x01,	 // REMAP: vertical increment mode
+    0x86,        // CURRENT
+    0x81, 0x70,	 // CONTRAST
+    0xB2, 0x51,	 // FREQ
+    0xB1, 0x55,  // PHASE
+    0xBC, 0x10,  // PRECHARGE
+    0xBE, 0x1C,  // VCOMH voltage
+    0xA4,        // NORMAL
+};
+
+/////////////   ssd1325 functions below are for SPI display  ////////////
+/////////////   in ssd1306 compatible mode                   ////////////
+
+//////////////////////// SSD1306 COMPATIBLE MODE ///////////////////////////////
+
+static uint8_t __s_column;
+static uint8_t __s_w;
+static uint8_t __s_w2;
+static uint8_t __s_page;
+static uint8_t __s_leftPixel;
+static uint8_t __s_pos;
+
+static void set_block_compat(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    rx = rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1);
+    __s_column = x;
+    __s_page = y;
+    __s_w = w;
+    __s_w2 = rx - x + 1;
+    __s_leftPixel = 0;
+    __s_pos = __s_column;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x15);
+    ssd1306_intf.send(x / 2);
+    ssd1306_intf.send(rx / 2);
+    ssd1306_intf.send(0x75);
+    ssd1306_intf.send(y<<3);
+    ssd1306_intf.send(((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1));
+    ssd1306_spiDataMode(1);
+}
+
+static void next_page_compat(void)
+{
+    ssd1306_intf.stop();
+    set_block_compat(__s_column,__s_page + 1, __s_w);
+}
+
+static void ssd1325_sendPixels(uint8_t data)
+{
+    if (!(__s_pos & 0x01))
+    {
+        __s_leftPixel = data;
+        data = 0x00;
+    }
+    if ((__s_pos & 0x01) || (__s_pos == __s_column + __s_w2 - 1))
+    {
+        for (uint8_t i=8; i>0; i--)
+        {
+            uint8_t color = (__s_leftPixel & 0x01) ? (ssd1306_color & 0x0F) : 0;
+            color |= (((data & 0x01) ? (ssd1306_color & 0x0F): 0) << 4);
+            ssd1306_intf.send(color);
+            data >>= 1;
+            __s_leftPixel >>= 1;
+        }
+    }
+    __s_pos++;
+}
+
+static void ssd1325_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1325_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+//////////////////////// SSD1331 NATIVE MODE ///////////////////////////////////
+
+CONTROLLER_NATIVE_SPI_BLOCK_8BIT_CMDS( 0x15, 0x75 );
+
+/////////////   ssd1325 functions below are for SPI display  ////////////
+/////////////   in native/normal mode                        ////////////
+
+void    ssd1325_setMode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = set_block_native;
+        ssd1306_lcd.next_page = next_page_native;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT )
+    {
+        ssd1306_lcd.set_block = set_block_compat;
+        ssd1306_lcd.next_page = next_page_compat;
+    }
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send( 0xA0 );
+    ssd1306_intf.send( 0x10 | (mode == LCD_MODE_NORMAL ? 0x00 : 0x04) );
+    ssd1306_intf.stop();
+    return;
+}
+
+void    ssd1325_128x64_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_CUSTOM;
+    ssd1306_lcd.width = 128;  // specify width
+    ssd1306_lcd.height = 64; // specify height
+    // Set functions for compatible mode
+    ssd1306_lcd.set_block = set_block_compat;
+    ssd1306_lcd.next_page = next_page_compat;
+    ssd1306_lcd.send_pixels1  = ssd1325_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1325_sendPixelsBuffer;
+    // Set function for 8-bit mode
+    ssd1306_lcd.send_pixels8 = ssd1306_intf.send;
+    ssd1306_lcd.set_mode = ssd1325_setMode;
+    // Use one of 2 functions for initialization below
+    // Please, read help on this functions and read datasheet before you decide, which
+    // one needs to be used. For example, ssd1331 is OK with ssd1306_configureI2cDisplay(),
+    // while st7735 can be initialized only with ssd1306_configureSpiDisplay().
+    ssd1306_configureI2cDisplay(s_oled_128x64_initData, sizeof(s_oled_128x64_initData));
+}
+
+void   ssd1325_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1325_128x64_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_ssd1325.h b/lib/libssd1306/src/lcd/oled_ssd1325.h
new file mode 100644
index 0000000..401ffa8
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1325.h
@@ -0,0 +1,98 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_ssd1325.h support for SSD1325 OLED 128x64 display
+ */
+
+
+#ifndef _OLED_SSD1325_H_
+#define _OLED_SSD1325_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup SSD1325_OLED_API SSD1325: ssd1325 control functions
+ * @{
+ */
+
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with SSD1325 oled display,
+ * SSD1325 oled is initialized in vertical auto-increment mode.
+ * But for pure SSD1325 oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * ssd1325_setMode(0) prior to using pure SSD1325 oled methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void ssd1325_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits 128x64 SSD1325 OLED display (based on SSD1325 controller).
+ *
+ * Inits 128x64 SSD1325 OLED display (based on SSD1325 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void ssd1325_128x64_init(void);
+
+/**
+ * @brief Inits 128x64 SSD1325 OLED display over spi (based on SSD1325 controller).
+ *
+ * Inits 128x64 SSD1325 OLED display over spi (based on SSD1325 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void ssd1325_128x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SSD1325_H_
diff --git a/lib/libssd1306/src/lcd/oled_ssd1327.c b/lib/libssd1306/src/lcd/oled_ssd1327.c
new file mode 100644
index 0000000..2a53f64
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1327.c
@@ -0,0 +1,195 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_ssd1327.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+extern uint16_t ssd1306_color;
+
+static const PROGMEM uint8_t s_oled_128x128_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1327,
+    SDL_LCD_SSD1327_GENERIC,
+#endif
+    0xFD, 0x12,  // Unlock OLED
+    0xAE,        // OFF		                /* display off */
+    0xA8, 0x7F,  // multiplex 128
+    0xA1, 0x00,	 // Start line
+    0xA2, 0x00,	 // Display offset
+    0xA0, 0x40 | 0x10 | 0x04 | (0x02 | 0x01),   // REMAP: vertical increment mode
+    0xAB, 0x01,  // VDD internal
+    0x81, 0x70,	 // CONTRAST
+    0xB1, 0x55,  // PHASE 0x51
+    0xB3, 0x01,	 // CLK
+//   0xB9,         //Reload grey scale
+    0xBC, 0x08,  // PRECHARGE
+    0xBE, 0x07,  // VCOMH voltage
+    0xB6, 0x01,  // Second pre-charge
+    0xA4,        // NORMAL
+    0x2E,        // Deactivate scroll
+    0xAF,        // Display ON
+};
+
+/////////////   ssd1327 functions below are for SPI display  ////////////
+/////////////   in ssd1306 compatible mode                   ////////////
+
+//////////////////////// SSD1306 COMPATIBLE MODE ///////////////////////////////
+
+static uint8_t __s_column;
+static uint8_t __s_w;
+static uint8_t __s_w2;
+static uint8_t __s_page;
+static uint8_t __s_leftPixel;
+static uint8_t __s_pos;
+
+static void set_block_compat(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    rx = rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1);
+    __s_column = x;
+    __s_page = y;
+    __s_w = w;
+    __s_w2 = rx - x + 1;
+    __s_leftPixel = 0;
+    __s_pos = __s_column;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x15);
+    ssd1306_intf.send(x / 2);
+    ssd1306_intf.send(rx / 2);
+    ssd1306_intf.send(0x75);
+    ssd1306_intf.send(y<<3);
+    ssd1306_intf.send(((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1));
+    ssd1306_spiDataMode(1);
+}
+
+static void ssd1327_sendPixels(uint8_t data);
+
+static void next_page_compat(void)
+{
+    ssd1306_intf.stop();
+    set_block_compat(__s_column,__s_page + 1, __s_w);
+}
+
+//SSD1306_COMPAT_SPI_BLOCK_8BIT_CMDS( 0x15, 0x75 );
+
+static void ssd1327_sendPixels(uint8_t data)
+{
+    if (!(__s_pos & 0x01))
+    {
+        __s_leftPixel = data;
+        data = 0x00;
+    }
+    if ((__s_pos & 0x01) || (__s_pos == __s_column + __s_w2 - 1))
+    {
+        for (uint8_t i=8; i>0; i--)
+        {
+            uint8_t color = (__s_leftPixel & 0x01) ? (ssd1306_color & 0x0F) : 0;
+            color |= (((data & 0x01) ? (ssd1306_color & 0x0F): 0) << 4);
+            ssd1306_intf.send(color);
+            data >>= 1;
+            __s_leftPixel >>= 1;
+        }
+    }
+    __s_pos++;
+}
+
+static void ssd1327_sendPixels8(uint8_t data)
+{
+    ssd1306_intf.send( data );
+}
+
+static void ssd1327_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while (len--)
+    {
+        ssd1327_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+//////////////////////// SSD1331 NATIVE MODE ///////////////////////////////////
+
+CONTROLLER_NATIVE_SPI_BLOCK_8BIT_CMDS( 0x15, 0x75 );
+
+/////////////   ssd1325 functions below are for SPI display  ////////////
+/////////////   in native/normal mode                        ////////////
+
+static void    ssd1327_setMode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = set_block_native;
+        ssd1306_lcd.next_page = next_page_native;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT )
+    {
+        ssd1306_lcd.set_block = set_block_compat;
+        ssd1306_lcd.next_page = next_page_compat;
+    }
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send( 0xA0 );
+    ssd1306_intf.send( 0x10 | (mode == LCD_MODE_NORMAL ? 0x00 : 0x04) );
+    ssd1306_intf.stop();
+    return;
+}
+
+void    ssd1327_128x128_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_CUSTOM;
+    ssd1306_lcd.width = 128;  // specify width
+    ssd1306_lcd.height = 128; // specify height
+    // Set functions for compatible mode
+    ssd1306_lcd.set_block = set_block_compat;
+    ssd1306_lcd.next_page = next_page_compat;
+    ssd1306_lcd.send_pixels1  = ssd1327_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1327_sendPixelsBuffer;
+    // Set function for 8-bit mode
+    ssd1306_lcd.send_pixels8 = ssd1327_sendPixels8;
+    ssd1306_lcd.set_mode = ssd1327_setMode;
+    // Use one of 2 functions for initialization below
+    // Please, read help on this functions and read datasheet before you decide, which
+    // one needs to be used. For example, ssd1331 is OK with ssd1306_configureI2cDisplay(),
+    // while st7735 can be initialized only with ssd1306_configureSpiDisplay().
+    ssd1306_configureI2cDisplay(s_oled_128x128_initData, sizeof(s_oled_128x128_initData));
+    delay(100);
+}
+
+void   ssd1327_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1327_128x128_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_ssd1327.h b/lib/libssd1306/src/lcd/oled_ssd1327.h
new file mode 100644
index 0000000..b955346
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1327.h
@@ -0,0 +1,83 @@
+/*
+    MIT License
+
+    Copyright (c) 2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_ssd1325.h support for SSD1325 OLED 128x64 display
+ */
+
+
+#ifndef _OLED_SSD1327_H_
+#define _OLED_SSD1327_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup SSD1327_OLED_API SSD1327: ssd1327 control functions
+ * @{
+ */
+
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 128x128 SSD1327 OLED display (based on SSD1327 controller).
+ *
+ * Inits 128x128 SSD1327 OLED display (based on SSD1327 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void ssd1327_128x128_init(void);
+
+/**
+ * @brief Inits 128x128 SSD1327 OLED display over spi (based on SSD1327 controller).
+ *
+ * Inits 128x128 SSD1327 OLED display over spi (based on SSD1327 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void ssd1327_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SSD1327_H_
diff --git a/lib/libssd1306/src/lcd/oled_ssd1331.c b/lib/libssd1306/src/lcd/oled_ssd1331.c
new file mode 100644
index 0000000..35fdd2f
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1331.c
@@ -0,0 +1,287 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_ssd1331.h"
+#include "lcd_common.h"
+#include "ssd1331_commands.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+#include "nano_gfx_types.h"
+
+extern uint16_t ssd1306_color;
+
+static const PROGMEM uint8_t s_oled96x64_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1331_X8,
+    0x00,
+#endif
+    SSD1331_DISPLAYOFF,             // display off
+    SSD1331_SEGREMAP, 0x00 | 0x20 | 0x10 | 0x02 | 0x01, /* 8-bit rgb color mode */
+    SSD1331_SETSTARTLINE, 0x00,    // First line to start scanning from
+    SSD1331_SETDISPLAYOFFSET, 0x00, // Set display offset
+    SSD1331_NORMALDISPLAY,
+    SSD1331_SETMULTIPLEX, 63,       // Reset to default MUX. See datasheet
+    SSD1331_SETMASTER, 0x8E,        // Set master mode
+    SSD1331_POWERMODE, 0x0B,        // Disable power-safe mode
+    SSD1331_SETPRECHARGE, 0x31,     // Phase 1 and Phase 2 periods
+    SSD1331_CLOCKDIV, 0xF0,         // 7:4 = Oscillator Frequency, 3:0 = CLK Div Ratio (A[3:0]+1 = 1..16)
+    SSD1331_PRECHARGEA, 0x64,
+    SSD1331_PRECHARGEB, 0x78,
+    SSD1331_PRECHARGELEVEL, 0x3A,
+    SSD1331_VCOMH, 0x3E,
+    SSD1331_MASTERCURRENT, 0x09,
+    SSD1331_CONTRASTA, 0x91,        // RED
+    SSD1331_CONTRASTB, 0x50,        // GREEN
+    SSD1331_CONTRASTC, 0x7D,        // BLUE
+    SSD1331_DISPLAYON,
+};
+
+static const PROGMEM uint8_t s_oled96x64_initData16[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1331_X16,
+    0x00,
+#endif
+    SSD1331_DISPLAYOFF,             // display off
+    SSD1331_SEGREMAP, 0x40 | 0x20 | 0x10 | 0x02 | 0x01, /* 16-bit rgb color mode */
+    SSD1331_SETSTARTLINE, 0x00,    // First line to start scanning from
+    SSD1331_SETDISPLAYOFFSET, 0x00, // Set display offset
+    SSD1331_NORMALDISPLAY,
+    SSD1331_SETMULTIPLEX, 63,       // Reset to default MUX. See datasheet
+    SSD1331_SETMASTER, 0x8E,        // Set master mode
+    SSD1331_POWERMODE, 0x0B,        // Disable power-safe mode
+    SSD1331_SETPRECHARGE, 0x31,     // Phase 1 and Phase 2 periods
+    SSD1331_CLOCKDIV, 0xF0,         // 7:4 = Oscillator Frequency, 3:0 = CLK Div Ratio (A[3:0]+1 = 1..16)
+    SSD1331_PRECHARGEA, 0x64,
+    SSD1331_PRECHARGEB, 0x78,
+    SSD1331_PRECHARGELEVEL, 0x3A,
+    SSD1331_VCOMH, 0x3E,
+    SSD1331_MASTERCURRENT, 0x09,
+    SSD1331_CONTRASTA, 0x91,        // RED
+    SSD1331_CONTRASTB, 0x50,        // GREEN
+    SSD1331_CONTRASTC, 0x7D,        // BLUE
+    SSD1331_DISPLAYON,
+};
+
+static uint8_t s_rotation = 0x04;
+
+//////////////////////// SSD1306 COMPATIBLE MODE ///////////////////////////////
+
+SSD1306_COMPAT_SPI_BLOCK_8BIT_CMDS(
+     (s_rotation & 1) ? SSD1331_ROWADDR: SSD1331_COLUMNADDR,
+     (s_rotation & 1) ? SSD1331_COLUMNADDR: SSD1331_ROWADDR );
+
+SSD1306_COMPAT_SEND_PIXELS_RGB8_CMDS();
+
+SSD1306_COMPAT_SEND_PIXELS_RGB16_CMDS();
+
+//////////////////////// SSD1331 NATIVE MODE ///////////////////////////////////
+
+CONTROLLER_NATIVE_SPI_BLOCK_8BIT_CMDS(
+     (s_rotation & 1) ? SSD1331_ROWADDR: SSD1331_COLUMNADDR,
+     (s_rotation & 1) ? SSD1331_COLUMNADDR: SSD1331_ROWADDR );
+
+//////////////////////////// GENERIC FUNCTIONS ////////////////////////////
+
+void    ssd1331_setMode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        s_rotation &= ~0x04;
+        ssd1306_lcd.set_block = set_block_native;
+        ssd1306_lcd.next_page = next_page_native;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT )
+    {
+        s_rotation |= 0x04;
+        ssd1306_lcd.set_block = set_block_compat;
+        ssd1306_lcd.next_page = next_page_compat;
+    }
+    ssd1331_setRotation( s_rotation );
+    return;
+}
+
+void ssd1331_setRotation(uint8_t rotation)
+{
+    uint8_t ram_mode;
+    if ((rotation^s_rotation) & 0x01)
+    {
+        uint16_t t = ssd1306_lcd.width;
+        ssd1306_lcd.width = ssd1306_lcd.height;
+        ssd1306_lcd.height = t;
+    }
+    s_rotation = (rotation & 0x03) | (s_rotation & 0x04);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send( SSD1331_SEGREMAP );
+    switch (s_rotation)
+    {
+    // NORMAL FULL COLOR MODE
+    case 0:
+        ram_mode = 0b00110010;
+        break;
+    case 1: // 90 degree CW
+        ram_mode = 0b00110001;
+        break;
+    case 2: // 180 degree CW
+        ram_mode = 0b00100000;
+        break;
+    case 3: // 270 degree CW
+        ram_mode = 0b00100011;
+        break;
+    // SSD1306_COMPATIBLE mode
+    case 4:
+        ram_mode = 0b00110011;
+        break;
+    case 5: // 90 degree CW
+        ram_mode = 0b00110000;
+        break;
+    case 6: // 180 degree CW
+        ram_mode = 0b00100001;
+        break;
+    case 7: // 270 degree CW
+        ram_mode = 0b00100010;
+        break;
+    default: // 270 degree CW
+        ram_mode = 0b00100000;
+        break;
+    }
+    ssd1306_intf.send( ram_mode );
+    ssd1306_intf.stop();
+}
+
+// 16-bit color in 8-bit display mode
+static void    ssd1331_sendPixel16_8(uint16_t data)
+{
+    uint8_t color = RGB16_TO_RGB8(data);
+    ssd1306_intf.send( color );
+}
+
+// 8-bit color in 16-bit display mode
+static void    ssd1331_sendPixel8_16(uint8_t data)
+{
+    uint16_t color = RGB8_TO_RGB16(data);
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+// 16-bit color in 16-bit display mode
+static void    ssd1331_sendPixel16(uint16_t color)
+{
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+void    ssd1331_96x64_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.width = 96;
+    ssd1306_lcd.set_block = set_block_compat;
+    ssd1306_lcd.next_page = next_page_compat;
+    ssd1306_lcd.send_pixels1  = send_pixels_compat;
+    ssd1306_lcd.send_pixels_buffer1 = send_pixels_buffer_compat;
+
+    ssd1306_lcd.send_pixels8 = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels16 = ssd1331_sendPixel16_8;
+    ssd1306_lcd.set_mode = ssd1331_setMode;
+    for( uint8_t i=0; i<sizeof(s_oled96x64_initData); i++)
+    {
+        ssd1306_sendCommand(pgm_read_byte(&s_oled96x64_initData[i]));
+    }
+}
+
+void    ssd1331_96x64_init16()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.width = 96;
+    ssd1306_lcd.set_block = set_block_compat;
+    ssd1306_lcd.next_page = next_page_compat;
+    ssd1306_lcd.send_pixels1  = send_pixels_compat16;
+    ssd1306_lcd.send_pixels_buffer1 = send_pixels_buffer_compat16;
+
+    ssd1306_lcd.send_pixels8 = ssd1331_sendPixel8_16;
+    ssd1306_lcd.send_pixels16 = ssd1331_sendPixel16;
+    ssd1306_lcd.set_mode = ssd1331_setMode;
+    for( uint8_t i=0; i<sizeof(s_oled96x64_initData16); i++)
+    {
+        ssd1306_sendCommand(pgm_read_byte(&s_oled96x64_initData16[i]));
+    }
+}
+
+void   ssd1331_96x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1331_96x64_init();
+}
+
+void   ssd1331_96x64_spi_init16(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1331_96x64_init16();
+}
+
+void ssd1331_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color)
+{
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1331_DRAWLINE);
+    ssd1306_intf.send(x1);
+    ssd1306_intf.send(y1);
+    ssd1306_intf.send(x2);
+    ssd1306_intf.send(y2);
+    ssd1306_intf.send( (color & 0x03) << 4 );
+    ssd1306_intf.send( (color & 0x1C) << 2 );
+    ssd1306_intf.send( (color & 0xE0) >> 2 );
+    ssd1306_intf.stop();
+}
+
+void ssd1331_copyBlock(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t newLeft, uint8_t newTop)
+{
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x23);
+    ssd1306_intf.send(left);
+    ssd1306_intf.send(top);
+    ssd1306_intf.send(right);
+    ssd1306_intf.send(bottom);
+    ssd1306_intf.send(newLeft);
+    ssd1306_intf.send(newTop);
+    ssd1306_intf.stop();
+}
+
diff --git a/lib/libssd1306/src/lcd/oled_ssd1331.h b/lib/libssd1306/src/lcd/oled_ssd1331.h
new file mode 100644
index 0000000..d270a25
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1331.h
@@ -0,0 +1,146 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_ssd1331.h support for RGB OLED 96x64 display
+ */
+
+
+#ifndef _OLED_SSD1331_H_
+#define _OLED_SSD1331_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup SSD1331_API SSD1331: ssd1331 control functions
+ * @{
+ */
+
+/**
+ * @brief Sets screen orientation (rotation)
+ *
+ * Sets screen orientation (rotation): 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @param rotation - screen rotation 0 - normal, 1 - 90 CW, 2 - 180 CW, 3 - 270 CW
+ * @note works only with ssd1331 display
+ */
+void ssd1331_setRotation(uint8_t rotation);
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with RGB oled display,
+ * RGB oled is initialized in vertical auto-increment mode.
+ * But for pure rbg oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * ssd1331_setMode(0) prior to using pure RGB methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void        ssd1331_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits 96x64 RGB OLED display (based on SSD1331 controller).
+ *
+ * Inits 96x64 RGB OLED display (based on SSD1331 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         ssd1331_96x64_init(void);
+
+/**
+ * @brief Inits 96x64 RGB OLED display over spi in 8-bit mode (based on SSD1331 controller).
+ *
+ * Inits 96x64 RGB OLED display over spi in 8-bit mode (based on SSD1331 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ssd1331_96x64_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @brief Inits 96x64 RGB OLED display over spi in 16-bit mode (based on SSD1331 controller).
+ *
+ * Inits 96x64 RGB OLED display over spi in 16-bit mode (based on SSD1331 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ssd1331_96x64_spi_init16(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * Draws line
+ * @param x1 - x position in pixels of start point
+ * @param y1 - y position in pixels of start point
+ * @param x2 - x position in pixels of end point
+ * @param y2 - y position in pixels of end point
+ * @param color - color of the line, refer to RGB_COLOR8 macros
+ *
+ * @note This API can be used only with ssd1331 RGB oled displays
+ */
+void         ssd1331_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint16_t color);
+
+/**
+ * Copies block in GDRAM to new position
+ * @param left column start of block to copy
+ * @param top row start of block to copy
+ * @param right column end of block to copy
+ * @param bottom row end of block to copy
+ * @param newLeft new column start
+ * @param newTop new row start
+ *
+ * @note This API can be used only with ssd1331 RGB oled displays
+ * @note after copy command is sent, it takes some time from oled
+ *       controller to complete operation. So, it is HIGHLY recommended
+ *       to wait for reasonable time before send other graphics operations
+ *       (for example, use 250us delay). This time is required for
+ *       oled display to become ready to accept new commands.
+ */
+void ssd1331_copyBlock(uint8_t left, uint8_t top, uint8_t right, uint8_t bottom, uint8_t newLeft, uint8_t newTop);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SSD1331_H_
diff --git a/lib/libssd1306/src/lcd/oled_ssd1351.c b/lib/libssd1306/src/lcd/oled_ssd1351.c
new file mode 100644
index 0000000..56f7c08
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1351.c
@@ -0,0 +1,226 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_ssd1351.h"
+#include "lcd_common.h"
+#include "ssd1351_commands.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#include "nano_gfx_types.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+#define CMD_ARG     0xFF
+
+extern uint16_t ssd1306_color;
+extern uint32_t s_ssd1306_spi_clock;
+
+static const PROGMEM uint8_t s_oled128x128_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_SSD1351,
+    0x00,
+#endif
+    SSD1351_UNLOCK, CMD_ARG, 0x12,
+    SSD1351_UNLOCK, CMD_ARG, 0xB1,
+    SSD1351_SLEEP_ON,
+    SSD1351_CLOCKDIV, CMD_ARG, 0xF1,         // 7:4 = Oscillator Frequency, 3:0 = CLK Div Ratio (A[3:0]+1 = 1..16)
+    SSD1351_SETMULTIPLEX, CMD_ARG, 127,      // Reset to default MUX. See datasheet
+    SSD1351_SEGREMAP, CMD_ARG, 0B00110101,   // 16-bit rgb color mode
+    SSD1351_SETSTARTLINE, CMD_ARG, 0x00,     // First line to start scanning from
+    SSD1351_SETDISPLAYOFFSET, CMD_ARG, 0x00, // Set display offset
+    SSD1351_SETGPIO, CMD_ARG, 0x00,          // GPIO OFF
+    SSD1351_SETFUNCTION, CMD_ARG, 0x01,
+    SSD1351_SETPRECHARGE, CMD_ARG, 0x32,     // Phase 1 and Phase 2 periods
+    SSD1351_VCOMH, CMD_ARG, 0x05,            //
+    SSD1351_PRECHARGELEVEL, CMD_ARG, 0x17,
+    SSD1351_NORMALDISPLAY,
+    SSD1351_CONTRAST,  CMD_ARG, 0xC8,        // RED
+                       CMD_ARG, 0x80,        // GREEN
+                       CMD_ARG, 0xC8,        // BLUE
+    SSD1351_MASTERCURRENT, CMD_ARG, 0x0F,    //
+    SSD1351_EXTVSL, CMD_ARG, 0xA0, CMD_ARG, 0xB5, CMD_ARG, 0x55,
+    SSD1351_PRECHARGESECOND, CMD_ARG, 0x01,  //
+    SSD1351_SLEEP_OFF,                    // Disable power-safe mode
+    SSD1351_NORMALDISPLAY,
+};
+
+static uint8_t s_column;
+static uint8_t s_page;
+
+static void ssd1351_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1351_COLUMNADDR);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1));
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1351_ROWADDR);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(y<<3);
+    ssd1306_intf.send(((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1));
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1331_WRITEDATA);
+    ssd1306_spiDataMode(1);
+}
+
+static void ssd1351_setBlock2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1351_COLUMNADDR);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1));
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1351_ROWADDR);
+    ssd1306_spiDataMode(1);  // According to datasheet all args must be passed in data mode
+    ssd1306_intf.send(y);
+    ssd1306_intf.send(ssd1306_lcd.height - 1);
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(SSD1331_WRITEDATA);
+    ssd1306_spiDataMode(1);
+}
+
+static void ssd1351_nextPage(void)
+{
+    ssd1306_intf.stop();
+    ssd1351_setBlock(s_column,s_page+1,0);
+}
+
+static void ssd1351_nextPage2(void)
+{
+}
+
+void    ssd1351_setMode(lcd_mode_t mode)
+{
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send( SSD1351_SEGREMAP );
+    ssd1306_spiDataMode(1);
+    ssd1306_intf.send( 0B00110100 | mode );
+    ssd1306_intf.stop();
+    if (mode == LCD_MODE_SSD1306_COMPAT)
+    {
+        ssd1306_lcd.set_block = ssd1351_setBlock;
+        ssd1306_lcd.next_page = ssd1351_nextPage;
+    }
+    else if (mode == LCD_MODE_NORMAL )
+    {
+        ssd1306_lcd.set_block = ssd1351_setBlock2;
+        ssd1306_lcd.next_page = ssd1351_nextPage2;
+    }
+}
+
+static void ssd1351_sendPixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)(ssd1306_color>>8) );
+            ssd1306_intf.send( (uint8_t)(ssd1306_color) );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+static void ssd1351_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while(len--)
+    {
+        ssd1351_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+static void ssd1351_sendPixel8(uint8_t data)
+{
+    uint16_t color = RGB8_TO_RGB16(data);
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+static void ssd1351_sendPixel16(uint16_t color)
+{
+    ssd1306_intf.send( color >> 8 );
+    ssd1306_intf.send( color & 0xFF );
+}
+
+void    ssd1351_128x128_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.height = 128;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.set_block = ssd1351_setBlock;
+    ssd1306_lcd.next_page = ssd1351_nextPage;
+    ssd1306_lcd.send_pixels1  = ssd1351_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1351_sendPixelsBuffer;
+    ssd1306_lcd.send_pixels8 = ssd1351_sendPixel8;
+    ssd1306_lcd.send_pixels16 = ssd1351_sendPixel16;
+    ssd1306_lcd.set_mode = ssd1351_setMode;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    for( uint8_t i=0; i<sizeof(s_oled128x128_initData); i++)
+    {
+        uint8_t data = pgm_read_byte(&s_oled128x128_initData[i]);
+        if (data == CMD_ARG)
+        {
+            data = pgm_read_byte(&s_oled128x128_initData[++i]);
+            ssd1306_spiDataMode(1);
+            ssd1306_intf.send(data);
+            ssd1306_spiDataMode(0);
+        }
+        else
+        {
+            ssd1306_intf.send(data);
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void   ssd1351_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 20 );
+    }
+    /* ssd1351 cannot work faster than at 4MHz per datasheet */
+    s_ssd1306_spi_clock = 4400000;
+    ssd1306_spiInit(cesPin, dcPin);
+    ssd1351_128x128_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_ssd1351.h b/lib/libssd1306/src/lcd/oled_ssd1351.h
new file mode 100644
index 0000000..68bdb59
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_ssd1351.h
@@ -0,0 +1,88 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_ssd1351.h support for RGB OLED 128x128 display
+ */
+
+
+#ifndef _OLED_SSD1351_H_
+#define _OLED_SSD1351_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with RGB oled display,
+ * RGB oled is initialized in vertical auto-increment mode.
+ * But for pure rbg oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * ssd1351_setMode(0) prior to using pure RGB methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void        ssd1351_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits 128x128 RGB OLED display (based on SSD1351 controller).
+ *
+ * Inits 128x128 RGB OLED display (based on SSD1351 controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         ssd1351_128x128_init(void);
+
+/**
+ * @brief Inits 128x128 RGB OLED display over spi (based on SSD1351 controller).
+ *
+ * Inits 128x128 RGB OLED display over spi (based on SSD1351 controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         ssd1351_128x128_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_SSD1351_H_
diff --git a/lib/libssd1306/src/lcd/oled_template.c b/lib/libssd1306/src/lcd/oled_template.c
new file mode 100644
index 0000000..1f825f3
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_template.c
@@ -0,0 +1,173 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "oled_template.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+
+extern uint16_t ssd1306_color;
+
+static const PROGMEM uint8_t s_oled_WxH_initData[] =
+{
+#ifdef SDL_EMULATION
+    SDL_LCD_TEMPLATE,
+    0x00,
+#endif
+    // Specify display initialization commands here
+    // The commands should be in format, required by
+    // ssd1306_configureI2cDisplay() or ssd1306_configureSpiDisplay()
+    // functions. Refer to their documenation.
+    0x00, 0x00,
+};
+
+/////////////   template functions below are for SPI display  ////////////
+/////////////   in ssd1306 compatible mode                    ////////////
+
+static uint8_t s_column;
+static uint8_t s_page;
+
+// The function must set block to draw data
+static void template_setBlock_compat(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x00);   // Send column addr command to controller
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1));
+    ssd1306_intf.send(0x00);   // Replace with row addr command to controller
+    ssd1306_intf.send(y<<3);
+    ssd1306_intf.send(((y<<3) + 7) < ssd1306_lcd.height ? ((y<<3) + 7) : (ssd1306_lcd.height - 1));
+    ssd1306_spiDataMode(1);
+}
+
+static void template_nextPage_compat(void)
+{
+    ssd1306_intf.stop();
+    template_setBlock_compat(s_column,s_page+1,0);
+}
+
+static void template_sendPixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)ssd1306_color );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+static void template_sendPixelsBuffer(const uint8_t *buffer, uint16_t len)
+{
+    while(len--)
+    {
+        template_sendPixels(*buffer);
+        buffer++;
+    }
+}
+
+/////////////   template functions below are for SPI display  ////////////
+/////////////   in native/normal mode                         ////////////
+
+static void template_setBlock(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_spiDataMode(0);
+    ssd1306_intf.send(0x00);  // Send column address command here
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx < ssd1306_lcd.width ? rx : (ssd1306_lcd.width - 1));
+    ssd1306_intf.send(0x00);  // Send row address command here
+    ssd1306_intf.send(y);
+    ssd1306_intf.send(ssd1306_lcd.height - 1);
+    ssd1306_spiDataMode(1);
+}
+
+static void template_nextPage(void)
+{
+}
+
+void    template_setMode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = template_setBlock;
+        ssd1306_lcd.next_page = template_nextPage;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT)
+    {
+        ssd1306_lcd.set_block = template_setBlock_compat;
+        ssd1306_lcd.next_page = template_nextPage_compat;
+    }
+    // Send command to update controller
+//    ssd1306_intf.start();
+//    ssd1306_spiDataMode(0);
+//    ssd1306_intf.send( SSD1331_SEGREMAP );
+//    ssd1306_intf.stop();
+    return;
+}
+
+void    template_WxH_init()
+{
+    ssd1306_lcd.type = LCD_TYPE_CUSTOM;
+    ssd1306_lcd.width = 96;  // specify width
+    ssd1306_lcd.height = 64; // specify height
+    // Set functions for compatible mode
+    ssd1306_lcd.set_block = template_setBlock_compat;
+    ssd1306_lcd.next_page = template_nextPage_compat;
+    ssd1306_lcd.send_pixels1  = template_sendPixels;
+    ssd1306_lcd.send_pixels_buffer1 = template_sendPixelsBuffer;
+    // Set function for 8-bit mode
+    ssd1306_lcd.send_pixels8 = ssd1306_intf.send;
+    ssd1306_lcd.set_mode = template_setMode;
+    // Use one of 2 functions for initialization below
+    // Please, read help on this functions and read datasheet before you decide, which
+    // one needs to be used. For example, ssd1331 is OK with ssd1306_configureI2cDisplay(),
+    // while st7735 can be initialized only with ssd1306_configureSpiDisplay().
+    ssd1306_configureI2cDisplay(s_oled_WxH_initData, sizeof(s_oled_WxH_initData));
+//    ssd1306_configureSpiDisplay(s_oled_WxH_initData, sizeof(s_oled_WxH_initData));
+}
+
+void   template_WxH_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin)
+{
+    if (rstPin >=0)
+    {
+        ssd1306_resetController( rstPin, 10 );
+    }
+    ssd1306_spiInit(cesPin, dcPin);
+    template_WxH_init();
+}
diff --git a/lib/libssd1306/src/lcd/oled_template.h b/lib/libssd1306/src/lcd/oled_template.h
new file mode 100644
index 0000000..abb6c0d
--- /dev/null
+++ b/lib/libssd1306/src/lcd/oled_template.h
@@ -0,0 +1,99 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file oled_template.h support for TEMPLATE OLED WxH display
+ */
+
+
+#ifndef _OLED_TEMPLATE_H_
+#define _OLED_TEMPLATE_H_
+
+#include "ssd1306_hal/io.h"
+#include "lcd/lcd_common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup TEMPLATE_OLED_API TEMPLATE: template control functions
+ * @{
+ */
+
+// PLACE ANY OLED SPECIFIC FUNCTIONS HERE
+
+/**
+ * @}
+ */
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Sets GDRAM autoincrement mode
+ *
+ * Sets GDRAM autoincrement mode. By default, to make
+ * ssd1306_xxx functions compatible with TEMPLATE oled display,
+ * TEMPLATE oled is initialized in vertical auto-increment mode.
+ * But for pure TEMPLATE oled operations horizontal auto-increment mode is more suitable.
+ * So, if you're going to use NanoCanvas8 functions, please call
+ * template_setMode(0) prior to using pure TEMPLATE oled methods.
+ *
+ * @param mode 0 or 1
+ * @deprecated Use ssd1306_setMode() instead.
+ */
+void        template_setMode(lcd_mode_t mode);
+
+/**
+ * @brief Inits WxH TEMPLATE OLED display (based on TEMPLATE controller).
+ *
+ * Inits WxH TEMPLATE OLED display (based on TEMPLATE controller).
+ * User must init communication interface (i2c, spi) prior to calling this function.
+ * @see ssd1306_i2cInit()
+ * @see ssd1306_spiInit()
+ */
+void         template_WxH_init(void);
+
+/**
+ * @brief Inits WxH TEMPLATE OLED display over spi (based on TEMPLATE controller).
+ *
+ * Inits WxH TEMPLATE OLED display over spi (based on TEMPLATE controller)
+ * @param rstPin - pin controlling LCD reset (-1 if not used)
+ * @param cesPin - chip enable pin to LCD slave (-1 if not used)
+ * @param dcPin - data/command pin to control LCD dc (required)
+ */
+void         template_WxH_spi_init(int8_t rstPin, int8_t cesPin, int8_t dcPin);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _OLED_TEMPLATE_H_
diff --git a/lib/libssd1306/src/lcd/pcd8544_commands.h b/lib/libssd1306/src/lcd/pcd8544_commands.h
new file mode 100644
index 0000000..8eba1eb
--- /dev/null
+++ b/lib/libssd1306/src/lcd/pcd8544_commands.h
@@ -0,0 +1,76 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file pcd8544_commands.h PCD8544 commands definitions
+ */
+
+#ifndef _PCD8544_COMMANDS_H_
+#define _PCD8544_COMMANDS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** PCD8544 LCD driver commands */
+enum ESsd1306Commands
+{
+    PCD8544_NOP             = 0x00,
+
+// Regular functions
+    PCD8544_FUNCTIONSET     = 0x20,
+    PCD8544_DISPLAYCONTROL  = 0x08,
+    PCD8544_SETYADDR        = 0x40,
+    PCD8544_SETXADDR        = 0x80,
+
+// Extended functions
+    PCD8544_SETTEMP         = 0x04,
+    PCD8544_SETBIAS         = 0x10,
+    PCD8544_SETVOP          = 0x80,
+
+};
+
+/** PCD8544 supported function modes. */
+enum EPcd8544FunctionMode
+{
+    PCD8544_POWERDOWN           = 0x04,
+    PCD8544_VERTICAL_ADDR_MODE  = 0x02,
+    PCD8544_EXTENDEDINSTRUCTION = 0x01,
+};
+
+/** PCD8544 supported display modes. */
+enum EPcd8544DisplayMode
+{
+    PCD8544_DISPLAYBLANK        = 0x0,
+    PCD8544_DISPLAYALLON        = 0x1,
+    PCD8544_DISPLAYNORMAL       = 0x4,
+    PCD8544_DISPLAYINVERTED     = 0x5,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _PCD8544_COMMANDS_H_
diff --git a/lib/libssd1306/src/lcd/ssd1306_commands.h b/lib/libssd1306/src/lcd/ssd1306_commands.h
new file mode 100644
index 0000000..9238561
--- /dev/null
+++ b/lib/libssd1306/src/lcd/ssd1306_commands.h
@@ -0,0 +1,82 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_commands.h SSD1306 commands definitions
+ */
+
+#ifndef _SSD1306_COMMANDS_H_
+#define _SSD1306_COMMANDS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** SSD1306 LCD driver commands */
+enum ESsd1306Commands
+{
+    SSD1306_SETLOWCOLUMN     = 0x00,
+    SSD1306_SETHIGHCOLUMN    = 0x10,
+    SSD1306_MEMORYMODE       = 0x20,
+    SSD1306_COLUMNADDR       = 0x21,
+    SSD1306_PAGEADDR         = 0x22,
+    SSD1306_SETSTARTLINE     = 0x40,
+    SSD1306_DEFAULT_ADDRESS  = 0x78,
+    SSD1306_SETCONTRAST      = 0x81,
+    SSD1306_CHARGEPUMP       = 0x8D,
+    SSD1306_SEGREMAP         = 0xA0,
+    SSD1306_DISPLAYALLON_RESUME = 0xA4,
+    SSD1306_DISPLAYALLON     = 0xA5,
+    SSD1306_NORMALDISPLAY    = 0xA6,
+    SSD1306_INVERTDISPLAY    = 0xA7,
+    SSD1306_SETMULTIPLEX     = 0xA8,
+    SSD1306_DISPLAYOFF       = 0xAE,
+    SSD1306_DISPLAYON        = 0xAF,
+    SSD1306_SETPAGE          = 0xB0,
+    SSD1306_COMSCANINC       = 0xC0,
+    SSD1306_COMSCANDEC       = 0xC8,
+    SSD1306_SETDISPLAYOFFSET = 0xD3,
+    SSD1306_SETDISPLAYCLOCKDIV = 0xD5,
+    SSD1306_SETPRECHARGE     = 0xD9,
+    SSD1306_SETCOMPINS       = 0xDA,
+    SSD1306_SETVCOMDETECT    = 0xDB,
+
+    SSD1306_SWITCHCAPVCC     = 0x02,
+    SSD1306_NOP              = 0xE3,
+};
+
+/** SSD1306 supported memory modes. */
+enum ESsd1306MemoryMode
+{
+    HORIZONTAL_ADDRESSING_MODE  = 0x00,
+    VERTICAL_ADDRESSING_MODE    = 0x01,
+    PAGE_ADDRESSING_MODE        = 0x02,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1306_COMMANDS_H_
diff --git a/lib/libssd1306/src/lcd/ssd1331_commands.h b/lib/libssd1306/src/lcd/ssd1331_commands.h
new file mode 100644
index 0000000..5b262d6
--- /dev/null
+++ b/lib/libssd1306/src/lcd/ssd1331_commands.h
@@ -0,0 +1,69 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1331_commands.h SSD1331 commands definitions
+ */
+
+#ifndef _SSD1331_COMMANDS_H_
+#define _SSD1331_COMMANDS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** SSD1331 LCD driver commands */
+enum ESsd1331Commands
+{
+    SSD1331_COLUMNADDR       = 0x15,
+    SSD1331_DRAWLINE         = 0x21,
+    SSD1331_ROWADDR          = 0x75,
+    SSD1331_CONTRASTA        = 0x81,
+    SSD1331_CONTRASTB        = 0x82,
+    SSD1331_CONTRASTC        = 0x83,
+    SSD1331_MASTERCURRENT    = 0x87,
+    SSD1331_PRECHARGEA       = 0x8A,
+    SSD1331_PRECHARGEB       = 0x8B,
+    SSD1331_SEGREMAP         = 0xA0,
+    SSD1331_SETSTARTLINE     = 0xA1,
+    SSD1331_SETDISPLAYOFFSET = 0xA2,
+    SSD1331_NORMALDISPLAY    = 0xA4,
+    SSD1331_SETMULTIPLEX     = 0xA8,
+    SSD1331_SETMASTER        = 0xAD,
+    SSD1331_DISPLAYOFF       = 0xAE,
+    SSD1331_DISPLAYON        = 0xAF,
+    SSD1331_POWERMODE        = 0xB0,
+    SSD1331_SETPRECHARGE     = 0xB1,
+    SSD1331_CLOCKDIV         = 0xB3,
+    SSD1331_PRECHARGELEVEL   = 0xBB,
+    SSD1331_VCOMH            = 0xBE,
+    SSD1331_NOP              = 0xE3,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1331_COMMANDS_H_
diff --git a/lib/libssd1306/src/lcd/ssd1351_commands.h b/lib/libssd1306/src/lcd/ssd1351_commands.h
new file mode 100644
index 0000000..4f76463
--- /dev/null
+++ b/lib/libssd1306/src/lcd/ssd1351_commands.h
@@ -0,0 +1,75 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1351_commands.h SSD1331 commands definitions
+ */
+
+#ifndef _SSD1351_COMMANDS_H_
+#define _SSD1351_COMMANDS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** SSD1351 LCD driver commands */
+enum ESsd1351Commands
+{
+    SSD1351_COLUMNADDR       = 0x15,
+    SSD1331_WRITEDATA        = 0x5C,
+    SSD1351_ROWADDR          = 0x75,
+    SSD1351_SEGREMAP         = 0xA0,
+    SSD1351_SETSTARTLINE     = 0xA1,
+    SSD1351_SETDISPLAYOFFSET = 0xA2,
+    SSD1351_SETFUNCTION      = 0xAB,
+    SSD1351_NOP              = 0xAD,
+    SSD1351_ALLOFF           = 0xA4,
+    SSD1351_DISPLAYON        = 0xA5,
+    SSD1351_NORMALDISPLAY    = 0xA6,
+    SSD1351_DISPLAYINVERSE   = 0xA7,
+    SSD1351_SLEEP_ON         = 0xAE,
+    SSD1351_SLEEP_OFF        = 0xAF,
+    SSD1351_NOP2             = 0xB0,
+    SSD1351_SETPRECHARGE     = 0xB1,
+    SSD1351_CLOCKDIV         = 0xB3,
+    SSD1351_EXTVSL           = 0xB4,
+    SSD1351_SETGPIO          = 0xB5,
+    SSD1351_PRECHARGESECOND  = 0xB6,
+    SSD1351_PRECHARGELEVEL   = 0xBB,
+    SSD1351_VCOMH            = 0xBE,
+    SSD1351_CONTRAST         = 0xC1,
+    SSD1351_MASTERCURRENT    = 0xC7,
+    SSD1351_SETMULTIPLEX     = 0xCA,
+    SSD1351_PRECHARGEA       = 0x8A,
+    SSD1351_PRECHARGEB       = 0x8B,
+    SSD1351_NOP3             = 0xE3,
+    SSD1351_UNLOCK           = 0xFD,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif // _SSD1351_COMMANDS_H_
diff --git a/lib/libssd1306/src/lcd/vga_commands.h b/lib/libssd1306/src/lcd/vga_commands.h
new file mode 100644
index 0000000..63842a7
--- /dev/null
+++ b/lib/libssd1306/src/lcd/vga_commands.h
@@ -0,0 +1,71 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file vga_commands.h VGA library commands definitions
+ */
+
+#ifndef _VGA_COMMANDS_H_
+#define _VGA_COMMANDS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** VGA driver commands */
+enum EVgaCommands
+{
+    /**
+     * VGA_SET_BLOCK command sets rectangle in VGA ram to send pixels to.
+     * The command needs 4 byte-arguments:
+     *    left boundary in pixels,
+     *    right boundary in pixels,
+     *    top boundary in pixels,
+     *    bottom boundary in pixels, (last arg in not implemented yet)
+     */
+    VGA_SET_BLOCK       = 0x01,
+
+    /**
+     * VGA_SET_MODE command sets memory addressing mode: there are 2 modes
+     * available: 0 - normal addressing mode, 1 - ssd1306 compatible mode.
+     * After sending each pixel in normal addressing mode, x position shifts
+     * right by 1 pixel until end of block is reached, then y position shifts
+     * down by 1 pixel, and x position move to the start of block.
+     * After sending each pixel in ssd1306 compatible mode, y position shifts
+     * down by 1 pixel until 8 vertical pixels are printed, then y position changes
+     * to top of block, and x position shifts right by 1 pixel.
+     */
+    VGA_SET_MODE        = 0x02,
+
+    VGA_SET_RESOLUTION  = 0x03,
+
+    VGA_DISPLAY_ON      = 0x04,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+// ----------------------------------------------------------------------------
+#endif
diff --git a/lib/libssd1306/src/lcd/vga_monitor.c b/lib/libssd1306/src/lcd/vga_monitor.c
new file mode 100644
index 0000000..d061a44
--- /dev/null
+++ b/lib/libssd1306/src/lcd/vga_monitor.c
@@ -0,0 +1,145 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "vga_monitor.h"
+#include "vga_commands.h"
+#include "lcd_common.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_hal/io.h"
+
+static uint8_t s_column = 0;
+static uint8_t s_page = 0;
+
+extern uint16_t ssd1306_color;
+
+static void vga_set_block1(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    s_column = x;
+    s_page = y;
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x00);
+    ssd1306_intf.send(VGA_SET_BLOCK);
+    ssd1306_intf.send(s_column);
+    ssd1306_intf.send(rx);
+    ssd1306_intf.send(s_page * 8);
+    ssd1306_intf.stop();
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x40);
+}
+
+static void vga_next_page1(void)
+{
+    ssd1306_intf.stop();
+    vga_set_block1(s_column,s_page+1,0);
+}
+
+static void vga_set_block2(lcduint_t x, lcduint_t y, lcduint_t w)
+{
+    uint8_t rx = w ? (x + w - 1) : (ssd1306_lcd.width - 1);
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x00);
+    ssd1306_intf.send(VGA_SET_BLOCK); // set block
+    ssd1306_intf.send(x);
+    ssd1306_intf.send(rx);
+    ssd1306_intf.send(y);
+    ssd1306_intf.stop();
+    ssd1306_intf.start();
+    ssd1306_intf.send(0x40);
+}
+
+static void vga_next_page2(void)
+{
+}
+
+static void vga_send_pixels(uint8_t data)
+{
+    for (uint8_t i=8; i>0; i--)
+    {
+        if ( data & 0x01 )
+        {
+            ssd1306_intf.send( (uint8_t)ssd1306_color );
+        }
+        else
+        {
+            ssd1306_intf.send( 0B00000000 );
+        }
+        data >>= 1;
+    }
+}
+
+static void vga_send_pixels_buffer(const uint8_t *buffer, uint16_t len)
+{
+    while(len--)
+    {
+        vga_send_pixels(*buffer);
+        buffer++;
+    }
+}
+
+static void vga_set_mode(lcd_mode_t mode)
+{
+    if (mode == LCD_MODE_NORMAL)
+    {
+        ssd1306_lcd.set_block = vga_set_block2;
+        ssd1306_lcd.next_page = vga_next_page2;
+    }
+    else if (mode == LCD_MODE_SSD1306_COMPAT)
+    {
+        ssd1306_lcd.set_block = vga_set_block1;
+        ssd1306_lcd.next_page = vga_next_page1;
+    }
+    ssd1306_intf.start();
+    ssd1306_intf.send( 0x00 );
+    ssd1306_intf.send( VGA_SET_MODE );
+    ssd1306_intf.send( (uint8_t)mode );
+    ssd1306_intf.stop();
+    // empty for a while
+}
+
+void vga_96x40_8colors_init(void)
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1331;
+    ssd1306_lcd.width = 96;
+    ssd1306_lcd.height = 40;
+    ssd1306_lcd.set_block = vga_set_block1;
+    ssd1306_lcd.next_page = vga_next_page1;
+    ssd1306_lcd.send_pixels1  = vga_send_pixels;
+    ssd1306_lcd.send_pixels_buffer1 = vga_send_pixels_buffer;
+    ssd1306_lcd.send_pixels8 = ssd1306_intf.send;
+    ssd1306_lcd.set_mode = vga_set_mode;
+}
+
+void vga_128x64_mono_init(void)
+{
+    ssd1306_lcd.type = LCD_TYPE_SSD1306;
+    ssd1306_lcd.width = 128;
+    ssd1306_lcd.height = 64;
+    ssd1306_lcd.set_block = vga_set_block2;
+    ssd1306_lcd.next_page = vga_next_page2;
+    ssd1306_lcd.send_pixels1  = ssd1306_intf.send;
+    ssd1306_lcd.send_pixels_buffer1 = ssd1306_intf.send_buffer;
+    ssd1306_lcd.set_mode = vga_set_mode;
+}
+
diff --git a/lib/libssd1306/src/lcd/vga_monitor.h b/lib/libssd1306/src/lcd/vga_monitor.h
new file mode 100644
index 0000000..afbf9b1
--- /dev/null
+++ b/lib/libssd1306/src/lcd/vga_monitor.h
@@ -0,0 +1,75 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file vga_monitor.h Interface to vga_monitor
+ */
+
+#ifndef _SSD1306_VGA_MONITOR_H_
+#define _SSD1306_VGA_MONITOR_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * @{
+ */
+
+/**
+ * @brief Inits 96x40 color VGA display.
+ *
+ * Inits 96x40 color VGA display. This mode supports 8 colors: 3 bits per pixel.
+ * User must init communication interface (uart) for vga client mode or init vga
+ * interface for host mode prior to calling this function.
+ *
+ * @see ssd1306_uartInit_Builtin()
+ * @see ssd1306_vga_controller_init()
+ */
+void vga_96x40_8colors_init(void);
+
+/**
+ * @brief Inits 128x64 monochrome VGA display.
+ *
+ * Inits 128x64 monochrome VGA display. This mode supports 2 colors: black and white.
+ * User must init communication interface (uart) for vga client mode or init vga
+ * interface for host mode prior to calling this function.
+ *
+ * @see ssd1306_uartInit_Builtin()
+ * @see ssd1306_vga_controller_init()
+ */
+void vga_128x64_mono_init(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine.h b/lib/libssd1306/src/nano_engine.h
new file mode 100644
index 0000000..cd1923a
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine.h
@@ -0,0 +1,134 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file nano_engine.h Small graphics engine, based on SSD1331 functions
+ */
+
+
+#ifndef _NANO_ENGINE_H_
+#define _NANO_ENGINE_H_
+
+#include "nano_engine/sprite.h"
+#include "nano_engine/canvas.h"
+#include "nano_engine/adafruit.h"
+#include "nano_engine/tiler.h"
+#include "nano_engine/core.h"
+
+// DO NOT DECLARE NanoEngine8, NanoEngine16, NanoEngine1 as class NAME: public NanoEngine<T>
+// This causes flash and RAM memory consumption in compiled ELF
+
+/**
+ * @defgroup NANO_ENGINE_API NANO_ENGINE: Nano Engine description
+ * @{
+ * @brief Nano Engine description
+ *
+ * @details This group contains API functions for developing Graphics engines.
+ */
+
+/**
+ * NanoEngine1 is simple graphics engine, that implements double buffering work
+ * for the systems with very low resources. That is, memory buffer for SSD1306 oled
+ * display needs at least 128x64/8 bytes (1024 bytes), and this is inacceptable for
+ * microcontrollers like attiny85 (it has only 512B of RAM). So, to workaround
+ * issue with low resources, NanoEngine1 uses small tile buffer (NE_TILE_SIZE x NE_TILE_SIZE)
+ * and updates only part of oled screen at once. It makes system slow, but it is
+ * possible to run NanoEngine1 on simple controllers.
+ * If tile size is 32x32, then 128x64 oled display is devided into 8 tiles: <br>
+ *    [0,0] [1,0] [2,0], [3,0] <br>
+ *    [0,1] [1,1] [2,1], [3,1] <br>
+ * In your application you can choose, if you want to refresh whole screen (refresh()), or you
+ * need to refresh only part of oled display.
+ *
+ * @warning Works only in SSD1306 compatible mode
+ */
+#define NanoEngine1   NanoEngine<TILE_16x16_MONO>
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+#define NanoEngineArduboy   NanoEngine<TILE_8x8_MONO>
+#endif
+
+/**
+ * NanoEngine8 is simple graphics engine, that implements double buffering work
+ * for the systems with very low resources. That is, memory buffer for SSD1331 oled
+ * display needs at least 96x64x1 bytes (6144 bytes), and this is inacceptable for
+ * microcontrollers like atmega328p (it has only 2KiB of RAM). So, to workaround
+ * issue with low resources, NanoEngine8 uses small tile buffer (NE_TILE_SIZE x NE_TILE_SIZE)
+ * and updates only part of oled screen at once. It makes system slow, but it is
+ * possible to run NanoEngine8 on simple controllers.
+ * If tile size is 32x32, then 96x64 oled display is devided into 6 tiles: <br>
+ *    [0,0] [1,0] [2,0] <br>
+ *    [0,1] [1,1] [2,1] <br>
+ * In your application you can choose, if you want to refresh whole screen (refresh()), or you
+ * need to refresh only part of oled display.
+ */
+#define NanoEngine8   NanoEngine<TILE_16x16_RGB8>
+
+/**
+ * NanoEngine1 is simple graphics engine, that implements double buffering work
+ * for the systems with very low resources. That is, memory buffer for SSD1306 oled
+ * display needs at least 128x64/8 bytes (1024 bytes), and this is inacceptable for
+ * microcontrollers like attiny85 (it has only 512B of RAM). So, to workaround
+ * issue with low resources, NanoEngine1 uses small tile buffer (NE_TILE_SIZE x NE_TILE_SIZE)
+ * and updates only part of oled screen at once. It makes system slow, but it is
+ * possible to run NanoEngine1 on simple controllers.
+ * If tile size is 32x32, then 128x64 oled display is devided into 8 tiles: <br>
+ *    [0,0] [1,0] [2,0], [3,0] <br>
+ *    [0,1] [1,1] [2,1], [3,1] <br>
+ * In your application you can choose, if you want to refresh whole screen (refresh()), or you
+ * need to refresh only part of oled display.
+ *
+ * @warning Works only in RGB 8-bit color mode
+ */
+class NanoEngine1_8: public NanoEngine<TILE_8x8_MONO_8>
+{
+public:
+    /**
+     * Creates new Graphics Engine object.
+     */
+    NanoEngine1_8(): NanoEngine() {};
+};
+
+/**
+ * NanoEngine16 is simple graphics engine, that implements double buffering work
+ * for the systems with very low resources. That is, memory buffer for SSD1351 oled
+ * display needs at least 128x128x2 bytes (32768 bytes), and this is inacceptable for
+ * microcontrollers like atmega328p (it has only 2KiB of RAM). So, to workaround
+ * issue with low resources, NanoEngine16 uses small tile buffer (NE_TILE_SIZE x NE_TILE_SIZE)
+ * and updates only part of oled screen at once. It makes system slow, but it is
+ * possible to run NanoEngine16 on simple controllers.
+ * If tile size is 16x16, then 128x128 oled display is devided into 64 tiles: <br>
+ *    [0,0] [1,0] [2,0] [3,0] [4,0] [5,0] [6,0] [7,0] <br>
+ *    [0,1] [1,1] [2,1] [3,1] [4,1] [5,1] [6,1] [7,1] <br>
+ *    etc. <br>
+ * In your application you can choose, if you want to refresh whole screen (refresh()), or you
+ * need to refresh only part of oled display.
+ */
+#define NanoEngine16  NanoEngine<TILE_8x8_RGB16>
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/README.md b/lib/libssd1306/src/nano_engine/README.md
new file mode 100644
index 0000000..2d0d0c1
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/README.md
@@ -0,0 +1,299 @@
+# Using NanoEngine for systems with low resources
+
+***
+
+[tocstart]: # (toc start)
+
+  * [Introduction](#introduction)
+  * [Main idea of NanoEngine](#main-idea-of-nanoengine)
+  * [Simple NanoEngine demo](#simple-nanoengine-demo)
+  * [Reading keys with NanoEngine](#reading-keys-with-nanoengine)
+  * [Draw monochrome bitmap](#draw-monochrome-bitmap)
+  * [Draw moving bitmap](#draw-moving-bitmap)
+  * [What if not to use draw callbacks](#what-if-not-to-use-draw-callbacks)
+  * [Using Adafruit GFX with NanoEngine](#using-adafruit-gfx-with-nanoengine)
+  * [To upper level](@ref index)
+
+[tocend]: # (toc end)
+
+<a name="introduction"></a>
+## Introduction
+
+Many applications use double-buffered output to physical display to avoid flickering effect, when a user observed non-completed picture for a short time. When working with color OLED/LCD displays like ssd1331, some micro-controllers do not have enough RAM to fit display buffer in. For example, in 8-bit mode ssd1331 OLED display needs 6144 bytes (`96*64`). But simple micro-controller like Atmega328 has only 2KiB, and Attiny85 has only 512B of RAM. But with ssd1306 library you still can create applications for those ones with good graphics.
+ssd1306 library represents NanoEngine8, intended to be used with color OLED displays. Digit 8 means that engine implements 8-bit color mode. Refer to arkanoid8 as example, which can be run even on small Attiny85 with color ssd1331 display. The system supports NanoEngine1 for monochrome OLED displays, NanoEngine8 for 8-bit RGB OLED displays, NanoEngine16 for 16-bit RGB OLED displays.
+
+<a name="main-idea-of-nanoengine"></a>
+## Main idea of NanoEngine
+
+There are 2 issues with tiny controllers:
+  * they have a little RAM
+  * they support low frequencies
+
+The first problem is solved in NanoEngine by using double-buffer to redraw only part of display content at once. By default NanoEngine uses 8x8 small buffer (64 bytes) and 24 bytes to store information on areas, which need to be refreshed.
+The second problem is solved almost the same way: refresh only those part of display content, which were changed since last frame update. For example, ssd1331 oled display work on SPI at 8MHz frequency, that means in ideal conditions the screen content can be refreshed 162 times per second (`8000000/(96*64*8)`). But with the data, you need to send also commands to the display and to do some other stuff. And real tests with Atmega328p show that `ssd1306_clearScreen()` can run only at 58 FPS, coping data from buffer to OLED memory runs slower. 
+There is no such issue for Arduboy, since it uses monochrome OLED ssd1306 with only 1KiB of RAM buffer, and theoretical fps can be up to 976. For color display and small controllers the main solution is to refresh only part of display content. Arkanoid8 can give easily 60 fps with NanoEngine8
+
+<a name="simple-nanoengine-demo"></a>
+## Simple NanoEngine demo
+
+```cpp
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+NanoEngine8 engine;
+
+bool drawAll()
+{
+    engine.canvas.clear();
+    engine.canvas.setColor(RGB_COLOR8(255,255,0));
+    engine.canvas.drawRect(15,12,70,55);
+    return true;   // if to return false, the engine will skip this part of screen update
+}
+
+void setup()
+{
+    /* Init SPI 96x64 RBG oled. 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C */
+    ssd1331_96x64_spi_init(3, 4, 5);
+
+    engine.begin();
+    engine.setFrameRate(30);
+    /* Set callback to draw parts, when NanoEngine8 asks */
+    engine.drawCallback( drawAll );
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    engine.refresh();  // Makes engine to refresh whole display content
+    engine.display();
+}
+```
+
+<a name="reading-keys-with-nanoengine"></a>
+## Reading keys with NanoEngine
+
+What, if we want to move yellow rectangle. There is easy way to do this with NanoEngine8. The engine supports up-to 6 keys: `BUTTON_DOWN`, `BUTTON_LEFT`, `BUTTON_RIGHT`, `BUTTON_UP`, `BUTTON_A`, `BUTTON_B`. All you need is to say the engine how it can get buttons state on your board. There are already 2 built-in implementations: `connectArduboyKeys()` allows using Arduboy platform hardware (remember that you need to replace ssd1306 oled with color ssd1331 oled), and `connectZKeypad()` allows using standard 5-keys Z-keypad (you can find it on E-bay). Or you can set custom key processing handler via `connectCustomKeys()` and implement your own hardware driver.
+
+Example of using Z-keypad to move rectangle.
+```cpp
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+NanoEngine8 engine;
+
+NanoRect rect = { {15,12}, {60,35} }; // Lets make rect smaller than in previous example
+
+bool drawAll()
+{
+    engine.canvas.clear();
+    engine.canvas.setColor(RGB_COLOR8(255,255,0));
+    engine.canvas.drawRect(rect);   // draw rect in buffer
+    return true;
+}
+
+void setup()
+{
+    /* Init SPI 96x64 RBG oled. 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C */
+    ssd1331_96x64_spi_init(3, 4, 5);
+
+    engine.begin();
+    engine.setFrameRate(30);
+    engine.drawCallback( drawAll );  // Set callback to draw parts, when NanoEngine8 asks
+    engine.connectZKeypad(0);        // Connect ADC-buttons Z-keypad to analog A0 pin
+    engine.refresh();                // Makes engine to refresh whole display content at start-up
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    NanoPoint point = {0,0};
+    if (engine.pressed( BUTTON_RIGHT )) point.x = +1;
+    if (engine.pressed( BUTTON_LEFT ))  point.x = -1;
+    if (engine.pressed( BUTTON_UP ))    point.y = -1;
+    if (engine.pressed( BUTTON_DOWN ))  point.y = +1;
+    engine.refresh(rect);            // Update screen content at old rect position
+    rect += point;                   // Move rect according to pressed keys
+    engine.refresh(rect);            // Update screen content at new rect position
+    engine.display();                // refresh display content
+}
+```
+
+<a name="draw-monochrome-bitmap"></a>
+## Draw monochrome bitmap
+
+```cpp
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+NanoEngine8 engine;
+
+const uint8_t heartSprite[8] PROGMEM =
+{
+    0B00001110,
+    0B00011111,
+    0B00111111,
+    0B01111110,
+    0B01111110,
+    0B00111101,
+    0B00011001,
+    0B00001110
+};
+
+bool drawAll()
+{
+    engine.canvas.clear();
+    engine.canvas.setMode(0);  // We want to draw non-transparent bitmap
+    engine.canvas.setColor(RGB_COLOR8(255,0,0));  // draw with red color
+    engine.canvas.drawBitmap1(10, 20, 8, 8, heartSprite);
+    return true;
+}
+
+void setup()
+{
+    /* Init SPI 96x64 RBG oled. 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C */
+    ssd1331_96x64_spi_init(3, 4, 5);
+    engine.begin();
+    engine.drawCallback( drawAll );  // Set callback to draw parts, when NanoEngine8 asks
+    engine.refresh();                // Makes engine to refresh whole display content at start-up
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    engine.display();                // refresh display content
+}
+```
+
+<a name="draw-moving-bitmap"></a>
+## Draw moving bitmap
+
+In some applications like games, there is need to move bitmaps. It is easy to do this with ssd1306 library using NanoSprite objects. NanoSprite object is responsible for refreshing areas, touched by sprite. So, you need only to move sprite, where you want, the engine will take care of updating display content.
+
+```cpp
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+const uint8_t heartSprite[8] PROGMEM =
+{
+    0B00001110,
+    0B00011111,
+    0B00111111,
+    0B01111110,
+    0B01111110,
+    0B00111101,
+    0B00011001,
+    0B00001110
+};
+
+NanoEngine8 engine;
+NanoSprite<NanoEngine8, engine> sprite( {0, 0}, {8, 8}, heartSprite );
+
+bool drawAll()
+{
+    engine.canvas.clear();
+    engine.canvas.setMode(0);  // We want to draw non-transparent bitmap
+    engine.canvas.setColor(RGB_COLOR8(255,0,0));  // draw with red color
+    sprite.draw();
+    return true;
+}
+
+void setup()
+{
+    /* Init SPI 96x64 RBG oled. 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C */
+    ssd1331_96x64_spi_init(3, 4, 5);
+    engine.begin();
+    engine.drawCallback( drawAll );  // Set callback to draw parts, when NanoEngine8 asks
+    engine.refresh();                // Makes engine to refresh whole display content at start-up
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    // You will see horizontal flying heart
+    sprite.moveBy( { 1, 0 } );
+    engine.display();                // refresh display content
+}
+```
+
+<a name="what-if-not-to-use-draw-callbacks"></a>
+## What if not to use draw callbacks
+
+If you don't want to use draw callbacks in your application, but still need a power of NanoEngine, then there is one way for you: to use full-screen double-buffering with NanoEngine. The example, you will find below, shows how to use full-screen double buffering for monochrome 128x64 ssd1306 oled display. This example can be run on Atmega328p and more powerful micro controllers. It clears back-buffer every time engine says to redraw the frame. But you can preserve previously prepared image by removing call to `engine.canvas.clear()`.
+
+```cpp
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+NanoEngine<BUFFER_128x64_MONO> engine;
+
+void setup()
+{
+    // Init SPI 128x64 monochrome oled.
+    // 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C
+    ssd1306_128x64_spi_init(3, 4, 5);
+
+    engine.begin();
+    engine.setFrameRate(30);
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    engine.canvas.clear();    // This step can be removed, if you don't want to clear buffer
+    engine.canvas.drawRect(15,12,70,55);
+    engine.display();
+}
+```
+
+<a name="using-adafruit-gfx-with-nanoengine"></a>
+## Using Adafruit GFX with NanoEngine
+
+Many developers are familiar with nice AdafruitGFX library. It provides rich set of graphics functions. Starting with 1.7.0 ssd1306 library it is possible to use AdafruiGFX api in combination with NanoEngine. And it is really easy.
+You need to remember only, that AdafruitGFX uses different approach, when working with rectangles and monochrome images. NanoCanvas expects monochrome bitmaps in native ssd1306 format, while Adafruit uses more native format for human. If you compare an example below with examples above you will understand, what's the difference (heartImage). Refer to AdafruitGFX documentation.
+
+```cpp
+// Define this before including library header, this will give Adafruit GFX support
+// !!! Don't forget to install AdafruitGFX library to your Arduino IDE !!!
+#define CONFIG_ADAFRUIT_GFX_ENABLE
+
+#include "ssd1306.h"
+#include "nano_engine.h"
+
+// Now you can use AdafruitGFX by referencing engine.canvas
+NanoEngine<ADATILE_8x8_RGB8> engine;
+
+const PROGMEM uint8_t heartImage[8] =
+{
+    0B01100110,
+    0B11111001,
+    0B11111101,
+    0B11111111,
+    0B01111110,
+    0B00111100,
+    0B00011000,
+    0B00000000
+};
+
+bool drawAll()
+{
+    engine.canvas.fillScreen( 0 );
+    engine.canvas.drawBitmap(10, 20, heartSprite, 8, 8, RGB_COLOR8(255,0,0)); // draw bitmap with red color
+    return true;
+}
+
+void setup()
+{
+    /* Init SPI 96x64 RBG oled. 3 - RESET, 4 - CS (can be omitted, oled CS must be pulled down), 5 - D/C */
+    ssd1331_96x64_spi_init(3, 4, 5);
+    engine.begin();
+    engine.drawCallback( drawAll );  // Set callback to draw parts, when NanoEngine8 asks
+    engine.refresh();                // Makes engine to refresh whole display content at start-up
+}
+
+void loop()
+{
+    if (!engine.nextFrame()) return;
+    engine.display();                // refresh display content
+}
+```
+
diff --git a/lib/libssd1306/src/nano_engine/adafruit.h b/lib/libssd1306/src/nano_engine/adafruit.h
new file mode 100644
index 0000000..bf799e1
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/adafruit.h
@@ -0,0 +1,335 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file adafruit.h Adafruit related canvas implementation
+ *
+ * @brief Canvas implementation, based on Adafruit GFX.
+ *
+ * @details If you like canvas implementation by Adafruit, you can easily use it with
+ *          ssd1306 library, including NanoEngine support. You will be able to use
+ *          all features of AdafruitGFX, and output result to any OLED display, supported
+ *          by ssd1306 library. If you want to use this feature, define CONFIG_ADAFRUIT_GFX_ENABLE
+ *          in the beginning of your sketch, and include "nano_engine.h" header.
+ */
+#ifndef _SSD1306_ADAFRUIT_H_
+#define _SSD1306_ADAFRUIT_H_
+
+#include "ssd1306_hal/io.h"
+
+#if defined(CONFIG_ADAFRUIT_GFX_ENABLE)
+
+#include "ssd1306.h"
+#include "ssd1306_hal/Print_internal.h"
+#include "nano_gfx_types.h"
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/* This is special case for non-Arduino platforms, since Adafruit requires *
+ * Arduino libraries support                                               */
+#ifndef ARDUINO
+#define ARDUINO 100
+#include "Adafruit_GFX.h"
+#undef ARDUINO
+#else
+#include "Adafruit_GFX.h"
+#endif
+
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/**
+ * This is basic template class for all canvas classes,
+ * based on Adafruit_GFX. This base class provides functionality
+ * compatible with native NanoCanvas implementation of ssd1306
+ * library
+ */
+template <uint8_t BPP>
+class AdafruitCanvasOps: public Adafruit_GFX
+{
+public:
+    /** Fixed offset for all operation of NanoCanvasOps in pixels. */
+    NanoPoint offset;
+
+    /** number of bits per single pixel in buffer */
+    static const uint8_t BITS_PER_PIXEL = BPP;
+
+    /**
+     * Initializes canvas, based on Adafruit GFX.
+     * @param w width of canvas
+     * @param h height of canvas area
+     * @param buffer buffer to use for pixels
+     *
+     * @note the size of buffer must be enough to store (w*h*bpp/8) bytes.
+     */
+    AdafruitCanvasOps(lcduint_t w, lcduint_t h, uint8_t *buffer)
+        : Adafruit_GFX(w, h)
+        , offset{0}
+        , m_buffer(buffer)
+    {
+    }
+
+    /**
+     * draw single pixel in canvas area
+     *
+     * @param x x position
+     * @param y y position
+     * @param color color of pixel: for monochrome it can be 0 (black),
+     *        1 (white), 2 (invert)
+     */
+    void drawPixel(int16_t x, int16_t y, uint16_t color) override;
+
+    /**
+     * Sets offset
+     * @param ox - X offset in pixels
+     * @param oy - Y offset in pixels
+     */
+    void setOffset(lcdint_t ox, lcdint_t oy) { offset.x = ox; offset.y = oy; };
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+    // We need to override Adafruit GFX implementation of fillScreen, because
+    // NanoEngine uses offsets, when refreshing screen content.
+    void fillScreen(uint16_t color) override
+    {
+        fillRect(offset.x, offset.y, _width, _height, color);
+    }
+#endif
+
+protected:
+
+    /** pixels buffer */
+    uint8_t *m_buffer;
+
+private:
+    inline void rotatePosition(int16_t &x, int16_t &y)
+    {
+        switch (getRotation()) {
+        case 1:
+            ssd1306_swap_data(x, y, int16_t);
+            x = WIDTH - x - 1;
+            break;
+        case 2:
+            x = WIDTH - x - 1;
+            y = HEIGHT - y - 1;
+            break;
+        case 3:
+            ssd1306_swap_data(x, y, int16_t);
+            y = HEIGHT - y - 1;
+            break;
+        }
+
+    }
+};
+
+/**
+ * Base class for all AdafruitCanvas childs
+ */
+template <uint8_t BPP>
+class AdafruitCanvasBase: public AdafruitCanvasOps<BPP>
+{
+public:
+    using AdafruitCanvasOps<BPP>::AdafruitCanvasOps;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in blocks (pixels/8)
+     */
+    virtual void blt(lcdint_t x, lcdint_t y) = 0;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    virtual void blt() = 0;
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             1-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * AdafruitCanvas1 represents objects for drawing in memory buffer
+ * AdafruitCanvas1 represents each pixel as single bit: 0/1
+ * For details refer to SSD1306 datasheet
+ */
+class AdafruitCanvas1 : public AdafruitCanvasBase<1>
+{
+public:
+    using AdafruitCanvasBase::AdafruitCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override
+    {
+        ssd1306_drawBufferFast(x, y, WIDTH, HEIGHT, m_buffer);
+    }
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override
+    {
+        ssd1306_drawBufferFast(offset.x, offset.y, WIDTH, HEIGHT, m_buffer);
+    }
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template <>
+void AdafruitCanvasOps<1>::drawPixel(int16_t x, int16_t y, uint16_t color)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
+    {
+        return;
+    }
+    rotatePosition(x, y);
+
+    switch (color)
+    {
+        case 1:   m_buffer[x+ (y/8)*WIDTH] |=  (1 << (y&7)); break;
+        case 0:   m_buffer[x+ (y/8)*WIDTH] &= ~(1 << (y&7)); break;
+        case 2:   m_buffer[x+ (y/8)*WIDTH] ^=  (1 << (y&7)); break;
+    }
+}
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             8-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * AdafruitCanvas8 represents objects for drawing in memory buffer
+ * AdafruitCanvas8 represents each pixel as single byte with RGB bits: RRRGGGBB
+ * For details refer to SSD1331 datasheet.
+ */
+class AdafruitCanvas8 : public AdafruitCanvasBase<8>
+{
+public:
+    using AdafruitCanvasBase::AdafruitCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override
+    {
+        ssd1306_drawBufferFast8(x, y, WIDTH, HEIGHT, m_buffer);
+    }
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override
+    {
+        ssd1306_drawBufferFast8(offset.x, offset.y, WIDTH, HEIGHT, m_buffer);
+    }
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template <>
+void AdafruitCanvasOps<8>::drawPixel(int16_t x, int16_t y, uint16_t color)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
+    {
+        return;
+    }
+    rotatePosition(x, y);
+
+    m_buffer[x+y*WIDTH] = color;
+}
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             16-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * AdafruitCanvas16 represents objects for drawing in memory buffer
+ * AdafruitCanvas16 represents each pixel as two bytes with RGB bits:
+ * RRRRRGGG GGGBBBBB.
+ * For details refer to SSD1351 datasheet.
+ */
+class AdafruitCanvas16 : public AdafruitCanvasBase<16>
+{
+public:
+    using AdafruitCanvasBase::AdafruitCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override
+    {
+        ssd1306_drawBufferFast16(x, y, WIDTH, HEIGHT, m_buffer);
+    }
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override
+    {
+        ssd1306_drawBufferFast16(offset.x, offset.y, WIDTH, HEIGHT, m_buffer);
+    }
+};
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+template <>
+void AdafruitCanvasOps<16>::drawPixel(int16_t x, int16_t y, uint16_t color)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
+    {
+        return;
+    }
+    rotatePosition(x, y);
+
+    m_buffer[(x+y*WIDTH) * 2 + 0] = color;
+    m_buffer[(x+y*WIDTH) * 2 + 1] = color >> 8;
+}
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/**
+ * @}
+ */
+
+#endif // CONFIG_ADAFRUIT_GFX_ENABLE
+
+#endif
diff --git a/lib/libssd1306/src/nano_engine/canvas.cpp b/lib/libssd1306/src/nano_engine/canvas.cpp
new file mode 100644
index 0000000..c4707d0
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/canvas.cpp
@@ -0,0 +1,1477 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2020, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "canvas.h"
+#include "lcd/lcd_common.h"
+#include "ssd1306.h"
+
+extern const uint8_t *s_font6x8;
+extern "C" SFixedFontInfo s_fixedFont;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+extern "C" uint8_t g_ssd1306_unicode;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                            COMMON GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::putPixel(const NanoPoint &p)
+{
+    putPixel(p.x, p.y);
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::drawRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    drawHLine(x1, y1, x2);
+    drawHLine(x1, y2, x2);
+    drawVLine(x1, y1, y2);
+    drawVLine(x2, y1, y2);
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::drawRect(const NanoRect &rect)
+{
+    drawRect(rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y);
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::drawLine(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    lcduint_t  dx = x1 > x2 ? (x1 - x2): (x2 - x1);
+    lcduint_t  dy = y1 > y2 ? (y1 - y2): (y2 - y1);
+    lcduint_t  err = 0;
+    if (dy > dx)
+    {
+        if (y1 > y2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; y1<=y2; y1++)
+        {
+            err += dx;
+            if (err >= dy)
+            {
+                 err -= dy;
+                 x1 < x2 ? x1++: x1--;
+            }
+            putPixel( x1, y1 );
+        }
+    }
+    else
+    {
+        if (x1 > x2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; x1<=x2; x1++)
+        {
+            err += dy;
+            if (err >= dx)
+            {
+                 err -= dx;
+                 if (y1 < y2) y1++; else y1--;
+            }
+            putPixel( x1, y1 );
+        }
+    }
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::drawLine(const NanoRect &rect)
+{
+    drawLine(rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y);
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::fillRect(const NanoRect &rect)
+{
+    fillRect(rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y);
+}
+
+template <uint8_t BPP>
+uint8_t NanoCanvasOps<BPP>::printChar(uint8_t c)
+{
+    uint16_t unicode = ssd1306_unicode16FromUtf8(c);
+    if (unicode == SSD1306_MORE_CHARS_REQUIRED) return 0;
+    SCharInfo char_info;
+    ssd1306_getCharBitmap(unicode, &char_info);
+    uint8_t mode = m_textMode;
+    for (uint8_t i = 0; i<(m_fontStyle == STYLE_BOLD ? 2: 1); i++)
+    {
+        drawBitmap1(m_cursorX + i,
+                    m_cursorY,
+                    char_info.width,
+                    char_info.height,
+                    char_info.glyph );
+        m_textMode |= CANVAS_MODE_TRANSPARENT;
+    }
+    m_textMode = mode;
+    m_cursorX += (lcdint_t)(char_info.width + char_info.spacing);
+    if ( ( (m_textMode & CANVAS_TEXT_WRAP_LOCAL) && (m_cursorX > ((lcdint_t)m_w - (lcdint_t)s_fixedFont.h.width) ) )
+       || ( (m_textMode & CANVAS_TEXT_WRAP) && (m_cursorX > ((lcdint_t)ssd1306_lcd.width - (lcdint_t)s_fixedFont.h.width)) ) )
+    {
+        m_cursorY += (lcdint_t)s_fixedFont.h.height;
+        m_cursorX = 0;
+        if ( (m_textMode & CANVAS_TEXT_WRAP_LOCAL) && (m_cursorY > ((lcdint_t)m_h - (lcdint_t)s_fixedFont.h.height)) )
+        {
+            m_cursorY = 0;
+        }
+    }
+    return 1;
+}
+
+template <uint8_t BPP>
+size_t NanoCanvasOps<BPP>::write(uint8_t c)
+{
+    if (c == '\n')
+    {
+        m_cursorY += (lcdint_t)s_fixedFont.h.height;
+        m_cursorX = 0;
+    }
+    else if (c == '\r')
+    {
+        // skip non-printed char
+    }
+    else
+    {
+        return printChar( c );
+    }
+    return 1;
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::printFixed(lcdint_t xpos, lcdint_t y, const char *ch, EFontStyle style)
+{
+    m_fontStyle = style;
+    m_cursorX = xpos;
+    m_cursorY = y;
+    while (*ch)
+    {
+        write(*ch);
+        ch++;
+    }
+}
+
+template <uint8_t BPP>
+void NanoCanvasOps<BPP>::printFixedPgm(lcdint_t xpos, lcdint_t y, const char *ch, EFontStyle style)
+{
+    m_fontStyle = style;
+    m_cursorX = xpos;
+    m_cursorY = y;
+    for (;;)
+    {
+        char c = pgm_read_byte(ch);
+        if (!c) break;
+        write(c);
+        ch++;
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             1-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+#ifdef CONFIG_MULTIPLICATION_NOT_SUPPORTED
+#define YADDR1(y) (static_cast<uint16_t>((y) >> 3) << m_p)
+#define BANK_ADDR1(b) ((b) << m_p)
+#else
+#define YADDR1(y) (static_cast<uint16_t>((y) >> 3) * m_w)
+#define BANK_ADDR1(b) ((b) * m_w)
+#endif
+
+template <>
+void NanoCanvasOps<1>::putPixel(lcdint_t x, lcdint_t y)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x<0) || (y<0)) return;
+    if (( x >= (lcdint_t)m_w ) || ( y >= (lcdint_t)m_h)) return;
+    if (m_color)
+    {
+        m_buf[YADDR1(y) + x] |= (1 << (y & 0x7));
+    }
+    else
+    {
+        m_buf[YADDR1(y) + x] &= ~(1 << (y & 0x7));
+    }
+}
+
+template <>
+void NanoCanvasOps<1>::drawHLine(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    if (x2 < x1) ssd1306_swap_data(x2, x1, lcdint_t);
+    x1 -= offset.x;
+    x2 -= offset.x;
+    y1 -= offset.y;
+    if ((y1 >= (lcdint_t)m_h) || (y1 < 0)) return;
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    x1 = max(0, x1);
+    x2 = min(x2, (lcdint_t)(m_w -1));
+    uint16_t addr = YADDR1(y1) + x1;
+    uint8_t mask = (1 << (y1 & 0x7));
+    if (m_color)
+    {
+        do { m_buf[addr++] |= mask; } while (x2>x1++);
+    }
+    else
+    {
+        do { m_buf[addr++] &= ~mask; } while (x2>x1++);
+    }
+}
+
+template <>
+void NanoCanvasOps<1>::drawVLine(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    if (y2 < y1) ssd1306_swap_data(y2, y1, lcdint_t);
+    x1 -= offset.x;
+    y1 -= offset.y;
+    y2 -= offset.y;
+    if ((x1 >= (lcdint_t)m_w) || (x1 < 0)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    y1 = max(0, y1);
+    y2 = min(y2, (lcdint_t)(m_h -1));
+
+    uint16_t addr = YADDR1(y1) + x1;
+    if ((y1 & 0xFFF8) == (y2 & 0xFFF8))
+    {
+        uint8_t mask = ((0xFF >> (0x07 + y1 - y2)) << (y1 & 0x07));
+        if (m_color)
+            m_buf[addr] |= mask;
+        else
+            m_buf[addr] &= ~mask;
+        return;
+    }
+    if (m_color)
+    {
+        m_buf[addr] |= (0xFF << (y1 & 0x07));
+        addr += m_w;
+        while (addr<YADDR1(y2) + x1)
+        {
+            m_buf[addr] |= 0xFF;
+            addr += m_w;
+        }
+        m_buf[addr] |= (0xFF >> (0x07 - (y2 & 0x07)));
+    }
+    else
+    {
+        m_buf[addr] &= ~(0xFF << (y1 & 0x07));
+        addr += m_w;
+        while (addr<YADDR1(y2) + x1)
+        {
+            m_buf[addr] &= 0;
+            addr += m_w;
+        }
+        m_buf[addr] &= ~(0xFF >> (0x07 - (y2 & 0x07)));
+    }
+}
+
+template <>
+void NanoCanvasOps<1>::fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (x2 < x1) ssd1306_swap_data(x2, x1, lcdint_t);
+    if (y2 < y1) ssd1306_swap_data(y2, y1, lcdint_t);
+    x1 -= offset.x;
+    x2 -= offset.x;
+    y1 -= offset.y;
+    y2 -= offset.y;
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(0, x1);
+    x2 = min(x2, (lcdint_t)(m_w - 1));
+    y1 = max(0, y1);
+    y2 = min(y2, (lcdint_t)(m_h - 1));
+    uint8_t bank1 = (y1 >> 3);
+    uint8_t bank2 = (y2 >> 3);
+    for (uint8_t bank = bank1; bank<=bank2; bank++)
+    {
+        uint8_t mask = 0xFF;
+        if (bank1 == bank2)
+        {
+            mask = (mask >> ((y1 & 7) + 7 - (y2 & 7))) << (y1 & 7);
+        }
+        else if (bank1 == bank)
+        {
+            mask = (mask << (y1 & 7));
+        }
+        else if (bank2 == bank)
+        {
+            mask = (mask >> (7 - (y2 & 7)));
+        }
+        for (uint8_t x=x1; x<=x2; x++)
+        {
+            if (m_color)
+            {
+                m_buf[BANK_ADDR1(bank) + x] |= mask;
+            }
+            else
+            {
+                m_buf[BANK_ADDR1(bank) + x] &= ~mask;
+            }
+        }
+    }
+};
+
+template <>
+void NanoCanvasOps<1>::clear()
+{
+    memset(m_buf, 0, YADDR1(m_h));
+}
+
+// TODO: Not so fast implementation. needs to be optimized
+template <>
+void NanoCanvasOps<1>::drawBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    x -= offset.x;
+    y -= offset.y;
+    lcduint_t origin_width = w;
+    uint8_t offs = y & 0x07;
+    uint8_t complexFlag = 0;
+    uint8_t mainFlag = 1;
+    if (y + (lcdint_t)h <= 0) return;
+    if (y >= (lcdint_t)m_h) return;
+    if ((int16_t)x + (int16_t)w <= 0) return;
+    if ((int16_t)x >= (int16_t)m_w)  return;
+    if (y < 0)
+    {
+         bitmap += ((lcduint_t)((-y) + 7) >> 3) * w;
+         h += y;
+         y = 0;
+         complexFlag = 1;
+    }
+    if (x < 0)
+    {
+         bitmap += -x;
+         w += x;
+         x = 0;
+    }
+    uint8_t max_pages = (lcduint_t)(h + 15 - offs) >> 3;
+    if ((lcduint_t)(y + (lcdint_t)h) > (lcduint_t)m_h)
+    {
+         h = (lcduint_t)(m_h - (lcduint_t)y);
+    }
+    if ((lcduint_t)(x + (lcdint_t)w) > (lcduint_t)m_w)
+    {
+         w = (lcduint_t)(m_w - (lcduint_t)x);
+    }
+    uint8_t pages = ((y + h - 1) >> 3) - (y >> 3) + 1;
+    uint8_t j;
+    lcduint_t i;
+
+    for(j=0; j < pages; j++)
+    {
+        uint16_t addr = YADDR1(y + ((uint16_t)j<<3)) + x;
+        if ( j == max_pages - 1 ) mainFlag = !offs;
+        for( i=w; i > 0; i--)
+        {
+            uint8_t data = 0;
+            uint8_t mask = 0;
+            if ( mainFlag )    { data |= (pgm_read_byte(bitmap) << offs); mask |= (0xFF << offs); }
+            if ( complexFlag ) { data |= (pgm_read_byte(bitmap - origin_width) >> (8 - offs)); mask |= (0xFF >> (8 - offs)); }
+            if (CANVAS_MODE_TRANSPARENT != (m_textMode & CANVAS_MODE_TRANSPARENT))
+            {
+                m_buf[addr] &= ~mask;
+                m_buf[addr] |= m_color == BLACK ? ~data: data;
+            }
+            else
+            {
+                if (m_color == BLACK)
+                    m_buf[addr] &= ~data;
+                else
+                    m_buf[addr] |= data;
+            }
+            bitmap++;
+            addr++;
+        }
+        bitmap += origin_width - w;
+        complexFlag = offs;
+    }
+}
+
+template <>
+void NanoCanvasOps<1>::drawXBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    x -= offset.x;
+    y -= offset.y;
+    lcduint_t origin_width = w;
+    if (y + (lcdint_t)h <= 0) return;
+    if (y >= (lcdint_t)m_h) return;
+    if (x + (lcdint_t)w <= 0) return;
+    if (x >= (lcdint_t)m_w)  return;
+
+    delay(100);
+
+    uint8_t start_bit = 0;
+    lcduint_t pitch_delta = 0;
+    if (y < 0)
+    {
+        bitmap += /*pitch*/((origin_width + 7) >> 3) * (lcduint_t)(-y);
+        h += y;
+        y = 0;
+    }
+    if (x < 0)
+    {
+        bitmap += ((lcduint_t)(-x)) / 8;
+        start_bit = ((lcduint_t)(-x)) & 0x07;
+        w += x;
+        x = 0;
+    }
+    if ((lcduint_t)(y + (lcdint_t)h) > (lcduint_t)m_h)
+    {
+        h = (lcduint_t)(m_h - (lcduint_t)y);
+    }
+    if ((lcduint_t)(x + (lcdint_t)w) > (lcduint_t)m_w)
+    {
+        w = (lcduint_t)(m_w - (lcduint_t)x);
+    }
+    pitch_delta = ((origin_width + 7 - start_bit) >> 3) - ((w + 7) >> 3);
+
+    for(lcduint_t j = 0; j < h; j++)
+    {
+        uint8_t bit = start_bit;
+        for(lcduint_t i = 0; i < w; i++)
+        {
+            uint8_t data = 0;
+            data = (pgm_read_byte(bitmap) >> bit) & 0x01;
+            if (data)
+            {
+                if (m_color == BLACK)
+                    m_buf[YADDR1(y + j) + (x + i)] &= ~(1 << ((y + j) & 0x7));
+                else
+                    m_buf[YADDR1(y + j) + (x + i)] |= (1 << ((y + j) & 0x7));
+            }
+            else if (CANVAS_MODE_TRANSPARENT != (m_textMode & CANVAS_MODE_TRANSPARENT))
+            {
+                if (m_color == BLACK)
+                    m_buf[YADDR1(y + j) + (x + i)] |= (1 << ((y + j) & 0x7));
+                else
+                    m_buf[YADDR1(y + j) + (x + i)] &= ~(1 << ((y + j) & 0x7));
+            }
+            bit++;
+            if (bit >= 8)
+            {
+                bitmap++;
+                bit=0;
+            }
+        }
+        if (bit)
+        {
+            bitmap++;
+        }
+        bitmap += pitch_delta;
+    }
+}
+
+template <>
+void NanoCanvasOps<1>::begin(lcdint_t w, lcdint_t h, uint8_t *bytes)
+{
+    m_w = w;
+    m_h = h;
+    offset.x = 0;
+    offset.y = 0;
+    m_cursorX = 0;
+    m_cursorY = 0;
+    m_color = WHITE;
+    m_textMode = 0;
+    m_p = 3;
+    while (w >> (m_p+1)) { m_p++; };
+    m_buf = bytes;
+    clear();
+}
+
+//                 NANO CANVAS 1
+
+void NanoCanvas1::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawBufferFast(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1::blt()
+{
+    ssd1306_drawBufferFast(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1::blt(const NanoRect &rect)
+{
+    // TODO: NOT IMPLEMENTED
+}
+
+//                 NANO CANVAS 1_8
+
+void NanoCanvas1_8::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawMonoBuffer8(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_8::blt()
+{
+    ssd1306_drawMonoBuffer8(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_8::blt(const NanoRect &rect)
+{
+    // TODO: NOT IMPLEMENTED
+}
+
+//                 NANO CANVAS 1_16
+
+void NanoCanvas1_16::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawMonoBuffer16(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_16::blt()
+{
+    ssd1306_drawMonoBuffer16(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_16::blt(const NanoRect &rect)
+{
+    // TODO: NOT IMPLEMENTED
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                           4-BIT GRAY GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/* We need to use multiply operation, because there are displays on the market *
+ * with resolution different from 2^N (160x128, 96x64, etc.)                   */
+#define YADDR4(y) (static_cast<uint32_t>(y) * m_w / 2)
+#define BITS_SHIFT4(x) ((x & 1) ? 4 : 0)
+
+template <>
+void NanoCanvasOps<4>::putPixel(lcdint_t x, lcdint_t y)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x >= 0) && (y >= 0) && (x < (lcdint_t)m_w) && (y < (lcdint_t)m_h))
+    {
+        m_buf[YADDR4(y) + x / 2] &= ~(0x0F << BITS_SHIFT4(x));
+        m_buf[YADDR4(y) + x / 2] |= (m_color & 0x0F) << BITS_SHIFT4(x);
+    }
+}
+
+template <>
+void NanoCanvasOps<4>::drawVLine(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    y2 -= offset.y;
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if ((x1 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    y1 = max(y1,0);
+    y2 = min(y2,(lcdint_t)m_h-1) - y1;
+    uint8_t *buf = m_buf + YADDR4(y1) + x1 / 2;
+    do
+    {
+        *buf &= ~(0x0F << BITS_SHIFT4(x1));
+        *buf |= ((m_color & 0x0F) << BITS_SHIFT4(x1));
+        buf += m_w / 2;
+    }
+    while (y2--);
+}
+
+template <>
+void NanoCanvasOps<4>::drawHLine(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y1 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    uint8_t *buf = m_buf + YADDR4(y1) + x1 / 2;
+    for (lcdint_t x = x1; x <= x2; x++)
+    {
+        *buf &= ~(0x0F << BITS_SHIFT4(x));
+        *buf |= ((m_color & 0x0F) << BITS_SHIFT4(x));
+        if ( x & 1 )
+        {
+            buf++;
+        }
+    }
+}
+
+template <>
+void NanoCanvasOps<4>::fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    y2 -= offset.y;
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    y1 = max(y1,0);
+    y2 = min(y2,(lcdint_t)m_h-1);
+    uint8_t *buf = m_buf + YADDR4(y1) + x1 / 2;
+    for (lcdint_t y = y1; y <= y2; y++)
+    {
+        for (lcdint_t x = x1; x <= x2; x++)
+        {
+            *buf &= ~(0x0F << BITS_SHIFT4(x));
+            *buf |= ((m_color & 0xF) << BITS_SHIFT4(x));
+            if ( x & 1 )
+            {
+                buf++;
+            }
+        }
+        buf += ((lcdint_t)(m_w) - (x2 - x1 + ((x2 - x1) & 0x1))) / 2;
+    }
+}
+
+template <>
+void NanoCanvasOps<4>::drawBitmap1(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    lcdint_t xb1 = 0;
+    lcdint_t yb1 = 0;
+    lcdint_t xb2 = (lcdint_t)w - 1;
+    lcdint_t yb2 = (lcdint_t)h - 1;
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + xb2;
+    lcdint_t y2 = y1 + yb2;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        xb1 -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        yb1 -= y1;
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         // yb2 -= (y2 - (lcdint_t)m_h + 1);
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         // xb2 -= (x2 - (lcdint_t)m_w + 1);
+         x2 = (lcdint_t)m_w - 1;
+    }
+    for ( lcdint_t y = y1; y <= y2; y++ )
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint16_t src_addr1 = xb1 + x - x1 + ((yb1 + y - y1) / 8) * w;
+            uint8_t src_bit1 = (yb1 + y - y1) & 0x07;
+            uint8_t data = pgm_read_byte( &bitmap[ src_addr1 ] );
+            uint16_t addr = YADDR4(y) + x / 2;
+            if (data & (1 << src_bit1))
+            {
+                data = m_color & 0x0F;
+                m_buf[ addr ] &= ~(0x0F << BITS_SHIFT4(x));
+                m_buf[ addr ] |= data << BITS_SHIFT4(x);
+            }
+            else if (!(m_textMode & CANVAS_MODE_TRANSPARENT))
+            {
+                data = 0x00;
+                m_buf[ addr ] &= ~(0x0F << BITS_SHIFT4(x));
+            }
+        }
+    }
+}
+
+template <>
+void NanoCanvasOps<4>::drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    lcdint_t xb1 = 0;
+    lcdint_t yb1 = 0;
+    lcdint_t xb2 = (lcdint_t)w - 1;
+    lcdint_t yb2 = (lcdint_t)h - 1;
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + xb2;
+    lcdint_t y2 = y1 + yb2;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        xb1 -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        yb1 -= y1;
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         //yb2 -= (y2 - (lcdint_t)m_h + 1);
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         //xb2 -= (x2 - (lcdint_t)m_w + 1);
+         x2 = (lcdint_t)m_w - 1;
+    }
+    for ( lcdint_t y = y1; y <= y2; y++ )
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint16_t src_addr8 = xb1 + x - x1 + ((yb1 + y - y1)) * w;
+            uint8_t data = pgm_read_byte( &bitmap[ src_addr8 ] );
+            uint16_t addr = YADDR4(y) + x / 2;
+            if ( (data) || (!(m_textMode & CANVAS_MODE_TRANSPARENT)) )
+            {
+                data = RGB8_TO_GRAY4(data);
+                m_buf[ addr ] &= ~(0x0F << BITS_SHIFT4(x));
+                m_buf[ addr ] |= (data & 0x0F) << BITS_SHIFT4(x);
+            }
+        }
+    }
+}
+
+template <>
+void NanoCanvasOps<4>::clear()
+{
+    memset(m_buf, 0, YADDR4(m_h));
+}
+
+/* This method must be implemented always after clear() */
+template <>
+void NanoCanvasOps<4>::begin(lcdint_t w, lcdint_t h, uint8_t *bytes)
+{
+    m_w = w;
+    m_h = h;
+    offset.x = 0;
+    offset.y = 0;
+    m_cursorX = 0;
+    m_cursorY = 0;
+    m_color = 0xFF; // white color by default
+    m_textMode = 0;
+    m_buf = bytes;
+    clear();
+}
+
+//                 NANO CANVAS 1_8
+
+void NanoCanvas1_4::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawBuffer1_4(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_4::blt()
+{
+    ssd1306_drawBuffer1_4(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas1_4::blt(const NanoRect &rect)
+{
+    // TODO: NOT IMPLEMENTED
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             8-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/* We need to use multiply operation, because there are displays on the market *
+ * with resolution different from 2^N (160x128, 96x64, etc.)                   */
+#define YADDR8(y) (static_cast<uint32_t>(y) * m_w)
+
+template <>
+void NanoCanvasOps<8>::putPixel(lcdint_t x, lcdint_t y)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x >= 0) && (y >= 0) && (x < (lcdint_t)m_w) && (y < (lcdint_t)m_h))
+    {
+        m_buf[YADDR8(y) + x] = m_color;
+    }
+}
+
+template <>
+void NanoCanvasOps<8>::drawVLine(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    y2 -= offset.y;
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if ((x1 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    y1 = max(y1,0);
+    uint8_t *buf = m_buf + YADDR8(y1) + x1;
+    y2 = min(y2,(lcdint_t)m_h-1) - y1;
+    do
+    {
+        *buf = m_color;
+        buf += m_w;
+    }
+    while (y2--);
+}
+
+template <>
+void NanoCanvasOps<8>::drawHLine(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y1 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    uint8_t *buf = m_buf + YADDR8(y1) + x1;
+    for (lcdint_t x = 0; x <= x2 - x1; x++)
+    {
+        *buf = m_color;
+        buf++;
+    }
+}
+
+template <>
+void NanoCanvasOps<8>::fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    y2 -= offset.y;
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    y1 = max(y1,0);
+    y2 = min(y2,(lcdint_t)m_h-1);
+    uint8_t *buf = m_buf + YADDR8(y1) + x1;
+    for (lcdint_t y = y1; y <= y2; y++)
+    {
+        for (lcdint_t x = x1; x <= x2; x++)
+        {
+            *buf = m_color;
+            buf++;
+        }
+        buf += ((lcdint_t)(m_w) - (x2 - x1 + 1));
+    }
+}
+
+template <>
+void NanoCanvasOps<8>::drawBitmap1(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t offs = 0;
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + (lcdint_t)w - 1;
+    lcdint_t y2 = y1 + (lcdint_t)h - 1;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        bitmap -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        bitmap += ((lcduint_t)(-y1) >> 3) * w;
+        offs = ((-y1) & 0x07);
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         x2 = (lcdint_t)m_w - 1;
+    }
+    uint8_t offs2 = 8 - offs;
+    lcdint_t y = y1;
+    while ( y <= y2)
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            uint16_t addr = YADDR8(y) + x;
+            for (uint8_t n = 0; n < min(y2 - y + 1, 8); n++)
+            {
+                if ( data & (1<<(n + offs)) )
+                    m_buf[addr] = m_color;
+                else if (!(m_textMode & CANVAS_MODE_TRANSPARENT))
+                    m_buf[addr] = 0x00;
+                addr += (lcduint_t)m_w;
+            }
+            bitmap++;
+        }
+        bitmap += (w - (x2 - x1 + 1));
+        y = y + offs2;
+        offs = 0;
+        offs2 = 8;
+    }
+}
+
+template <>
+void NanoCanvasOps<8>::drawXBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    x -= offset.x;
+    y -= offset.y;
+    lcduint_t origin_width = w;
+    if (y + (lcdint_t)h <= 0) return;
+    if (y >= (lcdint_t)m_h) return;
+    if (x + (lcdint_t)w <= 0) return;
+    if (x >= (lcdint_t)m_w)  return;
+
+    uint8_t start_bit = 0;
+    lcduint_t pitch_delta = 0;
+    if (y < 0)
+    {
+        bitmap += /*pitch*/((origin_width + 7) >> 3) * (lcduint_t)(-y);
+        h += y;
+        y = 0;
+    }
+    if (x < 0)
+    {
+        bitmap += ((lcduint_t)(-x)) / 8;
+        start_bit = ((lcduint_t)(-x)) & 0x07;
+        w += x;
+        x = 0;
+    }
+    if ((lcduint_t)(y + (lcdint_t)h) > (lcduint_t)m_h)
+    {
+        h = (lcduint_t)(m_h - (lcduint_t)y);
+    }
+    if ((lcduint_t)(x + (lcdint_t)w) > (lcduint_t)m_w)
+    {
+        w = (lcduint_t)(m_w - (lcduint_t)x);
+    }
+    pitch_delta = ((origin_width + 7 - start_bit) >> 3) - ((w + 7) >> 3);
+
+    for(lcduint_t j = 0; j < h; j++)
+    {
+        uint8_t bit = start_bit;
+        for(lcduint_t i = 0; i < w; i++)
+        {
+            uint8_t data = 0;
+            data = (pgm_read_byte(bitmap) >> bit) & 0x01;
+            if (data)
+            {
+                m_buf[YADDR8(y + j) + (x + i)] = m_color;
+            }
+            else if (CANVAS_MODE_TRANSPARENT != (m_textMode & CANVAS_MODE_TRANSPARENT))
+            {
+                m_buf[YADDR8(y + j) + (x + i)] = 0x00;
+            }
+            bit++;
+            if (bit >= 8)
+            {
+                bitmap++;
+                bit=0;
+            }
+        }
+        if (bit)
+        {
+            bitmap++;
+        }
+        bitmap += pitch_delta;
+    }
+}
+
+template <>
+void NanoCanvasOps<8>::drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + (lcdint_t)w - 1;
+    lcdint_t y2 = y1 + (lcdint_t)h - 1;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        bitmap -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        bitmap += (lcduint_t)(-y1) * w;
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         x2 = (lcdint_t)m_w - 1;
+    }
+    lcdint_t y = y1;
+    while ( y <= y2 )
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            if ( (data) || (!(m_textMode & CANVAS_MODE_TRANSPARENT)) )
+            {
+                m_buf[YADDR8(y) + x] = data;
+            }
+            bitmap++;
+        }
+        bitmap += (w - (x2 - x1 + 1));
+        y++;
+    }
+}
+
+template <>
+void NanoCanvasOps<8u>::clear()
+{
+    memset(m_buf, 0, YADDR8(m_h));
+}
+
+/* This method must be implemented always after clear() */
+template <>
+void NanoCanvasOps<8>::begin(lcdint_t w, lcdint_t h, uint8_t *bytes)
+{
+    m_w = w;
+    m_h = h;
+    offset.x = 0;
+    offset.y = 0;
+    m_cursorX = 0;
+    m_cursorY = 0;
+    m_color = 0xFF; // white color by default
+    m_textMode = 0;
+    m_p = 3;
+    while (w >> (m_p+1)) { m_p++; };
+    m_buf = bytes;
+    clear();
+}
+
+//                NANO CANVAS 8
+
+void NanoCanvas8::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawBufferFast8(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas8::blt()
+{
+    ssd1306_drawBufferFast8(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas8::blt(const NanoRect &rect)
+{
+    ssd1306_drawBufferEx8(offset.x + rect.p1.x,
+                          offset.y + rect.p1.y,
+                          rect.width(),
+                          rect.height(),
+                          m_w,
+                          m_buf + rect.p1.x + rect.p1.y * m_w );
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             16-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/* We need to use multiply operation, because there are displays on the market *
+ * with resolution different from 2^N (160x128, 96x64, etc.)                   */
+#define YADDR16(y) (static_cast<uint32_t>(y) * (m_w << 1))
+
+template <>
+void NanoCanvasOps<16>::putPixel(lcdint_t x, lcdint_t y)
+{
+    x -= offset.x;
+    y -= offset.y;
+    if ((x >= 0) && (y >= 0) && (x < (lcdint_t)m_w) && (y < (lcdint_t)m_h))
+    {
+        m_buf[YADDR16(y) + (x<<1)] = m_color >> 8;
+        m_buf[YADDR16(y) + (x<<1) + 1] = m_color & 0xFF;
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::drawVLine(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    y2 -= offset.y;
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if ((x1 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    y1 = max(y1,0);
+    uint8_t *buf = m_buf + YADDR16(y1) + (x1 << 1);
+    y2 = min(y2,(lcdint_t)m_h-1) - y1;
+    do
+    {
+        buf[0] = m_color >> 8;
+        buf[1] = m_color & 0xFF;
+        buf += (m_w<<1);
+    }
+    while (y2--);
+}
+
+template <>
+void NanoCanvasOps<16>::drawHLine(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y1 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    uint8_t *buf = m_buf + YADDR16(y1) + (x1<<1);
+    for (lcdint_t x = 0; x <= x2 - x1; x++)
+    {
+        buf[0] = m_color >> 8;
+        buf[1] = m_color & 0xFF;
+        buf+=2;
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    x1 -= offset.x;
+    y1 -= offset.y;
+    x2 -= offset.x;
+    y2 -= offset.y;
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+    x1 = max(x1,0);
+    x2 = min(x2,(lcdint_t)m_w-1);
+    y1 = max(y1,0);
+    y2 = min(y2,(lcdint_t)m_h-1);
+    uint8_t *buf = m_buf + YADDR16(y1) + (x1<<1);
+    for (lcdint_t y = y1; y <= y2; y++)
+    {
+        for (lcdint_t x = x1; x <= x2; x++)
+        {
+            buf[0] = m_color >> 8;
+            buf[1] = m_color & 0xFF;
+            buf+=2;
+        }
+        buf += ( ((lcdint_t)(m_w) - (x2 - x1 + 1)) <<1 );
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::drawBitmap1(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t offs = 0;
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + (lcdint_t)w - 1;
+    lcdint_t y2 = y1 + (lcdint_t)h - 1;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        bitmap -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        bitmap += ((lcduint_t)(-y1) >> 3) * w;
+        offs = ((-y1) & 0x07);
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         x2 = (lcdint_t)m_w - 1;
+    }
+    uint8_t offs2 = 8 - offs;
+    lcdint_t y = y1;
+    while ( y <= y2)
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            uint16_t addr = YADDR16(y) + (x<<1);
+            for (uint8_t n = 0; n < min(y2 - y + 1, 8); n++)
+            {
+                if ( data & (1<<(n + offs)) )
+                {
+                    m_buf[addr] = m_color >> 8;
+                    m_buf[addr+1] = m_color & 0xFF;
+                }
+                else if (!(m_textMode & CANVAS_MODE_TRANSPARENT))
+                {
+                    m_buf[addr] = 0x00;
+                    m_buf[addr+1] = 0x00;
+                }
+                addr += ((lcduint_t)m_w << 1);
+            }
+            bitmap++;
+        }
+        bitmap += (w - (x2 - x1 + 1));
+        y = y + offs2;
+        offs = 0;
+        offs2 = 8;
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::drawXBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    x -= offset.x;
+    y -= offset.y;
+    lcduint_t origin_width = w;
+    if (y + (lcdint_t)h <= 0) return;
+    if (y >= (lcdint_t)m_h) return;
+    if (x + (lcdint_t)w <= 0) return;
+    if (x >= (lcdint_t)m_w)  return;
+
+    uint8_t start_bit = 0;
+    lcduint_t pitch_delta = 0;
+    if (y < 0)
+    {
+        bitmap += /*pitch*/((origin_width + 7) >> 3) * (lcduint_t)(-y);
+        h += y;
+        y = 0;
+    }
+    if (x < 0)
+    {
+        bitmap += ((lcduint_t)(-x)) / 8;
+        start_bit = ((lcduint_t)(-x)) & 0x07;
+        w += x;
+        x = 0;
+    }
+    if ((lcduint_t)(y + (lcdint_t)h) > (lcduint_t)m_h)
+    {
+        h = (lcduint_t)(m_h - (lcduint_t)y);
+    }
+    if ((lcduint_t)(x + (lcdint_t)w) > (lcduint_t)m_w)
+    {
+        w = (lcduint_t)(m_w - (lcduint_t)x);
+    }
+    pitch_delta = ((origin_width + 7 - start_bit) >> 3) - ((w + 7) >> 3);
+
+    for(lcduint_t j = 0; j < h; j++)
+    {
+        uint8_t bit = start_bit;
+        for(lcduint_t i = 0; i < w; i++)
+        {
+            uint8_t data = 0;
+            data = (pgm_read_byte(bitmap) >> bit) & 0x01;
+            if (data)
+            {
+                m_buf[YADDR16(y + j) + ((x + i)<<1)] = m_color >> 8;
+                m_buf[YADDR16(y + j) + ((x + i)<<1) + 1] = m_color & 0xFF;
+            }
+            else if (CANVAS_MODE_TRANSPARENT != (m_textMode & CANVAS_MODE_TRANSPARENT))
+            {
+                m_buf[YADDR16(y + j) + ((x + i)<<1)] = 0x00;
+                m_buf[YADDR16(y + j) + ((x + i)<<1) + 1] = 0x00;
+            }
+            bit++;
+            if (bit >= 8)
+            {
+                bitmap++;
+                bit=0;
+            }
+        }
+        if (bit)
+        {
+            bitmap++;
+        }
+        bitmap += pitch_delta;
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    /* calculate char rectangle */
+    lcdint_t x1 = xpos - offset.x;
+    lcdint_t y1 = ypos - offset.y;
+    lcdint_t x2 = x1 + (lcdint_t)w - 1;
+    lcdint_t y2 = y1 + (lcdint_t)h - 1;
+    /* clip bitmap */
+    if ((x2 < 0) || (x1 >= (lcdint_t)m_w)) return;
+    if ((y2 < 0) || (y1 >= (lcdint_t)m_h)) return;
+
+    if (x1 < 0)
+    {
+        bitmap -= x1;
+        x1 = 0;
+    }
+    if (y1 < 0)
+    {
+        bitmap += (lcduint_t)(-y1) * w;
+        y1 = 0;
+    }
+    if (y2 >= (lcdint_t)m_h)
+    {
+         y2 = (lcdint_t)m_h - 1;
+    }
+    if (x2 >= (lcdint_t)m_w)
+    {
+         x2 = (lcdint_t)m_w - 1;
+    }
+    lcdint_t y = y1;
+    while ( y <= y2 )
+    {
+        for ( lcdint_t x = x1; x <= x2; x++ )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            if ( (data) || (!(m_textMode & CANVAS_MODE_TRANSPARENT)) )
+            {
+                uint16_t color = (((uint16_t)data & 0b11100000) << 8) |
+                                 (((uint16_t)data & 0b00011100) << 6) |
+                                 (((uint16_t)data & 0b00000011) << 3);
+                m_buf[YADDR16(y) + (x<<1)] = color;
+            }
+            bitmap++;
+        }
+        bitmap += (w - (x2 - x1 + 1));
+        y++;
+    }
+}
+
+template <>
+void NanoCanvasOps<16>::clear()
+{
+    memset(m_buf, 0, YADDR16(m_h));
+}
+
+template <>
+void NanoCanvasOps<16>::begin(lcdint_t w, lcdint_t h, uint8_t *bytes)
+{
+    m_w = w;
+    m_h = h;
+    offset.x = 0;
+    offset.y = 0;
+    m_cursorX = 0;
+    m_cursorY = 0;
+    m_color = 0xFFFF; // white color by default
+    m_textMode = 0;
+    m_p = 3;
+    while (w >> (m_p+1)) { m_p++; };
+    m_p++;
+    m_buf = bytes;
+    clear();
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                      NanoCanvasOps class initiation
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+template class NanoCanvasOps<1>;
+template class NanoCanvasOps<4>;
+template class NanoCanvasOps<8>;
+template class NanoCanvasOps<16>;
+
+
+//              NANO CANVAS 16
+
+void NanoCanvas16::blt(lcdint_t x, lcdint_t y)
+{
+    ssd1306_drawBufferFast16(x, y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas16::blt()
+{
+    ssd1306_drawBufferFast16(offset.x, offset.y, m_w, m_h, m_buf);
+}
+
+void NanoCanvas16::blt(const NanoRect &rect)
+{
+    ssd1306_drawBufferEx16(offset.x + rect.p1.x,
+                           offset.y + rect.p1.y,
+                           rect.width(),
+                           rect.height(),
+                           m_w<<1,
+                           m_buf + (rect.p1.x<<1) + rect.p1.y * (m_w<<1) );
+}
diff --git a/lib/libssd1306/src/nano_engine/canvas.h b/lib/libssd1306/src/nano_engine/canvas.h
new file mode 100644
index 0000000..05b5a87
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/canvas.h
@@ -0,0 +1,613 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file canvas.h Drawing in memory buffer
+ */
+
+
+#ifndef _NANO_CANVAS_H_
+#define _NANO_CANVAS_H_
+
+#include "point.h"
+#include "rect.h"
+#include "ssd1306_hal/io.h"
+#include "ssd1306_hal/Print_internal.h"
+#include "nano_gfx_types.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+enum
+{
+    CANVAS_MODE_BASIC           = 0x00,
+    /** If the flag is specified, text cursor is moved to new line when end of screen is reached */
+    CANVAS_TEXT_WRAP            = 0x01,
+    /** This flag make bitmaps transparent (Black color) */
+    CANVAS_MODE_TRANSPARENT     = 0x02,
+    /** If the flag is specified, text cursor is moved to new line when end of canvas is reached */
+    CANVAS_TEXT_WRAP_LOCAL      = 0x04,
+};
+
+/**
+ * NanoCanvasOps provides operations for drawing in memory buffer.
+ * Depending on BPP argument, this class can work with 1,8,16-bit canvas areas.
+ */
+template <uint8_t BPP>
+class NanoCanvasOps: public Print
+{
+public:
+    /** number of bits per single pixel in buffer */
+    static const uint8_t BITS_PER_PIXEL = BPP;
+
+    /** Fixed offset for all operation of NanoCanvasOps in pixels */
+    NanoPoint offset = { 0, 0 };
+
+    /**
+     * Creates new empty canvas object.
+     * If you this constructor is used, you must call begin() method before
+     * working with canvas.
+     */
+    NanoCanvasOps()
+    {
+    }
+
+    /**
+     * Creates new canvas object.
+     * Width can be of any value.
+     * Height should be divided by 8.
+     * Memory buffer must be not less than w * h.
+     *
+     * @param w - width
+     * @param h - height
+     * @param bytes - pointer to memory buffer to use
+     */
+    NanoCanvasOps(lcdint_t w, lcdint_t h, uint8_t *bytes)
+    {
+        begin(w, h, bytes);
+    }
+
+    /**
+     * Initializes canvas object.
+     * Width can be of any value.
+     * Height should be divided by 8.
+     * Memory buffer must be not less than w * h.
+     *
+     * @param w - width
+     * @param h - height
+     * @param bytes - pointer to memory buffer to use
+     */
+    void begin(lcdint_t w, lcdint_t h, uint8_t *bytes);
+
+    /**
+     * Sets offset
+     * @param ox - X offset in pixels
+     * @param oy - Y offset in pixels
+     */
+    void setOffset(lcdint_t ox, lcdint_t oy) { offset.x = ox; offset.y = oy; };
+
+    /**
+     * Returns right-bottom point of the canvas in offset terms.
+     * If offset is (0,0), then offsetEnd() will return (width-1,height-1).
+     */
+    const NanoPoint offsetEnd() const
+    {
+        return offset + (NanoPoint){ (lcdint_t)(m_w-1), (lcdint_t)(m_h-1) };
+    }
+
+    /**
+     * Returns rectangle area, covered by canvas in offset terms.
+     * If offset is (0,0), then rect() will return ((0,0),(width-1,height-1))
+     */
+    const NanoRect rect() const
+    {
+        return { offset, offsetEnd() };
+    }
+
+    /**
+     * Draws pixel on specified position
+     * @param x - position X
+     * @param y - position Y
+     * @note color can be set via setColor()
+     */
+    void putPixel(lcdint_t x, lcdint_t y);
+
+    /**
+     * Draws pixel on specified position
+     * @param p - NanoPoint
+     * @note color can be set via setColor()
+     */
+    void putPixel(const NanoPoint &p);
+
+    /**
+     * Draws horizontal or vertical line
+     * @param x1 - position X
+     * @param y1 - position Y
+     * @param y2 - position Y
+     * @note color can be set via setColor()
+     */
+    void drawVLine(lcdint_t x1, lcdint_t y1, lcdint_t y2);
+
+    /**
+     * Draws horizontal or vertical line
+     * @param x1 - position X
+     * @param y1 - position Y
+     * @param x2 - position X
+     * @note color can be set via setColor()
+     */
+    void drawHLine(lcdint_t x1, lcdint_t y1, lcdint_t x2);
+
+    /**
+     * Draws line
+     * @param x1 - position X
+     * @param y1 - position Y
+     * @param x2 - position X
+     * @param y2 - position Y
+     * @note color can be set via setColor()
+     */
+    void drawLine(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+    /**
+     * Draws line
+     * @param rect - structure, describing rectangle area
+     * @note color can be set via setColor()
+     */
+    void drawLine(const NanoRect &rect);
+
+    /**
+     * Draws rectangle
+     * @param x1 - position X
+     * @param y1 - position Y
+     * @param x2 - position X
+     * @param y2 - position Y
+     * @note color can be set via setColor()
+     */
+    void drawRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+    /**
+     * Draws rectangle
+     * @param rect - structure, describing rectangle area
+     * @note color can be set via setColor()
+     */
+    void drawRect(const NanoRect &rect);
+
+    /**
+     * Fills rectangle area
+     * @param x1 - position X
+     * @param y1 - position Y
+     * @param x2 - position X
+     * @param y2 - position Y
+     * @note color can be set via setColor()
+     */
+    void fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+    /**
+     * Fills rectangle area
+     * @param rect - structure, describing rectangle area
+     * @note color can be set via setColor()
+     */
+    void fillRect(const NanoRect &rect);
+
+    /**
+     * @brief Draws monochrome bitmap in color buffer using color, specified via setColor() method
+     * Draws monochrome bitmap in color buffer using color, specified via setColor() method
+     * The bitmap is expected in Native ssd1306 controller format.
+     *
+     * @param x - position X in pixels
+     * @param y - position Y in pixels
+     * @param w - width in pixels
+     * @param h - height in pixels
+     * @param bitmap - monochrome bitmap data, located in flash
+     *
+     * @note There are 2 modes: transparent and non-transparent mode, - and 2 colors available: black and white.
+     *       In non-transparent mode, when black color is selected, the monochrome image just inverted.
+     *       In transparent mode, those pixels of source monochrome image, which are black, do not overwrite pixels
+     *       in the screen buffer.
+     */
+    void drawBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+    /**
+     * @brief Draws monochrome bitmap in color buffer using color, specified via setColor() method
+     * Draws monochrome bitmap in color buffer using color, specified via setColor() method
+     * The bitmap is expected in XBMP format.
+     *
+     * @param x - position X in pixels
+     * @param y - position Y in pixels
+     * @param w - width in pixels
+     * @param h - height in pixels
+     * @param bitmap - monochrome bitmap data, located in flash
+     *
+     * @note There are 2 modes: transparent and non-transparent mode, - and 2 colors available: black and white.
+     *       In non-transparent mode, when black color is selected, the monochrome image just inverted.
+     *       In transparent mode, those pixels of source monochrome image, which are black, do not overwrite pixels
+     *       in the screen buffer.
+     */
+    void drawXBitmap1(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+    /**
+     * @brief Draws 8-bit color bitmap in color buffer.
+     * Draws 8-bit color bitmap in color buffer.
+     * @param x - position X in pixels
+     * @param y - position Y in pixels
+     * @param w - width in pixels
+     * @param h - height in pixels
+     * @param bitmap - 8-bit color bitmap data, located in flash
+     */
+    void drawBitmap8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+    /**
+     * Clears canvas
+     */
+    void clear();
+
+    /**
+     * Writes single character to canvas
+     * @param c - character code to print
+     */
+    size_t write(uint8_t c) override;
+
+    /**
+     * Draws single character to canvas
+     * @param c - character code to print
+     * @returns 0 if char is not printed
+     */
+    uint8_t printChar(uint8_t c);
+
+    /**
+     * Print text at specified position to canvas
+     *
+     * @param xpos  position in pixels
+     * @param y     position in pixels
+     * @param ch    pointer to NULL-terminated string.
+     * @param style specific font style to use
+     *
+     * @note Supports only STYLE_NORMAL and STYLE_BOLD
+     */
+    void printFixed(lcdint_t xpos, lcdint_t y, const char *ch, EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * Print text at specified position to canvas
+     *
+     * @param xpos  position in pixels
+     * @param y     position in pixels
+     * @param ch    pointer to NULL-terminated string, located in flash
+     * @param style specific font style to use
+     *
+     * @note Supports only STYLE_NORMAL and STYLE_BOLD
+     */
+    void printFixedPgm(lcdint_t xpos, lcdint_t y, const char *ch, EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * @brief Sets canvas drawing mode
+     * Sets canvas drawing mode. The set flags define transparency of output images
+     * @param modeFlags - combination of flags: CANVAS_TEXT_WRAP, CANVAS_MODE_TRANSPARENT
+     */
+    void setMode(uint8_t modeFlags) { m_textMode = modeFlags; };
+
+    /**
+     * Sets color for monochrome operations
+     * @param color - color to set (refer to RGB_COLOR8 definition)
+     */
+    void setColor(uint16_t color) { m_color = color; };
+
+protected:
+    lcduint_t m_w;    ///< width of NanoCanvas area in pixels
+    lcduint_t m_h;    ///< height of NanoCanvas area in pixels
+    lcduint_t m_p;    ///< number of bits, used by width value: 3 equals to 8 pixels width
+    lcdint_t  m_cursorX;  ///< current X cursor position for text output
+    lcdint_t  m_cursorY;  ///< current Y cursor position for text output
+    uint8_t   m_textMode; ///< Flags for current NanoCanvas mode
+    EFontStyle   m_fontStyle; ///< currently active font style
+    uint8_t * m_buf;      ///< Canvas data
+    uint16_t  m_color;    ///< current color for monochrome operations
+};
+
+/**
+ * Base class for all NanoCanvas childs
+ */
+template <uint8_t BPP>
+class NanoCanvasBase: public NanoCanvasOps<BPP>
+{
+public:
+    using NanoCanvasOps<BPP>::NanoCanvasOps;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in blocks (pixels/8)
+     */
+    virtual void blt(lcdint_t x, lcdint_t y) = 0;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    virtual void blt() = 0;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    virtual void blt(const NanoRect &rect) = 0;
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             1-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+enum
+{
+    BLACK = 0x00,  ///< Black color
+    WHITE = 0xFF,  ///< White color
+};
+
+/**
+ * NanoCanvas1 represents objects for drawing in memory buffer
+ * NanoCanvas1 represents each pixel as single bit: 0/1
+ * For details refer to SSD1306 datasheet
+ */
+class NanoCanvas1: public NanoCanvasBase<1>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/**
+ * NanoCanvas1_8 represents objects for drawing in memory buffer
+ * NanoCanvas1_8 represents each pixel as single bit: 0/1
+ * Unlike NanoCanvas1, it works with RBG color displays in normal mode.
+ */
+class NanoCanvas1_8: public NanoCanvasBase<1>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/**
+ * NanoCanvas1_16 represents objects for drawing in memory buffer
+ * NanoCanvas1_16 represents each pixel as single bit: 0/1
+ * Unlike NanoCanvas1, it works with RBG color displays in normal mode.
+ */
+class NanoCanvas1_16: public NanoCanvasBase<1>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             4-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * NanoCanvas1_4 represents objects for drawing in memory buffer
+ * NanoCanvas1_4 represents each pixel as 4-bits in GRAYscale: 11112222
+ * For details refer to ssd1327/ssd1325 datasheet
+ */
+class NanoCanvas1_4: public NanoCanvasBase<4>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             8-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * NanoCanvas8 represents objects for drawing in memory buffer
+ * NanoCanvas8 represents each pixel as single byte with RGB bits: RRRGGGBB
+ * For details refer to SSD1331 datasheet
+ */
+class NanoCanvas8: public NanoCanvasBase<8>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//                             16-BIT GRAPHICS
+//
+/////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * NanoCanvas16 represents objects for drawing in memory buffer
+ * NanoCanvas16 represents each pixel as 2-bytes with RGB bits: RRRRRGGG-GGGBBBBB
+ * For details refer to SSD1351 datasheet
+ */
+class NanoCanvas16: public NanoCanvasBase<16>
+{
+public:
+    using NanoCanvasBase::NanoCanvasBase;
+
+    /**
+     * Draws canvas on the LCD display
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     */
+    void blt(lcdint_t x, lcdint_t y) override;
+
+    /**
+     * Draws canvas on the LCD display using offset values.
+     */
+    void blt() override;
+
+    /**
+     * Draws only part of canvas on the LCD display.
+     * This method uses Canvas offset field as top-left point of whole canvas
+     * content. First point of specified rectangle defines the actual top-left
+     * point on the screen to be refreshed.
+     * For example, `blt({{8,0},{15,7}});` will copy canvas area {8,0}-{15,7}
+     * to screen starting at {8,0} if canvas offset is {0,0}.
+     * If canvas offset is {12,3}, then canvas area {8,0}-{15,7} will be copied
+     * to screen at position {20,3}.
+     * @param rect rectagle describing part of canvas to move to display.
+     */
+    void blt(const NanoRect &rect) override;
+};
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/core.cpp b/lib/libssd1306/src/nano_engine/core.cpp
new file mode 100644
index 0000000..d2aa0fe
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/core.cpp
@@ -0,0 +1,193 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2021, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "core.h"
+
+#ifdef SDL_EMULATION
+#include "sdl_core.h"
+#endif
+///////////////////////////////////////////////////////////////////////////////
+////// NANO ENGINE INPUTS CLASS ///////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+/** Callback to call if buttons state needs to be updated */
+TNanoEngineGetButtons NanoEngineInputs::m_onButtons = nullptr;
+
+uint8_t NanoEngineInputs::s_ky40_clk;
+uint8_t NanoEngineInputs::s_ky40_dt;
+uint8_t NanoEngineInputs::s_ky40_sw;
+
+
+bool NanoEngineInputs::pressed(uint8_t buttons)
+{
+    return (m_onButtons() & buttons) == buttons;
+}
+
+bool NanoEngineInputs::notPressed(uint8_t buttons)
+{
+    return (m_onButtons() & buttons) == 0;
+}
+
+void NanoEngineInputs::connectCustomKeys(TNanoEngineGetButtons handler)
+{
+    m_onButtons = handler;
+}
+
+void NanoEngineInputs::connectArduboyKeys()
+{
+    m_onButtons = arduboyButtons;
+}
+
+uint8_t NanoEngineInputs::s_zkeypadPin;
+
+uint8_t NanoEngineInputs::zkeypadButtons()
+{
+    int buttonValue = analogRead(s_zkeypadPin);
+    if (buttonValue < 100) return BUTTON_RIGHT;
+    if (buttonValue < 200) return BUTTON_UP;
+    if (buttonValue < 400) return BUTTON_DOWN;
+    if (buttonValue < 600) return BUTTON_LEFT;
+    if (buttonValue < 800) return BUTTON_A;
+    /** Z-keypad has only 5 analog buttons: no button B */
+    return BUTTON_NONE;
+}
+
+void NanoEngineInputs::connectZKeypad(uint8_t analogPin)
+{
+    NanoEngineInputs::s_zkeypadPin = analogPin;
+    m_onButtons = zkeypadButtons;
+}
+
+uint8_t NanoEngineInputs::arduboyButtons()
+{
+    uint8_t buttons;
+    /* Arduboy buttons available only for Atmega32U4 platform */
+    #if defined(__AVR_ATmega32U4__)
+    // down, up, left right
+    buttons = (((~PINF) & 0B11110000)>>4);
+    // A (left)
+    buttons |= (((~PINE) & 0B01000000) >> 2);
+    // B (right)
+    buttons |= (((~PINB) & 0B00010000) << 1);
+    #else
+    buttons = 0;
+    #endif
+    return buttons;
+}
+
+const uint8_t * NanoEngineInputs::s_gpioKeypadPins;
+
+void NanoEngineInputs::connectGpioKeypad(const uint8_t * gpioKeys)
+{
+    NanoEngineInputs::s_gpioKeypadPins = gpioKeys;
+#ifdef SDL_EMULATION
+    sdl_set_gpio_keys(gpioKeys);
+#endif
+    m_onButtons = gpioButtons;
+}
+
+uint8_t NanoEngineInputs::gpioButtons()
+{
+    uint8_t buttons = BUTTON_NONE;
+    if ((s_gpioKeypadPins[0]) && (digitalRead(s_gpioKeypadPins[0]) == HIGH)) buttons |= BUTTON_DOWN;
+    if ((s_gpioKeypadPins[1]) && (digitalRead(s_gpioKeypadPins[1]) == HIGH)) buttons |= BUTTON_LEFT;
+    if ((s_gpioKeypadPins[2]) && (digitalRead(s_gpioKeypadPins[2]) == HIGH)) buttons |= BUTTON_RIGHT;
+    if ((s_gpioKeypadPins[3]) && (digitalRead(s_gpioKeypadPins[3]) == HIGH)) buttons |= BUTTON_UP;
+    if ((s_gpioKeypadPins[4]) && (digitalRead(s_gpioKeypadPins[4]) == HIGH)) buttons |= BUTTON_A;
+    if ((s_gpioKeypadPins[5]) && (digitalRead(s_gpioKeypadPins[5]) == HIGH)) buttons |= BUTTON_B;
+    return buttons;
+}
+
+void NanoEngineInputs::connectKY40encoder(uint8_t pina_clk, uint8_t pinb_dt, int8_t pinc_sw)
+{
+    s_ky40_clk = pina_clk;
+    s_ky40_dt = pinb_dt;
+    s_ky40_sw = pinc_sw;
+    m_onButtons = ky40Buttons;
+}
+
+uint8_t NanoEngineInputs::ky40Buttons()
+{
+    static uint8_t last_clk = digitalRead( s_ky40_clk );
+    uint8_t buttons = BUTTON_NONE;
+    uint8_t clk = digitalRead( s_ky40_clk );
+    if ( clk != last_clk )
+    {
+        if ( clk == HIGH )
+        {
+            buttons = digitalRead( s_ky40_dt ) == LOW ? BUTTON_DOWN : BUTTON_UP;
+        }
+        else
+        {
+            buttons = digitalRead( s_ky40_dt ) == HIGH ? BUTTON_DOWN : BUTTON_UP;
+        }
+    }
+    last_clk = clk;
+    if ( digitalRead( s_ky40_sw ) == LOW )
+    {
+        buttons |= BUTTON_A;
+    }
+    return buttons;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+////// NANO ENGINE CORE CLASS /////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+/** Defaut frame rate for all engines */
+static const uint8_t ENGINE_DEFAULT_FPS = 30;
+
+/** Duration between frames in milliseconds */
+uint8_t   NanoEngineCore::m_frameDurationMs = 1000/ENGINE_DEFAULT_FPS;
+/** Current fps */
+uint8_t   NanoEngineCore::m_fps = ENGINE_DEFAULT_FPS;
+/** Current cpu load in percents */
+uint8_t   NanoEngineCore::m_cpuLoad = 0;
+/** Last timestamp in milliseconds the frame was updated on oled display */
+uint32_t  NanoEngineCore::m_lastFrameTs;
+/** Callback to call before starting oled update */
+TLoopCallback NanoEngineCore::m_loop = nullptr;
+
+
+void NanoEngineCore::begin()
+{
+    m_lastFrameTs = millis();
+}
+
+void NanoEngineCore::setFrameRate(uint8_t fps)
+{
+    if ( fps > 0 )
+    {
+        m_fps = fps;
+        m_frameDurationMs = 1000/fps;
+    }
+}
+
+bool NanoEngineCore::nextFrame()
+{
+    bool needUpdate = (uint32_t)(millis() - m_lastFrameTs) >= m_frameDurationMs;
+    if (needUpdate && m_loop) m_loop();
+    return needUpdate;
+}
+
diff --git a/lib/libssd1306/src/nano_engine/core.h b/lib/libssd1306/src/nano_engine/core.h
new file mode 100644
index 0000000..1ecc909
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/core.h
@@ -0,0 +1,301 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file core.h Small graphics engine, based on SSD1331 functions
+ */
+
+
+#ifndef _NANO_ENGINE_CORE_H_
+#define _NANO_ENGINE_CORE_H_
+
+#include "tiler.h"
+#include "canvas.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/** Type of user-specified keyboard callback */
+typedef uint8_t (*TNanoEngineGetButtons)(void);
+
+/** Type of user-specified loop callback */
+typedef void (*TLoopCallback)(void);
+
+///////////////////////////////////////////////////////////////////////////////
+////// NANO ENGINE INPUTS CLASS ///////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+enum
+{
+    BUTTON_NONE   = 0B00000000,
+    BUTTON_DOWN   = 0B00000001,
+    BUTTON_LEFT   = 0B00000010,
+    BUTTON_RIGHT  = 0B00000100,
+    BUTTON_UP     = 0B00001000,
+    BUTTON_A      = 0B00010000,
+    BUTTON_B      = 0B00100000,
+};
+
+/**
+ * Class for keys processing functionality
+ */
+class NanoEngineInputs
+{
+protected:
+    /**
+     * Initializes Nano Engine Inputs object.
+     */
+    NanoEngineInputs() {};
+public:
+    /**
+     * @brief Returns true if button or specific combination of buttons is not pressed.
+     * Returns true if button or specific combination of buttons is pressed.
+     * @param buttons - buttons to check
+     * @return true or false
+     */
+    static bool pressed(uint8_t buttons);
+
+    /**
+     * @brief Returns true if button or specific combination of buttons is not pressed.
+     * Returns true if button or specific combination of buttons is not pressed.
+     * @param buttons - buttons to check
+     * @return true of false
+     */
+    static bool notPressed(uint8_t buttons);
+
+    /**
+     * @brief Returns bits of all pressed buttons
+     *
+     * Returns bits of all pressed buttons. For example, to check if Down button is pressed
+     * you need to write `if (result & BUTTON_DOWN) {}`. Available constants are:
+     * BUTTON_DOWN, BUTTON_LEFT, BUTTON_RIGHT, BUTTON_UP, BUTTON_A, BUTTON_B.
+     *
+     */
+    static uint8_t buttonsState()
+    {
+        return m_onButtons();
+    }
+
+    /**
+     * Configures NanoEngine8 to use custom key handler.
+     * You can implement in your handler any keyboard layout, you use in your schematics.
+     */
+    static void connectCustomKeys(TNanoEngineGetButtons handler);
+
+    /**
+     * @brief Enables engine to use Z-Keypad.
+     * Enables engine to use Z-Keypad. Please refer to arkanoid example for schematics.
+     * @param analogPin - pin, which Z-Keypad is connected to.
+     */
+    static void connectZKeypad(uint8_t analogPin);
+
+    /**
+     * @brief Configures NanoEngine8 to use Arduboy keys layout.
+     * Configures NanoEngine8 to use Arduboy keys layout.
+     */
+    static void connectArduboyKeys();
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+    /**
+     * @brief Configures NanoEngine to use KY40 Rotary Encoder.
+     * Configures NanoEngine to use KY40 Rotary Encoder.
+     * @param pina_clk pin number to use as clk (see KY40 docs).
+     * @param pinb_dt pin number to use as direction pin (see KY40 docs).
+     * @param pinc_sw optional pin number ot use as push button.
+     * @warning do not use, not tested
+     */
+    static void connectKY40encoder(uint8_t pina_clk, uint8_t pinb_dt, int8_t pinc_sw = -1);
+#endif
+
+    /**
+     * @brief Enables engine to use GPIO keys
+     *
+     * Enables engine  to use gpio-keys. You need to pass globally defined array,
+     * containing GPIO pin numbers for the 6 buttons in the following order:
+     * Down, Left, Right, Up, A, B. If you don't want to use some specific button,
+     * then just set not used button to 0.
+     * Once you call this function, you can read buttons state via buttonsState().
+     *
+     * @param gpioKeys pointer to 6-button pins array.
+     *
+     * @see buttonsState()
+     */
+    static void connectGpioKeypad(const uint8_t *gpioKeys);
+
+protected:
+    /** Callback to call if buttons state needs to be updated */
+    static TNanoEngineGetButtons m_onButtons;
+
+private:
+    static uint8_t s_zkeypadPin;
+    static const uint8_t * s_gpioKeypadPins;
+    static uint8_t s_ky40_clk;
+    static uint8_t s_ky40_dt;
+    static uint8_t s_ky40_sw;
+    static uint8_t zkeypadButtons();
+    static uint8_t arduboyButtons();
+    static uint8_t gpioButtons();
+    static uint8_t ky40Buttons();
+};
+
+
+///////////////////////////////////////////////////////////////////////////////
+////// NANO ENGINE CORE CLASS /////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+/**
+ * Nano Engine Core class, contains generic frame-rate control functions
+ */
+class NanoEngineCore: public NanoEngineInputs
+{
+protected:
+    NanoEngineCore(): NanoEngineInputs() {};
+
+public:
+    /**
+     * Initializes internal timestamps.
+     */
+    static void begin();
+
+    /**
+     * Sets working frame-rate for the engine
+     * @param fps - frame rate to set between [1-255]
+     */
+    static void setFrameRate(uint8_t fps);
+ 
+    /**
+     * Returns current frame rate
+     */
+    static uint8_t getFrameRate() { return m_fps; };
+
+    /**
+     * Returns cpu load in percents [0-255].
+     * 100 means maximum normal CPU load.
+     * 0 means, CPU has nothing to do.
+     * >100 means that CPU is not enough to perform all operations
+     */
+    static uint8_t getCpuLoad() { return m_cpuLoad; };
+
+    /**
+     * Returns true if it is time to render next frame
+     */
+    static bool nextFrame();
+
+    /**
+     * Sets user-defined loop callback. This callback will be called once every time
+     * new frame needs to be refreshed on oled display.
+     */
+    static void loopCallback(TLoopCallback callback) { m_loop = callback; };
+
+protected:
+
+    /** Duration between frames in milliseconds */
+    static uint8_t   m_frameDurationMs;
+    /** Current fps */
+    static uint8_t   m_fps;
+    /** Current cpu load in percents */
+    static uint8_t   m_cpuLoad;
+    /** Last timestamp in milliseconds the frame was updated on oled display */
+    static uint32_t  m_lastFrameTs;
+    /** Callback to call before starting oled update */
+    static TLoopCallback m_loop;
+};
+
+/**
+ * Base class for NanoEngine.
+ */
+template<class C, uint8_t W, uint8_t H, uint8_t B>
+class NanoEngine: public NanoEngineCore,
+                  public NanoEngineTiler<C,W,H,B>
+{
+public:
+    /**
+     * Initializes Nano Engine Base object.
+     */
+    NanoEngine();
+
+    /**
+     * @brief refreshes content on oled display.
+     * Refreshes content on oled display. Call it, if you want to update the screen.
+     * Engine will update only those areas, which are marked by refresh()
+     * methods.
+     */
+    static void display();
+
+    /**
+     * Initializes internal timestamps, engine state, and
+     * switches oled display to required mode (see ssd1306_setMode()).
+     */
+    static void begin();
+
+    /**
+     * @brief shows notification to a user for 1 seconds
+     * Shows notification to a user for 1 seconds
+     * @param str - pointer to null-terminated string to show
+     */
+    static void notify(const char *str);
+
+protected:
+};
+
+template<class C, uint8_t W, uint8_t H, uint8_t B>
+NanoEngine<C,W,H,B>::NanoEngine()
+    : NanoEngineCore(), NanoEngineTiler<C,W,H,B>()
+{
+}
+
+template<class C, uint8_t W, uint8_t H, uint8_t B>
+void NanoEngine<C,W,H,B>::display()
+{
+    m_lastFrameTs = millis();
+    NanoEngineTiler<C,W,H,B>::displayBuffer();
+    m_cpuLoad = ((millis() - m_lastFrameTs)*100)/m_frameDurationMs;
+}
+
+template<class C, uint8_t W, uint8_t H, uint8_t B>
+void NanoEngine<C,W,H,B>::begin()
+{
+    NanoEngineCore::begin();
+    if (C::BITS_PER_PIXEL > 1)
+    {
+        ssd1306_setMode(LCD_MODE_NORMAL);
+    }
+}
+
+template<class C, uint8_t W, uint8_t H, uint8_t B>
+void NanoEngine<C,W,H,B>::notify(const char *str)
+{
+    NanoEngineTiler<C,W,H,B>::displayPopup(str);
+    delay(1000);
+    m_lastFrameTs = millis();
+    NanoEngineTiler<C,W,H,B>::refresh();
+}
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/point.h b/lib/libssd1306/src/nano_engine/point.h
new file mode 100644
index 0000000..bea582b
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/point.h
@@ -0,0 +1,183 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file point.h Point class
+ */
+
+
+#ifndef _NANO_POINT_H_
+#define _NANO_POINT_H_
+
+#include "ssd1306_hal/io.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/** Describes point */
+typedef struct _NanoPoint
+{
+    /** x position in pixels */
+    lcdint_t x;
+    /** y position in pixels */
+    lcdint_t y;
+
+//    _NanoPoint(lcdint_t px, lcdint_t py)
+//    {
+//        x = px;
+//        y = py;
+//    }
+
+    /**
+     * Initializes NanoPoint with specified values
+     * @param px - x position
+     * @param py - y position
+     */
+    void setPoint(lcdint_t px, lcdint_t py) { x=px; y=py; };
+
+    /**
+     * Shifts right x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoPoint& operator>>=(const uint8_t bits)
+    {
+        x >>= bits;
+        y >>= bits;
+        return *this;
+    }
+
+    /**
+     * Shifts left x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoPoint& operator<<=(const uint8_t bits)
+    {
+        x <<= bits;
+        y <<= bits;
+        return *this;
+    }
+
+    /**
+     * Adds point.
+     * @param p - point values to add to the point.
+     */
+    _NanoPoint& operator+=(const _NanoPoint &p)
+    {
+        x += p.x;
+        y += p.y;
+        return *this;
+    };
+
+    /**
+     * Subtracts point.
+     * @param p - point values to subtract from the point.
+     */
+    _NanoPoint& operator-=(const _NanoPoint &p)
+    {
+        x -= p.x;
+        y -= p.y;
+        return *this;
+    };
+
+    /**
+     * Subtracts point.
+     * @param p - point values to subtract from the point.
+     */
+    _NanoPoint operator-(const _NanoPoint &p)
+    {
+        return { static_cast<lcdint_t>(x - p.x),
+                 static_cast<lcdint_t>(y - p.y) };
+    };
+
+    /**
+     * Adds point.
+     * @param p - point values to add to the point.
+     */
+    _NanoPoint operator+(const _NanoPoint &p)
+    {
+        return { static_cast<lcdint_t>(x + p.x),
+                 static_cast<lcdint_t>(y + p.y) };
+    };
+
+    /**
+     * Shifts right x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoPoint operator>>(const uint8_t bits) const
+    {
+        return { static_cast<lcdint_t>(x >> bits),
+                 static_cast<lcdint_t>(y >> bits) };
+    };
+
+    /**
+     * Shifts left x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoPoint operator<<(const uint8_t bits) const
+    {
+        return { static_cast<lcdint_t>(x << bits),
+                 static_cast<lcdint_t>(y << bits) };
+    };
+
+    /**
+     * Divides x,y value of the point by d value.
+     * @param d divider
+     */
+    _NanoPoint operator/(const int16_t d) const
+    {
+        return { static_cast<lcdint_t>(x / d),
+                 static_cast<lcdint_t>(y / d) };
+    };
+
+} NanoPoint;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+inline NanoPoint operator+(const NanoPoint& p1, const NanoPoint& p2)
+{
+    return { (lcdint_t)(p1.x + p2.x), (lcdint_t)(p1.y + p2.y) };
+}
+
+inline NanoPoint operator-(const NanoPoint& p1, const NanoPoint& p2)
+{
+    return { (lcdint_t)(p1.x - p2.x), (lcdint_t)(p1.y - p2.y) };
+}
+
+inline bool operator==(const NanoPoint& p1, const NanoPoint& p2)
+{
+    return (p1.x == p2.x) && (p1.y == p2.y);
+}
+
+inline bool operator!=(const NanoPoint& p1, const NanoPoint& p2)
+{
+    return !(p1 == p2);
+}
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/rect.h b/lib/libssd1306/src/nano_engine/rect.h
new file mode 100644
index 0000000..da7ad80
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/rect.h
@@ -0,0 +1,257 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file rect.h Rectangle class
+ */
+
+#ifndef _NANO_RECT_H_
+#define _NANO_RECT_H_
+
+#include "point.h"
+#include "ssd1306_hal/io.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/**
+ * NanoRect structure describes rectangle area.
+ */
+typedef struct _NanoRect
+{
+    /** top-left point of the rectangle area */
+    NanoPoint p1;
+
+    /** right-bottom point of the rectangle area */
+    NanoPoint p2;
+
+    /** returns width of NanoRect */
+    lcdint_t width() const
+    {
+        return p2.x - p1.x + 1;
+    }
+
+    /** returns size of NanoRect */
+    const NanoPoint size() const
+    {
+        return {width(), height()};
+    }
+
+    /** returns height of NanoRect */
+    lcdint_t height() const
+    {
+        return p2.y - p1.y + 1;
+    }
+
+    /**
+     * Shifts rectangle area by dx;dy pixels.
+     * @param dx - delta on x-axis
+     * @param dy - delta on y-axis
+     */
+    void move(lcdint_t dx, lcdint_t dy)
+    {
+        p1.x += dx; p2.x += dx;
+        p1.y += dy; p2.y += dy;
+    }
+
+    /**
+     * Shifts rectangle area by dx pixels.
+     * @param dx - delta on x-axis
+     */
+    void addH(lcdint_t dx)
+    {
+        p1.x += dx; p2.x += dx;
+    }
+
+    /**
+     * Shifts rectangle area by dy pixels.
+     * @param dy - delta on y-axis
+     */
+    void addV(lcdint_t dy)
+    {
+        p1.y += dy;
+        p2.y += dy;
+    }
+
+    /**
+     * Initializes NanoRect with specified values
+     * @param l - left position
+     * @param t - top position
+     * @param r - right position
+     * @param b - bottom position
+     */
+    void setRect(lcdint_t l, lcdint_t t, lcdint_t r, lcdint_t b)
+    {
+        p1.x = l; p1.y = t;
+        p2.x = r; p2.y = b;
+    }
+
+    /**
+     * Crops rectangle to fit specified area
+     *
+     * @param rect rectangle to crop to
+     */
+    void crop(const _NanoRect& rect)
+    {
+        if (p1.x < rect.p1.x) p1.x = rect.p1.x;
+        if (p1.y < rect.p1.y) p1.y = rect.p1.y;
+        if (p2.x > rect.p2.x) p2.x = rect.p2.x;
+        if (p2.y > rect.p2.y) p2.y = rect.p2.y;
+    }
+
+    /**
+     * Returns true if specified x position is between left and right borders.
+     * @param x - position to check
+     */
+    bool collisionX(lcdint_t x) const
+    {
+        return (x >= p1.x) && (x <= p2.x);
+    }
+
+    /**
+     * Returns true if specified y position is between left and right borders.
+     * @param y - position to check
+     */
+    bool collisionY(lcdint_t y) const { return (y >= p1.y) && (y <= p2.y); };
+
+    /**
+     * Returns true if specified point is inside rectangle area.
+     * @param p - point to check.
+     */
+    bool collision(const NanoPoint &p) const
+    {
+        return collisionX(p.x) && collisionY(p.y);
+    }
+
+    /**
+     * Returns true of point belongs to rectangle area
+     *
+     * @param p point to check for
+     */
+    bool contains(const NanoPoint &p) const
+    {
+        return collision(p);
+    }
+
+    /**
+     * Returns true if whole rectangle belongs to rectangle area
+     *
+     * @param r rectangle to check
+     */
+    bool contains(const _NanoRect &r) const
+    {
+        return contains(r.p1) && contains(r.p2);
+    }
+
+    /**
+     * Returns true if rectangle topleft or rightbottom points belong to rectangle area
+     *
+     * @param r rectangle to check
+     */
+    bool containsPartOf(const _NanoRect &r) const
+    {
+        return contains(r.p1) || contains(r.p2);
+    }
+
+    /**
+     * Returns true if specified point is above rectangle area.
+     * @param p - point to check.
+     */
+    bool above(const NanoPoint &p) const { return (p.y < p1.y); };
+
+    /**
+     * Returns true if specified point is below rectangle area.
+     * @param p - point to check.
+     */
+    bool below(const NanoPoint &p) const { return (p.y > p2.y); };
+
+    /**
+     * Returns true if specified point is above rectangle area.
+     * @param p - point to check.
+     */
+    _NanoRect operator-(const _NanoPoint &p)
+    {
+        return { {static_cast<lcdint_t>(p1.x - p.x), static_cast<lcdint_t>(p1.y - p.y) },
+                 {static_cast<lcdint_t>(p2.x - p.x), static_cast<lcdint_t>(p2.y - p.y) } };
+    }
+
+    /**
+     * Add point to all points of rectangle.
+     * @param p - point to add.
+     */
+    _NanoRect operator+(const _NanoPoint &p)
+    {
+        return { {static_cast<lcdint_t>(p1.x + p.x), static_cast<lcdint_t>(p1.y + p.y) },
+                 {static_cast<lcdint_t>(p2.x + p.x), static_cast<lcdint_t>(p2.y + p.y) } };
+    }
+
+    /**
+     * Subtracts point to all points of rectangle.
+     * @param p - point to subtract.
+     */
+    _NanoRect& operator+=(const _NanoPoint &p)
+    {
+        p1.x += p.x;
+        p1.y += p.y;
+        p2.x += p.x;
+        p2.y += p.y;
+        return *this;
+    }
+
+    /**
+     * Shifts right x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoRect operator>>(const uint8_t bits) const
+    {
+        return { p1 >> bits, p2 >> bits };
+    };
+
+    /**
+     * Shifts left x,y value of the point by bits value.
+     * @param bits - number of bits to shift
+     */
+    _NanoRect operator<<(const uint8_t bits) const
+    {
+        return { p1 << bits, p2 << bits };
+    };
+
+
+} NanoRect;
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+inline NanoRect operator+(const NanoRect& rect, const NanoPoint& p)
+{
+    return { { (lcdint_t)(rect.p1.x + p.x), (lcdint_t)(rect.p1.y + p.y) },
+             { (lcdint_t)(rect.p2.x + p.x), (lcdint_t)(rect.p2.y + p.y) } };
+}
+#endif
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/sprite.h b/lib/libssd1306/src/nano_engine/sprite.h
new file mode 100644
index 0000000..29ea37f
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/sprite.h
@@ -0,0 +1,303 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file sprite.h Sprite class
+ */
+
+#ifndef _NANO_SPRITE_H_
+#define _NANO_SPRITE_H_
+
+#include "point.h"
+#include "rect.h"
+#include "ssd1306_hal/io.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/**
+ * This is template class for user sprites implementations.
+ * NanoSprite can work only as part of NanoEngine, it requires
+ * NanoEngine type and NanoEngine instance as arguments.
+ */
+template<typename T, T &E>
+class NanoSprite
+{
+public:
+    /**
+     * Creates sprite object of variable size. Such sprites can
+     * change their size and bitmap content.
+     * @param pos position of the sprite in global coordinates
+     * @param size size of sprite
+     * @param bitmap sprite content (in flash memory)
+     */
+    NanoSprite(const NanoPoint &pos, const NanoPoint &size, const uint8_t *bitmap)
+         : m_rect{pos, pos + size}
+         , m_bitmap( bitmap )
+    {
+    }
+
+    /**
+     * Draws monochrome sprite on Engine canvas
+     */
+    void draw()
+    {
+        E.canvas.drawBitmap1(m_rect.p1.x, m_rect.p1.y, m_rect.width(), m_rect.height(), m_bitmap);
+    }
+
+    /**
+     * Marks sprite locate for refreshing on the new frame
+     */
+    void refresh()
+    {
+        E.refreshWorld( m_rect );
+    }
+
+    /**
+     * Moves sprite to new position
+     */
+    void moveTo(const NanoPoint &p)
+    {
+        refresh();
+        m_rect = { p, p + m_rect.size() };
+        refresh();
+    }
+
+    /**
+     * Moves sprite to new position by specified offset
+     */
+    void moveBy(const NanoPoint &p)
+    {
+        refresh();
+        m_rect += p;
+        refresh();
+    }
+
+    /**
+     * Returns bottom-center point of the sprite
+     */
+    const NanoPoint bottom() const
+    {
+        return { (m_rect.p1.x + m_rect.p2.x) >> 1, m_rect.p2.y  };
+    }
+
+    /**
+     * Returns top-center point of the sprite
+     */
+    const NanoPoint top() const
+    {
+        return { (m_rect.p1.x + m_rect.p2.x) >> 1, m_rect.p1.y  };
+    }
+
+    /**
+     * Returns left-center point of the sprite
+     */
+    const NanoPoint left() const
+    {
+        return { m_rect.p1.x, (m_rect.p1.y + m_rect.p2.y) >> 1  };
+    }
+
+    /**
+     * Returns right-center point of the sprite
+     */
+    const NanoPoint right() const
+    {
+        return { m_rect.p2.x, (m_rect.p1.y + m_rect.p2.y) >> 1  };
+    }
+
+    /**
+     * Returns center point of the sprite
+     */
+    const NanoPoint center() const
+    {
+        return { (m_rect.p1.x + m_rect.p2.x) >> 1, (m_rect.p1.y + m_rect.p2.y) >> 1  };
+    }
+
+    /**
+     * Changes sprite bitmap to new one.
+     */
+    void setBitmap( const uint8_t * bitmap )
+    {
+        m_bitmap = bitmap;
+    }
+
+    /**
+     * Returns sprite x position
+     */
+    lcdint_t x( ) const { return m_rect.p1.x; }
+
+    /**
+     * Returns sprite y position
+     */
+    lcdint_t y( ) const { return m_rect.p1.y; }
+
+private:
+    NanoRect       m_rect;
+    const uint8_t *m_bitmap;
+};
+
+/**
+ * This is template class for user sprites implementation.
+ * It requires NanoEngine type and NanoEngine instance as arguments.
+ */
+template<typename T, T &E>
+class NanoFixedSprite
+{
+public:
+    /**
+     * Creates sprite object of fixed size. Such sprites can
+     * change their bitmap content only and position.
+     * @param pos position of the sprite in global coordinates
+     * @param size size of sprite
+     * @param bitmap sprite content (in flash memory)
+     */
+    NanoFixedSprite(const NanoPoint &pos, const NanoPoint &size, const uint8_t *bitmap)
+         : m_pos(pos)
+         , m_size(size)
+         , m_bitmap( bitmap )
+    {
+    }
+
+    /**
+     * Draws monochrome sprite on Engine canvas
+     */
+    void draw()
+    {
+        E.canvas.drawBitmap1(m_pos.x, m_pos.y, m_size.x, m_size.y, m_bitmap);
+    }
+
+    /**
+     * Marks sprite locate for refreshing on the new frame
+     */
+    void refresh()
+    {
+        E.refreshWorld( m_pos.x, m_pos.y,
+                         m_pos.x + m_size.x - 1, m_pos.y + m_size.y - 1 );
+    }
+
+    /**
+     * Moves sprite to new position
+     */
+    void moveTo(const NanoPoint &p)
+    {
+        refresh();
+        m_pos = p;
+        refresh();
+    }
+
+    /**
+     * Moves sprite to new position by specified offset
+     */
+    void moveBy(const NanoPoint &p)
+    {
+        refresh();
+        m_pos += p;
+        refresh();
+    }
+
+    /**
+     * Returns bottom-center point of the sprite
+     */
+    const NanoPoint bottom() const
+    {
+        return { m_pos.x + (m_size.x >> 1), m_pos.y + m_size.y - 1  };
+    }
+
+    /**
+     * Returns top-center point of the sprite
+     */
+    const NanoPoint top() const
+    {
+        return { m_pos.x + (m_size.x >> 1), m_pos.y  };
+    }
+
+    /**
+     * Returns left-center point of the sprite
+     */
+    const NanoPoint left() const
+    {
+        return { m_pos.x, m_pos.y + (m_size.y>>1)  };
+    }
+
+    /**
+     * Returns right-center point of the sprite
+     */
+    const NanoPoint right() const
+    {
+        return { m_pos.x + m_size.x - 1, m_pos.y + (m_size.y>>1)  };
+    }
+
+    /**
+     * Returns center point of the sprite
+     */
+    const NanoPoint center() const
+    {
+        return { m_pos.x + (m_size.x >> 1), m_pos.y + (m_size.y>>1)  };
+    }
+
+    /**
+     * Changes sprite bitmap to new one.
+     */
+    void setBitmap( const uint8_t * bitmap )
+    {
+        m_bitmap = bitmap;
+    }
+
+    /**
+     * Returns current sprite position (top-left corner)
+     */
+    const NanoPoint & getPosition() const { return m_pos; }
+
+    /**
+     * Returns sprite x position
+     */
+    lcdint_t x( ) const { return m_pos.x; }
+
+    /**
+     * Returns sprite y position
+     */
+    lcdint_t y( ) const { return m_pos.y; }
+
+    /**
+     * Returns current sprite position (top-left corner)
+     */
+    const NanoPoint & pos() const { return m_pos; }
+
+protected:
+    /** fixed size of sprite */
+    const NanoPoint   m_size;
+    /** Sprite position in global (world) coordinates */
+    NanoPoint         m_pos;
+
+private:
+    const uint8_t *m_bitmap;
+};
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_engine/tiler.h b/lib/libssd1306/src/nano_engine/tiler.h
new file mode 100644
index 0000000..eb764ce
--- /dev/null
+++ b/lib/libssd1306/src/nano_engine/tiler.h
@@ -0,0 +1,364 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file tiler.h Tiler helper for graphics processing
+ */
+
+
+#ifndef _NANO_ENGINE_TILER_H_
+#define _NANO_ENGINE_TILER_H_
+
+#include "canvas.h"
+#include "lcd/lcd_common.h"
+
+/**
+ * @ingroup NANO_ENGINE_API
+ * @{
+ */
+
+/**
+ * Structure, holding currently set font.
+ * @warning Only for internal use.
+ */
+extern "C" SFixedFontInfo s_fixedFont;
+
+/* The table below defines arguments for NanoEngineTiler.          *
+ *                            canvas        width   height  bits   */
+// Tiles for monochrome displays
+#define TILE_128x64_MONO      NanoCanvas1,  128,    64,     7    ///< Full-screen 1-bit tile for SSD1306
+#define TILE_8x8_MONO         NanoCanvas1,  8,      8,      3    ///< Standard 1-bit tile 8x8 for monochrome mode
+#define TILE_16x16_MONO       NanoCanvas1,  16,     16,     4    ///< Standard 1-bit tile 16x16 for monochrome mode
+#define TILE_32x32_MONO       NanoCanvas1,  32,     32,     4    ///< Standard 1-bit tile 32x32 for monochrome mode
+// Tiles for 8-bit displays
+#define TILE_8x8_RGB8         NanoCanvas8,  8,      8,      3    ///< Standard 8-bit RGB tile 8x8
+#define TILE_16x16_RGB8       NanoCanvas8,  16,     16,     4    ///< Standard 8-bit RGB tile 16x16
+#define TILE_32x32_RGB8       NanoCanvas8,  32,     32,     5    ///< Standard 8-bit RGB tile 32x32
+#define TILE_8x8_MONO_8       NanoCanvas1_8,8,      8,      3    ///< Standard 1-bit tile 8x8 for RGB mode
+// Tiles for 16-bit displays
+#define TILE_8x8_RGB16        NanoCanvas16, 8,      8,      3    ///< Standard 16-bit RGB tile 8x8
+// Adafruit tiles
+#define ADATILE_8x8_MONO      AdafruitCanvas1,  8,  8,      3    ///< Use Adafruit GFX implementation as NanoEngine canvas
+#define ADATILE_8x8_RGB8      AdafruitCanvas8,  8,  8,      3    ///< Use Adafruit GFX implementation as NanoEngine canvas
+#define ADATILE_8x8_RGB16     AdafruitCanvas16, 8,  8,      3    ///< Use Adafruit GFX implementation as NanoEngine canvas
+
+/**
+ * Type of user-specified draw callback.
+ */
+typedef bool (*TNanoEngineOnDraw)(void);
+
+/**
+ * This class template is responsible for holding and updating data about areas to be refreshed
+ * on LCD display. It accepts canvas class, tile width in pixels, tile height in pixels and
+ * number of bits in tile width as arguments for the template.
+ * For example, for 8x8 8-bit RGB tiles the reference should be NanoEngineTiler<NanoCanvas8,8,8,3>,
+ * and 3 bits means 3^2 = 8.
+ * If you need to have single big buffer, holding the whole content for monochrome display,
+ * you can specify something like this NanoEngineTiler<NanoCanvas1,128,64,7>.
+ */
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+class NanoEngineTiler
+{
+protected:
+    /** Only child classes can initialize the engine */
+    NanoEngineTiler()
+    {
+        refresh();
+    };
+
+public:
+    /** Number of bits in tile size. 5 corresponds to 1<<5 = 32 tile size */
+    static const uint8_t NE_TILE_SIZE_BITS = B;
+    /** Width of tile in pixels */
+    static const lcduint_t NE_TILE_WIDTH = W;
+    /** Height of tile in pixels */
+    static const lcduint_t NE_TILE_HEIGHT = H;
+    /** Max tiles supported in X */
+    static const uint8_t NE_MAX_TILES_NUM = 64 >> (B - 3);
+
+    /** object, representing canvas. Use it in your draw handler */
+    static C canvas;
+
+    /**
+     * Marks all tiles for update. Actual update will take place in display() method.
+     */
+    static void refresh()
+    {
+        memset(m_refreshFlags,0xFF,sizeof(uint16_t) * NanoEngineTiler<C,W,H,B>::NE_MAX_TILES_NUM);
+    }
+
+    /**
+     * Mark specified area in pixels for redrawing by NanoEngine.
+     * Actual update will take place in display() method.
+     * @note assumes that rect is in local screen coordinates
+     */
+    static void refresh(const NanoRect &rect)
+    {
+        refresh(rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y);
+    }
+
+    /**
+     * Mark specified area in pixels for redrawing by NanoEngine.
+     * Actual update will take place in display() method.
+     */
+    static void refresh(const NanoPoint &point)
+    {
+        if ((point.y<0) || ((point.y>>B)>=NE_MAX_TILES_NUM)) return;
+        m_refreshFlags[(point.y>>B)] |= (1<<(point.x>>B));
+    }
+
+    /**
+     * Mark specified area in pixels for redrawing by NanoEngine.
+     * Actual update will take place in display() method.
+     */
+    static void refresh(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+    {
+        if (y2 < 0) return;
+        if (y1 < 0) y1 = 0;
+        if (x1 < 0) x1 = 0;
+        y1 = y1>>B;
+        y2 = min((y2>>B), NE_MAX_TILES_NUM - 1);
+        for (uint8_t y=y1; y<=y2; y++)
+        {
+            for(uint8_t x=x1>>B; x<=(x2>>B); x++)
+            {
+                m_refreshFlags[y] |= (1<<x);
+            }
+        }
+    }
+
+    /**
+     * Marks for refresh lcd area, which corresponds to specified rectangle in
+     * global (World) coordinates. If engine offset is (0,0), then this function
+     * refreshes the same area as refresh().
+     */
+    static void refreshWorld(const NanoRect &rect)
+    {
+        refreshWorld(rect.p1.x, rect.p1.y, rect.p2.x, rect.p2.y);
+    }
+
+    /**
+     * Marks for refresh lcd area, which corresponds to specified rectangle in
+     * global (World) coordinates. If engine offset is (0,0), then this function
+     * refreshes the same area as refresh().
+     */
+    static void refreshWorld(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+    {
+        refresh(x1 - offset.x, y1 - offset.y, x2 - offset.x, y2 - offset.y);
+    }
+
+    /**
+     * Marks specified pixel area for redrawing by NanoEngine.
+     * @param point point in global (World) coordinates
+     */
+    static void refreshWorld(const NanoPoint &point)
+    {
+        refresh( point - offset );
+    }
+
+    /**
+     * Switches engine canvas to local coordinates system. This method can be useful
+     * to ease up drawing of some static elements on lcd display.
+     * @warning do not call twice subsequentally.
+     */
+    static void localCoordinates()
+    {
+        canvas.offset -= offset;
+    }
+
+    /**
+     * Switches engine canvas to global (World) coordinates system. This method can be useful
+     * to create screen moving animation.
+     * @warning do not call twice subsequentally.
+     */
+    static void worldCoordinates()
+    {
+        canvas.offset += offset;
+    }
+
+    /**
+     * Moves engine coordinate to new position (this sets World coordinates offset).
+     */
+    static void moveTo(const NanoPoint & position)
+    {
+        offset = position;
+    }
+
+    /**
+     * Moves engine coordinate to new position and mark whole display for refresh
+     * (this sets World coordinates offset).
+     */
+    static void moveToAndRefresh(const NanoPoint & position)
+    {
+        moveTo(position);
+        refresh();
+    }
+
+    /**
+     * Returns current World offset
+     */
+    const NanoPoint & getPosition() const
+    {
+        return offset;
+    }
+
+    /**
+     * Sets user-defined draw callback. This callback will be called everytime, engine needs
+     * to update display content. If callback returns false, engine will not update those area.
+     * You always have a way to find out, which area is being updated by engine via
+     * NanoEngine<>::canvas::getOffset() and NanoEngine<>::NE_TILE_SIZE.
+     * @warning   By default canvas in the engine is initialized with local screen coordinates. So
+     *            graphics object with [0,0] coordinates will be placed at topleft position on the
+     *            display. But engine supports also global coordinates, in this case actual object
+     *            position depends on current engine offset. Refer to worldCoordinates() and
+     *            localCoordinates().
+     * @param callback - user-defined draw callback.
+     * @note you can change draw callback anytime you need.
+     * @see worldCoordinates()
+     * @see localCoordinates()
+     */
+    static void drawCallback(TNanoEngineOnDraw callback)
+    {
+        m_onDraw = callback;
+    }
+
+    /**
+     * @brief Returns true if point is inside the rectangle area.
+     * Returns true if point is inside the rectangle area.
+     * @param p - point to check
+     * @param rect - rectangle, describing the region to check with the point
+     * @returns true if point is inside the rectangle area.
+     */
+    static bool collision(NanoPoint &p, NanoRect &rect) { return rect.collision( p ); }
+
+protected:
+    /**
+     * Contains information on tiles to be updated.
+     * Elements of array are rows and bits are columns.
+     */
+    static uint16_t   m_refreshFlags[NE_MAX_TILES_NUM];
+
+    /** Callback to call if specific tile needs to be updated */
+    static TNanoEngineOnDraw m_onDraw;
+
+    /**
+     * @brief refreshes content on oled display.
+     * Refreshes content on oled display. Call it, if you want to update the screen.
+     * Engine will update only those areas, which are marked by refresh()
+     * methods.
+     */
+    static void displayBuffer();
+
+    /**
+     * @brief prints popup message over display content
+     * prints popup message over display content
+     * @param msg - message to display
+     */
+    static void displayPopup(const char *msg);
+private:
+    /** Buffer, used by NanoCanvas */
+    static uint8_t    m_buffer[W * H * C::BITS_PER_PIXEL / 8];
+
+    static NanoPoint offset;
+};
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+uint16_t NanoEngineTiler<C,W,H,B>::m_refreshFlags[NE_MAX_TILES_NUM];
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+uint8_t NanoEngineTiler<C,W,H,B>::m_buffer[W * H * C::BITS_PER_PIXEL / 8];
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+C NanoEngineTiler<C,W,H,B>::canvas(W, H, m_buffer);
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+NanoPoint NanoEngineTiler<C,W,H,B>::offset = {0, 0};
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+TNanoEngineOnDraw NanoEngineTiler<C,W,H,B>::m_onDraw = nullptr;
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+void NanoEngineTiler<C,W,H,B>::displayBuffer()
+{
+    if (!m_onDraw)  // If onDraw handler is not set, just output current canvas
+    {
+        canvas.blt();
+        return;
+    }
+    for (lcduint_t y = 0; y < ssd1306_lcd.height; y = y + NE_TILE_HEIGHT)
+    {
+        uint16_t flag = m_refreshFlags[y >> NE_TILE_SIZE_BITS];
+        m_refreshFlags[y >> NE_TILE_SIZE_BITS] = 0;
+        for (lcduint_t x = 0; x < ssd1306_lcd.width; x = x + NE_TILE_WIDTH)
+        {
+            if (flag & 0x01)
+            {
+                canvas.setOffset(x, y);
+                if (m_onDraw())
+                {
+                    canvas.setOffset(x, y);
+                    canvas.blt();
+                }
+            }
+            flag >>=1;
+        }
+    }
+}
+
+template<class C, lcduint_t W, lcduint_t H, uint8_t B>
+void NanoEngineTiler<C,W,H,B>::displayPopup(const char *msg)
+{
+    NanoRect rect = { {8, (ssd1306_lcd.height>>1) - 8}, {ssd1306_lcd.width - 8, (ssd1306_lcd.height>>1) + 8} };
+    // TODO: It would be nice to calculate message height
+    NanoPoint textPos = { (ssd1306_lcd.width - (lcdint_t)strlen(msg)*s_fixedFont.h.width) >> 1, (ssd1306_lcd.height>>1) - 4 };
+    refresh(rect);
+    for (lcduint_t y = 0; y < ssd1306_lcd.height; y = y + NE_TILE_HEIGHT)
+    {
+        uint16_t flag = m_refreshFlags[y >> NE_TILE_SIZE_BITS];
+        m_refreshFlags[y >> NE_TILE_SIZE_BITS] = 0;
+        for (lcduint_t x = 0; x < ssd1306_lcd.width; x = x + NE_TILE_WIDTH)
+        {
+            if (flag & 0x01)
+            {
+                canvas.setOffset(x, y);
+                if (m_onDraw) m_onDraw();
+                canvas.setOffset(x, y);
+                canvas.setColor(RGB_COLOR8(0,0,0));
+                canvas.fillRect(rect);
+                canvas.setColor(RGB_COLOR8(192,192,192));
+                canvas.drawRect(rect);
+                canvas.printFixed( textPos.x, textPos.y, msg);
+
+                canvas.blt();
+            }
+            flag >>=1;
+        }
+    }
+}
+
+/**
+ * @}
+ */
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_gfx.cpp b/lib/libssd1306/src/nano_gfx.cpp
new file mode 100644
index 0000000..691c515
--- /dev/null
+++ b/lib/libssd1306/src/nano_gfx.cpp
@@ -0,0 +1,522 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "nano_gfx.h"
+#include "ssd1306.h"
+
+extern const uint8_t *s_font6x8;
+extern "C" SFixedFontInfo s_fixedFont;
+
+#ifdef CONFIG_MULTIPLICATION_NOT_SUPPORTED
+#define YADDR(y) (static_cast<uint16_t>((y) >> 3) << m_p)
+#define BADDR(b) ((b) << m_p)
+#else
+#define YADDR(y) (static_cast<uint16_t>((y) >> 3) * m_w)
+#define BADDR(b) ((b) * m_w)
+#endif
+
+void NanoCanvas::putPixel(uint8_t x, uint8_t y)
+{
+    if ((x>=m_w) || (y>=m_h)) return;
+    if (m_invertByte)
+    {
+        m_bytes[YADDR(y) + x] &= ((1 << (y & 0x7))^m_invertByte);
+    }
+    else
+    {
+        m_bytes[YADDR(y) + x] |= (1 << (y & 0x7));
+    }
+};
+
+void NanoCanvas::drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
+{
+    if (y1 >= m_h) return;
+    if (x2 < x1) x1 = 0;
+    if (x1 >= m_w) return;
+    if (x2 >= m_w) x2 = m_w - 1;
+    for(uint8_t x = x1; x<=x2; x++)
+        m_bytes[YADDR(y1) + x] |= (1 << (y1 & 0x7));
+};
+
+void NanoCanvas::drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
+{
+    if (x1 >= m_w) return;
+    if (y2 < y1) y1 = 0;
+    if (y1 >= m_h) return;
+    if (y2 >= m_h) y2 = m_h - 1;
+    for(uint8_t y = y1; y<=y2; y++)
+        m_bytes[YADDR(y) + x1] |= (1 << (y & 0x7));
+};
+
+void NanoCanvas::drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
+{
+    drawHLine(x1, y1, x2);
+    drawHLine(x1, y2, x2);
+    drawVLine(x1, y1, y2);
+    drawVLine(x2, y1, y2);
+};
+
+
+void NanoCanvas::fillRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t templ)
+{
+    templ ^= m_invertByte;
+    if ((x1 < x2) && (x1 >= m_w)) return;
+    if ((y1 < y2) && (y1 >= m_h)) return;
+    if (x1 > x2) x1 = 0;
+    if (y1 > y2) y1 = 0;
+    if (x2 >= m_w) x2 = m_w -1;
+    if (y2 >= m_h) y2 = m_h -1;
+    uint8_t bank1 = (y1 >> 3);
+    uint8_t bank2 = (y2 >> 3);
+    for (uint8_t bank = bank1; bank<=bank2; bank++)
+    {
+        uint8_t mask = 0xFF;
+        if (bank1 == bank2)
+        {
+            mask = (mask >> ((y1 & 7) + 7 - (y2 & 7))) << (y1 & 7);
+        }
+        else if (bank1 == bank)
+        {
+            mask = (mask << (y1 & 7));
+        }
+        else if (bank2 == bank)
+        {
+            mask = (mask >> (7 - (y2 & 7)));
+        }
+        for (uint8_t x=x1; x<=x2; x++)
+        {
+            m_bytes[BADDR(bank) + x] &= ~mask;
+            m_bytes[BADDR(bank) + x] |= (templ & mask);
+        }
+    }
+};
+
+
+void NanoCanvas::clear()
+{
+    memset(m_bytes, m_invertByte, static_cast<uint16_t>(m_w) * (m_h >> 3));
+}
+
+
+void NanoCanvas::charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j, topMask, bottomMask;
+    if (y>=m_h) return;
+    j = 0;
+    topMask = (0xFF >> (8 - (y & 0x7)));
+    bottomMask = (0xFF << (y & 0x7));
+    while(ch[j] != '\0')
+    {
+        uint8_t c = ch[j] - 32;
+        uint8_t ldata = 0;
+        for(i=0;i<6;i++)
+        {
+            if (x>=m_w) return;
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+                uint8_t temp = data | ldata;
+                ldata = data;
+                data = temp;
+            }
+            else
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i + 1]);
+                uint8_t temp = (data & 0xF0) | ldata;
+                ldata = (data & 0x0F);
+                data = temp;
+            }
+            m_bytes[YADDR(y) + x] &= topMask;
+            m_bytes[YADDR(y) + x] |= (data << (y & 0x7));
+            if (y+8 < m_h)
+            {
+                m_bytes[YADDR(y) + m_w + x] &= bottomMask;
+                m_bytes[YADDR(y) + m_w + x] |= (data >> (8 - (y & 0x7)));
+            }
+            x++;
+        }
+        j++;
+    }
+}
+
+void NanoCanvas::charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j = 0;
+    uint8_t text_index = 0;
+    uint8_t odd = 0;
+    uint8_t x = xpos;
+    uint8_t topMask, bottomMask;
+    if ( y >= m_h ) return;
+    topMask = (0xFF >> (8 - (y & 0x7)));
+    bottomMask = (0xFF << (y & 0x7));
+    for(;;)
+    {
+        if( ( x > m_w - 12 ) || ( ch[j] == '\0' ) )
+        {
+            x = xpos;
+            y += 8;
+            if (y > (m_h - 8))
+            {
+                break;
+            }
+            if (odd)
+            {
+                text_index = j;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            odd = !odd;
+        }
+        uint8_t c = ch[j] - 32;
+        uint8_t ldata = 0;
+        for( i=0; i<6; i++)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+                uint8_t temp = data | ldata;
+                ldata = data;
+                data = temp;
+            }
+            else
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i + 1]);
+                uint8_t temp = (data & 0xF0) | ldata;
+                ldata = (data & 0x0F);
+                data = temp;
+            }
+            if (odd) data >>= 4;
+            data = ((data & 0x01) ? 0x03: 0x00) |
+                   ((data & 0x02) ? 0x0C: 0x00) |
+                   ((data & 0x04) ? 0x30: 0x00) |
+                   ((data & 0x08) ? 0xC0: 0x00);
+
+            for (uint8_t n=2; n>0; n--)
+            {
+                m_bytes[YADDR(y) + x] &= topMask;
+                m_bytes[YADDR(y) + x] |= (data << (y & 0x7));
+                if (y+8 < m_h)
+                {
+                    m_bytes[YADDR(y) + m_w + x] &= bottomMask;
+                    m_bytes[YADDR(y) + m_w + x] |= (data >> (8 - (y & 0x7)));
+                }
+                x++;
+            }
+        }
+        j++;
+    }
+}
+
+void NanoCanvas::printFixed(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j = 0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    uint8_t topMask, bottomMask;
+    if ( y >= m_h ) return;
+    topMask = (0xFF >> (8 - (y & 0x7)));
+    bottomMask = (0xFF << (y & 0x7));
+    for(;;)
+    {
+        if( ( x > m_w - s_fixedFont.h.width ) || ( ch[j] == '\0' ) )
+        {
+            x = xpos;
+            y += 8;
+            if (y > (m_h - 8))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == s_fixedFont.pages)
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+        }
+        uint8_t c = ch[j] - 32;
+        if ( c > 224 )
+        {
+            c = 0;
+        }
+        uint8_t ldata = 0;
+        uint16_t offset = (c * s_fixedFont.pages + page_offset) * s_fixedFont.h.width;
+        for( i=0; i<s_fixedFont.h.width; i++)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+                uint8_t temp = data | ldata;
+                ldata = data;
+                data = temp;
+            }
+            else
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset + 1]);
+                uint8_t temp = (data & 0xF0) | ldata;
+                ldata = (data & 0x0F);
+                data = temp;
+            }
+            m_bytes[YADDR(y) + x] &= topMask;
+            m_bytes[YADDR(y) + x] |= (data << (y & 0x7));
+            if (y + 8 < m_h)
+            {
+                m_bytes[YADDR(y) + m_w + x] &= bottomMask;
+                m_bytes[YADDR(y) + m_w + x] |= (data >> (8 - (y & 0x7)));
+            }
+            offset++;
+            x++;
+        }
+        j++;
+    }
+}
+
+void NanoCanvas::printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j = 0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    uint8_t topMask, bottomMask;
+    if ( y >= m_h ) return;
+    topMask = (0xFF >> (8 - (y & 0x7)));
+    bottomMask = (0xFF << (y & 0x7));
+    for(;;)
+    {
+        if( ( x > m_w - (s_fixedFont.h.width<<1) ) || ( ch[j] == '\0' ) )
+        {
+            x = xpos;
+            y += 8;
+            if (y > (m_h - 8))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == (s_fixedFont.pages<<1))
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+        }
+        uint8_t c = ch[j] - 32;
+        if ( c > 224 )
+        {
+            c = 0;
+        }
+        uint8_t ldata = 0;
+        uint16_t offset = (c * s_fixedFont.pages + (page_offset >> 1)) * s_fixedFont.h.width;
+        for( i=0; i<s_fixedFont.h.width; i++)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+                uint8_t temp = data | ldata;
+                ldata = data;
+                data = temp;
+            }
+            else
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset + 1]);
+                uint8_t temp = (data & 0xF0) | ldata;
+                ldata = (data & 0x0F);
+                data = temp;
+            }
+            if (page_offset & 1) data >>= 4;
+            data = ((data & 0x01) ? 0x03: 0x00) |
+                   ((data & 0x02) ? 0x0C: 0x00) |
+                   ((data & 0x04) ? 0x30: 0x00) |
+                   ((data & 0x08) ? 0xC0: 0x00);
+
+            for (uint8_t n=2; n>0; n--)
+            {
+                m_bytes[YADDR(y) + x] &= topMask;
+                m_bytes[YADDR(y) + x] |= (data << (y & 0x7));
+                if (y+8 < m_h)
+                {
+                    m_bytes[YADDR(y) + m_w + x] &= bottomMask;
+                    m_bytes[YADDR(y) + m_w + x] |= (data >> (8 - (y & 0x7)));
+                }
+                x++;
+            }
+            offset++;
+        }
+        j++;
+    }
+}
+
+void NanoCanvas::drawSpritePgm(uint8_t x, uint8_t y, const uint8_t sprite[])
+{
+    uint8_t i;
+    for(i=0;i<8;i++)
+    {
+        if (x >= m_w) { x++; continue; }
+        uint8_t d = pgm_read_byte(&sprite[i]);
+        if (y < m_h)
+            m_bytes[YADDR(y) + x] |= (d << (y & 0x7));
+        if ((uint8_t)(y + 8) < m_h)
+            m_bytes[YADDR((uint8_t)(y + 8)) + x] |= (d >> (8 - (y & 0x7)));
+        x++;
+    }
+};
+
+
+void NanoCanvas::drawBitmap(uint8_t startX, uint8_t startY, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t x,y;
+    for(y=0;y<h;y+=8)
+    {
+        for(x=0;x<w;x++)
+        {
+            uint8_t scrX = startX + x;
+            if (scrX >= m_w) continue;
+            uint8_t d = pgm_read_byte(&buf[x + static_cast<uint16_t>(y>>3) * w]);
+            uint8_t scrY = y + startY;
+            scrX = x + startX;
+            if (scrY < m_h)
+                m_bytes[YADDR(scrY) + scrX] |= (d << (scrY & 0x7));
+            scrY+=8;
+            if (scrY < m_h)
+                m_bytes[YADDR(scrY) + scrX] |= (d >> (8 - (scrY & 0x7)));
+        }
+    }
+}
+
+
+void NanoCanvas::drawSprite(uint8_t x, uint8_t y, const uint8_t sprite[])
+{
+    uint8_t i;
+    for(i=0;i<8;i++)
+    {
+        if (x>=m_w) { x++; continue; }
+        uint8_t d = sprite[i];
+        if (uint8_t(y) < m_h)
+            m_bytes[YADDR(y) + x] |= (d << (y & 0x7));
+        if ((uint8_t)(y+8) < m_h)
+            m_bytes[YADDR((uint8_t)(y + 8)) + x] |= (d >> (8 - (y & 0x7)));
+        x++;
+    }
+};
+
+void NanoCanvas::drawSprite(SPRITE *sprite)
+{
+    uint8_t i;
+    for(i = 0; i < sprite->w; i++)
+    {
+        if ((sprite->x + i) >= m_w) { continue; }
+        uint8_t d = pgm_read_byte(&sprite->data[i]);
+        if (sprite->y < m_h)
+            m_bytes[YADDR(sprite->y) + sprite->x + i] |= (d << (sprite->y & 0x7));
+        if (uint8_t(sprite->y + 8) < m_h)
+            m_bytes[YADDR(uint8_t(sprite->y + 8)) + sprite->x + i] |= (d >> (8 - (sprite->y & 0x7)));
+    }
+}
+
+void NanoCanvas::blt(uint8_t x, uint8_t y)
+{
+    ssd1306_drawBuffer(x, y, m_w, m_h, m_bytes);
+}
+
+void NanoCanvas::invert()
+{
+    for(uint16_t i=0; i< static_cast<uint16_t>(m_w) * (m_h >> 3); i++)
+       m_bytes[i] = ~m_bytes[i];
+}
+
+void NanoCanvas::flipH()
+{
+   for (uint8_t y=0; y<(m_h>>3); y++)
+       for (uint8_t x=0; x<m_w>>1; x++)
+       {
+           uint8_t temp = m_bytes[YADDR(y) + x];
+           m_bytes[YADDR(y) + x] = m_bytes[YADDR(y) + m_w - x -1];
+           m_bytes[YADDR(y) + m_w - x -1] = temp;
+       }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//                              SPRITE OBJECT
+////////////////////////////////////////////////////////////////////////////////
+
+void SPRITE::setPos(uint8_t x, uint8_t y)
+{
+    this->x = x;
+    this->y = y;
+}
+
+void SPRITE::draw()
+{
+    ssd1306_drawSprite(this);
+}
+
+void SPRITE::eraseTrace()
+{
+    ssd1306_eraseTrace(this);
+}
+
+void SPRITE::erase()
+{
+    ssd1306_eraseSprite(this);
+}
diff --git a/lib/libssd1306/src/nano_gfx.h b/lib/libssd1306/src/nano_gfx.h
new file mode 100644
index 0000000..750ec6e
--- /dev/null
+++ b/lib/libssd1306/src/nano_gfx.h
@@ -0,0 +1,239 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file nano_gfx.h Drawing in memory buffer
+ */
+
+
+#ifndef _NANO_GFX_H_
+#define _NANO_GFX_H_
+
+#include "nano_gfx_types.h"
+#include "font6x8.h"
+
+/**
+ * NanoCanvas represents objects for drawing in memory buffer
+ * @deprecated Use NanoCanvas1, NanoCanvas8, NanoCanvas16 instead
+ */
+class NanoCanvas
+{
+public:
+    /**
+     * Creates new canvas object.
+     * Width can be of any value.
+     * Height should be divided by 8.
+     * Memory buffer must be not less than w * h / 8.
+     *
+     * @param w - width
+     * @param h - height
+     * @param bytes - pointer to memory buffer to use
+     */
+    NanoCanvas(uint8_t w, uint8_t h, uint8_t *bytes)
+    {
+        m_w = w;
+        m_h = h;
+        m_p = 3;
+        m_invertByte = 0;
+        while (w >> (m_p+1)) { m_p++; };
+        m_bytes = bytes;
+        clear();
+    };
+
+    /**
+     * Draws pixel on specified position
+     * @param x - position X
+     * @param y - position Y
+     * @deprecated Use putPixel() instead.
+     */
+    inline void drawPixel(uint8_t x, uint8_t y) __attribute__ ((deprecated)) { putPixel(x,y); };
+
+    /**
+     * Draws pixel on specified position
+     * @param x - position X
+     * @param y - position Y
+     */
+    void putPixel(uint8_t x, uint8_t y);
+
+    /**
+     * Draws rectangle
+     * @param x1 - left boundary
+     * @param y1 - top boundary
+     * @param x2 - right boundary
+     * @param y2 - bottom boundary
+     */
+    void drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
+
+    /**
+     * Draws horizontal line
+     * @param x1 - left boundary
+     * @param y1 - position Y
+     * @param x2 - right boundary
+     */
+    void drawHLine(uint8_t x1, uint8_t y1, uint8_t x2);
+
+    /**
+     * Draws vertical line
+     * @param x1 - position X
+     * @param y1 - top boundary
+     * @param y2 - bottom boundary
+     */
+    void drawVLine(uint8_t x1, uint8_t y1, uint8_t y2);
+
+    /**
+     * Draws filled rectangle
+     * @param x1 - left boundary
+     * @param y1 - top boundary
+     * @param x2 - right boundary
+     * @param y2 - bottom boundary
+     * @param templ - template to use for filling rectangle
+     */
+    void fillRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t templ);
+
+    /**
+     * Clears canvas
+     */
+    void clear();
+
+    /**
+     * Prints text to canvas buffer
+     * @param x - start position X
+     * @param y - start position Y
+     * @param ch - text to print (null-terminated)
+     * @param style - font style (EFontStyle), normal by default
+     * @deprecated use printFixed() instead.
+     */
+    inline void char_f6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style = STYLE_NORMAL)
+    __attribute__ ((deprecated))
+    { charF6x8(x,y,ch,style); };
+
+    /**
+     * Prints text to canvas buffer
+     * @param x - start position X
+     * @param y - start position Y
+     * @param ch - text to print (null-terminated)
+     * @param style - font style (EFontStyle), normal by default
+     * @deprecated use printFixed() instead.
+     */
+    void charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * Prints text to canvas buffer using double size font 12x16
+     * @param x - start position X
+     * @param y - start position Y
+     * @param ch - text to print (null-terminated)
+     * @param style - font style (EFontStyle), normal by default
+     */
+    void charF12x16(uint8_t x, uint8_t y, const char ch[], EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * Prints text to canvas buffer using fixed font.
+     * @param xpos - start position X
+     * @param y - start position Y
+     * @param ch - text to print (null-terminated)
+     * @param style - font style (EFontStyle), normal by default
+     * @see ssd1306_setFixedFont().
+     */
+    void printFixed(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * Prints text to canvas buffer using fixed font double size.
+     * @param xpos - start position X
+     * @param y - start position Y
+     * @param ch - text to print (null-terminated)
+     * @param style - font style (EFontStyle), normal by default
+     * @see ssd1306_setFixedFont().
+     */
+    void printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style = STYLE_NORMAL);
+
+    /**
+     * Sprite is small image 8x8, sprite doesn't change background
+     * Reads sprite from Flash memory
+     */
+    void drawSpritePgm(uint8_t x, uint8_t y, const uint8_t sprite[]);
+
+    /**
+     * Draw bitmap to the buffer from SRAM.
+     * @param x - horizontal position in pixels
+     * @param y - vertical position in pixels
+     * @param w - width of bitmap in pixels
+     * @param h - height of bitmap in pixels (must be divided by 8)
+     * @param buf - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+     */
+    void drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+    /**
+     * Sprite is small image 8x8, sprite doesn't change background
+     * Reads sprite from SRAM memory
+     */
+    void drawSprite(uint8_t x, uint8_t y, const uint8_t sprite[]);
+
+    /**
+     * Draws sprite in the buffer
+     * @param sprite - pointer to SPRITE structure containing sprite information
+     */
+    void drawSprite(SPRITE *sprite);
+
+    /**
+     * Returns canvas width
+     */
+    inline uint8_t width() const { return m_w; };
+
+    /**
+     * Returns canvas height
+     */
+    inline uint8_t height() const { return m_h; };
+
+    /**
+     * Returns canvas buffer
+     */
+    inline uint8_t *buffer() const { return m_bytes; };
+
+    /**
+     * Inverts content in the buffer.
+     * white becomes black and wise versa.
+     */
+    void invert();
+
+    /**
+     * Flips image horizontally.
+     */
+    void flipH();
+
+   /**
+    * Draws canvas on the LCD display
+    * @param x - horizontal position in pixels
+    * @param y - vertical position in blocks (pixels/8)
+    */
+    void blt(uint8_t x, uint8_t y);
+
+private:
+    uint8_t m_w;
+    uint8_t m_p;
+    uint8_t m_h;
+    uint8_t m_invertByte;
+    uint8_t *m_bytes;
+};
+
+#endif
+
diff --git a/lib/libssd1306/src/nano_gfx_types.h b/lib/libssd1306/src/nano_gfx_types.h
new file mode 100644
index 0000000..2348401
--- /dev/null
+++ b/lib/libssd1306/src/nano_gfx_types.h
@@ -0,0 +1,261 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file nano_gfx_types.h Basic structures of nano gfx library
+ */
+
+#ifndef _NANO_GFX_TYPES_H_
+#define _NANO_GFX_TYPES_H_
+
+#include "ssd1306_hal/io.h"
+
+#ifndef min
+/** Macros returning minimum of 2 numbers */
+#define min(a,b) ((a)<(b)?(a):(b))
+#endif
+
+#ifndef max
+/** Macros returning maximum of 2 numbers */
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+
+/** Macro to generate 8-bit color for SSD1331 OLED display */
+#define RGB_COLOR8(r,g,b)    ( (r & 0xE0) | ((g >> 3)&0x1C) | (b>>6) )
+
+/** Macro to generate 16-bit color for SSD1351 OLED display */
+#define RGB_COLOR16(r,g,b)   ( ((r<<8) & 0xF800) | ((g << 3)&0x07E0) | (b>>3) )
+
+/** Macro to convert 3-3-2 color to 5-6-5 color */
+#define RGB8_TO_RGB16(c)     ( (((uint16_t)c & 0b11100000) << 8) | \
+                               (((uint16_t)c & 0b00011100) << 6) | \
+                               (((uint16_t)c & 0b00000011) << 3) )
+
+/** Macro to convert 8-bit RGB to 4-bit monochrome format */
+#define RGB8_TO_GRAY4(rgb)  ( (rgb >> 6) + ((rgb >> 2) & 0x07) + (rgb & 0x03) )
+
+/** Macro to generate 4-bit monochrome color from gray component */
+#define GRAY_COLOR4(gray)    ( ((gray >> 4) & 0x0F) | (gray & 0xF0) )
+
+/** Macro to convert 5-6-5 color to 3-3-2 color */
+#define RGB16_TO_RGB8(c)     ( ((uint16_t)(c >> 8) & 0b11100000) | \
+                               ((uint16_t)(c >> 6) & 0b00011100) | \
+                               ((uint16_t)(c >> 3) & 0b00000011) )
+
+/** Pointer type to LCD display initialization function */
+typedef void (*InitFunction)(void);
+
+/** Supported font styles */
+typedef enum
+{
+    STYLE_NORMAL,
+    STYLE_BOLD,
+    STYLE_ITALIC,
+} EFontStyle;
+
+/** Supported scale font values */
+typedef enum
+{
+    FONT_SIZE_NORMAL = 0,
+    FONT_SIZE_2X     = 1,
+    FONT_SIZE_4X     = 2,
+    FONT_SIZE_8X     = 3,
+} EFontSize;
+
+#pragma pack(push, 1)
+/** Structure describes font format in memory */
+typedef struct
+{
+    uint8_t type;         ///< font type: 0 - Fixed Font
+    uint8_t width;        ///< width in pixels
+    uint8_t height;       ///< height in pixels
+    uint8_t ascii_offset; ///< ascii offset
+} SFontHeaderRecord;
+
+/** Structure describes unicode block in font data */
+typedef struct
+{
+    uint16_t start_code;  ///< unicode start code
+    uint8_t count;        ///< count of unicode chars in block
+} SUnicodeBlockRecord;
+
+#pragma pack(pop)
+
+/** Structure is used for internal font presentation */
+typedef struct
+{
+    SFontHeaderRecord h; ///< record, containing information on font
+    uint8_t count; ///< count of characters
+    uint8_t pages; ///< height in pages (each page height is 8-pixels)
+    uint8_t glyph_size;  ///< glyph size in bytes
+    const uint8_t *primary_table; ///< font chars bits
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    const uint8_t *secondary_table; ///< font chars bits
+#endif
+} SFixedFontInfo;
+
+/** Structure describes single char information */
+typedef struct
+{
+    uint8_t width;      ///< char width in pixels
+    uint8_t height;     ///< char height in pixels
+    uint8_t spacing;      ///< additional spaces after char in pixels
+    const uint8_t *glyph; ///< char data, located in progmem.
+} SCharInfo;
+
+/**
+ * Rectangle region. not used now
+ */
+typedef struct
+{
+    /// left
+    uint8_t left;
+    /// top
+    uint8_t top;
+    /// right
+    uint8_t right;
+    /// bottom
+    uint8_t bottom;
+} SSD1306_RECT;
+
+
+/**
+ * SPRITE structure represents logical graphics object
+ * @deprecated Use NanoSprite or NanoFixedSprite instead.
+ */
+typedef struct SPRITE
+{
+    /// draw position X on the screen
+    uint8_t x;
+    /// draw position Y on the screen
+    uint8_t y;
+    /// sprite width
+    uint8_t w;
+    /// last draw position X on the screen
+    uint8_t lx;
+    /// last draw position Y on the screen
+    uint8_t ly;
+    /// Pointer to PROGMEM data, representing sprite image
+    const uint8_t * data;
+    /// Pointer to PROGMEM data, representing sprite transparencyMask (can be nullptr)
+    const uint8_t * transparentMask;
+
+#ifdef __cplusplus
+    /**
+     * Updates active position of the sprite (doesn't redraw it)
+     * @param x - horizontal position
+     * @param y - vertical position
+     */
+    void setPos(uint8_t x, uint8_t y);
+
+    /**
+     * Draws sprite on the display. Position can be changed by
+     * updating x and y fields of SPRITE structure.
+     */
+    void draw();
+
+    /**
+     * Clears some sprite parts in old position on the display.
+     */
+    void eraseTrace();
+
+    /**
+     * Clears sprite from the display leaving black rectangle.
+     */
+    void erase();
+
+    /**
+     * Returns true if sprite is moved not far from previous position,
+     * and old and new rects have intersection.
+     */
+    inline bool isNearMove() const
+    {
+        /* We emulate abs function for unsigned vars here */
+        return (((uint8_t)(x-lx)<w) || ((uint8_t)(lx-x)<w)) &&
+               (((uint8_t)(y-ly)<8) || ((uint8_t)(ly-y)<8));
+    };
+
+    /**
+     * Returns area in 8-pixel blocks, which is used by the sprite.
+     *
+     * For example, if sprite pixels coordinates are 10,18 and size is 8x8,
+     * the rect will be (left:1,top:2,right:2,bottom:3).
+     * if sprite pixels coordinates are 32,16 and size is 8x8,
+     * the rect will be (left:4,top:2,right:4,bottom:2).
+     */
+    inline SSD1306_RECT getRect() const
+    {
+        uint8_t right = ((x + w - 1)>>3);
+        uint8_t bottom = ((y + 7)>>3);
+        uint8_t left = x>>3; left = left < right ? left: 0;
+        uint8_t top = y>>3; top = top < bottom ? top: 0;
+        return (SSD1306_RECT){ left, top, right, bottom };
+    };
+
+    /**
+     * Returns area in 8-pixel blocks, which was used by the sprite last time
+     * For example, if sprite pixels coordinates are 10,18 and size is 8x8,
+     * the rect will be (left:1,top:2,right:2,bottom:3).
+     * if sprite pixels coordinates are 32,16 and size is 8x8,
+     * the rect will be (left:4,top:2,right:4,bottom:2).
+     */
+    inline SSD1306_RECT getLRect() const
+    {
+        uint8_t left = lx;
+        uint8_t top = ly;
+        uint8_t right = (uint8_t)(lx + w - 1);
+        uint8_t bottom = (uint8_t)(ly + 7);
+        left = left < right ? left: 0;
+        top = top < bottom ? top: 0;
+        return (SSD1306_RECT){ left, top, right, bottom };
+    };
+
+    /**
+     * Returns area in 8-pixel blocks, which includes old and new position
+     * For example, if sprite pixels coordinates are 12,18 and size is 8x8,
+     * and sprite is moved to the right by 6 pixels, the rect will be
+     * (left:1,top:2,right:3,bottom:3).
+     */
+    inline SSD1306_RECT getUpdateRect() const
+    {
+        uint8_t left = min(x,lx);
+        uint8_t top = min(y,ly);
+        uint8_t right = max((uint8_t)(x + w - 1), (uint8_t)(lx + w - 1));
+        if (((uint8_t)(lx + w - 1) < w) && (right > 2*w))
+        {
+            right = (uint8_t)(lx + w - 1);
+        }
+        uint8_t bottom = max((uint8_t)(y + 7), (uint8_t)(ly + 7));
+        if (((uint8_t)(ly + 7) < 8) && (bottom > 16))
+        {
+            bottom = (uint8_t)(ly + 7);
+        }
+        if ( left > right ) left = 0;
+        if ( top > bottom ) top = 0;
+        return (SSD1306_RECT){ left, top, right, bottom };
+    };
+#endif
+} SPRITE;
+
+// ----------------------------------------------------------------------------
+#endif // _NANO_GFX_TYPES_H_
diff --git a/lib/libssd1306/src/sprite_pool.cpp b/lib/libssd1306/src/sprite_pool.cpp
new file mode 100644
index 0000000..1a3ff91
--- /dev/null
+++ b/lib/libssd1306/src/sprite_pool.cpp
@@ -0,0 +1,132 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "sprite_pool.h"
+#include "ssd1306.h"
+
+
+SpritePool::SpritePool( )
+   : m_canvas( 8, 8, m_canvasBuf)
+   , m_canvasBuf{0}
+   , m_sprites{0}
+   , m_count( 0 )
+{
+    m_rect.left = 0;
+    m_rect.top = 0;
+    m_rect.right = (ssd1306_displayWidth() >> 3) - 1;
+    m_rect.bottom = (ssd1306_displayHeight() >> 3) - 1;
+};
+
+void SpritePool::drawBlock(uint8_t blockColumn, uint8_t blockRow)
+{
+    m_canvas.clear();
+};
+
+void SpritePool::drawSprites()
+{
+    for (uint8_t i = 0; i < m_count; i++)
+    {
+        SPRITE * sprite = m_sprites[i];
+        if ( sprite->isNearMove( ) )
+        {
+            updateRegion(sprite->getUpdateRect());
+        }
+        else
+        {
+            updateRegion(sprite->getRect());
+            updateRegion(sprite->getLRect());
+        }
+        sprite->lx = sprite->x;
+        sprite->ly = sprite->y;
+    }
+}
+
+void SpritePool::refreshScreen()
+{
+    updateRegion( (SSD1306_RECT){ (uint8_t)(m_rect.left<<3),
+                                  (uint8_t)(m_rect.top<<3),
+                                  (uint8_t)(m_rect.right<<3),
+                                  (uint8_t)(m_rect.bottom<<3) } );
+}
+
+uint8_t SpritePool::add( SPRITE &sprite )
+{
+    uint8_t index = m_count;
+    if (index >= MAX_SPRITES)
+    {
+        return SpritePool::SP_ERR_NO_SPACE;
+    }
+    m_sprites[index] = &sprite;
+    m_count++;
+    return index;
+};
+
+void SpritePool::clear()
+{
+    m_count = 0;
+};
+
+void SpritePool::remove( SPRITE &sprite )
+{
+    updateRegion( sprite.getLRect() );
+    for (uint8_t i=0; i<m_count; i++)
+    {
+        if (m_sprites[i] == &sprite)
+        {
+            m_count--;
+            for (uint8_t j=i; j<m_count; j++)
+            {
+                m_sprites[j] = m_sprites[j+1];
+            }
+            break;
+        }
+    }
+} 
+
+
+void SpritePool::updateRegion(SSD1306_RECT ur)
+{
+    ur.left >>= 3;
+    ur.top >>= 3;
+    ur.right >>= 3;
+    ur.bottom >>= 3;
+    ur.left = max(ur.left, m_rect.left);
+    ur.top = max(ur.top, m_rect.top);
+    ur.right = min(ur.right, m_rect.right);
+    ur.bottom = min(ur.bottom, m_rect.bottom);
+    for(uint8_t x = ur.left; x <= ur.right; x++)
+    {
+       for(uint8_t y = ur.top; y <= ur.bottom; y++)
+       {
+           drawBlock(x,y);
+           for (uint8_t i = 0; i < m_count; i++)
+           {
+               m_canvas.drawSpritePgm(m_sprites[i]->x - (x << 3),
+                                      m_sprites[i]->y - (y << 3),
+                                      m_sprites[i]->data );
+           }
+           m_canvas.blt( x << 3, y );
+       }
+    }
+}
diff --git a/lib/libssd1306/src/sprite_pool.h b/lib/libssd1306/src/sprite_pool.h
new file mode 100644
index 0000000..126ea78
--- /dev/null
+++ b/lib/libssd1306/src/sprite_pool.h
@@ -0,0 +1,131 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file sprite_pool.h Controlling sprites on the display
+ */
+
+
+#ifndef _SPRITE_POOL_H_
+#define _SPRITE_POOL_H_
+
+#include "nano_gfx.h"
+
+/**
+ * Sprites pool class automates processing of several sprites.
+ * It remembers pointers to SPRITE objects, and carefully
+ * updates only the areas, touched by the sprites. So, it
+ * reduces number of i2c calls to SSD1306 display.
+ * @warning this class is deprecated and not supported anymore.
+ * @deprecated use NanoEngine, NanoSprite objects.
+ */
+class SpritePool
+{
+public:
+    /// No free space for new sprite error
+    static const uint8_t SP_ERR_NO_SPACE = 0xFF;
+
+#if defined(ESP32) || defined(ESP8266)
+    /// Defines max sprites number supported by SpritePool
+    static const uint8_t MAX_SPRITES = 32;
+#else
+    /// Defines max sprites number supported by SpritePool
+    static const uint8_t MAX_SPRITES = 10;
+#endif
+
+    /**
+     * Creates empty SpritePool object.
+     * It is able to hold up to 10 sprites on AVR
+     * platforms and up to 32 sprites on ESP platforms.
+     */
+    SpritePool( );
+
+    /**
+     * Draw all areas, touched by the sprites.
+     * To remove flickering, the method uses NanoCanvas
+     * capabilities.
+     */
+    void drawSprites();
+
+    /**
+     * Redraws whole area, used by the sprites.
+     */
+    void refreshScreen();
+
+    /**
+     * Adds SPRITE object to the internal list of SpritePool
+     * @param sprite - reference to SPRITE object
+     * @return index of added object or SP_ERR_NO_SPACE in case of error.
+     */
+    uint8_t add( SPRITE &sprite );
+
+    /**
+     * Removes all SPRITE objects from internal list of SpritePool.
+     */
+    void clear();
+
+    /**
+     * Removes specific SPRITE object from the SpritePool.
+     */
+    void remove( SPRITE &sprite );
+
+    /**
+     * Sets active paint area region in blocks (pixels / 8)
+     * @param rect - region in blocks (pixels / 8)
+     */
+    void setRect(SSD1306_RECT rect) { m_rect = rect; };
+
+protected:
+    /// Canvas used to draw sprites to avoid flickering.
+    NanoCanvas    m_canvas;
+
+    /// Rectangle, which specifies part of the display, used by the sprites
+    SSD1306_RECT  m_rect;
+
+    /**
+     * This method is call every time 8x8 pixels block is needed to be drawn.
+     * Use m_canvas field variable, which represents block to update.
+     * For example, you can draw any 8x8 image, starting at 0,0 position in m_canvas.
+     *
+     * @param blockColumn - column of the block to redraw
+     * @param blockRow    - row of the block to redraw
+     * @note 128x64 display has 16 columns and 8 rows.
+     */
+    virtual void drawBlock(uint8_t blockColumn, uint8_t blockRow);
+
+private:
+
+    /// Internal buffer for Canvas
+    uint8_t m_canvasBuf[8*8/8];
+
+    /// Sprites container
+    SPRITE *m_sprites[MAX_SPRITES];
+
+    /// Count of registered sprites
+    uint8_t m_count;
+
+    void updateRegion(SSD1306_RECT ur);
+};
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306.h b/lib/libssd1306/src/ssd1306.h
new file mode 100644
index 0000000..3199f5a
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306.h
@@ -0,0 +1,72 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306.h SSD1306 basic draw functions
+ */
+
+#ifndef _SSD1306_H_
+#define _SSD1306_H_
+
+#include "nano_gfx_types.h"
+#include "ssd1306_generic.h"
+#include "ssd1306_1bit.h"
+#include "ssd1306_8bit.h"
+#include "ssd1306_16bit.h"
+#include "ssd1306_fonts.h"
+
+#include "lcd/lcd_common.h"
+#include "lcd/oled_ssd1306.h"
+#include "lcd/oled_ssd1325.h"
+#include "lcd/oled_ssd1327.h"
+#include "lcd/oled_ssd1331.h"
+#include "lcd/oled_ssd1351.h"
+#include "lcd/oled_sh1106.h"
+#include "lcd/lcd_pcd8544.h"
+#include "lcd/lcd_il9163.h"
+#include "lcd/lcd_ili9341.h"
+#include "lcd/composite_video.h"
+
+#include "lcd/oled_template.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * Returns display height in pixels
+ */
+lcduint_t      ssd1306_displayHeight(void);
+
+/**
+ * @ingroup LCD_INTERFACE_API
+ * Returns display width in pixels
+ */
+lcduint_t      ssd1306_displayWidth(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _SSD1306_H_
diff --git a/lib/libssd1306/src/ssd1306_16bit.c b/lib/libssd1306/src/ssd1306_16bit.c
new file mode 100644
index 0000000..a1f4738
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_16bit.c
@@ -0,0 +1,366 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_16bit.h"
+#include "ssd1306_generic.h"
+#include "intf/ssd1306_interface.h"
+#include "lcd/lcd_common.h"
+#include "ssd1306_hal/io.h"
+
+extern uint16_t ssd1306_color;
+extern uint8_t s_ssd1306_invertByte;
+extern lcduint_t ssd1306_cursorX;
+extern lcduint_t ssd1306_cursorY;
+extern SFixedFontInfo s_fixedFont;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+extern uint8_t g_ssd1306_unicode;
+#endif
+
+void    ssd1306_setRgbColor16(uint8_t r, uint8_t g, uint8_t b)
+{
+    ssd1306_color = RGB_COLOR16(r,g,b);
+}
+
+static void ssd1306_drawBufferPitch16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data)
+{
+    ssd1306_lcd.set_block(x, y, w);
+    while (h--)
+    {
+        lcduint_t line = w << 1;
+        while (line--)
+        {
+            ssd1306_intf.send( *data );
+            data++;
+        }
+        data += pitch - (w << 1);
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBufferFast16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data)
+{
+    ssd1306_drawBufferPitch16(x, y, w, h, w<<1, data);
+}
+
+void ssd1306_drawBufferEx16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data)
+{
+    ssd1306_drawBufferPitch16( x, y, w, h, pitch, data );
+}
+
+// IMPORTANT: ALL 16-BIT OLED DISPLAYS ALSO SUPPORT 8-BIT DIRECT DRAW FUNCTIONS
+//            REFER TO ssd1306_8bit.c
+
+void ssd1306_drawMonoBuffer16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t bit = 1;
+    uint16_t blackColor = s_ssd1306_invertByte ? ssd1306_color : 0x00;
+    uint16_t color = s_ssd1306_invertByte ? 0x00 : ssd1306_color;
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    while (h--)
+    {
+        lcduint_t wx = w;
+        while (wx--)
+        {
+            uint8_t data = *bitmap;
+            if ( data & bit )
+                ssd1306_lcd.send_pixels16( color );
+            else
+                ssd1306_lcd.send_pixels16( blackColor );
+            bitmap++;
+        }
+        bit <<= 1;
+        if (bit == 0)
+        {
+            bit = 1;
+        }
+        else
+        {
+            bitmap -= w;
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_fillScreen16(uint16_t fill_Data)
+{
+    ssd1306_lcd.set_block(0, 0, 0);
+    uint32_t count = (uint32_t)ssd1306_lcd.width * (uint32_t)ssd1306_lcd.height;
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels16( fill_Data );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_clearScreen16(void)
+{
+    ssd1306_fillScreen16( 0x0000 );
+}
+
+void ssd1306_putPixel16(lcdint_t x, lcdint_t y)
+{
+    ssd1306_lcd.set_block(x, y, 0);
+    ssd1306_lcd.send_pixels16( ssd1306_color );
+    ssd1306_intf.stop();
+}
+
+void ssd1306_putColorPixel16(lcdint_t x, lcdint_t y, uint16_t color)
+{
+    ssd1306_lcd.set_block(x, y, 0);
+    ssd1306_lcd.send_pixels16( color );
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawVLine16(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    ssd1306_lcd.set_block(x1, y1, 1);
+    while (y1<=y2)
+    {
+        ssd1306_lcd.send_pixels16( ssd1306_color );
+        y1++;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawHLine16(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    ssd1306_lcd.set_block(x1, y1, 0);
+    while (x1 < x2)
+    {
+        ssd1306_lcd.send_pixels16( ssd1306_color );
+        x1++;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawLine16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    lcduint_t  dx = x1 > x2 ? (x1 - x2): (x2 - x1);
+    lcduint_t  dy = y1 > y2 ? (y1 - y2): (y2 - y1);
+    lcduint_t  err = 0;
+    if (dy > dx)
+    {
+        if (y1 > y2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; y1<=y2; y1++)
+        {
+            err += dx;
+            if (err >= dy)
+            {
+                 err -= dy;
+                 x1 < x2 ? x1++: x1--;
+            }
+            ssd1306_putPixel16( x1, y1 );
+        }
+    }
+    else
+    {
+        if (x1 > x2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; x1<=x2; x1++)
+        {
+            err += dy;
+            if (err >= dx)
+            {
+                 err -= dx;
+                 if (y1 < y2) y1++; else y1--;
+            }
+            ssd1306_putPixel16( x1, y1 );
+        }
+    }
+}
+
+void ssd1306_drawRect16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    ssd1306_drawHLine16(x1,y1,x2);
+    ssd1306_drawHLine16(x1,y2,x2);
+    ssd1306_drawVLine16(x1,y1,y2);
+    ssd1306_drawVLine16(x2,y1,y2);
+}
+
+void ssd1306_fillRect16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    ssd1306_lcd.set_block(x1, y1, x2 - x1 + 1);
+    uint16_t count = (x2 - x1 + 1) * (y2 - y1 + 1);
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels16( ssd1306_color );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawMonoBitmap16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t bit = 1;
+    uint16_t blackColor = s_ssd1306_invertByte ? ssd1306_color : 0x00;
+    uint16_t color = s_ssd1306_invertByte ? 0x00 : ssd1306_color;
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    while (h--)
+    {
+        lcduint_t wx = w;
+        while ( wx-- )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            if ( data & bit )
+                ssd1306_lcd.send_pixels16( color );
+            else
+                ssd1306_lcd.send_pixels16( blackColor );
+            bitmap++;
+        }
+        bit <<= 1;
+        if ( bit == 0 )
+        {
+            bit = 1;
+        }
+        else
+        {
+            bitmap -= w;
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBitmap16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    uint32_t count = (w) * (h);
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels16( (pgm_read_byte( &bitmap[0] ) << 8) | pgm_read_byte( &bitmap[1] ) );
+        bitmap += 2;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_clearBlock16(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
+{
+    ssd1306_lcd.set_block(x, y, w);
+    uint32_t count = w * h;
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels16( 0x0000 );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_setCursor16(lcduint_t x, lcduint_t y)
+{
+    ssd1306_cursorX = x;
+    ssd1306_cursorY = y;
+}
+
+void ssd1306_printChar16(uint8_t c)
+{
+    uint16_t unicode = ssd1306_unicode16FromUtf8(c);
+    if (unicode == SSD1306_MORE_CHARS_REQUIRED) return;
+    SCharInfo char_info;
+    ssd1306_getCharBitmap(unicode, &char_info);
+    ssd1306_drawMonoBitmap16(ssd1306_cursorX,
+                ssd1306_cursorY,
+                char_info.width,
+                char_info.height,
+                char_info.glyph );
+}
+
+size_t ssd1306_write16(uint8_t ch)
+{
+    if (ch == '\r')
+    {
+        ssd1306_cursorX = 0;
+        return 0;
+    }
+    SCharInfo char_info;
+    uint8_t gotoNewLine = 1;
+    if (ch != '\n')
+    {
+        uint16_t unicode = ssd1306_unicode16FromUtf8(ch);
+        if (unicode == SSD1306_MORE_CHARS_REQUIRED) return 0;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        gotoNewLine = (ssd1306_cursorX > (ssd1306_lcd.width - char_info.width));
+    }
+    if ( gotoNewLine )
+    {
+        ssd1306_cursorX = 0;
+        ssd1306_cursorY += s_fixedFont.h.height;
+        if ( ssd1306_cursorY > ssd1306_lcd.height - s_fixedFont.h.height )
+        {
+            ssd1306_cursorY = 0;
+        }
+        ssd1306_clearBlock16(0, ssd1306_cursorY, ssd1306_lcd.width, s_fixedFont.h.height);
+        if (ch == '\n')
+        {
+            return 0;
+        }
+    }
+    if ( 1 )
+    {
+        uint16_t color = ssd1306_color;
+        ssd1306_color = s_ssd1306_invertByte ? color : 0x0000;
+        ssd1306_fillRect16( ssd1306_cursorX, ssd1306_cursorY,
+                    ssd1306_cursorX + char_info.width + char_info.spacing - 1,
+                    ssd1306_cursorY + s_fixedFont.h.height - 1 );
+        ssd1306_color = color;
+    }
+    ssd1306_drawMonoBitmap16( ssd1306_cursorX,
+                              ssd1306_cursorY,
+                              char_info.width,
+                              char_info.height,
+                              char_info.glyph);
+    ssd1306_cursorX += char_info.width + char_info.spacing;
+    return 1;
+}
+
+size_t ssd1306_print16(const char ch[])
+{
+    size_t n = 0;
+    while (*ch)
+    {
+        n += ssd1306_write16(*ch);
+        ch++;
+    }
+    return n;
+}
+
+uint8_t ssd1306_printFixed16(lcdint_t x, lcdint_t y, const char *ch, EFontStyle style)
+{
+    ssd1306_cursorX = x;
+    ssd1306_cursorY = y;
+    return ssd1306_print16(ch);
+}
+
+
diff --git a/lib/libssd1306/src/ssd1306_16bit.h b/lib/libssd1306/src/ssd1306_16bit.h
new file mode 100644
index 0000000..f3811f6
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_16bit.h
@@ -0,0 +1,303 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_16bit.h 16-bit specific draw functions
+ */
+
+#ifndef _SSD1306_16BIT_H_
+#define _SSD1306_16BIT_H_
+
+#include "nano_gfx_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////
+//                 DIRECT GRAPH FUNCTIONS
+///////////////////////////////////////////////////////////////////////
+
+/**
+ * @defgroup LCD_16BIT_GRAPHICS DIRECT DRAW: 16-bit API functions only for color displays
+ * @{
+ *
+ * @brief LCD direct draw functions only for color display.
+ *
+ * @details LCD direct draw functions are applicable for color display types. These functions will NOT work
+ *        in ssd1306 compatible mode. Use ssd1306_setMode() function to change display mode to NORMAL.
+ *        You can combine combine NanoEngine capabilities with these functions.
+ *        Direct draw functions draw directly in GDRAM and do not use any double-buffering.
+ */
+
+/**
+ * @brief Sets default color.
+ *
+ * Sets default color for monochrome operations.
+ * This function supports only 16-bit RGB mode.
+ * To work with RGB colors in 8-bit mode, please refer to ssd1306_setRgbColor8() function
+ * and RGB_COLOR8 macros.
+ * @param r - red in 0-255 range.
+ * @param g - green in 0-255 range.
+ * @param b - blue in 0-255 range.
+ */
+void ssd1306_setRgbColor16(uint8_t r, uint8_t g, uint8_t b);
+
+/**
+ * Draws 16-bit bitmap, located in SRAM, on the display
+ * Each byte represents separate pixel: refer to RGB_COLOR16 to understand RGB scheme, being used.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels
+ * @param data - pointer to data, located in SRAM.
+ */
+void ssd1306_drawBufferFast16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+static inline void ssd1331_drawBufferFast16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data)
+{
+    ssd1306_drawBufferFast16(x, y, w, h, data);
+}
+#endif
+
+/**
+ * Draws 16-bit bitmap, located in SRAM, on the display, taking into account pitch parameter.
+ * Each byte represents separate pixel: refer to RGB_COLOR16 to understand RGB scheme, being used.
+ * pitch parameter specifies, length of single line in bytes.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels
+ * @param pitch length of bitmap buffer line in bytes
+ * @param data - pointer to data, located in SRAM.
+ */
+void ssd1306_drawBufferEx16(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data);
+
+/**
+ * Draws 1-bit bitmap, located in SRAM, on the display
+ * Each bit represents separate pixel: refer to ssd1306 datasheet for more information.
+ *
+ * @param xpos horizontal position in pixels
+ * @param ypos vertical position in pixels
+ * @param w width of bitmap in pixels
+ * @param h height of bitmap in pixels
+ * @param bitmap pointer to data, located in SRAM.
+ */
+void ssd1306_drawMonoBuffer16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Fills screen with pattern byte
+ *
+ * @param fill_Data pattern color to fill screen with
+ */
+void ssd1306_fillScreen16(uint16_t fill_Data);
+
+/**
+ * Fills screen with zero-byte
+ */
+void ssd1306_clearScreen16(void);
+
+/**
+ * Puts single color point directly in OLED display GDRAM.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_putPixel16(lcdint_t x, lcdint_t y);
+
+/**
+ * Puts single color point directly in OLED display GDRAM.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param color color in 16-bit format: 5-6-5
+ */
+void ssd1306_putColorPixel16(lcdint_t x, lcdint_t y, uint16_t color);
+
+/**
+ * Draw vertical line directly in OLED display GDRAM.
+ *
+ * @param x1 - horizontal position in pixels
+ * @param y1 - top vertical position in pixels
+ * @param y2 - bottom vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawVLine16(lcdint_t x1, lcdint_t y1, lcdint_t y2);
+
+/**
+ * Draw horizontal line directly in OLED display GDRAM.
+ *
+ * @param x1 - left position in pixels
+ * @param y1 - vertical vertical position in pixels
+ * @param x2 - right position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawHLine16(lcdint_t x1, lcdint_t y1, lcdint_t x2);
+
+/**
+ * Draw line directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawLine16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Draw rectangle directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawRect16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Fill rectangle directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_fillRect16(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Draw monochrome bitmap, located in Flash, directly to OLED display GDRAM.
+ * The bitmap should be in ssd1306 format (each byte represents 8 vertical pixels)
+ *
+ * @param xpos start horizontal position in pixels
+ * @param ypos start vertical position in pixels
+ * @param w bitmap width in pixels
+ * @param h bitmap height in pixels
+ * @param bitmap pointer to Flash data, containing monochrome bitmap.
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawMonoBitmap16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Draw 16-bit color bitmap, located in Flash, directly to OLED display GDRAM.
+ * Each pixel of the bitmap is expected in 5-6-5 format.
+ *
+ * @param xpos start horizontal position in pixels
+ * @param ypos start vertical position in pixels
+ * @param w bitmap width in pixels
+ * @param h bitmap height in pixels
+ * @param bitmap pointer to Flash data, containing 16-bit color bitmap.
+ */
+void ssd1306_drawBitmap16(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Clears block, filling it with black pixels, directly in OLED display GDRAM.
+ *
+ * @param x start horizontal position in pixels
+ * @param y start vertical position in pixels
+ * @param w block width in pixels
+ * @param h block height in pixels
+ */
+void ssd1306_clearBlock16(uint8_t x, uint8_t y, uint8_t w, uint8_t h);
+
+/**
+ * Set cursor position for text functions
+ *
+ * @param x horizontal position in pixels.
+ * @param y vertical position in pixels.
+ */
+void ssd1306_setCursor16(lcduint_t x, lcduint_t y);
+
+/**
+ * Draws single character to canvas. Cursor position is defined
+ * by ssd1306_setCursor16(). Do not changes cursor position
+ *
+ * @param c - character code to print
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_printChar16(uint8_t c);
+
+/**
+ * @brief Prints single character to display at current cursor position
+ *
+ * Prints single character to display at current cursor position.
+ * Cursor position can be set by ssd1306_setCursor16().
+ *
+ * @param ch - character to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t ssd1306_write16(uint8_t ch);
+
+/**
+ * @brief Prints null-terminated string to display at current cursor position
+ *
+ * Prints null-terminated string to display at current cursor position
+ * Cursor position can be set by ssd1306_setCursor16().
+ *
+ * @param ch - string to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t ssd1306_print16(const char ch[]);
+
+/**
+ * Prints text to screen using fixed font.
+ * @param x horizontal position in pixels
+ * @param y vertical position in pixels
+ * @param ch NULL-terminated string to print
+ * @param style font style (EFontStyle), normal by default (not implemented).
+ * @returns number of chars in string
+ *
+ * @see ssd1306_setFixedFont
+ * @note set color with ssd1306_setColor() function.
+ */
+uint8_t ssd1306_printFixed16(lcdint_t x, lcdint_t y, const char *ch, EFontStyle style);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _SSD1306_16BIT_H_
diff --git a/lib/libssd1306/src/ssd1306_1bit.c b/lib/libssd1306/src/ssd1306_1bit.c
new file mode 100644
index 0000000..9c8d4c5
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_1bit.c
@@ -0,0 +1,1098 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+////// GENERIC FUNCTIONS APPLICABLE FOR ALL DISPLAY TYPES /////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#include "ssd1306.h"
+#include "ssd1306_fonts.h"
+#include "lcd/lcd_common.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_hal/io.h"
+
+// TODO: remove
+#include "lcd/ssd1306_commands.h"
+
+uint8_t s_ssd1306_invertByte = 0x00000000;
+extern uint16_t ssd1306_color;
+const uint8_t *s_font6x8 = &ssd1306xled_font6x8[4];
+extern lcduint_t ssd1306_cursorX;
+extern lcduint_t ssd1306_cursorY;
+extern SFixedFontInfo s_fixedFont;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+extern uint8_t g_ssd1306_unicode;
+#endif
+
+void ssd1306_fillScreen(uint8_t fill_Data)
+{
+    fill_Data ^= s_ssd1306_invertByte;
+    ssd1306_lcd.set_block(0, 0, 0);
+    for(lcduint_t m=(ssd1306_lcd.height >> 3); m>0; m--)
+    {
+        for(lcduint_t n=ssd1306_lcd.width; n>0; n--)
+        {
+            ssd1306_lcd.send_pixels1(fill_Data);
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_clearScreen()
+{
+    ssd1306_lcd.set_block(0, 0, 0);
+    for(lcduint_t m=(ssd1306_lcd.height >> 3); m>0; m--)
+    {
+        for(lcduint_t n=ssd1306_lcd.width; n>0; n--)
+        {
+            ssd1306_lcd.send_pixels1( s_ssd1306_invertByte );
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+uint8_t ssd1306_printFixed(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style)
+{
+    uint8_t i, j=0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    y >>= 3;
+    ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+    for(;;)
+    {
+        uint8_t ldata;
+        if ((x > ssd1306_lcd.width - s_fixedFont.h.width) || (ch[j] == '\0'))
+        {
+            x = xpos;
+            y++;
+            if (y >= (ssd1306_lcd.height >> 3))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == s_fixedFont.pages)
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            ssd1306_intf.stop();
+            ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+        }
+        uint16_t unicode;
+        do
+        {
+            unicode = ssd1306_unicode16FromUtf8(ch[j]);
+            j++;
+        } while ( unicode == SSD1306_MORE_CHARS_REQUIRED );
+        SCharInfo char_info;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        ldata = 0;
+        x += char_info.width + char_info.spacing;
+        if (char_info.height > page_offset * 8)
+        {
+            char_info.glyph += page_offset * char_info.width;
+            for( i = char_info.width; i>0; i--)
+            {
+                uint8_t data;
+                if ( style == STYLE_NORMAL )
+                {
+                    data = pgm_read_byte(&char_info.glyph[0]);
+                }
+                else if ( style == STYLE_BOLD )
+                {
+                    uint8_t temp = pgm_read_byte(&char_info.glyph[0]);
+                    data = temp | ldata;
+                    ldata = temp;
+                }
+                else
+                {
+                    uint8_t temp = pgm_read_byte(&char_info.glyph[1]);
+                    data = (temp & 0xF0) | ldata;
+                    ldata = (temp & 0x0F);
+                }
+                ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+                char_info.glyph++;
+            }
+        }
+        else
+        {
+            char_info.spacing += char_info.width;
+        }
+        for (i = 0; i < char_info.spacing; i++)
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte);
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+uint8_t ssd1306_printFixed_oldStyle(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style)
+{
+    uint8_t i, j=0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    y >>= 3;
+    ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+    for(;;)
+    {
+        uint8_t c;
+        uint8_t ldata;
+        uint16_t offset;
+        if( (x > ssd1306_lcd.width - s_fixedFont.h.width) || (ch[j] == '\0') )
+        {
+            x = xpos;
+            y++;
+            if (y >= (ssd1306_lcd.height >> 3))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == s_fixedFont.pages)
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            ssd1306_intf.stop();
+            ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+        }
+        c = ch[j];
+        if ( c >= s_fixedFont.h.ascii_offset )
+        {
+            c -= s_fixedFont.h.ascii_offset;
+        }
+        ldata = 0;
+        offset = (c * s_fixedFont.pages + page_offset) * s_fixedFont.h.width;
+        for( i=s_fixedFont.h.width; i>0; i--)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                uint8_t temp = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+                data = temp | ldata;
+                ldata = temp;
+            }
+            else
+            {
+                uint8_t temp = pgm_read_byte(&s_fixedFont.primary_table[offset + 1]);
+                data = (temp & 0xF0) | ldata;
+                ldata = (temp & 0x0F);
+            }
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+            offset++;
+        }
+        x += s_fixedFont.h.width;
+        j++;
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+uint8_t ssd1306_printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j=0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    y >>= 3;
+    ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+    for(;;)
+    {
+        uint8_t c;
+        uint8_t ldata;
+        uint16_t offset;
+        if( (x > ssd1306_lcd.width - (s_fixedFont.h.width << 1)) || (ch[j] == '\0') )
+        {
+            x = xpos;
+            y++;
+            if (y >= (ssd1306_lcd.height >> 3))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == (s_fixedFont.pages << 1))
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            ssd1306_intf.stop();
+            ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+        }
+        c = ch[j];
+        if ( c >= 32 )
+        {
+            c -= 32;
+        }
+        ldata = 0;
+        offset = (c * s_fixedFont.pages + (page_offset >> 1)) * s_fixedFont.h.width;
+        for( i=s_fixedFont.h.width; i>0; i--)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                uint8_t temp = pgm_read_byte(&s_fixedFont.primary_table[offset]);
+                data = temp | ldata;
+                ldata = temp;
+            }
+            else
+            {
+                uint8_t temp = pgm_read_byte(&s_fixedFont.primary_table[offset + 1]);
+                data = (temp & 0xF0) | ldata;
+                ldata = (temp & 0x0F);
+            }
+            if (page_offset & 1) data >>= 4;
+            data = ((data & 0x01) ? 0x03: 0x00) |
+                   ((data & 0x02) ? 0x0C: 0x00) |
+                   ((data & 0x04) ? 0x30: 0x00) |
+                   ((data & 0x08) ? 0xC0: 0x00);
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+            offset++;
+        }
+        x += (s_fixedFont.h.width << 1);
+        j++;
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+
+uint8_t ssd1306_printFixedN(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style, uint8_t factor)
+{
+    uint8_t i, j=0;
+    uint8_t text_index = 0;
+    uint8_t page_offset = 0;
+    uint8_t x = xpos;
+    y >>= 3;
+    ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+    for(;;)
+    {
+        uint8_t ldata;
+        if( (x > ssd1306_lcd.width - (s_fixedFont.h.width << factor)) || (ch[j] == '\0') )
+        {
+            x = xpos;
+            y++;
+            if (y >= (ssd1306_lcd.height >> 3))
+            {
+                break;
+            }
+            page_offset++;
+            if (page_offset == (s_fixedFont.pages << factor))
+            {
+                text_index = j;
+                page_offset = 0;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            ssd1306_intf.stop();
+            ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+        }
+        uint16_t unicode;
+        do
+        {
+            unicode = ssd1306_unicode16FromUtf8(ch[j]);
+            j++;
+        } while ( unicode == SSD1306_MORE_CHARS_REQUIRED );
+        SCharInfo char_info;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        ldata = 0;
+        x += ((char_info.width + char_info.spacing) << factor);
+        if (char_info.height > (page_offset >> factor) * 8)
+        {
+            char_info.glyph += (page_offset >> factor) * char_info.width;
+            for( i=char_info.width; i>0; i--)
+            {
+                uint8_t data;
+                if ( style == STYLE_NORMAL )
+                {
+                    data = pgm_read_byte(char_info.glyph);
+                }
+                else if ( style == STYLE_BOLD )
+                {
+                    uint8_t temp = pgm_read_byte(char_info.glyph);
+                    data = temp | ldata;
+                    ldata = temp;
+                }
+                else
+                {
+                    uint8_t temp = pgm_read_byte(char_info.glyph+1);
+                    data = (temp & 0xF0) | ldata;
+                    ldata = (temp & 0x0F);
+                }
+                if ( factor > 0 )
+                {
+                    uint8_t accum = 0;
+                    uint8_t mask = ~((0xFF) << (1<<factor));
+                    // N=0  ->   right shift is always 0
+                    // N=1  ->   right shift goes through 0, 4
+                    // N=2  ->   right shift goes through 0, 2, 4, 6
+                    // N=3  ->   right shift goes through 0, 1, 2, 3, 4, 5, 6, 7
+                    data >>= ((page_offset & ((1<<factor) - 1))<<(3-factor));
+                    for (uint8_t idx = 0; idx < 1<<(3-factor); idx++)
+                    {
+                         accum |= (((data>>idx) & 0x01) ? (mask<<(idx<<factor)) : 0);
+                    }
+                    data = accum;
+                }
+                for (uint8_t z=(1<<factor); z>0; z--)
+                {
+                    ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+                }
+                char_info.glyph++;
+            }
+        }
+        else
+        {
+            char_info.spacing += char_info.width;
+        }
+        for (i = 0; i < (char_info.spacing << factor); i++)
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte);
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+size_t ssd1306_write(uint8_t ch)
+{
+    if (ch == '\r')
+    {
+        ssd1306_cursorX = 0;
+        return 0;
+    }
+    SCharInfo char_info = {};
+    uint8_t gotoNewLine = 1;
+    if (ch != '\n')
+    {
+        uint16_t unicode;
+        unicode = ssd1306_unicode16FromUtf8(ch);
+        if (unicode == SSD1306_MORE_CHARS_REQUIRED) return 0;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        gotoNewLine = (ssd1306_cursorX > (ssd1306_lcd.width - char_info.width));
+    }
+    if ( gotoNewLine )
+    {
+        ssd1306_cursorX = 0;
+        ssd1306_cursorY += s_fixedFont.h.height;
+        if ( ssd1306_cursorY > ssd1306_lcd.height - s_fixedFont.h.height )
+        {
+            ssd1306_cursorY = 0;
+        }
+        ssd1306_clearBlock(0, ssd1306_cursorY >> 3, ssd1306_lcd.width, s_fixedFont.h.height);
+        if (ch == '\n')
+        {
+            return 0;
+        }
+    }
+    ssd1306_drawBitmap( ssd1306_cursorX,
+                        ssd1306_cursorY >> 3,
+                        char_info.width,
+                        char_info.height,
+                        char_info.glyph );
+    ssd1306_cursorX += char_info.width + char_info.spacing;
+    return 1;
+}
+
+size_t ssd1306_print(const char ch[])
+{
+    size_t n = 0;
+    while (*ch)
+    {
+        n += ssd1306_write(*ch);
+        ch++;
+    }
+    return n;
+}
+
+uint8_t ssd1306_charF6x8(uint8_t x, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j=0;
+    ssd1306_lcd.set_block(x, y, ssd1306_lcd.width - x);
+    while(ch[j] != '\0')
+    {
+        uint8_t ldata;
+        uint8_t c = ch[j] - 32;
+        if ( c > 224 )
+        {
+            c = 0;
+        }
+        if(x > ssd1306_lcd.width - 6)
+        {
+            x=0;
+            y++;
+        }
+        ldata = 0;
+        for(i=0;i<6;i++)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
+                data = temp | ldata;
+                ldata = temp;
+            }
+            else
+            {
+                uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
+                data = (temp & 0xF0) | ldata;
+                ldata = (temp & 0x0F);
+            }
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+        }
+        x += 6;
+        j++;
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+uint8_t ssd1306_charF12x16(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style)
+{
+    uint8_t i, j=0;
+    uint8_t text_index = 0;
+    uint8_t odd = 0;
+    uint8_t x = xpos;
+    ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+    for(;;)
+    {
+        uint8_t c;
+        uint8_t ldata;
+        if( (x > ssd1306_lcd.width-12) || (ch[j] == '\0') )
+        {
+            x = xpos;
+            y++;
+            if (y >= (ssd1306_lcd.height >> 3))
+            {
+                break;
+            }
+            if (odd)
+            {
+                text_index = j;
+                if (ch[j] == '\0')
+                {
+                    break;
+                }
+            }
+            else
+            {
+                j = text_index;
+            }
+            odd = !odd;
+            ssd1306_intf.stop();
+            ssd1306_lcd.set_block(xpos, y, ssd1306_lcd.width - xpos);
+        }
+        c = ch[j] - 32;
+        if ( c > 224 )
+        {
+            c = 0;
+        }
+        ldata = 0;
+        for(i=0;i<6;i++)
+        {
+            uint8_t data;
+            if ( style == STYLE_NORMAL )
+            {
+                data = pgm_read_byte(&s_font6x8[c*6+i]);
+            }
+            else if ( style == STYLE_BOLD )
+            {
+                uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i]);
+                data = temp | ldata;
+                ldata = temp;
+            }
+            else
+            {
+                uint8_t temp = pgm_read_byte(&s_font6x8[c*6+i + 1]);
+                data = (temp & 0xF0) | ldata;
+                ldata = (temp & 0x0F);
+            }
+            if (odd) data >>= 4;
+            data = ((data & 0x01) ? 0x03: 0x00) |
+                   ((data & 0x02) ? 0x0C: 0x00) |
+                   ((data & 0x04) ? 0x30: 0x00) |
+                   ((data & 0x08) ? 0xC0: 0x00);
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+            ssd1306_lcd.send_pixels1(data^s_ssd1306_invertByte);
+        }
+        x += 12;
+        j++;
+    }
+    ssd1306_intf.stop();
+    return j;
+}
+
+uint8_t      ssd1306_charF6x8_eol(uint8_t left,
+                                  uint8_t y,
+                                  const char ch[],
+                                  EFontStyle style,
+                                  uint8_t right)
+{
+    uint8_t len = ssd1306_printFixed(left, y<<3, ch, style);
+    uint8_t text_end_pos = len * 6 + left;
+    if (text_end_pos <= right)
+    {
+        ssd1306_clearBlock(text_end_pos, y, right - text_end_pos + 1, 8);
+    }
+    return len;
+}
+
+void         ssd1306_putPixel(uint8_t x, uint8_t y)
+{
+    ssd1306_lcd.set_block(x, y >> 3, 1);
+    ssd1306_lcd.send_pixels1((1 << (y & 0x07))^s_ssd1306_invertByte);
+    ssd1306_intf.stop();
+}
+
+void         ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels)
+{
+    ssd1306_lcd.set_block(x, y >> 3, 1);
+    ssd1306_lcd.send_pixels1(pixels^s_ssd1306_invertByte);
+    ssd1306_intf.stop();
+}
+
+void         ssd1306_putPixel_delayed(uint8_t x, uint8_t y, uint8_t complete)
+{
+    static uint8_t lx = 0, ly = 0xFF;
+    static uint8_t pixels = 0;
+    if ((lx != x) || ((ly & 0xF8) != (y & 0xF8)) || (complete))
+    {
+        if (ly != 0xFF)
+        {
+            ssd1306_putPixels( lx, ly, pixels );
+        }
+        pixels = 0;
+        ly = 0xFF;
+    }
+    if ( !complete )
+    {
+        pixels |= (1 << (y & 0x07));
+        lx = x; ly = y;
+    }
+}
+
+void         ssd1306_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
+{
+    lcduint_t  dx = x1 > x2 ? (x1 - x2): (x2 - x1);
+    lcduint_t  dy = y1 > y2 ? (y1 - y2): (y2 - y1);
+    lcduint_t  err = 0;
+    if (dy > dx)
+    {
+        if (y1 > y2)
+        {
+            ssd1306_swap_data(x1, x2, uint8_t);
+            ssd1306_swap_data(y1, y2, uint8_t);
+        }
+        for(; y1<=y2; y1++)
+        {
+            err += dx;
+            if (err >= dy)
+            {
+                 err -= dy;
+                 x1 < x2 ? x1++: x1--;
+            }
+            ssd1306_putPixel_delayed( x1, y1, 0 );
+        }
+        ssd1306_putPixel_delayed( 0, 0, 1 );
+    }
+    else
+    {
+        if (x1 > x2)
+        {
+            ssd1306_swap_data(x1, x2, uint8_t);
+            ssd1306_swap_data(y1, y2, uint8_t);
+        }
+        for(; x1<=x2; x1++)
+        {
+            err += dy;
+            if (err >= dx)
+            {
+                 err -= dx;
+                 if (y1 < y2) y1++; else y1--;
+            }
+            ssd1306_putPixel( x1, y1 );
+        }
+    }
+}
+
+void         ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2)
+{
+    ssd1306_lcd.set_block(x1, y1 >> 3, x2 - x1 + 1);
+    for (uint8_t x = x1; x <= x2; x++)
+    {
+        ssd1306_lcd.send_pixels1((1 << (y1 & 0x07))^s_ssd1306_invertByte);
+    }
+    ssd1306_intf.stop();
+}
+
+void         ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2)
+{
+    uint8_t topPage = y1 >> 3;
+    uint8_t bottomPage = y2 >> 3;
+    uint8_t height = y2-y1;
+    uint8_t y;
+    ssd1306_lcd.set_block(x1, topPage, 1);
+    if (topPage == bottomPage)
+    {
+        ssd1306_lcd.send_pixels1( ((0xFF >> (0x07 - height)) << (y1 & 0x07))^s_ssd1306_invertByte );
+        ssd1306_intf.stop();
+        return;
+    }
+    ssd1306_lcd.send_pixels1( (0xFF << (y1 & 0x07))^s_ssd1306_invertByte );
+    for ( y = (topPage + 1); y <= (bottomPage - 1); y++)
+    {
+        ssd1306_lcd.next_page();
+        ssd1306_lcd.send_pixels1( 0xFF^s_ssd1306_invertByte );
+    }
+    ssd1306_lcd.next_page();
+    ssd1306_lcd.send_pixels1( (0xFF >> (0x07 - (y2 & 0x07)))^s_ssd1306_invertByte );
+    ssd1306_intf.stop();
+}
+
+void         ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
+{
+    ssd1306_drawHLine(x1+1, y1, x2-1);
+    ssd1306_drawHLine(x1+1, y2, x2-1);
+    ssd1306_drawVLine(x1, y1, y2);
+    ssd1306_drawVLine(x2, y1, y2);
+}
+
+void ssd1306_drawBufferFast(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf)
+{
+    uint8_t j;
+    ssd1306_lcd.set_block(x, y >> 3, w);
+    for(j=(h >> 3); j>0; j--)
+    {
+        ssd1306_lcd.send_pixels_buffer1(buf,w);
+        buf+=w;
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t i, j;
+    ssd1306_lcd.set_block(x, y, w);
+    for(j=(h >> 3); j>0; j--)
+    {
+        for(i=w;i>0;i--)
+        {
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte^*buf++);
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBuffer1_4(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t i, j, k;
+    ssd1306_lcd.set_block(x, y>>3, w);
+    uint8_t y_offset = (y & 0x07);
+    uint8_t x_offset = (x & 0x01);
+    for( j = 0; j < ((h + 7 + y_offset) >> 3); j++)
+    {
+        for( i = 0; i < w / 2 + x_offset; i++)
+        {
+            for( k = 0; k < 8; k++)
+            {
+                if ((j*8 + k - y_offset < h) && (k >= y_offset || j != 0))
+                {
+                    uint8_t data = (i < w / 2) ? buf[ i + (j * 8 + k - y_offset) * w / 2 ]: 0x00;
+                    if ( x_offset )
+                    {
+                        data <<= 4;
+                        if ( i > 0) data |= buf[ i + (j * 8 + k - y_offset) * w / 2 - 1] >> 4;
+                    }
+                    ssd1306_lcd.send_pixels8( data );
+                }
+                else
+                {
+                    ssd1306_lcd.send_pixels8( 0x00 );
+                }
+            }
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t i, j;
+    uint8_t remainder = (ssd1306_lcd.width - x) < w ? (w + x - ssd1306_lcd.width): 0;
+    w -= remainder;
+    ssd1306_lcd.set_block(x, y, w);
+    for(j=(h >> 3); j>0; j--)
+    {
+        for(i=w;i>0;i--)
+        {
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte^pgm_read_byte(buf++));
+        }
+        buf += remainder;
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBitmap1_4(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t i, j, k;
+    ssd1306_lcd.set_block(x, y>>3, w);
+    uint8_t y_offset = (y & 0x07);
+    uint8_t x_offset = (x & 0x01);
+    for( j = 0; j < ((h + 7 + y_offset) >> 3); j++)
+    {
+        for( i = 0; i < w / 2 + x_offset; i++)
+        {
+            for( k = 0; k < 8; k++)
+            {
+                if ((j*8 + k - y_offset < h) && (k >= y_offset || j != 0))
+                {
+                    uint8_t data = (i < w / 2) ? pgm_read_byte( &buf[ i + (j * 8 + k - y_offset) * w / 2 ] ) : 0x00;
+                    if ( x_offset )
+                    {
+                        data <<= 4;
+                        if ( i > 0) data |= pgm_read_byte( &buf[ i + (j * 8 + k - y_offset) * w / 2 - 1] ) >> 4;
+                    }
+                    ssd1306_lcd.send_pixels8( data );
+                }
+                else
+                {
+                    ssd1306_lcd.send_pixels8( 0x00 );
+                }
+            }
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawXBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf)
+{
+    uint8_t i, j;
+    lcduint_t pitch = (w + 7) >> 3;
+    ssd1306_lcd.set_block(x, y, w);
+    for(j=(h >> 3); j>0; j--)
+    {
+        uint8_t bit = 0;
+        for(i=w;i>0;i--)
+        {
+            uint8_t data = 0;
+            for (uint8_t k = 0; k<8; k++)
+            {
+                data |= ( ((pgm_read_byte(&buf[k*pitch]) >> bit) & 0x01) << k );
+            }
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte^data);
+            bit++;
+            if (bit >= 8)
+            {
+                buf++;
+                bit=0;
+            }
+        }
+        if (bit)
+        {
+            buf++;
+        }
+        buf += pitch * 7;
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void gfx_drawMonoBitmap(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf)
+{
+    lcduint_t origin_width = w;
+    uint8_t offset = y & 0x07;
+    uint8_t complexFlag = 0;
+    uint8_t mainFlag = 1;
+    uint8_t max_pages;
+    uint8_t pages;
+    lcduint_t i, j;
+    if (y + (lcdint_t)h <= 0) return;
+    if (y >= ssd1306_lcd.height) return;
+    if (x + (lcdint_t)w <= 0) return;
+    if (x >= ssd1306_lcd.width)  return;
+    if (y < 0)
+    {
+         buf += ((lcduint_t)((-y) + 7) >> 3) * w;
+         h += y;
+         y = 0;
+         complexFlag = 1;
+    }
+    if (x < 0)
+    {
+         buf += -x;
+         w += x;
+         x = 0;
+    }
+    max_pages = (lcduint_t)(h + 15 - offset) >> 3;
+    if ((lcduint_t)((lcduint_t)y + h) > (lcduint_t)ssd1306_lcd.height)
+    {
+         h = (lcduint_t)(ssd1306_lcd.height - (lcduint_t)y);
+    }
+    if ((lcduint_t)((lcduint_t)x + w) > (lcduint_t)ssd1306_lcd.width)
+    {
+         w = (lcduint_t)(ssd1306_lcd.width - (lcduint_t)x);
+    }
+    pages = ((y + h - 1) >> 3) - (y >> 3) + 1;
+
+    ssd1306_lcd.set_block(x, y >> 3, w);
+    for(j=0; j < pages; j++)
+    {
+        if ( j == max_pages - 1 ) mainFlag = !offset;
+        for( i=w; i > 0; i--)
+        {
+            uint8_t data = 0;
+            if ( mainFlag )    data |= (pgm_read_byte(buf) << offset);
+            if ( complexFlag ) data |= (pgm_read_byte(buf - origin_width) >> (8 - offset));
+            buf++;
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte^data);
+        }
+        buf += origin_width - w;
+        complexFlag = offset;
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+
+void ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
+{
+    uint8_t i, j;
+    ssd1306_lcd.set_block(x, y, w);
+    for(j=(h >> 3); j>0; j--)
+    {
+        for(i=w;i>0;i--)
+        {
+            ssd1306_lcd.send_pixels1(s_ssd1306_invertByte);
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    uint8_t templ = ssd1306_color^s_ssd1306_invertByte;
+    if (x1 > x2) return;
+    if (y1 > y2) return;
+    if ((lcduint_t)x2 >= ssd1306_displayWidth()) x2 = (lcdint_t)ssd1306_displayWidth() - 1;
+    if ((lcduint_t)y2 >= ssd1306_displayHeight()) y2 = (lcdint_t)ssd1306_displayHeight() - 1;
+    uint8_t bank1 = (y1 >> 3);
+    uint8_t bank2 = (y2 >> 3);
+    ssd1306_lcd.set_block(x1, bank1, x2 - x1 + 1);
+    for (uint8_t bank = bank1; bank<=bank2; bank++)
+    {
+        uint8_t mask = 0xFF;
+        if (bank1 == bank2)
+        {
+            mask = (mask >> ((y1 & 7) + 7 - (y2 & 7))) << (y1 & 7);
+        }
+        else if (bank1 == bank)
+        {
+            mask = (mask << (y1 & 7));
+        }
+        else if (bank2 == bank)
+        {
+            mask = (mask >> (7 - (y2 & 7)));
+        }
+        for (uint8_t x=x1; x<=x2; x++)
+        {
+            ssd1306_lcd.send_pixels1(templ & mask);
+        }
+        ssd1306_lcd.next_page();
+    }
+    ssd1306_intf.stop();
+}
+
+
+void ssd1306_drawSpriteEx(uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite)
+{
+   uint8_t i;
+   ssd1306_lcd.set_block(x,y,w);
+   for(i=0;i<w;i++)
+   {
+       ssd1306_lcd.send_pixels1(s_ssd1306_invertByte^pgm_read_byte(&sprite[i]));
+   }
+   ssd1306_intf.stop();
+}
+
+
+void ssd1306_drawSprite(SPRITE *sprite)
+{
+    uint8_t offsety = sprite->y & 0x7;
+    if (sprite->y < ssd1306_lcd.height)
+    {
+        ssd1306_lcd.set_block(sprite->x, sprite->y >> 3, sprite->w);
+        for (uint8_t i=0; i < sprite->w; i++)
+        {
+            ssd1306_lcd.send_pixels1( s_ssd1306_invertByte^(pgm_read_byte( &sprite->data[i] ) << offsety) );
+        }
+        ssd1306_intf.stop();
+    }
+    if (offsety && (sprite->y + 8 < ssd1306_lcd.height))
+    {
+        ssd1306_lcd.set_block(sprite->x, (sprite->y >> 3) + 1, sprite->w);
+        for (uint8_t i=0; i < sprite->w; i++)
+        {
+            ssd1306_lcd.send_pixels1( s_ssd1306_invertByte^(pgm_read_byte( &sprite->data[i] ) >> (8 - offsety)) );
+        }
+        ssd1306_intf.stop();
+    }
+    sprite->lx = sprite->x;
+    sprite->ly = sprite->y;
+}
+
+
+void ssd1306_eraseSprite(SPRITE *sprite)
+{
+    uint8_t posy = sprite->y >> 3;
+    uint8_t offsety = sprite->y & 0x7;
+    ssd1306_lcd.set_block(sprite->x, posy, sprite->w);
+    for (uint8_t i=sprite->w; i > 0; i--)
+    {
+       ssd1306_lcd.send_pixels1( s_ssd1306_invertByte );
+    }
+    ssd1306_intf.stop();
+    if (offsety)
+    {
+        ssd1306_lcd.set_block(sprite->x, posy + 1, sprite->w);
+        for (uint8_t i=sprite->w; i > 0; i--)
+        {
+           ssd1306_lcd.send_pixels1( s_ssd1306_invertByte );
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+
+void ssd1306_eraseTrace(SPRITE *sprite)
+{
+    uint8_t y1 = sprite->ly >> 3;
+    uint8_t y2 = (sprite->ly + 7) >> 3;
+    if (sprite->ly < sprite->y)
+        y2 = min(y2, (uint8_t)((sprite->y >> 3) - 1));
+    else if (sprite->y + 8 > sprite->ly)
+        y1 = max(y1, (sprite->ly + 7) >> 3);
+    for(uint8_t y = y1; y <= y2; y++)
+    {
+        ssd1306_lcd.set_block(sprite->lx, y, sprite->w);
+        for(uint8_t x = sprite->w; x > 0; x--)
+        {
+            ssd1306_lcd.send_pixels1( s_ssd1306_invertByte );
+        }
+        ssd1306_intf.stop();
+    }
+    if (sprite->lx != sprite->x)
+    {
+        uint8_t x1 = sprite->lx;
+        uint8_t x2 = sprite->lx + sprite->w - 1;
+        if (sprite->x < sprite->lx)
+            x1 = max(x1, sprite->x + sprite->w);
+        else
+            x2 = min((uint8_t)(sprite->x - 1), x2);
+        for(uint8_t y = sprite->ly >> 3; y <= (sprite->ly + 7) >> 3; y++)
+        {
+            ssd1306_lcd.set_block(x1, y, x2 - x1 + 1 );
+            for(uint8_t x = x2 - x1 + 1; x > 0; x--)
+            {
+                ssd1306_lcd.send_pixels1( s_ssd1306_invertByte );
+            }
+            ssd1306_intf.stop();
+        }
+    }
+}
+
+SPRITE       ssd1306_createSprite(uint8_t x, uint8_t y, uint8_t w, const uint8_t *data)
+{
+    return (SPRITE){x,y,w,x,y,data,NULL};
+}
+
+void         ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data)
+{
+    sprite->data = data;
+}
+
+void         ssd1306_negativeMode()
+{
+    s_ssd1306_invertByte = 0xFF;
+}
+
+void         ssd1306_positiveMode()
+{
+    s_ssd1306_invertByte = 0x00;
+}
+
+void ssd1306_setFont6x8(const uint8_t * progmemFont)
+{
+    s_font6x8 = progmemFont + 4;
+}
+
diff --git a/lib/libssd1306/src/ssd1306_1bit.h b/lib/libssd1306/src/ssd1306_1bit.h
new file mode 100644
index 0000000..88be31b
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_1bit.h
@@ -0,0 +1,458 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_1bit.h SSD1306 basic draw functions
+ */
+
+
+#ifndef _SSD1306_1BIT_H_
+#define _SSD1306_1BIT_H_
+
+#include "nano_gfx_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////
+//                 DIRECT GRAPH FUNCTIONS
+///////////////////////////////////////////////////////////////////////
+
+/**
+ * @defgroup LCD_1BIT_GRAPHICS DIRECT DRAW: 1-bit graphic functions for ssd1306 compatible mode.
+ * @{
+ * @brief LCD direct draw functions for all display types: color and monochrome.
+ *
+ * @details LCD direct draw functions are applicable for all display types. These functions will work
+ *        both for monochrome and 8-bit/16-bit color OLED displays. You need remember, that for RGB
+ *        oled displays these functions work only in special ssd1306 compatible mode. If you're going to
+ *        combine NanoEngine capabilities with these functions, don't forget to switch addressing
+ *        mode via ssd1306_setMode().
+ *        Direct draw functions draw directly in GDRAM and do not use any double-buffering.
+ */
+
+/**
+ * Fills screen with pattern byte
+ */
+void         ssd1306_fillScreen(uint8_t fill_Data);
+
+/**
+ * Fills screen with zero-byte
+ */
+void         ssd1306_clearScreen(void);
+
+/**
+ * All drawing functions start to work in negative mode.
+ * Old picture on the display remains unchanged.
+ */
+void         ssd1306_negativeMode(void);
+
+/**
+ * All drawing functions start to work in positive (default) mode.
+ * Old picture on the display remains unchanged.
+ */
+void         ssd1306_positiveMode(void);
+
+/**
+ * Prints text to screen using fixed font.
+ * @param xpos - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle), normal by default.
+ * @returns number of chars in string
+ * @see ssd1306_setFixedFont
+ * @warning ssd1306_printFixed() can output chars at fixed y positions: 0, 8, 16, 24, 32, etc.
+ *          If you specify [10,18], ssd1306_printFixed() will output text starting at [10,16] position.
+ * @warning Be careful with you flash space! Do not mix too many different functions in single sketch.
+ *          ssd1306_printFixedN() uses much flash: ~396 bytes, ssd1306_printFixed() needs 388 bytes.
+ *          Placing both of these functions to your sketch will consume almost 1KiB.
+ */
+uint8_t     ssd1306_printFixed(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+uint8_t ssd1306_printFixed_oldStyle(uint8_t xpos, uint8_t y, const char *ch, EFontStyle style);
+#endif
+
+/**
+ * Prints text to screen using double size fixed font.
+ * @param xpos - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle), normal by default.
+ * @returns number of chars in string
+ * @see ssd1306_setFixedFont
+ * @warning ssd1306_printFixed2x() can output chars at fixed y positions: 0, 8, 16, 24, 32, etc.
+ *          If you specify [10,18], ssd1306_printFixed2x() will output text starting at [10,16] position.
+ * @warning Be careful with you flash space! Do not mix too many different functions in single sketch.
+ *          ssd1306_printFixedN() uses much flash: ~474 bytes, ssd1306_printFixed() needs 388 bytes.
+ *          Placing both of these functions to your sketch will consume almost 1KiB.
+ * @deprecated Use ssd1306_printFixedN() instead.
+ */
+uint8_t     ssd1306_printFixed2x(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style) __attribute__ ((deprecated));
+
+/**
+ * Prints text to screen using size fixed font, scaled by factor value. <br>
+ * Factor value 0 gives regular font size (6x8 for example) <br>
+ * Factor value 1 gives double font size (12x16 if 6x8 font is used) <br>
+ * Factor value 2 gives fourth font size (24x32 if 6x8 font is used) <br>
+ * Factor value 3 gives eighth font size (48x64 if 6x8 font is used) <br>
+ * @param xpos - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle), normal by default.
+ * @param factor - 0, 1, 2, 3.
+ * @returns number of chars in string
+ * @see ssd1306_setFixedFont
+ * @warning ssd1306_printFixed2x() can output chars at fixed y positions: 0, 8, 16, 24, 32, etc.
+ *          If you specify [10,18], ssd1306_printFixed2x() will output text starting at [10,16] position.
+ * @warning Be careful with you flash space! Do not mix too many different functions in single sketch.
+ *          ssd1306_printFixedN() uses much flash: ~474 bytes, ssd1306_printFixed() needs 388 bytes.
+ *          Placing both of these functions to your sketch will consume almost 1KiB.
+ */
+uint8_t     ssd1306_printFixedN(uint8_t xpos, uint8_t y, const char ch[], EFontStyle style, uint8_t factor);
+
+/**
+ * @brief Prints single character to display at current cursor position
+ *
+ * Prints single character to display at current cursor position
+ * @param ch - character to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t      ssd1306_write(uint8_t ch);
+
+/**
+ * @brief Prints null-terminated string to display at current cursor position
+ *
+ * Prints null-terminated string to display at current cursor position
+ * @param ch - string to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t      ssd1306_print(const char ch[]);
+
+/**
+ * Prints text to screen using font 6x8.
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle), normal by default.
+ * @returns number of chars in string
+ * @deprecated Use ssd1306_printFixed() instead.
+ */
+uint8_t      ssd1306_charF6x8(uint8_t x, uint8_t y,
+                              const char ch[],
+                              EFontStyle style
+#ifdef __cplusplus
+                              = STYLE_NORMAL
+#endif
+                             ) __attribute__ ((deprecated));
+
+/**
+ * Prints text to screen using double size font 12x16.
+ * @param xpos - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle).
+ * @returns number of chars in string
+ * @deprecated Use ssd1306_drawFixedN() instead.
+ */
+uint8_t      ssd1306_charF12x16(uint8_t xpos,
+                                uint8_t y,
+                                const char ch[],
+                                EFontStyle style) __attribute__ ((deprecated));
+
+
+/**
+ * Prints text to screen using set font.
+ * If real text ends before right boundary,
+ * the remaining part on the display will be erased till right
+ * boundary.
+ * @param left - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param ch - NULL-terminated string to print
+ * @param style - font style (EFontStyle), normal by default.
+ * @param right - right boundary of the text to output
+ * @returns number of chars in string
+ * @deprecated This function is removed as superflouse.
+ */
+uint8_t      ssd1306_charF6x8_eol(uint8_t left,
+                                  uint8_t y,
+                                  const char ch[],
+                                  EFontStyle style,
+                                  uint8_t right) __attribute__ ((deprecated));
+
+/**
+ * Put single pixel on the LCD.
+ *
+ * @warning Please, take into account that there is no way
+ * to read data from ssd1306, thus since each byte contains
+ * 8 pixels, all other pixels in the same byte will be cleared
+ * on the display. Use ssd1306_putPixels() instead.
+ * If you need to have buffered output, please, refer to NanoCanvas.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ */
+void         ssd1306_putPixel(uint8_t x, uint8_t y);
+
+/**
+ * Puts eight vertical pixels on the LCD at once.
+ *
+ * ~~~~~~~~~~~~~~~{.c}
+ * // Draw 8 vertical pixels, starting at [10,16] position
+ * ssd1306_putPixels(10,2,0xFF);
+ * // Draw 4 vertical pixels, starting at [32,28] position
+ * ssd1306_putPixels(32,3,0x0F);
+ * ~~~~~~~~~~~~~~~
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position pixels. Should be multiply of 8.
+ * @param pixels - bit-pixels to draw on display
+ */
+void         ssd1306_putPixels(uint8_t x, uint8_t y, uint8_t pixels);
+
+/**
+ * Draws rectangle
+ * @param x1 - left boundary in pixel units
+ * @param y1 - top boundary in pixel units
+ * @param x2 - right boundary in pixel units
+ * @param y2 - bottom boundary int pixel units
+ */
+void         ssd1306_drawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
+
+/**
+ * Fill rectangle directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_fillRect(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Draws line
+ * @param x1 - x position in pixels of start point
+ * @param y1 - y position in pixels of start point
+ * @param x2 - x position in pixels of end point
+ * @param y2 - y position in pixels of end point
+ *
+ * @warning Remember that this function draws line directly in GDRAM of oled controller.
+ *          Since there is no way to detect pixels already being displayed, some pixels
+ *          can be overwritten by black color. If you use RGB oled, based on ssd1331 controller,
+ *          use ssd1331_drawLine() function.
+ */
+void         ssd1306_drawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
+
+/**
+ * Draws horizontal line
+ * @param x1 - left boundary in pixels
+ * @param y1 - position Y in pixels
+ * @param x2 - right boundary in pixels
+ */
+void         ssd1306_drawHLine(uint8_t x1, uint8_t y1, uint8_t x2);
+
+/**
+ * Draws vertical line
+ * @param x1 - position X in pixels
+ * @param y1 - top boundary in pixels
+ * @param y2 - bottom boundary in pixels
+ */
+void         ssd1306_drawVLine(uint8_t x1, uint8_t y1, uint8_t y2);
+
+/**
+ * Draws bitmap, located in SRAM, on the display
+ * Each byte represents 8 vertical pixels.
+ *
+ * ~~~~~~~~~~~~~~~{.c}
+ * // Draw small rectangle 3x8 at position 10,8
+ * uint8_t buffer[3] = { 0xFF, 0x81, 0xFF };
+ * ssd1306_drawBuffer(10, 1, 3, 8, buffer);
+ * ~~~~~~~~~~~~~~~
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in SRAM: each byte represents 8 vertical pixels.
+ */
+void         ssd1306_drawBuffer(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+/**
+ * Draws bitmap, located in SRAM, on the display
+ * Each byte represents 2 horizontal grayscale pixels.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in SRAM: each byte represents 2 horizontal pixels.
+ */
+void         ssd1306_drawBuffer1_4(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+
+/**
+ * Draws bitmap, located in SRAM, on the display
+ * Each byte represents 8 vertical pixels.
+ *
+ * ~~~~~~~~~~~~~~~{.c}
+ * // Draw small rectangle 3x8 at position 10,8
+ * uint8_t buffer[3] = { 0xFF, 0x81, 0xFF };
+ * ssd1306_drawBuffer(10, 1, 3, 8, buffer);
+ * ~~~~~~~~~~~~~~~
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels (must be devided by 8)
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in SRAM: each byte represents 8 vertical pixels.
+ *
+ * @note ssd1306_drawBufferFast() doesn't support negative draw mode. Use ssd1306_drawBuffer() instead.
+ */
+void         ssd1306_drawBufferFast(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf);
+
+/**
+ * @copydoc ssd1306_drawBuffer
+ */
+#define      ssd1306_drawCanvas(x, y, w, h, buf)   ssd1306_drawBuffer(x, y, w, h, buf)
+
+/**
+ * Draws bitmap, located in Flash, on the display
+ * The bitmap should be in native ssd1306 format
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ */
+void         ssd1306_drawBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+/**
+ * Draws bitmap, located in Flash, on the display
+ * The bitmap should be in XBMP format
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ */
+void         ssd1306_drawXBitmap(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+/**
+ * Draw bitmap, located in Flash, on the display
+ * The bitmap should be in in grayscale 4-bit format:
+ * ROW 1: 222211114444333366665555...
+ * ROW 2: 222211114444333366665555...
+ * ...
+ * ROW N: 222211114444333366665555...
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in Flash.
+ */
+void         ssd1306_drawBitmap1_4(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t *buf);
+
+/**
+ * Draws bitmap, located in Flash, on the display
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels (must be divided by 8)
+ * @param buf - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ */
+void         gfx_drawMonoBitmap(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *buf);
+
+/**
+ * Fills block with black pixels
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param w - width of block in pixels
+ * @param h - height of block in pixels (must be divided by 8)
+ * @note usually this method is used to erase bitmap on the screen.
+ */
+void         ssd1306_clearBlock(uint8_t x, uint8_t y, uint8_t w, uint8_t h);
+
+/**
+ * Draws bitmap, located in Flash, on the display. This sprite must have wx8 size
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ * @param w - width in pixels
+ * @param sprite - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ */
+void         ssd1306_drawSpriteEx(uint8_t x, uint8_t y, uint8_t w, const uint8_t *sprite);
+
+/**
+ * Draws sprite on the display. Position can be changed by
+ * updating x and y fields of SPRITE structure.
+ * @param sprite - pointer to SPRITE structure
+ */
+void         ssd1306_drawSprite(SPRITE *sprite);
+
+/**
+ * Clears sprite from the display leaving black rectangle.
+ * @param sprite - pointer to SPRITE structure
+ */
+void         ssd1306_eraseSprite(SPRITE *sprite);
+
+/**
+ * Clears some sprite parts in old position on the display.
+ * @param sprite - pointer to SPRITE structure
+ */
+void         ssd1306_eraseTrace(SPRITE *sprite);
+
+/**
+ * Creates sprite object. Sprite height is fixed to 8 pixels
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of sprite in pixels
+ * @param data - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ * @return SPRITE structure
+ */
+SPRITE       ssd1306_createSprite(uint8_t x, uint8_t y, uint8_t w, const uint8_t *data);
+
+/**
+ * Replaces image of the sprite with different data. The width must be the same as
+ * the width of original sprite image
+ * @param sprite - pointer to SPRITE structure
+ * @param data - pointer to data, located in Flash: each byte represents 8 vertical pixels.
+ */
+void         ssd1306_replaceSprite(SPRITE *sprite, const uint8_t *data);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _SSD1306_1BIT_H_
diff --git a/lib/libssd1306/src/ssd1306_8bit.c b/lib/libssd1306/src/ssd1306_8bit.c
new file mode 100644
index 0000000..84fa900
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_8bit.c
@@ -0,0 +1,378 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_8bit.h"
+#include "ssd1306_generic.h"
+//#include "ssd1306_fonts.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "ssd1306_hal/io.h"
+
+#include "lcd/ssd1331_commands.h"
+#include "lcd/lcd_common.h"
+
+extern uint16_t ssd1306_color;
+extern uint8_t s_ssd1306_invertByte;
+extern lcduint_t ssd1306_cursorX;
+extern lcduint_t ssd1306_cursorY;
+extern SFixedFontInfo s_fixedFont;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+extern uint8_t g_ssd1306_unicode;
+#endif
+
+void    ssd1306_setColor(uint16_t color)
+{
+    ssd1306_color = color;
+}
+
+void    ssd1306_setRgbColor(uint8_t r, uint8_t g, uint8_t b)
+{
+    ssd1306_color = RGB_COLOR8(r,g,b);
+}
+
+void    ssd1306_setRgbColor8(uint8_t r, uint8_t g, uint8_t b)
+{
+    ssd1306_color = RGB_COLOR8(r,g,b);
+}
+
+void ssd1306_drawMonoBuffer8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t bit = 1;
+    uint8_t blackColor = s_ssd1306_invertByte ? ssd1306_color : 0x00;
+    uint8_t color = s_ssd1306_invertByte ? 0x00 : ssd1306_color;
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    while (h--)
+    {
+        lcduint_t wx = w;
+        while (wx--)
+        {
+            uint8_t data = *bitmap;
+            if ( data & bit )
+                ssd1306_lcd.send_pixels8( color );
+            else
+                ssd1306_lcd.send_pixels8( blackColor );
+            bitmap++;
+        }
+        bit <<= 1;
+        if (bit == 0)
+        {
+            bit = 1;
+        }
+        else
+        {
+            bitmap -= w;
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+static void ssd1306_drawBufferPitch8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data)
+{
+    ssd1306_lcd.set_block(x, y, w);
+    while (h--)
+    {
+        lcduint_t line = w;
+        while (line--)
+        {
+            ssd1306_lcd.send_pixels8( *data );
+            data++;
+        }
+        data += pitch - w;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBufferFast8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data)
+{
+    ssd1306_drawBufferPitch8( x, y, w, h, w, data );
+}
+
+void ssd1306_drawBufferEx8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data)
+{
+    ssd1306_drawBufferPitch8( x, y, w, h, pitch, data );
+}
+
+void ssd1306_fillScreen8(uint8_t fill_Data)
+{
+    ssd1306_lcd.set_block(0, 0, 0);
+    uint32_t count = (uint32_t)ssd1306_lcd.width * (uint32_t)ssd1306_lcd.height;
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels8( fill_Data );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_clearScreen8(void)
+{
+    ssd1306_fillScreen8( 0x00 );
+}
+
+void ssd1306_putPixel8(lcdint_t x, lcdint_t y)
+{
+    ssd1306_lcd.set_block(x, y, 0);
+    ssd1306_lcd.send_pixels8( ssd1306_color );
+    ssd1306_intf.stop();
+}
+
+void ssd1306_putColorPixel8(lcdint_t x, lcdint_t y, uint8_t color)
+{
+    ssd1306_lcd.set_block(x, y, 0);
+    ssd1306_lcd.send_pixels8( color );
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawVLine8(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    ssd1306_lcd.set_block(x1, y1, 1);
+    while (y1<=y2)
+    {
+        ssd1306_lcd.send_pixels8( ssd1306_color );
+        y1++;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawHLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    ssd1306_lcd.set_block(x1, y1, 0);
+    while (x1 < x2)
+    {
+        ssd1306_lcd.send_pixels8( ssd1306_color );
+        x1++;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    lcduint_t  dx = x1 > x2 ? (x1 - x2): (x2 - x1);
+    lcduint_t  dy = y1 > y2 ? (y1 - y2): (y2 - y1);
+    lcduint_t  err = 0;
+    if (dy > dx)
+    {
+        if (y1 > y2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; y1<=y2; y1++)
+        {
+            err += dx;
+            if (err >= dy)
+            {
+                 err -= dy;
+                 x1 < x2 ? x1++: x1--;
+            }
+            ssd1306_putPixel8( x1, y1 );
+        }
+    }
+    else
+    {
+        if (x1 > x2)
+        {
+            ssd1306_swap_data(x1, x2, lcdint_t);
+            ssd1306_swap_data(y1, y2, lcdint_t);
+        }
+        for(; x1<=x2; x1++)
+        {
+            err += dy;
+            if (err >= dx)
+            {
+                 err -= dx;
+                 if (y1 < y2) y1++; else y1--;
+            }
+            ssd1306_putPixel8( x1, y1 );
+        }
+    }
+}
+
+void ssd1306_drawRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    ssd1306_drawHLine8(x1,y1,x2);
+    ssd1306_drawHLine8(x1,y2,x2);
+    ssd1306_drawVLine8(x1,y1,y2);
+    ssd1306_drawVLine8(x2,y1,y2);
+}
+
+void ssd1306_fillRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    if (y1 > y2)
+    {
+        ssd1306_swap_data(y1, y2, lcdint_t);
+    }
+    if (x1 > x2)
+    {
+        ssd1306_swap_data(x1, x2, lcdint_t);
+    }
+    ssd1306_lcd.set_block(x1, y1, x2 - x1 + 1);
+    uint16_t count = (x2 - x1 + 1) * (y2 - y1 + 1);
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels8( ssd1306_color );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawMonoBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    uint8_t bit = 1;
+    uint8_t blackColor = s_ssd1306_invertByte ? ssd1306_color : 0x00;
+    uint8_t color = s_ssd1306_invertByte ? 0x00 : ssd1306_color;
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    while (h--)
+    {
+        lcduint_t wx = w;
+        while ( wx-- )
+        {
+            uint8_t data = pgm_read_byte( bitmap );
+            if ( data & bit )
+                ssd1306_lcd.send_pixels8( color );
+            else
+                ssd1306_lcd.send_pixels8( blackColor );
+            bitmap++;
+        }
+        bit <<= 1;
+        if ( bit == 0 )
+        {
+            bit = 1;
+        }
+        else
+        {
+            bitmap -= w;
+        }
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    ssd1306_lcd.set_block(xpos, ypos, w);
+    uint32_t count = (w) * (h);
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels8( pgm_read_byte( bitmap ) );
+        bitmap++;
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_clearBlock8(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
+{
+    ssd1306_lcd.set_block(x, y, w);
+    uint32_t count = w * h;
+    while (count--)
+    {
+        ssd1306_lcd.send_pixels8( 0x00 );
+    }
+    ssd1306_intf.stop();
+}
+
+void ssd1306_setCursor8(lcduint_t x, lcduint_t y)
+{
+    ssd1306_cursorX = x;
+    ssd1306_cursorY = y;
+}
+
+void ssd1306_printChar8(uint8_t c)
+{
+    uint16_t unicode = ssd1306_unicode16FromUtf8(c);
+    if (unicode == SSD1306_MORE_CHARS_REQUIRED) return;
+    SCharInfo char_info;
+    ssd1306_getCharBitmap(unicode, &char_info);
+    ssd1306_drawMonoBitmap8(ssd1306_cursorX,
+                ssd1306_cursorY,
+                char_info.width,
+                char_info.height,
+                char_info.glyph );
+}
+
+size_t ssd1306_write8(uint8_t ch)
+{
+    if (ch == '\r')
+    {
+        ssd1306_cursorX = 0;
+        return 0;
+    }
+    SCharInfo char_info;
+    uint8_t gotoNewLine = 1;
+    if (ch != '\n')
+    {
+        uint16_t unicode;
+        unicode = ssd1306_unicode16FromUtf8(ch);
+        if (unicode == SSD1306_MORE_CHARS_REQUIRED) return 0;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        gotoNewLine = (ssd1306_cursorX > (ssd1306_lcd.width - char_info.width));
+    }
+    if ( gotoNewLine )
+    {
+        ssd1306_cursorX = 0;
+        ssd1306_cursorY += s_fixedFont.h.height;
+        if ( ssd1306_cursorY > ssd1306_lcd.height - s_fixedFont.h.height )
+        {
+            ssd1306_cursorY = 0;
+        }
+        ssd1306_clearBlock8(0, ssd1306_cursorY, ssd1306_lcd.width, s_fixedFont.h.height);
+        if (ch == '\n')
+        {
+            return 0;
+        }
+    }
+    if ( 1 )
+    {
+        uint8_t color = ssd1306_color;
+        ssd1306_color = s_ssd1306_invertByte ? color : 0x00;
+        ssd1306_fillRect8( ssd1306_cursorX, ssd1306_cursorY,
+                    ssd1306_cursorX + char_info.width + char_info.spacing - 1,
+                    ssd1306_cursorY + s_fixedFont.h.height - 1 );
+        ssd1306_color = color;
+    }
+    ssd1306_drawMonoBitmap8( ssd1306_cursorX,
+                             ssd1306_cursorY,
+                             char_info.width,
+                             char_info.height,
+                             char_info.glyph);
+    ssd1306_cursorX += char_info.width + char_info.spacing;
+    return 1;
+}
+
+size_t ssd1306_print8(const char ch[])
+{
+    size_t n = 0;
+    while (*ch)
+    {
+        n += ssd1306_write8(*ch);
+        ch++;
+    }
+    return n;
+}
+
+uint8_t ssd1306_printFixed8(lcdint_t x, lcdint_t y, const char *ch, EFontStyle style)
+{
+    ssd1306_cursorX = x;
+    ssd1306_cursorY = y;
+    return ssd1306_print8(ch);
+}
+
+
diff --git a/lib/libssd1306/src/ssd1306_8bit.h b/lib/libssd1306/src/ssd1306_8bit.h
new file mode 100644
index 0000000..20651a5
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_8bit.h
@@ -0,0 +1,426 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_8bit.h 8-bit specific draw functions
+ */
+
+#ifndef _SSD1306_8BIT_H_
+#define _SSD1306_8BIT_H_
+
+#include "nano_gfx_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////
+//                 DIRECT GRAPH FUNCTIONS
+///////////////////////////////////////////////////////////////////////
+
+/**
+ * @defgroup LCD_8BIT_GRAPHICS DIRECT DRAW: 8-bit API functions only for color displays
+ * @{
+ *
+ * @brief LCD direct draw functions only for color display.
+ *
+ * @details LCD direct draw functions are applicable for color display types. These functions will NOT work
+ *        in ssd1306 compatible mode. Use ssd1306_setMode() function to change display mode to NORMAL.
+ *        You can combine combine NanoEngine capabilities with these functions.
+ *        Direct draw functions draw directly in GDRAM and do not use any double-buffering.
+ */
+
+/**
+ * @brief Sets default color, generated by RGB_COLOR8 or RGB_COLOR16 macros
+ *
+ * Sets color generated by RGB_COLOR8 or RGB_COLOR16 macros.
+ *
+ * @param color - new  color to use for monochrome-specific operations on color display.
+ */
+void ssd1306_setColor(uint16_t color);
+
+/**
+ * @brief Sets default color.
+ *
+ * Sets default color for monochrome operations.
+ * For now this function supports only 8-bit RGB mode.
+ * To work with RGB colors in 16-bit mode, please refer to ssd1306_setColor() function
+ * and RGB_COLOR16 macros.
+ * @param r - red in 0-255 range.
+ * @param g - green in 0-255 range.
+ * @param b - blue in 0-255 range.
+ */
+void ssd1306_setRgbColor(uint8_t r, uint8_t g, uint8_t b);
+
+/**
+ * @brief Sets default color.
+ *
+ * Sets default color for monochrome operations.
+ * For now this function supports only 8-bit RGB mode.
+ * To work with RGB colors in 16-bit mode, please refer to ssd1306_setColor() function
+ * and RGB_COLOR16 macros.
+ * @param r - red in 0-255 range.
+ * @param g - green in 0-255 range.
+ * @param b - blue in 0-255 range.
+ */
+void ssd1306_setRgbColor8(uint8_t r, uint8_t g, uint8_t b);
+
+/**
+ * Draws 1-bit bitmap, located in SRAM, on the display
+ * Each bit represents separate pixel: refer to ssd1306 datasheet for more information.
+ *
+ * @param xpos horizontal position in pixels
+ * @param ypos vertical position in pixels
+ * @param w width of bitmap in pixels
+ * @param h height of bitmap in pixels
+ * @param bitmap pointer to data, located in SRAM.
+ */
+void ssd1306_drawMonoBuffer8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Draws 8-bit bitmap, located in SRAM, on the display
+ * Each byte represents separate pixel: refer to RGB_COLOR8 to understand RGB scheme, being used.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels
+ * @param data - pointer to data, located in SRAM.
+ */
+void ssd1306_drawBufferFast8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data);
+
+/**
+ * Draws 8-bit bitmap, located in SRAM, on the display, taking into account pitch parameter.
+ * Each byte represents separate pixel: refer to RGB_COLOR8 to understand RGB scheme, being used.
+ * pitch parameter specifies, length of single line in bytes.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param w - width of bitmap in pixels
+ * @param h - height of bitmap in pixels
+ * @param pitch length of bitmap buffer line in bytes
+ * @param data - pointer to data, located in SRAM.
+ */
+void ssd1306_drawBufferEx8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, lcduint_t pitch, const uint8_t *data);
+
+/**
+ * Fills screen with pattern byte
+ *
+ * @param fill_Data pattern color to fill screen with
+ */
+void ssd1306_fillScreen8(uint8_t fill_Data);
+
+/**
+ * Fills screen with zero-byte
+ */
+void ssd1306_clearScreen8(void);
+
+/**
+ * Puts single color point directly in OLED display GDRAM.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_putPixel8(lcdint_t x, lcdint_t y);
+
+/**
+ * Puts single color point directly in OLED display GDRAM.
+ *
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in pixels
+ * @param color color in RGB8 format (2-3-2)
+ */
+void ssd1306_putColorPixel8(lcdint_t x, lcdint_t y, uint8_t color);
+
+/**
+ * Draw vertical line directly in OLED display GDRAM.
+ *
+ * @param x1 - horizontal position in pixels
+ * @param y1 - top vertical position in pixels
+ * @param y2 - bottom vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawVLine8(lcdint_t x1, lcdint_t y1, lcdint_t y2);
+
+/**
+ * Draw horizontal line directly in OLED display GDRAM.
+ *
+ * @param x1 - left position in pixels
+ * @param y1 - vertical vertical position in pixels
+ * @param x2 - right position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawHLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2);
+
+/**
+ * Draw line directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Draw rectangle directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Fill rectangle directly in OLED display GDRAM.
+ * This is software implementation. Some OLED controllers have hardware implementation.
+ * Refer to datasheet.
+ *
+ * @param x1 - start horizontal position in pixels
+ * @param y1 - start vertical position in pixels
+ * @param x2 - end horizontal position in pixels
+ * @param y2 - end vertical position in pixels
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_fillRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2);
+
+/**
+ * Draw monochrome bitmap, located in Flash, directly to OLED display GDRAM.
+ * The bitmap should be in ssd1306 format (each byte represents 8 vertical pixels)
+ *
+ * @param xpos start horizontal position in pixels
+ * @param ypos start vertical position in pixels
+ * @param w bitmap width in pixels
+ * @param h bitmap height in pixels
+ * @param bitmap pointer to Flash data, containing monochrome bitmap.
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_drawMonoBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Draw 8-bit color bitmap, located in Flash, directly to OLED display GDRAM.
+ * Each pixel of the bitmap is expected in 3-3-2 format.
+ *
+ * @param xpos start horizontal position in pixels
+ * @param ypos start vertical position in pixels
+ * @param w bitmap width in pixels
+ * @param h bitmap height in pixels
+ * @param bitmap pointer to Flash data, containing 8-bit color bitmap.
+ */
+void ssd1306_drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap);
+
+/**
+ * Clears block, filling it with black pixels, directly in OLED display GDRAM.
+ *
+ * @param x start horizontal position in pixels
+ * @param y start vertical position in pixels
+ * @param w block width in pixels
+ * @param h block height in pixels
+ */
+void ssd1306_clearBlock8(uint8_t x, uint8_t y, uint8_t w, uint8_t h);
+
+/**
+ * Set cursor position for text functions
+ *
+ * @param x horizontal position in pixels.
+ * @param y vertical position in pixels.
+ */
+void ssd1306_setCursor8(lcduint_t x, lcduint_t y);
+
+/**
+ * Draws single character to canvas. Cursor position is defined
+ * by ssd1306_setCursor8(). Do not changes cursor position
+ *
+ * @param c - character code to print
+ *
+ * @note set color with ssd1306_setColor() function.
+ */
+void ssd1306_printChar8(uint8_t c);
+
+/**
+ * @brief Prints single character to display at current cursor position
+ *
+ * Prints single character to display at current cursor position.
+ * Cursor position can be set by ssd1306_setCursor8().
+ *
+ * @param ch - character to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t ssd1306_write8(uint8_t ch);
+
+/**
+ * @brief Prints null-terminated string to display at current cursor position
+ *
+ * Prints null-terminated string to display at current cursor position
+ * Cursor position can be set by ssd1306_setCursor8().
+ *
+ * @param ch - string to print to the display. 'LF' and 'CR' are skipped
+ * @return returns number of printed characters.
+ */
+size_t ssd1306_print8(const char ch[]);
+
+/**
+ * Prints text to screen using fixed font.
+ * @param x horizontal position in pixels
+ * @param y vertical position in pixels
+ * @param ch NULL-terminated string to print
+ * @param style font style (EFontStyle), normal by default (not implemented).
+ * @returns number of chars in string
+ *
+ * @see ssd1306_setFixedFont
+ * @note set color with ssd1306_setColor() function.
+ */
+uint8_t ssd1306_printFixed8(lcdint_t x, lcdint_t y, const char *ch, EFontStyle style);
+
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+/////////////////////////////////////////////////////////////////////////////////
+// FUNCTIONS BELOW ARE ONLY FOR COMPATIBILITY WITH PREVIOUSE VERSIONS OF LIBRARY
+
+static inline void ssd1331_setColor(uint16_t color)
+{
+    ssd1306_setColor(color);
+}
+
+static inline void ssd1331_setRgbColor(uint8_t r, uint8_t g, uint8_t b)
+{
+    ssd1306_setRgbColor(r, g, b);
+}
+
+static inline void ssd1331_drawMonoBuffer8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    ssd1306_drawMonoBuffer8(xpos, ypos, w, h, bitmap);
+}
+
+static inline void ssd1331_drawBufferFast8(lcdint_t x, lcdint_t y, lcduint_t w, lcduint_t h, const uint8_t *data)
+{
+    ssd1306_drawBufferFast8(x, y, w, h, data);
+}
+
+static inline void ssd1331_fillScreen8(uint8_t fill_Data)
+{
+    ssd1306_fillScreen8(fill_Data);
+}
+
+static inline void ssd1331_clearScreen8(void)
+{
+    ssd1306_clearScreen8();
+}
+
+static inline void ssd1331_putPixel8(lcdint_t x, lcdint_t y)
+{
+    ssd1306_putPixel8(x, y);
+}
+
+static inline void ssd1331_drawVLine8(lcdint_t x1, lcdint_t y1, lcdint_t y2)
+{
+    ssd1306_drawVLine8(x1, y1, y2);
+}
+
+static inline void ssd1331_drawHLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2)
+{
+    ssd1306_drawHLine8(x1, y1, x2);
+}
+
+static inline void ssd1331_drawLine8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    ssd1306_drawLine8(x1, y1, x2, y2);
+}
+
+static inline void ssd1331_drawRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    ssd1306_drawRect8(x1, y1, x2, y2);
+}
+
+static inline void ssd1331_fillRect8(lcdint_t x1, lcdint_t y1, lcdint_t x2, lcdint_t y2)
+{
+    ssd1306_fillRect8(x1, y1, x2, y2);
+}
+
+static inline void ssd1331_drawMonoBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    ssd1306_drawMonoBitmap8(xpos, ypos, w, h, bitmap);
+}
+
+static inline void ssd1331_drawBitmap8(lcdint_t xpos, lcdint_t ypos, lcduint_t w, lcduint_t h, const uint8_t *bitmap)
+{
+    ssd1306_drawBitmap8(xpos, ypos, w, h, bitmap);
+}
+
+static inline void ssd1331_clearBlock8(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
+{
+    ssd1306_clearBlock8(x, y, w, h);
+}
+
+static inline void ssd1331_setCursor8(lcduint_t x, lcduint_t y)
+{
+    ssd1306_setCursor8(x, y);
+}
+
+static inline void ssd1331_printChar8(uint8_t c)
+{
+    ssd1306_printChar8(c);
+}
+
+static inline size_t ssd1331_write8(uint8_t ch)
+{
+    return ssd1306_write8(ch);
+}
+
+static inline size_t ssd1331_print8(const char ch[])
+{
+    return ssd1306_print8(ch);
+}
+
+static inline uint8_t ssd1331_printFixed8(lcdint_t x, lcdint_t y, const char *ch, EFontStyle style)
+{
+    return ssd1306_printFixed8(x, y, ch, style);
+}
+
+#endif
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _SSD1306_8BIT_H_
diff --git a/lib/libssd1306/src/ssd1306_console.cpp b/lib/libssd1306/src/ssd1306_console.cpp
new file mode 100644
index 0000000..0502640
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_console.cpp
@@ -0,0 +1,91 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_console.h"
+
+extern lcduint_t ssd1306_cursorX;
+extern lcduint_t ssd1306_cursorY;
+extern SFixedFontInfo s_fixedFont;
+
+#define SSD1306_MAX_SCAN_LINES  64
+
+size_t ssd1306_consoleWriter(uint8_t ch)
+{
+    if (ch == '\r')
+    {
+        ssd1306_cursorX = 0;
+        return 0;
+    }
+    else if ( (ssd1306_cursorX > ssd1306_lcd.width - s_fixedFont.h.width) || (ch == '\n') )
+    {
+        ssd1306_cursorX = 0;
+        ssd1306_cursorY += s_fixedFont.h.height;
+        uint8_t bottomScanLine = ssd1306_getStartLine() + ssd1306_lcd.height;
+        if ( bottomScanLine > SSD1306_MAX_SCAN_LINES )
+        {
+            bottomScanLine -= SSD1306_MAX_SCAN_LINES;
+        }
+        if ( ssd1306_cursorY >= bottomScanLine )
+        {
+            uint8_t lcd_offset = ssd1306_getStartLine() + s_fixedFont.h.height;
+            if ( lcd_offset >= SSD1306_MAX_SCAN_LINES )
+            {
+                lcd_offset -= SSD1306_MAX_SCAN_LINES;
+            }
+            ssd1306_setStartLine( lcd_offset );
+        }
+        if ( ssd1306_cursorY >= SSD1306_MAX_SCAN_LINES )
+        {
+            ssd1306_cursorY -= SSD1306_MAX_SCAN_LINES;
+        }
+        ssd1306_clearBlock(0, ssd1306_cursorY >> 3, ssd1306_lcd.width, s_fixedFont.h.height);
+        if (ch == '\n')
+        {
+            return 0;
+        }
+    }
+    uint16_t unicode = ssd1306_unicode16FromUtf8(ch);
+    if (unicode == SSD1306_MORE_CHARS_REQUIRED) return 0;
+    SCharInfo char_info;
+    ssd1306_getCharBitmap(unicode, &char_info);
+    ssd1306_drawBitmap( ssd1306_cursorX,
+                        ssd1306_cursorY >> 3,
+                        char_info.width,
+                        char_info.height,
+                        char_info.glyph );
+    ssd1306_cursorX += char_info.width + char_info.spacing;
+    return 1;
+}
+
+void Ssd1306Console::clear()
+{
+    ssd1306_clearScreen();
+    setCursor(0,0);
+}
+
+void Ssd1306Console::setCursor(lcduint_t x, lcduint_t y)
+{
+    ssd1306_setCursor8(x,y);
+}
+
diff --git a/lib/libssd1306/src/ssd1306_console.h b/lib/libssd1306/src/ssd1306_console.h
new file mode 100644
index 0000000..2809afd
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_console.h
@@ -0,0 +1,116 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_console.h This is for console
+ */
+
+#ifndef _SSD1306_CONSOLE_H_
+#define _SSD1306_CONSOLE_H_
+
+#include "ssd1306.h"
+#include "ssd1306_hal/io.h"
+#include "ssd1306_hal/Print_internal.h"
+
+/**
+ * Callback function to print text to the LCD display
+ */
+typedef size_t (*LcdWriter)(uint8_t ch);
+
+/**
+ * Base template class for specific LCD console implementation
+ */
+template <LcdWriter W>
+class LcdConsole: public Print
+{
+public:
+    /**
+     * Creates console object to print text information on LCD display.
+     */
+    explicit LcdConsole( ) { };
+
+    /**
+     * Initializes console.
+     */
+    void   begin()
+    {
+    }
+
+    /**
+     * Writes single character to the display
+     * @param ch - character to write
+     */
+    size_t write(uint8_t ch) override
+    {
+        return W(ch);
+    }
+
+private:
+
+};
+
+/**
+ * ssd1306 console support function.
+ * @param ch character to print
+ * @warning only for SSD1306 based displays
+ */
+size_t ssd1306_consoleWriter(uint8_t ch);
+
+/**
+ * Ssd1306Console represents object to work with LCD display.
+ * Easy to use:
+ * ~~~~~~~~~~~~~~~{.cpp}
+ * Ssd1306Console  console;
+ * void setup()
+ * {
+ *      ssd1306_128x64_spi_init(3, 4, 5);
+ *      ssd1306_clearScreen();
+ *      console.print( "Hello" );
+ * }
+ * ~~~~~~~~~~~~~~~
+ */
+class Ssd1306Console: public LcdConsole<ssd1306_consoleWriter>
+{
+public:
+    using LcdConsole::LcdConsole;
+
+    /**
+     * Fills screen with zero-byte and sets
+     * cursor position to top-left corner of the screen.
+     */
+    void   clear();
+
+    /**
+     * Set cursor position for text functions
+     *
+     * @param x horizontal position in pixels.
+     * @param y vertical position in pixels.
+     */
+    void   setCursor(lcduint_t x, lcduint_t y);
+
+private:
+
+};
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_fonts.c b/lib/libssd1306/src/ssd1306_fonts.c
new file mode 100644
index 0000000..d442ad1
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_fonts.c
@@ -0,0 +1,1355 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/*
+ * ssd1306xled_font6x8 is by Neven Boyanov
+ * ssd1306xled_font8x16 is by Neven Boyanov
+ *
+ * @created: 2014-08-12
+ * @author: Neven Boyanov
+ *
+ * Copyright (c) 2015 Neven Boyanov, Tinusaur Team. All Rights Reserved.
+ * Distributed as open source software under MIT License, see LICENSE.txt file.
+ * Please, as a favour, retain the link http://tinusaur.org to The Tinusaur Project.
+ *
+ * Source code available at: https://bitbucket.org/tinusaur/ssd1306xled
+ *
+ */
+
+#include "ssd1306_fonts.h"
+
+/* Standard ASCII 6x8 font */
+const PROGMEM uint8_t ssd1306xled_font6x8 []=
+{
+  0x00, 0x06, 0x08, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
+  0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
+  0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
+  0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
+  0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
+  0x00, 0x23, 0x13, 0x08, 0x64, 0x62, // %
+  0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
+  0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
+  0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
+  0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
+  0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
+  0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
+  0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
+  0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
+  0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
+  0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
+  0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
+  0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
+  0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
+  0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
+  0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
+  0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
+  0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
+  0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
+  0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
+  0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
+  0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
+  0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
+  0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
+  0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
+  0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
+  0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
+  0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
+  0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
+  0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
+  0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
+  0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
+  0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
+  0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
+  0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
+  0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
+  0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
+  0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
+  0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
+  0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
+  0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
+  0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
+  0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
+  0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
+  0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
+  0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
+  0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
+  0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
+  0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
+  0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
+  0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
+  0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
+  0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
+  0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
+  0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [
+  0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
+  0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
+  0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
+  0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
+  0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
+  0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // a
+  0x00, 0x7F, 0x48, 0x44, 0x44, 0x38, // b
+  0x00, 0x38, 0x44, 0x44, 0x44, 0x20, // c
+  0x00, 0x38, 0x44, 0x44, 0x48, 0x7F, // d
+  0x00, 0x38, 0x54, 0x54, 0x54, 0x18, // e
+  0x00, 0x08, 0x7E, 0x09, 0x01, 0x02, // f
+  0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
+  0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, // h
+  0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, // i
+  0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // j
+  0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
+  0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, // l
+  0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // m
+  0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, // n
+  0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // o
+  0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
+  0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, // q
+  0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, // r
+  0x00, 0x48, 0x54, 0x54, 0x54, 0x20, // s
+  0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t
+  0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
+  0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
+  0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
+  0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x
+  0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
+  0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z
+  0x00, 0x00, 0x08, 0x77, 0x00, 0x00, // {
+  0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, // |
+  0x00, 0x00, 0x77, 0x08, 0x00, 0x00, // }
+  0x00, 0x10, 0x08, 0x10, 0x08, 0x00, // ~
+  0x14, 0x14, 0x14, 0x14, 0x14, 0x14, // horiz lines // DEL
+  0x00 /* This byte is required for italic type of font */
+};
+
+const PROGMEM uint8_t ssd1306xled_font8x16[] = {
+    0x00, // 0x00 means fixed font type - the only supported by the library
+    0x08, // 0x08 = 8 - font width in pixels
+    0x10, // 0x10 = 16 - font height in pixels
+    0x20,
+
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //   0
+    0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, // ! 1
+    0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " 2
+    0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00, 0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, // # 3
+    0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00, 0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, // $ 4
+    0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, // % 5
+    0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, // & 6
+    0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ' 7
+    0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, // ( 8
+    0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, // ) 9
+    0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, // * 10
+    0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, // + 11
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, // , 12
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // - 13
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, // . 14
+    0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, // / 15
+    0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, // 0 16
+    0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // 1 17
+    0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, // 2 18
+    0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // 3 19
+    0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, // 4 20
+    0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, // 5 21
+    0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // 6 22
+    0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // 7 23
+    0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, // 8 24
+    0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, // 9 25
+    0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, // : 26
+    0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, // ; 27
+    0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // < 28
+    0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, // = 29
+    0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, // > 30
+    0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, // ? 31
+    0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00, 0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, // @ 32
+    0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, // A 33
+    0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // B 34
+    0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // C 35
+    0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // D 36
+    0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, // E 37
+    0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, // F 38
+    0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, // G 39
+    0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, // H 40
+    0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // I 41
+    0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, // J 42
+    0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00, 0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, // K 43
+    0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, // L 44
+    0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, // M 45
+    0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, // N 46
+    0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // O 47
+    0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, // P 48
+    0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, // Q 49
+    0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, // R 50
+    0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, // S 51
+    0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // T 52
+    0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // U 53
+    0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, // V 54
+    0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00, 0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, // W 55
+    0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08, 0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, // X 56
+    0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // Y 57
+    0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, // Z 58
+    0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, // [ 59
+    0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, // \ 60
+    0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, // ] 61
+    0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^ 62
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // _ 63
+    0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` 64
+    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, // a 65
+    0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // b 66
+    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, // c 67
+    0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, // d 68
+    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, // e 69
+    0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // f 70
+    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, // g 71
+    0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // h 72
+    0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // i 73
+    0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, // j 74
+    0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, // k 75
+    0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // l 76
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, // m 77
+    0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // n 78
+    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // o 79
+    0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, // p 80
+    0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, // q 81
+    0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, // r 82
+    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, // s 83
+    0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, // t 84
+    0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, // u 85
+    0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, // v 86
+    0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, // w 87
+    0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, // x 88
+    0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, // y 89
+    0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, // z 90
+    0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, // { 91
+    0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, // | 92
+    0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, // } 93
+    0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ~ 94
+};
+
+const PROGMEM uint8_t ssd1306xled_font6x8_German []=
+{
+    0x01, 0x06, 0x08, 0x20,
+    0x00, 0xE4, 0x01, // Ulmaute unicode
+    0x38, 0x45, 0x44, 0x39, 0x44, 0x00, // ä
+    0x00, 0xF6, 0x01,
+    0x38, 0x45, 0x44, 0x45, 0x38, 0x00, // ö
+    0x00, 0xFC, 0x01,
+    0x3C, 0x41, 0x40, 0x41, 0x3C, 0x00, // ü
+    0x00, 0xC4, 0x01,
+    0x00, 0xF0, 0x29, 0x24, 0x29, 0xF0, // Ä
+    0x00, 0xD6, 0x01,
+    0x00, 0x78, 0x85, 0x84, 0x85, 0x78, // Ö
+    0x00, 0xDC, 0x01,
+    0x00, 0x7C, 0x81, 0x80, 0x81, 0x7C, // Ü
+    0x00, 0x00, 0x00, // End of unicode tables
+};
+
+/* Standard ASCII 6x8_AB font */
+const PROGMEM uint8_t ssd1306xled_font6x8_AB []=
+{
+  0x00, 0x06, 0x08, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
+  0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
+  0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
+  0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
+  0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
+  0x00, 0x23, 0x13, 0x08, 0x64, 0x62, // %
+  0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
+  0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
+  0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
+  0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
+  0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
+  0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
+  0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
+  0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
+  0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
+  0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
+  0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
+  0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
+  0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
+  0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
+  0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
+  0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
+  0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
+  0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
+  0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
+  0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
+  0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
+  0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
+  0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
+  0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
+  0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
+  0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
+  0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
+  0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
+  0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
+  0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
+  0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
+  0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
+  0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
+  0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
+  0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
+  0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
+  0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
+  0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
+  0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
+  0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
+  0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
+  0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
+  0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
+  0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
+  0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
+  0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
+  0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
+  0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
+  0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
+  0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
+  0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
+  0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
+  0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
+  0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [
+  0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
+  0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
+  0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
+  0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
+  0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
+  0x00 /* This byte is required for italic type of font */
+};
+
+const uint8_t digital_font5x7_123[] PROGMEM =
+{
+    0x00, 0x05, 0x07, 0x30,
+    0x36, 0x41, 0x41, 0x36, 0x00, // char '0' (0x30/48)
+    0x00, 0x00, 0x00, 0x36, 0x00, // char '1' (0x31/49)
+    0x30, 0x49, 0x49, 0x06, 0x00, // char '2' (0x32/50)
+    0x00, 0x49, 0x49, 0x36, 0x00, // char '3' (0x33/51)
+    0x06, 0x08, 0x08, 0x36, 0x00, // char '4' (0x34/52)
+    0x06, 0x49, 0x49, 0x30, 0x00, // char '5' (0x35/53)
+    0x36, 0x49, 0x49, 0x30, 0x00, // char '6' (0x36/54)
+    0x00, 0x01, 0x01, 0x36, 0x00, // char '7' (0x37/55)
+    0x36, 0x49, 0x49, 0x36, 0x00, // char '8' (0x38/56)
+    0x06, 0x49, 0x49, 0x36, 0x00, // char '9' (0x39/57)
+};
+
+const uint8_t digital_font5x7[] PROGMEM =
+{
+    0x00, 0x05, 0x07, 0x20,
+    0x00, 0x00, 0x00, 0x00, 0x00, // char ' ' (0x20/32)
+    0x00, 0x00, 0x2E, 0x00, 0x00, // char '!' (0x21/33)
+    0x06, 0x00, 0x06, 0x00, 0x00, // char '"' (0x22/34)
+    0x14, 0x7F, 0x14, 0x7F, 0x14, // char '#' (0x23/35)
+    0x06, 0x49, 0x7F, 0x49, 0x30, // char '$' (0x24/36)
+    0x24, 0x10, 0x08, 0x24, 0x00, // char '%' (0x25/37)
+    0x36, 0x49, 0x36, 0x50, 0x00, // char '&' (0x26/38)
+    0x00, 0x00, 0x00, 0x06, 0x00, // char ''' (0x27/39)
+    0x00, 0x41, 0x36, 0x00, 0x00, // char '(' (0x28/40)
+    0x00, 0x36, 0x41, 0x00, 0x00, // char ')' (0x29/41)
+    0x00, 0x08, 0x00, 0x00, 0x00, // char '*' (0x2A/42)
+    0x00, 0x08, 0x1C, 0x08, 0x00, // char '+' (0x2B/43)
+    0x40, 0x20, 0x00, 0x00, 0x00, // char ',' (0x2C/44)
+    0x00, 0x08, 0x08, 0x00, 0x00, // char '-' (0x2D/45)
+    0x20, 0x00, 0x00, 0x00, 0x00, // char '.' (0x2E/46)
+    0x00, 0x30, 0x06, 0x00, 0x00, // char '/' (0x2F/47)
+    0x36, 0x41, 0x41, 0x36, 0x00, // char '0' (0x30/48)
+    0x00, 0x00, 0x00, 0x36, 0x00, // char '1' (0x31/49)
+    0x30, 0x49, 0x49, 0x06, 0x00, // char '2' (0x32/50)
+    0x00, 0x49, 0x49, 0x36, 0x00, // char '3' (0x33/51)
+    0x06, 0x08, 0x08, 0x36, 0x00, // char '4' (0x34/52)
+    0x06, 0x49, 0x49, 0x30, 0x00, // char '5' (0x35/53)
+    0x36, 0x49, 0x49, 0x30, 0x00, // char '6' (0x36/54)
+    0x00, 0x01, 0x01, 0x36, 0x00, // char '7' (0x37/55)
+    0x36, 0x49, 0x49, 0x36, 0x00, // char '8' (0x38/56)
+    0x06, 0x49, 0x49, 0x36, 0x00, // char '9' (0x39/57)
+    0x00, 0x14, 0x00, 0x00, 0x00, // char ':' (0x3A/58)
+    0x20, 0x14, 0x00, 0x00, 0x00, // char ';' (0x3B/59)
+    0x00, 0x08, 0x14, 0x22, 0x00, // char '<' (0x3C/60)
+    0x00, 0x14, 0x14, 0x14, 0x00, // char '=' (0x3D/61)
+    0x00, 0x22, 0x14, 0x08, 0x00, // char '>' (0x3E/62)
+    0x00, 0x01, 0x31, 0x06, 0x00, // char '?' (0x3F/63)
+    0x36, 0x49, 0x55, 0x59, 0x2E, // char '@' (0x40/64)
+    0x36, 0x09, 0x09, 0x36, 0x00, // char 'A' (0x41/65)
+    0x77, 0x49, 0x49, 0x36, 0x00, // char 'B' (0x42/66)
+    0x36, 0x41, 0x41, 0x00, 0x00, // char 'C' (0x43/67)
+    0x77, 0x41, 0x41, 0x36, 0x00, // char 'D' (0x44/68)
+    0x36, 0x49, 0x49, 0x00, 0x00, // char 'E' (0x45/69)
+    0x36, 0x09, 0x09, 0x00, 0x00, // char 'F' (0x46/70)
+    0x36, 0x41, 0x51, 0x30, 0x00, // char 'G' (0x47/71)
+    0x36, 0x08, 0x08, 0x36, 0x00, // char 'H' (0x48/72)
+    0x00, 0x00, 0x36, 0x00, 0x00, // char 'I' (0x49/73)
+    0x00, 0x40, 0x40, 0x36, 0x00, // char 'J' (0x4A/74)
+    0x36, 0x08, 0x14, 0x22, 0x00, // char 'K' (0x4B/75)
+    0x36, 0x40, 0x40, 0x00, 0x00, // char 'L' (0x4C/76)
+    0x36, 0x01, 0x06, 0x01, 0x36, // char 'M' (0x4D/77)
+    0x36, 0x04, 0x10, 0x36, 0x00, // char 'N' (0x4E/78)
+    0x36, 0x41, 0x41, 0x36, 0x00, // char 'O' (0x4F/79)
+    0x36, 0x09, 0x09, 0x06, 0x00, // char 'P' (0x50/80)
+    0x36, 0x41, 0x21, 0x56, 0x00, // char 'Q' (0x51/81)
+    0x36, 0x09, 0x19, 0x26, 0x00, // char 'R' (0x52/82)
+    0x06, 0x49, 0x49, 0x30, 0x00, // char 'S' (0x53/83)
+    0x00, 0x01, 0x37, 0x01, 0x00, // char 'T' (0x54/84)
+    0x36, 0x40, 0x40, 0x36, 0x00, // char 'U' (0x55/85)
+    0x36, 0x40, 0x36, 0x00, 0x00, // char 'V' (0x56/86)
+    0x36, 0x40, 0x30, 0x40, 0x36, // char 'W' (0x57/87)
+    0x36, 0x08, 0x08, 0x36, 0x00, // char 'X' (0x58/88)
+    0x06, 0x48, 0x48, 0x36, 0x00, // char 'Y' (0x59/89)
+    0x20, 0x51, 0x49, 0x45, 0x02, // char 'Z' (0x5A/90)
+    0x77, 0x41, 0x41, 0x00, 0x00, // char '[' (0x5B/91)
+    0x00, 0x06, 0x30, 0x00, 0x00, // char '\' (0x5C/92)
+    0x00, 0x41, 0x41, 0x77, 0x00, // char ']' (0x5D/93)
+    0x00, 0x02, 0x01, 0x02, 0x00, // char '^' (0x5E/94)
+    0x00, 0x40, 0x40, 0x00, 0x00, // char '_' (0x5F/95)
+    0x00, 0x01, 0x02, 0x00, 0x00, // char '`' (0x60/96)
+    0x20, 0x54, 0x54, 0x38, 0x40, // char 'a' (0x61/97)
+    0x00, 0x36, 0x48, 0x30, 0x00, // char 'b' (0x62/98)
+    0x30, 0x48, 0x48, 0x00, 0x00, // char 'c' (0x63/99)
+    0x30, 0x48, 0x48, 0x76, 0x00, // char 'd' (0x64/100)
+    0x38, 0x54, 0x54, 0x08, 0x00, // char 'e' (0x65/101)
+    0x08, 0x6C, 0x0A, 0x00, 0x00, // char 'f' (0x66/102)
+    0x08, 0x54, 0x54, 0x38, 0x00, // char 'g' (0x67/103)
+    0x36, 0x08, 0x08, 0x30, 0x00, // char 'h' (0x68/104)
+    0x00, 0x34, 0x00, 0x00, 0x00, // char 'i' (0x69/105)
+    0x00, 0x40, 0x34, 0x00, 0x00, // char 'j' (0x6A/106)
+    0x36, 0x10, 0x28, 0x00, 0x00, // char 'k' (0x6B/107)
+    0x36, 0x00, 0x00, 0x00, 0x00, // char 'l' (0x6C/108)
+    0x30, 0x08, 0x10, 0x08, 0x30, // char 'm' (0x6D/109)
+    0x30, 0x08, 0x08, 0x30, 0x00, // char 'n' (0x6E/110)
+    0x30, 0x48, 0x48, 0x30, 0x00, // char 'o' (0x6F/111)
+    0x78, 0x14, 0x14, 0x08, 0x00, // char 'p' (0x70/112)
+    0x08, 0x14, 0x14, 0x68, 0x00, // char 'q' (0x71/113)
+    0x30, 0x08, 0x08, 0x00, 0x00, // char 'r' (0x72/114)
+    0x08, 0x54, 0x54, 0x20, 0x00, // char 's' (0x73/115)
+    0x08, 0x2C, 0x48, 0x00, 0x00, // char 't' (0x74/116)
+    0x30, 0x40, 0x40, 0x30, 0x00, // char 'u' (0x75/117)
+    0x30, 0x40, 0x30, 0x00, 0x00, // char 'v' (0x76/118)
+    0x30, 0x40, 0x20, 0x40, 0x30, // char 'w' (0x77/119)
+    0x28, 0x10, 0x10, 0x28, 0x00, // char 'x' (0x78/120)
+    0x08, 0x50, 0x50, 0x38, 0x00, // char 'y' (0x79/121)
+    0x24, 0x34, 0x2C, 0x24, 0x00, // char 'z' (0x7A/122)
+    0x08, 0x36, 0x41, 0x00, 0x00, // char '{' (0x7B/123)
+    0x00, 0x36, 0x00, 0x00, 0x00, // char '|' (0x7C/124)
+    0x00, 0x41, 0x36, 0x08, 0x00, // char '}' (0x7D/125)
+    0x08, 0x08, 0x10, 0x10, 0x00, // char '~' (0x7E/126)
+    0x36, 0x41, 0x36, 0x00, 0x00, // char '' (0x7F/127)
+};
+
+const uint8_t digital_font5x7_AB[] PROGMEM =
+{
+    0x00, 0x05, 0x07, 0x20,
+    0x00, 0x00, 0x00, 0x00, 0x00, // char ' ' (0x20/32)
+    0x00, 0x00, 0x2E, 0x00, 0x00, // char '!' (0x21/33)
+    0x06, 0x00, 0x06, 0x00, 0x00, // char '"' (0x22/34)
+    0x14, 0x7F, 0x14, 0x7F, 0x14, // char '#' (0x23/35)
+    0x06, 0x49, 0x7F, 0x49, 0x30, // char '$' (0x24/36)
+    0x24, 0x10, 0x08, 0x24, 0x00, // char '%' (0x25/37)
+    0x36, 0x49, 0x36, 0x50, 0x00, // char '&' (0x26/38)
+    0x00, 0x00, 0x00, 0x06, 0x00, // char ''' (0x27/39)
+    0x00, 0x41, 0x36, 0x00, 0x00, // char '(' (0x28/40)
+    0x00, 0x36, 0x41, 0x00, 0x00, // char ')' (0x29/41)
+    0x00, 0x08, 0x00, 0x00, 0x00, // char '*' (0x2A/42)
+    0x00, 0x08, 0x1C, 0x08, 0x00, // char '+' (0x2B/43)
+    0x40, 0x20, 0x00, 0x00, 0x00, // char ',' (0x2C/44)
+    0x00, 0x08, 0x08, 0x00, 0x00, // char '-' (0x2D/45)
+    0x20, 0x00, 0x00, 0x00, 0x00, // char '.' (0x2E/46)
+    0x00, 0x30, 0x06, 0x00, 0x00, // char '/' (0x2F/47)
+    0x36, 0x41, 0x41, 0x36, 0x00, // char '0' (0x30/48)
+    0x00, 0x00, 0x00, 0x36, 0x00, // char '1' (0x31/49)
+    0x30, 0x49, 0x49, 0x06, 0x00, // char '2' (0x32/50)
+    0x00, 0x49, 0x49, 0x36, 0x00, // char '3' (0x33/51)
+    0x06, 0x08, 0x08, 0x36, 0x00, // char '4' (0x34/52)
+    0x06, 0x49, 0x49, 0x30, 0x00, // char '5' (0x35/53)
+    0x36, 0x49, 0x49, 0x30, 0x00, // char '6' (0x36/54)
+    0x00, 0x01, 0x01, 0x36, 0x00, // char '7' (0x37/55)
+    0x36, 0x49, 0x49, 0x36, 0x00, // char '8' (0x38/56)
+    0x06, 0x49, 0x49, 0x36, 0x00, // char '9' (0x39/57)
+    0x00, 0x14, 0x00, 0x00, 0x00, // char ':' (0x3A/58)
+    0x20, 0x14, 0x00, 0x00, 0x00, // char ';' (0x3B/59)
+    0x00, 0x08, 0x14, 0x22, 0x00, // char '<' (0x3C/60)
+    0x00, 0x14, 0x14, 0x14, 0x00, // char '=' (0x3D/61)
+    0x00, 0x22, 0x14, 0x08, 0x00, // char '>' (0x3E/62)
+    0x00, 0x01, 0x31, 0x06, 0x00, // char '?' (0x3F/63)
+    0x36, 0x49, 0x55, 0x59, 0x2E, // char '@' (0x40/64)
+    0x36, 0x09, 0x09, 0x36, 0x00, // char 'A' (0x41/65)
+    0x77, 0x49, 0x49, 0x36, 0x00, // char 'B' (0x42/66)
+    0x36, 0x41, 0x41, 0x00, 0x00, // char 'C' (0x43/67)
+    0x77, 0x41, 0x41, 0x36, 0x00, // char 'D' (0x44/68)
+    0x36, 0x49, 0x49, 0x00, 0x00, // char 'E' (0x45/69)
+    0x36, 0x09, 0x09, 0x00, 0x00, // char 'F' (0x46/70)
+    0x36, 0x41, 0x51, 0x30, 0x00, // char 'G' (0x47/71)
+    0x36, 0x08, 0x08, 0x36, 0x00, // char 'H' (0x48/72)
+    0x00, 0x00, 0x36, 0x00, 0x00, // char 'I' (0x49/73)
+    0x00, 0x40, 0x40, 0x36, 0x00, // char 'J' (0x4A/74)
+    0x36, 0x08, 0x14, 0x22, 0x00, // char 'K' (0x4B/75)
+    0x36, 0x40, 0x40, 0x00, 0x00, // char 'L' (0x4C/76)
+    0x36, 0x01, 0x06, 0x01, 0x36, // char 'M' (0x4D/77)
+    0x36, 0x04, 0x10, 0x36, 0x00, // char 'N' (0x4E/78)
+    0x36, 0x41, 0x41, 0x36, 0x00, // char 'O' (0x4F/79)
+    0x36, 0x09, 0x09, 0x06, 0x00, // char 'P' (0x50/80)
+    0x36, 0x41, 0x21, 0x56, 0x00, // char 'Q' (0x51/81)
+    0x36, 0x09, 0x19, 0x26, 0x00, // char 'R' (0x52/82)
+    0x06, 0x49, 0x49, 0x30, 0x00, // char 'S' (0x53/83)
+    0x00, 0x01, 0x37, 0x01, 0x00, // char 'T' (0x54/84)
+    0x36, 0x40, 0x40, 0x36, 0x00, // char 'U' (0x55/85)
+    0x36, 0x40, 0x36, 0x00, 0x00, // char 'V' (0x56/86)
+    0x36, 0x40, 0x30, 0x40, 0x36, // char 'W' (0x57/87)
+    0x36, 0x08, 0x08, 0x36, 0x00, // char 'X' (0x58/88)
+    0x06, 0x48, 0x48, 0x36, 0x00, // char 'Y' (0x59/89)
+    0x20, 0x51, 0x49, 0x45, 0x02, // char 'Z' (0x5A/90)
+    0x77, 0x41, 0x41, 0x00, 0x00, // char '[' (0x5B/91)
+    0x00, 0x06, 0x30, 0x00, 0x00, // char '\' (0x5C/92)
+    0x00, 0x41, 0x41, 0x77, 0x00, // char ']' (0x5D/93)
+    0x00, 0x02, 0x01, 0x02, 0x00, // char '^' (0x5E/94)
+    0x00, 0x40, 0x40, 0x00, 0x00, // char '_' (0x5F/95)
+    0x00, 0x01, 0x02, 0x00, 0x00, // char '`' (0x60/96)
+};
+
+const PROGMEM uint8_t ssd1306xled_font5x7 []=
+{
+  0x00, 0x05, 0x07, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, // sp
+  0x00, 0x00, 0x5F, 0x00, 0x00, // !
+  0x00, 0x03, 0x00, 0x03, 0x00, // "
+  0x14, 0x3E, 0x14, 0x3E, 0x14, // #
+  0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
+  0x43, 0x33, 0x08, 0x66, 0x61, // %
+  0x36, 0x49, 0x55, 0x22, 0x50, // &
+  0x00, 0x05, 0x03, 0x00, 0x00, // '
+  0x00, 0x1C, 0x22, 0x41, 0x00, // (
+  0x00, 0x41, 0x22, 0x1C, 0x00, // )
+  0x14, 0x08, 0x3E, 0x08, 0x14, // *
+  0x08, 0x08, 0x3E, 0x08, 0x08, // +
+  0x00, 0x50, 0x30, 0x00, 0x00, // ,
+  0x08, 0x08, 0x08, 0x08, 0x08, // -
+  0x00, 0x60, 0x60, 0x00, 0x00, // .
+  0x20, 0x10, 0x08, 0x04, 0x02, // /
+  0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
+  0x00, 0x04, 0x02, 0x7F, 0x00, // 1
+  0x42, 0x61, 0x51, 0x49, 0x46, // 2
+  0x22, 0x41, 0x49, 0x49, 0x36, // 3
+  0x18, 0x14, 0x12, 0x7F, 0x10, // 4
+  0x27, 0x45, 0x45, 0x45, 0x39, // 5
+  0x3E, 0x49, 0x49, 0x49, 0x32, // 6
+  0x01, 0x01, 0x71, 0x09, 0x07, // 7
+  0x36, 0x49, 0x49, 0x49, 0x36, // 8
+  0x26, 0x49, 0x49, 0x49, 0x3E, // 9
+  0x00, 0x36, 0x36, 0x00, 0x00, // :
+  0x00, 0x56, 0x36, 0x00, 0x00, // ;
+  0x08, 0x14, 0x22, 0x41, 0x00, // <
+  0x14, 0x14, 0x14, 0x14, 0x14, // =
+  0x00, 0x41, 0x22, 0x14, 0x08, // >
+  0x02, 0x01, 0x51, 0x09, 0x06, // ?
+  0x3E, 0x41, 0x59, 0x55, 0x5E, // @
+  0x7E, 0x09, 0x09, 0x09, 0x7E, // A
+  0x7F, 0x49, 0x49, 0x49, 0x36, // B
+  0x3E, 0x41, 0x41, 0x41, 0x22, // C
+  0x7F, 0x41, 0x41, 0x41, 0x3E, // D
+  0x7F, 0x49, 0x49, 0x49, 0x41, // E
+  0x7F, 0x09, 0x09, 0x09, 0x01, // F
+  0x3E, 0x41, 0x41, 0x49, 0x3A, // G
+  0x7F, 0x08, 0x08, 0x08, 0x7F, // H
+  0x00, 0x41, 0x7F, 0x41, 0x00, // I
+  0x30, 0x40, 0x40, 0x40, 0x3F, // J
+  0x7F, 0x08, 0x14, 0x22, 0x41, // K
+  0x7F, 0x40, 0x40, 0x40, 0x40, // L
+  0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
+  0x7F, 0x02, 0x04, 0x08, 0x7F, // N
+  0x3E, 0x41, 0x41, 0x41, 0x3E, // O
+  0x7F, 0x09, 0x09, 0x09, 0x06, // P
+  0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
+  0x7F, 0x09, 0x09, 0x09, 0x76, // R
+  0x26, 0x49, 0x49, 0x49, 0x32, // S
+  0x01, 0x01, 0x7F, 0x01, 0x01, // T
+  0x3F, 0x40, 0x40, 0x40, 0x3F, // U
+  0x1F, 0x20, 0x40, 0x20, 0x1F, // V
+  0x7F, 0x20, 0x10, 0x20, 0x7F, // W
+  0x41, 0x22, 0x1C, 0x22, 0x41, // X
+  0x07, 0x08, 0x70, 0x08, 0x07, // Y
+  0x61, 0x51, 0x49, 0x45, 0x43, // Z
+  0x00, 0x7F, 0x41, 0x00, 0x00, // [
+  0x02, 0x04, 0x08, 0x10, 0x20, // 55
+  0x00, 0x00, 0x41, 0x7F, 0x00, // ]
+  0x04, 0x02, 0x01, 0x02, 0x04, // ^
+  0x40, 0x40, 0x40, 0x40, 0x40, // _
+  0x00, 0x01, 0x02, 0x04, 0x00, // `
+  0x20, 0x54, 0x54, 0x54, 0x78, // a
+  0x7F, 0x44, 0x44, 0x44, 0x38, // b
+  0x38, 0x44, 0x44, 0x44, 0x44, // c
+  0x38, 0x44, 0x44, 0x44, 0x7F, // d
+  0x38, 0x54, 0x54, 0x54, 0x18, // e
+  0x04, 0x04, 0x7E, 0x05, 0x05, // f
+  0x08, 0x54, 0x54, 0x54, 0x3C, // g
+  0x7F, 0x08, 0x04, 0x04, 0x78, // h
+  0x00, 0x44, 0x7D, 0x40, 0x00, // i
+  0x20, 0x40, 0x44, 0x3D, 0x00, // j
+  0x7F, 0x10, 0x28, 0x44, 0x00, // k
+  0x00, 0x41, 0x7F, 0x40, 0x00, // l
+  0x7C, 0x04, 0x78, 0x04, 0x78, // m
+  0x7C, 0x08, 0x04, 0x04, 0x78, // n
+  0x38, 0x44, 0x44, 0x44, 0x38, // o
+  0x7C, 0x14, 0x14, 0x14, 0x08, // p
+  0x08, 0x14, 0x14, 0x14, 0x7C, // q
+  0x00, 0x7C, 0x08, 0x04, 0x04, // r
+  0x48, 0x54, 0x54, 0x54, 0x20, // s
+  0x04, 0x04, 0x3F, 0x44, 0x44, // t
+  0x3C, 0x40, 0x40, 0x20, 0x7C, // u
+  0x1C, 0x20, 0x40, 0x20, 0x1C, // v
+  0x3C, 0x40, 0x30, 0x40, 0x3C, // w
+  0x44, 0x28, 0x10, 0x28, 0x44, // x
+  0x0C, 0x50, 0x50, 0x50, 0x3C, // y
+  0x44, 0x64, 0x54, 0x4C, 0x44, // z
+  0x00, 0x08, 0x36, 0x41, 0x41, // {
+  0x00, 0x00, 0x7F, 0x00, 0x00, // |
+  0x41, 0x41, 0x36, 0x08, 0x00, // }
+  0x02, 0x01, 0x02, 0x04, 0x02, // ~
+  0x14, 0x14, 0x14, 0x14, 0x14, // horiz lines // DEL
+  0x00 /* This byte is required for italic type of font */
+};
+
+const PROGMEM uint8_t ssd1306xled_font5x7_AB []=
+{
+  0x00, 0x05, 0x07, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, // sp
+  0x00, 0x00, 0x5F, 0x00, 0x00, // !
+  0x00, 0x03, 0x00, 0x03, 0x00, // "
+  0x14, 0x3E, 0x14, 0x3E, 0x14, // #
+  0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
+  0x43, 0x33, 0x08, 0x66, 0x61, // %
+  0x36, 0x49, 0x55, 0x22, 0x50, // &
+  0x00, 0x05, 0x03, 0x00, 0x00, // '
+  0x00, 0x1C, 0x22, 0x41, 0x00, // (
+  0x00, 0x41, 0x22, 0x1C, 0x00, // )
+  0x14, 0x08, 0x3E, 0x08, 0x14, // *
+  0x08, 0x08, 0x3E, 0x08, 0x08, // +
+  0x00, 0x50, 0x30, 0x00, 0x00, // ,
+  0x08, 0x08, 0x08, 0x08, 0x08, // -
+  0x00, 0x60, 0x60, 0x00, 0x00, // .
+  0x20, 0x10, 0x08, 0x04, 0x02, // /
+  0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
+  0x00, 0x04, 0x02, 0x7F, 0x00, // 1
+  0x42, 0x61, 0x51, 0x49, 0x46, // 2
+  0x22, 0x41, 0x49, 0x49, 0x36, // 3
+  0x18, 0x14, 0x12, 0x7F, 0x10, // 4
+  0x27, 0x45, 0x45, 0x45, 0x39, // 5
+  0x3E, 0x49, 0x49, 0x49, 0x32, // 6
+  0x01, 0x01, 0x71, 0x09, 0x07, // 7
+  0x36, 0x49, 0x49, 0x49, 0x36, // 8
+  0x26, 0x49, 0x49, 0x49, 0x3E, // 9
+  0x00, 0x36, 0x36, 0x00, 0x00, // :
+  0x00, 0x56, 0x36, 0x00, 0x00, // ;
+  0x08, 0x14, 0x22, 0x41, 0x00, // <
+  0x14, 0x14, 0x14, 0x14, 0x14, // =
+  0x00, 0x41, 0x22, 0x14, 0x08, // >
+  0x02, 0x01, 0x51, 0x09, 0x06, // ?
+  0x3E, 0x41, 0x59, 0x55, 0x5E, // @
+  0x7E, 0x09, 0x09, 0x09, 0x7E, // A
+  0x7F, 0x49, 0x49, 0x49, 0x36, // B
+  0x3E, 0x41, 0x41, 0x41, 0x22, // C
+  0x7F, 0x41, 0x41, 0x41, 0x3E, // D
+  0x7F, 0x49, 0x49, 0x49, 0x41, // E
+  0x7F, 0x09, 0x09, 0x09, 0x01, // F
+  0x3E, 0x41, 0x41, 0x49, 0x3A, // G
+  0x7F, 0x08, 0x08, 0x08, 0x7F, // H
+  0x00, 0x41, 0x7F, 0x41, 0x00, // I
+  0x30, 0x40, 0x40, 0x40, 0x3F, // J
+  0x7F, 0x08, 0x14, 0x22, 0x41, // K
+  0x7F, 0x40, 0x40, 0x40, 0x40, // L
+  0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
+  0x7F, 0x02, 0x04, 0x08, 0x7F, // N
+  0x3E, 0x41, 0x41, 0x41, 0x3E, // O
+  0x7F, 0x09, 0x09, 0x09, 0x06, // P
+  0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
+  0x7F, 0x09, 0x09, 0x09, 0x76, // R
+  0x26, 0x49, 0x49, 0x49, 0x32, // S
+  0x01, 0x01, 0x7F, 0x01, 0x01, // T
+  0x3F, 0x40, 0x40, 0x40, 0x3F, // U
+  0x1F, 0x20, 0x40, 0x20, 0x1F, // V
+  0x7F, 0x20, 0x10, 0x20, 0x7F, // W
+  0x41, 0x22, 0x1C, 0x22, 0x41, // X
+  0x07, 0x08, 0x70, 0x08, 0x07, // Y
+  0x61, 0x51, 0x49, 0x45, 0x43, // Z
+  0x00, 0x7F, 0x41, 0x00, 0x00, // [
+  0x02, 0x04, 0x08, 0x10, 0x20, // 55
+  0x00, 0x00, 0x41, 0x7F, 0x00, // ]
+  0x04, 0x02, 0x01, 0x02, 0x04, // ^
+  0x40, 0x40, 0x40, 0x40, 0x40, // _
+  0x00, 0x01, 0x02, 0x04, 0x00, // `
+  0x00,
+};
+
+
+/* Standard ASCII 11x16 font with digits only (Ascii codes 32 - 64) */
+const PROGMEM uint8_t courier_new_font11x16_digits []=
+{
+    0x00, 0x0B, 0x10, 0x20,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // char  
+    0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x19, 0x18, 0x00, 0x00, 0x00, 0x00,  // char !
+    0x00, 0x00, 0x1C, 0xFC, 0x1C, 0x00, 0x00, 0x1C, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // char "
+    0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0xFF, 0xFF, 0x30, 0x30, 0x00, 0x03, 0x03, 0x3F, 0x3F, 0x03, 0x03, 0x3F, 0x3F, 0x03, 0x03, 0x00,  // char #
+    0x00, 0x38, 0x7C, 0x4C, 0xCF, 0xCF, 0xCC, 0x9C, 0x9C, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0C, 0x7C, 0x7C, 0x0C, 0x0F, 0x07, 0x00, 0x00,  // char $
+    0x00, 0x1C, 0xA2, 0xA2, 0xE2, 0xDC, 0x40, 0x60, 0x20, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x00,  // char %
+    0x00, 0x00, 0xB0, 0xF8, 0xCC, 0x8C, 0x0C, 0x0C, 0x8C, 0x80, 0x00, 0x00, 0x0F, 0x0F, 0x19, 0x18, 0x19, 0x1B, 0x0F, 0x1F, 0x19, 0x00,  // char &
+    0x00, 0x00, 0x00, 0x00, 0x1C, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // char '
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF8, 0x1E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1F, 0x78, 0x60, 0x00, 0x00,  // char (
+    0x00, 0x00, 0x06, 0x1E, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x78, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,  // char )
+    0x00, 0x00, 0x18, 0x98, 0xF0, 0xFE, 0xFE, 0xF0, 0x98, 0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,  // char *
+    0x80, 0x80, 0x80, 0x80, 0xF8, 0xF8, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x01, 0x1F, 0x1F, 0x01, 0x01, 0x01, 0x01, 0x00,  // char +
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00,  // char ,
+    0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // char -
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00,  // char .
+    0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0xFC, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7C, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,  // char /
+    0x00, 0xF0, 0xFC, 0x0E, 0x06, 0x06, 0x0E, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x18, 0x1C, 0x0F, 0x03, 0x00, 0x00,  // char 0
+    0x00, 0x0C, 0x0C, 0x0C, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18, 0x00, 0x00,  // char 1
+    0x00, 0x18, 0x1C, 0x0E, 0x06, 0x86, 0xCE, 0x7C, 0x38, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x1E, 0x1B, 0x19, 0x18, 0x18, 0x18, 0x00, 0x00,  // char 2
+    0x00, 0x0C, 0x0C, 0xC6, 0xC6, 0xC6, 0xE6, 0xFC, 0x38, 0x00, 0x00, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x19, 0x0F, 0x07, 0x00, 0x00,  // char 3
+    0x00, 0x80, 0xC0, 0x70, 0x38, 0x0E, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x1B, 0x1B, 0x1F, 0x1F, 0x1B, 0x00, 0x00,  // char 4
+    0x00, 0x00, 0xFE, 0xFE, 0x66, 0x66, 0xE6, 0xC6, 0x80, 0x00, 0x00, 0x00, 0x0C, 0x1C, 0x18, 0x18, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00,  // char 5
+    0x00, 0xE0, 0xF8, 0xDC, 0x6C, 0x66, 0xE6, 0xC6, 0x86, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1C, 0x18, 0x18, 0x1C, 0x0F, 0x07, 0x00, 0x00,  // char 6
+    0x00, 0x0E, 0x0E, 0x06, 0x06, 0x86, 0xF6, 0xFE, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F, 0x07, 0x00, 0x00, 0x00, 0x00,  // char 7
+    0x00, 0x38, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x18, 0x18, 0x18, 0x18, 0x0F, 0x07, 0x00, 0x00,  // char 8
+    0x00, 0x78, 0xFC, 0xCE, 0x86, 0x86, 0xCE, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x18, 0x18, 0x19, 0x19, 0x0D, 0x0E, 0x07, 0x01, 0x00, 0x00,  // char 9
+    0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00,  // char :
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x0C, 0x04, 0x00, 0x00, 0x00,  // char ;
+    0x80, 0xC0, 0xC0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0C, 0x0C, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x00,  // char <
+    0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00,  // char =
+    0x0C, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0xC0, 0xC0, 0x80, 0x80, 0x18, 0x18, 0x0C, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x01, 0x00, 0x00,  // char >
+    0x00, 0x00, 0x38, 0x3C, 0x8C, 0x8C, 0xCC, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x19, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,  // char ?
+    0x00, 0x00, 0xF8, 0x04, 0xC2, 0x22, 0x22, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x21, 0x22, 0x22, 0x13, 0x00, 0x00, 0x00,  // char @
+    0x00 /* This byte is required for italic type of font */
+};
+
+const uint8_t comic_sans_font24x32_123[] PROGMEM =
+{
+    0x00, 0x18, 0x20, 0x20,
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char  
+    0x00,  0x00,  0xF0,  0xF8,  0xF8,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x7F,  0xFF,  0xFF,  0x7F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0C,  0x1E,  0x1E,  0x0C,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char !
+    0x00,  0xF8,  0xF8,  0xF8,  0x00,  0x00,  0x00,  0xF8,  0xF8,  0xF8,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0F,  0x1F,  0x1F,  0x00,  0x00,  0x00,  0x1F,  0x1F,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char "
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xF0,  0xF8,  0xF8,  0x70,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xF0,  0xF8,  0xF8,  0x70,  0x00,  0x00,  0x06,  0x0F,  0x0F,  0x0F,  0x8F,  0xFF,  0xFF,  0xFF,  0xFF,  0x1F,  0x0F,  0x0F,  0x0F,  0x0F,  0x8F,  0xFF,  0xFF,  0xFF,  0xFF,  0x1F,  0x0F,  0x0F,  0x1C,  0x3C,  0x3C,  0xFC,  0xFC,  0xFE,  0xFF,  0x7F,  0x3F,  0x3F,  0x3C,  0x3C,  0x3C,  0x3C,  0xFC,  0xFC,  0xFF,  0xFF,  0x3F,  0x3F,  0x3C,  0x3C,  0x3C,  0x3C,  0x00,  0x00,  0x0E,  0x1F,  0x1F,  0x1F,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x1E,  0x1F,  0x1F,  0x0F,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char #
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xC0,  0xE0,  0xFE,  0xFF,  0xFF,  0xFF,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x78,  0xFE,  0xFF,  0xFF,  0xE7,  0xC3,  0xC1,  0xFF,  0xFF,  0xFF,  0xFF,  0xC0,  0xC0,  0xC1,  0x81,  0x81,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x01,  0x03,  0x03,  0x03,  0xFF,  0xFF,  0xFF,  0xFF,  0x03,  0x03,  0x07,  0x8F,  0xFF,  0xFF,  0xFE,  0xF8,  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x0F,  0x1F,  0x1F,  0x1E,  0x1E,  0x1E,  0xFF,  0xFF,  0xFF,  0xFF,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,   // Code for char $
+    0x00,  0x00,  0xE0,  0xF0,  0xF8,  0xFC,  0x3C,  0x3C,  0x3C,  0xFC,  0xF8,  0xF0,  0xE0,  0x00,  0x00,  0x00,  0xC0,  0xE0,  0xF0,  0xF0,  0x60,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x07,  0xC3,  0xF0,  0xFC,  0xFF,  0x3F,  0x1F,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xF8,  0xFE,  0xFF,  0x3F,  0x0F,  0x03,  0xF0,  0xFC,  0xFE,  0xFF,  0x1F,  0x0F,  0x0F,  0x1F,  0xFE,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x0F,  0x0F,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x07,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x07,   // Code for char %
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xCF,  0xFF,  0xFF,  0xFF,  0xF8,  0xF8,  0x7F,  0x3F,  0x1F,  0x07,  0x80,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xF8,  0xFC,  0xFE,  0xFF,  0x0F,  0x07,  0x03,  0x01,  0x03,  0x0F,  0x3F,  0xFF,  0xFE,  0xF8,  0xFF,  0xFF,  0xFF,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x07,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x03,  0x0F,  0x1F,  0x3F,  0x3E,  0x18,  0x00,  0x00,  0x00,  0x00,   // Code for char &
+    0x00,  0x00,  0x00,  0x00,  0x00,  0xF8,  0xF8,  0xF8,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x1F,  0x1F,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char '
+    0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF0,  0xF8,  0x78,  0x30,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xF8,  0xFE,  0xFF,  0x7F,  0x0F,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x0F,  0x3F,  0xFF,  0xFF,  0xF8,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char (
+    0x00,  0x30,  0x78,  0xF8,  0xF0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x0F,  0x7F,  0xFF,  0xFE,  0xF8,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF8,  0xFF,  0xFF,  0x3F,  0x0F,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char )
+    0x00,  0x80,  0xC0,  0xC0,  0x80,  0x80,  0xF0,  0xF8,  0xF8,  0xF0,  0x80,  0x80,  0x80,  0x80,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x33,  0x7B,  0x7B,  0x3F,  0x1F,  0x1F,  0x0F,  0x3F,  0x7F,  0xFF,  0xF7,  0x67,  0x03,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char *
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xE0,  0xF0,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x0E,  0x0E,  0x0E,  0x0E,  0xFF,  0xFF,  0xFF,  0x0E,  0x0E,  0x0E,  0x0E,  0x0E,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char +
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xF8,  0xFC,  0x7C,  0x18,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char ,
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x08,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x1C,  0x08,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char -
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x3C,  0x3C,  0x18,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char .
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xF0,  0xF0,  0x60,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xF8,  0xFE,  0xFF,  0x3F,  0x0F,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xF0,  0xFC,  0xFE,  0x7F,  0x1F,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0C,  0x1F,  0x1F,  0x0F,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char /
+    0x00,  0x00,  0x00,  0x00,  0xC0,  0xC0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xF0,  0xFE,  0xFF,  0xFF,  0x0F,  0x03,  0x01,  0x00,  0x00,  0x00,  0x00,  0x01,  0x01,  0x07,  0xFF,  0xFF,  0xFF,  0xF8,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x1F,  0xFF,  0xFF,  0xFF,  0xE0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xFF,  0xFF,  0xFF,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x0F,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 0
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0x80,  0xC0,  0xE0,  0xF0,  0xF0,  0xF0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x07,  0x0F,  0x0F,  0x07,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 1
+    0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x07,  0x03,  0x03,  0x01,  0x80,  0x80,  0xC0,  0xE0,  0xF1,  0xFF,  0xFF,  0x7F,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xE0,  0xF8,  0xFC,  0xFE,  0x3E,  0x1F,  0x0F,  0x07,  0x07,  0x03,  0x01,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x07,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0F,  0x0E,  0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 2
+    0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x03,  0xC1,  0xE1,  0xE0,  0xE0,  0xF0,  0xF0,  0xF9,  0xFF,  0x7F,  0x3F,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xC0,  0x80,  0x00,  0x01,  0x01,  0x01,  0x03,  0x03,  0x87,  0xFF,  0xFF,  0xFE,  0xFC,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x0F,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 3
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF0,  0xF0,  0xE0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xE0,  0xF0,  0xF8,  0xFC,  0x7E,  0x1F,  0x0F,  0xFF,  0xFF,  0xFF,  0xFF,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x18,  0x3C,  0x3E,  0x3F,  0x3F,  0x3F,  0x3F,  0x3D,  0x3C,  0x3C,  0x3C,  0x3C,  0xFF,  0xFF,  0xFF,  0xFF,  0x3C,  0x3C,  0x3C,  0x18,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x07,  0x0F,  0x0F,  0x07,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 4
+    0x00,  0x20,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0x60,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xF0,  0xFF,  0xFF,  0xFF,  0xF8,  0xFC,  0x7C,  0x7C,  0x3C,  0x3C,  0x3C,  0x3C,  0x7C,  0xF8,  0xF8,  0xF0,  0xE0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x81,  0xC3,  0xC3,  0xC3,  0x81,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xFF,  0xFF,  0xFF,  0x3F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x0F,  0x0F,  0x1F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 5
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF0,  0xF0,  0xF0,  0x60,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xF0,  0xFC,  0xFE,  0xFF,  0xDF,  0xEF,  0xE7,  0xE3,  0xE1,  0xE0,  0xE0,  0xE0,  0xC0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x7F,  0xFF,  0xFF,  0xFF,  0x83,  0x03,  0x01,  0x01,  0x01,  0x01,  0x01,  0x01,  0x03,  0x87,  0xFF,  0xFF,  0xFF,  0xFC,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x07,  0x0F,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 6
+    0x00,  0x60,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0x60,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xE0,  0xF0,  0xFC,  0xFE,  0xFF,  0x3F,  0x0F,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xF0,  0xFC,  0xFF,  0xFF,  0x3F,  0x0F,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0E,  0x1F,  0x1F,  0x1F,  0x07,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 7
+    0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x1F,  0x7F,  0xFF,  0xFF,  0xF1,  0xF0,  0xE0,  0xE0,  0xE0,  0xE0,  0xF0,  0xF1,  0xFF,  0xFF,  0xBF,  0x1F,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xF8,  0xFE,  0xFF,  0xFF,  0x8F,  0x07,  0x03,  0x03,  0x01,  0x01,  0x03,  0x03,  0x03,  0x87,  0xFF,  0xFF,  0xFF,  0xFC,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x07,  0x0F,  0x0F,  0x1F,  0x1E,  0x1E,  0x1E,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 8
+    0x00,  0x00,  0x80,  0xC0,  0xC0,  0xE0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x7E,  0xFF,  0xFF,  0xFF,  0xC3,  0x81,  0x00,  0x00,  0x00,  0x00,  0x00,  0x81,  0x83,  0xC7,  0xFF,  0xFF,  0xFF,  0xFC,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x07,  0x07,  0x0F,  0x0F,  0x8F,  0x8F,  0xCF,  0xCF,  0xFF,  0xFF,  0xFF,  0x7F,  0x3F,  0x0F,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0C,  0x1E,  0x1E,  0x1E,  0x1F,  0x0F,  0x0F,  0x07,  0x07,  0x03,  0x03,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char 9
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x70,  0xF8,  0xF8,  0xF8,  0x70,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xC0,  0xE0,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x03,  0x07,  0x07,  0x07,  0x03,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char :
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x70,  0xF8,  0xF8,  0xF8,  0x70,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x30,  0x7C,  0x7E,  0x3F,  0x0F,  0x06,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char ;
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xF0,  0xF0,  0xF8,  0x78,  0x30,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x06,  0x0E,  0x0F,  0x1F,  0x3F,  0x7F,  0xFB,  0xF1,  0xE0,  0xE0,  0xC0,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x01,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char <
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0xE3,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char =
+    0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x30,  0x78,  0xF8,  0xF8,  0xF0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x80,  0xC0,  0xE0,  0xE0,  0xF1,  0xF9,  0xFB,  0x7F,  0x7F,  0x3F,  0x1F,  0x0E,  0x0E,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x03,  0x03,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char >
+    0x00,  0x00,  0x80,  0xC0,  0xE0,  0xE0,  0xF0,  0xF0,  0xF0,  0xF0,  0xF0,  0xE0,  0xE0,  0xC0,  0x80,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x01,  0x03,  0x03,  0x01,  0x01,  0x00,  0x00,  0x00,  0x81,  0x81,  0xC3,  0xFF,  0xFF,  0xFF,  0x7C,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x38,  0x7C,  0x7C,  0x7E,  0x1F,  0x1F,  0x0F,  0x07,  0x03,  0x03,  0x01,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x0E,  0x1F,  0x1F,  0x1F,  0x0E,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,  0x00,   // Code for char ?
+};
+
+// ----------------------------------------------------------------------------
+/// ##################################################################################################
+/// Calibri
+// ---------------------------------------------
+// -@--@@--@----------@----@-@--------@@@--@@---
+// -@--@@--@----------@----@-@-------@--@-@-@---
+// -@--@@--@-@@@@-@@@-@--@@@-@---@@@-@--@---@---
+// --@@-@@@--@--@-@---@-@--@-@--@--@-@--@---@---
+// --@@--@@--@--@-@---@-@--@-@--@--@-@--@---@---
+// --@@--@@--@--@-@---@-@--@----@--@-@--@---@---
+// --@@--@@--@@@@-@---@--@@@-@@--@@@-@@@--@@@@@-
+// --------------------------------@------------
+// --------------------------------@------------
+const uint8_t free_calibri11x12[] PROGMEM =
+{
+//  type|width|height|first char
+    0x02, 0x0B, 0x0A, 0x20,
+// GROUP first ' ' total 96 chars
+//  unicode(LSB,MSB)|count
+    0x00, 0x20, 0x60, // unicode record
+    0x00, 0x00, 0x00, 0x00, // char ' ' (0x0020/32)
+    0x00, 0x00, 0x02, 0x08, // char '!' (0x0021/33)
+    0x00, 0x02, 0x03, 0x04, // char '"' (0x0022/34)
+    0x00, 0x05, 0x05, 0x08, // char '#' (0x0023/35)
+    0x00, 0x0A, 0x05, 0x09, // char '$' (0x0024/36)
+    0x00, 0x14, 0x07, 0x08, // char '%' (0x0025/37)
+    0x00, 0x1B, 0x07, 0x08, // char '&' (0x0026/38)
+    0x00, 0x22, 0x01, 0x04, // char ''' (0x0027/39)
+    0x00, 0x23, 0x02, 0x0A, // char '(' (0x0028/40)
+    0x00, 0x27, 0x02, 0x0A, // char ')' (0x0029/41)
+    0x00, 0x2B, 0x04, 0x04, // char '*' (0x002A/42)
+    0x00, 0x2F, 0x05, 0x07, // char '+' (0x002B/43)
+    0x00, 0x34, 0x02, 0x0A, // char ',' (0x002C/44)
+    0x00, 0x38, 0x03, 0x06, // char '-' (0x002D/45)
+    0x00, 0x3B, 0x01, 0x08, // char '.' (0x002E/46)
+    0x00, 0x3C, 0x04, 0x0A, // char '/' (0x002F/47)
+    0x00, 0x44, 0x04, 0x08, // char '0' (0x0030/48)
+    0x00, 0x48, 0x05, 0x08, // char '1' (0x0031/49)
+    0x00, 0x4D, 0x04, 0x08, // char '2' (0x0032/50)
+    0x00, 0x51, 0x04, 0x08, // char '3' (0x0033/51)
+    0x00, 0x55, 0x06, 0x08, // char '4' (0x0034/52)
+    0x00, 0x5B, 0x04, 0x08, // char '5' (0x0035/53)
+    0x00, 0x5F, 0x04, 0x08, // char '6' (0x0036/54)
+    0x00, 0x63, 0x04, 0x08, // char '7' (0x0037/55)
+    0x00, 0x67, 0x04, 0x08, // char '8' (0x0038/56)
+    0x00, 0x6B, 0x04, 0x08, // char '9' (0x0039/57)
+    0x00, 0x6F, 0x02, 0x08, // char ':' (0x003A/58)
+    0x00, 0x71, 0x03, 0x0A, // char ';' (0x003B/59)
+    0x00, 0x77, 0x05, 0x07, // char '<' (0x003C/60)
+    0x00, 0x7C, 0x04, 0x07, // char '=' (0x003D/61)
+    0x00, 0x80, 0x04, 0x07, // char '>' (0x003E/62)
+    0x00, 0x84, 0x04, 0x08, // char '?' (0x003F/63)
+    0x00, 0x88, 0x09, 0x09, // char '@' (0x0040/64)
+    0x00, 0x9A, 0x06, 0x08, // char 'A' (0x0041/65)
+    0x00, 0xA0, 0x04, 0x08, // char 'B' (0x0042/66)
+    0x00, 0xA4, 0x05, 0x08, // char 'C' (0x0043/67)
+    0x00, 0xA9, 0x05, 0x08, // char 'D' (0x0044/68)
+    0x00, 0xAE, 0x04, 0x08, // char 'E' (0x0045/69)
+    0x00, 0xB2, 0x04, 0x08, // char 'F' (0x0046/70)
+    0x00, 0xB6, 0x05, 0x08, // char 'G' (0x0047/71)
+    0x00, 0xBB, 0x05, 0x08, // char 'H' (0x0048/72)
+    0x00, 0xC0, 0x01, 0x08, // char 'I' (0x0049/73)
+    0x00, 0xC1, 0x03, 0x08, // char 'J' (0x004A/74)
+    0x00, 0xC4, 0x05, 0x08, // char 'K' (0x004B/75)
+    0x00, 0xC9, 0x04, 0x08, // char 'L' (0x004C/76)
+    0x00, 0xCD, 0x07, 0x08, // char 'M' (0x004D/77)
+    0x00, 0xD4, 0x05, 0x08, // char 'N' (0x004E/78)
+    0x00, 0xD9, 0x05, 0x08, // char 'O' (0x004F/79)
+    0x00, 0xDE, 0x04, 0x08, // char 'P' (0x0050/80)
+    0x00, 0xE2, 0x06, 0x09, // char 'Q' (0x0051/81)
+    0x00, 0xEE, 0x05, 0x08, // char 'R' (0x0052/82)
+    0x00, 0xF3, 0x04, 0x08, // char 'S' (0x0053/83)
+    0x00, 0xF7, 0x05, 0x08, // char 'T' (0x0054/84)
+    0x00, 0xFC, 0x05, 0x08, // char 'U' (0x0055/85)
+    0x01, 0x01, 0x06, 0x08, // char 'V' (0x0056/86)
+    0x01, 0x07, 0x09, 0x08, // char 'W' (0x0057/87)
+    0x01, 0x10, 0x06, 0x08, // char 'X' (0x0058/88)
+    0x01, 0x16, 0x05, 0x08, // char 'Y' (0x0059/89)
+    0x01, 0x1B, 0x05, 0x08, // char 'Z' (0x005A/90)
+    0x01, 0x20, 0x02, 0x0A, // char '[' (0x005B/91)
+    0x01, 0x24, 0x04, 0x09, // char '\' (0x005C/92)
+    0x01, 0x2C, 0x02, 0x0A, // char ']' (0x005D/93)
+    0x01, 0x30, 0x04, 0x05, // char '^' (0x005E/94)
+    0x01, 0x34, 0x06, 0x08, // char '_' (0x005F/95)
+    0x01, 0x3A, 0x03, 0x02, // char '`' (0x0060/96)
+    0x01, 0x3D, 0x04, 0x08, // char 'a' (0x0061/97)
+    0x01, 0x41, 0x04, 0x08, // char 'b' (0x0062/98)
+    0x01, 0x45, 0x04, 0x08, // char 'c' (0x0063/99)
+    0x01, 0x49, 0x04, 0x08, // char 'd' (0x0064/100)
+    0x01, 0x4D, 0x04, 0x08, // char 'e' (0x0065/101)
+    0x01, 0x51, 0x04, 0x08, // char 'f' (0x0066/102)
+    0x01, 0x55, 0x05, 0x0A, // char 'g' (0x0067/103)
+    0x01, 0x5F, 0x04, 0x08, // char 'h' (0x0068/104)
+    0x01, 0x63, 0x01, 0x08, // char 'i' (0x0069/105)
+    0x01, 0x64, 0x02, 0x0A, // char 'j' (0x006A/106)
+    0x01, 0x68, 0x04, 0x08, // char 'k' (0x006B/107)
+    0x01, 0x6C, 0x01, 0x08, // char 'l' (0x006C/108)
+    0x01, 0x6D, 0x07, 0x08, // char 'm' (0x006D/109)
+    0x01, 0x74, 0x04, 0x08, // char 'n' (0x006E/110)
+    0x01, 0x78, 0x04, 0x08, // char 'o' (0x006F/111)
+    0x01, 0x7C, 0x04, 0x0A, // char 'p' (0x0070/112)
+    0x01, 0x84, 0x04, 0x0A, // char 'q' (0x0071/113)
+    0x01, 0x8C, 0x03, 0x08, // char 'r' (0x0072/114)
+    0x01, 0x8F, 0x03, 0x08, // char 's' (0x0073/115)
+    0x01, 0x92, 0x03, 0x08, // char 't' (0x0074/116)
+    0x01, 0x95, 0x04, 0x08, // char 'u' (0x0075/117)
+    0x01, 0x99, 0x05, 0x08, // char 'v' (0x0076/118)
+    0x01, 0x9E, 0x08, 0x08, // char 'w' (0x0077/119)
+    0x01, 0xA6, 0x04, 0x08, // char 'x' (0x0078/120)
+    0x01, 0xAA, 0x05, 0x0A, // char 'y' (0x0079/121)
+    0x01, 0xB4, 0x04, 0x08, // char 'z' (0x007A/122)
+    0x01, 0xB8, 0x03, 0x0A, // char '{' (0x007B/123)
+    0x01, 0xBE, 0x01, 0x0A, // char '|' (0x007C/124)
+    0x01, 0xC0, 0x02, 0x0A, // char '}' (0x007D/125)
+    0x01, 0xC4, 0x05, 0x04, // char '~' (0x007E/126)
+    0x01, 0xC9, 0x06, 0x08, // char '' (0x007F/127)
+//    0x01, 0xD0,
+    0x01, 0xCF,
+    // char ' ' (0x0020/32)
+    0xBE, 0x80, // char '!' (0x0021/33)
+    0x0E, 0x00, 0x0E, // char '"' (0x0022/34)
+    0x28, 0xFE, 0x28, 0xF8, 0x2E, // char '#' (0x0023/35)
+    0x80, 0x8E, 0x92, 0x93, 0x62, 0x00, 0x00, 0x01, 0x00, 0x00, // char '$' (0x0024/36)
+    0x1E, 0x92, 0x7E, 0x10, 0xFC, 0x92, 0xF0, // char '%' (0x0025/37)
+    0x00, 0xE4, 0x9A, 0xAA, 0xCE, 0x70, 0x80, // char '&' (0x0026/38)
+    0x0E, // char ''' (0x0027/39)
+    0xFC, 0x03, 0x00, 0x03, // char '(' (0x0028/40)
+    0x03, 0xFC, 0x03, 0x00, // char ')' (0x0029/41)
+    0x06, 0x0F, 0x06, 0x00, // char '*' (0x002A/42)
+    0x10, 0x10, 0x7C, 0x10, 0x10, // char '+' (0x002B/43)
+    0x00, 0x80, 0x02, 0x01, // char ',' (0x002C/44)
+    0x20, 0x20, 0x20, // char '-' (0x002D/45)
+    0x80, // char '.' (0x002E/46)
+    0x00, 0xE0, 0x1C, 0x03, 0x03, 0x00, 0x00, 0x00, // char '/' (0x002F/47)
+    0xFC, 0x82, 0x82, 0x7E, // char '0' (0x0030/48)
+    0x84, 0x82, 0xFE, 0x80, 0x80, // char '1' (0x0031/49)
+    0x84, 0xC2, 0xA2, 0x9C, // char '2' (0x0032/50)
+    0x82, 0x92, 0x92, 0x6E, // char '3' (0x0033/51)
+    0x30, 0x28, 0x26, 0xFE, 0x20, 0x20, // char '4' (0x0034/52)
+    0x9E, 0x92, 0x92, 0x62, // char '5' (0x0035/53)
+    0x7C, 0x96, 0x92, 0x72, // char '6' (0x0036/54)
+    0xC2, 0x72, 0x1E, 0x06, // char '7' (0x0037/55)
+    0xEC, 0x92, 0x92, 0x6E, // char '8' (0x0038/56)
+    0x9C, 0x92, 0xD2, 0x7C, // char '9' (0x0039/57)
+    0x88, 0x88, // char ':' (0x003A/58)
+    0x00, 0x88, 0x88, 0x02, 0x01, 0x00, // char ';' (0x003B/59)
+    0x10, 0x30, 0x28, 0x28, 0x44, // char '<' (0x003C/60)
+    0x50, 0x50, 0x50, 0x50, // char '=' (0x003D/61)
+    0x44, 0x28, 0x28, 0x10, // char '>' (0x003E/62)
+    0x02, 0xB2, 0x92, 0x0C, // char '?' (0x003F/63)
+    0x00, 0xF8, 0x84, 0x72, 0x4A, 0x6A, 0x7A, 0x42, 0x3C, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, // char '@' (0x0040/64)
+    0x80, 0x70, 0x2E, 0x26, 0x38, 0xC0, // char 'A' (0x0041/65)
+    0xFE, 0x92, 0x92, 0x6E, // char 'B' (0x0042/66)
+    0x7C, 0xC6, 0x82, 0x82, 0x44, // char 'C' (0x0043/67)
+    0xFE, 0x82, 0x82, 0xC6, 0x7C, // char 'D' (0x0044/68)
+    0xFE, 0x92, 0x92, 0x92, // char 'E' (0x0045/69)
+    0xFE, 0x12, 0x12, 0x12, // char 'F' (0x0046/70)
+    0x7C, 0xC6, 0x82, 0x92, 0xF6, // char 'G' (0x0047/71)
+    0xFE, 0x10, 0x10, 0x10, 0xFE, // char 'H' (0x0048/72)
+    0xFE, // char 'I' (0x0049/73)
+    0x80, 0x80, 0xFE, // char 'J' (0x004A/74)
+    0xFE, 0x10, 0x3C, 0xC6, 0x82, // char 'K' (0x004B/75)
+    0xFE, 0x80, 0x80, 0x80, // char 'L' (0x004C/76)
+    0xFE, 0x06, 0x38, 0xC0, 0x38, 0x06, 0xFE, // char 'M' (0x004D/77)
+    0xFE, 0x06, 0x18, 0xE0, 0xFE, // char 'N' (0x004E/78)
+    0x7C, 0x86, 0x82, 0xC6, 0x7C, // char 'O' (0x004F/79)
+    0xFE, 0x12, 0x12, 0x0C, // char 'P' (0x0050/80)
+    0x7C, 0x86, 0x82, 0xC6, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, // char 'Q' (0x0051/81)
+    0xFE, 0x12, 0x12, 0xEC, 0x00, // char 'R' (0x0052/82)
+    0x8C, 0x92, 0x92, 0x62, // char 'S' (0x0053/83)
+    0x02, 0x02, 0xFE, 0x02, 0x02, // char 'T' (0x0054/84)
+    0x7E, 0x80, 0x80, 0x80, 0x7E, // char 'U' (0x0055/85)
+    0x06, 0x3C, 0xE0, 0xE0, 0x1C, 0x06, // char 'V' (0x0056/86)
+    0x00, 0x0E, 0xF0, 0xF0, 0x0E, 0x1E, 0xF0, 0xF0, 0x0E, // char 'W' (0x0057/87)
+    0x82, 0x6E, 0x38, 0x38, 0xC6, 0x00, // char 'X' (0x0058/88)
+    0x02, 0x0C, 0xF0, 0x0C, 0x02, // char 'Y' (0x0059/89)
+    0x82, 0xE2, 0x92, 0x8E, 0x82, // char 'Z' (0x005A/90)
+    0xFF, 0x01, 0x03, 0x02, // char '[' (0x005B/91)
+    0x01, 0x0E, 0x70, 0x80, 0x00, 0x00, 0x00, 0x01, // char '\' (0x005C/92)
+    0x01, 0xFF, 0x02, 0x03, // char ']' (0x005D/93)
+    0x1C, 0x02, 0x0C, 0x10, // char '^' (0x005E/94)
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // char '_' (0x005F/95)
+    0x00, 0x01, 0x02, // char '`' (0x0060/96)
+    0xE8, 0xA8, 0xA8, 0xF8, // char 'a' (0x0061/97)
+    0xFE, 0x88, 0x88, 0x70, // char 'b' (0x0062/98)
+    0x70, 0x88, 0x88, 0x88, // char 'c' (0x0063/99)
+    0x70, 0x88, 0x88, 0xFE, // char 'd' (0x0064/100)
+    0x70, 0xA8, 0xA8, 0xB0, // char 'e' (0x0065/101)
+    0x08, 0xFE, 0x0A, 0x02, // char 'f' (0x0066/102)
+    0x78, 0xA8, 0xA8, 0xB8, 0x08, 0x03, 0x02, 0x02, 0x03, 0x00, // char 'g' (0x0067/103)
+    0xFE, 0x08, 0x08, 0xF8, // char 'h' (0x0068/104)
+    0xFA, // char 'i' (0x0069/105)
+    0x00, 0xFA, 0x02, 0x03, // char 'j' (0x006A/106)
+    0xFE, 0x20, 0x50, 0x88, // char 'k' (0x006B/107)
+    0xFE, // char 'l' (0x006C/108)
+    0xF8, 0x08, 0x08, 0xF8, 0x08, 0x08, 0xF8, // char 'm' (0x006D/109)
+    0xF8, 0x08, 0x08, 0xF8, // char 'n' (0x006E/110)
+    0xF8, 0x88, 0x88, 0xF8, // char 'o' (0x006F/111)
+    0xF8, 0x88, 0x88, 0x70, 0x03, 0x00, 0x00, 0x00, // char 'p' (0x0070/112)
+    0x70, 0x88, 0x88, 0xF8, 0x00, 0x00, 0x00, 0x03, // char 'q' (0x0071/113)
+    0xF8, 0x08, 0x08, // char 'r' (0x0072/114)
+    0x98, 0xA8, 0xE8, // char 's' (0x0073/115)
+    0x08, 0xFC, 0x88, // char 't' (0x0074/116)
+    0xF8, 0x80, 0x80, 0xF8, // char 'u' (0x0075/117)
+    0x18, 0x70, 0xC0, 0x60, 0x18, // char 'v' (0x0076/118)
+    0x08, 0x70, 0xC0, 0x38, 0x38, 0xC0, 0x70, 0x08, // char 'w' (0x0077/119)
+    0x88, 0x70, 0x70, 0x88, // char 'x' (0x0078/120)
+    0x18, 0x70, 0xC0, 0x70, 0x08, 0x00, 0x02, 0x01, 0x00, 0x00, // char 'y' (0x0079/121)
+    0xC8, 0xE8, 0xB8, 0x88, // char 'z' (0x007A/122)
+    0x10, 0xEE, 0x01, 0x00, 0x01, 0x02, // char '{' (0x007B/123)
+    0xFF, 0x03, // char '|' (0x007C/124)
+    0xCF, 0x30, 0x03, 0x00, // char '}' (0x007D/125)
+    0x0C, 0x04, 0x08, 0x08, 0x0C, // char '~' (0x007E/126)
+    0xFE, 0x82, 0x8A, 0xAA, 0x82, 0xFE, // char '' (0x007F/127)
+    0x00, 0x00, 0x00, // end of unicode tables
+    // FONT REQUIRES 859 BYTES
+};
+
+// ------------------------
+// ------------------------
+// -@@@@-------------------
+// @@--@-------------------
+// @@--@-@--@-@--@--@-@-@@-
+// -@@@@-@--@-@--@-@@-@-@--
+// -@--@-@--@-@--@@-@-@@@--
+// @@--@-@--@-@--@@-@-@-@--
+// @@--@-@@@@@@@-@--@-@-@@-
+// ------------@-----------
+// ------------@-----------
+const uint8_t free_calibri11x12_cyrillic[] PROGMEM =
+{
+//  type|width|height|first char
+    0x02, 0x0A, 0x0B, 0x00,
+// GROUP first 'А' total 64 chars
+//  unicode(LSB,MSB)|count
+    0x04, 0x10, 0x40, // unicode record
+    0x00, 0x00, 0x06, 0x09, // char 'А' (0x0410/1040)
+    0x00, 0x0C, 0x05, 0x09, // char 'Б' (0x0411/1041)
+    0x00, 0x16, 0x04, 0x09, // char 'В' (0x0412/1042)
+    0x00, 0x1E, 0x04, 0x09, // char 'Г' (0x0413/1043)
+    0x00, 0x26, 0x07, 0x0B, // char 'Д' (0x0414/1044)
+    0x00, 0x34, 0x04, 0x09, // char 'Е' (0x0415/1045)
+    0x00, 0x3C, 0x09, 0x09, // char 'Ж' (0x0416/1046)
+    0x00, 0x4E, 0x04, 0x09, // char 'З' (0x0417/1047)
+    0x00, 0x56, 0x05, 0x09, // char 'И' (0x0418/1048)
+    0x00, 0x60, 0x05, 0x09, // char 'Й' (0x0419/1049)
+    0x00, 0x6A, 0x05, 0x09, // char 'К' (0x041A/1050)
+    0x00, 0x74, 0x06, 0x09, // char 'Л' (0x041B/1051)
+    0x00, 0x80, 0x07, 0x09, // char 'М' (0x041C/1052)
+    0x00, 0x8E, 0x05, 0x09, // char 'Н' (0x041D/1053)
+    0x00, 0x98, 0x05, 0x09, // char 'О' (0x041E/1054)
+    0x00, 0xA2, 0x05, 0x09, // char 'П' (0x041F/1055)
+    0x00, 0xAC, 0x04, 0x09, // char 'Р' (0x0420/1056)
+    0x00, 0xB4, 0x05, 0x09, // char 'С' (0x0421/1057)
+    0x00, 0xBE, 0x05, 0x09, // char 'Т' (0x0422/1058)
+    0x00, 0xC8, 0x07, 0x09, // char 'У' (0x0423/1059)
+    0x00, 0xD6, 0x07, 0x09, // char 'Ф' (0x0424/1060)
+    0x00, 0xE4, 0x06, 0x09, // char 'Х' (0x0425/1061)
+    0x00, 0xF0, 0x06, 0x0B, // char 'Ц' (0x0426/1062)
+    0x00, 0xFC, 0x05, 0x09, // char 'Ч' (0x0427/1063)
+    0x01, 0x06, 0x08, 0x09, // char 'Ш' (0x0428/1064)
+    0x01, 0x16, 0x09, 0x0B, // char 'Щ' (0x0429/1065)
+    0x01, 0x28, 0x06, 0x09, // char 'Ъ' (0x042A/1066)
+    0x01, 0x34, 0x07, 0x09, // char 'Ы' (0x042B/1067)
+    0x01, 0x42, 0x05, 0x09, // char 'Ь' (0x042C/1068)
+    0x01, 0x4C, 0x05, 0x09, // char 'Э' (0x042D/1069)
+    0x01, 0x56, 0x08, 0x09, // char 'Ю' (0x042E/1070)
+    0x01, 0x66, 0x05, 0x09, // char 'Я' (0x042F/1071)
+    0x01, 0x70, 0x04, 0x09, // char 'а' (0x0430/1072)
+    0x01, 0x78, 0x05, 0x09, // char 'б' (0x0431/1073)
+    0x01, 0x82, 0x04, 0x09, // char 'в' (0x0432/1074)
+    0x01, 0x8A, 0x03, 0x09, // char 'г' (0x0433/1075)
+    0x01, 0x90, 0x06, 0x0B, // char 'д' (0x0434/1076)
+    0x01, 0x9C, 0x04, 0x09, // char 'е' (0x0435/1077)
+    0x01, 0xA4, 0x07, 0x09, // char 'ж' (0x0436/1078)
+    0x01, 0xB2, 0x04, 0x09, // char 'з' (0x0437/1079)
+    0x01, 0xBA, 0x04, 0x09, // char 'и' (0x0438/1080)
+    0x01, 0xC2, 0x04, 0x09, // char 'й' (0x0439/1081)
+    0x01, 0xCA, 0x04, 0x09, // char 'к' (0x043A/1082)
+    0x01, 0xD2, 0x05, 0x09, // char 'л' (0x043B/1083)
+    0x01, 0xDC, 0x06, 0x09, // char 'м' (0x043C/1084)
+    0x01, 0xE8, 0x04, 0x09, // char 'н' (0x043D/1085)
+    0x01, 0xF0, 0x04, 0x09, // char 'о' (0x043E/1086)
+    0x01, 0xF8, 0x04, 0x09, // char 'п' (0x043F/1087)
+    0x02, 0x00, 0x04, 0x0B, // char 'р' (0x0440/1088)
+    0x02, 0x08, 0x04, 0x09, // char 'с' (0x0441/1089)
+    0x02, 0x10, 0x05, 0x09, // char 'т' (0x0442/1090)
+    0x02, 0x1A, 0x05, 0x0B, // char 'у' (0x0443/1091)
+    0x02, 0x24, 0x07, 0x0B, // char 'ф' (0x0444/1092)
+    0x02, 0x32, 0x04, 0x09, // char 'х' (0x0445/1093)
+    0x02, 0x3A, 0x05, 0x0B, // char 'ц' (0x0446/1094)
+    0x02, 0x44, 0x04, 0x09, // char 'ч' (0x0447/1095)
+    0x02, 0x4C, 0x06, 0x09, // char 'ш' (0x0448/1096)
+    0x02, 0x58, 0x07, 0x0B, // char 'щ' (0x0449/1097)
+    0x02, 0x66, 0x06, 0x09, // char 'ъ' (0x044A/1098)
+    0x02, 0x72, 0x06, 0x09, // char 'ы' (0x044B/1099)
+    0x02, 0x7E, 0x04, 0x09, // char 'ь' (0x044C/1100)
+    0x02, 0x86, 0x04, 0x09, // char 'э' (0x044D/1101)
+    0x02, 0x8E, 0x07, 0x09, // char 'ю' (0x044E/1102)
+    0x02, 0x9C, 0x04, 0x09, // char 'я' (0x044F/1103)
+    0x02, 0xA6,
+    0x00, 0xE0, 0x5C, 0x4C, 0x70, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, // char 'А' (0x0410/1040)
+    0xFC, 0x24, 0x24, 0xE4, 0xC4, 0x01, 0x01, 0x01, 0x01, 0x00, // char 'Б' (0x0411/1041)
+    0xFC, 0x24, 0x24, 0xDC, 0x01, 0x01, 0x01, 0x00, // char 'В' (0x0412/1042)
+    0xFC, 0x04, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00, // char 'Г' (0x0413/1043)
+    0x00, 0xC0, 0x7C, 0x04, 0x04, 0xFC, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'Д' (0x0414/1044)
+    0xFC, 0x24, 0x24, 0x24, 0x01, 0x01, 0x01, 0x01, // char 'Е' (0x0415/1045)
+    0x8C, 0xDC, 0x20, 0x20, 0xFC, 0x20, 0x20, 0xDC, 0x8C, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'Ж' (0x0416/1046)
+    0x04, 0x24, 0xFC, 0xDC, 0x01, 0x01, 0x01, 0x00, // char 'З' (0x0417/1047)
+    0xFC, 0x80, 0x70, 0x08, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'И' (0x0418/1048)
+    0xFC, 0x83, 0x72, 0x0B, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'Й' (0x0419/1049)
+    0xFC, 0x20, 0x20, 0xD0, 0x0C, 0x01, 0x00, 0x00, 0x01, 0x01, // char 'К' (0x041A/1050)
+    0x00, 0xC0, 0x7C, 0x04, 0x04, 0xFC, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'Л' (0x041B/1051)
+    0xFC, 0x0C, 0x70, 0x80, 0x70, 0x0C, 0xFC, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, // char 'М' (0x041C/1052)
+    0xFC, 0x20, 0x20, 0x20, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'Н' (0x041D/1053)
+    0xF8, 0x0C, 0x04, 0x8C, 0xF8, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'О' (0x041E/1054)
+    0xFC, 0x04, 0x04, 0x04, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x01, // char 'П' (0x041F/1055)
+    0xFC, 0x24, 0x24, 0x18, 0x01, 0x00, 0x00, 0x00, // char 'Р' (0x0420/1056)
+    0xF8, 0x8C, 0x04, 0x04, 0x88, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'С' (0x0421/1057)
+    0x04, 0x04, 0xFC, 0x04, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, // char 'Т' (0x0422/1058)
+    0x00, 0x0C, 0x30, 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, // char 'У' (0x0423/1059)
+    0x70, 0xD8, 0x88, 0xFC, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, // char 'Ф' (0x0424/1060)
+    0x04, 0xDC, 0x70, 0x70, 0x8C, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, // char 'Х' (0x0425/1061)
+    0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'Ц' (0x0426/1062)
+    0x1C, 0x30, 0x20, 0x20, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x01, // char 'Ч' (0x0427/1063)
+    0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // char 'Ш' (0x0428/1064)
+    0xFC, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'Щ' (0x0429/1065)
+    0x04, 0x04, 0xFC, 0x20, 0xE0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'Ъ' (0x042A/1066)
+    0xFC, 0x20, 0x20, 0xE0, 0xC0, 0x00, 0xFC, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, // char 'Ы' (0x042B/1067)
+    0xFC, 0x20, 0x20, 0xE0, 0xC0, 0x01, 0x01, 0x01, 0x01, 0x00, // char 'Ь' (0x042C/1068)
+    0x04, 0x24, 0x24, 0xFC, 0xF8, 0x01, 0x01, 0x01, 0x01, 0x00, // char 'Э' (0x042D/1069)
+    0xFC, 0x20, 0x70, 0xF8, 0x04, 0x04, 0xDC, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'Ю' (0x042E/1070)
+    0x98, 0xFC, 0x24, 0x24, 0xFC, 0x01, 0x01, 0x00, 0x00, 0x01, // char 'Я' (0x042F/1071)
+    0xD0, 0x50, 0x50, 0xF0, 0x01, 0x01, 0x01, 0x01, // char 'а' (0x0430/1072)
+    0x00, 0xF8, 0xAC, 0x94, 0xF4, 0x00, 0x00, 0x01, 0x01, 0x00, // char 'б' (0x0431/1073)
+    0xF0, 0x50, 0x50, 0xB0, 0x01, 0x01, 0x01, 0x01, // char 'в' (0x0432/1074)
+    0xF0, 0x10, 0x10, 0x01, 0x00, 0x00, // char 'г' (0x0433/1075)
+    0x00, 0xC0, 0x70, 0x10, 0xF0, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'д' (0x0434/1076)
+    0xE0, 0x50, 0x50, 0x60, 0x00, 0x01, 0x01, 0x01, // char 'е' (0x0435/1077)
+    0x10, 0xB0, 0x40, 0xF0, 0x40, 0xF0, 0x90, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, // char 'ж' (0x0436/1078)
+    0x10, 0x50, 0x50, 0xB0, 0x01, 0x01, 0x01, 0x01, // char 'з' (0x0437/1079)
+    0xF0, 0xC0, 0x20, 0xF0, 0x01, 0x00, 0x00, 0x01, // char 'и' (0x0438/1080)
+    0xF0, 0xC6, 0x24, 0xF6, 0x01, 0x00, 0x00, 0x01, // char 'й' (0x0439/1081)
+    0xF0, 0x40, 0xF0, 0x10, 0x01, 0x00, 0x01, 0x01, // char 'к' (0x043A/1082)
+    0x00, 0xC0, 0x70, 0x10, 0xF0, 0x01, 0x01, 0x00, 0x00, 0x01, // char 'л' (0x043B/1083)
+    0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // char 'м' (0x043C/1084)
+    0xF0, 0x40, 0x40, 0xF0, 0x01, 0x00, 0x00, 0x01, // char 'н' (0x043D/1085)
+    0xF0, 0x10, 0x10, 0xF0, 0x01, 0x01, 0x01, 0x01, // char 'о' (0x043E/1086)
+    0xF0, 0x10, 0x10, 0xF0, 0x01, 0x00, 0x00, 0x01, // char 'п' (0x043F/1087)
+    0xF0, 0x10, 0x10, 0xE0, 0x07, 0x01, 0x01, 0x00, // char 'р' (0x0440/1088)
+    0xE0, 0x10, 0x10, 0x10, 0x00, 0x01, 0x01, 0x01, // char 'с' (0x0441/1089)
+    0x10, 0x10, 0xF0, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, // char 'т' (0x0442/1090)
+    0x30, 0xE0, 0x80, 0xE0, 0x10, 0x00, 0x04, 0x03, 0x00, 0x00, // char 'у' (0x0443/1091)
+    0xE0, 0xB0, 0x10, 0xFC, 0x10, 0x10, 0xE0, 0x00, 0x01, 0x01, 0x07, 0x01, 0x01, 0x00, // char 'ф' (0x0444/1092)
+    0x10, 0xE0, 0xE0, 0x10, 0x01, 0x00, 0x00, 0x01, // char 'х' (0x0445/1093)
+    0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'ц' (0x0446/1094)
+    0x70, 0x40, 0x40, 0xF0, 0x00, 0x00, 0x00, 0x01, // char 'ч' (0x0447/1095)
+    0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // char 'ш' (0x0448/1096)
+    0xF0, 0x00, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x07, // char 'щ' (0x0449/1097)
+    0x10, 0x10, 0xF0, 0x20, 0xE0, 0xE0, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'ъ' (0x044A/1098)
+    0xF0, 0x20, 0x20, 0xE0, 0x00, 0xF0, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, // char 'ы' (0x044B/1099)
+    0xF0, 0x20, 0xE0, 0xE0, 0x01, 0x01, 0x01, 0x00, // char 'ь' (0x044C/1100)
+    0x50, 0x50, 0xF0, 0xE0, 0x01, 0x01, 0x01, 0x00, // char 'э' (0x044D/1101)
+    0xF0, 0x40, 0xE0, 0xB0, 0x10, 0xB0, 0xE0, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, // char 'ю' (0x044E/1102)
+    0xB0, 0xD0, 0x50, 0xF0, 0x01, 0x01, 0x00, 0x01, // char 'я' (0x044F/1103)
+    0x00, 0x00, 0x00, // end of unicode tables
+    // FONT REQUIRES 944 BYTES
+};
+
+// --------@----------------
+// -@@-@@---@---------------
+// -------------------------
+// --@@----@@@@--@@@--@@-@@-
+// --@@----@----@--@--------
+// --@-@---@----@-@@--@---@-
+// -@--@---@@@@-@-@@--@@-@--
+// -@@@@---@----@--@@--@-@--
+// -@---@--@----@---@--@@@--
+// @----@--@@@@-@-@@@---@---
+// ---------------------@---
+// --------------------@----
+const uint8_t free_calibri11x12_latin[] PROGMEM =
+{
+//  type|width|height|first char
+    0x02, 0x0A, 0x0C, 0x00,
+// GROUP first '¡' total 95 chars
+//  unicode(LSB,MSB)|count
+    0x00, 0xA1, 0x5F, // unicode record
+    0x00, 0x00, 0x02, 0x0B, // char '¡' (0x00A1/161)
+    0x00, 0x04, 0x04, 0x0A, // char '¢' (0x00A2/162)
+    0x00, 0x0C, 0x05, 0x0A, // char '£' (0x00A3/163)
+    0x00, 0x16, 0x05, 0x0A, // char '¤' (0x00A4/164)
+    0x00, 0x20, 0x06, 0x0A, // char '¥' (0x00A5/165)
+    0x00, 0x2C, 0x01, 0x0C, // char '¦' (0x00A6/166)
+    0x00, 0x2E, 0x04, 0x0B, // char '§' (0x00A7/167)
+    0x00, 0x36, 0x05, 0x04, // char '¨' (0x00A8/168)
+    0x00, 0x3B, 0x07, 0x0A, // char '©' (0x00A9/169)
+    0x00, 0x49, 0x03, 0x09, // char 'ª' (0x00AA/170)
+    0x00, 0x4F, 0x04, 0x09, // char '«' (0x00AB/171)
+    0x00, 0x57, 0x05, 0x08, // char '¬' (0x00AC/172)
+    0x00, 0x5C, 0x03, 0x08, // char '­' (0x00AD/173)
+    0x00, 0x5F, 0x04, 0x06, // char '®' (0x00AE/174)
+    0x00, 0x63, 0x04, 0x04, // char '¯' (0x00AF/175)
+    0x00, 0x67, 0x03, 0x06, // char '°' (0x00B0/176)
+    0x00, 0x6A, 0x05, 0x0A, // char '±' (0x00B1/177)
+    0x00, 0x74, 0x03, 0x06, // char '²' (0x00B2/178)
+    0x00, 0x77, 0x03, 0x06, // char '³' (0x00B3/179)
+    0x00, 0x7A, 0x03, 0x04, // char '´' (0x00B4/180)
+    0x00, 0x7D, 0x05, 0x0C, // char 'µ' (0x00B5/181)
+    0x00, 0x87, 0x05, 0x0B, // char '¶' (0x00B6/182)
+    0x00, 0x91, 0x02, 0x07, // char '·' (0x00B7/183)
+    0x00, 0x93, 0x02, 0x0C, // char '¸' (0x00B8/184)
+    0x00, 0x97, 0x02, 0x06, // char '¹' (0x00B9/185)
+    0x00, 0x99, 0x03, 0x09, // char 'º' (0x00BA/186)
+    0x00, 0x9F, 0x04, 0x09, // char '»' (0x00BB/187)
+    0x00, 0xA7, 0x07, 0x0A, // char '¼' (0x00BC/188)
+    0x00, 0xB5, 0x07, 0x0A, // char '½' (0x00BD/189)
+    0x00, 0xC3, 0x07, 0x0A, // char '¾' (0x00BE/190)
+    0x00, 0xD1, 0x04, 0x0B, // char '¿' (0x00BF/191)
+    0x00, 0xD9, 0x06, 0x0A, // char 'À' (0x00C0/192)
+    0x00, 0xE5, 0x06, 0x0A, // char 'Á' (0x00C1/193)
+    0x00, 0xF1, 0x06, 0x0A, // char 'Â' (0x00C2/194)
+    0x00, 0xFD, 0x06, 0x0A, // char 'Ã' (0x00C3/195)
+    0x01, 0x09, 0x06, 0x0A, // char 'Ä' (0x00C4/196)
+    0x01, 0x15, 0x06, 0x0A, // char 'Å' (0x00C5/197)
+    0x01, 0x21, 0x08, 0x0A, // char 'Æ' (0x00C6/198)
+    0x01, 0x31, 0x05, 0x0C, // char 'Ç' (0x00C7/199)
+    0x01, 0x3B, 0x05, 0x0A, // char 'È' (0x00C8/200)
+    0x01, 0x45, 0x04, 0x0A, // char 'É' (0x00C9/201)
+    0x01, 0x4D, 0x05, 0x0A, // char 'Ê' (0x00CA/202)
+    0x01, 0x57, 0x05, 0x0A, // char 'Ë' (0x00CB/203)
+    0x01, 0x61, 0x03, 0x0A, // char 'Ì' (0x00CC/204)
+    0x01, 0x67, 0x03, 0x0A, // char 'Í' (0x00CD/205)
+    0x01, 0x6D, 0x05, 0x0A, // char 'Î' (0x00CE/206)
+    0x01, 0x77, 0x05, 0x0A, // char 'Ï' (0x00CF/207)
+    0x01, 0x81, 0x06, 0x0A, // char 'Ð' (0x00D0/208)
+    0x01, 0x8D, 0x05, 0x0A, // char 'Ñ' (0x00D1/209)
+    0x01, 0x97, 0x05, 0x0A, // char 'Ò' (0x00D2/210)
+    0x01, 0xA1, 0x05, 0x0A, // char 'Ó' (0x00D3/211)
+    0x01, 0xAB, 0x05, 0x0A, // char 'Ô' (0x00D4/212)
+    0x01, 0xB5, 0x05, 0x0A, // char 'Õ' (0x00D5/213)
+    0x01, 0xBF, 0x05, 0x0A, // char 'Ö' (0x00D6/214)
+    0x01, 0xC9, 0x04, 0x09, // char '×' (0x00D7/215)
+    0x01, 0xD1, 0x06, 0x0B, // char 'Ø' (0x00D8/216)
+    0x01, 0xDD, 0x05, 0x0A, // char 'Ù' (0x00D9/217)
+    0x01, 0xE7, 0x05, 0x0A, // char 'Ú' (0x00DA/218)
+    0x01, 0xF1, 0x05, 0x0A, // char 'Û' (0x00DB/219)
+    0x01, 0xFB, 0x05, 0x0A, // char 'Ü' (0x00DC/220)
+    0x02, 0x05, 0x05, 0x0A, // char 'Ý' (0x00DD/221)
+    0x02, 0x0F, 0x04, 0x0A, // char 'Þ' (0x00DE/222)
+    0x02, 0x17, 0x05, 0x0A, // char 'ß' (0x00DF/223)
+    0x02, 0x21, 0x04, 0x0A, // char 'à' (0x00E0/224)
+    0x02, 0x29, 0x04, 0x0A, // char 'á' (0x00E1/225)
+    0x02, 0x31, 0x04, 0x0A, // char 'â' (0x00E2/226)
+    0x02, 0x39, 0x05, 0x0A, // char 'ã' (0x00E3/227)
+    0x02, 0x43, 0x05, 0x0A, // char 'ä' (0x00E4/228)
+    0x02, 0x4D, 0x04, 0x0A, // char 'å' (0x00E5/229)
+    0x02, 0x55, 0x07, 0x0A, // char 'æ' (0x00E6/230)
+    0x02, 0x63, 0x04, 0x0C, // char 'ç' (0x00E7/231)
+    0x02, 0x6B, 0x04, 0x0A, // char 'è' (0x00E8/232)
+    0x02, 0x73, 0x04, 0x0A, // char 'é' (0x00E9/233)
+    0x02, 0x7B, 0x04, 0x0A, // char 'ê' (0x00EA/234)
+    0x02, 0x83, 0x05, 0x0A, // char 'ë' (0x00EB/235)
+    0x02, 0x8D, 0x03, 0x0A, // char 'ì' (0x00EC/236)
+    0x02, 0x93, 0x03, 0x0A, // char 'í' (0x00ED/237)
+    0x02, 0x99, 0x04, 0x0A, // char 'î' (0x00EE/238)
+    0x02, 0xA1, 0x04, 0x0A, // char 'ï' (0x00EF/239)
+    0x02, 0xA9, 0x05, 0x0A, // char 'ð' (0x00F0/240)
+    0x02, 0xB3, 0x05, 0x0A, // char 'ñ' (0x00F1/241)
+    0x02, 0xBD, 0x04, 0x0A, // char 'ò' (0x00F2/242)
+    0x02, 0xC5, 0x04, 0x0A, // char 'ó' (0x00F3/243)
+    0x02, 0xCD, 0x04, 0x0A, // char 'ô' (0x00F4/244)
+    0x02, 0xD5, 0x05, 0x0A, // char 'õ' (0x00F5/245)
+    0x02, 0xDF, 0x05, 0x0A, // char 'ö' (0x00F6/246)
+    0x02, 0xE9, 0x05, 0x09, // char '÷' (0x00F7/247)
+    0x02, 0xF3, 0x05, 0x0B, // char 'ø' (0x00F8/248)
+    0x02, 0xFD, 0x04, 0x0A, // char 'ù' (0x00F9/249)
+    0x03, 0x05, 0x04, 0x0A, // char 'ú' (0x00FA/250)
+    0x03, 0x0D, 0x04, 0x0A, // char 'û' (0x00FB/251)
+    0x03, 0x15, 0x05, 0x0A, // char 'ü' (0x00FC/252)
+    0x03, 0x1F, 0x05, 0x0C, // char 'ý' (0x00FD/253)
+    0x03, 0x29, 0x04, 0x0C, // char 'þ' (0x00FE/254)
+    0x03, 0x31, 0x05, 0x0C, // char 'ÿ' (0x00FF/255)
+    0x03, 0x3E,
+    0x10, 0x90, 0x00, 0x07, // char '¡' (0x00A1/161)
+    0xE0, 0xB0, 0x18, 0x10, 0x00, 0x01, 0x03, 0x01, // char '¢' (0x00A2/162)
+    0x40, 0xF0, 0x58, 0x48, 0x18, 0x02, 0x03, 0x02, 0x02, 0x02, // char '£' (0x00A3/163)
+    0x10, 0xE0, 0x20, 0x20, 0xD0, 0x00, 0x03, 0x01, 0x01, 0x02, // char '¤' (0x00A4/164)
+    0x48, 0x58, 0xE0, 0x70, 0x48, 0x00, 0x01, 0x01, 0x03, 0x01, 0x01, 0x00, // char '¥' (0x00A5/165)
+    0x3C, 0x0F, // char '¦' (0x00A6/166)
+    0xF8, 0xA8, 0x68, 0xC0, 0x04, 0x05, 0x05, 0x07, // char '§' (0x00A7/167)
+    0x08, 0x08, 0x00, 0x08, 0x08, // char '¨' (0x00A8/168)
+    0xF0, 0x08, 0xF4, 0x94, 0x94, 0x04, 0xF8, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01, // char '©' (0x00A9/169)
+    0x68, 0x68, 0x70, 0x01, 0x01, 0x01, // char 'ª' (0x00AA/170)
+    0xE0, 0x10, 0xE0, 0x10, 0x00, 0x01, 0x00, 0x01, // char '«' (0x00AB/171)
+    0x40, 0x40, 0x40, 0x40, 0xC0, // char '¬' (0x00AC/172)
+    0x80, 0x80, 0x80, // char '­' (0x00AD/173)
+    0x3C, 0x2C, 0x24, 0x18, // char '®' (0x00AE/174)
+    0x00, 0x08, 0x08, 0x08, // char '¯' (0x00AF/175)
+    0x38, 0x28, 0x38, // char '°' (0x00B0/176)
+    0x20, 0x20, 0xF8, 0x20, 0x20, 0x02, 0x02, 0x02, 0x02, 0x02, // char '±' (0x00B1/177)
+    0x24, 0x34, 0x2C, // char '²' (0x00B2/178)
+    0x2C, 0x2C, 0x34, // char '³' (0x00B3/179)
+    0x00, 0x08, 0x04, // char '´' (0x00B4/180)
+    0xE0, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x02, 0x02, 0x03, 0x02, // char 'µ' (0x00B5/181)
+    0x70, 0x78, 0xF8, 0x08, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x07, // char '¶' (0x00B6/182)
+    0x40, 0x40, // char '·' (0x00B7/183)
+    0x00, 0x00, 0x08, 0x0C, // char '¸' (0x00B8/184)
+    0x08, 0x3C, // char '¹' (0x00B9/185)
+    0x78, 0x48, 0x78, 0x01, 0x01, 0x01, // char 'º' (0x00BA/186)
+    0x10, 0xE0, 0x10, 0xE0, 0x01, 0x00, 0x01, 0x00, // char '»' (0x00BB/187)
+    0x10, 0x78, 0x80, 0x40, 0xB0, 0xC8, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x03, 0x01, // char '¼' (0x00BC/188)
+    0x10, 0x78, 0x80, 0x40, 0x70, 0x48, 0xC0, 0x00, 0x02, 0x01, 0x00, 0x02, 0x03, 0x02, // char '½' (0x00BD/189)
+    0x58, 0x58, 0xF8, 0x40, 0xB0, 0xC8, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x03, 0x01, // char '¾' (0x00BE/190)
+    0x00, 0x90, 0xD0, 0x00, 0x03, 0x04, 0x04, 0x04, // char '¿' (0x00BF/191)
+    0x00, 0xC0, 0xB9, 0x9A, 0xE0, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'À' (0x00C0/192)
+    0x00, 0xC0, 0xB8, 0x9A, 0xE1, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'Á' (0x00C1/193)
+    0x00, 0xC0, 0xBA, 0x99, 0xE2, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'Â' (0x00C2/194)
+    0x00, 0xC0, 0xBB, 0x99, 0xE2, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'Ã' (0x00C3/195)
+    0x00, 0xC2, 0xBA, 0x98, 0xE2, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'Ä' (0x00C4/196)
+    0x00, 0xC7, 0xBD, 0x9F, 0xE0, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x03, // char 'Å' (0x00C5/197)
+    0x00, 0xC0, 0xB0, 0x88, 0xF8, 0x48, 0x48, 0x48, 0x02, 0x01, 0x00, 0x00, 0x03, 0x02, 0x02, 0x02, // char 'Æ' (0x00C6/198)
+    0xF0, 0xF8, 0x08, 0x08, 0x10, 0x01, 0x03, 0x0E, 0x0E, 0x01, // char 'Ç' (0x00C7/199)
+    0x00, 0xF9, 0x4A, 0x48, 0x48, 0x00, 0x03, 0x02, 0x02, 0x02, // char 'È' (0x00C8/200)
+    0xF8, 0x48, 0x4A, 0x49, 0x03, 0x02, 0x02, 0x02, // char 'É' (0x00C9/201)
+    0x00, 0xFA, 0x49, 0x4A, 0x48, 0x00, 0x03, 0x02, 0x02, 0x02, // char 'Ê' (0x00CA/202)
+    0xFA, 0x4A, 0x48, 0x4A, 0x02, 0x03, 0x02, 0x02, 0x02, 0x00, // char 'Ë' (0x00CB/203)
+    0x00, 0x01, 0xFA, 0x00, 0x00, 0x03, // char 'Ì' (0x00CC/204)
+    0x00, 0xFA, 0x01, 0x00, 0x03, 0x00, // char 'Í' (0x00CD/205)
+    0x00, 0x02, 0xF9, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // char 'Î' (0x00CE/206)
+    0x02, 0x02, 0xF8, 0x02, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, // char 'Ï' (0x00CF/207)
+    0x40, 0xF8, 0x48, 0x08, 0xB8, 0xF0, 0x00, 0x03, 0x02, 0x02, 0x03, 0x01, // char 'Ð' (0x00D0/208)
+    0xF8, 0x1B, 0x61, 0x82, 0xFB, 0x03, 0x00, 0x00, 0x03, 0x03, // char 'Ñ' (0x00D1/209)
+    0xF0, 0x19, 0x0A, 0x18, 0xF0, 0x01, 0x02, 0x02, 0x03, 0x01, // char 'Ò' (0x00D2/210)
+    0xF0, 0x18, 0x0A, 0x19, 0xF0, 0x01, 0x02, 0x02, 0x03, 0x01, // char 'Ó' (0x00D3/211)
+    0xF0, 0x1A, 0x09, 0x1A, 0xF0, 0x01, 0x02, 0x02, 0x03, 0x01, // char 'Ô' (0x00D4/212)
+    0xF0, 0x1B, 0x09, 0x1A, 0xF3, 0x01, 0x02, 0x02, 0x03, 0x01, // char 'Õ' (0x00D5/213)
+    0xF2, 0x1A, 0x08, 0x1A, 0xF2, 0x01, 0x02, 0x02, 0x03, 0x01, // char 'Ö' (0x00D6/214)
+    0x20, 0xC0, 0xC0, 0x20, 0x01, 0x00, 0x00, 0x01, // char '×' (0x00D7/215)
+    0xF0, 0x08, 0xC8, 0x38, 0x1C, 0xE0, 0x05, 0x03, 0x02, 0x02, 0x01, 0x00, // char 'Ø' (0x00D8/216)
+    0xF8, 0x01, 0x02, 0x00, 0xF8, 0x01, 0x02, 0x02, 0x02, 0x01, // char 'Ù' (0x00D9/217)
+    0xF8, 0x00, 0x02, 0x01, 0xF8, 0x01, 0x02, 0x02, 0x02, 0x01, // char 'Ú' (0x00DA/218)
+    0xF8, 0x02, 0x01, 0x02, 0xF8, 0x01, 0x02, 0x02, 0x02, 0x01, // char 'Û' (0x00DB/219)
+    0xFA, 0x02, 0x00, 0x02, 0xFA, 0x01, 0x02, 0x02, 0x02, 0x01, // char 'Ü' (0x00DC/220)
+    0x08, 0x30, 0xC0, 0x32, 0x09, 0x00, 0x00, 0x03, 0x00, 0x00, // char 'Ý' (0x00DD/221)
+    0xF8, 0x90, 0xF0, 0x70, 0x03, 0x00, 0x00, 0x00, // char 'Þ' (0x00DE/222)
+    0xF0, 0x08, 0x68, 0xF8, 0x80, 0x03, 0x00, 0x02, 0x02, 0x03, // char 'ß' (0x00DF/223)
+    0xA0, 0xA4, 0xA8, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'à' (0x00E0/224)
+    0xA0, 0xA0, 0xA8, 0xE4, 0x03, 0x02, 0x02, 0x03, // char 'á' (0x00E1/225)
+    0xA0, 0xA0, 0xAC, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'â' (0x00E2/226)
+    0x00, 0xAC, 0xA4, 0xA8, 0xEC, 0x00, 0x03, 0x02, 0x02, 0x03, // char 'ã' (0x00E3/227)
+    0xA8, 0xA8, 0xA0, 0xE8, 0x08, 0x03, 0x02, 0x02, 0x03, 0x00, // char 'ä' (0x00E4/228)
+    0xAE, 0xAA, 0xAE, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'å' (0x00E5/229)
+    0x20, 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, 0xC0, 0x03, 0x02, 0x02, 0x01, 0x02, 0x02, 0x02, // char 'æ' (0x00E6/230)
+    0xC0, 0x60, 0x20, 0x20, 0x01, 0x0B, 0x0E, 0x02, // char 'ç' (0x00E7/231)
+    0xC0, 0xA4, 0xA8, 0xC0, 0x01, 0x02, 0x02, 0x02, // char 'è' (0x00E8/232)
+    0xC0, 0xA0, 0xA8, 0xC4, 0x01, 0x02, 0x02, 0x02, // char 'é' (0x00E9/233)
+    0xC0, 0xA0, 0xAC, 0xC0, 0x01, 0x02, 0x02, 0x02, // char 'ê' (0x00EA/234)
+    0xC8, 0xA8, 0xA0, 0xC8, 0x08, 0x01, 0x02, 0x02, 0x02, 0x00, // char 'ë' (0x00EB/235)
+    0x00, 0x04, 0xE8, 0x00, 0x00, 0x03, // char 'ì' (0x00EC/236)
+    0x00, 0xE8, 0x04, 0x00, 0x03, 0x00, // char 'í' (0x00ED/237)
+    0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x03, 0x00, // char 'î' (0x00EE/238)
+    0x00, 0x08, 0xE0, 0x08, 0x00, 0x00, 0x03, 0x00, // char 'ï' (0x00EF/239)
+    0x80, 0xD0, 0x58, 0x78, 0xE8, 0x01, 0x03, 0x02, 0x03, 0x01, // char 'ð' (0x00F0/240)
+    0x00, 0xEC, 0x24, 0x28, 0xEC, 0x00, 0x03, 0x00, 0x00, 0x03, // char 'ñ' (0x00F1/241)
+    0xE0, 0x24, 0x28, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'ò' (0x00F2/242)
+    0xE0, 0x20, 0x28, 0xE4, 0x03, 0x02, 0x02, 0x03, // char 'ó' (0x00F3/243)
+    0xE0, 0x20, 0x2C, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'ô' (0x00F4/244)
+    0x00, 0xEC, 0x24, 0x28, 0xEC, 0x00, 0x03, 0x02, 0x02, 0x03, // char 'õ' (0x00F5/245)
+    0xE8, 0x28, 0x20, 0xE8, 0x08, 0x03, 0x02, 0x02, 0x03, 0x00, // char 'ö' (0x00F6/246)
+    0x40, 0x40, 0x50, 0x50, 0x40, 0x00, 0x00, 0x01, 0x01, 0x00, // char '÷' (0x00F7/247)
+    0xC0, 0x60, 0xE0, 0x70, 0xC0, 0x01, 0x07, 0x03, 0x03, 0x01, // char 'ø' (0x00F8/248)
+    0xE0, 0x04, 0x08, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'ù' (0x00F9/249)
+    0xE0, 0x00, 0x08, 0xE4, 0x03, 0x02, 0x02, 0x03, // char 'ú' (0x00FA/250)
+    0xE0, 0x00, 0x0C, 0xE0, 0x03, 0x02, 0x02, 0x03, // char 'û' (0x00FB/251)
+    0xE8, 0x08, 0x00, 0xE8, 0x08, 0x03, 0x02, 0x02, 0x03, 0x00, // char 'ü' (0x00FC/252)
+    0x60, 0xC0, 0x08, 0xC4, 0x20, 0x00, 0x09, 0x07, 0x01, 0x00, // char 'ý' (0x00FD/253)
+    0xF8, 0x40, 0x60, 0xE0, 0x0F, 0x02, 0x03, 0x01, // char 'þ' (0x00FE/254)
+    0x68, 0xC8, 0x00, 0xC8, 0x28, 0x00, 0x09, 0x07, 0x01, 0x00, // char 'ÿ' (0x00FF/255)
+    0x00, 0x00, 0x00, // end of unicode tables
+    // FONT REQUIRES 1219 BYTES
+};
diff --git a/lib/libssd1306/src/ssd1306_fonts.h b/lib/libssd1306/src/ssd1306_fonts.h
new file mode 100644
index 0000000..e0b852e
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_fonts.h
@@ -0,0 +1,100 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_fonts.h Fonts for monochrome/rgb oled display
+ */
+
+#ifndef SSD1306_FONTS_H
+#define SSD1306_FONTS_H
+
+#include "ssd1306_hal/io.h"
+#include "nano_gfx_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup LCD_FONTS FONTS: Supported LCD fonts
+ * @{
+ */
+
+/** Standard ASCII 6x8 Fixed Type font.*/
+extern const PROGMEM uint8_t ssd1306xled_font6x8 [];
+
+/** Standard ASCII 8x16 Fixed Type font */
+extern const PROGMEM uint8_t ssd1306xled_font8x16[];
+
+/** German chars for standard ASCII 6x8 Fixed Type font */
+extern const PROGMEM uint8_t ssd1306xled_font6x8_German [];
+
+/** Standard ASCII 6x8 AB Fixed Type font with only capital letters */
+extern const PROGMEM uint8_t ssd1306xled_font6x8_AB [];
+
+/** Standard ASCII 5x7 Fixed Type font */
+extern const PROGMEM uint8_t ssd1306xled_font5x7 [];
+
+/** Standard ASCII 5x7 Fixed Type font with only capital letters */
+extern const PROGMEM uint8_t ssd1306xled_font5x7_AB [];
+
+/** Digital ASCII 5x7 Fixed Type font with only digits and operation signs */
+extern const PROGMEM uint8_t digital_font5x7_123[];
+
+/** Digital ASCII 5x7 Fixed Type font with only capital letters */
+extern const PROGMEM uint8_t digital_font5x7_AB[];
+
+/** Digital ASCII 5x7 Fixed Type font */
+extern const PROGMEM uint8_t digital_font5x7[];
+
+/** Calibri ASCII 11x12 Free Type font */
+extern const PROGMEM uint8_t free_calibri11x12[];
+
+/** Calibri ASCII 11x12 Free Type font cyrillic */
+extern const PROGMEM uint8_t free_calibri11x12_cyrillic[];
+
+/** Calibri ASCII 11x12 Free Type font basic latin */
+extern const PROGMEM uint8_t free_calibri11x12_latin[];
+
+
+/**
+ * Standard ASCII Free Type font 11x16 with digits only (Ascii codes 32 - 64).
+ * @warning can be used only with ssd1306_printFixed() and ssd1306_setFixedFont() functions.
+ */
+extern const PROGMEM uint8_t courier_new_font11x16_digits [];
+
+/**
+ * Comic Sans ASCII Free Type font 24x32 with digits only (Ascii codes 32 - 64).
+ * @warning can be used only with ssd1306_printFixed() and ssd1306_setFixedFont() functions.
+ */
+extern const PROGMEM uint8_t comic_sans_font24x32_123 [];
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // SSD1306_FONTS_H
diff --git a/lib/libssd1306/src/ssd1306_generic.c b/lib/libssd1306/src/ssd1306_generic.c
new file mode 100644
index 0000000..75f3fa7
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_generic.c
@@ -0,0 +1,395 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+////// GENERIC FUNCTIONS APPLICABLE FOR ALL DISPLAY TYPES /////////////////////
+///////////////////////////////////////////////////////////////////////////////
+
+#include "ssd1306.h"
+#include "ssd1306_fonts.h"
+#include "lcd/lcd_common.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "intf/ssd1306_interface.h"
+#include "ssd1306_hal/io.h"
+#include "nano_gfx_types.h"
+
+enum
+{
+    SSD1306_OLD_FIXED_FORMAT = 0x00,
+    SSD1306_NEW_FIXED_FORMAT = 0x01,
+    SSD1306_NEW_FORMAT       = 0x02,
+    SSD1306_SQUIX_FORMAT     = 0x03,
+};
+
+uint16_t ssd1306_color = 0xFFFF;
+lcduint_t ssd1306_cursorX = 0;
+lcduint_t ssd1306_cursorY = 0;
+SFixedFontInfo s_fixedFont = {}; //{ { 0 }, 0 };
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+uint8_t g_ssd1306_unicode = 1;
+#endif
+static void (*s_ssd1306_getCharBitmap)(uint16_t unicode, SCharInfo *info) = NULL;
+
+static const uint8_t *ssd1306_getCharGlyph(char ch);
+static const uint8_t *ssd1306_getU16CharGlyph(uint16_t unicode);
+
+lcduint_t      ssd1306_displayHeight()
+{
+    return ssd1306_lcd.height;
+}
+
+lcduint_t      ssd1306_displayWidth()
+{
+    return ssd1306_lcd.width;
+}
+
+void       ssd1306_setCursor(lcdint_t x, lcdint_t y)
+{
+    ssd1306_cursorX = x;
+    ssd1306_cursorY = y;
+}
+
+static const uint8_t * ssd1306_readUnicodeRecord(SUnicodeBlockRecord *r, const uint8_t *p)
+{
+    r->start_code =( pgm_read_byte(&p[0]) << 8) | (pgm_read_byte(&p[1]));
+    r->count = pgm_read_byte(&p[2]);
+    return (r->count > 0) ? (&p[3]): NULL;
+}
+
+
+void ssd1306_setSecondaryFont(const uint8_t * progmemUnicode)
+{
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    s_fixedFont.secondary_table = progmemUnicode;
+    if (s_fixedFont.secondary_table != NULL)
+    {
+        s_fixedFont.secondary_table += sizeof(SFontHeaderRecord);
+    }
+#endif
+}
+
+void ssd1306_getCharBitmap(uint16_t unicode, SCharInfo *info)
+{
+    return s_ssd1306_getCharBitmap( unicode, info );
+}
+
+uint16_t ssd1306_unicode16FromUtf8(uint8_t ch)
+{
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    static uint16_t unicode = 0;
+    ch &= 0x000000FF;
+    if (!unicode)
+    {
+        if ( ch >= 0xc0 )
+        {
+            unicode = ch;
+            return SSD1306_MORE_CHARS_REQUIRED;
+        }
+        return ch;
+    }
+    uint16_t code = ((unicode & 0x1f) << 6) | (ch & 0x3f);
+    unicode = 0;
+    return code;
+#else
+    return ch;
+#endif
+}
+
+void ssd1306_enableUtf8Mode(void)
+{
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    g_ssd1306_unicode = 1;
+#endif
+}
+
+void ssd1306_enableAsciiMode(void)
+{
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    g_ssd1306_unicode = 0;
+#endif
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+/// SECTION WITH FONT FORMATS
+//////////////////////////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+/// OLD FORMAT: 1.7.6 and below
+/// OLD FORMAT is supported by old and latest versions of ssd1306 library
+
+static const uint8_t *ssd1306_getCharGlyph(char ch)
+{
+     return &s_fixedFont.primary_table[ (ch - s_fixedFont.h.ascii_offset) *
+                                        s_fixedFont.glyph_size +
+                                        (s_fixedFont.h.type == 0x01 ? sizeof(SUnicodeBlockRecord) : 0) ];
+}
+
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+static const uint8_t *ssd1306_searchCharGlyph(const uint8_t * unicode_table, uint16_t unicode)
+{
+    SUnicodeBlockRecord r;
+    const uint8_t *data = unicode_table;
+    // looking for required unicode table
+    while (1)
+    {
+        ssd1306_readUnicodeRecord( &r, data );
+        if (r.count == 0)
+        {
+            break;
+        }
+        data += sizeof(SUnicodeBlockRecord);
+        if ( ( unicode >= r.start_code) && ( unicode < (r.start_code + r.count) ) )
+        {
+            break;
+        }
+        data += r.count * s_fixedFont.glyph_size;
+    }
+    if (r.count == 0)
+    {
+        // Sorry, no glyph found for the specified character
+        return NULL;
+    }
+    return &data[ (unicode - r.start_code) * s_fixedFont.glyph_size ];
+}
+#endif
+
+static const uint8_t *ssd1306_getU16CharGlyph(uint16_t unicode)
+{
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    const uint8_t * glyph = NULL;
+    if (g_ssd1306_unicode)
+    {
+        if ((unicode < 128) && (s_fixedFont.h.type == 0x00) && (s_fixedFont.primary_table != NULL))
+        {
+            return ssd1306_getCharGlyph(unicode);
+        }
+        if (s_fixedFont.primary_table)
+        {
+            glyph = ssd1306_searchCharGlyph( s_fixedFont.primary_table, unicode );
+        }
+        if (!glyph && s_fixedFont.secondary_table)
+        {
+            glyph = ssd1306_searchCharGlyph( s_fixedFont.secondary_table, unicode );
+        }
+        if (!glyph)
+        {
+            return ssd1306_getCharGlyph( s_fixedFont.h.ascii_offset );
+        }
+        return glyph;
+    }
+    else
+#endif
+    {
+        return ssd1306_getCharGlyph(unicode);
+    }
+}
+
+static void __ssd1306_oldFormatGetBitmap(uint16_t unicode, SCharInfo *info)
+{
+    if (info)
+    {
+        info->width = s_fixedFont.h.width;
+        info->height = s_fixedFont.h.height;
+        info->spacing = 0;
+        info->glyph = ssd1306_getU16CharGlyph( unicode );
+    }
+}
+
+void ssd1306_setFixedFont(const uint8_t * progmemFont)
+{
+    s_fixedFont.h.type   = pgm_read_byte( &progmemFont[0] );
+    s_fixedFont.h.width  = pgm_read_byte(&progmemFont[1]);
+    s_fixedFont.h.height = pgm_read_byte(&progmemFont[2]);
+    s_fixedFont.h.ascii_offset = pgm_read_byte(&progmemFont[3]);
+    s_fixedFont.primary_table = progmemFont + 4;
+    s_ssd1306_getCharBitmap = __ssd1306_oldFormatGetBitmap;
+    s_fixedFont.pages = (s_fixedFont.h.height + 7) >> 3;
+    s_fixedFont.glyph_size = s_fixedFont.pages * s_fixedFont.h.width;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    s_fixedFont.secondary_table = NULL;
+#endif
+}
+
+void ssd1306_setFixedFont_oldStyle(const uint8_t * progmemFont)
+{
+    s_fixedFont.h.type   = pgm_read_byte( &progmemFont[0] );
+    s_fixedFont.h.width  = pgm_read_byte(&progmemFont[1]);
+    s_fixedFont.h.height = pgm_read_byte(&progmemFont[2]);
+    s_fixedFont.h.ascii_offset = pgm_read_byte(&progmemFont[3]);
+    s_fixedFont.primary_table = progmemFont + 4;
+    s_fixedFont.pages = (s_fixedFont.h.height + 7) >> 3;
+    s_fixedFont.glyph_size = s_fixedFont.pages * s_fixedFont.h.width;
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+/// NEW FORMAT: 1.7.8 and later
+/// NEW FORMAT is supported only by latest versions of ssd1306 library
+
+static void __ssd1306_newFormatGetBitmap(uint16_t unicode, SCharInfo *info)
+{
+    if (info)
+    {
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+        uint8_t table_index = 0;
+#endif
+        const uint8_t *data = s_fixedFont.primary_table;
+        while (data)
+        {
+            SUnicodeBlockRecord r;
+            data = ssd1306_readUnicodeRecord( &r, data );
+            if (!data)
+            {
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+                if ( table_index == 0 )
+                {
+                    table_index++;
+                    data = s_fixedFont.secondary_table;
+                    continue;
+                }
+#endif
+                break;
+            }
+            /* Check that unicode in the section being processed */
+            if ( ( unicode < r.start_code) || ( unicode >= (r.start_code + r.count) ) )
+            {
+                // skip jump table
+                data += r.count * 4;
+                // skip block bitmap data
+                data += ((pgm_read_byte(&data[0]) << 8) | (pgm_read_byte(&data[1]))) + 2;
+                continue;
+            }
+            /* At this point data points to jump table (offset|offset|bytes|width) */
+            unicode -= r.start_code;
+            data += unicode * 4;
+            uint16_t offset = (pgm_read_byte(&data[0]) << 8) | (pgm_read_byte(&data[1]));
+            uint8_t glyph_width = pgm_read_byte(&data[2]);
+            uint8_t glyph_height = pgm_read_byte(&data[3]);
+            info->width = glyph_width;
+            info->height = glyph_height;
+            info->spacing = glyph_width ? 1 : (s_fixedFont.h.width >> 1);
+            info->glyph = data + (r.count - unicode) * 4 + 2 + offset;
+            break;
+        }
+        if (!info->glyph)
+        {
+            info->width = 0;
+            info->height = 0;
+            info->spacing = s_fixedFont.h.width >> 1;
+            info->glyph = s_fixedFont.primary_table;
+        }
+    }
+}
+
+void ssd1306_setFreeFont(const uint8_t * progmemFont)
+{
+    s_fixedFont.h.type   = pgm_read_byte( &progmemFont[0] );
+    s_fixedFont.h.width  = pgm_read_byte(&progmemFont[1]);
+    s_fixedFont.h.height = pgm_read_byte(&progmemFont[2]);
+    s_fixedFont.h.ascii_offset = pgm_read_byte(&progmemFont[3]);
+    s_fixedFont.primary_table = progmemFont + 4;
+    s_ssd1306_getCharBitmap = __ssd1306_newFormatGetBitmap;
+    s_fixedFont.pages = (s_fixedFont.h.height + 7) >> 3;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    s_fixedFont.secondary_table = NULL;
+#endif
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////////
+/// SQUIX FORMAT: 1.7.8 and later
+/// SQUIX FORMAT is not fully supported. Use it at your own risk
+
+static void __ssd1306_squixFormatGetBitmap(uint16_t unicode, SCharInfo *info)
+{
+    if (info)
+    {
+        const uint8_t *data = s_fixedFont.primary_table;
+        /* Check that unicode in the section being processed */
+        if ( !data || ( unicode < s_fixedFont.h.ascii_offset) || ( unicode >= (s_fixedFont.h.ascii_offset + s_fixedFont.count) ) )
+        {
+            info->width = 0;
+            info->height = 0;
+            info->spacing = s_fixedFont.h.width >> 1;
+            info->glyph = s_fixedFont.primary_table;
+            return;
+        }
+        /* At this point data points to jump table (offset|offset|bytes|width) */
+        const uint8_t * bitmap_data = data + (uint16_t)s_fixedFont.count * 4;
+        unicode -= s_fixedFont.h.ascii_offset;
+        data += (unicode * 4);
+        uint16_t offset = (pgm_read_byte(&data[0]) << 8) | pgm_read_byte(&data[1]);
+        uint8_t glyph_bytes = pgm_read_byte(&data[2]);
+//        uint8_t width = pgm_read_byte(&data[3]);
+        info->width = glyph_bytes; //(glyph_bytes + s_fixedFont.pages - 1)  / s_fixedFont.pages;
+        info->height = s_fixedFont.h.height / 2;
+        info->spacing = 1;
+//        uint8_t index=0;
+        info->glyph = bitmap_data;
+        if ( offset != 0xFFFF )
+        {
+             info->glyph += offset;
+        }
+    }
+}
+
+void ssd1306_setSquixFont(const uint8_t * progmemFont)
+{
+    s_fixedFont.h.type = SSD1306_SQUIX_FORMAT;
+    s_fixedFont.h.width  = pgm_read_byte(&progmemFont[0]);
+    s_fixedFont.h.height = pgm_read_byte(&progmemFont[1]);
+    s_fixedFont.h.ascii_offset = pgm_read_byte(&progmemFont[2]);
+    s_fixedFont.count = pgm_read_byte(&progmemFont[3]);
+    s_fixedFont.primary_table = progmemFont + 4;
+    s_ssd1306_getCharBitmap = __ssd1306_squixFormatGetBitmap;
+    s_fixedFont.pages = (s_fixedFont.h.height + 7) >> 3;
+    s_fixedFont.glyph_size = s_fixedFont.pages * s_fixedFont.h.width;
+#ifdef CONFIG_SSD1306_UNICODE_ENABLE
+    s_fixedFont.secondary_table = NULL;
+#endif
+}
+
+lcduint_t ssd1306_getTextSize(const char *text, lcduint_t *height)
+{
+    lcduint_t width = 0;
+    while (*text)
+    {
+        if (*text == '\r' || *text == '\n')
+        {
+            text++;
+            break;
+        }
+        uint16_t unicode = ssd1306_unicode16FromUtf8(*text);
+        if (unicode == SSD1306_MORE_CHARS_REQUIRED)
+        {
+            text++;
+            continue;
+        }
+        SCharInfo char_info;
+        ssd1306_getCharBitmap(unicode, &char_info);
+        width += char_info.width + char_info.spacing;
+        if ( height ) *height = char_info.height;
+        text++;
+    }
+    return width;
+}
diff --git a/lib/libssd1306/src/ssd1306_generic.h b/lib/libssd1306/src/ssd1306_generic.h
new file mode 100644
index 0000000..73c953d
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_generic.h
@@ -0,0 +1,318 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_generic.h SSD1306 generic API functions
+ */
+
+
+#ifndef _SSD1306_GENERIC_H_
+#define _SSD1306_GENERIC_H_
+
+#include "nano_gfx_types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+///////////////////////////////////////////////////////////////////////
+//                 GENERIC GRAPH FUNCTIONS
+///////////////////////////////////////////////////////////////////////
+
+/** Flag means that more chars are required to decode utf-8 */
+#define SSD1306_MORE_CHARS_REQUIRED  0xffff
+
+/**
+ * @defgroup LCD_GENERIC_API DIRECT DRAW: Generic API functions, common for all displays and all display modes.
+ * @{
+ * @brief Generic API functions, common for all displays and all display modes.
+ *
+ * @details Generic API functions, common for all displays and all display modes.
+ */
+
+/**
+ * Set position in terms of display.
+ * @param x - horizontal position in pixels
+ * @param y - vertical position in blocks (pixels/8)
+ */
+void         ssd1306_setPos(uint8_t x, uint8_t y);
+
+/**
+ * @brief Sets cursor position for text mode print functions.
+ *
+ * Sets cursor position for text mode print functions.
+ * @param x xpos in pixels
+ * @param y ypos in pixels
+ */
+void ssd1306_setCursor(lcdint_t x, lcdint_t y);
+
+/**
+ * Function allows to set another fixed font for the library.
+ * By default, the font supports only first 128 - 32 ascii chars.
+ * Please refer to github wiki on how to generate new fonts.
+ * @param progmemFont - font to setup located in Flash area
+ */
+void ssd1306_setFixedFont(const uint8_t * progmemFont);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+void ssd1306_setFixedFont_oldStyle(const uint8_t * progmemFont);
+#endif
+
+/**
+ * Function allows to set another free font for the library.
+ * By default, the font supports only first 128 - 32 ascii chars.
+ * Please refer to github wiki on how to generate new fonts.
+ * @param progmemFont - font to setup located in Flash area
+ * @note This function supports new fonts of ssd1306 library 1.7.8 and above
+ */
+void ssd1306_setFreeFont(const uint8_t * progmemFont);
+
+/**
+ * Function allows sets secondary font for specific language.
+ * Use it if you want to use additional font to combine capabilities of
+ * ascii fonts and language specific font.
+ * @param progmemUnicode font containing unicode table (refer to
+ *        ssd1306xled_font6x8_German as example).
+ */
+void ssd1306_setSecondaryFont(const uint8_t * progmemUnicode);
+
+/**
+ * Function allows to set another font for the library.
+ * By default, the font supports only first 128 - 32 ascii chars.
+ * First 32 chars of ascii table are non-printable, and removed
+ * from the font table to reduce flash memory consumption.
+ * Default font doesn't support russian characters. Using
+ * this function you can implement your own fonts.
+ * First font char must be started with \<space\> image.
+ * @param progmemFont - font to setup located in Flash area
+ * @deprecated Use ssd1306_setFixedFont() instead.
+ */
+void ssd1306_setFont6x8(const uint8_t * progmemFont) __attribute__ ((deprecated));
+
+/**
+ * @brief returns char data for currently set (active) font.
+ *
+ * Function returns char data for currently set font: pointer to progmem
+ * data for specified char, and width, height of the char. You can use these
+ * data to draw char manually using ssd1306_drawBitmap(), ssd1306_drawMonoBitmap8()
+ * or NanoCanvasOps::drawBitmap1().
+ *
+ * @param ch char to read from set font
+ * @param info pointer to SCharInfo structure to fill with char data
+ *
+ * @see ssd1306_setFixedFont
+ */
+void ssd1306_getCharBitmap(uint16_t ch, SCharInfo *info);
+
+/**
+ * Enables utf8 support for all text-functions.
+ * @note Unicode-16 only supported in text decoding functions.
+ */
+void ssd1306_enableUtf8Mode(void);
+
+/**
+ * Enables ascii mode for all text-functions. No any decoding will be performed
+ */
+void ssd1306_enableAsciiMode(void);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+/**
+ * Function allows to set and use squix font.
+ * @param progmemFont - font to setup located in Flash area
+ * @note This function supports squix fonts for ssd1306 library 1.7.8 and above
+ * @warning Squix fonts are not fully supported, use them at your own risk
+ */
+void ssd1306_setSquixFont(const uint8_t * progmemFont);
+
+/**
+ * Returns 16-bit unicode char, encoded in utf8
+ *         SSD1306_MORE_CHARS_REQUIRED if more characters is expected
+ * @param ch character byte to decode
+ * @return 16-bit unicode char, encoded in utf8
+ *         SSD1306_MORE_CHARS_REQUIRED if more characters is expected
+ */
+uint16_t ssd1306_unicode16FromUtf8(uint8_t ch);
+#endif
+
+/**
+ * Returns dimensions in pixels for text provided.
+ * @param text text to calculate size of
+ * @param height variable to store text height. Can be NULL
+ * @return witdth of passed text in pixels
+ */
+lcduint_t ssd1306_getTextSize(const char *text, lcduint_t *height);
+
+
+///////////////////////////////////////////////////////////////////////
+//                 HIGH-LEVEL GRAPH FUNCTIONS
+///////////////////////////////////////////////////////////////////////
+
+/**
+ * Describes menu object
+ */
+typedef struct
+{
+    /// list of menu items of the menu
+    const char **items;
+    /// count of menu items in the menu
+    uint8_t     count;
+    /// currently selected item. Internally updated.
+    uint8_t     selection;
+    /// selected item, when last redraw operation was performed. Internally updated.
+    uint8_t     oldSelection;
+    /// position of menu scrolling. Internally updated
+    uint8_t     scrollPosition;
+} SAppMenu;
+
+/**
+ * Creates menu object with the provided list of menu items.
+ * List of menu items (strings) must exist all until menu object is no longer needed.
+ * Selection is set to the first item by default.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ * @param items - array of null-termintated strings (located in SRAM)
+ * @param count - count of menu items in the array
+ */
+void ssd1306_createMenu(SAppMenu *menu, const char **items, uint8_t count);
+
+/**
+ * Shows menu items on the display. If menu items cannot fit the display,
+ * the function provides scrolling.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in SSD1306 compatible mode.
+ */
+void ssd1306_showMenu(SAppMenu *menu);
+
+/**
+ * Shows menu items on the display. If menu items cannot fit the display,
+ * the function provides scrolling.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in 8-bit RGB normal mode.
+ */
+void ssd1306_showMenu8(SAppMenu *menu);
+
+/**
+ * Shows menu items on the display. If menu items cannot fit the display,
+ * the function provides scrolling.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in 16-bit RGB normal mode.
+ */
+void ssd1306_showMenu16(SAppMenu *menu);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+static inline void ssd1331_showMenu8(SAppMenu *menu)
+{
+    ssd1306_showMenu8(menu);
+}
+#endif
+
+/**
+ * Updates menu items on the display. That is if selection is changed,
+ * the function will update only those areas, affected by the change.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ */
+void ssd1306_updateMenu(SAppMenu *menu);
+
+/**
+ * Updates menu items on the display. That is if selection is changed,
+ * the function will update only those areas, affected by the change.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in SSD1306 compatible mode.
+ */
+void ssd1306_updateMenu8(SAppMenu *menu);
+
+/**
+ * Updates menu items on the display. That is if selection is changed,
+ * the function will update only those areas, affected by the change.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in SSD1306 compatible mode.
+ */
+void ssd1306_updateMenu16(SAppMenu *menu);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+static inline void ssd1331_updateMenu8(SAppMenu *menu)
+{
+    ssd1306_updateMenu8(menu);
+}
+#endif
+
+/**
+ * Returns currently selected menu item.
+ * First item has zero-index.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ *
+ * @warning works only in 8-bit RGB normal mode.
+ */
+uint8_t ssd1306_menuSelection(SAppMenu *menu);
+
+/**
+ * Moves selection pointer down by 1 item. If there are no items below,
+ * it will set selection pointer to the first item.
+ * Use ssd1306_updateMenu() to refresh menu state on the display.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ */
+void ssd1306_menuDown(SAppMenu *menu);
+
+/**
+ * Moves selection pointer up by 1 item. If selected item is the first one,
+ * then selection pointer will set to the last item in menu list.
+ * Use ssd1306_updateMenu() to refresh menu state on the display.
+ *
+ * @param menu - Pointer to SAppMenu structure
+ */
+void ssd1306_menuUp(SAppMenu *menu);
+
+/**
+ * Draws progress bar in the middle of the screen
+ * @param progress progress value in range 0 - 100.
+ */
+void ssd1306_drawProgressBar(int8_t progress);
+
+/**
+ * Draws progress bar in the middle of the screen
+ * @param progress progress value in range 0 - 100.
+ */
+void ssd1306_drawProgressBar8(int8_t progress);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // _SSD1306_GENERIC_H_
diff --git a/lib/libssd1306/src/ssd1306_hal/Print_internal.h b/lib/libssd1306/src/ssd1306_hal/Print_internal.h
new file mode 100644
index 0000000..b60e10e
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/Print_internal.h
@@ -0,0 +1,111 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_hal/Print_internal.h SSD1306 Print class implementation
+ */
+
+#ifndef _SSD1306_HAL_PRINT_INTERNAL_H_
+#define _SSD1306_HAL_PRINT_INTERNAL_H_
+
+#if defined(ARDUINO) && !defined(ARDUINO_FAKE)
+
+/* Include standard print class for Arduino environment */
+#include "Print.h"
+
+#else
+
+#include "ssd1306_hal/io.h"
+#include <stdio.h>
+
+/** Implements own Print class for plain AVR and Linux environment */
+class Print
+{
+public:
+    /** Constructor to create Print class object */
+    Print() {}
+
+    /**
+     * abstract function to be defined in inherited classes
+     * @param ch char to print
+     * @return returns number of printed symbols
+     */
+    virtual size_t write(uint8_t ch) = 0;
+
+    /**
+     * Prints string via write()
+     * @param str string to print
+     * @return returns number of printed symbols
+     */
+    size_t print(const char* str)
+    {
+        size_t n = 0;
+        while (*str)
+        {
+            n += write(*str);
+            str++;
+        }
+        return n;
+    }
+
+    /**
+     * Prints number via write()
+     * @param n integer to print
+     * @return returns number of printed symbols
+     */
+    size_t print(int n)
+    {
+        char a[10];
+        snprintf(a, sizeof(a), "%i", n);
+        return print( a );
+    }
+
+    /**
+     * Prints string via write() and goes to next line.
+     * @param str string to print
+     * @return returns number of printed symbols
+     */
+    size_t println(const char* str)
+    {
+        size_t n = print(str);
+        n += write('\n');
+        return n;
+    };
+
+    /**
+     * Prints number via write() and goes to next line.
+     * @param data integer to print
+     * @return returns number of printed symbols
+     */
+    size_t println(int data)
+    {
+        size_t n = print(data);
+        n += write('\n');
+        return n;
+    }
+};
+
+#endif
+
+#endif
diff --git a/lib/libssd1306/src/ssd1306_hal/README.md b/lib/libssd1306/src/ssd1306_hal/README.md
new file mode 100644
index 0000000..3b0ef6c
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/README.md
@@ -0,0 +1,14 @@
+# Hardware abstraction layer
+
+This directory contain platform specific implementation of hardware abstraction layer.
+
+  * arduino dir: for all Arduino platforms (if you use Arduino IDE)
+  * avr dir: for plain avr-gcc environment
+  * esp dir: for plain esp8266/esp32 environment
+  * linux dir: for linux platforms including raspberry pi
+  * mingw dir: for running under windows
+  * stm32 dir: for plain stm32 support (not implemented)
+  * energia dir: for Energia platforms w/ MSP432P401R
+
+Edit UserSettings.h header file, if you want to disable some parts of ssd1306 library to reduce memory consumption in your project
+  
diff --git a/lib/libssd1306/src/ssd1306_hal/UserSettings.h b/lib/libssd1306/src/ssd1306_hal/UserSettings.h
new file mode 100644
index 0000000..5b9bc5f
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/UserSettings.h
@@ -0,0 +1,96 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file UserSettings.h SSD1306 modules configuration.
+ */
+
+#ifndef _USER_SETTINGS_H_
+#define _USER_SETTINGS_H_
+
+/**
+ * @defgroup SSD1306_LIBRARY_CONFIG CONFIG: ssd1306 library configuration
+ * @{
+ *
+ * @brief Group of settings allowing to disable/enable library modules
+ *
+ * @details Arduino IDE (at least as for 1.8.2) has a lack library configuration functionality.
+ *          Some Arduino standard libraries are built the way, if you include them to the project,
+ *          but do not use any functions from the, they still eat RAM and Flash on you EVK board.
+ *          To avoid this, you need competely avoid including of such libraries. SSD1306 library
+ *          has a wide interfaces support for different platforms, and even if you don't use
+ *          SSD1306 communication via Arduino Wire/Spi/HardwareSerial libraries, those ones do
+ *          bad things with your sketch size.
+ *          To avoid this you can manually disable SSD1306 modules, you don't need in UserSettings.h
+ *          header file, and gain another 100-200 bytes of RAM and 300-500 bytes of Flash.
+ */
+
+/* Comment out options below if you don't need support in the library,  *
+ * and want to reduce memory consumption.                               */
+
+/** Define this macro if you need to enable software I2C module for compilation */
+#define CONFIG_SOFTWARE_I2C_ENABLE
+
+/** Define this macro if you need to enable TWI I2C module for compilation */
+#define CONFIG_TWI_I2C_ENABLE
+
+/** Define this macro if you need to enable AVR SPI module for compilation */
+#define CONFIG_AVR_SPI_ENABLE
+
+/** Define this macro if you need to enable USI SPI module for compilation */
+#define CONFIG_USI_SPI_ENABLE
+
+/** Define this macro if you need to enable AVR UART module for compilation */
+#define CONFIG_AVR_UART_ENABLE
+
+/** Define this macro if you need to enable VGA module for compilation */
+#define CONFIG_VGA_ENABLE
+
+/** Define this macro if you need to enable Adafruit GFX canvas support for compilation */
+#ifndef CONFIG_ADAFRUIT_GFX_ENABLE
+//#define CONFIG_ADAFRUIT_GFX_ENABLE
+#endif
+
+/**
+ * Define this macro if platform specific i2c interface is implemented in SSD1306 HAL.
+ * If you use Arduino platform, this macro enables Arduino Wire library module for compilation.
+ */
+#define CONFIG_PLATFORM_I2C_ENABLE
+
+/**
+ * Define this macro if platform specific spi interface is implemented in SSD1306 HAL
+ * If you use Arduino platform, this macro enables Arduino SPI library module for compilation.
+ */
+#define CONFIG_PLATFORM_SPI_ENABLE
+
+/**
+ * Defines, whenever ssd1306 library supports unicode.
+ * Support of unicode increases RAM and Flasg memory consumption
+ */
+#define CONFIG_SSD1306_UNICODE_ENABLE
+
+/**
+ * @}
+ */
+
+#endif
diff --git a/lib/libssd1306/src/ssd1306_hal/arduino/io.h b/lib/libssd1306/src/ssd1306_hal/arduino/io.h
new file mode 100644
index 0000000..f121419
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/arduino/io.h
@@ -0,0 +1,225 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2021, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file hal/arduino/io.h SSD1306 ARDUINO IO communication functions
+ */
+
+#ifndef _SSD1306_ARDUINO_IO_H_
+#define _SSD1306_ARDUINO_IO_H_
+
+#if defined(ARDUINO_ARCH_STM32)   // stm32duino support
+    #include <Arduino.h>
+    #include <avr/pgmspace.h>
+#elif defined(ESP8266) || defined(ESP32) || defined(ESP31B)  // esp arduino support
+    #include <Arduino.h>
+    #include <pgmspace.h>
+#else  // AVR support
+    #include <Arduino.h>
+    #if !defined(ARDUINO_ARCH_SAMD) && defined(__AVR__)
+    #include <avr/sleep.h>
+    #include <avr/pgmspace.h>
+    #include <avr/interrupt.h>
+    #elif defined(ARDUINO_ARCH_SAMD)
+    #include <api/deprecated-avr-comp/avr/pgmspace.h>
+    #include <api/deprecated-avr-comp/avr/interrupt.h>
+    #else
+    #include <avr/pgmspace.h>
+    #include <avr/interrupt.h>
+    #endif
+#endif
+
+#if defined(ARDUINO_ARCH_STM32)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    /** The macro is defined when STM32 i2c implementation is available */
+    #define CONFIG_STM32_I2C_AVAILABLE
+
+#elif defined(ARDUINO_AVR_DIGISPARK) || defined(ARDUINO_AVR_DIGISPARKPRO)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    #if defined(ARDUINO_AVR_DIGISPARKPRO)
+        /** The macro is defined when SPI library is available */
+        #define CONFIG_PLATFORM_SPI_AVAILABLE
+    #else
+        /** The macro is defined when software i2c implementation is available */
+        #define CONFIG_SOFTWARE_I2C_AVAILABLE
+        /* Define lcdint as smallest types to reduce memo usage on tiny controllers. *
+         * Remember, that this can cause issues with large lcd displays, i.e. 320x240*/
+        #define LCDINT_TYPES_DEFINED
+        typedef int8_t lcdint_t;
+        typedef uint8_t lcduint_t;
+    #endif
+
+#elif defined(ARDUINO_AVR_ATTINYX5) || defined(ARDUINO_AVR_ATTINYX4)
+
+    /** The macro is defined when software i2c implementation is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when USI module is available for use */
+    #define CONFIG_USI_SPI_AVAILABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    /** Define lcdint as smallest types to reduce memo usage on tiny controllers. *
+     * Remember, that this can cause issues with large lcd displays, i.e. 320x240*/
+    #define LCDINT_TYPES_DEFINED
+    /** This is for Attiny controllers */
+    typedef int8_t lcdint_t;
+    /** This is for Attiny controllers */
+    typedef uint8_t lcduint_t;
+    /** The macro is defined when micro controller doesn't support multiplication operation */
+    #define CONFIG_MULTIPLICATION_NOT_SUPPORTED
+
+#elif defined(__AVR_ATtinyxy4__) || defined(__AVR_ATtinyxy2__) || defined(__AVR_ATtinyxy6__) || defined(__AVR_ATtinyxy7__)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    // Note: Might work for faster draw. But it does brick some devices that can't run at these speeds.
+    // Leaving it off for now
+    //#define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    /** Define lcdint as smallest types to reduce memo usage on tiny controllers. *
+     * Remember, that this can cause issues with large lcd displays, i.e. 320x240*/
+    #define LCDINT_TYPES_DEFINED
+    /** This is for Attiny controllers */
+    typedef int8_t lcdint_t;
+    /** This is for Attiny controllers */
+    typedef uint8_t lcduint_t;
+    /** The macro is defined when micro controller doesn't support multiplication operation */
+    //#define CONFIG_MULTIPLICATION_NOT_SUPPORTED
+
+
+#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) || \
+      defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
+
+    /** The macro is defined when software i2c implementation is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when USI module is available for use */
+    #define CONFIG_USI_SPI_AVAILABLE
+    /** Define lcdint as smallest types to reduce memo usage on tiny controllers. *
+     * Remember, that this can cause issues with large lcd displays, i.e. 320x240*/
+    #define LCDINT_TYPES_DEFINED
+    /** This is for Attiny controllers */
+    typedef int8_t lcdint_t;
+    /** This is for Attiny controllers */
+    typedef uint8_t lcduint_t;
+    /** The macro is defined when micro controller doesn't support multiplication operation */
+    #define CONFIG_MULTIPLICATION_NOT_SUPPORTED
+
+#elif defined(ESP8266) || defined(ESP32) || defined(ESP31B) || \
+      defined(ARDUINO_ARCH_SAMD) || defined(ARDUINO_ARCH_SAM)
+    /* SW implementation of i2c isn't supported on ESP platforms */
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    #if defined(ESP32)
+        /** The macro is defined when composite audio support is available */
+        #define CONFIG_VGA_AVAILABLE
+    #endif
+
+#elif defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328PB__)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when TWI module is available (ATTINY) */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    /** The macro is defined when SPI module is available (ATMEGA) */
+    #define CONFIG_AVR_SPI_AVAILABLE
+    /** The macro is defined when UART module is available */
+    #define CONFIG_AVR_UART_AVAILABLE
+    /** The macro is defined when VGA monitor control is available directly from controller */
+    #define CONFIG_VGA_AVAILABLE
+    #if defined(__AVR_ATmega328PB__) && !defined(WIRE_INTERFACES_COUNT)
+        #define WIRE_INTERFACES_COUNT 2
+    #endif
+
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when TWI module is available (ATTINY) */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    // Disable internal AVR SPI implementation for ATMEGA 2560 since,
+    // it doesn't work for now
+    // #define CONFIG_AVR_SPI_AVAILABLE
+
+#elif defined(NRF52) || defined(NRF5)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#elif defined(__AVR_ATmega4808__) || defined(__AVR_ATmega3208__) || defined(__AVR_ATmega1608__)
+
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#else
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_PLATFORM_I2C_AVAILABLE
+    /** The macro is defined when Wire library speed can be configured */
+    #define SSD1306_WIRE_CLOCK_CONFIGURABLE
+    /** The macro is defined when TWI module is available (ATTINY) */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI library is available */
+    #define CONFIG_PLATFORM_SPI_AVAILABLE
+    /** The macro is defined when SPI module is available (ATMEGA) */
+    #define CONFIG_AVR_SPI_AVAILABLE
+#endif
+
+//#ifdef CONFIG_PLATFORM_I2C_AVAILABLE
+//#ifdef __cplusplus
+//#include <Wire.h>
+//#endif
+//#endif
+
+#endif // _SSD1306_ARDUINO_IO_H_
+
diff --git a/lib/libssd1306/src/ssd1306_hal/arduino/platform.cpp b/lib/libssd1306/src/ssd1306_hal/arduino/platform.cpp
new file mode 100644
index 0000000..6a1359f
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/arduino/platform.cpp
@@ -0,0 +1,220 @@
+/*
+    MIT License
+
+    Copyright (c) 2016-2021, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+#include "intf/ssd1306_interface.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "lcd/lcd_common.h"
+
+#if defined(ARDUINO) && !defined(ENERGIA)
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        ARDUINO I2C IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && \
+    defined(CONFIG_PLATFORM_I2C_ENABLE)
+
+#include <Wire.h>
+#if defined( WIRE_INTERFACES_COUNT ) && WIRE_INTERFACES_COUNT > 1
+#include <Wire1.h>
+#endif
+
+static uint8_t s_bytesWritten = 0;
+static uint8_t s_sa = SSD1306_SA;
+static TwoWire *s_i2c = nullptr;
+
+static void ssd1306_i2cStart_Wire(void)
+{
+    s_i2c->beginTransmission(s_sa);
+    s_bytesWritten = 0;
+}
+
+static void ssd1306_i2cStop_Wire(void)
+{
+    s_i2c->endTransmission();
+}
+
+/**
+ * Inputs: SCL is LOW, SDA is has no meaning
+ * Outputs: SCL is LOW
+ */
+static void ssd1306_i2cSendByte_Wire(uint8_t data)
+{
+    // Do not write too many bytes for standard Wire.h. It may become broken
+#if defined(ESP32) || defined(ESP31B)
+    if (s_bytesWritten >= (I2C_BUFFER_LENGTH >> 4))
+#elif defined(ARDUINO_ARCH_SAMD)
+    if (s_bytesWritten >= 64)
+#elif defined(BUFFER_LENGTH)
+    if (s_bytesWritten >= (BUFFER_LENGTH - 2))
+#elif defined(SERIAL_BUFFER_LENGTH)
+    if (s_bytesWritten >= (SERIAL_BUFFER_LENGTH - 2))
+#elif defined(USI_BUF_SIZE)
+    if (s_bytesWritten >= (USI_BUF_SIZE -2))
+#else
+    if ( s_i2c->write(data) != 0 )
+    {
+        s_bytesWritten++;
+        return;
+    }
+#endif
+    {
+        ssd1306_i2cStop_Wire();
+        ssd1306_i2cStart_Wire();
+        ssd1306_i2cSendByte_Wire(0x40);
+        /* Commands never require many bytes. Thus assume that user tries to send data */
+    }
+    s_i2c->write(data);
+    s_bytesWritten++;
+}
+
+static void ssd1306_i2cSendBytes_Wire(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        ssd1306_i2cSendByte_Wire(*buffer);
+        buffer++;
+    }
+}
+
+static void ssd1306_i2cClose_Wire()
+{
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg)
+{
+#if defined(ESP8266) || defined(ESP32) || defined(ESP31B)
+    if ((cfg->scl >= 0) && (cfg->sda >=0))
+    {
+        s_i2c = &Wire;
+        s_i2c->begin(cfg->sda, cfg->scl);
+    }
+    else
+#endif
+    {
+#if !defined( WIRE_INTERFACES_COUNT )
+        s_i2c = &Wire;
+#elif WIRE_INTERFACES_COUNT < 2
+        s_i2c = &Wire;
+#elif WIRE_INTERFACES_COUNT < 3
+        if ( busId == 0 )
+        {
+            s_i2c = &Wire;
+        }
+        else
+        {
+            s_i2c = &Wire1;
+        }
+#endif
+        s_i2c->begin();
+    }
+    #ifdef SSD1306_WIRE_CLOCK_CONFIGURABLE
+        s_i2c->setClock(400000);
+    #endif
+
+    if (addr) s_sa = addr;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = ssd1306_i2cStart_Wire;
+    ssd1306_intf.stop = ssd1306_i2cStop_Wire;
+    ssd1306_intf.send = ssd1306_i2cSendByte_Wire;
+    ssd1306_intf.send_buffer = ssd1306_i2cSendBytes_Wire;
+    ssd1306_intf.close = ssd1306_i2cClose_Wire;
+}
+
+#endif // CONFIG_PLATFORM_I2C_AVAILABLE
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        ARDUINO SPI IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+/* STANDARD branch */
+#include <SPI.h>
+
+static void ssd1306_spiClose_hw()
+{
+}
+
+static void ssd1306_spiStart_hw()
+{
+    /* anyway, oled ssd1331 cannot work faster, clock cycle should be > 150ns: *
+     * 1s / 150ns ~ 6.7MHz                                                     */
+    SPI.beginTransaction(SPISettings(s_ssd1306_spi_clock, MSBFIRST, SPI_MODE0));
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs,LOW);
+    }
+}
+
+static void ssd1306_spiStop_hw()
+{
+    if (ssd1306_lcd.type == LCD_TYPE_PCD8544)
+    {
+        digitalWrite(s_ssd1306_dc, LOW);
+        SPI.transfer( 0x00 ); // Send NOP command to allow last data byte to pass (bug in PCD8544?)
+                              // ssd1306 E3h is NOP command
+    }
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs, HIGH);
+    }
+    SPI.endTransaction();
+}
+
+static void ssd1306_spiSendByte_hw(uint8_t data)
+{
+    SPI.transfer(data);
+}
+
+static void ssd1306_spiSendBytes_hw(const uint8_t *buffer, uint16_t size)
+{
+    /* Do not use SPI.transfer(buffer, size)! this method corrupts buffer content */
+    while (size--)
+    {
+        SPI.transfer(*buffer);
+        buffer++;
+    };
+}
+
+void ssd1306_platform_spiInit(int8_t busId, int8_t cesPin, int8_t dcPin)
+{
+    if (cesPin >=0) pinMode(cesPin, OUTPUT);
+    if (dcPin >= 0) pinMode(dcPin, OUTPUT);
+    if (cesPin) s_ssd1306_cs = cesPin;
+    if (dcPin) s_ssd1306_dc = dcPin;
+    SPI.begin();
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = ssd1306_spiStart_hw;
+    ssd1306_intf.stop = ssd1306_spiStop_hw;
+    ssd1306_intf.send = ssd1306_spiSendByte_hw;
+    ssd1306_intf.send_buffer = ssd1306_spiSendBytes_hw;
+    ssd1306_intf.close = ssd1306_spiClose_hw;
+}
+
+#endif // CONFIG_PLATFORM_SPI_AVAILABLE
+
+#endif // ARDUINO
diff --git a/lib/libssd1306/src/ssd1306_hal/avr/arduino/Arduino.h b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Arduino.h
new file mode 100644
index 0000000..b67e842
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Arduino.h
@@ -0,0 +1,13 @@
+#ifndef _ARDUINO_H_
+#define _ARDUINO_H_
+
+#define ARDUINO_FAKE
+#include "ssd1306_hal/avr/io.h"
+#include "ssd1306_hal/Print_internal.h"
+
+#ifndef boolean
+    typedef uint8_t boolean;
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/avr/arduino/Print.h b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Print.h
new file mode 100644
index 0000000..11f052f
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Print.h
@@ -0,0 +1,10 @@
+#ifndef _PRINT_H_
+#define _PRINT_H_
+
+#include "ssd1306_hal/io.h"
+#include "ssd1306_hal/Print_internal.h"
+
+#define __FlashStringHelper char
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/avr/arduino/Wire.h b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Wire.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/avr/arduino/Wire.h
@@ -0,0 +1 @@
+
diff --git a/lib/libssd1306/src/ssd1306_hal/avr/io.h b/lib/libssd1306/src/ssd1306_hal/avr/io.h
new file mode 100644
index 0000000..c84b1af
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/avr/io.h
@@ -0,0 +1,117 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/avr/io.h SSD1306 AVR IO communication functions
+ */
+
+#ifndef _SSD1306_AVR_IO_H_
+#define _SSD1306_AVR_IO_H_
+
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <avr/pgmspace.h>
+#include <avr/sleep.h>
+#include <avr/eeprom.h>
+#include <util/delay.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define LOW  0
+#define HIGH 1
+#define INPUT 0
+#define OUTPUT 1
+
+#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) || \
+    defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
+    /** The macro is defined when software i2c implementation is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when USI module is available for use */
+    #define CONFIG_USI_SPI_AVAILABLE
+    /* Define lcdint as smallest types to reduce memo usage on tiny controllers. *
+     * Remember, that this can cause issues with large lcd displays, i.e. 320x240*/
+    #define LCDINT_TYPES_DEFINED
+    typedef int8_t lcdint_t;
+    typedef uint8_t lcduint_t;
+    /** The macro is defined when micro controller doesn't support multiplication operation */
+    #define CONFIG_MULTIPLICATION_NOT_SUPPORTED
+#elif defined(__AVR_ATmega328P__)
+    /** The macro is defined when software i2c implementation is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when TWI module is available */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI module is available */
+    #define CONFIG_AVR_SPI_AVAILABLE
+    /** The macro is defined when UART module is available */
+    #define CONFIG_AVR_UART_AVAILABLE
+    /** The macro is defined when VGA monitor control is available directly from controller */
+    #define CONFIG_VGA_AVAILABLE
+
+#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
+    /** The macro is defined when i2c Wire library is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when TWI module is available (ATTINY) */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI module is available */
+    #define CONFIG_AVR_SPI_AVAILABLE
+
+#else
+    /** The macro is defined when software i2c implementation is available */
+    #define CONFIG_SOFTWARE_I2C_AVAILABLE
+    /** The macro is defined when TWI module is available */
+    #define CONFIG_TWI_I2C_AVAILABLE
+    /** The macro is defined when SPI module is available */
+    #define CONFIG_AVR_SPI_AVAILABLE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// not implemented functions for plain AVR
+static inline int  digitalRead(int pin) { return LOW; };
+static inline int  analogRead(int pin) { return 0; };
+static inline uint32_t millis() { return 0; };
+static inline void randomSeed(int seed) { };
+static inline void attachInterrupt(int pin, void (*interrupt)(), int level) { };
+
+// implemented functions for plain AVR
+void delay(unsigned long ms);
+#define delayMicroseconds(us)  _delay_us(us)
+
+void digitalWrite(int pin, int level);
+void pinMode(int pin, int mode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+static inline int random(int max) { return 0; };
+static inline int random(int min, int max) { return 0; };
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/avr/platform.c b/lib/libssd1306/src/ssd1306_hal/avr/platform.c
new file mode 100644
index 0000000..fe5f0a9
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/avr/platform.c
@@ -0,0 +1,96 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+#if defined(__AVR__) && !defined(ARDUINO)
+
+void delay(unsigned long ms)
+{
+    while (ms--)
+    {
+        _delay_ms(1);
+    }
+}
+
+#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
+    #define G0_DIR  DDRB
+    #define G0_PORT PORTB
+    #define G1_DIR  DDRB
+    #define G1_PORT PORTB
+    #define G2_DIR  DDRB
+    #define G2_PORT PORTB
+#elif defined(__AVR_ATmega328P__)
+    #define G0_DIR  DDRD
+    #define G0_PORT PORTD
+    #define G1_DIR  DDRB
+    #define G1_PORT PORTB
+    #define G2_DIR  DDRC
+    #define G2_PORT PORTC
+#else
+    static uint8_t s_stub;
+    #define G0_DIR  s_stub
+    #define G0_PORT s_stub
+    #define G1_DIR  s_stub
+    #define G1_PORT s_stub
+    #define G2_DIR  s_stub
+    #define G2_PORT s_stub
+#endif
+
+void digitalWrite(int pin, int level)
+{
+    uint8_t mask = (1<<(pin & 0x7));
+    if (pin<8)
+    {
+        if (level == HIGH) G0_PORT |= mask; else G0_PORT &= ~mask;
+    }
+    else if (pin<16)
+    {
+        if (level == HIGH) G1_PORT |= mask; else G1_PORT &= ~mask;
+    }
+    else
+    {
+        if (level == HIGH) G2_PORT |= mask; else G2_PORT &= ~mask;
+    }
+}
+
+void pinMode(int pin, int mode)
+{
+    uint8_t mask = (1<<(pin & 0x7));
+    if (pin<8)
+    {
+        if (mode == OUTPUT) G0_DIR |= mask; else G0_DIR &= ~mask;
+    }
+    else if (pin<16)
+    {
+        if (mode == OUTPUT) G1_DIR |= mask; else G1_DIR &= ~mask;
+    }
+    else
+    {
+        if (mode == OUTPUT) G2_DIR |= mask; else G2_DIR &= ~mask;
+    }
+};
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/energia/io.h b/lib/libssd1306/src/ssd1306_hal/energia/io.h
new file mode 100644
index 0000000..897f3c4
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/energia/io.h
@@ -0,0 +1,176 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/energia/io.h Energia IO functions abstraction
+ */
+
+#ifndef _SSD1306_ENERGIA_IO_H_
+#define _SSD1306_ENERGIA_IO_H_
+
+//========================== I. Create directory for your platform ========
+/* 1. Copy content of this folder to src/ssd1306_hal/<your_platform>/ folder   */
+/* 2. Replace YOUR_PLATFORM in these files with the one, you would like to use */
+/* 3. Add #include "<your_platform>/io.h" to src/ssd1306_hal/io.h file         */
+/*    (remember to add required #elif defined(X) lines)                        */
+/* 4. Add platform.c file to SOURCES list in src/Makefile.src                  */
+/* 5. Implement functions below and functions in platform.c file               */
+
+#define SSD1306_ENERGIA_PLATFORM
+//========================== I. Include libraries =========================
+/* 1. Include all required headers, specific for your platform here */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include "Energia.h"
+#include <avr/pgmspace.h>
+#include <avr/interrupt.h>
+/* If your platform already has these definitions, comment out lines below */
+// #define LOW  0
+// #define HIGH 1
+// #define INPUT 0
+// #define OUTPUT 1
+
+/* Progmem attribute for data, located in Flash */
+#define PROGMEM
+
+//========================== II. Define options ===========================
+/* 2. Uncomment all options, you have support for on your platform   *
+ *    Remember that you will need to implement low level intf/i2c or *
+ *    intf/spi layers for your platform                              */
+
+//#define CONFIG_SOFTWARE_I2C_AVAILABLE
+//#define CONFIG_TWI_I2C_AVAILABLE
+//#define CONFIG_AVR_SPI_AVAILABLE
+//#define CONFIG_AVR_UART_AVAILABLE
+//#define CONFIG_VGA_AVAILABLE
+#define CONFIG_PLATFORM_I2C_AVAILABLE
+#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//========================== III. Implement functions =====================
+/* Implement functions below the way you like. You can make them non-static
+ * and implement the functions in platform.c file
+ */
+// !!! MANDATORY. The library will not work without these functions !!!
+// static inline int  digitalRead(int pin)   // digitalRead()
+// {
+//     return LOW;
+// }
+
+// static inline void digitalWrite(int pin, int level)  // digitalWrite()
+// {
+// }
+
+// static inline void pinMode(int pin, int mode) // pinMode()
+// {
+// }
+
+// static inline int  analogRead(int pin)    // analogRead()
+// {
+//     return 0;
+// }
+
+// static inline uint32_t millis(void)       // millis()
+// {
+//     return 0;
+// }
+
+// static inline uint32_t micros(void)       // micros()
+// {
+//     return 0;
+// };
+
+// static inline void delay(uint32_t ms)     // delay()
+// {
+// }
+
+// static inline void delayMicroseconds(uint32_t us)  // delayMicroseconds()
+// {
+// }
+
+// !!!  OPTIONAL !!!
+//static inline void randomSeed(int seed)   // randomSeed() -  can be skipped
+//{
+//}
+//
+//static inline void attachInterrupt(int pin, void (*interrupt)(), int level)  // attachInterrupt() - can be skipped
+//{
+//}
+//
+//static inline uint8_t pgm_read_byte(const void *ptr)  // pgm_read_byte() - can be left as is
+//{
+//    return *((const uint8_t *)ptr);
+//}
+//
+//static inline uint16_t eeprom_read_word(const void *ptr)  // eeprom_read_word() - can be skipped
+//{
+//    return 0;
+//}
+//
+//static inline void eeprom_write_word(const void *ptr, uint16_t val) // eeprom_write_word() - can be skipped
+//{
+//}
+
+// static inline char *utoa(unsigned int num, char *str, int radix)    // util utoa() - can be skipped
+// {
+//    *str = '\0';
+//    return str;
+//}
+
+
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+// #if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+// void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg);
+// #endif
+
+
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+//#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+//void ssd1306_platform_spiInit(uint8_t busId,
+//                              uint8_t cesPin,
+//                              uint8_t dcPin);
+//#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+static inline int random(int max)   // random(n) - can be skipped if you don't use it
+{
+    return 0;
+}
+
+static inline int random(int min, int max)  // random(a,b) - can be skipped if you don't use it
+{
+    return 0;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/energia/platform.cpp b/lib/libssd1306/src/ssd1306_hal/energia/platform.cpp
new file mode 100644
index 0000000..39d4b9d
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/energia/platform.cpp
@@ -0,0 +1,158 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+#if defined(SSD1306_ENERGIA_PLATFORM)
+
+#include "intf/ssd1306_interface.h"
+#include <Wire.h> // Energia I2C implementation (Arduino-like)
+
+////////////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+static uint8_t s_bytesWritten = 0;
+static uint8_t s_i2c_addr = 0x3C;
+static TwoWire *s_i2c = nullptr;
+
+static void platform_i2c_start(void)
+{
+    s_i2c->beginTransmission(s_i2c_addr);
+    s_bytesWritten = 0;
+}
+
+static void platform_i2c_stop(void)
+{
+    s_i2c->endTransmission();
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    // Do not write too many bytes for standard Wire.h. It may become broken (Arduino)
+    if (s_bytesWritten >= (BUFFER_LENGTH - 2))
+    {
+        platform_i2c_stop();
+        platform_i2c_start();
+        platform_i2c_send(0x40);
+        /* Commands never require many bytes. Thus assume that user tries to send data (Arduino) */
+    }
+    s_i2c->write(data);
+    s_bytesWritten++;
+}
+
+static void platform_i2c_close(void)
+{
+    // ... free all i2c resources here
+}
+
+static void platform_i2c_send_buffer(const uint8_t *data, uint16_t len)
+{
+    while (len--)
+    {
+        platform_i2c_send(*data);
+        data++;
+    }
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg)
+{
+    s_i2c = &Wire;
+    s_i2c->begin();
+
+    if (addr) s_i2c_addr = addr;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = &platform_i2c_start;
+    ssd1306_intf.stop  = &platform_i2c_stop;
+    ssd1306_intf.send  = &platform_i2c_send;
+    ssd1306_intf.close = &platform_i2c_close;
+    ssd1306_intf.send_buffer = &platform_i2c_send_buffer;
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#include "intf/spi/ssd1306_spi.h"
+#include "lcd/lcd_common.h"
+#include <SPI.h>
+
+static void platform_spi_start(void)
+{
+    digitalWrite(s_ssd1306_cs, LOW);
+}
+
+static void platform_spi_stop(void)
+{
+    if (ssd1306_lcd.type == LCD_TYPE_PCD8544)
+    {
+        digitalWrite(s_ssd1306_dc, LOW);
+        SPI.transfer(0x00); // Send NOP command to allow last data byte to pass (bug in PCD8544?)
+                            // ssd1306 E3h is NOP command
+    }
+    if (s_ssd1306_cs >= 0)
+    {
+        digitalWrite(s_ssd1306_cs, HIGH);
+    }
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    SPI.transfer(data);
+}
+
+static void platform_spi_close(void)
+{
+    // ... free all spi resources here
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    while (len--)
+    {
+        SPI.transfer(*data);
+        data++;
+    };
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t cesPin,
+                              int8_t dcPin)
+{
+    if (cesPin >=0) pinMode(cesPin, OUTPUT);
+    if (dcPin >= 0) pinMode(dcPin, OUTPUT);
+    if (cesPin>=0) s_ssd1306_cs = cesPin;
+    if (dcPin>=0) s_ssd1306_dc = dcPin;
+    SPI.begin();
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = &platform_spi_start;
+    ssd1306_intf.stop  = &platform_spi_stop;
+    ssd1306_intf.send  = &platform_spi_send;
+    ssd1306_intf.close = &platform_spi_close;
+    ssd1306_intf.send_buffer = &platform_spi_send_buffer;
+    // init your interface here
+    //...
+}
+#endif
+
+#endif // SSD1306_ENERGIA_PLATFORM
diff --git a/lib/libssd1306/src/ssd1306_hal/esp/io.h b/lib/libssd1306/src/ssd1306_hal/esp/io.h
new file mode 100644
index 0000000..bf13c1f
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/esp/io.h
@@ -0,0 +1,135 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/esp/io.h This is stm32 platform file
+ */
+
+#ifndef _SSD1306_ESP_IO_H_
+#define _SSD1306_ESP_IO_H_
+
+// TODO: To complete support. Any help is welcome
+
+#define SSD1306_ESP_PLATFORM
+//========================== I. Include libraries =========================
+/* 1. Include all required headers, specific for your platform here */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define LOW  0
+#define HIGH 1
+#define INPUT 0
+#define OUTPUT 1
+/* Progmem attribute for data, located in Flash */
+#define PROGMEM
+
+//========================== II. Define options ===========================
+/* 2. Uncomment all options, you have support for on your platform   *
+ *    Remember that you will need to implement low level intf/i2c or *
+ *    intf/spi layers for your platform                              */
+
+/** The macro is defined when STM32 i2c implementation is available */
+#define CONFIG_PLATFORM_I2C_AVAILABLE
+#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//========================== III. Implement functions =====================
+/* Implement functions below the way you like. You can make them non-static */
+// !!!  MANDATORY !!!
+int  digitalRead(int pin);
+
+void digitalWrite(int pin, int level);
+
+void pinMode(int pin, int mode);
+
+static inline int  analogRead(int pin)    // analogRead()
+{
+    return 0;
+}
+
+uint32_t millis(void);
+
+static inline uint32_t micros(void)       // micros()
+{
+    return 0;
+};
+
+void delay(uint32_t ms);
+
+static inline void delayMicroseconds(uint32_t us)  // delayMicroseconds()
+{
+}
+
+// !!!  OPTIONAL !!!
+static inline void randomSeed(int seed)   // randomSeed() -  can be skipped
+{
+}
+
+static inline void attachInterrupt(int pin, void (*interrupt)(), int level)  // attachInterrupt() - can be skipped
+{
+}
+
+static inline uint8_t pgm_read_byte(const void *ptr)  // pgm_read_byte() - can be skipped
+{
+    return *((const uint8_t *)ptr);
+}
+
+static inline uint16_t eeprom_read_word(const void *ptr)  // eeprom_read_word() - can be skipped
+{
+    return 0;
+}
+
+static inline void eeprom_write_word(const void *ptr, uint16_t val) // eeprom_write_word() - can be skipped
+{
+}
+
+// utoa is already defined in stdlib c
+//static inline char *utoa(unsigned int num, char *str, int radix)    // util utoa() - can be skipped
+//{
+//    *str = '\0';
+//    return str;
+//}
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+static inline int random(int max)   // random(n) - can be skipped if you don't use it
+{
+    return 0;
+}
+
+static inline int random(int min, int max)  // random(a,b) - can be skipped if you don't use it
+{
+    return 0;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/esp/platform.c b/lib/libssd1306/src/ssd1306_hal/esp/platform.c
new file mode 100644
index 0000000..e954eab
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/esp/platform.c
@@ -0,0 +1,292 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+#if defined(SSD1306_ESP_PLATFORM)
+
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi.h"
+#include "freertos/FreeRTOS.h"
+#include "freertos/task.h"
+#include "driver/gpio.h"
+
+#if 1
+
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+static void platform_spi_send_cache();
+#endif
+
+// TODO: To complete support. Any help is welcome
+int  digitalRead(int pin)   // digitalRead()
+{
+    return gpio_get_level(pin);
+}
+
+void digitalWrite(int pin, int level)  // digitalWrite()
+{
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+    if (s_ssd1306_dc == pin)
+    {
+        platform_spi_send_cache();
+    }
+#endif
+    gpio_set_level(pin, level);
+}
+
+void pinMode(int pin, int mode)
+{
+    if (mode == INPUT)
+        gpio_set_direction(pin, GPIO_MODE_INPUT);
+    else if (mode == OUTPUT)
+        gpio_set_direction(pin, GPIO_MODE_OUTPUT);
+}
+
+uint32_t millis(void)
+{
+    return xTaskGetTickCount() * portTICK_PERIOD_MS;
+}
+
+void delay(uint32_t ms)     // delay()
+{
+    vTaskDelay(ms / portTICK_PERIOD_MS);
+}
+
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+
+#include <stdio.h>
+#include "driver/i2c.h"
+
+static uint8_t s_i2c_addr = 0x3C;
+static int8_t s_bus_id;
+
+static i2c_cmd_handle_t s_cmd_handle = NULL;
+
+static void platform_i2c_start(void)
+{
+    // ... Open i2c channel for your device with specific s_i2c_addr
+    if (s_cmd_handle == NULL)
+        s_cmd_handle = i2c_cmd_link_create();
+    i2c_master_start(s_cmd_handle);
+    i2c_master_write_byte(s_cmd_handle, ( s_i2c_addr << 1 ) | I2C_MASTER_WRITE, 0x1);
+}
+
+static void platform_i2c_stop(void)
+{
+    // ... Complete i2c communication
+    i2c_master_stop(s_cmd_handle);
+    /*esp_err_t ret =*/ i2c_master_cmd_begin(s_bus_id, s_cmd_handle, 1000 / portTICK_RATE_MS);
+    i2c_cmd_link_delete(s_cmd_handle);
+    s_cmd_handle = NULL;
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    // ... Send byte to i2c communication channel
+    i2c_master_write_byte(s_cmd_handle, data, 0x1);
+}
+
+static void platform_i2c_close(void)
+{
+    // ... free all i2c resources here
+    i2c_driver_delete(s_bus_id);
+}
+
+static void platform_i2c_send_buffer(const uint8_t *data, uint16_t len)
+{
+    // ... Send len bytes to i2c communication channel here
+    while (len--)
+    {
+        platform_i2c_send(*data);
+        data++;
+    }
+//    i2c_master_write(cmd, data_wr, size, ACK_CHECK_EN);
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg)
+{
+    if (addr) s_i2c_addr = addr;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = &platform_i2c_start;
+    ssd1306_intf.stop  = &platform_i2c_stop;
+    ssd1306_intf.send  = &platform_i2c_send;
+    ssd1306_intf.close = &platform_i2c_close;
+    ssd1306_intf.send_buffer = &platform_i2c_send_buffer;
+    // init your interface here
+    if ( busId < 0) busId = I2C_NUM_1;
+    s_bus_id = busId;
+    i2c_config_t conf = { 0 };
+    conf.mode = I2C_MODE_MASTER;
+    conf.sda_io_num = cfg->sda >= 0 ? cfg->sda : 21;
+    conf.sda_pullup_en = GPIO_PULLUP_ENABLE;
+    conf.scl_io_num = cfg->scl >= 0 ? cfg->scl : 22;
+    conf.scl_pullup_en = GPIO_PULLUP_ENABLE;
+    conf.master.clk_speed = 400000; //I2C_EXAMPLE_MASTER_FREQ_HZ;
+    i2c_param_config(s_bus_id, &conf);
+    i2c_driver_install(s_bus_id, conf.mode, 0, 0, 0);
+//                       I2C_EXAMPLE_MASTER_RX_BUF_DISABLE,
+//                       I2C_EXAMPLE_MASTER_TX_BUF_DISABLE, 0);
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#include "intf/spi/ssd1306_spi.h"
+#include "driver/spi_master.h"
+
+// Store spi handle globally for all spi callbacks
+static spi_device_handle_t s_spi;
+static int8_t s_spi_bus_id;
+// s_first_spi_session is used for delayed spi initialization.
+// Some oled displays have slow max SPI speed, so display init function can change
+// spi frequency s_ssd1306_spi_clock. Register device, only when frequency is known.
+static uint8_t s_first_spi_session = 0;
+static uint8_t s_spi_cache[1024];
+static int s_spi_cached_count = 0;
+
+static void platform_spi_send_cache()
+{
+    /* TODO: Yeah, sending single bytes is too slow, but *
+     * need to figure out how to detect data/command bytes *
+     * to send bytes as one block */
+    uint8_t *data = s_spi_cache;
+    while (s_spi_cached_count)
+    {
+        size_t sz = s_spi_cached_count > 32 ? 32: s_spi_cached_count;
+        spi_transaction_t t;
+        memset(&t, 0, sizeof(t));
+        t.length=8*sz;          // 8 bits
+        t.tx_buffer=data;
+        // ... Send byte to spi communication channel
+        // We do not care here about DC line state, because
+        // ssd1306 library already set DC pin via ssd1306_spiDataMode() before call to send().
+        spi_device_transmit(s_spi, &t);
+        data+=sz;
+        s_spi_cached_count-=sz;
+    }
+    s_spi_cached_count = 0;
+}
+
+static void platform_spi_start(void)
+{
+    // ... Open spi channel for your device with specific s_ssd1306_cs, s_ssd1306_dc
+    if (s_first_spi_session)
+    {
+        spi_device_interface_config_t devcfg=
+        {
+            .clock_speed_hz = s_ssd1306_spi_clock,
+            .mode=0,
+            .spics_io_num=s_ssd1306_cs,
+            .queue_size=7,       // max 7 transactions at a time
+        };
+        spi_bus_add_device(s_spi_bus_id ? VSPI_HOST : HSPI_HOST, &devcfg, &s_spi);
+        s_first_spi_session = 0;
+    }
+    s_spi_cached_count = 0;
+}
+
+static void platform_spi_stop(void)
+{
+    // ... Complete spi communication
+    // no complete actions required for this implementation
+    platform_spi_send_cache();
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    s_spi_cache[s_spi_cached_count] = data;
+    s_spi_cached_count++;
+    if ( s_spi_cached_count >= sizeof( s_spi_cache ) )
+    {
+        platform_spi_send_cache();
+    }
+}
+
+static void platform_spi_close(void)
+{
+    // ... free all spi resources here
+    if (!s_first_spi_session)
+    {
+        spi_bus_remove_device( s_spi );
+    }
+    spi_bus_free( s_spi_bus_id ? VSPI_HOST : HSPI_HOST );
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    while (len--)
+    {
+        platform_spi_send(*data);
+        data++;
+    }
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t cesPin,
+                              int8_t dcPin)
+{
+    // Use VSPI by default
+    if (busId < 0) busId = 1;
+    s_spi_bus_id = busId;
+
+    // If cesPin is not provided, select by default
+    if (cesPin < 0)
+    {
+        cesPin = s_spi_bus_id ? 5 : 15;
+    }
+    s_ssd1306_cs = cesPin;
+    if (dcPin>=0) s_ssd1306_dc = dcPin;
+
+    if (cesPin >=0) pinMode(cesPin, OUTPUT);
+    if (dcPin >= 0) pinMode(dcPin, OUTPUT);
+
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = &platform_spi_start;
+    ssd1306_intf.stop  = &platform_spi_stop;
+    ssd1306_intf.send  = &platform_spi_send;
+    ssd1306_intf.close = &platform_spi_close;
+    ssd1306_intf.send_buffer = &platform_spi_send_buffer;
+
+    // init your interface here
+    spi_bus_config_t buscfg=
+    {
+        .miso_io_num= s_spi_bus_id ? 19 : 12,
+        .mosi_io_num= s_spi_bus_id ? 23 : 13,
+        .sclk_io_num= s_spi_bus_id ? 18 : 14,
+        .quadwp_io_num=-1,
+        .quadhd_io_num=-1,
+        .max_transfer_sz=32
+    };
+    spi_bus_initialize(s_spi_bus_id ? VSPI_HOST : HSPI_HOST, &buscfg, 0); // 0 -no dma
+    s_first_spi_session = 1;
+}
+#endif
+
+#endif // SSD1306_ESP_PLATFORM
diff --git a/lib/libssd1306/src/ssd1306_hal/io.h b/lib/libssd1306/src/ssd1306_hal/io.h
new file mode 100644
index 0000000..4a82ac7
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/io.h
@@ -0,0 +1,136 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/**
+ * @file ssd1306_hal/io.h SSD1306 HAL IO communication functions
+ */
+
+#ifndef _SSD1306_HAL_IO_H_
+#define _SSD1306_HAL_IO_H_
+
+/**
+ * @defgroup SSD1306_HAL_API HAL: ssd1306 library hardware abstraction layer
+ * @{
+ *
+ * @brief i2c/spi ssd1306 library hardware abstraction layer
+ *
+ * @details ssd1306 library hardware abstraction layer
+ */
+
+#include "UserSettings.h"
+#if defined(ARDUINO) && !defined(ENERGIA)
+#include "arduino/io.h"
+#elif defined(__AVR__) && !defined(ARDUINO)
+#include "avr/io.h"
+#elif defined(__XTENSA__) && !defined(ARDUINO)
+#include "esp/io.h"
+#elif defined(STM32F1) || defined(STM32F2) || defined(STM32F4)
+#include "stm32/io.h"
+#elif defined(__linux__)
+#include "linux/io.h"
+#elif defined(__MINGW32__)
+#include "mingw/io.h"
+#elif defined(ENERGIA)
+#include "energia/io.h"
+#else
+#warning "Platform is not supported. Use template to add support"
+#include "template/io.h"
+#endif
+
+#ifndef LCDINT_TYPES_DEFINED
+/** Macro informs if lcdint_t type is defined */
+#define LCDINT_TYPES_DEFINED
+/** internal int type, used by ssd1306 library. Important for uC with low SRAM */
+typedef int lcdint_t;
+/** internal int type, used by ssd1306 library. Important for uC with low SRAM */
+typedef unsigned int lcduint_t;
+#endif
+
+/** swaps content of a and b variables of type type */
+#define ssd1306_swap_data(a, b, type)  { type t = a; a = b; b = t; }
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+/**
+ * Structure describes i2c pins used by platform
+ */
+typedef struct {
+    int8_t sda; ///< data pin number
+    int8_t scl; ///< clock pin number
+} ssd1306_platform_i2cConfig_t;
+
+/**
+ * @brief Initializes i2c interface for platform being used.
+ *
+ * Initializes i2c interface for platform being used. i2c implementation
+ * depends on platform.
+ *
+ * @param busId i2c bus number. Some platforms have several i2c buses. so, this
+ *        argument identifies bus to use. For several platforms busId is not used.
+ *        If you want to use default i2c bus for specific platform, please pass -1.
+ * @param addr i2c address of oled driver, connected to i2c bus. If you want to use default
+ *        i2c display address, please, pass 0.
+ * @param cfg Specify scl and sda for the platform. If you want to use default pin numbers,
+ *        please pass -1 for both members.
+ */
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg);
+#endif
+
+
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+/**
+ * @brief Initializes spi interface for platform being used.
+ *
+ * Initializes spi interface for platform being used. spi implementation
+ * depends on platform.
+ *
+ * @param busId spi bus number if device has several spi buses. For most AVR platforms
+ *        busId is not used. If you want to use default spi bus for specific platform, please
+ *        pass -1.
+ * @param cesPin chip select (chip enable) pin number. If you want to use default pin,
+ *        hard coded by ssd1306 library, please, pass -1. For Linux platform cesPin means
+ *        second number in spidev device.
+ * @param dcPin data/command pin number. For most oled displays this pin number is used to
+ *        select data or command mode for the bus. If you want to use default pin number, please
+ *        pass -1.
+ */
+void ssd1306_platform_spiInit(int8_t busId, int8_t cesPin, int8_t dcPin);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/**
+ * @}
+ */
+
+#endif
+
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/Arduino.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Arduino.h
new file mode 100644
index 0000000..69c3622
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Arduino.h
@@ -0,0 +1,18 @@
+#ifndef _ARDUINO_H_
+#define _ARDUINO_H_
+
+#define ARDUINO_FAKE
+#if defined(__MINGW32__)
+#include "ssd1306_hal/mingw/io.h"
+#include "ssd1306_hal/Print_internal.h"
+#else
+#include "ssd1306_hal/linux/io.h"
+#include "ssd1306_hal/Print_internal.h"
+#endif
+
+#ifndef boolean
+    typedef uint8_t boolean;
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/Print.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Print.h
new file mode 100644
index 0000000..11f052f
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Print.h
@@ -0,0 +1,10 @@
+#ifndef _PRINT_H_
+#define _PRINT_H_
+
+#include "ssd1306_hal/io.h"
+#include "ssd1306_hal/Print_internal.h"
+
+#define __FlashStringHelper char
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/Wire.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Wire.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/Wire.h
@@ -0,0 +1 @@
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/interrupt.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/interrupt.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/interrupt.h
@@ -0,0 +1 @@
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/pgmspace.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/pgmspace.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/pgmspace.h
@@ -0,0 +1 @@
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/sleep.h b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/sleep.h
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/arduino/avr/sleep.h
@@ -0,0 +1 @@
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/io.h b/lib/libssd1306/src/ssd1306_hal/linux/io.h
new file mode 100644
index 0000000..e3a0f69
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/io.h
@@ -0,0 +1,168 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/linux/io.h SSD1306 LINUX IO communication functions
+ */
+
+#ifndef _SSD1306_LINUX_IO_H_
+#define _SSD1306_LINUX_IO_H_
+
+#define CONFIG_PLATFORM_I2C_AVAILABLE
+#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+
+#if defined(SDL_EMULATION)  // SDL Emulation mode includes
+#include "sdl_core.h"
+#endif
+
+#if defined(__KERNEL__)     // KERNEL includes
+#include <linux/types.h>
+
+#else                       // LINUX includes
+
+#include <stdio.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <time.h>
+#include <string.h>
+#endif
+
+/** Standard defines */
+#define LOW  0
+#define HIGH 1
+#define INPUT 1
+#define OUTPUT 0
+/** Pure linux implementation of the library doesn't support data, located in code area */
+#define PROGMEM
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if defined(__KERNEL__)      // ============== KERNEL
+static inline int  digitalRead(int pin) { return LOW; };
+static inline void delay(unsigned long ms) {  };
+static inline void delayMicroseconds(unsigned long us) {  };
+static inline int  analogRead(int pin) { return 0; };
+static inline void digitalWrite(int pin, int level) { };
+static inline uint32_t millis(void) { return 0; };
+static inline uint32_t micros(void) { return 0; };
+static inline void pinMode(int pin, int mode) {};
+
+#else                         // ============== LINUX
+static inline void delay(unsigned long ms) { usleep(ms*1000);  };
+static inline void delayMicroseconds(unsigned long us) { usleep(us); };
+static inline uint32_t millis(void)
+{
+   struct timespec ts;
+   clock_gettime(CLOCK_MONOTONIC, &ts);
+   return ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
+};
+
+static inline uint32_t micros(void)
+{
+   struct timespec ts;
+   clock_gettime(CLOCK_MONOTONIC, &ts);
+   return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
+};
+
+/* For some reason defines do not work accross the libraries *
+ * Didn't yet figure out, what is the reason fo this issue */
+//define min(a,b) (((a)<(b))?(a):(b))
+//define max(a,b) (((a)>(b))?(a):(b))
+static inline int min(int a, int b) { return a<b?a:b; };
+static inline int max(int a, int b) { return a>b?a:b; };
+#if !defined(SDL_EMULATION)
+void pinMode(int pin, int mode);
+static inline int  digitalRead(int pin) { return LOW; };
+#endif
+
+#endif
+
+#if defined(SDL_EMULATION)
+static inline int  digitalRead(int pin) { return sdl_read_digital(pin); };
+static inline int  analogRead(int pin) { return sdl_read_analog(pin); };
+static inline void digitalWrite(int pin, int level) {  sdl_write_digital(pin, level); };
+static inline void pinMode(int pin, int mode) { };
+#elif !defined(__KERNEL__)
+static inline int  analogRead(int pin) { return 0; };
+void digitalWrite(int pin, int level);
+#endif
+
+static inline void randomSeed(int seed) { };
+static inline void attachInterrupt(int pin, void (*interrupt)(void), int level) { };
+static inline uint8_t pgm_read_byte(const void *ptr) { return *((const uint8_t *)ptr); };
+static inline uint16_t eeprom_read_word(const void *ptr) { return 0; };
+static inline void eeprom_write_word(const void *ptr, uint16_t val) { };
+
+static inline char *utoa(unsigned int num, char *str, int radix)
+{
+    char temp[17];  //an int can only be 16 bits long
+                    //at radix 2 (binary) the string
+                    //is at most 16 + 1 null long.
+    int temp_loc = 0;
+    int str_loc = 0;
+
+    //construct a backward string of the number.
+    do {
+        int digit = (unsigned int)num % radix;
+        if (digit < 10)
+            temp[temp_loc++] = digit + '0';
+        else
+            temp[temp_loc++] = digit - 10 + 'A';
+        num = ((unsigned int)num) / radix;
+    } while ((unsigned int)num > 0);
+
+    temp_loc--;
+
+
+    //now reverse the string.
+    while ( temp_loc >=0 ) {// while there are still chars
+        str[str_loc++] = temp[temp_loc--];
+    }
+    str[str_loc] = 0; // add null termination.
+
+    return str;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+#include <cstdlib>
+static inline long random(long v)
+{
+    return rand() % v;
+}
+
+static inline long random(long min, long max)
+{
+    return rand() % (max - min + 1) + min;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/linux/platform.c b/lib/libssd1306/src/ssd1306_hal/linux/platform.c
new file mode 100644
index 0000000..fc3f76d
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/linux/platform.c
@@ -0,0 +1,583 @@
+/*
+    MIT License
+
+    Copyright (c) 2018-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#if defined(__linux__) && !defined(ARDUINO)
+
+#include "ssd1306_hal/io.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/spi/ssd1306_spi_conf.h"
+#include "intf/spi/ssd1306_spi.h"
+
+#ifndef __KERNEL__
+
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
+#include <linux/i2c-dev.h>
+#include <linux/spi/spidev.h>
+
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE) \
+    && !defined(SDL_EMULATION)
+#define LINUX_SPI_AVAILABLE
+#endif
+
+#define MAX_GPIO_COUNT   256
+
+#ifdef IN
+#undef IN
+#endif
+#define IN  0
+
+#ifdef OUT
+#undef OUT
+#endif
+#define OUT 1
+
+#ifdef LINUX_SPI_AVAILABLE
+static void platform_spi_send_cache();
+#endif
+
+int gpio_export(int pin)
+{
+    char buffer[4];
+    ssize_t bytes_written;
+    int fd;
+    char path[64];
+
+    snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d", pin);
+
+    if (access(path, F_OK) == 0)
+    {
+        return 0;
+    }
+
+    fd = open("/sys/class/gpio/export", O_WRONLY);
+    if (-1 == fd)
+    {
+        fprintf(stderr, "Failed to allocate gpio pin[%d]: %s%s!\n",
+                pin, strerror (errno), getuid() == 0 ? "" : ", need to be root");
+        return(-1);
+    }
+
+    bytes_written = snprintf(buffer, sizeof(buffer), "%d", pin);
+    if (write(fd, buffer, bytes_written) < 0)
+    {
+        fprintf(stderr, "Failed to allocate gpio pin[%d]: %s%s!\n",
+                pin, strerror (errno), getuid() == 0 ? "" : ", need to be root");
+        close(fd);
+        return -1;
+    }
+    close(fd);
+    return(0);
+}
+
+int gpio_unexport(int pin)
+{
+    char buffer[4];
+    ssize_t bytes_written;
+    int fd;
+
+    fd = open("/sys/class/gpio/unexport", O_WRONLY);
+    if (-1 == fd)
+    {
+        fprintf(stderr, "Failed to free gpio pin resources!\n");
+        return(-1);
+    }
+
+    bytes_written = snprintf(buffer, sizeof(buffer), "%d", pin);
+    if (write(fd, buffer, bytes_written) < 0)
+    {
+        fprintf(stderr, "Failed to free gpio pin resources!\n");
+    }
+    close(fd);
+    return(0);
+}
+
+int gpio_direction(int pin, int dir)
+{
+    static const char s_directions_str[]  = "in\0out";
+
+    char path[64];
+    int fd;
+
+    snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/direction", pin);
+    fd = open(path, O_WRONLY);
+    if (-1 == fd)
+    {
+        fprintf(stderr, "Failed to set gpio pin direction1[%d]: %s!\n",
+                pin, strerror(errno));
+        return(-1);
+    }
+
+    if (-1 == write(fd, &s_directions_str[IN == dir ? 0 : 3], IN == dir ? 2 : 3))
+    {
+        fprintf(stderr, "Failed to set gpio pin direction2[%d]: %s!\n",
+                pin, strerror(errno));
+        return(-1);
+    }
+
+    close(fd);
+    return(0);
+}
+
+int gpio_read(int pin)
+{
+    char path[32];
+    char value_str[3];
+    int fd;
+
+    snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/value", pin);
+    fd = open(path, O_RDONLY);
+    if (-1 == fd)
+    {
+        fprintf(stderr, "Failed to read gpio pin value!\n");
+        return(-1);
+    }
+
+    if (-1 == read(fd, value_str, 3))
+    {
+        fprintf(stderr, "Failed to read gpio pin value!\n");
+        return(-1);
+    }
+
+    close(fd);
+
+    return(atoi(value_str));
+}
+
+int gpio_write(int pin, int value)
+{
+    static const char s_values_str[] = "01";
+
+    char path[64];
+    int fd;
+
+    snprintf(path, sizeof(path), "/sys/class/gpio/gpio%d/value", pin);
+    fd = open(path, O_WRONLY);
+    if (-1 == fd)
+    {
+        fprintf(stderr, "Failed to set gpio pin value[%d]: %s%s!\n",
+                pin, strerror (errno), getuid() == 0 ? "" : ", need to be root");
+        return(-1);
+    }
+
+    if (1 != write(fd, &s_values_str[LOW == value ? 0 : 1], 1))
+    {
+        fprintf(stderr, "Failed to set gpio pin value[%d]: %s%s!\n",
+                pin, strerror (errno), getuid() == 0 ? "" : ", need to be root");
+        return(-1);
+    }
+
+    close(fd);
+    return(0);
+}
+
+#if !defined(SDL_EMULATION)
+
+static uint8_t s_exported_pin[MAX_GPIO_COUNT] = {0};
+static uint8_t s_pin_mode[MAX_GPIO_COUNT] = {0};
+
+void pinMode(int pin, int mode)
+{
+    if (!s_exported_pin[pin])
+    {
+        if ( gpio_export(pin)<0 )
+        {
+            return;
+        }
+        s_exported_pin[pin] = 1;
+    }
+    if (mode == OUTPUT)
+    {
+        gpio_direction(pin, OUT);
+        s_pin_mode[pin] = 1;
+    }
+    if (mode == INPUT)
+    {
+        gpio_direction(pin, IN);
+        s_pin_mode[pin] = 0;
+    }
+}
+
+void digitalWrite(int pin, int level)
+{
+#ifdef LINUX_SPI_AVAILABLE
+    if (s_ssd1306_dc == pin)
+    {
+        platform_spi_send_cache();
+    }
+#endif
+
+    if (!s_exported_pin[pin])
+    {
+        if ( gpio_export(pin)<0 )
+        {
+            return;
+        }
+        s_exported_pin[pin] = 1;
+    }
+    if (!s_pin_mode[pin])
+    {
+        pinMode(pin, OUTPUT);
+    }
+    gpio_write( pin, level );
+}
+
+#endif // SDL_EMULATION
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        LINUX I2C IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+
+
+
+#if !defined(SDL_EMULATION)
+
+
+static uint8_t s_sa = SSD1306_SA;
+static int     s_fd = -1;
+static uint8_t s_buffer[128];
+static uint8_t s_dataSize = 0;
+
+static void platform_i2c_start(void)
+{
+    s_dataSize = 0;
+}
+
+static void platform_i2c_stop(void)
+{
+    if (write(s_fd, s_buffer, s_dataSize) != s_dataSize)
+    {
+        fprintf(stderr, "Failed to write to the i2c bus: %s.\n", strerror(errno));
+    }
+    s_dataSize = 0;
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    s_buffer[s_dataSize] = data;
+    s_dataSize++;
+    if (s_dataSize == sizeof(s_buffer))
+    {
+        /* Send function puts all data to internal buffer.  *
+         * Restart transmission if internal buffer is full. */
+        ssd1306_intf.stop();
+        ssd1306_intf.start();
+        ssd1306_intf.send(0x40);
+    }
+}
+
+static void platform_i2c_send_buffer(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        platform_i2c_send(*buffer);
+        buffer++;
+    }
+}
+
+static void platform_i2c_close()
+{
+    if (s_fd >= 0)
+    {
+        close(s_fd);
+        s_fd = -1;
+    }
+}
+
+static void empty_function()
+{
+}
+
+static void empty_function_single_arg(uint8_t arg)
+{
+}
+
+static void empty_function_two_args(const uint8_t *arg1, uint16_t arg2)
+{
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t sa, ssd1306_platform_i2cConfig_t * cfg)
+{
+    char filename[20];
+    if (busId < 0)
+    {
+        busId = 1;
+    }
+    snprintf(filename, 19, "/dev/i2c-%d", busId);
+    ssd1306_intf.start = empty_function;
+    ssd1306_intf.stop = empty_function;
+    ssd1306_intf.close = empty_function;
+    ssd1306_intf.send = empty_function_single_arg;
+    ssd1306_intf.send_buffer = empty_function_two_args;
+    if ((s_fd = open(filename, O_RDWR)) < 0)
+    {
+        fprintf(stderr, "Failed to open the i2c bus %s\n",
+                getuid() == 0 ? "": ": need to be root");
+        return;
+    }
+    if (sa)
+    {
+        s_sa = sa;
+    }
+    if (ioctl(s_fd, I2C_SLAVE, s_sa) < 0)
+    {
+        fprintf(stderr, "Failed to acquire bus access and/or talk to slave.\n");
+        return;
+    }
+    ssd1306_intf.start = platform_i2c_start;
+    ssd1306_intf.stop = platform_i2c_stop;
+    ssd1306_intf.send = platform_i2c_send;
+    ssd1306_intf.send_buffer = platform_i2c_send_buffer;
+    ssd1306_intf.close = platform_i2c_close;
+}
+
+#else /* SDL_EMULATION */
+
+#include "sdl_core.h"
+
+static void platform_i2c_send_buffer(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        sdl_send_byte(*buffer);
+        buffer++;
+    };
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t sa, ssd1306_platform_i2cConfig_t * cfg)
+{
+    sdl_core_init();
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = sdl_send_init;
+    ssd1306_intf.stop = sdl_send_stop;
+    ssd1306_intf.send = sdl_send_byte;
+    ssd1306_intf.send_buffer = platform_i2c_send_buffer;
+    ssd1306_intf.close = sdl_core_close;
+}
+
+#endif /* SDL_EMULATION */
+
+#endif // CONFIG_PLATFORM_I2C_AVAILABLE
+
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        LINUX SPI IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#if !defined(SDL_EMULATION)
+
+static int     s_spi_fd = -1;
+extern uint32_t s_ssd1306_spi_clock;
+static uint8_t s_spi_cache[1024];
+static int s_spi_cached_count = 0;
+
+static void platform_spi_start(void)
+{
+    s_spi_cached_count = 0;
+}
+
+static void platform_spi_stop(void)
+{
+    platform_spi_send_cache();
+}
+
+static void platform_spi_send_cache()
+{
+    /* TODO: Yeah, sending single bytes is too slow, but *
+     * need to figure out how to detect data/command bytes *
+     * to send bytes as one block */
+    if ( s_spi_cached_count == 0 )
+    {
+        return;
+    }
+    struct spi_ioc_transfer mesg;
+    memset(&mesg, 0, sizeof mesg);
+    mesg.tx_buf = (unsigned long)&s_spi_cache[0];
+    mesg.rx_buf = 0;
+    mesg.len = s_spi_cached_count;
+    mesg.delay_usecs = 0;
+    mesg.speed_hz = 0;
+    mesg.bits_per_word = 8;
+    mesg.cs_change = 0;
+    if (ioctl(s_spi_fd, SPI_IOC_MESSAGE(1), &mesg) < 1)
+    {
+        fprintf(stderr, "SPI failed to send SPI message: %s\n", strerror (errno)) ;
+    }
+    s_spi_cached_count = 0;
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    s_spi_cache[s_spi_cached_count] = data;
+    s_spi_cached_count++;
+    if ( s_spi_cached_count >= sizeof( s_spi_cache ) )
+    {
+        platform_spi_send_cache();
+    }
+}
+
+static void platform_spi_close(void)
+{
+    if (s_spi_fd >= 0)
+    {
+        close(s_spi_fd);
+        s_spi_fd = -1;
+    }
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    while (len--)
+    {
+        platform_spi_send(*data);
+        data++;
+    }
+}
+
+static void empty_function_spi(void)
+{
+}
+
+static void empty_function_arg_spi(uint8_t byte)
+{
+}
+
+static void empty_function_args_spi(const uint8_t *buffer, uint16_t bytes)
+{
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t ces,
+                              int8_t dcPin)
+{
+    char filename[20];
+    if (busId < 0)
+    {
+        busId = 0;
+    }
+    if (ces < 0)
+    {
+        ces = 0;
+    }
+    s_ssd1306_cs = -1;    // SPI interface does't need separate ces pin
+    s_ssd1306_dc = dcPin;
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = empty_function_spi;
+    ssd1306_intf.stop = empty_function_spi;
+    ssd1306_intf.send = empty_function_arg_spi;
+    ssd1306_intf.send_buffer = empty_function_args_spi;
+    ssd1306_intf.close = empty_function;
+
+    snprintf(filename, 19, "/dev/spidev%d.%d", busId, ces);
+    if ((s_spi_fd = open(filename, O_RDWR)) < 0)
+    {
+        printf("Failed to initialize SPI: %s%s!\n",
+               strerror(errno), getuid() == 0 ? "": ", need to be root");
+        return;
+    }
+    unsigned int speed = s_ssd1306_spi_clock;
+    if (ioctl(s_spi_fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed) < 0)
+    {
+        printf("Failed to set speed on SPI line: %s!\n", strerror(errno));
+    }
+    uint8_t mode = SPI_MODE_0;
+    if (ioctl (s_spi_fd, SPI_IOC_WR_MODE, &mode) < 0)
+    {
+        printf("Failed to set SPI mode: %s!\n", strerror(errno));
+    }
+    uint8_t spi_bpw = 8;
+    if (ioctl (s_spi_fd, SPI_IOC_WR_BITS_PER_WORD, &spi_bpw) < 0)
+    {
+        printf("Failed to set SPI BPW: %s!\n", strerror(errno));
+    }
+
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = platform_spi_start;
+    ssd1306_intf.stop = platform_spi_stop;
+    ssd1306_intf.send = platform_spi_send;
+    ssd1306_intf.send_buffer = platform_spi_send_buffer;
+    ssd1306_intf.close = platform_spi_close;
+}
+
+#else /* SDL_EMULATION */
+
+#include "sdl_core.h"
+
+static void sdl_send_bytes(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        sdl_send_byte(*buffer);
+        buffer++;
+    };
+}
+
+void ssd1306_platform_spiInit(int8_t busId, int8_t ces, int8_t dcPin)
+{
+    sdl_core_init();
+    if (ces >= 0)
+    {
+        s_ssd1306_cs = ces;
+    }
+    if (dcPin >= 0)
+    {
+        s_ssd1306_dc = dcPin;
+    }
+    sdl_set_dc_pin(dcPin);
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = sdl_send_init;
+    ssd1306_intf.stop = sdl_send_stop;
+    ssd1306_intf.send = sdl_send_byte;
+    ssd1306_intf.send_buffer = sdl_send_bytes;
+    ssd1306_intf.close = sdl_core_close;
+}
+
+#endif /* SDL_EMULATION */
+
+#endif // CONFIG_PLATFORM_SPI_AVAILABLE
+
+#else  // end of !KERNEL, KERNEL is below
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t sa, ssd1306_platform_i2cConfig_t * cfg)
+{
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t ces,
+                              int8_t dcPin)
+{
+}
+
+#endif // KERNEL
+
+#endif // __linux__
diff --git a/lib/libssd1306/src/ssd1306_hal/mingw/io.h b/lib/libssd1306/src/ssd1306_hal/mingw/io.h
new file mode 100644
index 0000000..58a679e
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/mingw/io.h
@@ -0,0 +1,132 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/mingw/io.h SSD1306 MINGW IO communication functions
+ */
+
+#ifndef _SSD1306_MINGW_IO_H_
+#define _SSD1306_MINGW_IO_H_
+
+// Use the same library interface as for Linux
+#define CONFIG_PLATFORM_I2C_AVAILABLE
+#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#if defined(SDL_EMULATION)  // SDL Emulation mode includes
+#include "sdl_core.h"
+#endif
+
+#include <windows.h>
+#include <stdint.h>
+#include <unistd.h>
+#include "sdl_core.h"
+#include <time.h>
+#include <string.h>
+
+/** Standard defines */
+#define LOW  0
+#define HIGH 1
+#define INPUT 1
+#define OUTPUT 0
+/** Pure linux implementation of the library doesn't support data, located in code area */
+#define PROGMEM
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static inline int  digitalRead(int pin) { return sdl_read_digital(pin); };
+static inline void delay(unsigned long ms) { Sleep(ms);  };
+static inline void delayMicroseconds(unsigned long us) { Sleep((us+500)/1000); };
+static inline uint32_t millis(void)
+{
+    return GetTickCount();
+};
+
+static inline uint32_t micros(void)
+{
+    return GetTickCount()*1000;
+};
+
+#if defined(SDL_EMULATION)
+static inline int  analogRead(int pin) { return sdl_read_analog(pin); };
+static inline void digitalWrite(int pin, int level) {  sdl_write_digital(pin, level); };
+static inline void pinMode(int pin, int mode) { };
+#endif
+
+static inline void randomSeed(int seed) { };
+static inline void attachInterrupt(int pin, void (*interrupt)(void), int level) { };
+static inline uint8_t pgm_read_byte(const void *ptr) { return *((const uint8_t *)ptr); };
+static inline uint16_t eeprom_read_word(const void *ptr) { return 0; };
+static inline void eeprom_write_word(const void *ptr, uint16_t val) { };
+
+static inline char *utoa(unsigned int num, char *str, int radix)
+{
+    char temp[17];  //an int can only be 16 bits long
+                    //at radix 2 (binary) the string
+                    //is at most 16 + 1 null long.
+    int temp_loc = 0;
+    int str_loc = 0;
+
+    //construct a backward string of the number.
+    do {
+        int digit = (unsigned int)num % radix;
+        if (digit < 10)
+            temp[temp_loc++] = digit + '0';
+        else
+            temp[temp_loc++] = digit - 10 + 'A';
+        num = ((unsigned int)num) / radix;
+    } while ((unsigned int)num > 0);
+
+    temp_loc--;
+
+
+    //now reverse the string.
+    while ( temp_loc >=0 ) {// while there are still chars
+        str[str_loc++] = temp[temp_loc--];
+    }
+    str[str_loc] = 0; // add null termination.
+
+    return str;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+#include <cstdlib>
+static inline long random(long v)
+{
+    return rand() % v;
+}
+
+static inline long random(long min, long max)
+{
+    return rand() % (max - min + 1) + min;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/mingw/platform.c b/lib/libssd1306/src/ssd1306_hal/mingw/platform.c
new file mode 100644
index 0000000..5aa5e99
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/mingw/platform.c
@@ -0,0 +1,342 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#if defined(__MINGW32__)
+
+#include "ssd1306_hal/io.h"
+
+#include "intf/ssd1306_interface.h"
+#include "intf/i2c/ssd1306_i2c.h"
+#include "intf/ssd1306_interface.h"
+#include "intf/spi/ssd1306_spi_conf.h"
+#include "intf/spi/ssd1306_spi.h"
+
+#include <stdio.h>
+#include <unistd.h>
+
+#if !defined(SDL_EMULATION)
+
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include <linux/i2c-dev.h>
+#include <stdlib.h>
+#include <linux/spi/spidev.h>
+
+#endif
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        MINGW I2C IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+
+#if !defined(SDL_EMULATION)
+
+static uint8_t s_sa = SSD1306_SA;
+static int     s_fd = -1;
+static uint8_t s_buffer[128];
+static uint8_t s_dataSize = 0;
+
+static void platform_i2c_start(void)
+{
+    s_dataSize = 0;
+}
+
+static void platform_i2c_stop(void)
+{
+    if (write(s_fd, s_buffer, s_dataSize) != s_dataSize)
+    {
+        fprintf(stderr, "Failed to write to the i2c bus: %s.\n", strerror(errno));
+    }
+    s_dataSize = 0;
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    s_buffer[s_dataSize] = data;
+    s_dataSize++;
+    if (s_dataSize == sizeof(s_buffer))
+    {
+        /* Send function puts all data to internal buffer.  *
+         * Restart transmission if internal buffer is full. */
+        ssd1306_intf.stop();
+        ssd1306_intf.start();
+        ssd1306_intf.send(0x40);
+    }
+}
+
+static void platform_i2c_send_buffer(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        platform_i2c_send(*buffer);
+        buffer++;
+    }
+}
+
+static void platform_i2c_close()
+{
+    if (s_fd >= 0)
+    {
+        close(s_fd);
+        s_fd = -1;
+    }
+}
+
+static void empty_function()
+{
+}
+
+static void empty_function_single_arg(uint8_t arg)
+{
+}
+
+static void empty_function_two_args(const uint8_t *arg1, uint16_t arg2)
+{
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t sa, ssd1306_platform_i2cConfig_t * cfg)
+{
+    char filename[20];
+    if (busId < 0)
+    {
+        busId = 1;
+    }
+    snprintf(filename, 19, "/dev/i2c-%d", busId);
+    ssd1306_intf.start = empty_function;
+    ssd1306_intf.stop = empty_function;
+    ssd1306_intf.close = empty_function;
+    ssd1306_intf.send = empty_function_single_arg;
+    ssd1306_intf.send_buffer = empty_function_two_args;
+    if ((s_fd = open(filename, O_RDWR)) < 0)
+    {
+        fprintf(stderr, "Failed to open the i2c bus\n");
+        return;
+    }
+    if (sa)
+    {
+        s_sa = sa;
+    }
+    if (ioctl(s_fd, I2C_SLAVE, s_sa) < 0)
+    {
+        fprintf(stderr, "Failed to acquire bus access and/or talk to slave.\n");
+        return;
+    }
+    ssd1306_intf.start = platform_i2c_start;
+    ssd1306_intf.stop = platform_i2c_stop;
+    ssd1306_intf.send = platform_i2c_send;
+    ssd1306_intf.send_buffer = platform_i2c_send_buffer;
+    ssd1306_intf.close = platform_i2c_close;
+}
+
+#else /* SDL_EMULATION */
+
+#include "sdl_core.h"
+
+static void platform_i2c_send_buffer(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        sdl_send_byte(*buffer);
+        buffer++;
+    };
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t sa, ssd1306_platform_i2cConfig_t * cfg)
+{
+    sdl_core_init();
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = sdl_send_init;
+    ssd1306_intf.stop = sdl_send_stop;
+    ssd1306_intf.send = sdl_send_byte;
+    ssd1306_intf.send_buffer = platform_i2c_send_buffer;
+    ssd1306_intf.close = sdl_core_close;
+}
+
+#endif /* SDL_EMULATION */
+
+#endif // CONFIG_PLATFORM_I2C_AVAILABLE
+
+
+//////////////////////////////////////////////////////////////////////////////////
+//                        MINGW SPI IMPLEMENTATION
+//////////////////////////////////////////////////////////////////////////////////
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#if !defined(SDL_EMULATION)
+
+static int     s_spi_fd = -1;
+extern uint32_t s_ssd1306_spi_clock;
+
+static void platform_spi_start(void)
+{
+}
+
+static void platform_spi_stop(void)
+{
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    /* TODO: Yeah, sending single bytes is too slow, but *
+     * need to figure out how to detect data/command bytes *
+     * to send bytes as one block */
+    uint8_t buf[1];
+    struct spi_ioc_transfer mesg;
+    buf[0] = data;
+    memset(&mesg, 0, sizeof mesg);
+    mesg.tx_buf = (unsigned long)&buf[0];
+    mesg.rx_buf = 0;
+    mesg.len = 1;
+    mesg.delay_usecs = 0;
+    mesg.speed_hz = 0;
+    mesg.bits_per_word = 8;
+    mesg.cs_change = 0;
+    if (ioctl(s_spi_fd, SPI_IOC_MESSAGE(1), &mesg) < 1)
+    {
+        fprintf(stderr, "SPI failed to send SPI message: %s\n", strerror (errno)) ;
+    }
+}
+
+static void platform_spi_close(void)
+{
+    if (s_spi_fd >= 0)
+    {
+        close(s_spi_fd);
+        s_spi_fd = -1;
+    }
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    while (len--)
+    {
+        platform_spi_send(*data);
+        data++;
+    }
+}
+
+static void empty_function_spi(void)
+{
+}
+
+static void empty_function_arg_spi(uint8_t byte)
+{
+}
+
+static void empty_function_args_spi(const uint8_t *buffer, uint16_t bytes)
+{
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t ces,
+                              int8_t dcPin)
+{
+    char filename[20];
+    if (busId < 0)
+    {
+        busId = 0;
+    }
+    if (ces < 0)
+    {
+        ces = 0;
+    }
+    s_ssd1306_cs = -1;    // SPI interface does't need separate ces pin
+    s_ssd1306_dc = dcPin;
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = empty_function_spi;
+    ssd1306_intf.stop = empty_function_spi;
+    ssd1306_intf.send = empty_function_arg_spi;
+    ssd1306_intf.send_buffer = empty_function_args_spi;
+    ssd1306_intf.close = empty_function;
+
+    snprintf(filename, 19, "/dev/spidev%d.%d", busId, ces);
+    if ((s_spi_fd = open(filename, O_RDWR)) < 0)
+    {
+        printf("Failed to initialize SPI: %s!\n", strerror(errno));
+        return;
+    }
+    unsigned int speed = s_ssd1306_spi_clock;
+    if (ioctl(s_spi_fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed) < 0)
+    {
+        printf("Failed to set speed on SPI line: %s!\n", strerror(errno));
+    }
+    uint8_t mode = SPI_MODE_0;
+    if (ioctl (s_spi_fd, SPI_IOC_WR_MODE, &mode) < 0)
+    {
+        printf("Failed to set SPI mode: %s!\n", strerror(errno));
+    }
+    uint8_t spi_bpw = 8;
+    if (ioctl (s_spi_fd, SPI_IOC_WR_BITS_PER_WORD, &spi_bpw) < 0)
+    {
+        printf("Failed to set SPI BPW: %s!\n", strerror(errno));
+    }
+
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = platform_spi_start;
+    ssd1306_intf.stop = platform_spi_stop;
+    ssd1306_intf.send = platform_spi_send;
+    ssd1306_intf.send_buffer = platform_spi_send_buffer;
+    ssd1306_intf.close = platform_spi_close;
+}
+
+#else /* SDL_EMULATION */
+
+#include "sdl_core.h"
+
+static void sdl_send_bytes(const uint8_t *buffer, uint16_t size)
+{
+    while (size--)
+    {
+        sdl_send_byte(*buffer);
+        buffer++;
+    };
+}
+
+void ssd1306_platform_spiInit(int8_t busId, int8_t ces, int8_t dcPin)
+{
+    sdl_core_init();
+    if (ces >= 0)
+    {
+        s_ssd1306_cs = ces;
+    }
+    if (dcPin >= 0)
+    {
+        s_ssd1306_dc = dcPin;
+    }
+    sdl_set_dc_pin(dcPin);
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = sdl_send_init;
+    ssd1306_intf.stop = sdl_send_stop;
+    ssd1306_intf.send = sdl_send_byte;
+    ssd1306_intf.send_buffer = sdl_send_bytes;
+    ssd1306_intf.close = sdl_core_close;
+}
+
+#endif /* SDL_EMULATION */
+
+#endif // CONFIG_PLATFORM_SPI_AVAILABLE
+
+#endif // __MINGW32__
+
diff --git a/lib/libssd1306/src/ssd1306_hal/stm32/io.h b/lib/libssd1306/src/ssd1306_hal/stm32/io.h
new file mode 100644
index 0000000..cbe0f8c
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/stm32/io.h
@@ -0,0 +1,147 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/stm32/io.h This is stm32 platform file
+ */
+
+#ifndef _SSD1306_STM32_IO_H_
+#define _SSD1306_STM32_IO_H_
+
+// TODO: To add support. Any help is welcome
+
+#define SSD1306_STM32_PLATFORM
+//========================== I. Include libraries =========================
+/* 1. Include all required headers, specific for your platform here */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define LOW  0
+#define HIGH 1
+#define INPUT 0
+#define OUTPUT 1
+/* Progmem attribute for data, located in Flash */
+#define PROGMEM
+
+//========================== II. Define options ===========================
+/* 2. Uncomment all options, you have support for on your platform   *
+ *    Remember that you will need to implement low level intf/i2c or *
+ *    intf/spi layers for your platform                              */
+
+/** The macro is defined when STM32 i2c implementation is available */
+#define CONFIG_PLATFORM_I2C_AVAILABLE
+#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//========================== III. Implement functions =====================
+/* Implement functions below the way you like. You can make them non-static */
+// !!!  MANDATORY !!!
+static inline int  digitalRead(int pin)   // digitalRead()
+{
+    return LOW;
+}
+
+static inline void digitalWrite(int pin, int level)  // digitalWrite()
+{
+}
+
+static inline void pinMode(int pin, int mode) // pinMode()
+{
+}
+
+static inline int  analogRead(int pin)    // analogRead()
+{
+    return 0;
+}
+
+static inline uint32_t millis(void)       // millis()
+{
+    return 0;
+}
+
+static inline uint32_t micros(void)       // micros()
+{
+    return 0;
+};
+
+static inline void delay(uint32_t ms)     // delay()
+{
+}
+
+static inline void delayMicroseconds(uint32_t us)  // delayMicroseconds()
+{
+}
+
+// !!!  OPTIONAL !!!
+static inline void randomSeed(int seed)   // randomSeed() -  can be skipped
+{
+}
+
+static inline void attachInterrupt(int pin, void (*interrupt)(), int level)  // attachInterrupt() - can be skipped
+{
+}
+
+static inline uint8_t pgm_read_byte(const void *ptr)  // pgm_read_byte() - can be skipped
+{
+    return *((const uint8_t *)ptr);
+}
+
+static inline uint16_t eeprom_read_word(const void *ptr)  // eeprom_read_word() - can be skipped
+{
+    return 0;
+}
+
+static inline void eeprom_write_word(const void *ptr, uint16_t val) // eeprom_write_word() - can be skipped
+{
+}
+
+// utoa is already defined in stdlib c
+//static inline char *utoa(unsigned int num, char *str, int radix)    // util utoa() - can be skipped
+//{
+//    *str = '\0';
+//    return str;
+//}
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+static inline int random(int max)   // random(n) - can be skipped if you don't use it
+{
+    return 0;
+}
+
+static inline int random(int min, int max)  // random(a,b) - can be skipped if you don't use it
+{
+    return 0;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/stm32/platform.c b/lib/libssd1306/src/ssd1306_hal/stm32/platform.c
new file mode 100644
index 0000000..b4b4d43
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/stm32/platform.c
@@ -0,0 +1,130 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+#if defined(SSD1306_STM32_PLATFORM)
+
+#include "intf/ssd1306_interface.h"
+#include "stm32f1xx_hal.h"
+
+// TODO: To add support. Any help is welcome
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+static uint8_t s_i2c_addr = 0x3C;
+
+static void platform_i2c_start(void)
+{
+    // ... Open i2c channel for your device with specific s_i2c_addr
+}
+
+static void platform_i2c_stop(void)
+{
+    // ... Complete i2c communication
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    // ... Send byte to i2c communication channel
+}
+
+static void platform_i2c_close(void)
+{
+    // ... free all i2c resources here
+}
+
+static void platform_i2c_send_buffer(const uint8_t *data, uint16_t len)
+{
+    // ... Send len bytes to i2c communication channel here
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg)
+{
+    if (addr) s_i2c_addr = addr;
+    if (HAL_I2C_IsDeviceReady(&hi2c1, s_i2c_addr, 1, 20000) != HAL_OK)
+    {
+        return;
+    }
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = &platform_i2c_start;
+    ssd1306_intf.stop  = &platform_i2c_stop;
+    ssd1306_intf.send  = &platform_i2c_send;
+    ssd1306_intf.close = &platform_i2c_close;
+    ssd1306_intf.send_buffer = &platform_i2c_send_buffer;
+    // init your interface here
+    //...
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#include "intf/spi/ssd1306_spi.h"
+
+static void platform_spi_start(void)
+{
+    // ... Open spi channel for your device with specific s_ssd1306_cs, s_ssd1306_dc
+}
+
+static void platform_spi_stop(void)
+{
+    // ... Complete spi communication
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    // ... Send byte to spi communication channel
+}
+
+static void platform_spi_close(void)
+{
+    // ... free all spi resources here
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    // ... Send len bytes to spi communication channel here
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t cesPin,
+                              int8_t dcPin)
+{
+    if (cesPin>=0) s_ssd1306_cs = cesPin;
+    if (dcPin>=0) s_ssd1306_dc = dcPin;
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = &platform_spi_start;
+    ssd1306_intf.stop  = &platform_spi_stop;
+    ssd1306_intf.send  = &platform_spi_send;
+    ssd1306_intf.close = &platform_spi_close;
+    ssd1306_intf.send_buffer = &platform_spi_send_buffer;
+    // init your interface here
+    //...
+}
+#endif
+
+#endif // YOUR_PLATFORM
diff --git a/lib/libssd1306/src/ssd1306_hal/template/io.h b/lib/libssd1306/src/ssd1306_hal/template/io.h
new file mode 100644
index 0000000..7fd4145
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/template/io.h
@@ -0,0 +1,173 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+/*
+ * @file ssd1306_hal/template/io.h This is template file for new platform with detailed instructions
+ */
+
+#ifndef _SSD1306_YOUR_PLATFORM_IO_H_
+#define _SSD1306_YOUR_PLATFORM_IO_H_
+
+//========================== I. Create directory for your platform ========
+/* 1. Copy content of this folder to src/ssd1306_hal/<your_platform>/ folder   */
+/* 2. Replace YOUR_PLATFORM in these files with the one, you would like to use */
+/* 3. Add #include "<your_platform>/io.h" to src/ssd1306_hal/io.h file         */
+/*    (remember to add required #elif defined(X) lines)                        */
+/* 4. Add platform.c file to SOURCES list in src/Makefile.src                  */
+/* 5. Implement functions below and functions in platform.c file               */
+
+#define YOUR_PLATFORM
+//========================== I. Include libraries =========================
+/* 1. Include all required headers, specific for your platform here */
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* If your platform already has these definitions, comment out lines below */
+#define LOW  0
+#define HIGH 1
+#define INPUT 0
+#define OUTPUT 1
+/* Progmem attribute for data, located in Flash */
+#define PROGMEM
+
+//========================== II. Define options ===========================
+/* 2. Uncomment all options, you have support for on your platform   *
+ *    Remember that you will need to implement low level intf/i2c or *
+ *    intf/spi layers for your platform                              */
+
+//#define CONFIG_SOFTWARE_I2C_AVAILABLE
+//#define CONFIG_TWI_I2C_AVAILABLE
+//#define CONFIG_AVR_SPI_AVAILABLE
+//#define CONFIG_AVR_UART_AVAILABLE
+//#define CONFIG_VGA_AVAILABLE
+//#define CONFIG_PLATFORM_I2C_AVAILABLE
+//#define CONFIG_PLATFORM_SPI_AVAILABLE
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//========================== III. Implement functions =====================
+/* Implement functions below the way you like. You can make them non-static
+ * and implement the functions in platform.c file
+ */
+// !!! MANDATORY. The library will not work without these functions !!!
+static inline int  digitalRead(int pin)   // digitalRead()
+{
+    return LOW;
+}
+
+static inline void digitalWrite(int pin, int level)  // digitalWrite()
+{
+}
+
+static inline void pinMode(int pin, int mode) // pinMode()
+{
+}
+
+static inline int  analogRead(int pin)    // analogRead()
+{
+    return 0;
+}
+
+static inline uint32_t millis(void)       // millis()
+{
+    return 0;
+}
+
+static inline uint32_t micros(void)       // micros()
+{
+    return 0;
+};
+
+static inline void delay(uint32_t ms)     // delay()
+{
+}
+
+static inline void delayMicroseconds(uint32_t us)  // delayMicroseconds()
+{
+}
+
+// !!!  OPTIONAL !!!
+static inline void randomSeed(int seed)   // randomSeed() -  can be skipped
+{
+}
+
+static inline void attachInterrupt(int pin, void (*interrupt)(), int level)  // attachInterrupt() - can be skipped
+{
+}
+
+static inline uint8_t pgm_read_byte(const void *ptr)  // pgm_read_byte() - can be left as is
+{
+    return *((const uint8_t *)ptr);
+}
+
+static inline uint16_t eeprom_read_word(const void *ptr)  // eeprom_read_word() - can be skipped
+{
+    return 0;
+}
+
+static inline void eeprom_write_word(const void *ptr, uint16_t val) // eeprom_write_word() - can be skipped
+{
+}
+
+static inline char *utoa(unsigned int num, char *str, int radix)    // util utoa() - can be skipped
+{
+    *str = '\0';
+    return str;
+}
+
+
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg);
+#endif
+
+
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+void ssd1306_platform_spiInit(uint8_t busId,
+                              uint8_t cesPin,
+                              uint8_t dcPin);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#ifdef __cplusplus
+static inline int random(int max)   // random(n) - can be skipped if you don't use it
+{
+    return 0;
+}
+
+static inline int random(int min, int max)  // random(a,b) - can be skipped if you don't use it
+{
+    return 0;
+}
+#endif
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_hal/template/platform.c b/lib/libssd1306/src/ssd1306_hal/template/platform.c
new file mode 100644
index 0000000..2d1a16c
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_hal/template/platform.c
@@ -0,0 +1,124 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "ssd1306_hal/io.h"
+
+// TODO: DON'T FORGET ADD YOUR PLATFORM FILE TO MAKEFILE
+
+#if defined(YOUR_PLATFORM)
+
+#include "intf/ssd1306_interface.h"
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM I2C IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_I2C_AVAILABLE) && defined(CONFIG_PLATFORM_I2C_ENABLE)
+static uint8_t s_i2c_addr = 0x3C;
+
+static void platform_i2c_start(void)
+{
+    // ... Open i2c channel for your device with specific s_i2c_addr
+}
+
+static void platform_i2c_stop(void)
+{
+    // ... Complete i2c communication
+}
+
+static void platform_i2c_send(uint8_t data)
+{
+    // ... Send byte to i2c communication channel
+}
+
+static void platform_i2c_close(void)
+{
+    // ... free all i2c resources here
+}
+
+static void platform_i2c_send_buffer(const uint8_t *data, uint16_t len)
+{
+    // ... Send len bytes to i2c communication channel here
+}
+
+void ssd1306_platform_i2cInit(int8_t busId, uint8_t addr, ssd1306_platform_i2cConfig_t * cfg)
+{
+    if (addr) s_i2c_addr = addr;
+    ssd1306_intf.spi = 0;
+    ssd1306_intf.start = &platform_i2c_start;
+    ssd1306_intf.stop  = &platform_i2c_stop;
+    ssd1306_intf.send  = &platform_i2c_send;
+    ssd1306_intf.close = &platform_i2c_close;
+    ssd1306_intf.send_buffer = &platform_i2c_send_buffer;
+    // init your interface here
+    //...
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////
+// !!! PLATFORM SPI IMPLEMENTATION OPTIONAL !!!
+#if defined(CONFIG_PLATFORM_SPI_AVAILABLE) && defined(CONFIG_PLATFORM_SPI_ENABLE)
+
+#include "intf/spi/ssd1306_spi.h"
+
+static void platform_spi_start(void)
+{
+    // ... Open spi channel for your device with specific s_ssd1306_cs, s_ssd1306_dc
+}
+
+static void platform_spi_stop(void)
+{
+    // ... Complete spi communication
+}
+
+static void platform_spi_send(uint8_t data)
+{
+    // ... Send byte to spi communication channel
+}
+
+static void platform_spi_close(void)
+{
+    // ... free all spi resources here
+}
+
+static void platform_spi_send_buffer(const uint8_t *data, uint16_t len)
+{
+    // ... Send len bytes to spi communication channel here
+}
+
+void ssd1306_platform_spiInit(int8_t busId,
+                              int8_t cesPin,
+                              int8_t dcPin)
+{
+    if (cesPin>=0) s_ssd1306_cs = cesPin;
+    if (dcPin>=0) s_ssd1306_dc = dcPin;
+    ssd1306_intf.spi = 1;
+    ssd1306_intf.start = &platform_spi_start;
+    ssd1306_intf.stop  = &platform_spi_stop;
+    ssd1306_intf.send  = &platform_spi_send;
+    ssd1306_intf.close = &platform_spi_close;
+    ssd1306_intf.send_buffer = &platform_spi_send_buffer;
+    // init your interface here
+    //...
+}
+#endif
+
+#endif // YOUR_PLATFORM
diff --git a/lib/libssd1306/src/ssd1306_menu.c b/lib/libssd1306/src/ssd1306_menu.c
new file mode 100644
index 0000000..84e7136
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_menu.c
@@ -0,0 +1,297 @@
+/*
+    MIT License
+
+    Copyright (c) 2017-2019, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+
+#include "font6x8.h"
+#include "ssd1306.h"
+
+#ifndef min
+#define min(x,y) ((x)<(y)?(x):(y))
+#endif
+
+#ifndef max
+#define max(x,y) ((x)>(y)?(x):(y))
+#endif
+
+extern SFixedFontInfo s_fixedFont;
+extern uint16_t ssd1306_color;
+
+static uint8_t getMaxScreenItems(void)
+{
+    return ((ssd1306_displayHeight() - 16) / (s_fixedFont.pages * 8));
+}
+
+static uint8_t getMaxScreenItems8(void)
+{
+    return ((ssd1306_displayHeight() - 16) / (s_fixedFont.h.height + 0));
+}
+
+void ssd1306_createMenu(SAppMenu *menu, const char **items, uint8_t count)
+{
+    menu->items = items;
+    menu->count = count;
+    menu->selection = 0;
+    menu->oldSelection = 0;
+    menu->scrollPosition = 0;
+}
+
+static uint8_t calculateScrollPosition(SAppMenu *menu, uint8_t selection)
+{
+    if ( selection < menu->scrollPosition )
+    {
+        return selection;
+    }
+    else if ( selection - menu->scrollPosition > getMaxScreenItems() - 1)
+    {
+        return selection - getMaxScreenItems() + 1;
+    }
+    return menu->scrollPosition;
+}
+
+static uint8_t calculateScrollPosition8(SAppMenu *menu, uint8_t selection)
+{
+    if ( selection < menu->scrollPosition )
+    {
+        return selection;
+    }
+    else if ( selection - menu->scrollPosition > getMaxScreenItems8() - 1)
+    {
+        return selection - getMaxScreenItems8() + 1;
+    }
+    return menu->scrollPosition;
+}
+
+static void drawMenuItem(SAppMenu *menu, uint8_t index)
+{
+    if (index == menu->selection)
+    {
+        ssd1306_negativeMode();
+    }
+    else
+    {
+        ssd1306_positiveMode();
+    }
+    ssd1306_printFixed(8, (index - menu->scrollPosition)* (s_fixedFont.pages * 8) + 8, menu->items[index], STYLE_NORMAL );
+    ssd1306_positiveMode();
+}
+
+static void drawMenuItem8(SAppMenu *menu, uint8_t index)
+{
+    if (index == menu->selection)
+    {
+        ssd1306_negativeMode();
+    }
+    else
+    {
+        ssd1306_positiveMode();
+    }
+    ssd1306_printFixed8(8, (index - menu->scrollPosition)*(s_fixedFont.h.height + 0) + 8, menu->items[index], STYLE_NORMAL );
+    ssd1306_positiveMode();
+}
+
+static void drawMenuItem16(SAppMenu *menu, uint8_t index)
+{
+    if (index == menu->selection)
+    {
+        ssd1306_negativeMode();
+    }
+    else
+    {
+        ssd1306_positiveMode();
+    }
+    ssd1306_printFixed16(8, (index - menu->scrollPosition) * (s_fixedFont.h.height + 0) + 8, menu->items[index], STYLE_NORMAL );
+    ssd1306_positiveMode();
+}
+
+void ssd1306_showMenu(SAppMenu *menu)
+{
+    ssd1306_drawRect(4, 4, ssd1306_displayWidth() - 5, ssd1306_displayHeight() - 5);
+    menu->scrollPosition = calculateScrollPosition( menu, menu->selection );
+    for (uint8_t i = menu->scrollPosition; i < min(menu->count, menu->scrollPosition + getMaxScreenItems()); i++)
+    {
+        drawMenuItem(menu, i);
+    }
+    menu->oldSelection = menu->selection;
+}
+
+void ssd1306_showMenu8(SAppMenu *menu)
+{
+    ssd1306_drawRect8(4, 4, ssd1306_displayWidth() - 5, ssd1306_displayHeight() - 5);
+    menu->scrollPosition = calculateScrollPosition8( menu, menu->selection );
+    for (uint8_t i = menu->scrollPosition; i < min(menu->count, menu->scrollPosition + getMaxScreenItems8()); i++)
+    {
+        drawMenuItem8(menu, i);
+    }
+    menu->oldSelection = menu->selection;
+}
+
+void ssd1306_showMenu16(SAppMenu *menu)
+{
+    ssd1306_drawRect16(4, 4, ssd1306_displayWidth() - 5, ssd1306_displayHeight() - 5);
+    menu->scrollPosition = calculateScrollPosition8( menu, menu->selection );
+    for (uint8_t i = menu->scrollPosition; i < min(menu->count, menu->scrollPosition + getMaxScreenItems8()); i++)
+    {
+        drawMenuItem16(menu, i);
+    }
+    menu->oldSelection = menu->selection;
+}
+
+void ssd1306_updateMenu(SAppMenu *menu)
+{
+    if (menu->selection != menu->oldSelection)
+    {
+        uint8_t scrollPosition = calculateScrollPosition( menu, menu->selection );
+        if ( scrollPosition != menu->scrollPosition )
+        {
+            ssd1306_clearScreen();
+            ssd1306_showMenu(menu);
+        }
+        else
+        {
+            drawMenuItem(menu, menu->oldSelection);
+            drawMenuItem(menu, menu->selection);
+            menu->oldSelection = menu->selection;
+        }
+    }
+}
+
+void ssd1306_updateMenu8(SAppMenu *menu)
+{
+    if (menu->selection != menu->oldSelection)
+    {
+        uint8_t scrollPosition = calculateScrollPosition8( menu, menu->selection );
+        if ( scrollPosition != menu->scrollPosition )
+        {
+            ssd1306_clearScreen8();
+            ssd1306_showMenu8(menu);
+        }
+        else
+        {
+            drawMenuItem8(menu, menu->oldSelection);
+            drawMenuItem8(menu, menu->selection);
+            menu->oldSelection = menu->selection;
+        }
+    }
+}
+
+void ssd1306_updateMenu16(SAppMenu *menu)
+{
+    if (menu->selection != menu->oldSelection)
+    {
+        uint8_t scrollPosition = calculateScrollPosition8( menu, menu->selection );
+        if ( scrollPosition != menu->scrollPosition )
+        {
+            ssd1306_clearScreen16();
+            ssd1306_showMenu16(menu);
+        }
+        else
+        {
+            drawMenuItem16(menu, menu->oldSelection);
+            drawMenuItem16(menu, menu->selection);
+            menu->oldSelection = menu->selection;
+        }
+    }
+}
+
+uint8_t ssd1306_menuSelection(SAppMenu *menu)
+{
+    return menu->selection;
+}
+
+void ssd1306_menuDown(SAppMenu *menu)
+{
+    if (menu->selection < menu->count - 1)
+    {
+        menu->selection++;
+    }
+    else
+    {
+        menu->selection = 0;
+    }
+}
+
+void ssd1306_menuUp(SAppMenu *menu)
+{
+    if (menu->selection > 0)
+    {
+        menu->selection--;
+    }
+    else
+    {
+        menu->selection = menu->count - 1;
+    }
+}
+
+void ssd1306_drawProgressBar(int8_t progress)
+{
+    lcduint_t height = 8;
+    lcduint_t width = 8;
+    char str[5] = "100%";
+    if ( progress < 100 )
+    {
+        str[0] = ' ';
+        str[1] = progress / 10 + '0';
+        str[2] = progress % 10 + '0';
+        str[3] = '%';
+    }
+    if ( s_fixedFont.primary_table != NULL )
+    {
+        width = ssd1306_getTextSize( str, &height );
+    }
+    lcdint_t middle = ssd1306_displayHeight() / 2;
+    lcdint_t progress_pos = 8 + (int16_t)(ssd1306_displayWidth() - 16) * progress / 100;
+    uint16_t color = ssd1306_color;
+    ssd1306_color = 0x0000;
+    ssd1306_fillRect( progress_pos, middle, ssd1306_displayWidth() - 8, middle + height );
+    ssd1306_color = color;
+    ssd1306_printFixed( ssd1306_displayWidth() / 2 - width / 2, middle - height, str, STYLE_NORMAL );
+    ssd1306_drawRect( 8, middle, ssd1306_displayWidth() - 8, middle + height );
+    ssd1306_fillRect( 8, middle, progress_pos, middle + height );
+}
+
+void ssd1306_drawProgressBar8(int8_t progress)
+{
+    lcduint_t height = 8;
+    lcduint_t width = 8;
+    char str[5] = "100%";
+    if ( progress < 100 )
+    {
+        str[0] = ' ';
+        str[1] = progress / 10 + '0';
+        str[2] = progress % 10 + '0';
+        str[3] = '%';
+    }
+    if ( s_fixedFont.primary_table != NULL )
+    {
+        width = ssd1306_getTextSize( str, &height );
+    }
+    lcdint_t middle = ssd1306_displayHeight() / 2;
+    lcdint_t progress_pos = 8 + (int16_t)(ssd1306_displayWidth() - 16) * progress / 100;
+    uint16_t color = ssd1306_color;
+    ssd1306_color = 0x0000;
+    ssd1306_fillRect8( progress_pos, middle, ssd1306_displayWidth() - 8, middle + height );
+    ssd1306_color = color;
+    ssd1306_printFixed8( ssd1306_displayWidth() / 2 - width / 2, middle - height, str, STYLE_NORMAL );
+    ssd1306_drawRect8( 8, middle, ssd1306_displayWidth() - 8, middle + height );
+    ssd1306_fillRect8( 8, middle, progress_pos, middle + height );
+}
diff --git a/lib/libssd1306/src/ssd1306_uart.c b/lib/libssd1306/src/ssd1306_uart.c
new file mode 100644
index 0000000..b9d2902
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_uart.c
@@ -0,0 +1,145 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file nano_engine.h Small graphics engine, based on SSD1331 functions
+ */
+
+#include "ssd1306_uart.h"
+
+#if defined(CONFIG_AVR_UART_AVAILABLE) && defined(CONFIG_AVR_UART_ENABLE)
+
+volatile uint8_t g_uart_put_ptr = 0;
+volatile uint8_t g_uart_buf[UART_BUFFER_RX];
+static uint8_t s_uart_get_ptr = 0;
+static uint8_t s_uart_interrupt = 0;
+
+#undef BAUD
+#define BAUD 115200
+// We need to define BAUD_TOL too high, because otherwise,
+// the compiler will give a warning "Baud rate achieved is higher than allowed"
+// I would recommend not to use 115200 on atmega328p
+#define BAUD_TOL 4
+#include <util/setbaud.h>
+static const uint8_t ubrr0h_115200 = UBRRH_VALUE;
+static const uint8_t ubrr0l_115200 = UBRRL_VALUE;
+#ifdef USE_2X
+static const uint8_t u2x0_115200 = 1;
+#else
+static const uint8_t u2x0_115200 = 0;
+#endif
+
+#undef BAUD
+#define BAUD 57600
+#include <util/setbaud.h>
+static const uint8_t ubrr0h_57600 = UBRRH_VALUE;
+static const uint8_t ubrr0l_57600 = UBRRL_VALUE;
+#ifdef USE_2X
+static const uint8_t u2x0_57600 = 1;
+#else
+static const uint8_t u2x0_57600 = 0;
+#endif
+
+#undef BAUD
+#define BAUD 38400
+#include <util/setbaud.h>
+static const uint8_t ubrr0h_38400 = UBRRH_VALUE;
+static const uint8_t ubrr0l_38400 = UBRRL_VALUE;
+#ifdef USE_2X
+static const uint8_t u2x0_38400 = 1;
+#else
+static const uint8_t u2x0_38400 = 0;
+#endif
+
+#undef BAUD
+#define BAUD 19200
+#include <util/setbaud.h>
+static const uint8_t ubrr0h_19200 = UBRRH_VALUE;
+static const uint8_t ubrr0l_19200 = UBRRL_VALUE;
+#ifdef USE_2X
+static const uint8_t u2x0_19200 = 1;
+#else
+static const uint8_t u2x0_19200 = 0;
+#endif
+
+void uart_init_internal(uint32_t baud, uint8_t interrupt)
+{
+    s_uart_interrupt = interrupt;
+    switch (baud)
+    {
+        case 19200:
+            UBRR0H = ubrr0h_19200;
+            UBRR0L = ubrr0l_19200;
+            if (u2x0_19200) UCSR0A |= _BV(U2X0); else UCSR0A &= ~(_BV(U2X0));
+            break;
+        case 38400:
+            UBRR0H = ubrr0h_38400;
+            UBRR0L = ubrr0l_38400;
+            if (u2x0_38400) UCSR0A |= _BV(U2X0); else UCSR0A &= ~(_BV(U2X0));
+            break;
+        case 57600:
+            UBRR0H = ubrr0h_57600;
+            UBRR0L = ubrr0l_57600;
+            if (u2x0_57600) UCSR0A |= _BV(U2X0); else UCSR0A &= ~(_BV(U2X0));
+            break;
+        case 115200:
+            UBRR0H = ubrr0h_115200;
+            UBRR0L = ubrr0l_115200;
+            if (u2x0_115200) UCSR0A |= _BV(U2X0); else UCSR0A &= ~(_BV(U2X0));
+            break;
+        default:
+            break;
+    }
+    UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
+    UCSR0B = _BV(RXEN0) | _BV(TXEN0) | (s_uart_interrupt ? _BV(RXCIE0) : 0);
+}
+
+void uart_send_byte(uint8_t c)
+{
+    loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */
+    UDR0 = c;
+}
+
+static inline uint8_t uart_byte_available_direct(void)
+{
+    return bit_is_set(UCSR0A, RXC0);
+}
+
+uint8_t uart_byte_available(void)
+{
+    if (!s_uart_interrupt)
+    {
+        while (uart_byte_available_direct()) __uart_read_byte();
+    }
+    return g_uart_put_ptr != s_uart_get_ptr;
+}
+
+uint8_t uart_read_byte(void)
+{
+    uint8_t data = g_uart_buf[s_uart_get_ptr];
+    s_uart_get_ptr = (s_uart_get_ptr + 1) & (UART_BUFFER_RX - 1);
+    return data;
+}
+
+#endif
+
diff --git a/lib/libssd1306/src/ssd1306_uart.h b/lib/libssd1306/src/ssd1306_uart.h
new file mode 100644
index 0000000..76814ea
--- /dev/null
+++ b/lib/libssd1306/src/ssd1306_uart.h
@@ -0,0 +1,134 @@
+/*
+    MIT License
+
+    Copyright (c) 2018, Alexey Dynda
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE.
+*/
+/**
+ * @file ssd1306_uart.h Uart implementation for SSD1306 library
+ * @details Define UART_INTERRUPT_ENABLE before including this header, if you
+ *          want interrupt-based UART support.
+ *          Define CONFIG_AVR_UART_AVAILABLE and CONFIG_AVR_UART_ENABLE before
+ *          including this header, if you want to use uart module outside ssd1306 library.
+ */
+
+#ifndef _SSD1306_UART_H_
+#define _SSD1306_UART_H_
+
+// This check is required if you want to use ssd1306_uart module outside ssd1306_library
+#ifndef CONFIG_AVR_UART_AVAILABLE
+#include "ssd1306_hal/io.h"
+#endif
+
+#if defined(CONFIG_AVR_UART_AVAILABLE) && defined(CONFIG_AVR_UART_ENABLE)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+/** Rx buffer size, used by AVR USART implementation */
+#define UART_BUFFER_RX  32  // :( Still need large buffer to process USART RX bytes
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+extern volatile uint8_t g_uart_put_ptr;
+
+extern volatile uint8_t g_uart_buf[];
+
+void uart_init_internal(uint32_t baud, uint8_t interrupt);
+#endif
+
+/**
+ * @brief Initializes uart module
+ *
+ * Initializes uart module. Depending on UART_INTERRUPT_ENABLE define,
+ * module will be initialized in interrupt mode or synchronouse mode.
+ *
+ * @param baud baud rate for the uart module
+ * @note only 115200, 57600, 38400 and 19200 are supported.
+ */
+static inline void uart_init(uint32_t baud)
+{
+#ifdef UART_INTERRUPT_ENABLE
+    uart_init_internal(baud, 1);
+#else
+    uart_init_internal(baud, 0);
+#endif
+}
+
+/**
+ * @brief Sends single byte over UART
+ *
+ * Sends single byte over UART. The function doesn't use any
+ * internal buffers, so it returns control once byte is sent.
+ *
+ * @param c byte to send.
+ */
+void uart_send_byte(uint8_t c);
+
+/**
+ * @brief Returns non-zero code if there are bytes in RX buffer
+ *
+ * Returns non-zero code if there are bytes in RX buffer
+ */
+uint8_t uart_byte_available(void);
+
+/**
+ * @brief Reads byte from UART RX buffer.
+ *
+ * Reads byte from UART RX buffer. Please, check bytes availability
+ * via uart_byte_available() before calling this function.
+ */
+uint8_t uart_read_byte(void);
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+static inline void __uart_read_byte(void)
+{
+    g_uart_buf[g_uart_put_ptr] = UDR0;
+    g_uart_put_ptr = (g_uart_put_ptr+1) & (UART_BUFFER_RX - 1);
+}
+
+
+#ifdef UART_INTERRUPT_ENABLE
+
+ISR(USART_RX_vect, ISR_BLOCK)
+{
+    if (bit_is_clear(UCSR0A, FE0)) // Do not perform error checks for now
+    {
+        __uart_read_byte();
+    }
+    else
+    {
+        volatile unsigned char data __attribute__((unused)) = UDR0;
+    }
+}
+#endif
+
+#endif // DOXYGEN_SHOULD_SKIP_THIS
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif
+
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..ed0776d
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,46 @@
+#include "twi.h"
+#include "ssd1306.h"
+#include "sevenseg.h"
+
+void main() {
+    TWI_Init();
+
+
+    ssd1306_128x32_i2c_init();
+//    ssd1306_128x64_spi_init(-1, 0, 1);  // Use this line for nano pi (RST not used, 0=CE, gpio1=D/C)
+//    ssd1306_128x64_spi_init(3,4,5);     // Use this line for Atmega328p (3=RST, 4=CE, 5=D/C)
+//    ssd1306_128x64_spi_init(24, 0, 23); // Use this line for Raspberry  (gpio24=RST, 0=CE, gpio23=D/C)
+//    ssd1306_128x64_spi_init(22, 5, 21); // Use this line for ESP32 (VSPI)  (gpio22=RST, gpio5=CE for VSPI, gpio21=D/C)
+//    composite_video_128x64_mono_init(); // Use this line for ESP32 with Composite video support
+
+    ssd1306_clearScreen();
+
+    //ssd1306_drawLine(0,0, ssd1306_displayWidth() -1, ssd1306_displayHeight() -1);
+
+
+    const uint8_t charw = 18;
+    const uint8_t spacing = 6;
+    const uint8_t barw=4;
+
+    struct SevenSeg sseg = {
+        .x0 = 0,
+        .y0 = 0,
+        .charwidth = 17,
+        .thick = 3,
+            //.charwidth = 16,
+            //.thick = 1,
+        .spacing = 4,
+    };
+
+    uint16_t i = 0;
+    uint16_t v;
+    uint16_t w;
+    int drawing = false;
+    for (;;) {
+        sseg_number(&sseg, i, 5, 1);
+
+        i++;
+        if (i == 9999) i = 0;
+        _delay_ms(100);
+    }
+}
diff --git a/src/sevenseg.c b/src/sevenseg.c
new file mode 100644
index 0000000..87fdf53
--- /dev/null
+++ b/src/sevenseg.c
@@ -0,0 +1,146 @@
+/**
+ * TODO file description
+ */
+
+#include <avr/pgmspace.h>
+#include "sevenseg.h"
+#include "ssd1306.h"
+
+
+void sseg_home(struct SevenSeg *disp) {
+    disp->x = 0;
+}
+
+enum SevenSegBars {
+  T=1, RT=2, RB=4, B=8, LB=16, LT=32, M=64
+};
+
+static const uint8_t PROGMEM seven[] = {
+    [0] = T|RT|RB|B|LB|LT,
+    [1] = RT|RB,
+    [2] = T|RT|M|LB|B,
+    [3] = T|RT|M|RB|B,
+    [4] = RT|RB|M|LT,
+    [5] = T|LT|M|RB|B,
+    [6] = T|LT|LB|B|RB|M,
+    [7] = T|RT|RB,
+    [8] = T|LT|RT|LB|RB|B|M,
+    [9] = T|LT|RT|RB|B|M,
+};
+
+static void draw_7seg_dig(uint8_t x, uint8_t y, uint8_t w, uint8_t th, uint8_t digit) {
+    uint8_t mask = digit == 255 ? 0 : pgm_read_byte(&seven[digit]);
+
+    const uint8_t v = w - th * 2;
+    const uint8_t subs = 1;
+
+    ssd1306_setColor((mask & T) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + th,
+            y + 0,
+            x + th + v - subs,
+            y + th - subs);
+
+    ssd1306_setColor((mask & M) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + th,
+            y + th + v,
+            x + th + v - subs,
+            y + th * 2 + v - subs);
+
+    ssd1306_setColor((mask & B) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + th,
+            y + th * 2 + v * 2,
+            x + th + v - subs,
+            y + th * 3 + v * 2 - subs);
+
+    ssd1306_setColor((mask & LT) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + 0,
+            y + th,
+            x + th - subs,
+            y + th + v - subs);
+
+    ssd1306_setColor((mask & RT) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + th + v,
+            y + th,
+            x + th * 2 + v - subs,
+            y + th + v - subs);
+
+    ssd1306_setColor((mask & LB) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + 0,
+            y + th * 2 + v,
+            x + th - subs,
+            y + th * 2 + v * 2 - subs);
+
+    ssd1306_setColor((mask & RB) ? 0xFFFF : 0);
+    ssd1306_fillRect(
+            x + th + v,
+            y + th * 2 + v,
+            x + th * 2 + v - subs,
+            y + th * 2 + v * 2 - subs);
+}
+
+static void draw_7seg_period(uint8_t x, uint8_t y, uint8_t w, uint8_t th) {
+    const uint8_t v = w - th * 2;
+    const uint8_t subs = 1;
+
+    ssd1306_setColor(0xFFFF);
+    ssd1306_fillRect(
+            x,
+            y + th * 2 + v * 2,
+            x + th - subs,
+            y + th * 3 + v * 2 - subs);
+}
+
+
+void sseg_digit(struct SevenSeg *disp, uint8_t digit) {
+    draw_7seg_dig(disp->x, disp->y0, disp->charwidth, disp->thick, digit);
+    disp->x += disp->charwidth + disp->spacing;
+}
+
+void sseg_blank(struct SevenSeg *disp) {
+    draw_7seg_dig(disp->x, disp->y0, disp->charwidth, disp->thick, 255);
+    disp->x += disp->charwidth + disp->spacing;
+}
+
+void sseg_period(struct SevenSeg *disp) {
+    draw_7seg_period(disp->x, disp->y0, disp->charwidth, disp->thick);
+    disp->x += disp->thick + disp->spacing;
+}
+
+void sseg_number(struct SevenSeg *disp, uint16_t num, uint8_t places, uint8_t decimals) {
+    uint8_t digits[5] = {};
+    uint8_t pos = 4;
+    while (num > 0) {
+        uint8_t res = num % 10;
+        num /= 10;
+        digits[pos] = res;
+        pos--;
+    }
+
+    sseg_home(disp);
+    bool drawing = false;
+    for (uint8_t i = 5 - places; i < 5; i++) {
+        uint8_t d = digits[i];
+
+        if (i == 5 - decimals) {
+            sseg_period(disp);
+        }
+
+        if (!drawing && d == 0) {
+            if (i == 5 - decimals - 1) {
+                sseg_digit(disp, d);
+                drawing = true;
+            } else {
+                sseg_blank(disp);
+            }
+        } else {
+            sseg_digit(disp, d);
+            drawing = true;
+        }
+    }
+}
diff --git a/src/sevenseg.h b/src/sevenseg.h
new file mode 100644
index 0000000..a611931
--- /dev/null
+++ b/src/sevenseg.h
@@ -0,0 +1,30 @@
+/**
+ * TODO file description
+ */
+
+#ifndef CPROJ_SEVENSEG_H
+#define CPROJ_SEVENSEG_H
+
+#include <stdbool.h>
+
+struct SevenSeg {
+  uint8_t x0;
+  uint8_t y0;
+  uint8_t x;
+  uint8_t charwidth;
+  uint8_t thick;
+  uint8_t spacing;
+};
+
+void sseg_home(struct SevenSeg *disp);
+
+void sseg_digit(struct SevenSeg *disp, uint8_t digit);
+
+void sseg_blank(struct SevenSeg *disp);
+
+void sseg_period(struct SevenSeg *disp);
+
+void sseg_number(struct SevenSeg *disp, uint16_t num, uint8_t places, uint8_t decimals);
+
+
+#endif //CPROJ_SEVENSEG_H
diff --git a/src/twi.c b/src/twi.c
new file mode 100644
index 0000000..da01dc1
--- /dev/null
+++ b/src/twi.c
@@ -0,0 +1,166 @@
+/** 
+ * ---------------------------------------------------------------+ 
+ * @desc        Two Wire Interface / I2C Communication
+ * ---------------------------------------------------------------+ 
+ *              Copyright (C) 2020 Marian Hrinko.
+ *              Written by Marian Hrinko (mato.hrinko@gmail.com)
+ *
+ * @author      Marian Hrinko
+ * @datum       06.09.2020
+ * @file        twi.c
+ * @tested      AVR Atmega16, ATmega8, Atmega328
+ *
+ * @depend      
+ * ---------------------------------------------------------------+
+ * @usage       Master Transmit Operation
+ */
+ 
+// include libraries
+#include <avr/io.h>
+#include "twi.h"
+
+/**
+ * @desc    TWI init - initialize frequency
+ *
+ * @param   void
+ *
+ * @return  void
+ */
+void TWI_Init (void)
+{
+  // +++++++++++++++++++++++++++++++++++++++++++++
+  // Calculation fclk:
+  //
+  // fclk = (fcpu)/(16+2*TWBR*4^Prescaler)
+  // --------------------------------------------- 
+  // Calculation TWBR:
+  // 
+  // TWBR = {(fcpu/fclk) - 16 } / (2*4^Prescaler)
+  // +++++++++++++++++++++++++++++++++++++++++++++
+  // @param1 value of TWBR, 
+  //  fclk = 400kHz (m16); TWBR = 3
+  //  fclk = 100kHz (m16); TWBR = 20
+  // @param2 value of Prescaler = 1
+  TWI_FREQ (3, 1);
+}
+
+/**
+ * @desc    TWI MT Start
+ *
+ * @param   void
+ *
+ * @return  char
+ */
+char TWI_MT_Start (void)
+{
+  // null status flag
+  TWI_TWSR &= ~0xA8;
+  // START
+  // ----------------------------------------------
+  // request for bus
+  TWI_START();
+  // wait till flag set
+  TWI_WAIT_TILL_TWINT_IS_SET();
+  // test if start or repeated start acknowledged
+  if ((TWI_STATUS != TWI_START_ACK) && (TWI_STATUS != TWI_REP_START_ACK)) {
+    // return status
+    return TWI_STATUS;
+  }
+  // success
+  return SUCCESS;
+}
+
+/**
+ * @desc    TWI Send address + write
+ *
+ * @param   char
+ *
+ * @return  char
+ */
+char TWI_MT_Send_SLAW (char address)
+{
+  // SLA+W
+  // ----------------------------------------------
+  TWI_TWDR = (address << 1);
+  // enable
+  TWI_ENABLE();
+  // wait till flag set
+  TWI_WAIT_TILL_TWINT_IS_SET();
+
+  // test if SLA with WRITE acknowledged
+  if (TWI_STATUS != TWI_MT_SLAW_ACK) {
+    // return status
+    return TWI_STATUS;
+  }
+  // success
+  return SUCCESS;
+}
+
+/**
+ * @desc    TWI Send data
+ *
+ * @param   char
+ *
+ * @return  char
+ */
+char TWI_MT_Send_Data (char data)
+{
+  // DATA
+  // ----------------------------------------------
+  TWI_TWDR = data;
+  // enable
+  TWI_ENABLE();
+  // wait till flag set
+  TWI_WAIT_TILL_TWINT_IS_SET();
+
+  // test if data acknowledged
+  if (TWI_STATUS != TWI_MT_DATA_ACK) {
+    // return status
+    return TWI_STATUS;
+  }
+  // success
+  return SUCCESS;
+}
+
+/**
+ * @desc    TWI Send address + read
+ *
+ * @param   char
+ *
+ * @return  char
+ */
+char TWI_MR_Send_SLAR (char address)
+{
+  // SLA+R
+  // ----------------------------------------------
+  TWI_TWDR = (address << 1) | 0x01;
+  // enable
+  TWI_ENABLE();
+  // wait till flag set
+  TWI_WAIT_TILL_TWINT_IS_SET();
+
+  // test if SLA with READ acknowledged
+  if (TWI_STATUS != TWI_MR_SLAR_ACK) {
+    // return status
+    return TWI_STATUS;
+  }
+  // success
+  return SUCCESS;
+}
+
+/**
+ * @desc    TWI stop
+ *
+ * @param   void
+ *
+ * @return  void
+ */
+void TWI_Stop (void)
+{
+  // End TWI
+  // -------------------------------------------------
+  // send stop sequence
+  TWI_STOP ();
+  // wait for TWINT flag is set
+//  TWI_WAIT_TILL_TWINT_IS_SET();
+}
diff --git a/src/twi.h b/src/twi.h
new file mode 100644
index 0000000..626d38a
--- /dev/null
+++ b/src/twi.h
@@ -0,0 +1,178 @@
+/** 
+ * ---------------------------------------------------------------+ 
+ * @desc        Two Wire Interface / I2C Communication
+ * ---------------------------------------------------------------+ 
+ *              Copyright (C) 2020 Marian Hrinko.
+ *              Written by Marian Hrinko (mato.hrinko@gmail.com)
+ *
+ * @author      Marian Hrinko
+ * @datum       06.09.2020
+ * @file        twi.h
+ * @tested      AVR Atmega16, ATmega8, Atmega328
+ *
+ * @depend      
+ * ---------------------------------------------------------------+
+ * @usage       Basic Master Transmit Operation
+ */
+
+#ifndef __TWI_H__
+#define __TWI_H__
+
+  // define register for TWI communication
+  // -------------------------------------------
+  #if defined(__AVR_ATmega16__) || defined(__AVR_ATmega8__) || defined(__AVR_ATmega328P__)
+
+    #define TWI_TWAR            TWAR // TWI (Slave) Address Register
+    #define TWI_TWBR            TWBR // TWI Bit Rate Register
+    #define TWI_TWDR            TWDR // TWI Data Register
+    #define TWI_TWCR            TWCR // TWI Control Register
+    #define TWI_TWSR            TWSR // TWI Status Register
+
+  #endif
+
+  // Success
+  // -------------------------------------------
+  #ifndef SUCCESS
+    #define SUCCESS             0
+  #endif
+
+  // Error
+  // -------------------------------------------
+  #ifndef ERROR
+    #define ERROR               1
+  #endif 
+
+  // ++++++++++++++++++++++++++++++++++++++++++
+  //
+  //        M A S T E R   M O D E
+  //
+  // ++++++++++++++++++++++++++++++++++++++++++  
+  // Master Mode - Transmitter / Receiver
+  #define TWI_START_ACK         0x08  // A START condition has been transmitted
+  #define TWI_REP_START_ACK     0x10  // A repeated START condition has been transmitted
+  #define TWI_FLAG_ARB_LOST     0x38  // Arbitration lost in SLA+W or NOT ACK bit
+  // Master Transmitter Mode
+  #define TWI_MT_SLAW_ACK       0x18  // SLA+W has been transmitted; ACK has been received
+  #define TWI_MT_SLAW_NACK      0x20  // SLA+W has been transmitted; NOT ACK has been received
+  #define TWI_MT_DATA_ACK       0x28  // Data byte has been transmitted; ACK has been received
+  #define TWI_MT_DATA_NACK      0x30  // Data byte has been transmitted; NOT ACK has been received  
+  // Master Receiver Mode
+  #define TWI_MR_SLAR_ACK       0x40  // SLA+R has been transmitted; ACK has been received
+  #define TWI_MR_SLAR_NACK      0x48  // SLA+R has been transmitted; NOT ACK has been received
+  #define TWI_MR_DATA_ACK       0x50  // Data byte has been received; ACK has been received
+  #define TWI_MR_DATA_NACK      0x58  // Data byte has been received; NOT ACK has been received
+  
+  // ++++++++++++++++++++++++++++++++++++++++++
+  //
+  //         S L A V E   M O D E
+  //
+  // ++++++++++++++++++++++++++++++++++++++++++
+  // Slave Receiver Mode
+  #define TWI_SR_SLAW_ACK       0x60  // Own Slave address has been received; ACK returned
+  #define TWI_SR_ALMOA_ACK      0x68  // Arbitration Lost in SLA+R/W as Master; Own Slave address has been received; ACK returned
+  #define TWI_SR_GCALL_ACK      0x70  // General call address has been received; ACK returned
+  #define TWI_SR_ALMGA_ACK      0x78  // Arbitration lost in SLA+R/W as Master; General call address has been received; ACK returned  
+  #define TWI_SR_OA_DATA_ACK    0x80  // Previously addressed with own SLA+W; data has been received; ACK returned
+  #define TWI_SR_OA_DATA_NACK   0x88  // Previously addressed with own SLA+W; data has been received; NOT ACK returned
+  #define TWI_SR_GC_DATA_ACK    0x90  // Previously addressed with general call; data has been received; ACK returned
+  #define TWI_SR_GC_DATA_NACK   0x98  // Previously addressed with general call; data has been received; NOT ACK returned
+  #define TWI_SR_STOP_RSTART    0xA0  // A STOP condition or repeated START condition has been received while still addressed as Slave
+  // Slave Transmitter Mode
+  #define TWI_ST_OA_ACK         0xA8  // Own SLA+R has been received; ACK has been returned
+  #define TWI_ST_ALMOA_ACK      0xB0  // Arbitration lost in SLA+R/W as Master; own SLA+R has been received; ACK has been received
+  #define TWI_ST_DATA_ACK       0xB8  // Data byte in TWDR has been transmitted; ACK has been received
+  #define TWI_ST_DATA_NACK      0xC0  // Data byte in TWDR has been transmitted; NOT ACK has been received
+  #define TWI_ST_DATA_LOST_ACK  0xC8  // Last data byte in TWDR has been transmitted (TWEA = '0'); ACK has been received
+
+  // TWI CLK frequency
+  // -------------------------------------------
+  //  @param TWBR
+  //  @param Prescaler
+  //    TWPS1 TWPS0  - PRESCALER
+  //      0     0    -     1
+  //      0     1    -     4
+  //      1     0    -    16
+  //      1     1    -    64
+  #define TWI_FREQ(BIT_RATE, PRESCALER) { TWI_TWBR = BIT_RATE; TWI_TWSR |= (TWI_TWSR & 0x03) | PRESCALER; }
+
+  // TWI start condition
+  // -------------------------------------------
+  // (1 <<  TWEN) - TWI Enable
+  // (1 << TWINT) - TWI Interrupt Flag - must be cleared by set
+  // (1 << TWSTA) - TWI Start
+  #define TWI_START()                   { TWI_TWCR = (1 << TWEN) | (1 << TWINT) | (1 << TWSTA); }
+
+  // TWI stop condition
+  // -------------------------------------------
+  // (1 <<  TWEN) - TWI Enable
+  // (1 << TWINT) - TWI Interrupt Flag - must be cleared by set
+  // (1 << TWSTO) - TWI Stop
+  #define TWI_STOP()                    { TWI_TWCR = (1 << TWEN) | (1 << TWINT) | (1 << TWSTO); }
+
+  // TWI enable
+  // -------------------------------------------
+  // (1 <<  TWEN) - TWI Enable
+  // (1 << TWINT) - TWI Interrupt Flag - must be cleared by set
+  #define TWI_ENABLE()                  { TWI_TWCR = (1 << TWEN) | (1 << TWINT); }
+
+  // TWI test if TWINT Flag is set
+  #define TWI_WAIT_TILL_TWINT_IS_SET()  { while (!(TWI_TWCR & (1 << TWINT))); }
+
+  // TWI status mask
+  #define TWI_STATUS                    ( TWI_TWSR & 0xF8 )
+  
+  /**
+   * @desc    TWI init
+   *
+   * @param   void
+   *
+   * @return  void
+   */
+  void TWI_Init(void);
+
+  /**
+   * @desc    TWI MT Start
+   *
+   * @param   void
+   *
+   * @return  char
+   */
+  char TWI_MT_Start(void);
+
+  /**
+   * @desc    TWI Send SLAW
+   *
+   * @param   void
+   *
+   * @return  unsigned char
+   */
+  char TWI_MT_Send_SLAW(char);
+
+  /**
+   * @desc    TWI Send data
+   *
+   * @param   char
+   *
+   * @return  char
+   */
+  char TWI_MT_Send_Data(char);
+
+  /**
+   * @desc    TWI Send SLAR
+   *
+   * @param   void
+   *
+   * @return  unsigned char
+   */
+  char TWI_MR_Send_SLAR(char);
+
+  /**
+   * @desc    TWI stop
+   *
+   * @param   void
+   *
+   * @return  void
+   */
+  void TWI_Stop(void);
+  
+#endif