Compare commits

...

8 Commits

  1. 2
      .gitignore
  2. 2
      Makefile
  3. 15
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c.d
  4. BIN
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c.o
  5. 16
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.d
  6. BIN
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c_embedded.o
  7. 16
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.d
  8. BIN
      lib/libssd1306/bld/intf/i2c/ssd1306_i2c_twi.o
  9. 15
      lib/libssd1306/bld/intf/spi/ssd1306_spi.d
  10. BIN
      lib/libssd1306/bld/intf/spi/ssd1306_spi.o
  11. 15
      lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.d
  12. BIN
      lib/libssd1306/bld/intf/spi/ssd1306_spi_avr.o
  13. 15
      lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.d
  14. BIN
      lib/libssd1306/bld/intf/spi/ssd1306_spi_usi.o
  15. 14
      lib/libssd1306/bld/intf/ssd1306_interface.d
  16. BIN
      lib/libssd1306/bld/intf/ssd1306_interface.o
  17. 14
      lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.d
  18. BIN
      lib/libssd1306/bld/intf/uart/ssd1306_uart_builtin.o
  19. 14
      lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.d
  20. BIN
      lib/libssd1306/bld/intf/vga/atmega328p/vga128x64.o
  21. 14
      lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.d
  22. BIN
      lib/libssd1306/bld/intf/vga/atmega328p/vga96x40.o
  23. 14
      lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.d
  24. BIN
      lib/libssd1306/bld/intf/vga/esp32/CompositeOutput.o
  25. 14
      lib/libssd1306/bld/intf/vga/esp32/vga128x64.d
  26. BIN
      lib/libssd1306/bld/intf/vga/esp32/vga128x64.o
  27. 13
      lib/libssd1306/bld/intf/vga/vga.d
  28. BIN
      lib/libssd1306/bld/intf/vga/vga.o
  29. 14
      lib/libssd1306/bld/lcd/lcd_common.d
  30. BIN
      lib/libssd1306/bld/lcd/lcd_common.o
  31. 15
      lib/libssd1306/bld/lcd/lcd_il9163.d
  32. BIN
      lib/libssd1306/bld/lcd/lcd_il9163.o
  33. 15
      lib/libssd1306/bld/lcd/lcd_ili9341.d
  34. BIN
      lib/libssd1306/bld/lcd/lcd_ili9341.o
  35. 14
      lib/libssd1306/bld/lcd/lcd_pcd8544.d
  36. BIN
      lib/libssd1306/bld/lcd/lcd_pcd8544.o
  37. 16
      lib/libssd1306/bld/lcd/oled_sh1106.d
  38. BIN
      lib/libssd1306/bld/lcd/oled_sh1106.o
  39. 16
      lib/libssd1306/bld/lcd/oled_ssd1306.d
  40. BIN
      lib/libssd1306/bld/lcd/oled_ssd1306.o
  41. 14
      lib/libssd1306/bld/lcd/oled_ssd1325.d
  42. BIN
      lib/libssd1306/bld/lcd/oled_ssd1325.o
  43. 14
      lib/libssd1306/bld/lcd/oled_ssd1327.d
  44. BIN
      lib/libssd1306/bld/lcd/oled_ssd1327.o
  45. 15
      lib/libssd1306/bld/lcd/oled_ssd1331.d
  46. BIN
      lib/libssd1306/bld/lcd/oled_ssd1331.o
  47. 15
      lib/libssd1306/bld/lcd/oled_ssd1351.d
  48. BIN
      lib/libssd1306/bld/lcd/oled_ssd1351.o
  49. 14
      lib/libssd1306/bld/lcd/oled_template.d
  50. BIN
      lib/libssd1306/bld/lcd/oled_template.o
  51. 14
      lib/libssd1306/bld/lcd/vga_monitor.d
  52. BIN
      lib/libssd1306/bld/lcd/vga_monitor.o
  53. BIN
      lib/libssd1306/bld/libssd1306.a
  54. 21
      lib/libssd1306/bld/nano_engine/canvas.d
  55. BIN
      lib/libssd1306/bld/nano_engine/canvas.o
  56. 17
      lib/libssd1306/bld/nano_engine/core.d
  57. BIN
      lib/libssd1306/bld/nano_engine/core.o
  58. 18
      lib/libssd1306/bld/nano_gfx.d
  59. BIN
      lib/libssd1306/bld/nano_gfx.o
  60. 19
      lib/libssd1306/bld/sprite_pool.d
  61. BIN
      lib/libssd1306/bld/sprite_pool.o
  62. 14
      lib/libssd1306/bld/ssd1306_16bit.d
  63. BIN
      lib/libssd1306/bld/ssd1306_16bit.o
  64. 21
      lib/libssd1306/bld/ssd1306_1bit.d
  65. BIN
      lib/libssd1306/bld/ssd1306_1bit.o
  66. 15
      lib/libssd1306/bld/ssd1306_8bit.d
  67. BIN
      lib/libssd1306/bld/ssd1306_8bit.o
  68. 20
      lib/libssd1306/bld/ssd1306_console.d
  69. BIN
      lib/libssd1306/bld/ssd1306_console.o
  70. 13
      lib/libssd1306/bld/ssd1306_fonts.d
  71. BIN
      lib/libssd1306/bld/ssd1306_fonts.o
  72. 21
      lib/libssd1306/bld/ssd1306_generic.d
  73. BIN
      lib/libssd1306/bld/ssd1306_generic.o
  74. 16
      lib/libssd1306/bld/ssd1306_hal/arduino/platform.d
  75. BIN
      lib/libssd1306/bld/ssd1306_hal/arduino/platform.o
  76. 13
      lib/libssd1306/bld/ssd1306_hal/avr/platform.d
  77. BIN
      lib/libssd1306/bld/ssd1306_hal/avr/platform.o
  78. 13
      lib/libssd1306/bld/ssd1306_hal/energia/platform.d
  79. BIN
      lib/libssd1306/bld/ssd1306_hal/energia/platform.o
  80. 1
      lib/libssd1306/bld/ssd1306_hal/linux/platform.d
  81. BIN
      lib/libssd1306/bld/ssd1306_hal/linux/platform.o
  82. 1
      lib/libssd1306/bld/ssd1306_hal/mingw/platform.d
  83. BIN
      lib/libssd1306/bld/ssd1306_hal/mingw/platform.o
  84. 13
      lib/libssd1306/bld/ssd1306_hal/stm32/platform.d
  85. BIN
      lib/libssd1306/bld/ssd1306_hal/stm32/platform.o
  86. 13
      lib/libssd1306/bld/ssd1306_hal/template/platform.d
  87. BIN
      lib/libssd1306/bld/ssd1306_hal/template/platform.o
  88. 18
      lib/libssd1306/bld/ssd1306_menu.d
  89. BIN
      lib/libssd1306/bld/ssd1306_menu.o
  90. 13
      lib/libssd1306/bld/ssd1306_uart.d
  91. BIN
      lib/libssd1306/bld/ssd1306_uart.o
  92. 282
      src/framebuffer.c
  93. 90
      src/framebuffer.h
  94. 13
      src/framebuffer_config.h
  95. 162
      src/graphic_loading.c
  96. 5
      src/main.c
  97. 5
      src/user_interface.c

