-
-
Notifications
You must be signed in to change notification settings - Fork 192
Apps
It´s possible to change the function set of the watch by adding, removing or creating apps. The firmware contains a set of predefined apps which can be used by default.
Each app can be enabled / disabled via ZSWatch
-> Applications
in Kconfig
. Please note that specific apps do have specific requirements to get used.
The IAQ app depends on the usage of the IAQ driver. To use both you first have to download the Bosch BSEC 2 library from their website.
NOTE
You have to register yourself and you have to accept the license agreement to use this library.
After downloading the library you have to copy + paste the library directory in the ext_drivers
directory
- ext_drivers
- BSEC2
- ...
Now you have to change the following options in Kconfig
- Disable BME680 driver (
CONFIG_BME680=n
) - Select
Use Bosch BSEC library
(CONFIG_EXTERNAL_USE_BOSCH_BSEC=y
) - Select
Activate the application IAQ
(CONFIG_APPLICATIONS_USE_IAQ=y
) - Optional: Configure the BSEC driver under
ZSWatch
->Custom Drivers
->Drivers
I recommend watching this part of my presentation at Zephyr Developer Summit where I build a sample app.
Check out the sample application for the general app design. The main idea is each app have an <app_name>_app.c
file which registers the app, chooses icon and drives the logic for the app. Then there should be one or more files named for example <app_name>_ui.c
containing pure LVGL code with no dependencies to Zephyr or the watch software. The idea is that this UI code should be runnable in a LVGL simulator to speed up development of UI, however right now that's not set up yet. The <app_name>_app.c
will do all logic and call functions in <app_name>_ui.c
to update the UI accordingly.
Each application needs to have a way to close itself, for example a button, and then through callback tell the application_manager.c
to close the app:
When user clicks an app in the app picker:
-
application_manager.c
deletes it's UI elements and calls theapplication_start_fn
. -
<app_name>_app.c
will do necessary init and then call the<app_name>_ui.c
to draw the app UI. - User can now navigate arund and the application and do whatever.
When user for example presses a close button in the application:
- Typically a callback from the UI code in
<app_name>_ui.c
will call<app_name>_app.c
to tell that user requested to close the app.<app_name>_app.c
will notifyapplication_manager.c
that it want to close itself.application_manager.c
will then call<app_name>_app.c
application_stop_fn
and<app_name>_app.c
will tell UI to close then do necessary de-init and return. -
application_manager.c
will now draw the app picker again.
The application manager can also at any time close a running application by calling it's application_stop_fn
.