/* Unitemp - Universal temperature reader Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef UNITEMP #define UNITEMP /* Подключение стандартных библиотек */ /* Подключение API Flipper Zero */ //Файловый поток #include //Экран #include #include #include #include //Уведомления #include #include /* Внутренние библиотеки */ //Интерфейсы подключения датчиков #include "Sensors.h" /* Объявление макроподстановок */ //Имя приложения #define APP_NAME "Unitemp" //Версия приложения #define UNITEMP_APP_VER "1.4" //Путь хранения файлов плагина #define APP_PATH_FOLDER "/ext/unitemp" //Имя файла с настройками #define APP_FILENAME_SETTINGS "settings.cfg" //Имя файла с датчиками #define APP_FILENAME_SENSORS "sensors.cfg" //Размер буффера текста #define BUFF_SIZE 32 #define UNITEMP_D #ifdef FURI_DEBUG #define UNITEMP_DEBUG(msg, ...) FURI_LOG_D(APP_NAME, msg, ##__VA_ARGS__) #else #define UNITEMP_DEBUG(msg, ...) #endif /* Объявление перечислений */ //Единицы измерения температуры typedef enum { UT_TEMP_CELSIUS, UT_TEMP_FAHRENHEIT, UT_TEMP_COUNT } tempMeasureUnit; //Единицы измерения давления typedef enum { UT_PRESSURE_MM_HG, UT_PRESSURE_IN_HG, UT_PRESSURE_KPA, UT_PRESSURE_HPA, UT_PRESSURE_COUNT } pressureMeasureUnit; /* Объявление структур */ //Настройки плагина typedef struct { //Бесконечная работа подсветки bool infinityBacklight; //Единица измерения температуры tempMeasureUnit temp_unit; //Единица измерения давления pressureMeasureUnit pressure_unit; // Do calculate and show heat index bool heat_index; //Последнее состояние OTG bool lastOTGState; } UnitempSettings; //Основная структура плагина typedef struct { //Система bool processing; //Флаг работы приложения. При ложном значении приложение закрывается bool sensors_ready; //Флаг готовности датчиков к опросу //Основные настройки UnitempSettings settings; //Массив указателей на датчики Sensor** sensors; //Количество загруженных датчиков uint8_t sensors_count; //SD-карта Storage* storage; //Хранилище Stream* file_stream; //Файловый поток //Экран Gui* gui; ViewDispatcher* view_dispatcher; NotificationApp* notifications; Widget* widget; Popup* popup; //Буффер для различного текста char* buff; } Unitemp; /* Объявление прототипов функций */ /** * @brief Calculates the heat index in Celsius from the temperature and humidity and stores it in the sensor heat_index field * * @param sensor The sensor struct, with temperature in Celcius and humidity in percent */ void unitemp_calculate_heat_index(Sensor* sensor); /** * @brief Перевод значения температуры датчика из Цельсия в Фаренгейты * * @param sensor Указатель на датчик */ void uintemp_celsiumToFarengate(Sensor* sensor); /** * @brief Конвертация давления из паскалей в мм рт.ст. * * @param sensor Указатель на датчик */ void unitemp_pascalToMmHg(Sensor* sensor); /** * @brief Конвертация давления из паскалей в килопаскали * * @param sensor Указатель на датчик */ void unitemp_pascalToKPa(Sensor* sensor); /** * @brief Конвертация давления из паскалей в дюйм рт.ст. * * @param sensor Указатель на датчик */ void unitemp_pascalToHPa(Sensor* sensor); /** * * Mod BySepa - linktr.ee/BySepa * */ void unitemp_pascalToInHg(Sensor* sensor); /** * @brief Сохранение настроек на SD-карту * * @return Истина если сохранение успешное */ bool unitemp_saveSettings(void); /** * @brief Загрузка настроек с SD-карты * * @return Истина если загрузка успешная */ bool unitemp_loadSettings(void); extern Unitemp* app; #endif