2
.gitignore vendored

@ -1,2 +1,4 @@
.idea
build
lib/libssd1306/bld/

@ -77,7 +77,7 @@ size: $(TARGET).elf
# Build the display library
lib/libssd1306/bld/libssd1306.a:
$(MAKE) -C lib/libssd1306/ -f Makefile.avr MCU=atmega328p
$(MAKE) -C lib/libssd1306/src/ -f Makefile.avr MCU=atmega328p
$(TARGET).elf: $(OBJECTS) lib/libssd1306/bld/libssd1306.a | $(BUILD_DIR)
$(LD) $(CFLAGS) $(LFLAGS) -o $@ $^ lib/libssd1306/bld/libssd1306.a

@ -1,15 +0,0 @@
../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

@ -1,16 +0,0 @@
../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

@ -1,16 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,13 +0,0 @@
../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

Binary file not shown.

@ -1,14 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,16 +0,0 @@
../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

@ -1,16 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,15 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

@ -1,14 +0,0 @@
../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

Binary file not shown.

@ -1,21 +0,0 @@
../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

@ -1,17 +0,0 @@
../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

@ -1,18 +0,0 @@
../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

Binary file not shown.

@ -1,19 +0,0 @@
../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

Binary file not shown.

@ -1,14 +0,0 @@
../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

