C

Qt Quick Ultralite Thermostat Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "thermo.h"

#if defined(QUL_PRIVATE_THERMO_VALIDATE_MONOTYPEDATATABLES)
#include <qul/monotype/monotypedatatables.h>
#include "ErrorScreen.h"
#endif

#include <qul/application.h>
#include <qul/qul.h>

int main()
{
    Qul::initHardware();
    Qul::initPlatform();

#if defined(APP_TEXT_CACHE_SIZE)
    Qul::ApplicationConfiguration appConfig;

    appConfig.setTextCacheEnabled(true);
    appConfig.setTextCacheSize(APP_TEXT_CACHE_SIZE);

    Qul::Application app(appConfig);
#else
    Qul::Application app;
#endif

#if defined(QUL_PRIVATE_THERMO_VALIDATE_MONOTYPEDATATABLES)
    // If the Monotype data tables are placed in external flash,
    // the application can use the Qul::validateMonotypeDataTableChecksums()
    // API to validate the data, and handle errors accordingly,
    // for example, by downloading new firmware using OTA.
    if (!Qul::validateMonotypeDataTableChecksums()) {
        // Error recovery could be done here, but for demo purposes
        // an error screen without any text is shown
        static ErrorScreen errorScreen;
        app.setRootItem(&errorScreen);
        app.exec();
        return 0;
    }
#endif

    /* Root item instance should be defined as static local to avoid
     * the instance to be placed in RTOS thread stack. Thread stack
     * may not be enough to accommodate it.
     * */
    static thermo item;
    app.setRootItem(&item);
    app.exec();
    return 0;
}