Compare commits

..

8 Commits

  1. 2
      .gitignore
  2. 4
      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. 7
      src/global_state.h
  96. 227
      src/graphic_loading.c
  97. 2
      src/high_voltage.c
  98. 40
      src/main.c
  99. 103
      src/radiation.c
  100. 35
      src/radiation.h
  101. Some files were not shown because too many files have changed in this diff Show More

2
.gitignore vendored

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

@ -29,7 +29,7 @@ CFLAGS = -std=gnu99 -mmcu=$(MCU) -DF_CPU=$(F_CPU)UL
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -Wall -Wno-main -Wno-strict-prototypes -Wno-comment CFLAGS += -Wall -Wno-main -Wno-strict-prototypes -Wno-comment
CFLAGS += -g2 -Wextra -Wfatal-errors -Wno-unused-but-set-variable CFLAGS += -g2 -Wextra -Wfatal-errors -Wno-unused-but-set-variable
CFLAGS += -ffunction-sections -fdata-sections -O2 -Wno-array-bounds CFLAGS += -ffunction-sections -fdata-sections -Os -Wno-array-bounds
LFLAGS = -Wl,--gc-sections -Wl,--relax LFLAGS = -Wl,--gc-sections -Wl,--relax
#-Llib/libssd1306/bld/ -l:libssd1306.a #-Llib/libssd1306/bld/ -l:libssd1306.a
@ -77,7 +77,7 @@ size: $(TARGET).elf
# Build the display library # Build the display library
lib/libssd1306/bld/libssd1306.a: 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) $(TARGET).elf: $(OBJECTS) lib/libssd1306/bld/libssd1306.a | $(BUILD_DIR)
$(LD) $(CFLAGS) $(LFLAGS) -o $@ $^ lib/libssd1306/bld/libssd1306.a $(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 */

@ -9,12 +9,7 @@
#include <stdint.h> #include <stdint.h>
extern volatile bool req_update_display; extern volatile bool req_update_display;
extern volatile bool disp_show_tick_mark; extern volatile bool is_weak_battery;
extern volatile bool status_weak_battery;
/// timestamp counted in units of 100ms
extern volatile uint16_t timestamp_100ms; extern volatile uint16_t timestamp_100ms;
/// sub-second counter, counts 0-9 then overflows
extern volatile uint16_t subsec_counter;
#endif //CPROJ_GLOBAL_VARIABLES_H #endif //CPROJ_GLOBAL_VARIABLES_H

@ -6,51 +6,218 @@
#include <stdbool.h> #include <stdbool.h>
#include "ssd1306.h" #include "ssd1306.h"
#include "user_interface.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) { if (clear) {
ssd1306_clearScreen(); ssd1306_clearScreen();
} }
// bar in a box // bar in a box
#define hei 16 #define hei 20
#define wid DISPLAY_W #define wid DISPLAY_W
#define thic 2
#define inpad 3
#define ofsx ((DISPLAY_W - wid)/2) #define ofsx ((DISPLAY_W - wid)/2)
#define ofsy 8 #define ofsy ((DISPLAY_H - hei)/2)
ssd1306_setColor(0xFFFF);
lcdint_t xx = (uint8_t)(((uint16_t)wid * (uint16_t)progress_percent)/(uint16_t)100);
ssd1306_fillRect(
ofsx,
ofsy,
ofsx + xx,
ofsy + hei
);
ssd1306_fillRect( const uint8_t rects[4][4] = {
ofsx + xx + 1, // top
ofsy, {
ofsx + wid - 2, 0, 0,
ofsy wid - 1, thic - 1
); },
// left
{
0, thic,
thic - 1, hei - thic - 1
},
// right
{
wid - thic, thic,
wid - 1, hei - thic - 1
},
// bot
{
0, hei - thic,
wid - 1, hei - 1
},
};
for (int i = 0; i < 4; i++) {
ssd1306_fillRect( ssd1306_fillRect(
ofsx + xx + 1, ofsx + rects[i][0],
ofsy + hei, ofsy + rects[i][1],
ofsx + wid - 2, ofsx + rects[i][2],
ofsy + hei ofsy + rects[i][3]
); );
}
//
ssd1306_fillRect( ssd1306_fillRect(
ofsx + wid - 1, ofsx + thic + inpad,
ofsy, ofsy + thic + inpad,
ofsx + wid - 1, ofsx + (uint8_t)(((uint16_t)wid * (uint16_t)progress_percent)/(uint16_t)100) - thic - inpad - 1,
ofsy + hei ofsy + hei - thic - inpad - 1
); );
} }