@ -1,21 +0,0 @@
../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

Binary file not shown.

@ -1,15 +0,0 @@
../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

Binary file not shown.

@ -1,20 +0,0 @@
../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

@ -1,13 +0,0 @@
../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

@ -1,21 +0,0 @@
../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

@ -1,16 +0,0 @@
../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

@ -1,13 +0,0 @@
../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

@ -1,13 +0,0 @@
../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

@ -1 +0,0 @@
../bld/ssd1306_hal/linux/platform.o: ssd1306_hal/linux/platform.c

@ -1 +0,0 @@
../bld/ssd1306_hal/mingw/platform.o: ssd1306_hal/mingw/platform.c

@ -1,13 +0,0 @@
../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

@ -1,13 +0,0 @@
../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

@ -1,18 +0,0 @@
../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

Binary file not shown.

@ -1,13 +0,0 @@
../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

Binary file not shown.

@ -0,0 +1,282 @@
//
// Created by MightyPork on 2022/11/12.
//
#include "framebuffer.h"
#define MIN(a, b) ((a)>(b)?(b):(a))
#define MAX(a, b) ((a)>(b)?(a):(b))
#include <string.h>
uint8_t fb[(FBH / 8) * FBW];
/** Fill with a vertical pattern, 1 byte */
void fb_fill(uint8_t pattern)
{
memset(fb, pattern, sizeof(fb));
}
static void draw_mask(fbsize_t idx, uint8_t mask, uint8_t color)
{
if (color != 0) {
fb[idx] |= mask;
} else {
fb[idx] &= ~mask;
}
}
void fb_px(fbpos_t x, fbpos_t y, uint8_t color)
{
if (x >= FBW || y >= FBH) { return; }
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
const fbsize_t cell = (fbsize_t) x + (fbsize_t) row * FBW;
draw_mask(cell, 1 << rowrem, color);
}
uint8_t fb_getpx(fbpos_t x, fbpos_t y)
{
if (x >= FBW || y >= FBH) { return 0; }
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
const fbsize_t cell = (fbsize_t) x + (fbsize_t) row * FBW;
if (fb[cell] & (1 << rowrem)) {
return 0xFF;
} else {
return 0x00;
}
}
void fb_hline(fbpos_t x, fbpos_t y, fbpos_t w, uint8_t color)
{
if (x >= FBW || y >= FBH) { return; }
w = MIN(FBW - x, w);
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
fbsize_t cell = (fbsize_t) x + (fbsize_t) row * FBW;
for (uint8_t i = 0; i < w; i++) {
draw_mask(cell, 1 << rowrem, color);
cell++;
}
}
void fb_vline(fbpos_t x, fbpos_t y, fbpos_t h, uint8_t color)
{
if (x >= FBW || y >= FBH) { return; }
h = MIN(FBH - y - 1, h);
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
uint16_t cell = (uint16_t) x + (uint16_t) row * FBW;
if (rowrem + h < 8) {
// all within one cell
const uint8_t mask = (0xFF << rowrem) & (0xFF >> (8 - h - rowrem));
draw_mask(cell, mask, color);
return;
} else {
// First
draw_mask(cell, 0xFF << rowrem, color);
h -= (rowrem == 0 ? 8 : (8 - rowrem));
const fbpos_t whole_cells = h / 8;
if (whole_cells > 0) {
h -= whole_cells * 8;
for (fbpos_t i = 0; i < whole_cells; i++) {
cell += FBW;
draw_mask(cell, 0xFF, color);
}
}
// last
cell += FBW;
draw_mask(cell, 0xFF >> (8 - h), color);
}
}
void fb_rect(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, uint8_t color)
{
if (x >= FBW || y >= FBH) { return; }
w = MIN(FBW - x, w);
h = MIN(FBH - y, h);
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
fbsize_t cell = (fbsize_t) x + (fbsize_t) row * FBW;
if (w == 1 && h == 1) {
fb_px(x, y, color);
} else if (w == 1) {
fb_vline(x, y, h, color);
} else if (h == 1) {
fb_hline(x, y, w, color);
} else if (rowrem + h <= 8) {
// all within one cell
uint8_t mask = (0xFF << rowrem) & (0xFF >> (8 - h - rowrem));
for (fbpos_t i = 0; i < w; i++) {
draw_mask(cell + i, mask, color);
}
return;
} else {
// First
uint8_t mask = (0xFF << rowrem);
for (fbpos_t i = 0; i < w; i++) {
draw_mask(cell + i, mask, color);
}
h -= 8 - rowrem;
const fbpos_t whole_cells = h / 8;
if (whole_cells > 0) {
h -= whole_cells * 8;
for (fbpos_t j = 0; j < whole_cells; j++) {
cell += FBW;
for (fbpos_t i = 0; i < w; i++) {
draw_mask(cell + i, 0xFF, color);
}
}
}
cell += FBW;
// last
mask = (0xFF >> (8 - h));
for (fbpos_t i = 0; i < w; i++) {
draw_mask(cell + i, mask, color);
}
}
}
void fb_frame(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t thickness, uint8_t color)
{
if (thickness == 0) {
return;
} else if (thickness == 1) {
fb_hline(x, y, w, color);
fb_vline(x, y, h, color);
fb_hline(x, y + h - 1, w, color);
fb_vline(x + w - 1, y, h, color);
} else {
fb_rect(x, y, w, thickness, color);
fb_rect(x, y + h - thickness, w, thickness, color);
fb_rect(x, y + thickness, thickness, h - 2 * thickness, color);
fb_rect(x + w - thickness, y + thickness, thickness, h - 2 * thickness, color);
}
}
void fb_bitmap(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, const uint8_t *map, uint8_t color)
{
if (x >= FBW || y >= FBH) { return; }
const fbpos_t w0 = w;
w = MIN(FBW - x - 1, w);
h = MIN(FBH - y - 1, h);
const fbpos_t row = y / 8;
const fbpos_t rowrem = y % 8;
fbsize_t cell = (fbsize_t) x + (fbsize_t) row * FBW;
if (rowrem + h <= 8) {
for (fbpos_t i = 0; i < w; i++) {
// all within one cell
const uint8_t mask = (map[i] & (0xFF >> (8 - h))) << rowrem;
draw_mask(cell + i, mask, color);
}
return;
} else {
fbsize_t mapc0 = 0;
// Draw the bitmap slice-by-slice based on how rows of the bitmap intersect with rows of the canvas.
// This could be optimized to walk each row of the canvas only once, but the code would get bigger.
while (h > 0) {
for (fbpos_t i = 0; i < w; i++) {
const uint8_t mask = (map[i + mapc0] & (0xFF >> rowrem)) << rowrem;
draw_mask(cell + i, mask, color);
}
cell += FBW;
if (rowrem != 0) {
for (fbpos_t i = 0; i < w; i++) {
const uint8_t mask = (map[i + mapc0] & (0xFF << (8 - rowrem))) >> (8 - rowrem);
draw_mask(cell + i, mask, color);
}
}
if (h > 8) {
h -= 8;
} else {
break;
}
mapc0 += w0;
}
}
}
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,
};
fbpos_t fb_7seg_dig(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t th, uint8_t digit, uint8_t color)
{
const uint8_t mask = digit > 9 ? 0 : pgm_read_byte(&seven[digit]);
const fbpos_t wi = w - th * 2;
const fbpos_t hi = (h - th * 3) / 2;
bool bcolor = !color; // changed for XOR
fb_rect(x + th,
y,
wi,
th, bcolor ^ (bool) (mask & T));
fb_rect(x + th,
y + th + hi,
wi,
th, bcolor ^ (bool) (mask & M));
fb_rect(x + th,
y + th * 2 + hi * 2,
wi,
th, bcolor ^ (bool) (mask & B));
fb_rect(x,
y + th,
th,
hi, bcolor ^ (bool) (mask & LT));
fb_rect(x + th + wi,
y + hi + th,
th,
hi, bcolor ^ (bool) (mask & LB));
fb_rect(x + th + wi,
y + th,
th,
hi, bcolor ^ (bool) (mask & RT));
fb_rect(x + th + wi,
y + th * 2 + hi,
th,
hi, bcolor ^ (bool) (mask & RB));
return w;
}
fbpos_t fb_7seg_period(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t th, uint8_t color)
{
const fbpos_t hi = (h - th * 3) / 2;
fb_rect(x, y + hi * 2 + th * 2, th, th, color);
return th;
}

