Skip to content

Commit

Permalink
Notification rework
Browse files Browse the repository at this point in the history
commit d8e3d38
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Dec 5 09:22:26 2023 +0100

    - Fix wrong include in 'trivia_app.c'
    - Add lost code for 'trivia_app'
    - Add lost code for time zone settings

commit 1e348b2
Merge: 6024526 4475a74
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Dec 5 09:09:37 2023 +0100

    Merge branch 'main' into BLE_enhancements#124

commit 6024526
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Thu Nov 30 21:47:59 2023 +0100

    - Fixes from PR

commit a6bbcd9
Merge: 67abc93 ced8bfe
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sun Nov 26 23:06:25 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 67abc93
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sun Nov 26 22:08:40 2023 +0100

    - Update documentation

commit afbcdab
Merge: a57561d 8fc270c
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sun Nov 26 19:12:02 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit a57561d
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sat Nov 25 23:56:54 2023 +0100

    Notifications app:
    - Add button to clear all notifications
    - Replace text area with label to prevent a focus on the body
    - Fix a bug where the last notification out of many can not be removed when the removal starts not at the bottom
    - Add "Now" string for notifications with an age of less than 1 minute instead of showing the seconds
    - Add notification for WhatsApp

    Notification manager:
    - Add notification remove channel for ZBUS

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit 9fec3c9
Author: ldab <l.bispo@live.com>
Date:   Sat Nov 25 18:43:10 2023 +0100

    remove callback from ANCS

commit 42a1c4d
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sat Nov 25 17:23:24 2023 +0100

    Notifications app:
    - Add long press to remove a notification
    - Add scrolling with animation when notification is removed
    - Convert the age into a better time format
    - Fix crash when closing notification app with at least one active notification
    - Set initial time when building a notification instead setting it to 0
    - Change font size for notification body from 14 to 12

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit eea1e0c
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Sat Nov 25 10:48:46 2023 +0100

    BLE:
    - Remove connected and disconnected event

    Notification manager:
    - Add ZBUS listener to keep track about new notifications
    - Add missing value check for "num_notifications" to prevent boundary issues with the notification buffer

    Notifications:
    - Rework UI
    - Add timestamp field
    - Add log levels
    - Add notification source "COMMON_MESSENGER", "WHATSAPP" and "COMMON_MAIL"

    IAQ app:
    - Add log levels

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit f1927bb
Merge: a2258ce 7ab0a8c
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Thu Nov 23 09:09:24 2023 +0100

    Notifications:
    - Rework UI

commit a2258ce
Merge: 46525c8 5022651
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Wed Nov 22 22:19:47 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 46525c8
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Wed Nov 22 11:41:35 2023 +0100

    Notification:
    - Add new design for Notifications

commit 9f99065
Merge: d339979 3f0a692
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 22:21:07 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit d339979
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 17:51:29 2023 +0100

    Misc:
    - Format code
    - Changes from PR

    Notifications:
    - Improve scrolling
    - Add option to add notifications when notification app is active

    BLE:

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit 75458fc
Merge: 795f7b7 42b1d0d
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 17:48:38 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 795f7b7
Merge: 284076c 7f1d52e
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 16:42:44 2023 +0100

    Merge branch 'jkra_ble_rx_thread' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 7f1d52e
Author: Jakob Krantz <mail@jakobkrantz.se>
Date:   Tue Nov 21 15:35:31 2023 +0100

    Use system workqueue for BLE RX.

    Saves us bunch of RAM not having a seperate on.
    Helps with thread safety.

commit 284076c
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 15:38:44 2023 +0100

    BLE:
    - Move Gadgetbridge related code into separate source file

commit 4933d8a
Merge: 3114dee 03d6dcd
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 15:11:58 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 3114dee
Merge: 671044e bc6365e
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Tue Nov 21 09:06:44 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 671044e
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 19:47:12 2023 +0100

    BLE:
    - Add BLE connected and disconnected ZBUS event
    - Replace "printk" in "ble_comm" with log output
    - Remove new line from log output
    - Add ZBUS instead of BLE data callback

    Misc:
    - Replace include guard for managers with "pragma once"
    - Add docu header to manager functions
    - Format code

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit 26b3046
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 19:16:45 2023 +0100

    BLE:
    - Update device information in Device Information Service

    Misc:
    - Add wildcard for debug directory to gitignore to ignore patterns like "debug_rev_1" etc.