@ -72,7 +72,7 @@ ISR(ADC_vect)
// If fail to reach target voltage in reasonable time, // If fail to reach target voltage in reasonable time,
// show weak battery icon and stop trying. // show weak battery icon and stop trying.
if ((timestamp_100ms - ts_cap_charged) > 10 && analog < ADCVAL_MINIMAL) { if ((timestamp_100ms - ts_cap_charged) > 10 && analog < ADCVAL_MINIMAL) {
status_weak_battery = true; is_weak_battery = true;
} }
} }
} else if (analog < ADCVAL_TURN_ON) { } else if (analog < ADCVAL_TURN_ON) {

@ -7,12 +7,10 @@
#include "high_voltage.h" #include "high_voltage.h"
#include "radiation.h" #include "radiation.h"
#include "user_interface.h" #include "user_interface.h"
#include "ssd1306.h"
/* globals */ /* globals */
volatile bool req_update_display = false; volatile bool req_update_display = false;
volatile bool status_weak_battery = false; volatile bool is_weak_battery = false;
volatile uint8_t disp_show_tick_mark = 0;
static void shutdown_due_to_weak_battery(); static void shutdown_due_to_weak_battery();
@ -22,6 +20,9 @@ void __attribute__((noreturn)) main()
init_user_interface(); init_user_interface();
show_loading_screen(0, true); show_loading_screen(0, true);
while(1){}
#if 0
init_timebase(); init_timebase();
init_radiation(); init_radiation();
@ -33,36 +34,25 @@ void __attribute__((noreturn)) main()
init_high_voltage(); init_high_voltage();
for (;;) { for (;;) {
// one tick makes the marker lit for 10 ms (more in practice, plus display ghosting latency) _delay_ms(100);
for (uint8_t i = 0; i < 10; i++) {
_delay_ms(10);
if (disp_show_tick_mark == 1) {
ssd1306_setColor(0xFFFF);
ssd1306_fillRect(124, 0, 127, 3);
disp_show_tick_mark = 2;
} else if (disp_show_tick_mark == 2) {
disp_show_tick_mark = 0;
ssd1306_setColor(0x0000);
ssd1306_fillRect(124, 0, 127, 3);
ssd1306_setColor(0xFFFF);
}
}
// check if redraw is needed // check if redraw is needed
// bool update_display = true; bool update_display = false;
// ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
// update_display = req_update_display; update_display = req_update_display;
// req_update_display = false; req_update_display = false;
// } }
// if (update_display) { if (update_display) {
show_current_radiation(); show_current_radiation();
// } }
if (status_weak_battery) { if (is_weak_battery) {
shutdown_due_to_weak_battery(); shutdown_due_to_weak_battery();
} }
} }
#endif
} }