@ -0,0 +1,90 @@
//
// Created by MightyPork on 2022/11/12.
//
#ifndef FRAMEBUFFER_H
#define FRAMEBUFFER_H
#include <stdbool.h>
#include <stdint.h>
#include "framebuffer_config.h"
#define FBSET 0xFF
#define FBCLEAR 0x00
typedef uint16_t fbsize_t;
typedef uint8_t fbpos_t;
/// Framebuffer backing array.
///
/// The format is the native format for SSD1306: array of bytes representing pixels in 8 rows at once, LSB is the topmost row.
///
/// a0 b0 ... til the display width
/// a1 b1
/// a2 b2
/// ... ...
/// a7 b7
///
/// and more bytes continue rows 8-15 and so on
extern uint8_t fb[(FBH / 8) * FBW];
/// Fill the entire screen with a byte pattern.
/// Use 0xFF or 0x00 for a solid fill. Other patterns may be used to create horizontal stripes.
void fb_fill(uint8_t pattern);
/// Clear the display (fill with 0x00)
static inline void fb_clear(void)
{
fb_fill(0);
}
/// Set a single pixel
void fb_px(fbpos_t x, fbpos_t y, uint8_t color);
/// Get pixel color
uint8_t fb_getpx(fbpos_t x, fbpos_t y);
/// Draw a horizontal line
void fb_hline(fbpos_t x, fbpos_t y, fbpos_t w, uint8_t color);
/// Draw a vertical line
void fb_vline(fbpos_t x, fbpos_t y, fbpos_t h, uint8_t color);
/// Draw a filled rect
void fb_rect(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, uint8_t color);
/// Draw a frame (unfilled rect)
void fb_frame(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t thickness, uint8_t color);
/// Draw a bitmap
void fb_bitmap(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, const uint8_t *map, uint8_t color);
/// Draw a 7-segment digit. Returns its width (without spacing)
///
/// \param x - pos X (left top)
/// \param y - pos Y (left top)
/// \param w - full digit width
/// \param h - full digit height; will be adjusted down if needed
/// \param th - thickness
/// \param digit - digit 0-9
/// \return width taken
fbpos_t fb_7seg_dig(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t th, uint8_t digit, uint8_t color);
/// Draw a 7-segment period. Returns its width (without spacing).
/// Digit height is (w * 2 - th)
///
/// \param x - pos X (digit left top)
/// \param y - pos Y (digit left top)
/// \param w - full digit width
/// \param h - full digit height; will be adjusted down if needed
/// \param th - thickness
/// \return width taken
fbpos_t fb_7seg_period(fbpos_t x, fbpos_t y, fbpos_t w, fbpos_t h, fbpos_t th, uint8_t color);
/// Output the framebuffer array `fb` to the display device.
///
/// The user must implement this
extern void fb_blit(void);
#endif //FRAMEBUFFER_H

