mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-18 10:53:17 +00:00
Update docs and CI retention (#124)
- Set artifact retention to 30 days - Update script dscription - Updated docs
This commit is contained in:
parent
f664de898d
commit
ca4e29ac0e
4
.github/actions/build-firmware/action.yml
vendored
4
.github/actions/build-firmware/action.yml
vendored
@ -31,10 +31,10 @@ runs:
|
||||
with:
|
||||
name: tactility-${{ inputs.board_id }}
|
||||
path: release/Tactility-${{ inputs.board_id }}
|
||||
retention-days: 5
|
||||
retention-days: 30
|
||||
- name: 'Upload Artifact: Release symbols'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: tactility-${{ inputs.board_id }}-symbols
|
||||
path: release/Tactility-${{ inputs.board_id }}-symbols
|
||||
retention-days: 5
|
||||
retention-days: 30
|
||||
|
||||
2
.github/actions/build-sdk/action.yml
vendored
2
.github/actions/build-sdk/action.yml
vendored
@ -31,4 +31,4 @@ runs:
|
||||
with:
|
||||
name: TactilitySDK-${{ inputs.arch }}
|
||||
path: release/TactilitySDK
|
||||
retention-days: 5
|
||||
retention-days: 30
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
#
|
||||
# Description: Releases the current build files as an SDK in the specified folder.
|
||||
# Description: Releases the current build files as an SDK in release/TactilitySDK
|
||||
# This deployment is used when compiling apps in ./ExternalApps
|
||||
#
|
||||
|
||||
|
||||
@ -1,12 +0,0 @@
|
||||
# Application Lifecycle
|
||||
|
||||
The app goes through these states:
|
||||
|
||||

|
||||
|
||||
Let's look at a scenario where an app launches another app:
|
||||
|
||||
1. `first` app starts: `first.onStart()` -> `first.onShow()`
|
||||
2. `second` app starts: `first.onHide()` -> `second.onStart()` -> `second.onShow()`
|
||||
3. `second` app stops: `second.onHide()` -> `second.onStop()` -> `first.onShow()`
|
||||
4. `first` app stops: `first.onHide()` -> `first.onStop()`
|
||||
@ -1,18 +0,0 @@
|
||||
# External Apps
|
||||
|
||||
## Building
|
||||
|
||||
Steps to build:
|
||||
|
||||
- Build the main project with `idf.py build` in the root folder of the project
|
||||
- Open a terminal at `ExternalApps/${AppName}`
|
||||
- The first time, run `./build.sh` (during consecutive runs, you can run `idf.py build`)
|
||||
- Find the executable `build/${AppName}.app.elf` and copy it to an SD card.
|
||||
|
||||
## Developing apps
|
||||
|
||||
Currently, only C is supported. The `TactilityC` project converts Tactility's C++ code into C.
|
||||
|
||||
Methods need to be manually exposed to the ELF apps, by editing `TactilityC/Source/TactilityC.cpp`
|
||||
|
||||
You can put apps in `Data/config` or `Data/assets` during development, because putting it on an SD card takes more effort.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 18 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 KiB |
136
README.md
136
README.md
@ -2,140 +2,20 @@
|
||||
|
||||
Tactility is an operating system that is focusing on the ESP32 microcontroller.
|
||||
|
||||
See [https://tactility.bytewelder.com](https://tactility.bytewelder.com) for more information.
|
||||
|
||||
Status: pre-release
|
||||
|
||||
 
|
||||
|
||||
**Status: Alpha**
|
||||
You can run built-in apps or start them from an SD card:
|
||||
|
||||
Next to desktop functionality, Tactility makes it easy to manage system settings:
|
||||
 
|
||||
|
||||
 
|
||||
It's easy to manage system settings:
|
||||
|
||||
There are also built-in apps:
|
||||
|
||||
 
|
||||
|
||||
Play with the built-in apps or build your own! Use one of the supported devices or set up the drivers for your own hardware platform.
|
||||
|
||||
Noteworthy features:
|
||||
- Touch UI capabilities (via LVGL) with support for input devices such as keyboard, trackable and more.
|
||||
- Run apps and services.
|
||||
- Run external apps from SD card. (limited APIs available, for now)
|
||||
- Basic applications to boost productivity, such as a Wi-Fi connectivity and I2C.
|
||||
- Includes a PC simulator build target to speed up development.
|
||||
|
||||
Requirements:
|
||||
- ESP32 (any?)
|
||||
- [esp-idf 5.3](https://docs.espressif.com/projects/esp-idf/en/release-v5.3/esp32/get-started/index.html) or a newer v5.3.x
|
||||
- (for PC simulator) SDL2 library, including SDL image
|
||||
|
||||
## Making apps is easy!
|
||||
|
||||
The app manifest provides basic information like the application name.
|
||||
It also describes the [app lifecycle](Documentation/app-lifecycle.md):
|
||||
It tells Tactility which functions need to be called when the app is started/shown/etc.
|
||||
|
||||
UI is created with [lvgl](https://github.com/lvgl/lvgl) which has lots of [widgets](https://docs.lvgl.io/9.0/widgets/index.html)!
|
||||
Creating a touch-capable UI is [easy](https://docs.lvgl.io/9.0/get-started/quick-overview.html) and doesn't require your own render loop!
|
||||
|
||||
```C++
|
||||
static void onShow(tt::app::AppContext context, lv_obj_t* parent) {
|
||||
// Default toolbar with app name and close button
|
||||
lv_obj_t* toolbar = tt::lvgl::toolbar_create(parent, context);
|
||||
lv_obj_align(toolbar, LV_ALIGN_TOP_MID, 0, 0);
|
||||
|
||||
// Label widget
|
||||
lv_obj_t* label = lv_label_create(parent);
|
||||
lv_label_set_text(label, "Hello, world!");
|
||||
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
||||
// Widgets are auto-removed from the parent when the app is closed
|
||||
}
|
||||
|
||||
extern const tt::app::AppManifest manifest = {
|
||||
.id = "HelloWorld", // Used to identify and start an app
|
||||
.name = "Hello World", // Shown on the desktop and app's toolbar
|
||||
.onShow = onShow // A minimal setup sets the onShow() function
|
||||
};
|
||||
```
|
||||
|
||||

|
||||
|
||||
## Supported Hardware
|
||||
|
||||
Any ESP32 device with a touchscreen should be able to run Tactility,
|
||||
because LVGL is set up in a platform-agnostic manner.
|
||||
Implementing drivers can take some effort, so Tactility provides support for several devices.
|
||||
|
||||
Predefined configurations are available for:
|
||||
|
||||
| Device | Screen&Touch | SD card | Power | Other |
|
||||
|---------------------------------|--------------|---------|-------|----------|
|
||||
| [LilyGo T-Deck Plus][tdeckplus] | ✅ | ✅ | ⏳ | Keyboard |
|
||||
| [LilyGo T-Deck][tdeck] | ✅ | ✅ | | Keyboard |
|
||||
| [M5Stack Core2][m5stack] | ✅ | ✅ | ✅ | |
|
||||
| [M5Stack CoreS3][m5stack] | ✅ | ✅ | ✅ | |
|
||||
| Yellow Board 2432S024C (\*) | ✅ | ✅ | | |
|
||||
|
||||
- ✅: Capable and implemented
|
||||
- ⏳: Capable but not yet implemented
|
||||
- ❌: Not capable
|
||||
|
||||
(*) Note: Only the capacitive version is supported. See AliExpress [here][2432s024c_1] and [here][2432s024c_2].
|
||||
|
||||
[tdeck]: https://www.lilygo.cc/products/t-deck
|
||||
[tdeckplus]: https://lilygo.cc/products/t-deck-plus
|
||||
[2432s024c_1]: https://www.aliexpress.com/item/1005005902429049.html
|
||||
[2432s024c_2]: https://www.aliexpress.com/item/1005005865107357.html
|
||||
[m5stack]: https://m5stack.com/
|
||||
|
||||
## Guide
|
||||
|
||||
### Cloning from git
|
||||
|
||||
Ensure you clone the repository including the submodules! For example:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules -j8 https://github.com/ByteWelder/Tactility.git
|
||||
```
|
||||
|
||||
### Build environment setup
|
||||
|
||||
Ensure you have [esp-idf 5.3](https://docs.espressif.com/projects/esp-idf/en/release-v5.3/esp32/get-started/index.html) installed, then select the correct device:
|
||||
|
||||
Copy the `sdkconfig.board.YOUR_BOARD` into `sdkconfig`. Use `sdkconfig.defaults` if you are setting up a custom board.
|
||||
|
||||
### Building firmware
|
||||
|
||||
Building for ESP32(\*) or PC:
|
||||
|
||||
```bash
|
||||
idf.py build
|
||||
```
|
||||
|
||||
Flashing ESP32:
|
||||
|
||||
```bash
|
||||
idf.py flash monitor
|
||||
```
|
||||
|
||||
(\*) The build scripts will detect if ESP-IDF is available. They will adapt if you ran `${IDF_PATH}/export.sh`
|
||||
|
||||
### Development
|
||||
|
||||
Take a look at the [App Lifecycle](Documentation/app-lifecycle.md) or the [dependency diagram](Documentation/project-structure.puml) (this uses [PlantUML](https://plantuml.com)).
|
||||
|
||||
Directories explained:
|
||||
|
||||
- `App`: The application/firmware example project
|
||||
- `Boards`: Contains board configuration projects with drivers (and simulator)
|
||||
- `Tactility`: The main application platform code
|
||||
- `TactilityC`: C wrappers for making side-loaded apps (C++ is not supported yet)
|
||||
- `TactilityHeadless`: Service framework and default services.
|
||||
- `TactilityCore`: Core functionality regarding threads, stdlib, etc.
|
||||
- `Libraries`: Contains a mix of regular libraries and ESP modules
|
||||
|
||||
Until there is proper documentation, here are some pointers:
|
||||
 
|
||||
|
||||
## License
|
||||
|
||||
[GNU General Public License Version 3](LICENSE.md)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user