commit 59a76a5
Merge: 90017af 6b5b2d0
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 18:54:06 2023 +0100

    Merge branch 'main' of github.com:jakkra/ZSWatch into BLE_enhancements#124

commit 90017af
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 17:15:49 2023 +0100

    - Simplify code for delayable work

commit cf556e2
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 17:07:43 2023 +0100

    - Fix style in battery app

commit 80163b1
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 15:52:29 2023 +0100

    - Run "west format"
    - Fix compile errors because of multible log tags in Bluetooth code
    - Undo auto insertion in settings file by VS Code
    - Change log level for notification data to debug

commit 2df14f3
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 10:43:00 2023 +0100

    BLE:
    - Add log level for Bluetooth code
    - Replace include guards with "pragma once"

    Template app:
    - Add log level for template app

    Settings app:
    - Add log level for settings app

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>

commit 612ab22
Author: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
Date:   Mon Nov 20 10:27:38 2023 +0100

    BLE:
    - Add "Subject" field to notification object
    - Remove length check for notification fields, because empty fields have a length of 0 which causes issues with the string termination

    main:
    - Rename log level for main in Kconfig
    - Add log level for main application
    - Use short payload of a notification instead of the long version

    Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
  • Loading branch information
Kampi authored and jakkra committed Dec 5, 2023
1 parent 4475a74 commit ba7a1e2
Show file tree
Hide file tree
Showing 55 changed files with 3,788 additions and 1,013 deletions.
5 changes: 3 additions & 2 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
debug
debug*
release*