@ -0,0 +1,13 @@
#ifndef FRAMEBUFFER_CONFIG_H
#define FRAMEBUFFER_CONFIG_H
#define FBW 128
#define FBH 32
#include <avr/pgmspace.h>
/*
#define PROGMEM
#define pgm_read_byte(adr) (*adr)
*/
#endif /* FRAMEBUFFER_CONFIG_H */

@ -6,10 +6,168 @@
#include <stdbool.h>
#include "ssd1306.h"
#include "user_interface.h"
#include "framebuffer.h"
void show_loading_screen(uint8_t progress_percent, bool clear) {
// HACKS - GUI dev here
fb_clear();
fb_blit();
const uint8_t ryba[14] = {
0b11000011,
0b01100110,
0b01111110,
0b00111100,
0b00011000,
0b00111100,
0b01111110,
0b11111111,
0b11111111,
0b11111011,
0b11111111,
0b01111110,
0b00111100,
0b00011000,
};
#define ZIR_W 12
#define ZIR_H 3
const uint8_t zirafa[ZIR_H * ZIR_W] = {
// levo
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000, // vrsek
0b00011000,
0b00011111,
0b11111000,
0b00011111,
0b00001000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b11111111,
0b00000000,
0b00000000,
0b00010000,
0b00001000,
0b11111000,
0b00011000,
0b11111000, // spodek
0b00011000,
0b00011000,
0b00011000,
0b11111000,
0b00011111,
0b11111000,
0b00000000,
};
#if 1
int pos=0;
for(;;) {
fb_clear();
//fb_bitmap(0, pos, 14, 8, ryba, 1);
fb_bitmap(0, pos, ZIR_W, ZIR_H, zirafa, 1);
fb_blit();
_delay_ms(500);
pos++;
if (pos>31) {
pos = 0;
}
}
#endif
int a = 10;
int b = 40;
for (;;) {
fb_bitmap(a, 0, ZIR_W, ZIR_H*8, zirafa, 0);
fb_bitmap(b, 16, 14, 8, ryba, 0);
a++;
b++;
if(a>127) {
a = 0;
}
if(b>127) {
b = 0;
}
fb_bitmap(a, 0, ZIR_W, ZIR_H*8, zirafa, 1);
fb_bitmap(b, 16, 14, 8, ryba, 1);
fb_blit();
_delay_ms(5);
}
for(;;) {}
//
#if 0
int a = 0, b = 0, ai = 1, bi = 1;
int c = 50, d = 5, ci = -1, di = 1;
int e = 70, f = 10, ei = 1, fi = -1;
int w=15;
int W=20;
for(;;){
fb_clear();
fb_rect(a, b, w, w, 1);
fb_rect(c, d, w, w, 1);
fb_rect(e, f, W, W, 1);
fb_rect(a+1, b+1, w-2, w-2, 0);
fb_rect(c+1, d+1, w-2, w-2, 0);
fb_rect(e+1, f+1, W-2, W-2, 0);
a += ai;
if (a == FBW-1-w) ai = -1;
if (a == 0) ai = 1;
b += bi;
if (b == FBH-1-w) bi = -1;
if (b == 0) bi = 1;
c += ci;
if (c == FBW-1-w) ci = -1;
if (c == 0) ci = 1;
d += di;
if (d == FBH-1-w) di = -1;
if (d == 0) di = 1;
e += ei;
if (e == FBW-1-W) ei = -1;
if (e == 0) ei = 1;
f += fi;
if (f == FBH-1-W) fi = -1;
if (f == 0) fi = 1;
fb_blit();
_delay_ms(5);
}
#endif
void show_loading_screen(uint8_t progress_percent, bool clear)
{
if (clear) {
ssd1306_clearScreen();
}

@ -20,6 +20,9 @@ void __attribute__((noreturn)) main()
init_user_interface();
show_loading_screen(0, true);
while(1){}
#if 0
init_timebase();
init_radiation();
@ -48,6 +51,8 @@ void __attribute__((noreturn)) main()
shutdown_due_to_weak_battery();
}
}
#endif
}

@ -8,9 +8,14 @@
#include "sevenseg.h"
#include "global_state.h"
#include "radiation.h"
#include "framebuffer.h"
static bool ended_loading = false;
void fb_blit() {
ssd1306_drawBuffer(0, 0, FBW, FBH, fb);
}
static struct SevenSeg sseg = {
.x0 = 0,
.y0 = 0,

Loading…
Cancel
Save