C++ conversion (#80)

Converted project to C++
This commit is contained in:
Ken Van Hoeylandt
2024-11-22 20:26:08 +01:00
committed by GitHub
parent 6d80144e12
commit 85e26636a3
488 changed files with 6017 additions and 39466 deletions
+12
View File
@@ -0,0 +1,12 @@
# Application Lifecycle
The app goes through these states:
![app lifecycle state diagram](pics/app-lifecycle.png)
Let's look at a scenario where an app launches another app:
1. `first` app starts: `first.on_create()` -> `first.on_show()`
2. `second` app starts: `first.on_hide()` -> `second.on_create()` -> `second.on_show()`
3. `second` app stops: `second.on_hide()` -> `second.on_destroy()` -> `first.on_show()`
4. `first` app stops: `first.on_hide()` -> `first.on_destroy()`
+9
View File
@@ -0,0 +1,9 @@
@startuml
[*] --> on_create : app is started
on_create --> on_show : app becomes visible
on_show --> on_hide : app is no longer visible
on_hide --> on_destroy : app is being closed
on_destroy --> [*]
skinparam ranksep 25
skinparam padding 2
@enduml
+43
View File
@@ -0,0 +1,43 @@
# TODOs
- Update `view_port` to use `ViewPort` as handle externally and `ViewPortData` internally
- Create more unit tests for `tactility-core` and `tactility` (PC-only for now)
- Have a way to deinit LVGL drivers that are created from `HardwareConfig`
- Show a warning screen if firmware encryption or secure boot are off when saving WiFi credentials.
- Show a warning screen when a user plugs in the SD card on a device that only supports mounting at boot.
- Try out Waveshare S3 120MHz mode for PSRAM (see "enabling 120M PSRAM is necessary" in [docs](https://www.waveshare.com/wiki/ESP32-S3-Touch-LCD-4.3#Other_Notes))
- T-Deck has random sdcard SPI crashes due to sharing bus with screen SPI: make it use the LVGL lock for sdcard operations?
- Wi-Fi connect app should show info about connection result
- Check service/app id on registration to see if it is a duplicate id
- Fix screenshot app on ESP32: it currently blocks when allocating memory
- Localisation of texts
- Portrait support for GPIO app
- App lifecycle docs mention on_create/on_destroy but app lifecycle is on_start/on_stop
- Explore LVGL9's FreeRTOS functionality
- Explore LVGL9's ILI93414 driver for 2.4" Yellow Board
- Bug: in LVGL9 with M5Core2, crash when bottom item is clicked without scrolling first
- Publish firmwares with upload tool
- De-duplicate WiFi SSIDs.
- Move libs/M5 projects to boards/M5Shared
# Core Ideas
- Make a HAL? It would mainly be there to support PC development. It's a lot of effort for supporting what's effectively a dev-only feature.
- Support for displays with different DPI. Consider the layer-based system like on Android.
- If present, use LED to show boot status
- 2 wire speaker support
- tt_app_start() and similar functions as proxies for Loader app start/stop/etc.
- tt_app_set_result() for apps that need to return data to other apps (e.g. file selection)
- Wi-Fi using dispatcher to dispatch its main functionality to the dedicated Wi-Fi CPU core (to avoid main loop hack)
# App Improvement Ideas
- Sort desktop apps by name.
- Light/dark mode selection in Display settings app.
# App Ideas
- File viewer (images, text... binary?)
- BlueTooth keyboard app
- Chip 8 emulator
- BadUSB
- Discord bot
- IR transceiver app
- GPS app
- Investigate CSI https://stevenmhernandez.github.io/ESP32-CSI-Tool/
Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

+23
View File
@@ -0,0 +1,23 @@
@startuml
skinparam componentStyle uml1
[Tactility] as t
note right of t : to build and use graphical apps
[TactilityHeadless] as theadless
note right of theadless : to build and use background services
[TactilityCore] as tcore
note right of tcore : defines, data types, logging, async, etc.
package "Applications" {
[AppSim] as appsim
[AppEsp32] as appesp
}
note right of appesp : AppEsp depends on the board \n projects for configuration
[t] ..> [theadless]
[theadless] ..> [tcore]
[appsim] ..> [t]
[appesp] ..> [t]
@enduml