# Local History for Visual Studio Code
.history/
Expand All @@ -13,4 +14,4 @@ debug
!.vscode/extensions.json
!.vscode/*.code-snippets

src/ext_drivers/BSEC2
src/ext_drivers/BSEC2
3 changes: 2 additions & 1 deletion app/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,6 @@ menu "ZSWatch"
default n
help
"Disable encryption for BLE connection (pairing/bonding). Used only for debugging purposes."

endmenu

menu "SPI RTT Flash Loader"
Expand Down Expand Up @@ -226,6 +225,8 @@ menu "ZSWatch"
rsource "src/ble/Kconfig"
rsource "src/applications/settings/Kconfig"
rsource "src/applications/template/Kconfig"
rsource "src/applications/iaq/Kconfig"
rsource "src/applications/notification/Kconfig"
rsource "src/applications/trivia/Kconfig"
rsource "src/applications/ppt_remote/Kconfig"
endmenu
Expand Down
3 changes: 2 additions & 1 deletion app/boards/arm/zswatch_nrf5340/zswatch_nrf5340_cpuapp_1.conf
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
CONFIG_ZSWATCH_PCB_REV=1
CONFIG_ZSWATCH_PCB_REV=1
CONFIG_BT_DIS_HW_REV_STR="1"
3 changes: 2 additions & 1 deletion app/boards/arm/zswatch_nrf5340/zswatch_nrf5340_cpuapp_2.conf
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
CONFIG_ZSWATCH_PCB_REV=2
CONFIG_ZSWATCH_PCB_REV=2
CONFIG_BT_DIS_HW_REV_STR="2"
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
CONFIG_ZSWATCH_PCB_REV=3
CONFIG_BT_DIS_HW_REV_STR="3"

#---------------
# FLASH
Expand Down
3 changes: 2 additions & 1 deletion app/boards/debug.conf
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ CONFIG_LV_PERF_MONITOR_ALIGN_RIGHT_MID=y
CONFIG_ZSW_APP_LOG_LEVEL_WRN=y
CONFIG_ZSW_SENSORS_LOG_LEVEL_WRN=y
CONFIG_ZSW_BLE_LOG_LEVEL_WRN=y
CONFIG_ZSW_SETTINGS_APP_LOG_LEVEL_WRN=y
CONFIG_ZSW_SETTINGS_APP_LOG_LEVEL_WRN=y
CONFIG_ZSW_APP_LOG_LEVEL_DBG=y
7 changes: 6 additions & 1 deletion app/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ CONFIG_LV_USE_TILEVIEW=n
CONFIG_LV_USE_WIN=n
CONFIG_LV_USE_SPAN=n
CONFIG_LV_USE_USER_DATA=y
CONFIG_LV_USE_TEXTAREA=y

CONFIG_LV_COLOR_16_SWAP=y
CONFIG_LV_COLOR_DEPTH_16=y
Expand Down Expand Up @@ -125,6 +126,8 @@ CONFIG_BT_SMP=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DIS=y
CONFIG_BT_DIS_PNP=n
CONFIG_BT_DIS_HW_REV=y
CONFIG_BT_DIS_MODEL="ZSWatch"
CONFIG_BT_BAS=y
CONFIG_BT_HRS=n
CONFIG_BT_DEVICE_NAME="ZSWatch"
Expand Down Expand Up @@ -201,4 +204,6 @@ CONFIG_BMI270_PLUS_TRIGGER_GLOBAL_THREAD=y

# Uncomment for BME688 IAQ using Bosch BSEC
#CONFIG_BME680=n
#CONFIG_EXTERNAL_USE_BOSCH_BSEC=y
#CONFIG_EXTERNAL_USE_BOSCH_BSEC=y

CONFIG_RESET_ON_FATAL_ERROR=n
3 changes: 3 additions & 0 deletions app/src/applications/iaq/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module = IAQ_APP
module-str = IAQ_APP
source "subsys/logging/Kconfig.template.log_config"
2 changes: 1 addition & 1 deletion app/src/applications/iaq/iaq.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include "sensors/zsw_environment_sensor.h"

LV_IMG_DECLARE(move);
LOG_MODULE_REGISTER(iaq_app, LOG_LEVEL_DBG);
LOG_MODULE_REGISTER(iaq_app, CONFIG_IAQ_APP_LOG_LEVEL);

static void iaq_app_start(lv_obj_t *root, lv_group_t *group);
static void iaq_app_stop(void);
Expand Down
2 changes: 1 addition & 1 deletion app/src/applications/music_control/music_control_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#include "music_control_ui.h"
#include "ble/ble_comm.h"
#include "events/ble_data_event.h"
#include "events/ble_event.h"
#include "events/music_event.h"
#include "managers/zsw_app_manager.h"

Expand Down
2 changes: 2 additions & 0 deletions app/src/applications/notification/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
autosave
backup
1 change: 1 addition & 0 deletions app/src/applications/notification/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
FILE(GLOB app_sources *.c)
target_sources(app PRIVATE ${app_sources})
add_subdirectory(ui_export)
3 changes: 3 additions & 0 deletions app/src/applications/notification/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module = NOTIFICATION_APP
module-str = NOTIFICATION_APP
source "subsys/logging/Kconfig.template.log_config"
53 changes: 42 additions & 11 deletions app/src/applications/notification/notification_app.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
#include <zephyr/kernel.h>
#include <zephyr/init.h>
#include <zephyr/kernel.h>
#include <zephyr/zbus/zbus.h>
#include <zephyr/logging/log.h>

#include "notification_ui.h"
#include "managers/zsw_notification_manager.h"
#include "ui_export/notification_ui.h"
#include "events/zsw_notification_event.h"
#include "managers/zsw_app_manager.h"
#include "managers/zsw_notification_manager.h"

LOG_MODULE_REGISTER(notification_app, CONFIG_NOTIFICATION_APP_LOG_LEVEL);

// Functions needed for all applications
static void notification_app_start(lv_obj_t *root, lv_group_t *group);
static void notification_app_stop(void);
static void notification_app_zbus_notification_callback(const struct zbus_channel *chan);
static void notification_app_zbus_notification_remove_callback(const struct zbus_channel *chan);

ZBUS_LISTENER_DEFINE(notification_app_lis, notification_app_zbus_notification_callback);
ZBUS_LISTENER_DEFINE(notification_app_remove_lis, notification_app_zbus_notification_remove_callback);

static lv_group_t *notification_group;

static application_t app = {
.name = "Notification",
Expand All @@ -16,26 +27,46 @@ static application_t app = {
.stop_func = notification_app_stop
};

static void notification_app_zbus_notification_callback(const struct zbus_channel *chan)
{
zsw_not_mngr_notification_t *not;

LOG_DBG("New notification available");

not = zsw_notification_manager_get_newest();
notifications_ui_add_notification(not, notification_group);
}

static void notification_app_zbus_notification_remove_callback(const struct zbus_channel *chan)
{
const struct zsw_notification_remove_event *evt = zbus_chan_const_msg(chan);
uint32_t id = evt->notification.id;

LOG_DBG("Remove notification with ID %u", id);
notifications_ui_remove_notification(id);
}

static void on_notification_page_notification_close(uint32_t not_id)
{
// TODO send to phone that the notification was read.
// Inform the notification manager to remove the notification.
zsw_notification_manager_remove(not_id);
}


static void notification_app_start(lv_obj_t *root, lv_group_t *group)
{
int num_unread;
zsw_not_mngr_notification_t notifications[NOTIFICATION_MANAGER_MAX_STORED];
zsw_not_mngr_notification_t notifications[ZSW_NOTIFICATION_MGR_MAX_STORED];

notification_group = group;

zsw_notification_manager_get_all(notifications, &num_unread);
notifications_page_init(on_notification_page_notification_close);
notifications_page_create(notifications, num_unread, group);
notifications_ui_page_init(on_notification_page_notification_close);
notifications_ui_page_create(notifications, num_unread, notification_group);
}

static void notification_app_stop(void)
{
notifications_page_close();
notifications_ui_page_close();
}

static int notification_app_add(void)
Expand All @@ -45,4 +76,4 @@ static int notification_app_add(void)
return 0;
}

SYS_INIT(notification_app_add, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);
SYS_INIT(notification_app_add, APPLICATION, CONFIG_APPLICATION_INIT_PRIORITY);
144 changes: 0 additions & 144 deletions app/src/applications/notification/notification_ui.c

This file was deleted.

17 changes: 0 additions & 17 deletions app/src/applications/notification/notification_ui.h

This file was deleted.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions app/src/applications/notification/project/notification.sll
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name":"SquareLine_Project.spj","depth":2,"width":240,"height":240,"rotation":0,"offset_x":0,"offset_y":0,"shape":"CIRCLE","multilang":"DISABLE","description":"","board":"Arduino with TFT_eSPI","board_version":"v1.1.0","editor_version":"1.3.2","image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADwAPADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3aiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBk00VtA808iRRICzu7AKo9ST0rl3+JPhGN2RtYUkHB2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AOLoA+eaK+hv+FZ+EP8AoEf+TMv/AMXR/wAKz8If9Aj/AMmZf/i6APnmivob/hWfhD/oEf8AkzL/APF0f8Kz8If9Aj/yZl/+LoA+eaK+hv8AhWfhD/oEf+TMv/xdH/Cs/CH/AECP/JmX/wCLoA+eaK+hv+FZ+EP+gR/5My//ABdH/Cs/CH/QI/8AJmX/AOLoA+eaK+hv+FZ+EP8AoEf+TMv/AMXR/wAKz8If9Aj/AMmZf/i6APnmivob/hWfhD/oEf8AkzL/APF0f8Kz8If9Aj/yZl/+LoA+eaK+hv8AhWfhD/oEf+TMv/xdH/Cs/CH/AECP/JmX/wCLoA+eaK+hv+FZ+EP+gR/5My//ABdH/Cs/CH/QI/8AJmX/AOLoA+ea9j+DFhcQadql9IhWG5eNIiRjds3ZI9vmA/A10qfDbwjG6uujqSDkbp5WH5FsGuohhitoEhgjSKJAFREUBVHoAOlMY+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q==","force_export_images":false,"flat_export":false,"pointfilter":false,"theme_simplified":false,"theme_dark":false,"theme_color1":5,"theme_color2":0,"exportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification\\ui_export","projectExportFolderPath":"F:\\Git\\ZSWatch\\app\\src\\applications\\notification","backup_cnt":158,"autosave_cnt":0,"lvgl_version":"8.3.6","callfuncsexport":"C_FILE","lvgl_include_path":""}
Loading

0 comments on commit ba7a1e2

Please sign in to comment.