@ -14,15 +14,15 @@
#include <math.h> #include <math.h>
#define MEAS_BIN_COUNT 120 #define MEAS_BIN_COUNT 120
typedef uint16_t ticks_t; typedef uint8_t ticks_t;
typedef uint8_t binnum_t; typedef uint8_t binnum_t;
#define TICKS_MAX 0xFFFF #define TICKS_MAX 255
#define NEEDED_TICKS_FOR_VALUE_DISPLAY 5 #define NEEDED_TICKS_FOR_VALUE_DISPLAY 5
#define TICKS_NEEDED_FOR_AUTORANGE 10 #define TICKS_NEEDED_FOR_AUTORANGE 15
uint32_t get_tick_count_in_bins(binnum_t bincount); uint16_t get_tick_count_in_bins(binnum_t bincount);
/// measurements in the last X seconds /// measurements in the last X seconds
static volatile ticks_t measurements[MEAS_BIN_COUNT]; static volatile ticks_t measurements[MEAS_BIN_COUNT];
@ -40,7 +40,6 @@ ISR(INT0_vect)
measurements[meas_bin]++; measurements[meas_bin]++;
} }
req_update_display = true; req_update_display = true;
disp_show_tick_mark = 1;
} }
void second_callback_irq() void second_callback_irq()
@ -83,10 +82,9 @@ void second_callback_irq()
} }
} }
void init_radiation() void init_radiation() {
{
// clear the measurement buffer // clear the measurement buffer
memset((void *) measurements, 0, sizeof(measurements)); memset((void*) measurements, 0, sizeof(measurements));
as_input(D2); as_input(D2);
@ -95,30 +93,34 @@ void init_radiation()
EIMSK = _BV(INT0); EIMSK = _BV(INT0);
} }
uint8_t rad_get_progress() uint8_t rad_get_progress() {
{ ticks_t ticks = get_tick_count_in_bins(num_live_bins);
uint16_t ticks = get_tick_count_in_bins(num_live_bins);
if (ticks >= NEEDED_TICKS_FOR_VALUE_DISPLAY) { if (ticks >= NEEDED_TICKS_FOR_VALUE_DISPLAY) {
return 100; return 100;
} }
return (((uint16_t) ticks * 100) / (uint16_t) NEEDED_TICKS_FOR_VALUE_DISPLAY); return (((uint16_t)ticks * 100) / (uint16_t)NEEDED_TICKS_FOR_VALUE_DISPLAY);
} }
uint32_t get_tick_count_in_bins(binnum_t bincount) uint16_t get_tick_count_in_bins(binnum_t bincount) {
{
if (bincount == 0) { if (bincount == 0) {
return 0; return 0;
} }
uint32_t all_ticks = 0; uint16_t all_ticks = 0;
ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
// going backwards // going backwards
binnum_t bin = meas_bin; binnum_t bin = meas_bin;
for (;;) { for (;;) {
all_ticks += (uint32_t) measurements[bin]; ticks_t in_bin = measurements[bin];
if ((0xFFFF - all_ticks) < in_bin) {
all_ticks = 0xFFFF;
} else {
all_ticks += in_bin;
}
if (bin == meas_oldest_bin) { if (bin == meas_oldest_bin) {
break; break;
@ -142,56 +144,37 @@ uint32_t get_tick_count_in_bins(binnum_t bincount)
return all_ticks; return all_ticks;
} }
void rad_get_reading(struct rad_results *out) uint16_t rad_get_cpm() {
{
if (!out) { return; }
// bins take 1 second // bins take 1 second
const float count = (float) get_tick_count_in_bins(num_observed_bins);
const float cpm = (count / (float) num_observed_bins) * 60.0f;
out->cpm_x10 = (uint32_t) roundf(cpm * 10.0f); float count = get_tick_count_in_bins(num_observed_bins);
float cpm = (count / (float)num_observed_bins) * 60.0f;
return (uint16_t) roundf(cpm * 10.0f);
}
uint16_t rad_get_usvh(uint8_t *out_decimals) {
float count = get_tick_count_in_bins(num_observed_bins);
float cpm = (count / (float)num_observed_bins) * 60.0f;
// https://sites.google.com/site/diygeigercounter/technical/gm-tubes-supported // https://sites.google.com/site/diygeigercounter/technical/gm-tubes-supported
const float usvh = (cpm / 153.8f); float usvh = (cpm / 153.8f);
if (usvh < 2.0f) {
out->danger_level = RAD_LEVEL_0_SAFE;
} else if (usvh < 10.0f) {
out->danger_level = RAD_LEVEL_1_ELEVATED;
} else if (usvh < 20.0f) {
out->danger_level = RAD_LEVEL_2_DANGER;
} else if (usvh < 1000.0f) {
out->danger_level = RAD_LEVEL_3_HIGH_DANGER;
} else {
out->danger_level = RAD_LEVEL_4_SEVERE;
}
// // for testing only
// if (usvh < 1.0f) {
// out->danger_level = RAD_LEVEL_0_SAFE;
// } else if (usvh < 3.0f) {
// out->danger_level = RAD_LEVEL_1_ELEVATED;
// } else if (usvh < 6.0f) {
// out->danger_level = RAD_LEVEL_2_DANGER;
// } else if (usvh < 9.0f) {
// out->danger_level = RAD_LEVEL_3_HIGH_DANGER;
// } else {
// out->danger_level = RAD_LEVEL_4_SEVERE;
// }
if (usvh < 99.0f) { if (usvh < 99.0f) {
out->usvh_decimals = 3; *out_decimals = 3;
out->usvh_num = (uint32_t) roundf(usvh * 1000.0f); return (uint16_t) roundf(usvh * 1000.0f);
} else if (usvh < 999.0f) {
out->usvh_decimals = 2;
out->usvh_num = (uint32_t) roundf(usvh * 100.0f);
} else if (usvh < 9999.0f) {
out->usvh_decimals = 1;
out->usvh_num = (uint32_t) roundf(usvh * 10.0f);
} else {
out->usvh_decimals = 0;
out->usvh_num = (uint32_t) roundf(usvh);
} }
if (usvh < 999.0f) {
*out_decimals = 2;
return (uint16_t) roundf(usvh * 100.0f);
}
if (usvh < 9999.0f) {
*out_decimals = 1;
return (uint16_t) roundf(usvh * 10.0f);
}
*out_decimals = 0;
return (uint16_t) roundf(usvh);
} }

@ -8,41 +8,14 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
/// Init the radiation measuring subsystem
void init_radiation(); void init_radiation();
/// Get progress 0-100, 100 = normal radiation reading resumed. /// get progress 0-100, 100 = normal radiation resumed
/// We need some number of ticks after boot so the averaging results
/// are somewhat accurate.
uint8_t rad_get_progress(); uint8_t rad_get_progress();
enum rad_danger {
// 0-2 uSv
RAD_LEVEL_0_SAFE = 0,
// 2-15 uSv
RAD_LEVEL_1_ELEVATED,
// 10-20 uSv
RAD_LEVEL_2_DANGER,
// 20-1000 uSv
RAD_LEVEL_3_HIGH_DANGER,
// 1000+ uSv ("evacuate immediately")
RAD_LEVEL_4_SEVERE,
RAD_LEVEL_MAX, uint16_t rad_get_cpm();
}; /// Get current radiation dose rate u uSv/h, x10 (one decimal place)
uint16_t rad_get_usvh(uint8_t *out_decimals);
struct rad_results {
/// CPM (usvh before conversion), x10 (one decimal place)
uint32_t cpm_x10;
/// Current radiation dose rate uSv/h, adjusting scaling to fit in 5 digits
uint32_t usvh_num;
/// The position of the decimal point (places from the right)
uint8_t usvh_decimals;
/// Danger level enum
enum rad_danger danger_level;
};
void rad_get_reading(struct rad_results *out);
#endif //CPROJ_RADIATION_H #endif //CPROJ_RADIATION_H

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save