diff options
110 files changed, 1086 insertions, 665 deletions
@@ -5,6 +5,7 @@ CMakeFiles/ **/CMakeCache.txt cmake_install.cmake Makefile +build/ # Resulting binary files *.a @@ -47,6 +47,9 @@ As of now, here is the list of achievements of this project: ## Documentation +### Getting started + - [Flash, upgrade (OTA), time synchronization,...](doc/gettingStarted/gettingStarted.md) + ### Develop - [Generate the fonts and symbols](src/displayapp/fonts/Readme.md) diff --git a/doc/gettingStarted/dfuFile.png b/doc/gettingStarted/dfuFile.png Binary files differnew file mode 100644 index 00000000..f6d112e6 --- /dev/null +++ b/doc/gettingStarted/dfuFile.png diff --git a/doc/gettingStarted/gadgetbridge0.jpg b/doc/gettingStarted/gadgetbridge0.jpg Binary files differnew file mode 100644 index 00000000..7ea2e3cd --- /dev/null +++ b/doc/gettingStarted/gadgetbridge0.jpg diff --git a/doc/gettingStarted/gadgetbridge1.jpg b/doc/gettingStarted/gadgetbridge1.jpg Binary files differnew file mode 100644 index 00000000..470b0b3c --- /dev/null +++ b/doc/gettingStarted/gadgetbridge1.jpg diff --git a/doc/gettingStarted/gadgetbridge2.jpg b/doc/gettingStarted/gadgetbridge2.jpg Binary files differnew file mode 100644 index 00000000..8f75b232 --- /dev/null +++ b/doc/gettingStarted/gadgetbridge2.jpg diff --git a/doc/gettingStarted/gadgetbridge3.jpg b/doc/gettingStarted/gadgetbridge3.jpg Binary files differnew file mode 100644 index 00000000..cfb83f52 --- /dev/null +++ b/doc/gettingStarted/gadgetbridge3.jpg diff --git a/doc/gettingStarted/gadgetbridge4.jpg b/doc/gettingStarted/gadgetbridge4.jpg Binary files differnew file mode 100644 index 00000000..e41aff04 --- /dev/null +++ b/doc/gettingStarted/gadgetbridge4.jpg diff --git a/doc/gettingStarted/gadgetbridge5.jpg b/doc/gettingStarted/gadgetbridge5.jpg Binary files differnew file mode 100644 index 00000000..1ef9f779 --- /dev/null +++ b/doc/gettingStarted/gadgetbridge5.jpg diff --git a/doc/gettingStarted/gettingStarted.md b/doc/gettingStarted/gettingStarted.md new file mode 100644 index 00000000..a3aa49ab --- /dev/null +++ b/doc/gettingStarted/gettingStarted.md @@ -0,0 +1,101 @@ +# Flash and upgrade InfiniTime +If you just want to flash or upgrade InfiniTime on your PineTime, this page is for you! + +- [InfiniTime releases and versions](#infinitime-releases-and-versions) +- [How to upgrade Over-The-Air (OTA)](#how-to-upgrade-over-the-air-ota) + - [Using Gadgetbridge](#using-gadgetbridge) + - [Using NRFConnect](#Using-nrfconnect) +- [How to flash InfiniTime using the SWD interface](#how-to-flash-infinitime-using-the-swd-interface) + +## InfiniTime releases and versions +All releases of InfiniTime are available on the [release page of the GitHub repo](https://github.com/JF002/Pinetime/releases). + +Versions that are tagged as **RELEASE CANDIDATE** are pre-release versions, that are available for testing before actually releasing a new stable version. If you want to help us debug the project and provide stable versions to other user, you can use them. If you want stable and tested version, you should not flash these release candidate version. + +Release files are available under the *Assets* button. + +## How to upgrade Over-The-Air (OTA) +OTA is the easiest method to upgrade InfiniTime. Note that it's only possible is your PineTime is already running InfiniTime (>= 0.7.1). + +2 companion apps provide support for OTA : + - [Gadgetbridge](https://gadgetbridge.org/) (open source, runs on Android, [available on F-Droid](https://f-droid.org/packages/nodomain.freeyourgadget.gadgetbridge/)). + - [NRFConnect](https://www.nordicsemi.com/Software-and-tools/Development-Tools/nRF-Connect-for-mobile) (close source, runs on Android and iOS). + +Both applications need you to download the **DFU file** of InfiniTime. This file contains the new version of InfiniTime that will be flashed into your device. It's called **dfu-x.y.z.zip** (ex: dfu-0.9.0.zip) in the release note. + + +### Using Gadgetbridge +Launch Gadgetbridge and tap on the **"+"** button on the bottom right to add a new device: + + + +Wait for the scan to complete, your PineTime should be detected: + + + +Tap on it. Gadgdetbridge will pair and connect to your device: + + + +Now that Gadgetbridge is connected to your PineTime, use a file browser application (I'm using Seafile to browse my NAS) and browse to the DFU file (image-xxx.zip) you downloaded previously. Tap on it and open it using the Gadgetbridge application/firmware installer: + + + +Read carefully the warning and tap **Install**: + + + +Wait for the transfer to finish. Your PineTime should reset and reboot with the new version of InfiniTime! + + + +### Using NRFConnect +Open NRFConnect. Swipe down in the *Scanner* tab and wait for your device to appear: + + + +Tap on the *Connect* button on the right of your device. NRFConnect will connect to your PineTime and discover its characteristics. Tap on the **DFU** button on the top right: + + + +Select **Distribution packet (ZIP)**: + + + +Browse to the DFU file you downloaded previously, the DFU transfer will start automatically. When the transfer is finished, your PineTime will reset and restart on the new version of InfiniTime! + + + +## How to flash InfiniTime using the SWD interface +Download the files **bootloader.bin**, **image-x.y.z.bin** and **pinetime-graphics-x.y.z.bin** from the release page: + + + +The bootloader reads a boot logo from the external SPI flash memory. The first step consists in flashing a tool in the MCU that will flash the boot logo into this SPI flash memory. This first step is optional but recommanded (the bootloader will display garbage on screen for a few second if you don't do it). +Using your SWD tool, flash **pinetime-graphics-x.y.z.bin** at offset **0x0000**. Reset the MCU and wait for a few second, until the logo is completely drawn on the display. + +Then, using your SWD tool, flash those file at specific offset: + + - bootloader.bin : **0x0000** + - image-x.y.z.bin : **0x8000** + +Reset and voilà, you're running InfiniTime on your PineTime! + +If you are using OpenOCD with a STLinkV2, you can find more info [on this page](../openOCD.md). + +## How to synchronize the time + +### Using Gadgetbridge +Good news! Gadgetbridge **automatically** synchronizes the time when connecting to your PineTime! + +### Using NRFConnect +You must enable the **CTS** *GATT server* into NRFConnect so that InfiniTime can synchronize the time with your smartphone. + +Launch NRFConnect, tap the sandwish button on the top left and select *Configure GATT server*: + + + + +Tap *Add service* and select the server configuration *Current Time service*. Tap OK and connect to your PineTime, it should automcatically sync the time once the connection is established! + +
\ No newline at end of file diff --git a/doc/gettingStarted/imageFile.png b/doc/gettingStarted/imageFile.png Binary files differnew file mode 100644 index 00000000..64e94323 --- /dev/null +++ b/doc/gettingStarted/imageFile.png diff --git a/doc/gettingStarted/nrfconnect0.jpg b/doc/gettingStarted/nrfconnect0.jpg Binary files differnew file mode 100644 index 00000000..68f06533 --- /dev/null +++ b/doc/gettingStarted/nrfconnect0.jpg diff --git a/doc/gettingStarted/nrfconnect1.jpg b/doc/gettingStarted/nrfconnect1.jpg Binary files differnew file mode 100644 index 00000000..29778c30 --- /dev/null +++ b/doc/gettingStarted/nrfconnect1.jpg diff --git a/doc/gettingStarted/nrfconnect2.jpg b/doc/gettingStarted/nrfconnect2.jpg Binary files differnew file mode 100644 index 00000000..3b14a477 --- /dev/null +++ b/doc/gettingStarted/nrfconnect2.jpg diff --git a/doc/gettingStarted/nrfconnect3.jpg b/doc/gettingStarted/nrfconnect3.jpg Binary files differnew file mode 100644 index 00000000..e8a5d8e1 --- /dev/null +++ b/doc/gettingStarted/nrfconnect3.jpg diff --git a/doc/gettingStarted/nrfconnectcts0.jpg b/doc/gettingStarted/nrfconnectcts0.jpg Binary files differnew file mode 100644 index 00000000..d42bea26 --- /dev/null +++ b/doc/gettingStarted/nrfconnectcts0.jpg diff --git a/doc/gettingStarted/nrfconnectcts1.jpg b/doc/gettingStarted/nrfconnectcts1.jpg Binary files differnew file mode 100644 index 00000000..2a478e9a --- /dev/null +++ b/doc/gettingStarted/nrfconnectcts1.jpg diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index 571efae6..3e3d65b4 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -1,8 +1,7 @@ -#include <drivers/include/nrfx_saadc.h> +#include "BatteryController.h" #include <hal/nrf_gpio.h> #include <libraries/log/nrf_log.h> #include <algorithm> -#include "BatteryController.h" using namespace Pinetime::Controllers; diff --git a/src/components/battery/BatteryController.h b/src/components/battery/BatteryController.h index f07648a9..7cc964e4 100644 --- a/src/components/battery/BatteryController.h +++ b/src/components/battery/BatteryController.h @@ -1,7 +1,7 @@ #pragma once +#include <cstdint> #include <drivers/include/nrfx_saadc.h> - namespace Pinetime { namespace Controllers { class Battery { diff --git a/src/components/ble/AlertNotificationClient.cpp b/src/components/ble/AlertNotificationClient.cpp index abe41099..e7a18626 100644 --- a/src/components/ble/AlertNotificationClient.cpp +++ b/src/components/ble/AlertNotificationClient.cpp @@ -1,7 +1,7 @@ -#include <systemtask/SystemTask.h> -#include "NotificationManager.h" - #include "AlertNotificationClient.h" +#include <algorithm> +#include "NotificationManager.h" +#include "systemtask/SystemTask.h" using namespace Pinetime::Controllers; constexpr ble_uuid16_t AlertNotificationClient::ansServiceUuid; @@ -159,8 +159,8 @@ void AlertNotificationClient::OnNotification(ble_gap_event *event) { const auto maxBufferSize{maxMessageSize + headerSize}; const auto dbgPacketLen = OS_MBUF_PKTLEN(event->notify_rx.om); - size_t bufferSize = min(dbgPacketLen + stringTerminatorSize, maxBufferSize); - auto messageSize = min(maxMessageSize, (bufferSize - headerSize)); + size_t bufferSize = std::min(dbgPacketLen + stringTerminatorSize, maxBufferSize); + auto messageSize = std::min(maxMessageSize, (bufferSize - headerSize)); NotificationManager::Notification notif; os_mbuf_copydata(event->notify_rx.om, headerSize, messageSize - 1, notif.message.data()); diff --git a/src/components/ble/AlertNotificationClient.h b/src/components/ble/AlertNotificationClient.h index bc0df51e..fa10456c 100644 --- a/src/components/ble/AlertNotificationClient.h +++ b/src/components/ble/AlertNotificationClient.h @@ -1,13 +1,23 @@ #pragma once #include <cstdint> -#include <array> +#include <functional> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min #include "BleClient.h" - namespace Pinetime { + + namespace System { + class SystemTask; + } + namespace Controllers { + class NotificationManager; + class AlertNotificationClient : public BleClient { public: explicit AlertNotificationClient(Pinetime::System::SystemTask &systemTask, diff --git a/src/components/ble/AlertNotificationService.cpp b/src/components/ble/AlertNotificationService.cpp index 32711b92..3156470c 100644 --- a/src/components/ble/AlertNotificationService.cpp +++ b/src/components/ble/AlertNotificationService.cpp @@ -1,10 +1,9 @@ - -#include <hal/nrf_rtc.h> -#include "NotificationManager.h" -#include <systemtask/SystemTask.h> - #include "AlertNotificationService.h" +#include <hal/nrf_rtc.h> #include <cstring> +#include <algorithm> +#include "NotificationManager.h" +#include "systemtask/SystemTask.h" using namespace Pinetime::Controllers; @@ -60,8 +59,8 @@ int AlertNotificationService::OnAlert(uint16_t conn_handle, uint16_t attr_handle const auto maxBufferSize{maxMessageSize + headerSize}; const auto dbgPacketLen = OS_MBUF_PKTLEN(ctxt->om); - size_t bufferSize = min(dbgPacketLen + stringTerminatorSize, maxBufferSize); - auto messageSize = min(maxMessageSize, (bufferSize-headerSize)); + size_t bufferSize = std::min(dbgPacketLen + stringTerminatorSize, maxBufferSize); + auto messageSize = std::min(maxMessageSize, (bufferSize-headerSize)); NotificationManager::Notification notif; os_mbuf_copydata(ctxt->om, headerSize, messageSize-1, notif.message.data()); diff --git a/src/components/ble/AlertNotificationService.h b/src/components/ble/AlertNotificationService.h index 1b8c4989..120312d2 100644 --- a/src/components/ble/AlertNotificationService.h +++ b/src/components/ble/AlertNotificationService.h @@ -1,10 +1,20 @@ #pragma once #include <cstdint> #include <array> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min namespace Pinetime { + + namespace System { + class SystemTask; + } namespace Controllers { + class NotificationManager; + class AlertNotificationService { public: AlertNotificationService(Pinetime::System::SystemTask &systemTask, diff --git a/src/components/ble/BatteryInformationService.h b/src/components/ble/BatteryInformationService.h index 74b2222c..b00000a4 100644 --- a/src/components/ble/BatteryInformationService.h +++ b/src/components/ble/BatteryInformationService.h @@ -1,5 +1,9 @@ #pragma once +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min namespace Pinetime { namespace System { diff --git a/src/components/ble/BleController.cpp b/src/components/ble/BleController.cpp index 2b396e12..650ec79f 100644 --- a/src/components/ble/BleController.cpp +++ b/src/components/ble/BleController.cpp @@ -1,5 +1,3 @@ -#include <cstring> -#include <cstdlib> #include "BleController.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/BleController.h b/src/components/ble/BleController.h index 3f52ea25..0570c8d0 100644 --- a/src/components/ble/BleController.h +++ b/src/components/ble/BleController.h @@ -1,8 +1,7 @@ #pragma once -#include <FreeRTOS.h> -#include <queue.h> #include <array> +#include <cstdint> namespace Pinetime { namespace Controllers { diff --git a/src/components/ble/CurrentTimeClient.cpp b/src/components/ble/CurrentTimeClient.cpp index 92f9374b..be50fede 100644 --- a/src/components/ble/CurrentTimeClient.cpp +++ b/src/components/ble/CurrentTimeClient.cpp @@ -1,5 +1,6 @@ -#include <hal/nrf_rtc.h> #include "CurrentTimeClient.h" +#include <hal/nrf_rtc.h> +#include "components/datetime/DateTimeController.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/CurrentTimeClient.h b/src/components/ble/CurrentTimeClient.h index 93139399..1b2e018c 100644 --- a/src/components/ble/CurrentTimeClient.h +++ b/src/components/ble/CurrentTimeClient.h @@ -1,13 +1,15 @@ #pragma once +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max +#include <host/ble_gap.h> +#undef max +#undef min #include <cstdint> -#include <array> - -#include "components/datetime/DateTimeController.h" #include "BleClient.h" -#include <host/ble_gap.h> namespace Pinetime { namespace Controllers { + class DateTime; class CurrentTimeClient : public BleClient { public: diff --git a/src/components/ble/CurrentTimeService.h b/src/components/ble/CurrentTimeService.h index a6be9647..23956283 100644 --- a/src/components/ble/CurrentTimeService.h +++ b/src/components/ble/CurrentTimeService.h @@ -3,7 +3,11 @@ #include <array> #include "components/datetime/DateTimeController.h" +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min namespace Pinetime { namespace Controllers { diff --git a/src/components/ble/DeviceInformationService.h b/src/components/ble/DeviceInformationService.h index 25ab8402..94ca7bbf 100644 --- a/src/components/ble/DeviceInformationService.h +++ b/src/components/ble/DeviceInformationService.h @@ -1,9 +1,10 @@ #pragma once -#include <cstdint> -#include <array> - +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> -#include <Version.h> +#undef max +#undef min +#include "Version.h" namespace Pinetime { namespace Controllers { diff --git a/src/components/ble/DfuService.cpp b/src/components/ble/DfuService.cpp index 4dec5141..90795b49 100644 --- a/src/components/ble/DfuService.cpp +++ b/src/components/ble/DfuService.cpp @@ -1,8 +1,8 @@ +#include "DfuService.h" #include <cstring> - #include "components/ble/BleController.h" +#include "drivers/SpiNorFlash.h" #include "systemtask/SystemTask.h" -#include "DfuService.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/DfuService.h b/src/components/ble/DfuService.h index d7ba460c..096bd99a 100644 --- a/src/components/ble/DfuService.h +++ b/src/components/ble/DfuService.h @@ -3,7 +3,11 @@ #include <cstdint> #include <array> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min namespace Pinetime { namespace System { diff --git a/src/components/ble/ImmediateAlertService.cpp b/src/components/ble/ImmediateAlertService.cpp index e2cee308..0f6bf6cf 100644 --- a/src/components/ble/ImmediateAlertService.cpp +++ b/src/components/ble/ImmediateAlertService.cpp @@ -1,7 +1,7 @@ -#include <systemtask/SystemTask.h> -#include <cstring> #include "ImmediateAlertService.h" -#include "AlertNotificationService.h" +#include <cstring> +#include "NotificationManager.h" +#include "systemtask/SystemTask.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/ImmediateAlertService.h b/src/components/ble/ImmediateAlertService.h index c42846c4..2bc9cba5 100644 --- a/src/components/ble/ImmediateAlertService.h +++ b/src/components/ble/ImmediateAlertService.h @@ -1,5 +1,9 @@ #pragma once +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#undef max +#undef min namespace Pinetime { namespace System { diff --git a/src/components/ble/MusicService.cpp b/src/components/ble/MusicService.cpp index 84f2972b..fdecb6b3 100644 --- a/src/components/ble/MusicService.cpp +++ b/src/components/ble/MusicService.cpp @@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#include <systemtask/SystemTask.h> #include "MusicService.h" +#include "systemtask/SystemTask.h" int MSCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) { auto musicService = static_cast<Pinetime::Controllers::MusicService *>(arg); diff --git a/src/components/ble/MusicService.h b/src/components/ble/MusicService.h index b365909b..ee3628b0 100644 --- a/src/components/ble/MusicService.h +++ b/src/components/ble/MusicService.h @@ -18,10 +18,13 @@ #pragma once #include <cstdint> -#include <array> +#include <string> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> #include <host/ble_uuid.h> -#include <string> +#undef max +#undef min //c7e50000-78fc-48fe-8e23-43b37a1942d0 #define MUSIC_SERVICE_UUID_BASE {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0xe5, 0xc7} diff --git a/src/components/ble/NimbleController.cpp b/src/components/ble/NimbleController.cpp index af7f4029..a6f3cc39 100644 --- a/src/components/ble/NimbleController.cpp +++ b/src/components/ble/NimbleController.cpp @@ -1,15 +1,19 @@ -#include "components/datetime/DateTimeController.h" -#include <systemtask/SystemTask.h> -#include "components/ble/NotificationManager.h" -#include <hal/nrf_rtc.h> #include "NimbleController.h" -#include "MusicService.h" -#include <services/gatt/ble_svc_gatt.h> -#include <services/gap/ble_svc_gap.h> -#include <host/util/util.h> -#include <host/ble_hs_id.h> -#include <host/ble_hs.h> +#include <hal/nrf_rtc.h> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#include <host/ble_hs.h> +#include <host/ble_hs_id.h> +#include <host/util/util.h> +#undef max +#undef min +#include <services/gap/ble_svc_gap.h> +#include <services/gatt/ble_svc_gatt.h> +#include "components/ble/BleController.h" +#include "components/ble/NotificationManager.h" +#include "components/datetime/DateTimeController.h" +#include "systemtask/SystemTask.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/NimbleController.h b/src/components/ble/NimbleController.h index 8ddec1f9..914f11e6 100644 --- a/src/components/ble/NimbleController.h +++ b/src/components/ble/NimbleController.h @@ -2,24 +2,35 @@ #include <cstdint> -#include "AlertNotificationService.h" +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max +#include <host/ble_gap.h> +#undef max +#undef min #include "AlertNotificationClient.h" -#include "DeviceInformationService.h" +#include "AlertNotificationService.h" +#include "BatteryInformationService.h" #include "CurrentTimeClient.h" -#include "DfuService.h" #include "CurrentTimeService.h" -#include "MusicService.h" -#include "BatteryInformationService.h" +#include "DeviceInformationService.h" +#include "DfuService.h" #include "ImmediateAlertService.h" +#include "MusicService.h" #include "ServiceDiscovery.h" -#include <host/ble_gap.h> namespace Pinetime { namespace Drivers { class SpiNorFlash; } + + namespace System { + class SystemTask; + } + namespace Controllers { + class Ble; class DateTime; + class NotificationManager; class NimbleController { diff --git a/src/components/ble/NotificationManager.cpp b/src/components/ble/NotificationManager.cpp index 67711723..dabcb4ba 100644 --- a/src/components/ble/NotificationManager.cpp +++ b/src/components/ble/NotificationManager.cpp @@ -1,6 +1,6 @@ +#include "NotificationManager.h" #include <cstring> #include <algorithm> -#include "NotificationManager.h" using namespace Pinetime::Controllers; diff --git a/src/components/ble/NotificationManager.h b/src/components/ble/NotificationManager.h index 49fe8306..036d2ed9 100644 --- a/src/components/ble/NotificationManager.h +++ b/src/components/ble/NotificationManager.h @@ -2,6 +2,8 @@ #include <array> #include <atomic> +#include <cstddef> +#include <cstdint> namespace Pinetime { namespace Controllers { @@ -27,7 +29,7 @@ namespace Pinetime { bool ClearNewNotificationFlag(); bool AreNewNotificationsAvailable(); - static constexpr uint8_t MaximumMessageSize() { return MessageSize; }; + static constexpr size_t MaximumMessageSize() { return MessageSize; }; size_t NbNotifications() const; private: diff --git a/src/components/ble/ServiceDiscovery.cpp b/src/components/ble/ServiceDiscovery.cpp index 4b29d89c..4d37b8bd 100644 --- a/src/components/ble/ServiceDiscovery.cpp +++ b/src/components/ble/ServiceDiscovery.cpp @@ -1,5 +1,7 @@ -#include <libraries/log/nrf_log.h> #include "ServiceDiscovery.h" +#include <libraries/log/nrf_log.h> +#include "BleClient.h" + using namespace Pinetime::Controllers; ServiceDiscovery::ServiceDiscovery(std::array<BleClient*, 2>&& clients) : clients{clients} { diff --git a/src/components/ble/ServiceDiscovery.h b/src/components/ble/ServiceDiscovery.h index c86fc4ec..0b26bd1d 100644 --- a/src/components/ble/ServiceDiscovery.h +++ b/src/components/ble/ServiceDiscovery.h @@ -1,12 +1,12 @@ #pragma once #include <array> -#include <functional> -#include <memory> -#include "BleClient.h" +#include <cstdint> namespace Pinetime { namespace Controllers { + class BleClient; + class ServiceDiscovery { public: ServiceDiscovery(std::array<BleClient*, 2>&& bleClients); diff --git a/src/components/brightness/BrightnessController.cpp b/src/components/brightness/BrightnessController.cpp index c8825d68..78c461d7 100644 --- a/src/components/brightness/BrightnessController.cpp +++ b/src/components/brightness/BrightnessController.cpp @@ -1,5 +1,5 @@ -#include <hal/nrf_gpio.h> #include "BrightnessController.h" +#include <hal/nrf_gpio.h> using namespace Pinetime::Controllers; diff --git a/src/components/firmwarevalidator/FirmwareValidator.cpp b/src/components/firmwarevalidator/FirmwareValidator.cpp index 244d5c06..48f98550 100644 --- a/src/components/firmwarevalidator/FirmwareValidator.cpp +++ b/src/components/firmwarevalidator/FirmwareValidator.cpp @@ -1,8 +1,8 @@ -#include <drivers/InternalFlash.h> -#include <hal/nrf_rtc.h> - #include "FirmwareValidator.h" +#include <hal/nrf_rtc.h> +#include "drivers/InternalFlash.h" + using namespace Pinetime::Controllers; bool FirmwareValidator::IsValidated() const { diff --git a/src/components/gfx/Gfx.cpp b/src/components/gfx/Gfx.cpp index bab7c8d9..59c1da9b 100644 --- a/src/components/gfx/Gfx.cpp +++ b/src/components/gfx/Gfx.cpp @@ -1,8 +1,5 @@ -#include <libraries/svc/nrf_svci.h> -#include <FreeRTOS.h> -#include <task.h> #include "Gfx.h" -#include "../../drivers/St7789.h" +#include "drivers/St7789.h" using namespace Pinetime::Components; Gfx::Gfx(Pinetime::Drivers::St7789 &lcd) : lcd{lcd} { diff --git a/src/components/gfx/Gfx.h b/src/components/gfx/Gfx.h index eba6319f..4c0fc8ee 100644 --- a/src/components/gfx/Gfx.h +++ b/src/components/gfx/Gfx.h @@ -1,10 +1,10 @@ #pragma once -#include <cstdint> -#include <nrf_font.h> -#include <drivers/BufferProvider.h> #include <FreeRTOS.h> +#include <nrf_font.h> #include <task.h> - +#include <cstddef> +#include <cstdint> +#include "drivers/BufferProvider.h" namespace Pinetime { namespace Drivers { diff --git a/src/displayapp/DisplayApp.cpp b/src/displayapp/DisplayApp.cpp index d4d41333..efc042b7 100644 --- a/src/displayapp/DisplayApp.cpp +++ b/src/displayapp/DisplayApp.cpp @@ -1,25 +1,24 @@ -#include <string> - #include "DisplayApp.h" -#include <FreeRTOS.h> -#include <task.h> #include <libraries/log/nrf_log.h> -#include <nrf_font.h> -#include <queue.h> +#include "components/battery/BatteryController.h" +#include "components/ble/BleController.h" #include "components/datetime/DateTimeController.h" -#include <drivers/Cst816s.h> -#include "displayapp/screens/Notifications.h" -#include "displayapp/screens/Tile.h" -#include "displayapp/screens/Meter.h" -#include "displayapp/screens/Gauge.h" -#include "displayapp/screens/Brightness.h" -#include "displayapp/screens/SystemInfo.h" -#include "displayapp/screens/Music.h" #include "components/ble/NotificationManager.h" -#include "displayapp/screens/FirmwareUpdate.h" #include "displayapp/screens/ApplicationList.h" +#include "displayapp/screens/Brightness.h" +#include "displayapp/screens/Clock.h" +#include "displayapp/screens/FirmwareUpdate.h" #include "displayapp/screens/FirmwareValidation.h" +#include "displayapp/screens/Gauge.h" #include "displayapp/screens/InfiniPaint.h" +#include "displayapp/screens/Meter.h" +#include "displayapp/screens/Music.h" +#include "displayapp/screens/Notifications.h" +#include "displayapp/screens/SystemInfo.h" +#include "displayapp/screens/Tile.h" +#include "drivers/Cst816s.h" +#include "drivers/St7789.h" +#include "drivers/Watchdog.h" #include "systemtask/SystemTask.h" using namespace Pinetime::Applications; diff --git a/src/displayapp/DisplayApp.h b/src/displayapp/DisplayApp.h index 2a0efde3..25cd2813 100644 --- a/src/displayapp/DisplayApp.h +++ b/src/displayapp/DisplayApp.h @@ -1,28 +1,30 @@ #pragma once #include <FreeRTOS.h> -#include <task.h> -#include <drivers/St7789.h> -#include <drivers/SpiMaster.h> -#include <bits/unique_ptr.h> +#include <date/date.h> #include <queue.h> -#include "components/gfx/Gfx.h" -#include "components/battery/BatteryController.h" +#include <task.h> +#include <memory> +#include "Apps.h" +#include "LittleVgl.h" +#include "TouchEvents.h" #include "components/brightness/BrightnessController.h" -#include "components/ble/BleController.h" -#include "components/datetime/DateTimeController.h" -#include "components/ble/NotificationManager.h" #include "components/firmwarevalidator/FirmwareValidator.h" -#include "drivers/Cst816s.h" -#include "LittleVgl.h" -#include <date/date.h> -#include "displayapp/screens/Clock.h" #include "displayapp/screens/Modal.h" -#include <drivers/Watchdog.h> -#include "TouchEvents.h" -#include "Apps.h" - namespace Pinetime { + + namespace Drivers { + class St7789; + class Cst816S; + class WatchdogView; + } + namespace Controllers { + class Battery; + class Ble; + class DateTime; + class NotificationManager; + } + namespace System { class SystemTask; }; diff --git a/src/displayapp/LittleVgl.cpp b/src/displayapp/LittleVgl.cpp index 7b6275e2..b4e5cac0 100644 --- a/src/displayapp/LittleVgl.cpp +++ b/src/displayapp/LittleVgl.cpp @@ -1,14 +1,10 @@ +#include "LittleVgl.h" + #include <FreeRTOS.h> -#include <projdefs.h> #include <task.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include <hal/nrf_rtc.h> -#include <libraries/log/nrf_log.h> - -#include <libs/lvgl/src/lv_themes/lv_theme.h> -#include <libs/lvgl/src/lv_themes/lv_theme_night.h> - -#include "LittleVgl.h" +//#include <projdefs.h> +#include "drivers/Cst816s.h" +#include "drivers/St7789.h" using namespace Pinetime::Components; diff --git a/src/displayapp/LittleVgl.h b/src/displayapp/LittleVgl.h index 5c1c4434..ea50985c 100644 --- a/src/displayapp/LittleVgl.h +++ b/src/displayapp/LittleVgl.h @@ -1,12 +1,13 @@ #pragma once -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_themes/lv_theme.h> -#include <libs/lvgl/src/lv_hal/lv_hal.h> -#include <drivers/St7789.h> -#include <drivers/Cst816s.h> +#include <lvgl/lvgl.h> namespace Pinetime { + namespace Drivers { + class Cst816S; + class St7789; + } + namespace Components { class LittleVgl { public: diff --git a/src/displayapp/fonts/Readme.md b/src/displayapp/fonts/Readme.md index 7ebf2e23..a5eec648 100644 --- a/src/displayapp/fonts/Readme.md +++ b/src/displayapp/fonts/Readme.md @@ -9,7 +9,7 @@ * Size : 20 * Bpp : 1 bit-per-pixel * Do not enable font compression and horizontal subpixel hinting - * Load the file `JetBrainsMono-Bold.woff` and specify the following range : `0x20-0x7f` + * Load the file `JetBrainsMono-Bold.woff` and specify the following range : `0x20-0x7f, 0x410-0x44f` * Add a 2nd font, load the file `FontAwesome5-Solid+Brands+Regular.woff` and specify the following range : `0xf293, 0xf294, 0xf244, 0xf240, 0xf242, 0xf243, 0xf241, 0xf54b, 0xf21e, 0xf1e6, 0xf54b, 0xf017, 0xf129, 0xf03a, 0xf185, 0xf560, 0xf001, 0xf3fd, 0xf069, 0xf1fc` * Click on Convert, and download the file `jetbrains_mono_bold_20.c` and copy it in `src/DisplayApp/Fonts` diff --git a/src/displayapp/fonts/jetbrains_mono_bold_20.c b/src/displayapp/fonts/jetbrains_mono_bold_20.c index 27ad0055..183e5911 100644 --- a/src/displayapp/fonts/jetbrains_mono_bold_20.c +++ b/src/displayapp/fonts/jetbrains_mono_bold_20.c @@ -22,36 +22,36 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0x0, /* U+21 "!" */ - 0xff, 0xff, 0xff, 0xe0, 0xf, 0xc0, + 0xff, 0xff, 0xff, 0xfc, 0xf, 0xc0, /* U+22 "\"" */ 0xef, 0xdf, 0xbf, 0x7e, 0xfd, 0xc0, /* U+23 "#" */ - 0x8, 0xc3, 0x10, 0x62, 0x3f, 0xf7, 0xfe, 0x23, + 0x8, 0xc3, 0x10, 0x66, 0x3f, 0xf7, 0xfe, 0x23, 0x4, 0x61, 0x88, 0x31, 0x1f, 0xfb, 0xff, 0x19, 0x82, 0x30, 0xc4, 0x0, /* U+24 "$" */ - 0x8, 0x2, 0x1, 0xc1, 0xfe, 0xeb, 0xf2, 0x7c, - 0x83, 0xa0, 0x7c, 0xf, 0xc0, 0xf8, 0x27, 0x9, - 0xf2, 0x7f, 0xf9, 0xfc, 0x8, 0x2, 0x0, 0x80, + 0x8, 0x2, 0x1, 0xe1, 0xfe, 0xfb, 0xfa, 0x7e, + 0x83, 0xe0, 0x7e, 0xf, 0xe0, 0xf8, 0x27, 0x9, + 0xfa, 0x7f, 0xf9, 0xfc, 0x8, 0x2, 0x0, 0x80, /* U+25 "%" */ - 0x78, 0x1f, 0x83, 0x30, 0x66, 0x1f, 0xcc, 0xf2, - 0x1, 0x80, 0xde, 0x67, 0xf8, 0xcc, 0x19, 0x83, - 0x30, 0x7e, 0x7, 0x80, + 0x78, 0x3f, 0xc6, 0xcc, 0xcc, 0xcc, 0xfd, 0x87, + 0xb0, 0x6, 0x0, 0x7e, 0xf, 0xf1, 0xb3, 0x33, + 0x33, 0x33, 0x63, 0xfc, 0x1e, /* U+26 "&" */ - 0x1e, 0x7, 0xe1, 0xce, 0x38, 0x7, 0x0, 0x70, - 0x1e, 0x7, 0x66, 0xed, 0xdc, 0xf3, 0x9c, 0x73, + 0x1e, 0xf, 0xe1, 0x8e, 0x30, 0x6, 0x0, 0x60, + 0x1e, 0x7, 0xe6, 0xed, 0xdc, 0xf3, 0x9e, 0x73, 0xcf, 0xfc, 0xf9, 0x80, /* U+27 "'" */ 0xff, 0xff, 0xc0, /* U+28 "(" */ - 0x2, 0x1c, 0xfb, 0xc7, 0x1e, 0x38, 0x70, 0xe1, + 0x2, 0x1c, 0xfb, 0xc7, 0x1c, 0x38, 0x70, 0xe1, 0xc3, 0x87, 0xe, 0x1c, 0x3c, 0x38, 0x38, 0x7c, 0x38, @@ -62,7 +62,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { /* U+2A "*" */ 0xc, 0x3, 0x8, 0xc7, 0xb7, 0x7f, 0x83, 0x1, - 0xe0, 0xcc, 0x73, 0x80, 0x0, + 0xe0, 0xcc, 0x73, 0x88, 0x0, /* U+2B "+" */ 0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1, @@ -72,10 +72,10 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0x7b, 0x9c, 0xce, 0x60, /* U+2D "-" */ - 0xff, 0xff, + 0xff, 0xff, 0xc0, /* U+2E "." */ - 0x6f, 0xf6, + 0xff, 0xf0, /* U+2F "/" */ 0x1, 0xc0, 0x60, 0x38, 0xe, 0x3, 0x1, 0xc0, @@ -83,58 +83,58 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0xe, 0x3, 0x80, 0xc0, 0x70, 0x18, 0xe, 0x0, /* U+30 "0" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xed, 0xfb, 0x7e, - 0xdf, 0xb7, 0xed, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, + 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, + 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, + 0x8f, 0xc0, /* U+31 "1" */ - 0x3c, 0x3e, 0x3f, 0x13, 0x81, 0xc0, 0xe0, 0x70, - 0x38, 0x1c, 0xe, 0x7, 0x3, 0x8f, 0xff, 0xfc, + 0x1e, 0x3f, 0x3b, 0x99, 0xc8, 0xe0, 0x70, 0x38, + 0x1c, 0xe, 0x7, 0x3, 0x81, 0xcf, 0xff, 0xfc, /* U+32 "2" */ - 0x1f, 0x1f, 0xef, 0x3f, 0x87, 0x1, 0xc0, 0x70, - 0x38, 0x1e, 0xf, 0x7, 0x87, 0x83, 0xc0, 0xff, - 0xff, 0xf0, + 0x3e, 0x3f, 0xbc, 0xfc, 0x70, 0x38, 0x1c, 0x1c, + 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0xf, 0xff, 0xfc, /* U+33 "3" */ - 0x7f, 0xdf, 0xf0, 0x3c, 0x1c, 0x1c, 0x7, 0xc1, - 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1d, 0x8f, 0x7f, - 0x87, 0xc0, + 0x7f, 0x9f, 0xe0, 0x38, 0x18, 0xc, 0x7, 0xc1, + 0xf8, 0xf, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, + 0x8f, 0xc0, /* U+34 "4" */ 0x7, 0x7, 0x3, 0x83, 0x83, 0x81, 0xc1, 0xcf, 0xe7, 0xe3, 0xff, 0xff, 0xe0, 0x70, 0x38, 0x1c, /* U+35 "5" */ - 0xff, 0x7f, 0xb8, 0x1c, 0xe, 0x7, 0x73, 0xfd, - 0xcf, 0x3, 0x81, 0xc0, 0xfc, 0xff, 0xf1, 0xf0, + 0x7f, 0x9f, 0xe7, 0x1, 0xc0, 0x77, 0x1f, 0xe7, + 0x3c, 0x7, 0x1, 0xc0, 0x77, 0x1d, 0xcf, 0x7f, + 0x87, 0xc0, /* U+36 "6" */ - 0x6, 0x3, 0x1, 0xc0, 0x60, 0x30, 0x1b, 0xc7, + 0x6, 0x3, 0x1, 0xc0, 0x60, 0x38, 0x1d, 0xc7, 0xfb, 0xcf, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, 0x87, 0x80, /* U+37 "7" */ - 0xff, 0xff, 0xfe, 0xb, 0x86, 0x1, 0x80, 0xc0, - 0x30, 0x18, 0x6, 0x3, 0x80, 0xc0, 0x70, 0x18, + 0xff, 0xff, 0xfe, 0x1b, 0x86, 0x3, 0x80, 0xc0, + 0x70, 0x18, 0x6, 0x3, 0x80, 0xc0, 0x70, 0x18, 0xe, 0x0, /* U+38 "8" */ - 0x3e, 0x1f, 0xce, 0x3b, 0x6, 0xe3, 0x9f, 0xc7, - 0xf1, 0x8e, 0xc1, 0xf0, 0x7c, 0x1f, 0x8f, 0x7f, - 0x8f, 0x80, + 0x3f, 0x1f, 0xee, 0x1f, 0x87, 0xe1, 0xcf, 0xc3, + 0xf1, 0xce, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, + 0x8f, 0xc0, /* U+39 "9" */ 0x1e, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7f, - 0x3d, 0xfe, 0x3d, 0x80, 0xc0, 0x60, 0x38, 0xc, + 0x3d, 0xfe, 0x3b, 0x81, 0xc0, 0x60, 0x38, 0xc, 0x6, 0x0, /* U+3A ":" */ - 0xff, 0x80, 0x0, 0xff, 0x80, + 0xff, 0xf0, 0x0, 0x0, 0xff, 0xf0, /* U+3B ";" */ - 0x7b, 0xde, 0x0, 0x0, 0x0, 0x7b, 0x9c, 0xce, - 0x60, + 0x7b, 0xde, 0x0, 0x0, 0x0, 0x3, 0xdc, 0xe6, + 0x73, 0x0, /* U+3C "<" */ 0x0, 0x81, 0xc3, 0xe7, 0xcf, 0x6, 0x3, 0xc0, @@ -144,22 +144,23 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0xff, 0xff, 0xc0, 0x0, 0x0, 0x7, 0xff, 0xfe, /* U+3E ">" */ - 0x0, 0x70, 0x3e, 0x7, 0xc0, 0xf8, 0xc, 0x1e, - 0x7c, 0xf8, 0x70, 0x20, 0x0, + 0x80, 0x70, 0x3e, 0x7, 0xc0, 0xf8, 0xc, 0x1e, + 0x3c, 0xf8, 0x70, 0x20, 0x0, /* U+3F "?" */ 0xfc, 0xfe, 0xf, 0x7, 0x7, 0xf, 0x3e, 0x3c, 0x30, 0x30, 0x0, 0x0, 0x70, 0x70, /* U+40 "@" */ - 0x1f, 0x87, 0xf9, 0xc3, 0xf0, 0x3c, 0x77, 0x9f, - 0xf3, 0x1e, 0x63, 0xcc, 0x79, 0x8f, 0x31, 0xe7, - 0xfc, 0x77, 0xc0, 0x1c, 0x1, 0xf0, 0x1e, 0x0, + 0x1f, 0x7, 0xf9, 0xc3, 0x70, 0x3c, 0x7, 0x8f, + 0xf3, 0xfe, 0x63, 0xcc, 0x79, 0x8f, 0x31, 0xe6, + 0x3c, 0xff, 0x8e, 0xf8, 0x3, 0x80, 0x3e, 0x3, + 0xc0, /* U+41 "A" */ - 0xf, 0x0, 0xf0, 0xf, 0x1, 0xf8, 0x19, 0x81, - 0x98, 0x19, 0x83, 0x9c, 0x3f, 0xc3, 0xfc, 0x70, - 0xe7, 0xe, 0x60, 0x66, 0x6, + 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3, + 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1, + 0xf0, 0x30, /* U+42 "B" */ 0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xcf, @@ -172,9 +173,8 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0x8f, 0xc0, /* U+44 "D" */ - 0xfe, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, - 0xbf, 0x80, + 0xfe, 0x7f, 0xb9, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0xff, 0xf7, 0xf0, /* U+45 "E" */ 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd, @@ -187,43 +187,42 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { /* U+47 "G" */ 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, 0x7f, 0x9f, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x87, 0x80, + 0x8f, 0xc0, /* U+48 "H" */ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff, 0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, /* U+49 "I" */ - 0xff, 0xff, 0xc7, 0x3, 0x81, 0xc0, 0xe0, 0x70, - 0x38, 0x1c, 0xe, 0x7, 0x3, 0x8f, 0xff, 0xfc, + 0xff, 0xff, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, + 0x1c, 0x1c, 0x1c, 0x1c, 0xff, 0xff, /* U+4A "J" */ - 0x3f, 0xcf, 0xf0, 0x1c, 0x7, 0x1, 0xc0, 0x70, - 0x1c, 0x7, 0x1, 0xc0, 0x7e, 0x1f, 0x8f, 0x7f, + 0xf, 0xc3, 0xf0, 0x1c, 0x7, 0x1, 0xc0, 0x70, + 0x1c, 0x7, 0x1, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, 0x8f, 0xc0, /* U+4B "K" */ - 0xe1, 0xdc, 0x3b, 0x8e, 0x71, 0xce, 0x31, 0xce, - 0x3f, 0x87, 0xf0, 0xe7, 0x1c, 0x63, 0x8e, 0x70, - 0xce, 0x1d, 0xc3, 0x80, + 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf, + 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1, + 0xf8, 0x70, /* U+4C "L" */ 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x3, 0x81, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc, /* U+4D "M" */ - 0xe1, 0xf8, 0x7f, 0x3f, 0xcf, 0xda, 0xf7, 0xbd, - 0xef, 0x33, 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xc0, - 0xf0, 0x30, + 0xf3, 0xfc, 0xfd, 0x2f, 0xcf, 0xff, 0xff, 0xfe, + 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1, + 0xf8, 0x70, /* U+4E "N" */ - 0xe1, 0xf0, 0xfc, 0x7e, 0x3d, 0x9e, 0xcf, 0x67, - 0x9b, 0xcd, 0xe6, 0xf1, 0xf8, 0xfc, 0x3e, 0x1c, + 0xf3, 0xf9, 0xfc, 0xfe, 0x7f, 0xbf, 0xdf, 0xaf, + 0xd7, 0xef, 0xf7, 0xf9, 0xfc, 0xfe, 0x7f, 0x3c, /* U+4F "O" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, /* U+50 "P" */ 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, @@ -233,7 +232,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { /* U+51 "Q" */ 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0x8f, 0x80, 0x70, 0xe, 0x1, 0xc0, + 0x8f, 0x80, 0x70, 0xe, 0x3, 0x80, 0x70, /* U+52 "R" */ 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, @@ -241,7 +240,7 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0xb8, 0x70, /* U+53 "S" */ - 0x3f, 0x1f, 0xee, 0x1f, 0x87, 0xe0, 0x3e, 0x7, + 0x3f, 0x1f, 0xee, 0x3f, 0x87, 0xe0, 0x3c, 0x7, 0xf0, 0x7e, 0x3, 0xc0, 0x7e, 0x1f, 0xcf, 0x7f, 0x8f, 0xc0, @@ -255,14 +254,14 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, /* U+56 "V" */ - 0x60, 0x66, 0x6, 0x70, 0xe7, 0xe, 0x30, 0xc3, - 0xc, 0x39, 0xc1, 0x98, 0x19, 0x81, 0x98, 0x1f, - 0x80, 0xf0, 0xf, 0x0, 0xf0, + 0xc0, 0xf8, 0x7e, 0x1d, 0x86, 0x61, 0x9c, 0xe7, + 0x38, 0xcc, 0x33, 0xf, 0xc3, 0xf0, 0x78, 0x1e, + 0x7, 0x80, /* U+57 "W" */ - 0xc6, 0x78, 0xcf, 0x39, 0xe7, 0x3e, 0xa6, 0xd6, - 0xda, 0xdb, 0x5b, 0x6b, 0x6d, 0x2d, 0xe7, 0x3c, - 0xe7, 0x9c, 0xe3, 0x80, + 0xce, 0x79, 0xcf, 0x29, 0xe5, 0x3c, 0xa7, 0xd5, + 0xda, 0xb3, 0x56, 0x7b, 0xcf, 0x79, 0xef, 0x38, + 0xe7, 0x1c, 0xe3, 0x80, /* U+58 "X" */ 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81, @@ -270,12 +269,12 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0xf8, 0x70, /* U+59 "Y" */ - 0xe0, 0xfc, 0x1d, 0xc7, 0x38, 0xe3, 0x98, 0x77, + 0xe0, 0xfc, 0x1d, 0xc7, 0x38, 0xe3, 0xb8, 0x77, 0x6, 0xc0, 0xf8, 0xe, 0x1, 0xc0, 0x38, 0x7, 0x0, 0xe0, 0x1c, 0x0, /* U+5A "Z" */ - 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0x60, 0x70, 0x70, + 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0xf, 0xff, 0xfc, /* U+5B "[" */ @@ -302,136 +301,424 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t gylph_bitmap[] = { 0x63, 0x8e, /* U+61 "a" */ - 0x3f, 0x1f, 0xee, 0x1c, 0x7, 0x3f, 0xdf, 0xfe, - 0x1f, 0x87, 0xe3, 0xff, 0xf7, 0xdc, + 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe, + 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc, /* U+62 "b" */ - 0xe0, 0x38, 0xe, 0x3, 0xbc, 0xff, 0xbc, 0xfe, - 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0xff, - 0xbb, 0xc0, + 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7f, 0xf7, 0x70, /* U+63 "c" */ - 0x3f, 0x1f, 0xef, 0x1f, 0x83, 0xe0, 0x38, 0xe, - 0x3, 0x87, 0xf1, 0xdf, 0xe3, 0xe0, + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x7, 0x3, 0x81, + 0xc7, 0xe3, 0xbf, 0x8f, 0x80, /* U+64 "d" */ - 0x1, 0xc0, 0x70, 0x1c, 0xf7, 0x7f, 0xfc, 0xfe, - 0x1f, 0x87, 0xe1, 0xf8, 0x7e, 0x1f, 0xcf, 0x7f, - 0xcf, 0x70, + 0x3, 0x81, 0xc0, 0xe7, 0x77, 0xff, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf9, 0xdc, /* U+65 "e" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xff, 0xff, 0xfe, - 0x3, 0x80, 0xf1, 0xdf, 0xe3, 0xf0, + 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81, + 0xc0, 0xe3, 0xbf, 0x8f, 0x80, /* U+66 "f" */ - 0xf, 0xc7, 0xf1, 0xc0, 0x70, 0xff, 0xff, 0xf1, + 0xf, 0xc7, 0xf1, 0xc3, 0xff, 0xff, 0xc7, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x0, /* U+67 "g" */ - 0x3d, 0xdf, 0xff, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0xcf, 0x7f, 0xcf, 0x70, 0x1c, 0xf, 0x3f, - 0x8f, 0xc0, + 0x3b, 0xbf, 0xfd, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xf7, 0xbf, 0xce, 0xe0, 0x70, 0x39, 0xf8, + 0xf8, /* U+68 "h" */ - 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x9f, 0x8f, + 0xe0, 0x70, 0x38, 0x1d, 0xcf, 0xf7, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, /* U+69 "i" */ - 0x1c, 0x7, 0x0, 0x0, 0x0, 0xfc, 0x3f, 0x1, - 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1c, + 0x8, 0x7, 0x0, 0x80, 0x0, 0xfe, 0x3f, 0x80, + 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe, 0x3f, 0xff, 0xfc, /* U+6A "j" */ - 0x7, 0x7, 0x0, 0x0, 0x7f, 0x7f, 0x7, 0x7, - 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0xf, - 0xfe, 0xfc, + 0x2, 0x7, 0x2, 0x0, 0x7f, 0x7f, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0xf, 0xfe, 0xfc, /* U+6B "k" */ - 0xe0, 0x38, 0xe, 0x3, 0x87, 0xe1, 0xb8, 0xee, - 0x33, 0x9c, 0xfe, 0x3f, 0x8e, 0x73, 0x8e, 0xe3, + 0xe0, 0x38, 0xe, 0x3, 0x87, 0xe3, 0xb8, 0xce, + 0x73, 0xf8, 0xfe, 0x39, 0xce, 0x73, 0x8e, 0xe1, 0xb8, 0x70, /* U+6C "l" */ 0xfe, 0x1f, 0xc0, 0x38, 0x7, 0x0, 0xe0, 0x1c, 0x3, 0x80, 0x70, 0xe, 0x1, 0xc0, 0x38, 0x7, - 0x0, 0xfe, 0xf, 0xc0, + 0x0, 0x7e, 0x7, 0xc0, /* U+6D "m" */ 0xd9, 0xbf, 0xfc, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcc, /* U+6E "n" */ - 0xee, 0x7f, 0xbc, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, /* U+6F "o" */ - 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xf3, 0xdf, 0xe3, 0xf0, + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xbf, 0x8f, 0x80, /* U+70 "p" */ - 0xef, 0x3f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xf3, 0xff, 0xee, 0xf3, 0x80, 0xe0, - 0x38, 0x0, + 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3, + 0x80, /* U+71 "q" */ - 0x3d, 0xdf, 0xff, 0x3f, 0x87, 0xe1, 0xf8, 0x7e, - 0x1f, 0x87, 0xf3, 0xdf, 0xf3, 0xdc, 0x7, 0x1, - 0xc0, 0x70, + 0x3b, 0xbf, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xbf, 0xce, 0xe0, 0x70, 0x38, 0x1c, + 0xe, /* U+72 "r" */ - 0xef, 0x3f, 0xef, 0x3f, 0x87, 0xe1, 0xf8, 0xe, - 0x3, 0x80, 0xe0, 0x38, 0xe, 0x0, + 0xee, 0x7f, 0xbc, 0xfc, 0x7e, 0x3f, 0x3, 0x81, + 0xc0, 0xe0, 0x70, 0x38, 0x0, /* U+73 "s" */ - 0x3f, 0x3f, 0xee, 0x1f, 0x80, 0xfc, 0x1f, 0xe0, - 0x3c, 0x7, 0xe1, 0xff, 0xe3, 0xf0, + 0x1f, 0x1f, 0xe7, 0x1d, 0xc0, 0x7c, 0xf, 0xe0, + 0x3c, 0x7, 0x71, 0xdf, 0xe3, 0xf0, /* U+74 "t" */ 0x1c, 0x7, 0x1, 0xc3, 0xff, 0xff, 0xc7, 0x1, - 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0xf, - 0xc1, 0xf0, + 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0x1f, + 0xc3, 0xf0, /* U+75 "u" */ 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, 0xc7, 0xe3, 0xbf, 0x8f, 0x80, /* U+76 "v" */ - 0xc0, 0xf8, 0x76, 0x19, 0x86, 0x73, 0x8c, 0xc3, + 0xe1, 0xf8, 0x76, 0x19, 0x86, 0x73, 0x8c, 0xc3, 0x30, 0xfc, 0x1e, 0x7, 0x81, 0xe0, /* U+77 "w" */ - 0xc6, 0x79, 0xcf, 0x39, 0xb5, 0x36, 0xa6, 0xd6, - 0xda, 0xdb, 0x4e, 0x79, 0xcf, 0x38, 0xc7, 0x0, + 0xe6, 0x36, 0x66, 0x66, 0x66, 0xf6, 0x6f, 0x66, + 0x96, 0x69, 0x62, 0x94, 0x39, 0xc3, 0x9c, 0x39, + 0xc0, /* U+78 "x" */ 0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81, - 0xe0, 0xfc, 0x73, 0x9c, 0x6e, 0x1c, + 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c, /* U+79 "y" */ - 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8e, 0xc3, - 0xf0, 0x7c, 0x1e, 0x3, 0x80, 0xc0, 0x70, 0x1c, - 0x6, 0x0, + 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3, + 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c, + 0x7, 0x1, 0x80, /* U+7A "z" */ - 0xff, 0xff, 0xc1, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xff, 0xff, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0x7f, 0xff, 0xe0, /* U+7B "{" */ - 0x7, 0x87, 0xc3, 0x81, 0xc0, 0xe0, 0x70, 0x38, + 0x3, 0x87, 0xc3, 0x81, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xfc, 0x7e, 0x3, 0x81, 0xc0, 0xe0, 0x70, - 0x38, 0x1c, 0xf, 0x83, 0xc0, + 0x38, 0x1c, 0x7, 0x81, 0xc0, /* U+7C "|" */ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, /* U+7D "}" */ - 0xf0, 0x3f, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x1, + 0xf0, 0x3e, 0x1, 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0xf, 0xc3, 0xf1, 0xc0, 0x70, 0x1c, 0x7, 0x1, 0xc0, 0x70, 0xf8, 0x3c, 0x0, /* U+7E "~" */ - 0x78, 0xff, 0x3c, 0xff, 0x1e, + 0x78, 0xff, 0x3c, 0xcf, 0x3f, 0xc7, 0x80, + + /* U+410 "А" */ + 0x1e, 0x7, 0x81, 0xe0, 0xfc, 0x3f, 0xc, 0xc3, + 0x31, 0xce, 0x73, 0x9f, 0xe7, 0xfb, 0x87, 0xe1, + 0xf0, 0x30, + + /* U+411 "Б" */ + 0xff, 0xbf, 0xee, 0x3, 0x80, 0xe0, 0x3f, 0xcf, + 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, + 0xbf, 0x80, + + /* U+412 "В" */ + 0xfe, 0x3f, 0xce, 0x3b, 0x8e, 0xe3, 0xb8, 0xcf, + 0xe3, 0xfc, 0xe3, 0xb8, 0x7e, 0x1f, 0x8f, 0xff, + 0xbf, 0xc0, + + /* U+413 "Г" */ + 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0x81, + 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0xe, 0x7, 0x0, + + /* U+414 "Д" */ + 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73, + 0x8e, 0x71, 0xce, 0x39, 0xc7, 0x38, 0xe7, 0x38, + 0xef, 0xff, 0xff, 0xf8, 0x3f, 0x7, 0xe0, 0xe0, + + /* U+415 "Е" */ + 0xff, 0xff, 0xf8, 0x1c, 0xe, 0x7, 0x3, 0xfd, + 0xfe, 0xe0, 0x70, 0x38, 0x1c, 0xf, 0xff, 0xfc, + + /* U+416 "Ж" */ + 0xe6, 0x76, 0x66, 0x66, 0x67, 0x66, 0x36, 0xc3, + 0x6c, 0x3f, 0xc3, 0x6c, 0x36, 0xc7, 0x6e, 0x66, + 0x66, 0x66, 0x66, 0x6c, 0x63, + + /* U+417 "З" */ + 0x1f, 0x8f, 0xfd, 0xc7, 0x80, 0x70, 0x1c, 0x3e, + 0x7, 0xf0, 0xf, 0x0, 0xe0, 0x1d, 0x83, 0xb8, + 0xf7, 0xfc, 0x3e, 0x0, + + /* U+418 "И" */ + 0xe7, 0xf3, 0xf9, 0xfc, 0xfe, 0xff, 0x7f, 0xaf, + 0xd7, 0xfb, 0xfd, 0xfc, 0xfe, 0x7f, 0x3f, 0x9c, + + /* U+419 "Й" */ + 0x63, 0x3b, 0x8f, 0x83, 0x80, 0x7, 0x3f, 0x9f, + 0xcf, 0xe7, 0xf7, 0xfb, 0xfd, 0x7e, 0xbf, 0xdf, + 0xef, 0xe7, 0xf3, 0xf9, 0xfc, 0xe0, + + /* U+41A "К" */ + 0xe1, 0xf8, 0x7e, 0x3b, 0x8e, 0xe7, 0x39, 0xcf, + 0xe3, 0xf8, 0xe7, 0x39, 0xce, 0x3b, 0x8e, 0xe1, + 0xf8, 0x70, + + /* U+41B "Л" */ + 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73, + 0x9c, 0xe7, 0x39, 0xce, 0x73, 0x9d, 0xe7, 0xf1, + 0xf8, 0x70, + + /* U+41C "М" */ + 0xf3, 0xfc, 0xfd, 0x2f, 0xcf, 0xff, 0xff, 0xfe, + 0xdf, 0xb7, 0xe1, 0xf8, 0x7e, 0x1f, 0x87, 0xe1, + 0xf8, 0x70, + + /* U+41D "Н" */ + 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xff, + 0xff, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, + + /* U+41E "О" */ + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, + + /* U+41F "П" */ + 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1c, + + /* U+420 "Р" */ + 0xff, 0x3f, 0xee, 0x3f, 0x87, 0xe1, 0xf8, 0xff, + 0xfb, 0xfc, 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, + 0x38, 0x0, + + /* U+421 "С" */ + 0x3f, 0x1f, 0xef, 0x3f, 0x87, 0xe0, 0x38, 0xe, + 0x3, 0x80, 0xe0, 0x38, 0xe, 0x1f, 0xcf, 0x7f, + 0x8f, 0xc0, + + /* U+422 "Т" */ + 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80, + 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x38, 0xe, + 0x3, 0x80, + + /* U+423 "У" */ + 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3, + 0xb0, 0x7c, 0x1e, 0x3, 0x80, 0xc0, 0x70, 0x1c, + 0x6, 0x0, + + /* U+424 "Ф" */ + 0xc, 0xf, 0xc7, 0xfb, 0xb7, 0xcc, 0xf3, 0x3c, + 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f, + 0x8f, 0xc0, 0xc0, 0x30, + + /* U+425 "Х" */ + 0xe1, 0xd8, 0x67, 0x38, 0xcc, 0x3f, 0x7, 0x81, + 0xe0, 0x78, 0x1e, 0xf, 0xc3, 0x31, 0xce, 0xe1, + 0xf8, 0x70, + + /* U+426 "Ц" */ + 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee, + 0x3b, 0x8e, 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xff, + 0xff, 0xf0, 0x1c, 0x7, 0x1, 0xc0, + + /* U+427 "Ч" */ + 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0xce, + 0xff, 0x3f, 0x81, 0xc0, 0xe0, 0x70, 0x38, 0x1c, + + /* U+428 "Ш" */ + 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, + 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xff, + 0xff, 0xf0, + + /* U+429 "Щ" */ + 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99, + 0xb3, 0x36, 0x66, 0xcc, 0xd9, 0x9b, 0x33, 0x66, + 0x6f, 0xff, 0xff, 0xc0, 0x18, 0x3, + + /* U+42A "Ъ" */ + 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1c, 0x1, + 0xfc, 0x1f, 0xe1, 0xcf, 0x1c, 0x71, 0xc7, 0x1c, + 0x71, 0xcf, 0x1f, 0xe1, 0xf8, + + /* U+42B "Ы" */ + 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xc0, 0xfe, 0x3f, + 0xcf, 0x3b, 0xc6, 0xf1, 0xbc, 0x6f, 0x3b, 0xfc, + 0xfe, 0x30, + + /* U+42C "Ь" */ + 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, 0x3f, 0xcf, + 0xfb, 0x8f, 0xe1, 0xf8, 0x7e, 0x1f, 0x8f, 0xff, + 0xbf, 0x80, + + /* U+42D "Э" */ + 0x3e, 0x3f, 0xb8, 0xfc, 0x70, 0x38, 0x1c, 0x7e, + 0x3f, 0x3, 0x81, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, + + /* U+42E "Ю" */ + 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xcc, 0xf3, 0x3f, + 0xcf, 0xf3, 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcf, + 0xf1, 0xe0, + + /* U+42F "Я" */ + 0x3f, 0xdf, 0xff, 0x1f, 0x87, 0xe1, 0xfc, 0x77, + 0xfc, 0xff, 0x39, 0xce, 0x77, 0x1d, 0xc7, 0x71, + 0xf8, 0x70, + + /* U+430 "а" */ + 0x1f, 0x1f, 0xe7, 0x1c, 0x7, 0x3f, 0xdf, 0xfe, + 0x1f, 0x87, 0xe3, 0xff, 0xf3, 0xdc, + + /* U+431 "б" */ + 0x1f, 0x3f, 0x9c, 0x1c, 0xe, 0xe7, 0xfb, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xfc, 0x77, 0xf1, 0xf0, + + /* U+432 "в" */ + 0xfe, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0xf3, 0xfd, + 0xc7, 0xe3, 0xff, 0xff, 0x80, + + /* U+433 "г" */ + 0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, + 0xe0, 0xe0, 0xe0, + + /* U+434 "д" */ + 0x3f, 0xc7, 0xf8, 0xe7, 0x1c, 0xe3, 0x9c, 0x73, + 0x8e, 0x71, 0xce, 0x71, 0xdf, 0xff, 0xff, 0xf0, + 0x7e, 0xf, 0xc1, 0xc0, + + /* U+435 "е" */ + 0x3e, 0x3f, 0xb8, 0xfc, 0x7f, 0xff, 0xff, 0x81, + 0xc0, 0xe3, 0xbf, 0x8f, 0x80, + + /* U+436 "ж" */ + 0xe6, 0x76, 0x66, 0x66, 0x63, 0x6c, 0x36, 0xc3, + 0xfc, 0x36, 0xc3, 0x6c, 0x66, 0x66, 0x66, 0xe6, + 0x70, + + /* U+437 "з" */ + 0x3f, 0x1f, 0xfe, 0x1c, 0x7, 0x1f, 0x7, 0xe0, + 0x1c, 0x7, 0xe1, 0xdf, 0xe3, 0xf0, + + /* U+438 "и" */ + 0xc3, 0xe3, 0xf1, 0xf9, 0xfc, 0xde, 0xef, 0x67, + 0xb3, 0xf1, 0xf8, 0xf8, 0x60, + + /* U+439 "й" */ + 0x63, 0x31, 0x8f, 0x83, 0x80, 0x6, 0x1f, 0x1f, + 0x8f, 0xcf, 0xe6, 0xf7, 0x7b, 0x3f, 0x9f, 0x8f, + 0xc7, 0xc3, + + /* U+43A "к" */ + 0xe1, 0xf8, 0xee, 0x33, 0x9c, 0xfe, 0x3f, 0x8e, + 0x73, 0x9c, 0xe3, 0xb8, 0x6e, 0x1c, + + /* U+43B "л" */ + 0x3f, 0xcf, 0xf3, 0x9c, 0xe7, 0x39, 0xce, 0x73, + 0x9c, 0xe7, 0x39, 0xfc, 0x7e, 0x1c, + + /* U+43C "м" */ + 0xe1, 0xf8, 0x7f, 0x3f, 0xcf, 0xda, 0xf7, 0xbd, + 0xef, 0x33, 0xc0, 0xf0, 0x3c, 0xc, + + /* U+43D "н" */ + 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3f, 0xff, 0xff, + 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, + + /* U+43E "о" */ + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xbf, 0x8f, 0x80, + + /* U+43F "п" */ + 0xff, 0xff, 0xf8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xf1, 0xf8, 0xe0, + + /* U+440 "р" */ + 0xee, 0x7f, 0xb8, 0xfc, 0x7e, 0x3f, 0x1f, 0x8f, + 0xc7, 0xe3, 0xff, 0xbb, 0x9c, 0xe, 0x7, 0x3, + 0x80, + + /* U+441 "с" */ + 0x3e, 0x3f, 0xb8, 0xfc, 0x7e, 0x7, 0x3, 0x81, + 0xc7, 0xe3, 0xbf, 0x8f, 0x80, + + /* U+442 "т" */ + 0xff, 0xff, 0xf0, 0xe0, 0x38, 0xe, 0x3, 0x80, + 0xe0, 0x38, 0xe, 0x3, 0x80, 0xe0, + + /* U+443 "у" */ + 0xe1, 0xf8, 0x76, 0x19, 0xce, 0x33, 0x8c, 0xc3, + 0xf0, 0x7c, 0x1e, 0x7, 0x80, 0xe0, 0x30, 0x1c, + 0x7, 0x1, 0x80, + + /* U+444 "ф" */ + 0xc, 0x3, 0x0, 0xc0, 0xfc, 0x7f, 0xbb, 0x7c, + 0xcf, 0x33, 0xcc, 0xf3, 0x3c, 0xcf, 0xb7, 0x7f, + 0x8f, 0xc0, 0xc0, 0x30, 0xc, 0x3, 0x0, + + /* U+445 "х" */ + 0xe1, 0xdc, 0xe3, 0x30, 0xfc, 0x1e, 0x7, 0x81, + 0xe0, 0xfc, 0x73, 0x9c, 0xee, 0x1c, + + /* U+446 "ц" */ + 0xe3, 0xb8, 0xee, 0x3b, 0x8e, 0xe3, 0xb8, 0xee, + 0x3b, 0x8e, 0xe3, 0xbf, 0xff, 0xfc, 0x7, 0x1, + 0xc0, 0x70, + + /* U+447 "ч" */ + 0xe3, 0xf1, 0xf8, 0xfc, 0x7e, 0x3b, 0xfc, 0xfe, + 0x7, 0x3, 0x81, 0xc0, 0xe0, + + /* U+448 "ш" */ + 0xcc, 0xf3, 0x3c, 0xcf, 0x33, 0xcc, 0xf3, 0x3c, + 0xcf, 0x33, 0xcc, 0xff, 0xff, 0xfc, + + /* U+449 "щ" */ + 0xcc, 0xd9, 0x9b, 0x33, 0x66, 0x6c, 0xcd, 0x99, + 0xb3, 0x36, 0x66, 0xcc, 0xdf, 0xff, 0xff, 0x80, + 0x30, 0x6, + + /* U+44A "ъ" */ + 0xfc, 0xf, 0xc0, 0x1c, 0x1, 0xc0, 0x1f, 0xc1, + 0xfe, 0x1c, 0x71, 0xc7, 0x1c, 0x71, 0xfe, 0x1f, + 0xc0, + + /* U+44B "ы" */ + 0xc0, 0xf0, 0x3c, 0xf, 0x3, 0xf8, 0xff, 0x3c, + 0x6f, 0x1b, 0xc6, 0xff, 0x3f, 0x8c, + + /* U+44C "ь" */ + 0xe0, 0x38, 0xe, 0x3, 0x80, 0xff, 0x3f, 0xee, + 0x1f, 0x87, 0xe1, 0xff, 0xef, 0xf0, + + /* U+44D "э" */ + 0x3e, 0x3f, 0xb8, 0xe0, 0x70, 0xf8, 0x7c, 0xf, + 0xc7, 0xe7, 0xbf, 0x8f, 0x80, + + /* U+44E "ю" */ + 0xc7, 0xb3, 0xfc, 0xcf, 0x33, 0xcc, 0xff, 0x3f, + 0xcf, 0x33, 0xcc, 0xf3, 0xfc, 0x78, + + /* U+44F "я" */ + 0x3f, 0xbf, 0xf8, 0xfc, 0x7e, 0x3f, 0xfd, 0xfe, + 0x77, 0x73, 0xb9, 0xf8, 0xe0, /* U+F001 "" */ 0x0, 0x0, 0x70, 0x0, 0x7f, 0x0, 0x3f, 0xf0, @@ -592,122 +879,186 @@ static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 7, .adv_w = 192, .box_w = 7, .box_h = 6, .ofs_x = 3, .ofs_y = 8}, {.bitmap_index = 13, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, {.bitmap_index = 33, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 57, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 77, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 97, .adv_w = 192, .box_w = 3, .box_h = 6, .ofs_x = 5, .ofs_y = 8}, - {.bitmap_index = 100, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 3, .ofs_y = -2}, - {.bitmap_index = 117, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -2}, - {.bitmap_index = 134, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, - {.bitmap_index = 147, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 2}, - {.bitmap_index = 159, .adv_w = 192, .box_w = 5, .box_h = 6, .ofs_x = 3, .ofs_y = -3}, - {.bitmap_index = 163, .adv_w = 192, .box_w = 8, .box_h = 2, .ofs_x = 2, .ofs_y = 5}, - {.bitmap_index = 165, .adv_w = 192, .box_w = 4, .box_h = 4, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 167, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 191, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 209, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 225, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 57, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 78, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 98, .adv_w = 192, .box_w = 3, .box_h = 6, .ofs_x = 5, .ofs_y = 8}, + {.bitmap_index = 101, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 3, .ofs_y = -2}, + {.bitmap_index = 118, .adv_w = 192, .box_w = 7, .box_h = 19, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 135, .adv_w = 192, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 1}, + {.bitmap_index = 148, .adv_w = 192, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 2}, + {.bitmap_index = 160, .adv_w = 192, .box_w = 5, .box_h = 6, .ofs_x = 3, .ofs_y = -4}, + {.bitmap_index = 164, .adv_w = 192, .box_w = 9, .box_h = 2, .ofs_x = 2, .ofs_y = 5}, + {.bitmap_index = 167, .adv_w = 192, .box_w = 4, .box_h = 3, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 169, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 193, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 211, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 227, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, {.bitmap_index = 243, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, {.bitmap_index = 261, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 277, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 293, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 311, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 329, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 347, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 365, .adv_w = 192, .box_w = 3, .box_h = 11, .ofs_x = 4, .ofs_y = 0}, - {.bitmap_index = 370, .adv_w = 192, .box_w = 5, .box_h = 14, .ofs_x = 3, .ofs_y = -3}, - {.bitmap_index = 379, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, - {.bitmap_index = 392, .adv_w = 192, .box_w = 9, .box_h = 7, .ofs_x = 2, .ofs_y = 3}, - {.bitmap_index = 400, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, - {.bitmap_index = 413, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 427, .adv_w = 192, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 451, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 472, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 490, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 508, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 277, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 295, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 313, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 331, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 349, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 367, .adv_w = 192, .box_w = 4, .box_h = 11, .ofs_x = 4, .ofs_y = 0}, + {.bitmap_index = 373, .adv_w = 192, .box_w = 5, .box_h = 15, .ofs_x = 3, .ofs_y = -4}, + {.bitmap_index = 383, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 396, .adv_w = 192, .box_w = 9, .box_h = 7, .ofs_x = 2, .ofs_y = 3}, + {.bitmap_index = 404, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 1}, + {.bitmap_index = 417, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 431, .adv_w = 192, .box_w = 11, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 456, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 474, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 492, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 510, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, {.bitmap_index = 526, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, {.bitmap_index = 542, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, {.bitmap_index = 558, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 576, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 592, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 608, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 626, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 646, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 662, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 680, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 696, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 714, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 732, .adv_w = 192, .box_w = 10, .box_h = 17, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 754, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 772, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 790, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 808, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 824, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 845, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 865, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 883, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 903, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 919, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 4, .ofs_y = -2}, - {.bitmap_index = 933, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 957, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 3, .ofs_y = -2}, - {.bitmap_index = 971, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 6}, - {.bitmap_index = 981, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 984, .adv_w = 192, .box_w = 5, .box_h = 3, .ofs_x = 3, .ofs_y = 13}, - {.bitmap_index = 986, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1000, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1018, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1032, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1050, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1064, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1082, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1100, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1116, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1135, .adv_w = 192, .box_w = 8, .box_h = 18, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1153, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1171, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1191, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1205, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1218, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1232, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1250, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1268, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1282, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1296, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1314, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1327, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1341, .adv_w = 192, .box_w = 11, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, - {.bitmap_index = 1357, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, - {.bitmap_index = 1371, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 1389, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, - {.bitmap_index = 1402, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 2, .ofs_y = -2}, - {.bitmap_index = 1423, .adv_w = 192, .box_w = 3, .box_h = 18, .ofs_x = 5, .ofs_y = -2}, - {.bitmap_index = 1430, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -2}, - {.bitmap_index = 1453, .adv_w = 192, .box_w = 10, .box_h = 4, .ofs_x = 1, .ofs_y = 5}, - {.bitmap_index = 1458, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1508, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1556, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 1599, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1647, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 1666, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 1716, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 1752, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 1800, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 1843, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 1881, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 1919, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 1957, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 1995, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, - {.bitmap_index = 2033, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, - {.bitmap_index = 2071, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, - {.bitmap_index = 2100, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, - {.bitmap_index = 2149, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, - {.bitmap_index = 2209, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3} + {.bitmap_index = 576, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 592, .adv_w = 192, .box_w = 8, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 606, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 624, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 642, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 658, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 676, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 692, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 708, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 726, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 749, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 767, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 785, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 803, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 819, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 837, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 857, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 875, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 895, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 911, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 4, .ofs_y = -2}, + {.bitmap_index = 925, .adv_w = 192, .box_w = 10, .box_h = 19, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 949, .adv_w = 192, .box_w = 6, .box_h = 18, .ofs_x = 3, .ofs_y = -2}, + {.bitmap_index = 963, .adv_w = 192, .box_w = 10, .box_h = 8, .ofs_x = 1, .ofs_y = 7}, + {.bitmap_index = 973, .adv_w = 192, .box_w = 10, .box_h = 2, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 976, .adv_w = 192, .box_w = 5, .box_h = 3, .ofs_x = 3, .ofs_y = 13}, + {.bitmap_index = 978, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 992, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1008, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1021, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1037, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1050, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1068, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 1085, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1101, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1120, .adv_w = 192, .box_w = 8, .box_h = 19, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 1139, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1157, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1177, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1191, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1204, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1217, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4}, + {.bitmap_index = 1234, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 1251, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1264, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1278, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1296, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1309, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1323, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1340, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1354, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 1373, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1386, .adv_w = 192, .box_w = 9, .box_h = 18, .ofs_x = 2, .ofs_y = -2}, + {.bitmap_index = 1407, .adv_w = 192, .box_w = 3, .box_h = 18, .ofs_x = 5, .ofs_y = -2}, + {.bitmap_index = 1414, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1437, .adv_w = 192, .box_w = 10, .box_h = 5, .ofs_x = 1, .ofs_y = 5}, + {.bitmap_index = 1444, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1462, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1480, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1498, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1514, .adv_w = 192, .box_w = 11, .box_h = 17, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 1538, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1554, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1575, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1595, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1611, .adv_w = 192, .box_w = 9, .box_h = 19, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1633, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1651, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1669, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1687, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1703, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1719, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1735, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1753, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1771, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1789, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1807, .adv_w = 192, .box_w = 10, .box_h = 16, .ofs_x = 1, .ofs_y = -1}, + {.bitmap_index = 1827, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1845, .adv_w = 192, .box_w = 10, .box_h = 17, .ofs_x = 2, .ofs_y = -3}, + {.bitmap_index = 1867, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1883, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1901, .adv_w = 192, .box_w = 11, .box_h = 16, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 1923, .adv_w = 192, .box_w = 12, .box_h = 14, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 1944, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1962, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 1980, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 1996, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2014, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2032, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2046, .adv_w = 192, .box_w = 9, .box_h = 14, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2062, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2075, .adv_w = 192, .box_w = 8, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2086, .adv_w = 192, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 2106, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2119, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2136, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2150, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2163, .adv_w = 192, .box_w = 9, .box_h = 16, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2181, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2195, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2209, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2223, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2236, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2249, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2262, .adv_w = 192, .box_w = 9, .box_h = 15, .ofs_x = 2, .ofs_y = -4}, + {.bitmap_index = 2279, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2292, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2306, .adv_w = 192, .box_w = 10, .box_h = 15, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 2325, .adv_w = 192, .box_w = 10, .box_h = 18, .ofs_x = 1, .ofs_y = -4}, + {.bitmap_index = 2348, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2362, .adv_w = 192, .box_w = 10, .box_h = 14, .ofs_x = 2, .ofs_y = -3}, + {.bitmap_index = 2380, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2393, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2407, .adv_w = 192, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = -2}, + {.bitmap_index = 2425, .adv_w = 192, .box_w = 12, .box_h = 11, .ofs_x = 0, .ofs_y = 0}, + {.bitmap_index = 2442, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2456, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 2, .ofs_y = 0}, + {.bitmap_index = 2470, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2483, .adv_w = 192, .box_w = 10, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2497, .adv_w = 192, .box_w = 9, .box_h = 11, .ofs_x = 1, .ofs_y = 0}, + {.bitmap_index = 2510, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2560, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2608, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2651, .adv_w = 320, .box_w = 19, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2699, .adv_w = 120, .box_w = 8, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2718, .adv_w = 320, .box_w = 20, .box_h = 20, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 2768, .adv_w = 240, .box_w = 15, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2804, .adv_w = 320, .box_w = 20, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 2852, .adv_w = 320, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 2895, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 2933, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 2971, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 3009, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 3047, .adv_w = 400, .box_w = 25, .box_h = 12, .ofs_x = 0, .ofs_y = 1}, + {.bitmap_index = 3085, .adv_w = 280, .box_w = 15, .box_h = 20, .ofs_x = 1, .ofs_y = -3}, + {.bitmap_index = 3123, .adv_w = 200, .box_w = 11, .box_h = 21, .ofs_x = 0, .ofs_y = -3}, + {.bitmap_index = 3152, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -1}, + {.bitmap_index = 3201, .adv_w = 400, .box_w = 25, .box_h = 19, .ofs_x = 0, .ofs_y = -2}, + {.bitmap_index = 3261, .adv_w = 320, .box_w = 20, .box_h = 21, .ofs_x = 0, .ofs_y = -3} }; /*--------------------- * CHARACTER MAPPING *--------------------*/ -static const uint16_t unicode_list_1[] = { +static const uint16_t unicode_list_2[] = { 0x0, 0x16, 0x39, 0x68, 0x128, 0x184, 0x1e5, 0x1fb, 0x21d, 0x23f, 0x240, 0x241, 0x242, 0x243, 0x292, 0x293, 0x3fc, 0x54a, 0x55f @@ -721,8 +1072,12 @@ static const lv_font_fmt_txt_cmap_t cmaps[] = .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY }, { - .range_start = 61441, .range_length = 1376, .glyph_id_start = 96, - .unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 19, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY + .range_start = 1040, .range_length = 64, .glyph_id_start = 96, + .unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY + }, + { + .range_start = 61441, .range_length = 1376, .glyph_id_start = 160, + .unicode_list = unicode_list_2, .glyph_id_ofs_list = NULL, .list_length = 19, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY } }; @@ -739,7 +1094,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = { .cmaps = cmaps, .kern_dsc = NULL, .kern_scale = 0, - .cmap_num = 2, + .cmap_num = 3, .bpp = 1, .kern_classes = 0, .bitmap_format = 0 @@ -754,13 +1109,19 @@ static lv_font_fmt_txt_dsc_t font_dsc = { lv_font_t jetbrains_mono_bold_20 = { .get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/ .get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/ - .line_height = 21, /*The maximum line height required by the font*/ - .base_line = 3, /*Baseline measured from the bottom of the line*/ + .line_height = 23, /*The maximum line height required by the font*/ + .base_line = 4, /*Baseline measured from the bottom of the line*/ #if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0) .subpx = LV_FONT_SUBPX_NONE, #endif +#if LV_VERSION_CHECK(7, 4, 0) + .underline_position = -2, + .underline_thickness = 1, +#endif .dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */ }; + + #endif /*#if JETBRAINS_MONO_BOLD_20*/ diff --git a/src/displayapp/screens/ApplicationList.cpp b/src/displayapp/screens/ApplicationList.cpp index 7eb97188..17026970 100644 --- a/src/displayapp/screens/ApplicationList.cpp +++ b/src/displayapp/screens/ApplicationList.cpp @@ -1,9 +1,10 @@ -#include <libs/lvgl/lvgl.h> -#include <displayapp/DisplayApp.h> -#include <functional> #include "ApplicationList.h" -#include "Tile.h" +#include <lvgl/lvgl.h> +#include <array> #include "Symbols.h" +#include "Tile.h" +#include "displayapp/Apps.h" +#include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/ApplicationList.h b/src/displayapp/screens/ApplicationList.h index 9c95acb8..aefb2385 100644 --- a/src/displayapp/screens/ApplicationList.h +++ b/src/displayapp/screens/ApplicationList.h @@ -1,14 +1,9 @@ #pragma once -#include <functional> -#include <vector> +#include <memory> -#include "components/ble/NimbleController.h" #include "Screen.h" -#include "Label.h" #include "ScreenList.h" -#include "Gauge.h" -#include "Meter.h" namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/BatteryIcon.cpp b/src/displayapp/screens/BatteryIcon.cpp index 26939d18..4c102477 100644 --- a/src/displayapp/screens/BatteryIcon.cpp +++ b/src/displayapp/screens/BatteryIcon.cpp @@ -1,5 +1,6 @@ #include "BatteryIcon.h" #include "Symbols.h" + using namespace Pinetime::Applications::Screens; const char* BatteryIcon::GetBatteryIcon(float batteryPercent) { diff --git a/src/displayapp/screens/BatteryIcon.h b/src/displayapp/screens/BatteryIcon.h index 58f04a87..f1001923 100644 --- a/src/displayapp/screens/BatteryIcon.h +++ b/src/displayapp/screens/BatteryIcon.h @@ -1,7 +1,5 @@ #pragma once -#include <libs/lvgl/src/lv_draw/lv_img_decoder.h> - namespace Pinetime { namespace Applications { namespace Screens { diff --git a/src/displayapp/screens/Brightness.cpp b/src/displayapp/screens/Brightness.cpp index 8ea9a771..c8085bed 100644 --- a/src/displayapp/screens/Brightness.cpp +++ b/src/displayapp/screens/Brightness.cpp @@ -1,5 +1,5 @@ -#include <libs/lvgl/lvgl.h> #include "Brightness.h" +#include <lvgl/lvgl.h> using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Brightness.h b/src/displayapp/screens/Brightness.h index 7d599acf..7aee968e 100644 --- a/src/displayapp/screens/Brightness.h +++ b/src/displayapp/screens/Brightness.h @@ -1,8 +1,9 @@ #pragma once -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include "components/brightness/BrightnessController.h" +#include <lvgl/src/lv_core/lv_obj.h> +#include <cstdint> #include "Screen.h" +#include "components/brightness/BrightnessController.h" namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/Clock.cpp b/src/displayapp/screens/Clock.cpp index 977321c1..57659141 100644 --- a/src/displayapp/screens/Clock.cpp +++ b/src/displayapp/screens/Clock.cpp @@ -1,15 +1,16 @@ -#include <cstdio> - -#include <libs/date/includes/date/date.h> -#include "components/datetime/DateTimeController.h" -#include <libs/lvgl/lvgl.h> #include "Clock.h" -#include "../DisplayApp.h" + +#include <date/date.h> +#include <lvgl/lvgl.h> +#include <cstdio> #include "BatteryIcon.h" #include "BleIcon.h" +#include "NotificationIcon.h" #include "Symbols.h" +#include "components/battery/BatteryController.h" +#include "components/ble/BleController.h" #include "components/ble/NotificationManager.h" -#include "NotificationIcon.h" +#include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; extern lv_font_t jetbrains_mono_extrabold_compressed; diff --git a/src/displayapp/screens/Clock.h b/src/displayapp/screens/Clock.h index 58149a79..4c5f60a0 100644 --- a/src/displayapp/screens/Clock.h +++ b/src/displayapp/screens/Clock.h @@ -1,17 +1,19 @@ #pragma once -#include <cstdint> +#include <lvgl/src/lv_core/lv_obj.h> #include <chrono> - +#include <cstdint> +#include <memory> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include "components/ble/NotificationManager.h" -#include "components/battery/BatteryController.h" -#include "components/ble/BleController.h" +#include "components/datetime/DateTimeController.h" namespace Pinetime { + namespace Controllers { + class Battery; + class Ble; + class NotificationManager; + } + namespace Applications { namespace Screens { @@ -34,7 +36,7 @@ namespace Pinetime { T value; bool isUpdated = true; }; - class Clock : public Screen{ + class Clock : public Screen { public: Clock(DisplayApp* app, Controllers::DateTime& dateTimeController, diff --git a/src/displayapp/screens/DropDownDemo.cpp b/src/displayapp/screens/DropDownDemo.cpp index ce3acd53..37728e17 100644 --- a/src/displayapp/screens/DropDownDemo.cpp +++ b/src/displayapp/screens/DropDownDemo.cpp @@ -1,6 +1,6 @@ -#include <libs/lvgl/lvgl.h> -#include <libraries/log/nrf_log.h> #include "DropDownDemo.h" +#include <lvgl/lvgl.h> +#include <libraries/log/nrf_log.h> #include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/DropDownDemo.h b/src/displayapp/screens/DropDownDemo.h index 7c75efc0..d66aeed0 100644 --- a/src/displayapp/screens/DropDownDemo.h +++ b/src/displayapp/screens/DropDownDemo.h @@ -2,15 +2,13 @@ #include <cstdint> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { namespace Applications { namespace Screens { - class DropDownDemo : public Screen{ + class DropDownDemo : public Screen { public: DropDownDemo(DisplayApp* app); ~DropDownDemo() override; diff --git a/src/displayapp/screens/FirmwareUpdate.cpp b/src/displayapp/screens/FirmwareUpdate.cpp index 778409eb..b9f891d0 100644 --- a/src/displayapp/screens/FirmwareUpdate.cpp +++ b/src/displayapp/screens/FirmwareUpdate.cpp @@ -1,5 +1,6 @@ -#include <libs/lvgl/lvgl.h> #include "FirmwareUpdate.h" +#include <lvgl/lvgl.h> +#include "components/ble/BleController.h" #include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/FirmwareUpdate.h b/src/displayapp/screens/FirmwareUpdate.h index 893fe68c..262e7afb 100644 --- a/src/displayapp/screens/FirmwareUpdate.h +++ b/src/displayapp/screens/FirmwareUpdate.h @@ -1,15 +1,12 @@ #pragma once -#include <cstdint> -#include <chrono> - #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include "components/ble/BleController.h" +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { + namespace Controllers { + class Ble; + } namespace Applications { namespace Screens { diff --git a/src/displayapp/screens/FirmwareValidation.cpp b/src/displayapp/screens/FirmwareValidation.cpp index 4ac399ff..d4165dc5 100644 --- a/src/displayapp/screens/FirmwareValidation.cpp +++ b/src/displayapp/screens/FirmwareValidation.cpp @@ -1,8 +1,8 @@ -#include <libs/lvgl/lvgl.h> #include "FirmwareValidation.h" -#include "../DisplayApp.h" -#include "../../Version.h" +#include <lvgl/lvgl.h> +#include "Version.h" #include "components/firmwarevalidator/FirmwareValidator.h" +#include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; extern lv_font_t jetbrains_mono_extrabold_compressed; @@ -87,5 +87,3 @@ void FirmwareValidation::OnButtonEvent(lv_obj_t *object, lv_event_t event) { } } - - diff --git a/src/displayapp/screens/FirmwareValidation.h b/src/displayapp/screens/FirmwareValidation.h index 947f5575..9eea86bd 100644 --- a/src/displayapp/screens/FirmwareValidation.h +++ b/src/displayapp/screens/FirmwareValidation.h @@ -1,10 +1,7 @@ #pragma once -#include <cstdint> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { namespace Controllers { diff --git a/src/displayapp/screens/Gauge.cpp b/src/displayapp/screens/Gauge.cpp index 81c283ca..1b9f2c6d 100644 --- a/src/displayapp/screens/Gauge.cpp +++ b/src/displayapp/screens/Gauge.cpp @@ -1,4 +1,3 @@ -#include <libs/lvgl/lvgl.h> #include "Gauge.h" #include "../DisplayApp.h" diff --git a/src/displayapp/screens/Gauge.h b/src/displayapp/screens/Gauge.h index 03c06bed..2a6b8f83 100644 --- a/src/displayapp/screens/Gauge.h +++ b/src/displayapp/screens/Gauge.h @@ -2,9 +2,7 @@ #include <cstdint> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> +#include <lvgl/lvgl.h> namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/InfiniPaint.cpp b/src/displayapp/screens/InfiniPaint.cpp index 3ea75e9e..65be6622 100644 --- a/src/displayapp/screens/InfiniPaint.cpp +++ b/src/displayapp/screens/InfiniPaint.cpp @@ -1,7 +1,6 @@ -#include <libs/lvgl/lvgl.h> -#include <libraries/log/nrf_log.h> #include "InfiniPaint.h" #include "../DisplayApp.h" +#include "../LittleVgl.h" using namespace Pinetime::Applications::Screens; extern lv_font_t jetbrains_mono_extrabold_compressed; diff --git a/src/displayapp/screens/InfiniPaint.h b/src/displayapp/screens/InfiniPaint.h index f29135d5..9a7ac076 100644 --- a/src/displayapp/screens/InfiniPaint.h +++ b/src/displayapp/screens/InfiniPaint.h @@ -1,31 +1,30 @@ #pragma once +#include <lvgl/lvgl.h> #include <cstdint> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include <drivers/St7789.h> -#include "displayapp/LittleVgl.h" namespace Pinetime { + namespace Components { + class LittleVgl; + } namespace Applications { namespace Screens { - + class InfiniPaint : public Screen { public: InfiniPaint(DisplayApp* app, Pinetime::Components::LittleVgl& lvgl); - + ~InfiniPaint() override; - + bool Refresh() override; - + bool OnButtonPushed() override; - + bool OnTouchEvent(TouchEvents event) override; - + bool OnTouchEvent(uint16_t x, uint16_t y) override; - + private: Pinetime::Components::LittleVgl& lvgl; static constexpr uint16_t width = 10; diff --git a/src/displayapp/screens/Label.cpp b/src/displayapp/screens/Label.cpp index 540776cc..4be7742a 100644 --- a/src/displayapp/screens/Label.cpp +++ b/src/displayapp/screens/Label.cpp @@ -1,4 +1,3 @@ -#include <libs/lvgl/lvgl.h> #include "Label.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Label.h b/src/displayapp/screens/Label.h index 3e7b3797..dba89bbf 100644 --- a/src/displayapp/screens/Label.h +++ b/src/displayapp/screens/Label.h @@ -1,6 +1,5 @@ #pragma once -#include <vector> #include "Screen.h" #include <lvgl/lvgl.h> diff --git a/src/displayapp/screens/Meter.cpp b/src/displayapp/screens/Meter.cpp index 273e111d..3c8e703c 100644 --- a/src/displayapp/screens/Meter.cpp +++ b/src/displayapp/screens/Meter.cpp @@ -1,5 +1,5 @@ -#include <libs/lvgl/lvgl.h> #include "Meter.h" +#include <lvgl/lvgl.h> #include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Meter.h b/src/displayapp/screens/Meter.h index ddf8be8d..86888dda 100644 --- a/src/displayapp/screens/Meter.h +++ b/src/displayapp/screens/Meter.h @@ -1,11 +1,9 @@ #pragma once #include <cstdint> -#include <chrono> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> +#include <lvgl/src/lv_core/lv_style.h> +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/Modal.cpp b/src/displayapp/screens/Modal.cpp index 29f7bfa7..d1a110ea 100644 --- a/src/displayapp/screens/Modal.cpp +++ b/src/displayapp/screens/Modal.cpp @@ -1,5 +1,5 @@ -#include <libs/lvgl/lvgl.h> #include "Modal.h" +#include <lvgl/lvgl.h> #include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Modal.h b/src/displayapp/screens/Modal.h index c616c294..9cc177f0 100644 --- a/src/displayapp/screens/Modal.h +++ b/src/displayapp/screens/Modal.h @@ -1,11 +1,8 @@ #pragma once -#include <cstdint> -#include <chrono> #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> +#include <lvgl/src/lv_core/lv_style.h> +#include <lvgl/src/lv_core/lv_obj.h> namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/Music.cpp b/src/displayapp/screens/Music.cpp index 225a15a4..c4ae3ac5 100644 --- a/src/displayapp/screens/Music.cpp +++ b/src/displayapp/screens/Music.cpp @@ -15,9 +15,13 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#include <libs/lvgl/lvgl.h> - #include "Music.h" +#include <cstdint> +#include "../DisplayApp.h" +#include "components/ble/MusicService.h" +#include "displayapp/icons/music/disc.cpp" +#include "displayapp/icons/music/disc_f_1.cpp" +#include "displayapp/icons/music/disc_f_2.cpp" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Music.h b/src/displayapp/screens/Music.h index 81ba7935..66bde21b 100644 --- a/src/displayapp/screens/Music.h +++ b/src/displayapp/screens/Music.h @@ -17,24 +17,16 @@ */ #pragma once -#include <cstdint> -#include <chrono> +#include <FreeRTOS.h> +#include <lvgl/src/lv_core/lv_obj.h> #include <string> - -#include "components/gfx/Gfx.h" -#include "components/battery/BatteryController.h" -#include "components/ble/BleController.h" -#include "components/ble/MusicService.h" #include "Screen.h" -#include <bits/unique_ptr.h> -#include <libs/lvgl/src/lv_core/lv_style.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include "../../Version.h" -#include "displayapp/icons/music/disc.cpp" -#include "displayapp/icons/music/disc_f_1.cpp" -#include "displayapp/icons/music/disc_f_2.cpp" namespace Pinetime { + namespace Controllers { + class MusicService; + } + namespace Applications { namespace Screens { class Music : public Screen { diff --git a/src/displayapp/screens/Notifications.cpp b/src/displayapp/screens/Notifications.cpp index 85848b2f..51a601c4 100644 --- a/src/displayapp/screens/Notifications.cpp +++ b/src/displayapp/screens/Notifications.cpp @@ -1,7 +1,5 @@ -#include <libs/lvgl/lvgl.h> -#include <displayapp/DisplayApp.h> -#include <functional> #include "Notifications.h" +#include <displayapp/DisplayApp.h> using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Notifications.h b/src/displayapp/screens/Notifications.h index fb4e1ef2..f5c6a860 100644 --- a/src/displayapp/screens/Notifications.h +++ b/src/displayapp/screens/Notifications.h @@ -1,11 +1,10 @@ #pragma once -#include <functional> -#include <vector> - +#include <lvgl/lvgl.h> +#include <cstdint> +#include <memory> #include "Screen.h" -#include "ScreenList.h" - +#include "components/ble/NotificationManager.h" namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/ScreenList.h b/src/displayapp/screens/ScreenList.h index b198634f..736e3634 100644 --- a/src/displayapp/screens/ScreenList.h +++ b/src/displayapp/screens/ScreenList.h @@ -1,10 +1,10 @@ #pragma once -#include <vector> +#include <array> #include <functional> -#include "components/ble/NimbleController.h" +#include <memory> #include "Screen.h" -#include "Label.h" +#include "../DisplayApp.h" namespace Pinetime { namespace Applications { diff --git a/src/displayapp/screens/SystemInfo.cpp b/src/displayapp/screens/SystemInfo.cpp index 83384fbd..d821ac76 100644 --- a/src/displayapp/screens/SystemInfo.cpp +++ b/src/displayapp/screens/SystemInfo.cpp @@ -1,9 +1,13 @@ -#include <libs/lvgl/lvgl.h> -#include <displayapp/DisplayApp.h> -#include <functional> #include "SystemInfo.h" -#include "../../Version.h" -#include "Tile.h" +#include <lvgl/lvgl.h> +#include "../DisplayApp.h" +#include "Label.h" +#include "Version.h" +#include "components/battery/BatteryController.h" +#include "components/ble/BleController.h" +#include "components/brightness/BrightnessController.h" +#include "components/datetime/DateTimeController.h" +#include "drivers/Watchdog.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/SystemInfo.h b/src/displayapp/screens/SystemInfo.h index 987a584b..a71bacc5 100644 --- a/src/displayapp/screens/SystemInfo.h +++ b/src/displayapp/screens/SystemInfo.h @@ -1,17 +1,24 @@ #pragma once -#include <functional> -#include <vector> - -#include "components/ble/NimbleController.h" +#include <memory> #include "Screen.h" -#include "Label.h" #include "ScreenList.h" -#include "Gauge.h" -#include "Meter.h" namespace Pinetime { + namespace Controllers { + class DateTime; + class Battery; + class BrightnessController; + class Ble; + } + + namespace Drivers { + class WatchdogView; + } + namespace Applications { + class DisplayApp; + namespace Screens { class SystemInfo : public Screen { public: diff --git a/src/displayapp/screens/Tab.cpp b/src/displayapp/screens/Tab.cpp deleted file mode 100644 index 44b806c0..00000000 --- a/src/displayapp/screens/Tab.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include <cstdio> -#include <libs/date/includes/date/date.h> -#include "components/datetime/DateTimeController.h" -#include <Version.h> -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include <libs/lvgl/src/lv_font/lv_font.h> -#include <libs/lvgl/lvgl.h> -#include <libraries/log/nrf_log.h> -#include "Tab.h" -#include "displayapp/DisplayApp.h" - - -using namespace Pinetime::Applications::Screens; - -extern lv_font_t jetbrains_mono_bold_20; - -//static void event_handler(lv_obj_t * obj, lv_event_t event) { -// Tile* screen = static_cast<Tile *>(obj->user_data); -// screen->OnObjectEvent(obj, event); -//} - -Tab::Tab(DisplayApp* app, Pinetime::Components::Gfx &gfx) : Screen(app, gfx) { -/*Create a Tab view object*/ - lv_obj_t *tabview; - tabview = lv_tabview_create(lv_scr_act(), NULL); - - /*Add 3 tabs (the tabs are page (lv_page) and can be scrolled*/ - lv_obj_t *tab1 = lv_tabview_add_tab(tabview, "Tab 1"); - lv_obj_t *tab2 = lv_tabview_add_tab(tabview, "Tab 2"); - lv_obj_t *tab3 = lv_tabview_add_tab(tabview, "Tab 3"); - - - /*Add content to the tabs*/ - lv_obj_t * label = lv_label_create(tab1, NULL); - lv_label_set_text(label, "This the first tab\n\n" - "If the content\n" - "of a tab\n" - "become too long\n" - "the it \n" - "automatically\n" - "become\n" - "scrollable."); - - label = lv_label_create(tab2, NULL); - lv_label_set_text(label, "Second tab"); - - label = lv_label_create(tab3, NULL); - lv_label_set_text(label, "Third tab"); - -} - -Tab::~Tab() { - lv_obj_clean(lv_scr_act()); -} - -void Tab::Refresh(bool fullRefresh) { - -} - -void Tab::OnObjectEvent(lv_obj_t *obj, lv_event_t event) { - if(event == LV_EVENT_CLICKED) { - NRF_LOG_INFO("Clicked"); - } - else if(event == LV_EVENT_VALUE_CHANGED) { - NRF_LOG_INFO("Toggled"); - } -} diff --git a/src/displayapp/screens/Tab.h b/src/displayapp/screens/Tab.h deleted file mode 100644 index e16dbb96..00000000 --- a/src/displayapp/screens/Tab.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include <cstdint> -#include "Screen.h" -#include <bits/unique_ptr.h> -#include <lvgl/src/lv_core/lv_style.h> - -namespace Pinetime { - namespace Applications { - namespace Screens { - class Tab : public Screen { - public: - explicit Tab(DisplayApp* app, Components::Gfx& gfx); - ~Tab() override; - void Refresh(bool fullRefresh) override; - void OnObjectEvent(lv_obj_t* obj, lv_event_t event); - - private: - - }; - } - } -} diff --git a/src/displayapp/screens/Tile.cpp b/src/displayapp/screens/Tile.cpp index 75fa6ef5..c1a5e94f 100644 --- a/src/displayapp/screens/Tile.cpp +++ b/src/displayapp/screens/Tile.cpp @@ -1,11 +1,5 @@ -#include <libs/lvgl/src/lv_core/lv_obj.h> -#include <libs/lvgl/src/lv_font/lv_font.h> -#include <libs/lvgl/lvgl.h> - #include "Tile.h" -#include "displayapp/DisplayApp.h" -#include "Symbols.h" -#include "../../Version.h" +#include "../DisplayApp.h" using namespace Pinetime::Applications::Screens; diff --git a/src/displayapp/screens/Tile.h b/src/displayapp/screens/Tile.h index cf5fcf15..7edf67b2 100644 --- a/src/displayapp/screens/Tile.h +++ b/src/displayapp/screens/Tile.h @@ -1,11 +1,11 @@ #pragma once +#include <lvgl/lvgl.h> #include <cstdint> -#include "Screen.h" -#include <bits/unique_ptr.h> +#include <memory> #include "Modal.h" -#include <lvgl/src/lv_core/lv_style.h> -#include <displayapp/Apps.h> +#include "Screen.h" +#include "../Apps.h" namespace Pinetime { namespace Applications { diff --git a/src/drivers/BufferProvider.h b/src/drivers/BufferProvider.h index 50fa253e..1be4317a 100644 --- a/src/drivers/BufferProvider.h +++ b/src/drivers/BufferProvider.h @@ -1,5 +1,6 @@ #pragma once #include <cstddef> +#include <cstdint> namespace Pinetime { namespace Drivers { diff --git a/src/drivers/Cst816s.cpp b/src/drivers/Cst816s.cpp index 94db3b34..e703b73b 100644 --- a/src/drivers/Cst816s.cpp +++ b/src/drivers/Cst816s.cpp @@ -1,8 +1,9 @@ +#include "Cst816s.h" #include <FreeRTOS.h> -#include <task.h> -#include <nrfx_log.h> #include <legacy/nrf_drv_gpiote.h> -#include "Cst816s.h" +#include <nrfx_log.h> +#include <task.h> + using namespace Pinetime::Drivers; /* References : diff --git a/src/drivers/Cst816s.h b/src/drivers/Cst816s.h index 4569e82f..b7876b88 100644 --- a/src/drivers/Cst816s.h +++ b/src/drivers/Cst816s.h @@ -1,6 +1,5 @@ #pragma once -#include <nrfx_twi.h> #include "TwiMaster.h" namespace Pinetime { diff --git a/src/drivers/DebugPins.cpp b/src/drivers/DebugPins.cpp index 5a12fd86..8457ba5f 100644 --- a/src/drivers/DebugPins.cpp +++ b/src/drivers/DebugPins.cpp @@ -1,5 +1,5 @@ -#include <hal/nrf_gpio.h> #include "DebugPins.h" +#include <hal/nrf_gpio.h> #ifdef USE_DEBUG_PINS void debugpins_init() { diff --git a/src/drivers/InternalFlash.cpp b/src/drivers/InternalFlash.cpp index db705d78..33c14473 100644 --- a/src/drivers/InternalFlash.cpp +++ b/src/drivers/InternalFlash.cpp @@ -1,5 +1,5 @@ -#include <mdk/nrf.h> #include "InternalFlash.h" +#include <mdk/nrf.h> using namespace Pinetime::Drivers; void InternalFlash::ErasePage(uint32_t address) { diff --git a/src/drivers/Spi.cpp b/src/drivers/Spi.cpp index 2d8aa3b8..0e7de4d5 100644 --- a/src/drivers/Spi.cpp +++ b/src/drivers/Spi.cpp @@ -1,6 +1,6 @@ +#include "Spi.h" #include <hal/nrf_gpio.h> #include <nrfx_log.h> -#include "Spi.h" using namespace Pinetime::Drivers; diff --git a/src/drivers/Spi.h b/src/drivers/Spi.h index 82ba8a65..e3cab459 100644 --- a/src/drivers/Spi.h +++ b/src/drivers/Spi.h @@ -1,12 +1,6 @@ #pragma once -#include <FreeRTOS.h> #include <cstdint> #include <cstddef> -#include <array> -#include <atomic> -#include <task.h> - -#include "BufferProvider.h" #include "SpiMaster.h" namespace Pinetime { diff --git a/src/drivers/SpiMaster.cpp b/src/drivers/SpiMaster.cpp index 2e5852a5..5f7c0642 100644 --- a/src/drivers/SpiMaster.cpp +++ b/src/drivers/SpiMaster.cpp @@ -1,10 +1,8 @@ -#include <FreeRTOS.h> +#include "SpiMaster.h" #include <hal/nrf_gpio.h> #include <hal/nrf_spim.h> -#include "SpiMaster.h" -#include <algorithm> -#include <task.h> #include <nrfx_log.h> +#include <algorithm> using namespace Pinetime::Drivers; diff --git a/src/drivers/SpiMaster.h b/src/drivers/SpiMaster.h index cd3193e4..cb79d90c 100644 --- a/src/drivers/SpiMaster.h +++ b/src/drivers/SpiMaster.h @@ -1,14 +1,10 @@ #pragma once -#include <FreeRTOS.h> -#include <cstdint> #include <cstddef> -#include <array> -#include <atomic> -#include <task.h> -#include <semphr.h> +#include <cstdint> -#include "BufferProvider.h" +#include <FreeRTOS.h> #include <semphr.h> +#include <task.h> namespace Pinetime { namespace Drivers { diff --git a/src/drivers/SpiNorFlash.cpp b/src/drivers/SpiNorFlash.cpp index bd24834e..3ea5afe7 100644 --- a/src/drivers/SpiNorFlash.cpp +++ b/src/drivers/SpiNorFlash.cpp @@ -1,7 +1,7 @@ +#include "SpiNorFlash.h" #include <hal/nrf_gpio.h> #include <libraries/delay/nrf_delay.h> #include <libraries/log/nrf_log.h> -#include "SpiNorFlash.h" #include "Spi.h" using namespace Pinetime::Drivers; diff --git a/src/drivers/SpiNorFlash.h b/src/drivers/SpiNorFlash.h index 10c25a01..7702d434 100644 --- a/src/drivers/SpiNorFlash.h +++ b/src/drivers/SpiNorFlash.h @@ -1,5 +1,6 @@ #pragma once #include <cstddef> +#include <cstdint> namespace Pinetime { namespace Drivers { diff --git a/src/drivers/St7789.cpp b/src/drivers/St7789.cpp index ed28c82c..2df2c531 100644 --- a/src/drivers/St7789.cpp +++ b/src/drivers/St7789.cpp @@ -1,7 +1,7 @@ +#include "St7789.h" #include <hal/nrf_gpio.h> #include <libraries/delay/nrf_delay.h> #include <nrfx_log.h> -#include "St7789.h" #include "Spi.h" using namespace Pinetime::Drivers; diff --git a/src/drivers/St7789.h b/src/drivers/St7789.h index 0b94cf24..053caccb 100644 --- a/src/drivers/St7789.h +++ b/src/drivers/St7789.h @@ -1,5 +1,6 @@ #pragma once #include <cstddef> +#include <cstdint> namespace Pinetime { namespace Drivers { diff --git a/src/drivers/TwiMaster.cpp b/src/drivers/TwiMaster.cpp index 3ff8a952..6a063ecf 100644 --- a/src/drivers/TwiMaster.cpp +++ b/src/drivers/TwiMaster.cpp @@ -1,7 +1,7 @@ -#include <nrfx_log.h> -#include <hal/nrf_gpio.h> -#include <cstring> #include "TwiMaster.h" +#include <cstring> +#include <hal/nrf_gpio.h> +#include <nrfx_log.h> using namespace Pinetime::Drivers; diff --git a/src/drivers/TwiMaster.h b/src/drivers/TwiMaster.h index 52e39098..399e3d0f 100644 --- a/src/drivers/TwiMaster.h +++ b/src/drivers/TwiMaster.h @@ -1,8 +1,8 @@ #pragma once #include <FreeRTOS.h> #include <semphr.h> -#include <drivers/include/nrfx_twi.h> - +#include <drivers/include/nrfx_twi.h> // NRF_TWIM_Type +#include <cstdint> namespace Pinetime { namespace Drivers { diff --git a/src/drivers/Watchdog.cpp b/src/drivers/Watchdog.cpp index 11da1211..d09fbcd1 100644 --- a/src/drivers/Watchdog.cpp +++ b/src/drivers/Watchdog.cpp @@ -1,7 +1,5 @@ -#include <mdk/nrf52.h> -#include <mdk/nrf52_bitfields.h> -#include <nrf_soc.h> #include "Watchdog.h" +#include <mdk/nrf.h> using namespace Pinetime::Drivers; diff --git a/src/drivers/Watchdog.h b/src/drivers/Watchdog.h index 73f99ea1..0c816a4e 100644 --- a/src/drivers/Watchdog.h +++ b/src/drivers/Watchdog.h @@ -1,4 +1,5 @@ #pragma once +#include <cstdint> namespace Pinetime { namespace Drivers { diff --git a/src/logging/NrfLogger.cpp b/src/logging/NrfLogger.cpp index 0d95c06a..9f7624be 100644 --- a/src/logging/NrfLogger.cpp +++ b/src/logging/NrfLogger.cpp @@ -1,9 +1,8 @@ +#include "NrfLogger.h" + +#include <libraries/log/nrf_log.h> #include <libraries/log/nrf_log_ctrl.h> #include <libraries/log/nrf_log_default_backends.h> -#include <FreeRTOS.h> -#include <task.h> -#include <libraries/log/nrf_log.h> -#include "NrfLogger.h" using namespace Pinetime::Logging; diff --git a/src/logging/NrfLogger.h b/src/logging/NrfLogger.h index cb7089f2..fb68b919 100644 --- a/src/logging/NrfLogger.h +++ b/src/logging/NrfLogger.h @@ -1,6 +1,9 @@ #pragma once #include "Logger.h" +#include <FreeRTOS.h> +#include <task.h> + namespace Pinetime { namespace Logging{ class NrfLogger : public Logger { diff --git a/src/main.cpp b/src/main.cpp index 45aac6de..35057045 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,32 +1,44 @@ -#include <FreeRTOS.h> -#include <task.h> -#include <timers.h> -#include <legacy/nrf_drv_clock.h> +// nrf #include <hal/nrf_rtc.h> #include <hal/nrf_wdt.h> -#include <os/os_cputime.h> -#include <libraries/timer/app_timer.h> +#include <legacy/nrf_drv_clock.h> #include <libraries/gpiote/app_gpiote.h> -#include "displayapp/DisplayApp.h" +#include <libraries/timer/app_timer.h> #include <softdevice/common/nrf_sdh.h> -#include "components/datetime/DateTimeController.h" -#include "components/battery/BatteryController.h" -#include "components/ble/BleController.h" -#include "components/ble/NotificationManager.h" -#include <drivers/St7789.h> -#include <drivers/SpiMaster.h> -#include <drivers/Spi.h> -#include "displayapp/LittleVgl.h" -#include <systemtask/SystemTask.h> -#include <nimble/nimble_port_freertos.h> -#include <nimble/npl_freertos.h> -#include <nimble/nimble_port.h> -#include <host/ble_hs.h> + +// nimble +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <controller/ble_ll.h> -#include <transport/ram/ble_hci_ram.h> +#include <host/ble_hs.h> #include <host/util/util.h> +#include <nimble/nimble_port.h> +#include <nimble/nimble_port_freertos.h> +#include <nimble/npl_freertos.h> +#include <os/os_cputime.h> #include <services/gap/ble_svc_gap.h> +#include <transport/ram/ble_hci_ram.h> +#undef max +#undef min + +// FreeRTOS +#include <FreeRTOS.h> +#include <task.h> +#include <timers.h> +#include "components/battery/BatteryController.h" +#include "components/ble/BleController.h" +#include "components/ble/NotificationManager.h" +#include "components/datetime/DateTimeController.h" +#include "displayapp/DisplayApp.h" +#include "displayapp/LittleVgl.h" +#include "drivers/Spi.h" +#include "drivers/SpiMaster.h" +#include "drivers/SpiNorFlash.h" +#include "drivers/St7789.h" +#include "drivers/TwiMaster.h" +#include "drivers/Cst816s.h" +#include "systemtask/SystemTask.h" #if NRF_LOG_ENABLED #include "logging/NrfLogger.h" @@ -2,6 +2,7 @@ #include <FreeRTOS.h> #include <timers.h> +#include <nrfx_gpiote.h> void nrfx_gpiote_evt_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action); void DebounceTimerCallback(TimerHandle_t xTimer);
\ No newline at end of file diff --git a/src/systemtask/SystemTask.cpp b/src/systemtask/SystemTask.cpp index dac4ce29..9cd2f5e9 100644 --- a/src/systemtask/SystemTask.cpp +++ b/src/systemtask/SystemTask.cpp @@ -1,19 +1,27 @@ -#include <libraries/log/nrf_log.h> -#include <libraries/gpiote/app_gpiote.h> -#include <drivers/Cst816s.h> -#include "displayapp/LittleVgl.h" -#include <hal/nrf_rtc.h> -#include "components/ble/NotificationManager.h" -#include <host/ble_gatt.h> -#include <host/ble_hs_adv.h> #include "SystemTask.h" -#include <nimble/hci_common.h> +#define min // workaround: nimble's min/max macros conflict with libstdc++ +#define max #include <host/ble_gap.h> +#include <host/ble_gatt.h> +#include <host/ble_hs_adv.h> #include <host/util/util.h> -#include <drivers/InternalFlash.h> +#include <nimble/hci_common.h> +#undef max +#undef min +#include <hal/nrf_rtc.h> +#include <libraries/gpiote/app_gpiote.h> +#include <libraries/log/nrf_log.h> + +#include "BootloaderVersion.h" +#include "components/ble/BleController.h" +#include "displayapp/LittleVgl.h" +#include "drivers/Cst816s.h" +#include "drivers/St7789.h" +#include "drivers/InternalFlash.h" +#include "drivers/SpiMaster.h" +#include "drivers/SpiNorFlash.h" +#include "drivers/TwiMaster.h" #include "main.h" -#include "components/ble/NimbleController.h" -#include "../BootloaderVersion.h" using namespace Pinetime::System; @@ -107,21 +115,22 @@ void SystemTask::Work() { while(true) { uint8_t msg; if (xQueueReceive(systemTasksMsgQueue, &msg, isSleeping ? 2500 : 1000)) { + batteryController.Update(); Messages message = static_cast<Messages >(msg); switch(message) { case Messages::GoToRunning: spi.Wakeup(); twiMaster.Wakeup(); + nimbleController.StartAdvertising(); + xTimerStart(idleTimer, 0); spiNorFlash.Wakeup(); - lcd.Wakeup(); touchPanel.Wakeup(); + lcd.Wakeup(); displayApp->PushMessage(Applications::DisplayApp::Messages::GoToRunning); displayApp->PushMessage(Applications::DisplayApp::Messages::UpdateBatteryLevel); - xTimerStart(idleTimer, 0); - nimbleController.StartAdvertising(); isSleeping = false; isWakingUp = false; break; @@ -190,12 +199,9 @@ void SystemTask::Work() { } } + monitor.Process(); uint32_t systick_counter = nrf_rtc_counter_get(portNRF_RTC_REG); dateTimeController.UpdateTime(systick_counter); - batteryController.Update(); - - monitor.Process(); - if(!nrf_gpio_pin_read(pinButton)) watchdog.Kick(); } diff --git a/src/systemtask/SystemTask.h b/src/systemtask/SystemTask.h index 6ef0cfbf..fe6e7cbe 100644 --- a/src/systemtask/SystemTask.h +++ b/src/systemtask/SystemTask.h @@ -4,17 +4,23 @@ #include <FreeRTOS.h> #include <task.h> -#include <drivers/SpiMaster.h> -#include <drivers/St7789.h> -#include "components/battery/BatteryController.h" -#include "displayapp/DisplayApp.h" -#include <drivers/Watchdog.h> -#include <drivers/SpiNorFlash.h> +#include <timers.h> + #include "SystemMonitor.h" +#include "components/battery/BatteryController.h" #include "components/ble/NimbleController.h" -#include "timers.h" +#include "components/ble/NotificationManager.h" +#include "displayapp/DisplayApp.h" +#include "drivers/Watchdog.h" namespace Pinetime { + namespace Drivers { + class Cst816S; + class SpiMaster; + class SpiNorFlash; + class St7789; + class TwiMaster; + } namespace System { class SystemTask { public: |
