Display drivers for pwnagotchi

<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Display support for the following screens:
- [Pimoroni GFX Hat](https://shop.pimoroni.com/products/gfx-hat?variant=12828343631955):
ui.display.type = "gfxhat"
Contrast and Backlight color can be imported from config.toml:
ui.display.contrast = 40
ui.display.blcolor = "olive"
Available backlight colors:
white, grey, maroon, red, purple, fuchsia, green,
lime, olive, yellow, navy, blue, teal, aqua
- [Adafruit miniPiTFT](https://www.adafruit.com/product/4484):
ui.display.type = "minipitft"
- [Adafruit miniPiTFT2](https://www.adafruit.com/product/4393):
ui.display.type = "minipitft2"
- [ArgonPod](https://argon40.com/products/pod-display-2-8inch):
ui.display.type = "argonpod"
- [DisplayHatMini](https://shop.pimoroni.com/products/display-hat-mini?variant=39496084717651):
Driver updated to fix issues
- I2C Oled:
Default I2C address changed to 0x3C, because most boards are coming with it by default.
Can be modified in config
ui.display.type = "i2coled"
ui.display.i2c_addr = 0x3C
ui.display.width = 128
ui.display.height = 64

## Motivation and Context
Future plan for LCD and OLED screens:
Change from the pwnagotchis hw libraries for drivers to LumaOLED LumaLCD packages.
Luma Core: https://github.com/rm-hull/luma.core
Luma LCD: https://github.com/rm-hull/luma.lcd
Luma OLED: https://github.com/rm-hull/luma.oled
It has the most used LCD and OLED drivers ready, and adding new screens could be easier in the future.

## How Has This Been Tested?
Except the argonpod and minipitft2 all screens were tested on previous builds,
should work in 2.9.2, but before release I would like to test it with an image.

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [x] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [x] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
- [x] I've read the [CONTRIBUTION](https://github.com/evilsocket/pwnagotchi/blob/master/CONTRIBUTING.md) guide
- [x] I have signed-off my commits with `git commit -s`
This commit is contained in:
RasTacsko
2024-11-25 17:37:21 +01:00
parent d21c2cb30c
commit 131bfc4c1c
21 changed files with 2649 additions and 30 deletions

View File

@ -309,9 +309,21 @@ def load_config(args):
elif config['ui']['display']['type'] in ('pirateaudio'):
config['ui']['display']['type'] = 'pirateaudio'
elif config['ui']['display']['type'] in ('gfxhat'):
config['ui']['display']['type'] = 'gfxhat'
elif config['ui']['display']['type'] in ('pitft'):
config['ui']['display']['type'] = 'pitft'
elif config['ui']['display']['type'] in ('argonpod'):
config['ui']['display']['type'] = 'argonpod'
elif config['ui']['display']['type'] in ('minipitft'):
config['ui']['display']['type'] = 'minipitft'
elif config['ui']['display']['type'] in ('minipitft2'):
config['ui']['display']['type'] = 'minipitft2'
elif config['ui']['display']['type'] in ('tftbonnet'):
config['ui']['display']['type'] = 'tftbonnet'