CMake watch faces selection
Improve wording and replace "watchface" by "watch face" in Apps.md. Improve CMake readability regarding watch face selection Co-authored-by: Reinhold Gschweicher <pyro4hell@gmail.com>
This commit is contained in:
parent
72c992c84e
commit
25b3e2461d
2 changed files with 20 additions and 13 deletions
|
@ -35,20 +35,20 @@ that will call the method `Refresh()` periodically.
|
||||||
|
|
||||||
## App types
|
## App types
|
||||||
|
|
||||||
There are basically 3 types of applications : **system** apps and **user** apps and **watchfaces**.
|
There are basically 3 types of applications : **system** apps and **user** apps and **watch faces**.
|
||||||
|
|
||||||
**System** applications are always built into InfiniTime, and InfiniTime cannot work properly without those apps.
|
**System** applications are always built into InfiniTime, and InfiniTime cannot work properly without those apps.
|
||||||
The watchfaces, settings, notifications and the application launcher are examples of such system applications.
|
The watch faces, settings, notifications and the application launcher are examples of such system applications.
|
||||||
|
|
||||||
**User** applications are optionally built into the firmware. They extend the functionalities of the system.
|
**User** applications are optionally built into the firmware. They extend the functionalities of the system.
|
||||||
|
|
||||||
**Watchfaces** are very similar to the **user** apps, they are optional, but at least one must be built into the firmware.
|
**Watch faces** are very similar to the **user** apps, they are optional, but at least one must be built into the firmware.
|
||||||
|
|
||||||
The distinction between **system** apps, **user** apps and watchfaces allows for more flexibility and customization.
|
The distinction between **system** apps, **user** apps and watch faces allows for more flexibility and customization.
|
||||||
This allows to easily select which user applications and watchfaces must be built into the firmware
|
This allows to easily select which user applications and watch faces must be built into the firmware
|
||||||
without overflowing the system memory.
|
without overflowing the system memory.
|
||||||
|
|
||||||
## Apps and watchfaces initialization
|
## Apps and watch faces initialization
|
||||||
|
|
||||||
Apps are created by `DisplayApp` in `DisplayApp::LoadScreen()`.
|
Apps are created by `DisplayApp` in `DisplayApp::LoadScreen()`.
|
||||||
This method simply call the creates an instance of the class that corresponds to the app specified in parameters.
|
This method simply call the creates an instance of the class that corresponds to the app specified in parameters.
|
||||||
|
@ -57,7 +57,7 @@ The constructor of **system** apps is called directly. If the application is a *
|
||||||
the corresponding `AppDescription` is first retrieved from `userApps`
|
the corresponding `AppDescription` is first retrieved from `userApps`
|
||||||
and then the function `create` is called to create an instance of the app.
|
and then the function `create` is called to create an instance of the app.
|
||||||
|
|
||||||
Watchfaces are handled in a very similar way than the **user** apps : they are created by `DisplayApp` in the method `DisplayApp::LoadScreen()` when the application type is `Apps::Clock`.
|
Watch faces are handled in a very similar way as the **user** apps : they are created by `DisplayApp` in the method `DisplayApp::LoadScreen()` when the application type is `Apps::Clock`.
|
||||||
|
|
||||||
## User application selection at build time
|
## User application selection at build time
|
||||||
|
|
||||||
|
@ -89,11 +89,11 @@ struct AppTraits<Apps::Alarm> {
|
||||||
This array `userApps` is used by `DisplayApp` to create the applications and the `AppLauncher`
|
This array `userApps` is used by `DisplayApp` to create the applications and the `AppLauncher`
|
||||||
to list all available applications.
|
to list all available applications.
|
||||||
|
|
||||||
## Watchface selection at build time
|
## Watch face selection at build time
|
||||||
|
|
||||||
The list of available watchface is also generated at build time by the `consteval`
|
The list of available watch faces is also generated at build time by the `consteval`
|
||||||
function `CreateWatchFaceDescriptions()` in `UserApps.h` in the same way as the **user** apps.
|
function `CreateWatchFaceDescriptions()` in `UserApps.h` in the same way as the **user** apps.
|
||||||
Watchfaces must declare a `WatchFaceTraits` so that the corresponding `WatchFaceDescription` can be generated.
|
Watch faces must declare a `WatchFaceTraits` so that the corresponding `WatchFaceDescription` can be generated.
|
||||||
Here is an example of `WatchFaceTraits`:
|
Here is an example of `WatchFaceTraits`:
|
||||||
```c++
|
```c++
|
||||||
template <>
|
template <>
|
||||||
|
@ -198,9 +198,10 @@ Ex : build the firmware with 3 user application : Alarm, Timer and MyApp (the ap
|
||||||
$ cmake ... -DENABLE_USERAPPS="Apps::Alarm, Apps::Timer, Apps::MyApp" ...
|
$ cmake ... -DENABLE_USERAPPS="Apps::Alarm, Apps::Timer, Apps::MyApp" ...
|
||||||
```
|
```
|
||||||
|
|
||||||
Similarly, the list of watchfaces is also generated by CMake, so you need to add the variable `ENABLE_WATCHFACES` to the command line of CMake. It must be set with the list of watchfaces that will be built into the firmware.
|
Similarly, the list of watch faces is also generated by CMake, so you need to add the variable `ENABLE_WATCHFACES` to the command line of CMake.
|
||||||
|
It must be set with the comma separated list of watch faces that will be built into the firmware.
|
||||||
|
|
||||||
Ex: build the firmware with 3 watchfaces : Analog, PineTimeStyle and Infineat:
|
Ex: build the firmware with 3 watch faces : Analog, PineTimeStyle and Infineat:
|
||||||
|
|
||||||
```cmake
|
```cmake
|
||||||
$ cmake ... -DENABLE_WATCHFACES="WatchFace::Analog,WatchFace::PineTimeStyle,WatchFace::Infineat" ...
|
$ cmake ... -DENABLE_WATCHFACES="WatchFace::Analog,WatchFace::PineTimeStyle,WatchFace::Infineat" ...
|
||||||
|
|
|
@ -20,7 +20,13 @@ endif ()
|
||||||
if(DEFINED ENABLE_WATCHFACES)
|
if(DEFINED ENABLE_WATCHFACES)
|
||||||
set(WATCHFACE_TYPES ${ENABLE_WATCHFACES} CACHE STRING "List of watch faces to build into the firmware")
|
set(WATCHFACE_TYPES ${ENABLE_WATCHFACES} CACHE STRING "List of watch faces to build into the firmware")
|
||||||
else()
|
else()
|
||||||
set(WATCHFACE_TYPES "WatchFace::Digital, WatchFace::Analog, WatchFace::PineTimeStyle, WatchFace::Terminal, WatchFace::Infineat, WatchFace::CasioStyleG7710" CACHE STRING "List of watch faces to build into the firmware")
|
set(DEFAULT_WATCHFACE_TYPES "WatchFace::Digital")
|
||||||
|
set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Analog")
|
||||||
|
set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::PineTimeStyle")
|
||||||
|
set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Terminal")
|
||||||
|
set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::Infineat")
|
||||||
|
set(DEFAULT_WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}, WatchFace::CasioStyleG7710")
|
||||||
|
set(WATCHFACE_TYPES "${DEFAULT_WATCHFACE_TYPES}" CACHE STRING "List of watch faces to build into the firmware")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_library(infinitime_apps INTERFACE)
|
add_library(infinitime_apps INTERFACE)
|
||||||
|
|
Loading…
Reference in a new issue