Merge branch 'tahoma'
# Conflicts: # Raumtermostat/.vscode/settings.json # Raumtermostat/platformio.ini # Raumtermostat/src/lv_conf.h # Raumtermostat/src/main.cpp # Raumtermostat/src/tahoma.cpp # Raumtermostat/src/tahoma.h # Raumtermostat/src/ui/Bootstrap_Icons_12.c # Raumtermostat/src/ui/Bootstrap_Icons_16.c # Raumtermostat/src/ui/Bootstrap_Icons_18.c # Raumtermostat/src/ui/Bootstrap_Icons_20.c # Raumtermostat/src/ui/actions.cpp # Raumtermostat/src/ui/actions.h # Raumtermostat/src/ui/screens.c # Raumtermostat/src/ui/screens.h # Raumtermostat/src/ui/styles.c # Raumtermostat/src/ui/styles.h # Raumtermostat/src/ui/symbols.h # Raumtermostat/src/ui/ui.cpp
This commit is contained in:
Vendored
+8
-7
@@ -70,11 +70,12 @@
|
||||
"arduino.h": "c",
|
||||
"actions.h": "c",
|
||||
"glbldata.h": "c",
|
||||
"vars.h": "c",
|
||||
"fonts.h": "c",
|
||||
"images.h": "c",
|
||||
"tahoma.h": "c",
|
||||
"httpclient.h": "c",
|
||||
"base64.h": "c"
|
||||
}
|
||||
"vars.h": "c"
|
||||
},
|
||||
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, ColumnLimit: 250 }",
|
||||
"C_Cpp.clang_format_style": "{ BasedOnStyle: WebKit, ColumnLimit: 250 }",
|
||||
"editor.wordWrapColumn": 250,
|
||||
"html.format.wrapLineLength": 250,
|
||||
"C_Cpp.vcFormat.wrap.preserveBlocks": "oneLiners",
|
||||
"C_Cpp.formatting": "vcFormat"
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"files.associations": {
|
||||
"styles.h": "c",
|
||||
"string.h": "c",
|
||||
"system_error": "cpp",
|
||||
"random": "c",
|
||||
"screens.h": "c",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"bit": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"bitset": "cpp",
|
||||
"cctype": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"compare": "cpp",
|
||||
"concepts": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"map": "cpp",
|
||||
"string": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"ratio": "cpp",
|
||||
"regex": "cpp",
|
||||
"string_view": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"iostream": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"new": "cpp",
|
||||
"numbers": "cpp",
|
||||
"ostream": "cpp",
|
||||
"semaphore": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"stop_token": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"thread": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp",
|
||||
"format": "cpp",
|
||||
"ui.h": "c",
|
||||
"lvgl.h": "c",
|
||||
"symbols.h": "c",
|
||||
"arduino.h": "c",
|
||||
"actions.h": "c",
|
||||
"glbldata.h": "c",
|
||||
"vars.h": "c"
|
||||
},
|
||||
"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, ColumnLimit: 250 }",
|
||||
"C_Cpp.clang_format_style": "{ BasedOnStyle: WebKit, ColumnLimit: 250 }",
|
||||
"editor.wordWrapColumn": 250,
|
||||
"html.format.wrapLineLength": 250,
|
||||
"C_Cpp.vcFormat.wrap.preserveBlocks": "oneLiners",
|
||||
"C_Cpp.formatting": "vcFormat"
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,7 @@ uint8_t TouchDrvCST92xx::getPoint(int16_t *x_array, int16_t *y_array, uint8_t ge
|
||||
}
|
||||
*/
|
||||
|
||||
for (uint8_t i = 0; i < numPoints; ++i) {
|
||||
for (uint8_t i = 0; i < 1; ++i) {
|
||||
uint8_t *data = read_buffer + (i * 5) + (i == 0 ? 0 : 2);
|
||||
parseFingerData(data, &point_info[i]);
|
||||
x_array[i] = point_info[i].x;
|
||||
|
||||
@@ -14,11 +14,11 @@ board = seeed_xiao_esp32c3
|
||||
monitor_speed = 115200
|
||||
framework = arduino
|
||||
board_build.partitions = min_spiffs.csv
|
||||
;upload_protocol = espota
|
||||
;upload_port = 192.168.179.41
|
||||
upload_protocol = espota
|
||||
upload_port = TMP-EG-Bad.fritz.box
|
||||
lib_deps =
|
||||
moononournation/GFX Library for Arduino@^1.5.3
|
||||
lvgl/lvgl@^9.2.2
|
||||
lvgl/lvgl@^9.4.0
|
||||
finitespace/BME280@^3.0.0
|
||||
tzapu/WiFiManager@^2.0.17
|
||||
build_flags =
|
||||
@@ -26,4 +26,5 @@ build_flags =
|
||||
-D LV_LVGL_H_INCLUDE_SIMPLE
|
||||
-I src
|
||||
;to install on all targets:
|
||||
;(pio run -t nobuild -t upload --upload-port TMP-EG-WoZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Florian.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OG-Buero.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OG-KiZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OGSchlafen.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OGWoZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Buero.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Kueche.fritz.box)
|
||||
;(pio run -t nobuild -t upload --upload-port TMP-EG-WoZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Florian.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Magdalena.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-EG-Schlafen.fritz.box)
|
||||
;-and (pio run -t nobuild -t upload --upload-port TMP-OG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OG-Buero.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OG-KiZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OGSchlafen.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-OGWoZi.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Bad.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Buero.fritz.box) -and (pio run -t nobuild -t upload --upload-port TMP-UG-Kueche.fritz.box)
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
WiFiUDP MQTT::udp;
|
||||
const char* MQTT::months[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
|
||||
bool MQTT::forceStatusUpdate={false};
|
||||
|
||||
AsyncWebServer* MQTT::server = new AsyncWebServer(80);
|
||||
AsyncWebSocket* MQTT::ws = new AsyncWebSocket("/ws");
|
||||
@@ -129,7 +130,30 @@ void MQTT::saveConfigToFlash(void){
|
||||
}
|
||||
|
||||
void MQTT::receiveTopic(char* topic, byte* payload, unsigned int length) {
|
||||
glblData.outTemp = String((char*)payload).toFloat();
|
||||
String strTopic = String(topic);
|
||||
if(strTopic.endsWith("/tempAmb")){
|
||||
glblData.outTemp = String((char*)payload,length).toFloat();
|
||||
}
|
||||
else if(strTopic.endsWith("/changeSetTemp")){
|
||||
float newSetTemp = String((char*)payload,length).toFloat();
|
||||
if(newSetTemp >= 5.0 && newSetTemp <= 30.0){
|
||||
glblData.settemp = newSetTemp;
|
||||
ui_settemp(glblData.settemp);
|
||||
forceStatusUpdate = true;
|
||||
remoteLog("MQTT: new SetTemp received: ", newSetTemp);
|
||||
}
|
||||
}else if(strTopic.endsWith("/changeMode")){
|
||||
String strVal = String((char*)payload,length);
|
||||
if(strVal.equalsIgnoreCase("overheating")){
|
||||
glblData.override = OVR_ALWAYSON;
|
||||
}else if(strVal.equalsIgnoreCase("frost-prevention")){
|
||||
glblData.override = OVR_ALWAYSOFF;
|
||||
}else{
|
||||
glblData.override = OVR_NONE;
|
||||
}
|
||||
remoteLog("MQTT: ON mode received", strVal.c_str());
|
||||
forceStatusUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
void MQTT::reconnect(void) {
|
||||
@@ -138,6 +162,13 @@ void MQTT::reconnect(void) {
|
||||
// Attempt to connect
|
||||
if (psclient.connect(Settings::prefs.hostname)) {
|
||||
psclient.subscribe("weatherStation/tempAmb");
|
||||
char newtopic[60];
|
||||
strcpy(newtopic,Settings::prefs.mqtt_topic);
|
||||
strcat(newtopic,"/changeSetTemp");
|
||||
psclient.subscribe(newtopic);
|
||||
strcpy(newtopic,Settings::prefs.mqtt_topic);
|
||||
strcat(newtopic,"/changeMode");
|
||||
psclient.subscribe(newtopic);
|
||||
Serial.println("connected");
|
||||
|
||||
} else {
|
||||
@@ -149,6 +180,10 @@ void MQTT::reconnect(void) {
|
||||
void MQTT::loop(void){
|
||||
static uint32_t resetCnt = 0;
|
||||
unsigned long now = millis();
|
||||
if(forceStatusUpdate){
|
||||
forceStatusUpdate = false;
|
||||
sendStatus();
|
||||
}
|
||||
if(now-lastStatusUpdate > 15000){ //update wifi status every 15secs.
|
||||
lastStatusUpdate = now;
|
||||
if(WiFi.isConnected()){
|
||||
@@ -348,6 +383,15 @@ void MQTT::sendStatus(void){
|
||||
publish_sub("Set Temp[degC]",buffer,true);
|
||||
snprintf(buffer, sizeof buffer, "%d", WiFi.RSSI());
|
||||
publish_sub("RSSI [dBm]",buffer,true);
|
||||
if(glblData.override == OVR_ALWAYSON){
|
||||
publish_sub("mode","Overheating",true);
|
||||
}else if(glblData.override == OVR_ALWAYSOFF){
|
||||
publish_sub("mode","Frost-prevention",true);
|
||||
}else if(glblData.override == OVR_NONE){
|
||||
publish_sub("mode","Normal",true);
|
||||
}else{
|
||||
publish_sub("mode","Unknown",true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <WiFiClient.h>
|
||||
#include <ArduinoOTA.h>
|
||||
#include <ui/vars.h>
|
||||
#include <ui/actions.h>
|
||||
#include <MQTT.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include <settings.h>
|
||||
@@ -57,6 +58,7 @@ public:
|
||||
|
||||
private:
|
||||
static const char* months[];
|
||||
static bool forceStatusUpdate;
|
||||
static void serveData(AsyncWebServerRequest *request);
|
||||
//static void serveIndex(AsyncWebServerRequest *request);
|
||||
//static void serveCss(AsyncWebServerRequest *request);
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
|
||||
/*Size of the memory available for `lv_malloc()` in bytes (>= 2kB)*/
|
||||
#define LV_MEM_SIZE (64 * 1024U) /*[bytes]*/
|
||||
#define LV_MEM_SIZE (96 * 1024U) /*[bytes]*/
|
||||
|
||||
/*Size of the memory expand for `lv_malloc()` in bytes*/
|
||||
#define LV_MEM_POOL_EXPAND_SIZE 0
|
||||
@@ -481,11 +481,11 @@
|
||||
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
|
||||
*https://fonts.google.com/specimen/Montserrat*/
|
||||
#define LV_FONT_MONTSERRAT_8 0
|
||||
#define LV_FONT_MONTSERRAT_10 1
|
||||
#define LV_FONT_MONTSERRAT_10 0
|
||||
#define LV_FONT_MONTSERRAT_12 0
|
||||
#define LV_FONT_MONTSERRAT_14 1
|
||||
#define LV_FONT_MONTSERRAT_14 0
|
||||
#define LV_FONT_MONTSERRAT_16 0
|
||||
#define LV_FONT_MONTSERRAT_18 1
|
||||
#define LV_FONT_MONTSERRAT_18 0
|
||||
#define LV_FONT_MONTSERRAT_20 0
|
||||
#define LV_FONT_MONTSERRAT_22 0
|
||||
#define LV_FONT_MONTSERRAT_24 0
|
||||
@@ -495,7 +495,7 @@
|
||||
#define LV_FONT_MONTSERRAT_32 0
|
||||
#define LV_FONT_MONTSERRAT_34 0
|
||||
#define LV_FONT_MONTSERRAT_36 0
|
||||
#define LV_FONT_MONTSERRAT_38 1
|
||||
#define LV_FONT_MONTSERRAT_38 0
|
||||
#define LV_FONT_MONTSERRAT_40 0
|
||||
#define LV_FONT_MONTSERRAT_42 0
|
||||
#define LV_FONT_MONTSERRAT_44 0
|
||||
@@ -515,10 +515,10 @@
|
||||
/*Optionally declare custom fonts here.
|
||||
*You can use these fonts as default font too and they will be available globally.
|
||||
*E.g. #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/
|
||||
#define LV_FONT_CUSTOM_DECLARE
|
||||
#define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(symbol_font_10) LV_FONT_DECLARE(symbol_font_12) LV_FONT_DECLARE(symbol_font_16) LV_FONT_DECLARE(symbol_font_36)
|
||||
|
||||
/*Always set a default font*/
|
||||
#define LV_FONT_DEFAULT &lv_font_montserrat_14
|
||||
#define LV_FONT_DEFAULT &symbol_font_12
|
||||
|
||||
/*Enable handling large font and/or fonts with a lot of characters.
|
||||
*The limit depends on the font size, font face and bpp.
|
||||
@@ -611,7 +611,7 @@
|
||||
|
||||
#define LV_USE_CHART 1
|
||||
|
||||
#define LV_USE_CHECKBOX 0
|
||||
#define LV_USE_CHECKBOX 1
|
||||
|
||||
#define LV_USE_DROPDOWN 1 /*Requires: lv_label*/
|
||||
|
||||
|
||||
@@ -16,21 +16,20 @@
|
||||
#include <Ticker.h>
|
||||
#include <PubSubClient.h>
|
||||
#include "MQTT.h"
|
||||
#include <tahoma.h>
|
||||
#include <esp_task_wdt.h>
|
||||
|
||||
#define MEASINT_S 5
|
||||
#define SCREEN_UPDATE_S 30 //update screen every 30 secs
|
||||
#define HISTINT_S (5*60) //make history point every 5 min.
|
||||
#define WDT_TIMEOUT SCREEN_UPDATE_S*3 //set WDT timeout to 3 times the screen update time
|
||||
#define WDT_TIMEOUT SCREEN_UPDATE_S*7 //set WDT timeout to 3 times the screen update time
|
||||
|
||||
// -- Initial password to connect to the Thing, when it creates an own Access Point.
|
||||
|
||||
MQTT mqtt;
|
||||
Ticker measurementTick;
|
||||
|
||||
unsigned char ChipID = 0x00;
|
||||
volatile bool TouchEventFlag = false;
|
||||
|
||||
float barometerAltitude = 730.0; // meters ... map readings + barometer position
|
||||
//using namespace MDO;
|
||||
/*定义ESP32的SPI使用的引脚*/
|
||||
@@ -49,7 +48,7 @@ BME280I2C::Settings settings(
|
||||
BME280I2C bme(settings);
|
||||
|
||||
#define DRAW_BUF_SIZE (SCREEN_WIDTH * SCREEN_HEIGHT / 2 * (LV_COLOR_DEPTH / 8))
|
||||
uint32_t draw_buf[DRAW_BUF_SIZE / 4];
|
||||
uint32_t draw_buf[DRAW_BUF_SIZE / 5];
|
||||
bool newMeasurement=false,newHistory=false;
|
||||
float temp(NAN), hum(NAN), pres(NAN),seaLevelPress(NAN);
|
||||
bool presAlarm = false;
|
||||
@@ -122,7 +121,6 @@ void setup(void)
|
||||
measurementTick.attach(MEASINT_S,measure);
|
||||
mqtt.begin();
|
||||
getLocalTime(&glblData.bootTime);
|
||||
lv_label_set_text_fmt(objects.debugTxt, "IP:\n %s\n\nHostname:\n %s\n\nMqtt-Server:\n %s\n\nMqtt-Port:\n %d\n\nMqtt-Topic:\n %s\n\nHeatBuffer:\n %d",glblData.myIP,Settings::prefs.hostname,Settings::prefs.mqtt_server,Settings::prefs.mqtt_port, Settings::prefs.mqtt_topic,glblData.enBuff);
|
||||
measure();
|
||||
esp_reset_reason_t reason = esp_reset_reason();
|
||||
if ((reason != ESP_RST_DEEPSLEEP) && (reason != ESP_RST_SW)) {
|
||||
@@ -142,7 +140,7 @@ void loop()
|
||||
{
|
||||
if(newMeasurement){
|
||||
esp_task_wdt_reset();
|
||||
update_sensorNstatus(temp, hum, seaLevelPress,presAlarm);
|
||||
update_sensor(temp, hum, seaLevelPress,presAlarm);
|
||||
test = glblData.settemp;
|
||||
newMeasurement = false;
|
||||
mqtt.sendStatus();
|
||||
@@ -150,7 +148,7 @@ void loop()
|
||||
if(newHistory){
|
||||
newHistory=false;
|
||||
chart_autoscale();
|
||||
lv_chart_refresh(objects.chart);
|
||||
|
||||
}
|
||||
if(millis() - minutesTick > 60000){
|
||||
minutesTick = millis();
|
||||
@@ -158,9 +156,11 @@ void loop()
|
||||
update_wifi_strength(glblData.wifiStrength,glblData.wifiMode);
|
||||
}
|
||||
}
|
||||
checkTahomaActions(); //slowdown done in loop function
|
||||
|
||||
if(millis() - secondsTick > 1000){
|
||||
secondsTick = millis();
|
||||
//update_clockdots();
|
||||
update_status();
|
||||
}
|
||||
mqtt.loop();
|
||||
ui_tick();
|
||||
|
||||
@@ -0,0 +1,221 @@
|
||||
#include "tahoma.h"
|
||||
#include "settings.h"
|
||||
extern constexpr char Tahoma::serverURL[];
|
||||
extern unsigned long lastCheck;
|
||||
extern Tahoma::rolloCommand_t Tahoma::movement[];
|
||||
Tahoma::Tahoma(void) {}
|
||||
|
||||
// Destructor
|
||||
Tahoma::~Tahoma() {}
|
||||
|
||||
uint8_t Tahoma::getMyDevices(bool _force_update) {
|
||||
if (!numDevs || _force_update) {
|
||||
HTTPClient http; // Create an HTTP client object
|
||||
String url = serverURL;
|
||||
url += "?action=myactors&filter=";
|
||||
url += Settings::prefs.hostname; // Construct the URL to fetch all devices
|
||||
http.begin(url); // Initialize the HTTP connection
|
||||
int httpCode = http.GET(); // Send the GET request and get the response code
|
||||
if (httpCode > 0) { // Check if the request was successful
|
||||
JsonDocument doc; // Create a JSON document to parse the response
|
||||
String response = http.getString(); // Get the response as a string
|
||||
deserializeJson(doc, response); // Deserialize the JSON response
|
||||
if (doc.size() > 0) { // Check if the JSON document is not empty
|
||||
for (int i = 0; i < doc.size(); i++) { // Loop through the JSON array
|
||||
if (i >= MAX_NUM_DEVICES) { // Check if the maximum number of devices
|
||||
// is reached
|
||||
break; // Break the loop if the maximum number of devices is reached
|
||||
}
|
||||
devicelist[i].name =
|
||||
doc[i]["name"]
|
||||
.as<String>(); // Get the device URL from the JSON response
|
||||
devicelist[i].index = doc[i]["id"];
|
||||
devicelist[i].selected = false;
|
||||
numDevs++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Serial.print("Error on HTTP request:"); // Print error message if the
|
||||
// request failed
|
||||
Serial.println(httpCode); // Print the error code
|
||||
Serial.print("Error message: "); // Print error message
|
||||
Serial.println(http.errorToString(httpCode)); // Print the error code
|
||||
}
|
||||
http.end(); // Close the HTTP connection
|
||||
}
|
||||
return numDevs;
|
||||
}
|
||||
|
||||
bool Tahoma::isDeviceSelected(uint8_t deviceIndex) {
|
||||
return devicelist[deviceIndex].selected;
|
||||
}
|
||||
|
||||
Tahoma::rolloCommand_t Tahoma::getPos(int8_t deviceIndex) {
|
||||
rolloCommand_t pos = {0};
|
||||
if(deviceIndex < 0){
|
||||
for(uint8_t i=0; i<numDevs;i++){
|
||||
if(devicelist[i].selected){
|
||||
deviceIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (deviceIndex < numDevs) {
|
||||
HTTPClient http; // Create an HTTP client object
|
||||
String url = serverURL;
|
||||
url += "?action=pos&device=" +
|
||||
String(devicelist[deviceIndex]
|
||||
.index); // Construct the URL to fetch all devices
|
||||
Serial.println(url);
|
||||
http.begin(url); // Initialize the HTTP connection
|
||||
int httpCode = http.GET(); // Send the GET request and get the response code
|
||||
if (httpCode > 0) { // Check if the request was successful
|
||||
JsonDocument doc; // Create a JSON document to parse the response
|
||||
String response = http.getString(); // Get the response as a string
|
||||
if (!deserializeJson(
|
||||
doc, response)) { // Check if the JSON was decoded wthout error
|
||||
Serial.println("doc has content");
|
||||
pos.rotation =
|
||||
doc["rotation"]
|
||||
.as<uint8_t>(); // Get the device URL from the JSON response
|
||||
pos.position = doc["position"].as<uint8_t>();
|
||||
Serial.println(pos.rotation);
|
||||
Serial.println(pos.position);
|
||||
}
|
||||
} else {
|
||||
Serial.print("Error on HTTP request:"); // Print error message if the
|
||||
// request failed
|
||||
Serial.println(httpCode); // Print the error code
|
||||
Serial.print("Error message: "); // Print error message
|
||||
Serial.println(http.errorToString(httpCode)); // Print the error code
|
||||
}
|
||||
http.end(); // Close the HTTP connection
|
||||
}
|
||||
return pos;
|
||||
}
|
||||
|
||||
bool Tahoma::checkMovement(uint8_t deviceIndex) {
|
||||
bool ret = true;
|
||||
|
||||
HTTPClient http; // Create an HTTP client object
|
||||
String url = serverURL;
|
||||
url += "?action=moving&device=" +
|
||||
String(devicelist[deviceIndex]
|
||||
.index); // Construct the URL to fetch all devices
|
||||
http.begin(url); // Initialize the HTTP connection
|
||||
int httpCode = http.GET(); // Send the GET request and get the response code
|
||||
if (httpCode > 0) { // Check if the request was successful
|
||||
String response = http.getString(); // Get the response as a string
|
||||
if (response == "false") {
|
||||
ret = false;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
http.end(); // Close the HTTP connection
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint8_t Tahoma::sendMove(uint8_t deviceIndex, uint8_t position,
|
||||
uint8_t rotation) {
|
||||
uint8_t ret = 0;
|
||||
HTTPClient http; // Create an HTTP client object
|
||||
if (deviceIndex > MAX_NUM_DEVICES || position > 100 || rotation > 100) {
|
||||
return 0; // invalid parameters
|
||||
}
|
||||
String url = serverURL;
|
||||
if (position != 0 && rotation > 20) {
|
||||
movement[deviceIndex].position = position;
|
||||
movement[deviceIndex].rotation = rotation;
|
||||
movement[deviceIndex].movingFilter = 0;
|
||||
lastCheck = millis();
|
||||
rotation = 0;
|
||||
}
|
||||
url = url + "?action=move&pos=" + String(position) +
|
||||
"&angle=" + String(rotation) + "&device=" +
|
||||
String(devicelist[deviceIndex]
|
||||
.index); // Construct the URL to fetch all devices
|
||||
http.begin(url); // Initialize the HTTP connection
|
||||
int httpCode = http.GET(); // Send the GET request and get the response code
|
||||
if (httpCode > 199 && httpCode < 300) { // Check if the request was successful
|
||||
String response = http.getString(); // Get the response as a string
|
||||
if (response.indexOf("stop") != -1) {
|
||||
movement[deviceIndex].position = 0;
|
||||
}
|
||||
ret = 1;
|
||||
} else {
|
||||
movement[deviceIndex].position = 0;
|
||||
/*Serial.print(
|
||||
"Error on HTTP request:"); // Print error message if the request failed
|
||||
Serial.println(httpCode); // Print the error code
|
||||
Serial.print("Error message: "); // Print error message
|
||||
Serial.println(http.errorToString(httpCode)); // Print the error code*/
|
||||
ret = 0;
|
||||
}
|
||||
http.end(); // Close the HTTP connection
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Tahoma::moveSelected(uint8_t position, uint8_t rotation) {
|
||||
for (uint8_t i = 0; i < numDevs; i++) {
|
||||
if (devicelist[i].selected) {
|
||||
sendMove(i, position, rotation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t Tahoma::sendfinalRot(uint8_t deviceIndex) {
|
||||
uint8_t ret = 0;
|
||||
HTTPClient http; // Create an HTTP client object
|
||||
String url = serverURL;
|
||||
if (movement[deviceIndex].position == 0) {
|
||||
return 1; // no movement stored
|
||||
}
|
||||
url = url + "?action=move&pos=" + String(movement[deviceIndex].position) +
|
||||
"&angle=" + String(movement[deviceIndex].rotation) + "&device=" +
|
||||
String(devicelist[deviceIndex]
|
||||
.index); // Construct the URL to fetch all devices
|
||||
http.begin(url); // Initialize the HTTP connection
|
||||
int httpCode = http.GET(); // Send the GET request and get the response code
|
||||
if (httpCode > 199 && httpCode < 300) { // Check if the request was successful
|
||||
movement[deviceIndex].position = 0;
|
||||
movement[deviceIndex].movingFilter = 0;
|
||||
ret = 1;
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
http.end(); // Close the HTTP connection
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Tahoma::selectDev(uint8_t i,bool _select) {
|
||||
if (i <= numDevs) {
|
||||
devicelist[i].selected = _select;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Tahoma::loop(void) {
|
||||
static uint8_t errorCnt = 0;
|
||||
if (millis() - lastCheck < 1000) {
|
||||
return;
|
||||
}
|
||||
lastCheck = millis();
|
||||
for (uint8_t i = 0; i < numDevs; i++) {
|
||||
if (movement[i].position != 0) {
|
||||
Serial.print(devicelist[i].index);
|
||||
if (!checkMovement(i)) {
|
||||
if(movement[i].movingFilter++ >= 1){
|
||||
if(!sendfinalRot(i)){
|
||||
errorCnt++;
|
||||
}else{
|
||||
errorCnt = 0;
|
||||
}
|
||||
if(errorCnt > 10){ //give up after 10 errors regardless what devices caused errors.
|
||||
movement[i].position = 0;
|
||||
errorCnt = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
#ifndef TAHOMA_H
|
||||
#define TAHOMA_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <WiFi.h>
|
||||
#include <iostream>
|
||||
#include <HTTPClient.h>
|
||||
#include <Ticker.h>
|
||||
#include <ArduinoJson.h> // Include the ArduinoJson library for JSON parsing
|
||||
#define MAX_NUM_DEVICES 11 // Maximum number of devices to fetch
|
||||
|
||||
class Tahoma {
|
||||
public:
|
||||
typedef union {
|
||||
uint32_t movement;
|
||||
struct {
|
||||
uint32_t position : 8;
|
||||
uint32_t rotation : 8;
|
||||
uint32_t movingFilter : 8;
|
||||
uint32_t reserved : 8;
|
||||
};
|
||||
} rolloCommand_t;
|
||||
|
||||
typedef struct {
|
||||
String name; // Device name
|
||||
uint16_t index; // Device URL
|
||||
bool selected;
|
||||
} device_t;
|
||||
// Constructor with hostname and token
|
||||
// Initializes the Tahoma object with the provided hostname and token
|
||||
Tahoma(void);
|
||||
|
||||
// Destructor
|
||||
~Tahoma();
|
||||
uint8_t getMyDevices(bool _force_update=false); // Fetches the device name from the Tahoma system
|
||||
rolloCommand_t getPos(int8_t deviceIndex=-1);
|
||||
uint8_t sendMove(uint8_t deviceIndex, uint8_t position, uint8_t rotation);
|
||||
uint8_t sendfinalRot(uint8_t deviceIndex);
|
||||
void moveSelected(uint8_t position, uint8_t rotation);
|
||||
void selectDev(uint8_t i, bool _selected);
|
||||
bool isDeviceSelected(uint8_t deviceIndex);
|
||||
void loop(void);
|
||||
device_t devicelist[MAX_NUM_DEVICES];
|
||||
uint8_t numDevs{0};
|
||||
static rolloCommand_t movement[MAX_NUM_DEVICES];
|
||||
private:
|
||||
bool checkMovement(uint8_t deviceIndex);
|
||||
static constexpr char serverURL[]{"http://nas.local/smart/ajax/tahoma.php"}; // Hostname of the Tahoma system
|
||||
unsigned long lastCheck{0};
|
||||
Ticker movementCheckTicker;
|
||||
// Simulate fetching data from the Tahoma system
|
||||
};
|
||||
|
||||
#endif // TAHOMA_H
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+2679
-2680
File diff suppressed because it is too large
Load Diff
@@ -3162,7 +3162,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
};
|
||||
|
||||
extern const lv_font_t lv_font_montserrat_18;
|
||||
//extern const lv_font_t lv_font_motserrat_16;
|
||||
|
||||
|
||||
/*-----------------
|
||||
@@ -3188,7 +3188,7 @@ lv_font_t Bootstrap_Icons_18 = {
|
||||
#endif
|
||||
.dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9
|
||||
.fallback = &lv_font_montserrat_18,
|
||||
.fallback = NULL,//&lv_font_motserrat_16,
|
||||
#endif
|
||||
.user_data = NULL,
|
||||
};
|
||||
|
||||
@@ -3675,7 +3675,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
};
|
||||
|
||||
extern const lv_font_t lv_font_montserrat_20;
|
||||
//extern const lv_font_t lv_font_motserrat_16;
|
||||
|
||||
|
||||
/*-----------------
|
||||
@@ -3701,7 +3701,7 @@ lv_font_t Bootstrap_Icons_20 = {
|
||||
#endif
|
||||
.dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9
|
||||
.fallback = &lv_font_montserrat_20,
|
||||
.fallback = NULL,//&lv_font_motserrat_16,
|
||||
#endif
|
||||
.user_data = NULL,
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+584
-417
File diff suppressed because it is too large
Load Diff
@@ -11,27 +11,35 @@ extern "C" {
|
||||
|
||||
|
||||
void ui_settemp(float tmp);
|
||||
void checkZoomState(void);
|
||||
void action_zoom_set_temp(lv_event_t * e);
|
||||
void action_switch_screens(lv_event_t * e);
|
||||
void resetAnimationFlags(void);
|
||||
void action_switch_charts(lv_event_t * e);
|
||||
void showDebugScreen(lv_event_t * e);
|
||||
void showMenuScreen(lv_event_t * e);
|
||||
void showChartScreen(lv_event_t * e);
|
||||
void showMainScreen(lv_event_t * e);
|
||||
void showRolloScreen(lv_event_t * e);
|
||||
void showRolloPosScreen(lv_event_t * e);
|
||||
void moveRolloUp(lv_event_t * e);
|
||||
void moveRolloDown(lv_event_t * e);
|
||||
void moveRolloMan(lv_event_t * e);
|
||||
void showMenuScreen(lv_event_t *e);
|
||||
void showRolloScreen(lv_event_t *e);
|
||||
void showRolloPosScreen(lv_event_t *e);
|
||||
void rebootESP(lv_event_t * e);
|
||||
void action_show_cursors_cb(lv_event_t * e);
|
||||
void chartDrawingCB(lv_event_t * e);
|
||||
void update_sensorNstatus(float temp, float hum, float seaLevelPress, bool presAlarm);
|
||||
void update_sensor(float temp, float hum, float seaLevelPress, bool presAlarm);
|
||||
void update_clockdots(void);
|
||||
void update_status(void);
|
||||
void update_wifi_strength(wifistrength_t strength, wifimode_t mode);
|
||||
void chart_autoscale(void);
|
||||
extern dataset_t glblData;
|
||||
void draw_event_cb(lv_event_t* e);
|
||||
void moveRolloDown(lv_event_t* e);
|
||||
void moveRolloUp(lv_event_t* e);
|
||||
void moveRolloMan(lv_event_t *e);
|
||||
void setRolloListText(void);
|
||||
void toggleRolloChooser(lv_event_t *e);
|
||||
void checkTahomaActions(void);
|
||||
void rotation_changed_cb(lv_event_t* e);
|
||||
void pos_changed_cb(lv_event_t *e);
|
||||
void rolloChanged(lv_event_t *e);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
+486
-425
File diff suppressed because it is too large
Load Diff
@@ -8,63 +8,66 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct _objects_t {
|
||||
lv_obj_t *mainScr;
|
||||
lv_obj_t *chartScr;
|
||||
lv_obj_t *debugScr;
|
||||
lv_obj_t *menuScr;
|
||||
lv_obj_t *rolloScr;
|
||||
lv_obj_t *rollo_posScr;
|
||||
lv_obj_t *temp_arc;
|
||||
lv_obj_t *temp_txt;
|
||||
lv_obj_t *hum_txt;
|
||||
lv_obj_t *press_txt;
|
||||
lv_obj_t *panel_arc;
|
||||
lv_obj_t *chart;
|
||||
lv_obj_t *x_scale;
|
||||
lv_obj_t *y_scale;
|
||||
lv_obj_t *chart_header;
|
||||
lv_obj_t *left_lbl;
|
||||
lv_obj_t *right_lbl;
|
||||
lv_obj_t *debugTxt;
|
||||
lv_obj_t *heaterIcn;
|
||||
lv_obj_t *bufferIcn;
|
||||
lv_obj_t *wifiIcn;
|
||||
lv_obj_t *alarmLED;
|
||||
lv_obj_t *outTemp_txt;
|
||||
lv_obj_t *time_txt;
|
||||
lv_obj_t *deviceDropdown;
|
||||
lv_obj_t *rolloPosSldr;
|
||||
lv_obj_t *lamellaContainer;
|
||||
lv_obj_t *lam[9];
|
||||
lv_chart_cursor_t *chart_cursor;
|
||||
lv_chart_series_t *chart_series;
|
||||
lv_obj_t *mainScr;
|
||||
lv_obj_t *chartScr;
|
||||
lv_obj_t *debugScr;
|
||||
lv_obj_t *rolloScr;
|
||||
lv_obj_t *rolloPosScr;
|
||||
lv_obj_t *menuScr;
|
||||
lv_obj_t *temp_arc;
|
||||
lv_obj_t *temp_txt;
|
||||
lv_obj_t *hum_txt;
|
||||
lv_obj_t *press_txt;
|
||||
lv_obj_t *panel_arc;
|
||||
lv_obj_t *chart;
|
||||
lv_obj_t *x_scale;
|
||||
lv_obj_t *y_scale;
|
||||
lv_obj_t *chart_header;
|
||||
lv_obj_t *left_lbl;
|
||||
lv_obj_t *right_lbl;
|
||||
lv_obj_t *debugTxt;
|
||||
lv_obj_t *heaterIcn;
|
||||
lv_obj_t *bufferIcn;
|
||||
lv_obj_t *wifiIcn;
|
||||
lv_obj_t *outTemp_txt;
|
||||
lv_obj_t *time_txt;
|
||||
lv_obj_t *deviceDropdown;
|
||||
lv_obj_t *lam[9];
|
||||
lv_chart_cursor_t *chart_cursor;
|
||||
lv_chart_series_t *chart_series;
|
||||
lv_obj_t *rolloPos;
|
||||
lv_obj_t *rolloRot;
|
||||
lv_obj_t *selDevicesLbl;
|
||||
} objects_t;
|
||||
|
||||
extern objects_t objects;
|
||||
|
||||
typedef enum ScreensEnum {
|
||||
SCREEN_ID_MAIN = 1,
|
||||
SCREEN_ID_CHART = 2,
|
||||
SCREEN_ID_DEBUG = 3,
|
||||
SCREEN_ID_MENU = 4,
|
||||
SCREEN_ID_ROLLO = 5,
|
||||
SCREEN_ID_ROLLOPOS = 6,
|
||||
}ScreensEnum;
|
||||
SCREEN_ID_MAIN = 0,
|
||||
SCREEN_ID_CHART = 1,
|
||||
SCREEN_ID_DEBUG = 2,
|
||||
SCREEN_ID_LEN
|
||||
} ScreensEnum;
|
||||
|
||||
typedef enum ChartsEnum {
|
||||
CHART_ID_NONE = 0,
|
||||
CHART_ID_TEMP = 1,
|
||||
CHART_ID_HUM = 2,
|
||||
CHART_ID_PRESS = 3,
|
||||
CHART_ID_LEN
|
||||
}ChartsEnum;
|
||||
CHART_ID_NONE = 0,
|
||||
CHART_ID_TEMP = 1,
|
||||
CHART_ID_HUM = 2,
|
||||
CHART_ID_PRESS = 3,
|
||||
CHART_ID_LEN
|
||||
} ChartsEnum;
|
||||
|
||||
void addStatusIcons(lv_obj_t *parent_obj);
|
||||
void create_screen_main();
|
||||
void create_screen_chart();
|
||||
|
||||
void create_screen_debug();
|
||||
void create_screen_menu();
|
||||
void rolloCheckbox_add(const char *txt, void *_tahomaDevice, bool _checked);
|
||||
void rolloCheckbox_finish(void);
|
||||
void create_screen_rollos();
|
||||
void create_screen_rolloPos();
|
||||
void create_screens();
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -6,30 +6,64 @@
|
||||
#include "screens.h"
|
||||
|
||||
//
|
||||
// Style: Button
|
||||
// Style: arc
|
||||
//
|
||||
|
||||
void init_style_button_MAIN_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_bg_color(style, lv_color_hex(0xff2f3237));
|
||||
lv_style_set_text_font(style, &Bootstrap_Icons_18);
|
||||
void init_style_arc_MAIN_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_width(style, 10);
|
||||
lv_style_set_arc_rounded(style, true);
|
||||
};
|
||||
|
||||
lv_style_t *get_style_button_MAIN_DEFAULT() {
|
||||
lv_style_t *get_style_arc_MAIN_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_button_MAIN_DEFAULT(style);
|
||||
init_style_arc_MAIN_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
void add_style_button(lv_obj_t *obj) {
|
||||
lv_obj_add_style(obj, get_style_button_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
void init_style_arc_INDICATOR_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_color(style, lv_color_hex(0xff8ff321));
|
||||
lv_style_set_bg_color(style, lv_color_hex(0xffffffff));
|
||||
};
|
||||
|
||||
void remove_style_button(lv_obj_t *obj) {
|
||||
lv_obj_remove_style(obj, get_style_button_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_style_t *get_style_arc_INDICATOR_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_arc_INDICATOR_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
void init_style_arc_KNOB_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_color(style, lv_color_hex(0xff89f019));
|
||||
lv_style_set_bg_color(style, lv_color_hex(0xff50a31c));
|
||||
};
|
||||
|
||||
lv_style_t *get_style_arc_KNOB_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_arc_KNOB_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
void add_style_arc(lv_obj_t *obj) {
|
||||
lv_obj_add_style(obj, get_style_arc_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_add_style(obj, get_style_arc_INDICATOR_DEFAULT(), LV_PART_INDICATOR | LV_STATE_DEFAULT);
|
||||
lv_obj_add_style(obj, get_style_arc_KNOB_DEFAULT(), LV_PART_KNOB | LV_STATE_DEFAULT);
|
||||
};
|
||||
|
||||
void remove_style_arc(lv_obj_t *obj) {
|
||||
lv_obj_remove_style(obj, get_style_arc_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_remove_style(obj, get_style_arc_INDICATOR_DEFAULT(), LV_PART_INDICATOR | LV_STATE_DEFAULT);
|
||||
lv_obj_remove_style(obj, get_style_arc_KNOB_DEFAULT(), LV_PART_KNOB | LV_STATE_DEFAULT);
|
||||
};
|
||||
|
||||
//
|
||||
@@ -78,63 +112,6 @@ void remove_style_slider(lv_obj_t *obj) {
|
||||
};
|
||||
|
||||
//
|
||||
// Style: arc
|
||||
//
|
||||
//
|
||||
|
||||
void init_style_arc_MAIN_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_width(style, 10);
|
||||
lv_style_set_arc_rounded(style, true);
|
||||
};
|
||||
|
||||
lv_style_t *get_style_arc_MAIN_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_arc_MAIN_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
|
||||
void init_style_arc_INDICATOR_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_color(style, lv_color_hex(0xff8ff321));
|
||||
lv_style_set_bg_color(style, lv_color_hex(0xffffffff));
|
||||
};
|
||||
|
||||
lv_style_t *get_style_arc_INDICATOR_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_arc_INDICATOR_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
void init_style_arc_KNOB_DEFAULT(lv_style_t *style) {
|
||||
lv_style_set_arc_color(style, lv_color_hex(0xff89f019));
|
||||
lv_style_set_bg_color(style, lv_color_hex(0xff50a31c));
|
||||
};
|
||||
|
||||
lv_style_t *get_style_arc_KNOB_DEFAULT() {
|
||||
static lv_style_t *style;
|
||||
if (!style) {
|
||||
style = lv_malloc(sizeof(lv_style_t));
|
||||
lv_style_init(style);
|
||||
init_style_arc_KNOB_DEFAULT(style);
|
||||
}
|
||||
return style;
|
||||
};
|
||||
|
||||
void add_style_arc(lv_obj_t *obj) {
|
||||
lv_obj_add_style(obj, get_style_arc_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_add_style(obj, get_style_arc_INDICATOR_DEFAULT(), LV_PART_INDICATOR | LV_STATE_DEFAULT);
|
||||
lv_obj_add_style(obj, get_style_arc_KNOB_DEFAULT(), LV_PART_KNOB | LV_STATE_DEFAULT);
|
||||
};
|
||||
|
||||
void remove_style_arc(lv_obj_t *obj) {
|
||||
lv_obj_remove_style(obj, get_style_arc_MAIN_DEFAULT(), LV_PART_MAIN | LV_STATE_DEFAULT);
|
||||
lv_obj_remove_style(obj, get_style_arc_INDICATOR_DEFAULT(), LV_PART_INDICATOR | LV_STATE_DEFAULT);
|
||||
lv_obj_remove_style(obj, get_style_arc_KNOB_DEFAULT(), LV_PART_KNOB | LV_STATE_DEFAULT);
|
||||
};
|
||||
@@ -13,12 +13,11 @@ lv_style_t *get_style_arc_INDICATOR_DEFAULT();
|
||||
lv_style_t *get_style_arc_KNOB_DEFAULT();
|
||||
void add_style_arc(lv_obj_t *obj);
|
||||
void remove_style_arc(lv_obj_t *obj);
|
||||
void add_style_button(lv_obj_t *obj);
|
||||
void remove_style_button(lv_obj_t *obj);
|
||||
void add_style_slider(lv_obj_t *obj);
|
||||
void remove_style_slider(lv_obj_t *obj);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,715 @@
|
||||
/*******************************************************************************
|
||||
* Size: 34 px
|
||||
* Bpp: 2
|
||||
* Opts: --no-compress --no-prefilter --bpp 2 --size 34 --font C:\Users\m0\Desktop\LVGL_FontGen\bootstrap_jalousie(0xF100).ttf -r 62925,61696,61719,62450,61993,62005,62501,62435,61939 --font C:\Users\m0\Desktop\LVGL_FontGen\MaterialSymbolsRounded[FILL,GRAD,opsz,wght]-wght100-slnt4-opts0.ttf -r 57990,57410 --font F:\m0\Git-Projekte\Raumtempregler\LVGL_FontGen\Montserrat-Medium.ttf -r 0x20 --symbols 0123456789,.-°C --format lvgl -o C:\Users\m0\Desktop\LVGL_FontGen\symbol_font_34.c --force-fast-kern-format
|
||||
******************************************************************************/
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#ifndef SYMBOL_FONT_34
|
||||
#define SYMBOL_FONT_34 1
|
||||
#endif
|
||||
|
||||
#if SYMBOL_FONT_34
|
||||
|
||||
/*-----------------
|
||||
* BITMAPS
|
||||
*----------------*/
|
||||
|
||||
/*Store the image of the glyphs*/
|
||||
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
||||
/* U+0020 " " */
|
||||
|
||||
/* U+002C "," */
|
||||
0x5, 0x3, 0xf8, 0x7f, 0xc7, 0xfc, 0x2f, 0xc0,
|
||||
0xf4, 0x1f, 0x2, 0xf0, 0x3d, 0x3, 0xc0,
|
||||
|
||||
/* U+002D "-" */
|
||||
0x3f, 0xff, 0xf0, 0xff, 0xff, 0xc3, 0xff, 0xff,
|
||||
0x0,
|
||||
|
||||
/* U+002E "." */
|
||||
0x9, 0x3, 0xfc, 0x7f, 0xc3, 0xfc, 0x1f, 0x40,
|
||||
|
||||
/* U+0030 "0" */
|
||||
0x0, 0x2, 0xff, 0x90, 0x0, 0x0, 0xb, 0xff,
|
||||
0xff, 0x40, 0x0, 0xf, 0xff, 0xff, 0xf8, 0x0,
|
||||
0xf, 0xfd, 0x1, 0xff, 0x80, 0xb, 0xf8, 0x0,
|
||||
0xf, 0xf0, 0x3, 0xf8, 0x0, 0x0, 0xfe, 0x1,
|
||||
0xfc, 0x0, 0x0, 0x1f, 0xc0, 0xfe, 0x0, 0x0,
|
||||
0x3, 0xf4, 0x3f, 0x40, 0x0, 0x0, 0xbe, 0xf,
|
||||
0xc0, 0x0, 0x0, 0x2f, 0xc7, 0xf0, 0x0, 0x0,
|
||||
0x7, 0xf1, 0xfc, 0x0, 0x0, 0x1, 0xfc, 0x7f,
|
||||
0x0, 0x0, 0x0, 0x7f, 0x1f, 0xc0, 0x0, 0x0,
|
||||
0x1f, 0xc3, 0xf0, 0x0, 0x0, 0xb, 0xf0, 0xfd,
|
||||
0x0, 0x0, 0x2, 0xf8, 0x3f, 0x80, 0x0, 0x0,
|
||||
0xfd, 0x7, 0xf0, 0x0, 0x0, 0x7f, 0x0, 0xfe,
|
||||
0x0, 0x0, 0x3f, 0x80, 0x2f, 0xe0, 0x0, 0x3f,
|
||||
0xc0, 0x3, 0xfe, 0x40, 0x7f, 0xe0, 0x0, 0x3f,
|
||||
0xff, 0xff, 0xe0, 0x0, 0x2, 0xff, 0xff, 0xd0,
|
||||
0x0, 0x0, 0xb, 0xfe, 0x40, 0x0,
|
||||
|
||||
/* U+0031 "1" */
|
||||
0xbf, 0xff, 0xcb, 0xff, 0xfc, 0xbf, 0xff, 0xc0,
|
||||
0x1, 0xfc, 0x0, 0x1f, 0xc0, 0x1, 0xfc, 0x0,
|
||||
0x1f, 0xc0, 0x1, 0xfc, 0x0, 0x1f, 0xc0, 0x1,
|
||||
0xfc, 0x0, 0x1f, 0xc0, 0x1, 0xfc, 0x0, 0x1f,
|
||||
0xc0, 0x1, 0xfc, 0x0, 0x1f, 0xc0, 0x1, 0xfc,
|
||||
0x0, 0x1f, 0xc0, 0x1, 0xfc, 0x0, 0x1f, 0xc0,
|
||||
0x1, 0xfc, 0x0, 0x1f, 0xc0, 0x1, 0xfc, 0x0,
|
||||
0x1f, 0xc0, 0x1, 0xfc,
|
||||
|
||||
/* U+0032 "2" */
|
||||
0x0, 0x1b, 0xff, 0x80, 0x0, 0xb, 0xff, 0xff,
|
||||
0xe0, 0x1, 0xff, 0xff, 0xff, 0xf0, 0x1f, 0xf9,
|
||||
0x0, 0x7f, 0xe0, 0x1f, 0x0, 0x0, 0x3f, 0xc0,
|
||||
0x10, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0x0,
|
||||
0xfd, 0x0, 0x0, 0x0, 0x3, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0xbf, 0x0,
|
||||
0x0, 0x0, 0x7, 0xf4, 0x0, 0x0, 0x0, 0x3f,
|
||||
0x80, 0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x7f, 0xc0, 0x0, 0x0, 0x7, 0xfc, 0x0, 0x0,
|
||||
0x0, 0x7f, 0xc0, 0x0, 0x0, 0x7, 0xfc, 0x0,
|
||||
0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x7, 0xfc,
|
||||
0x0, 0x0, 0x0, 0x7f, 0xc0, 0x0, 0x0, 0x7,
|
||||
0xf8, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0xff,
|
||||
0xd2, 0xff, 0xff, 0xff, 0xff, 0x4b, 0xff, 0xff,
|
||||
0xff, 0xfd,
|
||||
|
||||
/* U+0033 "3" */
|
||||
0x2f, 0xff, 0xff, 0xff, 0xc2, 0xff, 0xff, 0xff,
|
||||
0xfc, 0x2f, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x0,
|
||||
0xb, 0xf0, 0x0, 0x0, 0x2, 0xfc, 0x0, 0x0,
|
||||
0x0, 0x7f, 0x40, 0x0, 0x0, 0xf, 0xe0, 0x0,
|
||||
0x0, 0x3, 0xf8, 0x0, 0x0, 0x0, 0xff, 0x0,
|
||||
0x0, 0x0, 0x2f, 0xc0, 0x0, 0x0, 0x3, 0xff,
|
||||
0x90, 0x0, 0x0, 0x7f, 0xff, 0xd0, 0x0, 0x2,
|
||||
0xaf, 0xff, 0x40, 0x0, 0x0, 0x7, 0xfc, 0x0,
|
||||
0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x0, 0xbf,
|
||||
0x0, 0x0, 0x0, 0xb, 0xf0, 0x0, 0x0, 0x0,
|
||||
0xbf, 0x0, 0x0, 0x0, 0xf, 0xe3, 0xd0, 0x0,
|
||||
0x2, 0xfd, 0x7f, 0xe0, 0x1, 0xff, 0xc7, 0xff,
|
||||
0xff, 0xff, 0xf0, 0xb, 0xff, 0xff, 0xf8, 0x0,
|
||||
0x6, 0xff, 0xe4, 0x0,
|
||||
|
||||
/* U+0034 "4" */
|
||||
0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0,
|
||||
0x2f, 0xc0, 0x0, 0x0, 0x0, 0x7, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x1, 0xfd, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3f, 0x80, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x2, 0xfc, 0x0, 0x0, 0x0, 0x0,
|
||||
0x7f, 0x40, 0x0, 0x0, 0x0, 0xf, 0xe0, 0x0,
|
||||
0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x0,
|
||||
0xbf, 0x0, 0x1f, 0xc0, 0x0, 0x1f, 0xd0, 0x1,
|
||||
0xfc, 0x0, 0x7, 0xf4, 0x0, 0x1f, 0xc0, 0x0,
|
||||
0xfe, 0x0, 0x1, 0xfc, 0x0, 0x3f, 0xc0, 0x0,
|
||||
0x1f, 0xc0, 0xb, 0xff, 0xff, 0xff, 0xff, 0xfd,
|
||||
0xbf, 0xff, 0xff, 0xff, 0xff, 0xdb, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x1f, 0xc0,
|
||||
0x0, 0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0, 0x1, 0xfc,
|
||||
0x0, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0,
|
||||
0x0, 0x1, 0xfc, 0x0,
|
||||
|
||||
/* U+0035 "5" */
|
||||
0x1, 0xff, 0xff, 0xff, 0xc0, 0xb, 0xff, 0xff,
|
||||
0xff, 0x0, 0x2f, 0xff, 0xff, 0xfc, 0x0, 0xfd,
|
||||
0x0, 0x0, 0x0, 0x3, 0xf4, 0x0, 0x0, 0x0,
|
||||
0xf, 0xc0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0,
|
||||
0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x7, 0xf0,
|
||||
0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0,
|
||||
0x7f, 0xff, 0xf9, 0x0, 0x2, 0xff, 0xff, 0xff,
|
||||
0x40, 0xb, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0,
|
||||
0x6, 0xff, 0x40, 0x0, 0x0, 0x0, 0xff, 0x0,
|
||||
0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x3,
|
||||
0xf4, 0x0, 0x0, 0x0, 0xf, 0xd0, 0x0, 0x0,
|
||||
0x0, 0x7f, 0x7, 0x40, 0x0, 0x3, 0xfc, 0x3f,
|
||||
0xe4, 0x0, 0xbf, 0xd0, 0xff, 0xff, 0xff, 0xfe,
|
||||
0x0, 0x7f, 0xff, 0xff, 0xd0, 0x0, 0x6, 0xff,
|
||||
0xe4, 0x0,
|
||||
|
||||
/* U+0036 "6" */
|
||||
0x0, 0x1, 0xbf, 0xfe, 0x0, 0x0, 0x1f, 0xff,
|
||||
0xff, 0xe0, 0x0, 0xbf, 0xff, 0xff, 0xc0, 0x2,
|
||||
0xff, 0x80, 0x1, 0x80, 0x7, 0xfc, 0x0, 0x0,
|
||||
0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x1f, 0xc0,
|
||||
0x0, 0x0, 0x0, 0x2f, 0x80, 0x0, 0x0, 0x0,
|
||||
0x3f, 0x40, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x6a,
|
||||
0x90, 0x0, 0x7f, 0xb, 0xff, 0xfe, 0x0, 0x7f,
|
||||
0x3f, 0xff, 0xff, 0xc0, 0x7f, 0xfe, 0x40, 0x6f,
|
||||
0xf0, 0x7f, 0xf4, 0x0, 0x7, 0xf4, 0x3f, 0xd0,
|
||||
0x0, 0x2, 0xfc, 0x3f, 0xc0, 0x0, 0x1, 0xfc,
|
||||
0x3f, 0xc0, 0x0, 0x1, 0xfc, 0x2f, 0xc0, 0x0,
|
||||
0x1, 0xfc, 0xf, 0xd0, 0x0, 0x2, 0xfc, 0xf,
|
||||
0xf0, 0x0, 0x7, 0xf4, 0x3, 0xfd, 0x0, 0x1f,
|
||||
0xf0, 0x0, 0xff, 0xfb, 0xff, 0xc0, 0x0, 0x3f,
|
||||
0xff, 0xfe, 0x0, 0x0, 0x6, 0xff, 0xe0, 0x0,
|
||||
|
||||
/* U+0037 "7" */
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x0,
|
||||
0x0, 0xfd, 0xfd, 0x0, 0x0, 0x2f, 0xcf, 0xd0,
|
||||
0x0, 0x3, 0xf8, 0xfd, 0x0, 0x0, 0x7f, 0x0,
|
||||
0x0, 0x0, 0xf, 0xe0, 0x0, 0x0, 0x1, 0xfc,
|
||||
0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x3,
|
||||
0xf4, 0x0, 0x0, 0x0, 0xbf, 0x0, 0x0, 0x0,
|
||||
0xf, 0xd0, 0x0, 0x0, 0x2, 0xfc, 0x0, 0x0,
|
||||
0x0, 0x3f, 0x80, 0x0, 0x0, 0x7, 0xf0, 0x0,
|
||||
0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x1f, 0xc0,
|
||||
0x0, 0x0, 0x3, 0xfc, 0x0, 0x0, 0x0, 0x3f,
|
||||
0x40, 0x0, 0x0, 0xb, 0xf0, 0x0, 0x0, 0x0,
|
||||
0xfd, 0x0, 0x0, 0x0, 0x2f, 0xc0, 0x0, 0x0,
|
||||
0x3, 0xf8, 0x0, 0x0,
|
||||
|
||||
/* U+0038 "8" */
|
||||
0x0, 0xb, 0xff, 0xe0, 0x0, 0x0, 0xff, 0xff,
|
||||
0xfe, 0x0, 0x3, 0xff, 0xff, 0xff, 0xc0, 0xf,
|
||||
0xf8, 0x0, 0x2f, 0xf0, 0x1f, 0xd0, 0x0, 0x7,
|
||||
0xf4, 0x2f, 0xc0, 0x0, 0x3, 0xf4, 0x2f, 0x80,
|
||||
0x0, 0x3, 0xf8, 0x1f, 0xc0, 0x0, 0x3, 0xf4,
|
||||
0xf, 0xe0, 0x0, 0xb, 0xf0, 0xb, 0xf9, 0x0,
|
||||
0x7f, 0xd0, 0x1, 0xff, 0xff, 0xff, 0x40, 0x0,
|
||||
0xff, 0xff, 0xfe, 0x0, 0x7, 0xff, 0xaa, 0xff,
|
||||
0xd0, 0x1f, 0xe0, 0x0, 0x1f, 0xf4, 0x3f, 0x80,
|
||||
0x0, 0x3, 0xfc, 0x7f, 0x0, 0x0, 0x1, 0xfc,
|
||||
0x7f, 0x0, 0x0, 0x0, 0xfd, 0x7f, 0x0, 0x0,
|
||||
0x0, 0xfd, 0x7f, 0x0, 0x0, 0x1, 0xfc, 0x3f,
|
||||
0xc0, 0x0, 0x3, 0xfc, 0x1f, 0xf4, 0x0, 0x1f,
|
||||
0xf4, 0xb, 0xff, 0xef, 0xff, 0xd0, 0x1, 0xff,
|
||||
0xff, 0xff, 0x40, 0x0, 0x1b, 0xff, 0xe4, 0x0,
|
||||
|
||||
/* U+0039 "9" */
|
||||
0x0, 0xb, 0xff, 0x80, 0x0, 0x0, 0xbf, 0xff,
|
||||
0xf8, 0x0, 0x3, 0xff, 0xff, 0xff, 0x0, 0xf,
|
||||
0xf4, 0x0, 0x7f, 0xc0, 0x1f, 0xd0, 0x0, 0xf,
|
||||
0xe0, 0x3f, 0x80, 0x0, 0x7, 0xf0, 0x3f, 0x40,
|
||||
0x0, 0x3, 0xf8, 0x3f, 0x40, 0x0, 0x3, 0xfc,
|
||||
0x3f, 0x40, 0x0, 0x3, 0xfc, 0x3f, 0x80, 0x0,
|
||||
0x7, 0xfc, 0x1f, 0xd0, 0x0, 0x1f, 0xfd, 0xf,
|
||||
0xf9, 0x1, 0xbf, 0xfd, 0x3, 0xff, 0xff, 0xfd,
|
||||
0xfd, 0x0, 0xbf, 0xff, 0xe0, 0xfc, 0x0, 0x6,
|
||||
0xa9, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x1, 0xfc,
|
||||
0x0, 0x0, 0x0, 0x2, 0xf8, 0x0, 0x0, 0x0,
|
||||
0x3, 0xf4, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x3f, 0xd0, 0x2, 0x40, 0x2, 0xff,
|
||||
0x80, 0x7, 0xff, 0xff, 0xfd, 0x0, 0xb, 0xff,
|
||||
0xff, 0xf0, 0x0, 0x0, 0xbf, 0xfe, 0x0, 0x0,
|
||||
|
||||
/* U+0043 "C" */
|
||||
0x0, 0x0, 0x2b, 0xff, 0x90, 0x0, 0x0, 0x1f,
|
||||
0xff, 0xff, 0xf4, 0x0, 0x2, 0xff, 0xff, 0xff,
|
||||
0xfc, 0x0, 0x3f, 0xfd, 0x0, 0x2f, 0xfc, 0x3,
|
||||
0xff, 0x40, 0x0, 0xb, 0xd0, 0x2f, 0xf0, 0x0,
|
||||
0x0, 0x5, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0,
|
||||
0xb, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x80,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0,
|
||||
0x0, 0x7, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x1f,
|
||||
0xc0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0,
|
||||
0x0, 0x0, 0x1, 0xfc, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3, 0xf4, 0x0, 0x0, 0x0, 0x0, 0xf, 0xe0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x2f, 0xc0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x0, 0x0,
|
||||
0xbf, 0x80, 0x0, 0x0, 0x14, 0x0, 0xff, 0xc0,
|
||||
0x0, 0x2, 0xf4, 0x0, 0xff, 0xe4, 0x0, 0xbf,
|
||||
0xf0, 0x0, 0xbf, 0xff, 0xff, 0xff, 0x0, 0x0,
|
||||
0x7f, 0xff, 0xff, 0xd0, 0x0, 0x0, 0xa, 0xff,
|
||||
0xe4, 0x0,
|
||||
|
||||
/* U+00B0 "°" */
|
||||
0x1, 0xbf, 0x40, 0xb, 0xff, 0xf0, 0x2f, 0x0,
|
||||
0xbc, 0x3c, 0x0, 0x3d, 0x78, 0x0, 0x1e, 0x74,
|
||||
0x0, 0xe, 0x78, 0x0, 0x1e, 0x3c, 0x0, 0x3d,
|
||||
0x2f, 0x0, 0xbc, 0xb, 0xff, 0xf0, 0x1, 0xbf,
|
||||
0x40,
|
||||
|
||||
/* U+E042 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x34, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0,
|
||||
0x0, 0x0, 0x3, 0xc0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3e, 0xf9, 0x0, 0x0, 0x0, 0x1, 0xc0, 0x6c,
|
||||
0x0, 0x0, 0x0, 0x7, 0x0, 0x74, 0x0, 0x0,
|
||||
0x0, 0x10, 0x0, 0xd0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xc0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60,
|
||||
0x0, 0x0, 0x0, 0x0, 0x3, 0xc0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x3,
|
||||
0x90, 0x0, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0,
|
||||
0x0, 0x0, 0x9, 0x30, 0x0, 0x0, 0x0, 0x0,
|
||||
0xc2, 0x40, 0x0, 0x0, 0x0, 0x28, 0xc, 0x0,
|
||||
0x0, 0x0, 0x7, 0x0, 0x30, 0x0, 0x0, 0x0,
|
||||
0xc0, 0x0, 0xd0, 0x0, 0x0, 0x70, 0x0, 0x2,
|
||||
0xd0, 0x0, 0x78, 0x0, 0x0, 0x2, 0xff, 0xf8,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
||||
/* U+E286 "" */
|
||||
0x0, 0xbf, 0xff, 0xff, 0xff, 0xe0, 0x0, 0x1c,
|
||||
0x0, 0x0, 0x9, 0x2, 0x40, 0x1, 0x80, 0x0,
|
||||
0x0, 0x90, 0x18, 0x0, 0x18, 0x0, 0x0, 0x9,
|
||||
0x1, 0x80, 0x1, 0x80, 0x0, 0x0, 0x90, 0x18,
|
||||
0x0, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x1,
|
||||
0x80, 0x0, 0x0, 0x90, 0x18, 0x0, 0x18, 0x0,
|
||||
0x0, 0x9, 0x1, 0x80, 0x1, 0x80, 0x0, 0x0,
|
||||
0x90, 0x18, 0x0, 0x18, 0x0, 0x0, 0x9, 0x1,
|
||||
0x80, 0x1, 0x95, 0x55, 0x55, 0xd5, 0x68, 0x0,
|
||||
0x1e, 0xaa, 0xaa, 0xaf, 0xab, 0x80, 0x1, 0x80,
|
||||
0x0, 0x0, 0x90, 0x18, 0x0, 0x18, 0x0, 0x0,
|
||||
0x9, 0x1, 0x80, 0x1, 0x80, 0x0, 0x0, 0x90,
|
||||
0x18, 0x0, 0x18, 0x0, 0x0, 0x1f, 0x1, 0x80,
|
||||
0x1, 0x80, 0x0, 0x1, 0xf0, 0x18, 0x0, 0x18,
|
||||
0x0, 0x0, 0x4, 0x1, 0x80, 0x1, 0x80, 0x0,
|
||||
0x0, 0x0, 0x18, 0x0, 0x18, 0x0, 0x0, 0x0,
|
||||
0x1, 0x80, 0x1, 0x80, 0x0, 0x0, 0x0, 0x18,
|
||||
0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
|
||||
|
||||
/* U+F100 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4,
|
||||
0x2a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xb4,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x2f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbc,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbc,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbc,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10,
|
||||
|
||||
/* U+F117 "" */
|
||||
0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f,
|
||||
0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff,
|
||||
0x90, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xfe,
|
||||
0x0, 0x0, 0x0, 0x0, 0x3f, 0xf1, 0xbf, 0xd0,
|
||||
0x0, 0x0, 0x0, 0xb, 0xf0, 0x3, 0xf8, 0x0,
|
||||
0x0, 0x0, 0x2, 0xf0, 0x0, 0x7e, 0x0, 0x0,
|
||||
0x0, 0x0, 0x70, 0x0, 0x1f, 0x40, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xb, 0xc0, 0xb, 0x0, 0x0,
|
||||
0x0, 0x0, 0x3, 0xe0, 0xf, 0x40, 0x0, 0x0,
|
||||
0x0, 0x1, 0xf0, 0x1f, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xf0, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0xb4, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78,
|
||||
0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x2d,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x2e, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xb8, 0x1f, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xb4, 0xf, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xf0, 0xf, 0x40, 0x0, 0x0, 0x0,
|
||||
0x1, 0xf0, 0x7, 0xc0, 0x0, 0x0, 0x0, 0x3,
|
||||
0xd0, 0x3, 0xe0, 0x0, 0x0, 0x0, 0xb, 0xc0,
|
||||
0x0, 0xf8, 0x0, 0x0, 0x0, 0x2f, 0x0, 0x0,
|
||||
0x7f, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x1f,
|
||||
0xe0, 0x0, 0xb, 0xf4, 0x0, 0x0, 0x3, 0xff,
|
||||
0xaa, 0xff, 0x80, 0x0, 0x0, 0x0, 0x6f, 0xff,
|
||||
0xf9, 0x0, 0x0, 0x0, 0x0, 0x1, 0x69, 0x40,
|
||||
0x0, 0x0,
|
||||
|
||||
/* U+F1F3 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xb4, 0x0, 0x0, 0x0, 0x1, 0xd0,
|
||||
0x0, 0x0, 0xf, 0x40, 0x0, 0x0, 0x0, 0x2e,
|
||||
0x0, 0x0, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xe0, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x5f, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0,
|
||||
0x0, 0x0, 0x0, 0x50, 0x5, 0x40, 0xf, 0xf0,
|
||||
0x0, 0x0, 0x0, 0x3f, 0xc2, 0xfd, 0x0, 0xff,
|
||||
0x0, 0x0, 0x0, 0x3, 0xfc, 0x3f, 0xe0, 0xf,
|
||||
0xf0, 0x0, 0x0, 0x0, 0x3f, 0xc3, 0xfe, 0x0,
|
||||
0xff, 0x0, 0x0, 0x0, 0x3, 0xfc, 0x2f, 0xd0,
|
||||
0xf, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xf, 0xf0, 0x7, 0xf0, 0x3f, 0x80, 0x0,
|
||||
0x0, 0x0, 0xff, 0x0, 0xff, 0x83, 0xfc, 0x0,
|
||||
0x0, 0x0, 0xf, 0xf0, 0xf, 0xf8, 0x7f, 0xc0,
|
||||
0x0, 0x0, 0x0, 0xff, 0x0, 0xbf, 0x43, 0xfc,
|
||||
0x0, 0x0, 0x0, 0xf, 0xf0, 0x1, 0x50, 0x5,
|
||||
0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff,
|
||||
0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f,
|
||||
0xbd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7,
|
||||
0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfc, 0xb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfe, 0x0,
|
||||
|
||||
/* U+F229 "" */
|
||||
0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x3, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xd3, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfc, 0xf, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x1,
|
||||
0xff, 0xff, 0xff, 0xff, 0xf4, 0x0, 0xb, 0xff,
|
||||
0xff, 0xff, 0xfe, 0x0, 0x0, 0x2f, 0xff, 0xff,
|
||||
0xff, 0x80, 0x0, 0x0, 0xff, 0xff, 0xff, 0xf0,
|
||||
0x0, 0x0, 0x3, 0xff, 0xff, 0xfc, 0x0, 0x0,
|
||||
0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3f, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x1, 0xff,
|
||||
0xf4, 0x0, 0x0, 0x0, 0x0, 0x7, 0xfd, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x2f, 0x80, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
|
||||
/* U+F235 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x2f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7,
|
||||
0xfd, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xf4,
|
||||
0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xc0, 0x0,
|
||||
0x0, 0x0, 0xf, 0xff, 0xff, 0x0, 0x0, 0x0,
|
||||
0x3, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0xff,
|
||||
0xff, 0xff, 0xf0, 0x0, 0x0, 0x2f, 0xff, 0xff,
|
||||
0xff, 0x80, 0x0, 0xb, 0xff, 0xff, 0xff, 0xfe,
|
||||
0x0, 0x1, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x0,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xd0, 0xf, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x3, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xfc, 0x7f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xd3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
|
||||
0x1a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0,
|
||||
|
||||
/* U+F3E3 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x1, 0xff,
|
||||
0x40, 0xb8, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xd7,
|
||||
0xff, 0xd7, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x7f,
|
||||
0xff, 0xff, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0,
|
||||
0x3f, 0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x0, 0x7f, 0xfe, 0x55, 0xbf, 0xfd, 0x0, 0x0,
|
||||
0x0, 0x51, 0xff, 0xd0, 0x0, 0x7, 0xff, 0x45,
|
||||
0x0, 0x2, 0xff, 0xff, 0xc0, 0x0, 0x0, 0xbf,
|
||||
0xff, 0x80, 0x3, 0xff, 0xfb, 0xe0, 0x0, 0x0,
|
||||
0x2f, 0xff, 0xc0, 0x2, 0xff, 0xe0, 0xf4, 0x0,
|
||||
0x0, 0xb, 0xff, 0x80, 0x0, 0xff, 0xc0, 0x7c,
|
||||
0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x7f, 0x40,
|
||||
0x2f, 0x0, 0x0, 0x1, 0xfd, 0x0, 0x0, 0x7f,
|
||||
0x0, 0xf, 0x80, 0x0, 0x0, 0xfd, 0x0, 0x1,
|
||||
0xfe, 0x0, 0x3, 0xd0, 0x0, 0x0, 0xbf, 0x40,
|
||||
0x1f, 0xfd, 0x0, 0x1, 0xf0, 0x0, 0x0, 0xbf,
|
||||
0xf4, 0x3f, 0xfd, 0x0, 0x0, 0xbf, 0xff, 0xff,
|
||||
0xff, 0xfc, 0x3f, 0xfd, 0x0, 0x0, 0xbf, 0xff,
|
||||
0xff, 0xff, 0xfc, 0x1f, 0xfd, 0x0, 0x1, 0xf0,
|
||||
0x0, 0x0, 0xbf, 0xf4, 0x1, 0xfe, 0x0, 0x3,
|
||||
0xd0, 0x0, 0x0, 0xbf, 0x40, 0x0, 0x7f, 0x0,
|
||||
0xf, 0x80, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x7f,
|
||||
0x40, 0x2f, 0x0, 0x0, 0x1, 0xfd, 0x0, 0x0,
|
||||
0xff, 0xc0, 0x7c, 0x0, 0x0, 0x3, 0xff, 0x0,
|
||||
0x2, 0xff, 0xe0, 0xf4, 0x0, 0x0, 0xb, 0xff,
|
||||
0x80, 0x3, 0xff, 0xfb, 0xe0, 0x0, 0x0, 0x2f,
|
||||
0xff, 0xc0, 0x2, 0xff, 0xff, 0xc0, 0x0, 0x0,
|
||||
0xbf, 0xff, 0x80, 0x0, 0x51, 0xff, 0xd0, 0x0,
|
||||
0x7, 0xff, 0x45, 0x0, 0x0, 0x0, 0x7f, 0xfe,
|
||||
0x55, 0xbf, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x3f,
|
||||
0xff, 0xff, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xfd, 0x0, 0x0, 0x0,
|
||||
0x0, 0x7f, 0xd7, 0xff, 0xd7, 0xfd, 0x0, 0x0,
|
||||
0x0, 0x0, 0x2e, 0x1, 0xff, 0x40, 0xb8, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0,
|
||||
|
||||
/* U+F3F2 "" */
|
||||
0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x5, 0xf, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x2, 0xf0, 0xf0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x7d, 0xf, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xf, 0x80, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x3, 0xe0, 0xf, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0xf0, 0x0,
|
||||
0x0, 0xf, 0x0, 0x0, 0x2f, 0x0, 0xf, 0x0,
|
||||
0x0, 0x3, 0xfc, 0x0, 0x7, 0xd0, 0x0, 0xf0,
|
||||
0x0, 0x0, 0xbf, 0xf0, 0x1, 0xf4, 0x0, 0xf,
|
||||
0x0, 0x0, 0x1f, 0xf, 0xc0, 0x3e, 0x0, 0x0,
|
||||
0xf0, 0x0, 0x3, 0xd0, 0x3f, 0xf, 0xc0, 0x0,
|
||||
0xf, 0x0, 0x0, 0xf8, 0x0, 0xff, 0xf0, 0x0,
|
||||
0x0, 0xf0, 0x0, 0x2f, 0x0, 0x3, 0xfc, 0x0,
|
||||
0x0, 0xf, 0x0, 0x7, 0xd0, 0x0, 0xf, 0x40,
|
||||
0x0, 0x0, 0xf0, 0x0, 0xf8, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xf, 0x0, 0x3f, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xf0, 0x7, 0xc0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xf, 0x0, 0xf4, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xf0, 0x2e, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x40, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf,
|
||||
0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff,
|
||||
|
||||
/* U+F425 "" */
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfd, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xff, 0xd0, 0x1a, 0x80,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfc, 0x7d, 0xf, 0xf4,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfc, 0x7, 0xd3, 0xfd,
|
||||
0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x7d, 0xff,
|
||||
0x40, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x7, 0xff,
|
||||
0xd0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x7f,
|
||||
0xf4, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x7,
|
||||
0xfd, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x7f, 0x40, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x7, 0xe0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x0, 0x7d, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x0, 0x7, 0xe0, 0x0, 0xfc, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xbe, 0x0, 0xff, 0x0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x2f, 0xe0, 0xff, 0xc0, 0x0, 0x0,
|
||||
0x0, 0x0, 0xb, 0xfe, 0x3c, 0xf0, 0x0, 0x0,
|
||||
0x0, 0x0, 0x2, 0xe7, 0xc0, 0x3c, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xb8, 0x0, 0xf, 0x0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x2e, 0x0, 0x3, 0xc0, 0x0,
|
||||
0x0, 0x0, 0x0, 0xb, 0x80, 0x0, 0xf0, 0x0,
|
||||
0x0, 0x0, 0x0, 0x2, 0xe0, 0x0, 0x3c, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xb8, 0x0, 0xf, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x3, 0xc0,
|
||||
0x0, 0x0, 0x0, 0x0, 0xb, 0x80, 0x0, 0xf0,
|
||||
0x0, 0x0, 0x0, 0x0, 0x2, 0xe0, 0x0, 0x3c,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0xb8, 0x0, 0xf,
|
||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x3,
|
||||
0xe0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x40, 0x0,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x0,
|
||||
0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x0,
|
||||
|
||||
/* U+F5CD "" */
|
||||
0x0, 0x1f, 0xf4, 0x0, 0x0, 0xbf, 0xfe, 0x0,
|
||||
0x1, 0xf9, 0x6f, 0x40, 0x3, 0xe0, 0xb, 0xc0,
|
||||
0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0,
|
||||
0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0,
|
||||
0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0,
|
||||
0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc0,
|
||||
0x3, 0xc0, 0x3, 0xc0, 0x3, 0xc3, 0xc3, 0xc0,
|
||||
0x3, 0xc3, 0xc3, 0xc0, 0x3, 0xc3, 0xc3, 0xc0,
|
||||
0x3, 0xc3, 0xc3, 0xc0, 0x3, 0xc3, 0xc3, 0xc0,
|
||||
0x3, 0xc3, 0xc3, 0xc0, 0x3, 0xc3, 0xc3, 0xc0,
|
||||
0x3, 0xc3, 0xc3, 0xc0, 0x7, 0xc3, 0xc3, 0xd0,
|
||||
0xf, 0x83, 0xc2, 0xf0, 0x2f, 0x3, 0xd0, 0xf8,
|
||||
0x3d, 0x1f, 0xf4, 0x7c, 0x3c, 0x3f, 0xfc, 0x3c,
|
||||
0x7c, 0x3f, 0xfc, 0x3d, 0x3c, 0x3f, 0xfc, 0x3d,
|
||||
0x3c, 0x1f, 0xf4, 0x3c, 0x2e, 0x6, 0x90, 0xb8,
|
||||
0xf, 0x80, 0x2, 0xf0, 0x7, 0xf4, 0x1f, 0xd0,
|
||||
0x1, 0xff, 0xff, 0x40, 0x0, 0x1f, 0xf4, 0x0,
|
||||
0x0, 0x0, 0x0, 0x0
|
||||
};
|
||||
|
||||
|
||||
/*---------------------
|
||||
* GLYPH DESCRIPTION
|
||||
*--------------------*/
|
||||
|
||||
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
|
||||
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||
{.bitmap_index = 0, .adv_w = 146, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 0, .adv_w = 123, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = -5},
|
||||
{.bitmap_index = 15, .adv_w = 208, .box_w = 11, .box_h = 3, .ofs_x = 1, .ofs_y = 8},
|
||||
{.bitmap_index = 24, .adv_w = 123, .box_w = 6, .box_h = 5, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 32, .adv_w = 363, .box_w = 21, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 158, .adv_w = 201, .box_w = 10, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 218, .adv_w = 312, .box_w = 19, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 332, .adv_w = 311, .box_w = 18, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 440, .adv_w = 364, .box_w = 22, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 572, .adv_w = 312, .box_w = 19, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 686, .adv_w = 336, .box_w = 20, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 806, .adv_w = 325, .box_w = 18, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 914, .adv_w = 350, .box_w = 20, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 1034, .adv_w = 336, .box_w = 20, .box_h = 24, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 1154, .adv_w = 393, .box_w = 23, .box_h = 24, .ofs_x = 1, .ofs_y = 0},
|
||||
{.bitmap_index = 1292, .adv_w = 228, .box_w = 12, .box_h = 11, .ofs_x = 1, .ofs_y = 13},
|
||||
{.bitmap_index = 1325, .adv_w = 544, .box_w = 22, .box_h = 26, .ofs_x = 6, .ofs_y = 4},
|
||||
{.bitmap_index = 1468, .adv_w = 544, .box_w = 26, .box_h = 22, .ofs_x = 4, .ofs_y = 6},
|
||||
{.bitmap_index = 1611, .adv_w = 544, .box_w = 32, .box_h = 31, .ofs_x = 1, .ofs_y = 1},
|
||||
{.bitmap_index = 1859, .adv_w = 544, .box_w = 28, .box_h = 30, .ofs_x = 3, .ofs_y = 4},
|
||||
{.bitmap_index = 2069, .adv_w = 544, .box_w = 34, .box_h = 35, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 2367, .adv_w = 544, .box_w = 26, .box_h = 17, .ofs_x = 4, .ofs_y = 9},
|
||||
{.bitmap_index = 2478, .adv_w = 544, .box_w = 26, .box_h = 17, .ofs_x = 4, .ofs_y = 8},
|
||||
{.bitmap_index = 2589, .adv_w = 544, .box_w = 36, .box_h = 36, .ofs_x = -1, .ofs_y = -1},
|
||||
{.bitmap_index = 2913, .adv_w = 544, .box_w = 34, .box_h = 34, .ofs_x = 0, .ofs_y = 0},
|
||||
{.bitmap_index = 3202, .adv_w = 544, .box_w = 33, .box_h = 30, .ofs_x = 0, .ofs_y = 2},
|
||||
{.bitmap_index = 3450, .adv_w = 544, .box_w = 16, .box_h = 35, .ofs_x = 9, .ofs_y = -1}
|
||||
};
|
||||
|
||||
/*---------------------
|
||||
* CHARACTER MAPPING
|
||||
*--------------------*/
|
||||
|
||||
static const uint16_t unicode_list_0[] = {
|
||||
0x0, 0xc, 0xd, 0xe, 0x10, 0x11, 0x12, 0x13,
|
||||
0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x23, 0x90,
|
||||
0xe022, 0xe266, 0xf0e0, 0xf0f7, 0xf1d3, 0xf209, 0xf215, 0xf3c3,
|
||||
0xf3d2, 0xf405, 0xf5ad
|
||||
};
|
||||
|
||||
/*Collect the unicode lists and glyph_id offsets*/
|
||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||
{
|
||||
{
|
||||
.range_start = 32, .range_length = 62894, .glyph_id_start = 1,
|
||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||
}
|
||||
};
|
||||
|
||||
/*-----------------
|
||||
* KERNING
|
||||
*----------------*/
|
||||
|
||||
|
||||
/*Map glyph_ids to kern left classes*/
|
||||
static const uint8_t kern_left_class_mapping[] =
|
||||
{
|
||||
0, 0, 1, 2, 1, 3, 0, 4,
|
||||
5, 6, 7, 8, 9, 10, 3, 11,
|
||||
12, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0
|
||||
};
|
||||
|
||||
/*Map glyph_ids to kern right classes*/
|
||||
static const uint8_t kern_right_class_mapping[] =
|
||||
{
|
||||
0, 0, 1, 2, 1, 3, 4, 5,
|
||||
6, 7, 8, 3, 9, 10, 11, 12,
|
||||
13, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0
|
||||
};
|
||||
|
||||
/*Kern values between classes*/
|
||||
static const int8_t kern_class_values[] =
|
||||
{
|
||||
0, -4, -7, -7, 5, 5, -5, 0,
|
||||
-7, 5, 0, 0, -34, -4, 2, 4,
|
||||
-10, -7, -11, 4, 0, -5, 0, 0,
|
||||
0, 0, -7, 4, 0, -2, -2, -5,
|
||||
0, 0, -4, 0, 0, 0, 2, 5,
|
||||
-4, -2, 0, 0, 0, -10, 0, -2,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
-3, -3, 0, -5, -7, 0, 0, 0,
|
||||
-8, 11, 5, 0, -14, -2, -7, 0,
|
||||
-2, -26, 5, -4, 5, -16, 0, 0,
|
||||
0, 0, -3, -3, 0, -3, -7, 0,
|
||||
0, 0, -7, 5, 3, 0, 0, 0,
|
||||
0, 0, 0, -4, 0, 0, 0, -10,
|
||||
-28, -27, -11, 5, 0, -4, -35, -10,
|
||||
0, -10, 0, -10, 3, 5, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 7, -2, -12, 5, -4, -2,
|
||||
-14, -5, 0, -7, -5, -8, 5, -34,
|
||||
0, 2, 23, 16, 9, -22, 4, 23,
|
||||
0, 20, 0, 0
|
||||
};
|
||||
|
||||
|
||||
/*Collect the kern class' data in one place*/
|
||||
static const lv_font_fmt_txt_kern_classes_t kern_classes =
|
||||
{
|
||||
.class_pair_values = kern_class_values,
|
||||
.left_class_mapping = kern_left_class_mapping,
|
||||
.right_class_mapping = kern_right_class_mapping,
|
||||
.left_class_cnt = 12,
|
||||
.right_class_cnt = 13,
|
||||
};
|
||||
|
||||
/*--------------------
|
||||
* ALL CUSTOM DATA
|
||||
*--------------------*/
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 8
|
||||
/*Store all the custom data of the font*/
|
||||
static lv_font_fmt_txt_glyph_cache_t cache;
|
||||
#endif
|
||||
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
static const lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#else
|
||||
static lv_font_fmt_txt_dsc_t font_dsc = {
|
||||
#endif
|
||||
.glyph_bitmap = glyph_bitmap,
|
||||
.glyph_dsc = glyph_dsc,
|
||||
.cmaps = cmaps,
|
||||
.kern_dsc = &kern_classes,
|
||||
.kern_scale = 16,
|
||||
.cmap_num = 1,
|
||||
.bpp = 2,
|
||||
.kern_classes = 1,
|
||||
.bitmap_format = 0,
|
||||
#if LVGL_VERSION_MAJOR == 8
|
||||
.cache = &cache
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*-----------------
|
||||
* PUBLIC FONT
|
||||
*----------------*/
|
||||
|
||||
/*Initialize a public general font descriptor*/
|
||||
#if LVGL_VERSION_MAJOR >= 8
|
||||
const lv_font_t symbol_font_34 = {
|
||||
#else
|
||||
lv_font_t symbol_font_34 = {
|
||||
#endif
|
||||
.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 = 40, /*The maximum line height required by the font*/
|
||||
.base_line = 5, /*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) || LVGL_VERSION_MAJOR >= 8
|
||||
.underline_position = 0,
|
||||
.underline_thickness = 0,
|
||||
#endif
|
||||
.dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
#if LV_VERSION_CHECK(8, 2, 0) || LVGL_VERSION_MAJOR >= 9
|
||||
.fallback = NULL,
|
||||
#endif
|
||||
.user_data = NULL,
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /*#if SYMBOL_FONT_34*/
|
||||
|
||||
+320
-320
@@ -3,334 +3,334 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SYMBOLS_H
|
||||
#define SYMBOLS_H
|
||||
#ifndef SYMBOLS_H
|
||||
#define SYMBOLS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
LV_FONT_DECLARE(Bootstrap_Icons_12);
|
||||
LV_FONT_DECLARE(Bootstrap_Icons_18);
|
||||
LV_FONT_DECLARE(Bootstrap_Icons_30);
|
||||
// included icons in bootstrap font
|
||||
// use this list for font generator:
|
||||
//included icons in bootstrap font
|
||||
//use this list for font generator:
|
||||
/*
|
||||
0xF619-0xF61C,0xF7F6,0xF4FF,0xF185-0xF188,0xF30B-0xF30D,0xF493,0xF4F7,
|
||||
0xF5CD-0xF5D2,0xF100,0xF479,0xF5D4,0xF5D3,0xF116,0xF117,0xF3F2,0xF229,0xF22C,0xF235,0xF238,0xF22D,0xF230,0xF231,0xF234
|
||||
https://www.cogsci.ed.ac.uk/~richard/utf-8.cgi?input=f287&mode=hex
|
||||
*/
|
||||
#define ICON_WIFI_LOW "\xEF\x98\x99" // F619
|
||||
#define ICON_WIFI_MED "\xEF\x98\x9A" // F61A
|
||||
#define ICON_WIFI_HIGH "\xEF\x98\x9C" // F61C
|
||||
#define ICON_WIFI_OFF "\xEF\x98\x9B" // F61B
|
||||
#define ICON_FIRE "\xEF\x9F\xB6" // F7F6
|
||||
#define ICON_POWER "\xEF\x93\xBF" // F4FF
|
||||
#define ICON_BATT_CHARG "\xEF\x86\x85" // F185
|
||||
#define ICON_BATT_FULL "\xEF\x86\x86" // F186
|
||||
#define ICON_BATT_HALF "\xEF\x86\x87" // F187
|
||||
#define ICON_BATT "\xEF\x86\x88" // F188
|
||||
#define ICON_DROPLET_FULL "\xEF\x8C\x8B" // F30B
|
||||
#define ICON_DROPLET_HALF "\xEF\x8C\x8C" // F30C
|
||||
#define ICON_DROPLET "\xEF\x8C\x8D" // F30D
|
||||
#define ICON_MOISTURE "\xEF\x92\x93" // F493
|
||||
#define ICON_PLUG "\xEF\x93\xB7" // F4F7
|
||||
#define ICON_THERMOMETER_HALF "\xEF\x97\x8D" // F5CD
|
||||
#define ICON_THERMOMETER_HIGH "\xEF\x97\x8E" // F5CE
|
||||
#define ICON_THERMOMETER_LOW "\xEF\x97\x8F" // F5CF
|
||||
#define ICON_THERMOMETER_SNOW "\xEF\x97\x90" // F5D0
|
||||
#define ICON_THERMOMETER_SUN "\xEF\x97\x91" // F5D1
|
||||
#define ICON_THERMOMETER "\xEF\x97\x92" // F5D2
|
||||
#define ICON_SHUTTER "\xEF\x84\x80" // F100
|
||||
#define ICON_MENU_LINES "\xEF\x91\xB9" // F479
|
||||
#define ICON_MENU_DOTS_H "\xEF\x97\x94" // F5D4
|
||||
#define ICON_MENU_DOTS_V "\xEF\x97\x93" // F5D3
|
||||
#define ICON_ROTATE_CW "\xEF\x84\x96" // F116
|
||||
#define ICON_ROTATE_CC "\xEF\x84\x97" // F117
|
||||
#define ICON_GRAPH "\xEF\x8F\xB2" // F3F2
|
||||
#define ICON_ARROW_DOWN_FILL "\xEF\x88\xA9" // F229
|
||||
#define ICON_ARROW_DOWN "\xEF\x88\xAC" // F22C
|
||||
#define ICON_ARROW_UP_FILL "\xEF\x88\xB5" // F235
|
||||
#define ICON_ARROW_UP "\xEF\x88\xB8" // F238
|
||||
#define ICON_ARROW_LEFT_FILL "\xEF\x88\xAD" // F22D
|
||||
#define ICON_ARROW_LEFT "\xEF\x88\xB0" // F230
|
||||
#define ICON_ARROW_RIGHT_FILL "\xEF\x88\xB1" // F231
|
||||
#define ICON_ARROW_RIGHT "\xEF\x88\xB4" // F234
|
||||
|
||||
/*-------------------------------
|
||||
* Symbols from montserrat font
|
||||
*-----------------------------*/
|
||||
// use this list for font generator:
|
||||
*/
|
||||
#define SYM_WIFI_LOW "\xEF\x98\x99"
|
||||
#define SYM_WIFI_MED "\xEF\x98\x9A"
|
||||
#define SYM_WIFI_HIGH "\xEF\x98\x9C"
|
||||
#define SYM_WIFI_OFF "\xEF\x98\x9B"
|
||||
#define SYM_FIRE "\xEF\x9F\xB6"
|
||||
#define SYM_POWER "\xEF\x93\xBF"
|
||||
#define SYM_DROPLET_FULL "\xEF\x8C\x8B"
|
||||
#define SYM_DROPLET_HALF "\xEF\x8C\x8C"
|
||||
#define SYM_DROPLET "\xEF\x8C\x8D"
|
||||
#define SYM_THERMOMETER_HALF "\xEF\x97\x8D"
|
||||
#define SYM_THERMOMETER_SNOW "\xEF\x97\x90"
|
||||
#define SYM_THERMOMETER_SUN "\xEF\x97\x91"
|
||||
#define SYM_SHUTTER "\xEF\x84\x80"
|
||||
#define SYM_ROTATE_CC "\xEF\x84\x97"
|
||||
#define SYM_GRAPH "\xEF\x8F\xB2"
|
||||
#define SYM_ARROW_DOWN_FILL "\xEF\x88\xA9"
|
||||
#define SYM_ARROW_DOWN "\xEF\x88\xAC"
|
||||
#define SYM_ARROW_UP_FILL "\xEF\x88\xB5"
|
||||
#define SYM_SUNRISE "\xEF\x96\xA5"
|
||||
#define SYM_SUNSET "\xEF\x96\xA7"
|
||||
#define SYM_HOUSE "\xEF\x90\xA5"
|
||||
#define SYM_CHECK "\xEF\x89\xB2"
|
||||
#define SYM_X_LG "\xEF\x99\x99"
|
||||
#define SYM_GEAR_CON "\xEF\x8F\xA3"
|
||||
#define SYM_CALENDAR_WEEK "\xEF\x87\xB3"
|
||||
|
||||
|
||||
#define SYM_BLINDS "\xEE\x8A\x86"
|
||||
#define SYM_KEYBOARD_ARROW_DOWN "\xEE\x8C\x93"
|
||||
#define SYM_KEYBOARD_ARROW_RIGHT "\xEE\x8C\x95"
|
||||
#define SYM_KEYBOARD_ARROW_UP "\xEE\x8C\x96"
|
||||
#define SYM_REPLAY "\xEE\x81\x82"
|
||||
#define SYM_ECO "\xEE\xA8\xB5"
|
||||
#define SYM_NATURE "\xEE\x90\x86"
|
||||
#define SYM_NATURE_PEOPLE "\xEE\x90\x87"
|
||||
|
||||
|
||||
|
||||
|
||||
/*-------------------------------
|
||||
* Symbols from montserrat font
|
||||
*-----------------------------*/
|
||||
//use this list for font generator:
|
||||
/*
|
||||
0x20-0x7F,0x00B0-0xB4,0x2022,0xAB,0xBB-0xBE,0x3A9,0x3C0,0x2022
|
||||
µÄÖÜäöüß
|
||||
|
||||
*/
|
||||
|
||||
/*-------------------------------
|
||||
* Symbols from FontAwesome font
|
||||
*-----------------------------*/
|
||||
|
||||
/*In the font converter use this list as range:
|
||||
61441, 61448, 61451, 61452, 61453, 61457, 61459, 61461, 61465, 61468,
|
||||
61473, 61478, 61479, 61480, 61502, 61507, 61512, 61515, 61516, 61517,
|
||||
61521, 61522, 61523, 61524, 61543, 61544, 61550, 61552, 61553, 61556,
|
||||
61559, 61560, 61561, 61563, 61587, 61589, 61636, 61637, 61639, 61641,
|
||||
61664, 61671, 61674, 61683, 61724, 61732, 61787, 61931, 62016, 62017,
|
||||
62018, 62019, 62020, 62087, 62099, 62189, 62212, 62810, 63426, 63650
|
||||
*/
|
||||
|
||||
/* These symbols can be predefined in the lv_conf.h file.
|
||||
* If they are not predefined, they will use the following values
|
||||
|
||||
/*-------------------------------
|
||||
* Symbols from FontAwesome font
|
||||
*-----------------------------*/
|
||||
|
||||
/*In the font converter use this list as range:
|
||||
61441, 61448, 61451, 61452, 61453, 61457, 61459, 61461, 61465, 61468,
|
||||
61473, 61478, 61479, 61480, 61502, 61507, 61512, 61515, 61516, 61517,
|
||||
61521, 61522, 61523, 61524, 61543, 61544, 61550, 61552, 61553, 61556,
|
||||
61559, 61560, 61561, 61563, 61587, 61589, 61636, 61637, 61639, 61641,
|
||||
61664, 61671, 61674, 61683, 61724, 61732, 61787, 61931, 62016, 62017,
|
||||
62018, 62019, 62020, 62087, 62099, 62189, 62212, 62810, 63426, 63650
|
||||
*/
|
||||
|
||||
#if !defined LV_SYMBOL_AUDIO
|
||||
#define LV_SYMBOL_AUDIO "\xEF\x80\x81" /*61441, 0xF001*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VIDEO
|
||||
#define LV_SYMBOL_VIDEO "\xEF\x80\x88" /*61448, 0xF008*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LIST
|
||||
#define LV_SYMBOL_LIST "\xEF\x80\x8B" /*61451, 0xF00B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_OK
|
||||
#define LV_SYMBOL_OK "\xEF\x80\x8C" /*61452, 0xF00C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CLOSE
|
||||
#define LV_SYMBOL_CLOSE "\xEF\x80\x8D" /*61453, 0xF00D*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_POWER
|
||||
#define LV_SYMBOL_POWER "\xEF\x80\x91" /*61457, 0xF011*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SETTINGS
|
||||
#define LV_SYMBOL_SETTINGS "\xEF\x80\x93" /*61459, 0xF013*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_HOME
|
||||
#define LV_SYMBOL_HOME "\xEF\x80\x95" /*61461, 0xF015*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DOWNLOAD
|
||||
#define LV_SYMBOL_DOWNLOAD "\xEF\x80\x99" /*61465, 0xF019*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DRIVE
|
||||
#define LV_SYMBOL_DRIVE "\xEF\x80\x9C" /*61468, 0xF01C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_REFRESH
|
||||
#define LV_SYMBOL_REFRESH "\xEF\x80\xA1" /*61473, 0xF021*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_MUTE
|
||||
#define LV_SYMBOL_MUTE "\xEF\x80\xA6" /*61478, 0xF026*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VOLUME_MID
|
||||
#define LV_SYMBOL_VOLUME_MID "\xEF\x80\xA7" /*61479, 0xF027*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VOLUME_MAX
|
||||
#define LV_SYMBOL_VOLUME_MAX "\xEF\x80\xA8" /*61480, 0xF028*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_IMAGE
|
||||
#define LV_SYMBOL_IMAGE "\xEF\x80\xBE" /*61502, 0xF03E*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_TINT
|
||||
#define LV_SYMBOL_TINT "\xEF\x81\x83" /*61507, 0xF043*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PREV
|
||||
#define LV_SYMBOL_PREV "\xEF\x81\x88" /*61512, 0xF048*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PLAY
|
||||
#define LV_SYMBOL_PLAY "\xEF\x81\x8B" /*61515, 0xF04B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PAUSE
|
||||
#define LV_SYMBOL_PAUSE "\xEF\x81\x8C" /*61516, 0xF04C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_STOP
|
||||
#define LV_SYMBOL_STOP "\xEF\x81\x8D" /*61517, 0xF04D*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_NEXT
|
||||
#define LV_SYMBOL_NEXT "\xEF\x81\x91" /*61521, 0xF051*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EJECT
|
||||
#define LV_SYMBOL_EJECT "\xEF\x81\x92" /*61522, 0xF052*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LEFT
|
||||
#define LV_SYMBOL_LEFT "\xEF\x81\x93" /*61523, 0xF053*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_RIGHT
|
||||
#define LV_SYMBOL_RIGHT "\xEF\x81\x94" /*61524, 0xF054*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PLUS
|
||||
#define LV_SYMBOL_PLUS "\xEF\x81\xA7" /*61543, 0xF067*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_MINUS
|
||||
#define LV_SYMBOL_MINUS "\xEF\x81\xA8" /*61544, 0xF068*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EYE_OPEN
|
||||
#define LV_SYMBOL_EYE_OPEN "\xEF\x81\xAE" /*61550, 0xF06E*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EYE_CLOSE
|
||||
#define LV_SYMBOL_EYE_CLOSE "\xEF\x81\xB0" /*61552, 0xF070*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_WARNING
|
||||
#define LV_SYMBOL_WARNING "\xEF\x81\xB1" /*61553, 0xF071*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SHUFFLE
|
||||
#define LV_SYMBOL_SHUFFLE "\xEF\x81\xB4" /*61556, 0xF074*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_UP
|
||||
#define LV_SYMBOL_UP "\xEF\x81\xB7" /*61559, 0xF077*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DOWN
|
||||
#define LV_SYMBOL_DOWN "\xEF\x81\xB8" /*61560, 0xF078*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LOOP
|
||||
#define LV_SYMBOL_LOOP "\xEF\x81\xB9" /*61561, 0xF079*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DIRECTORY
|
||||
#define LV_SYMBOL_DIRECTORY "\xEF\x81\xBB" /*61563, 0xF07B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_UPLOAD
|
||||
#define LV_SYMBOL_UPLOAD "\xEF\x82\x93" /*61587, 0xF093*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CALL
|
||||
#define LV_SYMBOL_CALL "\xEF\x82\x95" /*61589, 0xF095*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CUT
|
||||
#define LV_SYMBOL_CUT "\xEF\x83\x84" /*61636, 0xF0C4*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_COPY
|
||||
#define LV_SYMBOL_COPY "\xEF\x83\x85" /*61637, 0xF0C5*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SAVE
|
||||
#define LV_SYMBOL_SAVE "\xEF\x83\x87" /*61639, 0xF0C7*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BARS
|
||||
#define LV_SYMBOL_BARS "\xEF\x83\x89" /*61641, 0xF0C9*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_ENVELOPE
|
||||
#define LV_SYMBOL_ENVELOPE "\xEF\x83\xA0" /*61664, 0xF0E0*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CHARGE
|
||||
#define LV_SYMBOL_CHARGE "\xEF\x83\xA7" /*61671, 0xF0E7*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PASTE
|
||||
#define LV_SYMBOL_PASTE "\xEF\x83\xAA" /*61674, 0xF0EA*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BELL
|
||||
#define LV_SYMBOL_BELL "\xEF\x83\xB3" /*61683, 0xF0F3*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_KEYBOARD
|
||||
#define LV_SYMBOL_KEYBOARD "\xEF\x84\x9C" /*61724, 0xF11C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_GPS
|
||||
#define LV_SYMBOL_GPS "\xEF\x84\xA4" /*61732, 0xF124*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_FILE
|
||||
#define LV_SYMBOL_FILE "\xEF\x85\x9B" /*61787, 0xF158*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_WIFI
|
||||
#define LV_SYMBOL_WIFI "\xEF\x87\xAB" /*61931, 0xF1EB*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_FULL
|
||||
#define LV_SYMBOL_BATTERY_FULL "\xEF\x89\x80" /*62016, 0xF240*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_3
|
||||
#define LV_SYMBOL_BATTERY_3 "\xEF\x89\x81" /*62017, 0xF241*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_2
|
||||
#define LV_SYMBOL_BATTERY_2 "\xEF\x89\x82" /*62018, 0xF242*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_1
|
||||
#define LV_SYMBOL_BATTERY_1 "\xEF\x89\x83" /*62019, 0xF243*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_EMPTY
|
||||
#define LV_SYMBOL_BATTERY_EMPTY "\xEF\x89\x84" /*62020, 0xF244*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_USB
|
||||
#define LV_SYMBOL_USB "\xEF\x8a\x87" /*62087, 0xF287*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BLUETOOTH
|
||||
#define LV_SYMBOL_BLUETOOTH "\xEF\x8a\x93" /*62099, 0xF293*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_TRASH
|
||||
#define LV_SYMBOL_TRASH "\xEF\x8B\xAD" /*62189, 0xF2ED*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EDIT
|
||||
#define LV_SYMBOL_EDIT "\xEF\x8C\x84" /*62212, 0xF304*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BACKSPACE
|
||||
#define LV_SYMBOL_BACKSPACE "\xEF\x95\x9A" /*62810, 0xF55A*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SD_CARD
|
||||
#define LV_SYMBOL_SD_CARD "\xEF\x9F\x82" /*63426, 0xF7C2*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_NEW_LINE
|
||||
#define LV_SYMBOL_NEW_LINE "\xEF\xA2\xA2" /*63650, 0xF8A2*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DUMMY
|
||||
/** Invalid symbol at (U+F8FF). If written before a string then `lv_img` will
|
||||
* show it as a label*/
|
||||
#define LV_SYMBOL_DUMMY "\xEF\xA3\xBF"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_SYMBOL_DEF_H*/
|
||||
|
||||
/* These symbols can be predefined in the lv_conf.h file.
|
||||
* If they are not predefined, they will use the following values
|
||||
*/
|
||||
|
||||
#if !defined LV_SYMBOL_AUDIO
|
||||
#define LV_SYMBOL_AUDIO "\xEF\x80\x81" /*61441, 0xF001*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VIDEO
|
||||
#define LV_SYMBOL_VIDEO "\xEF\x80\x88" /*61448, 0xF008*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LIST
|
||||
#define LV_SYMBOL_LIST "\xEF\x80\x8B" /*61451, 0xF00B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_OK
|
||||
#define LV_SYMBOL_OK "\xEF\x80\x8C" /*61452, 0xF00C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CLOSE
|
||||
#define LV_SYMBOL_CLOSE "\xEF\x80\x8D" /*61453, 0xF00D*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_POWER
|
||||
#define LV_SYMBOL_POWER "\xEF\x80\x91" /*61457, 0xF011*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SETTINGS
|
||||
#define LV_SYMBOL_SETTINGS "\xEF\x80\x93" /*61459, 0xF013*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_HOME
|
||||
#define LV_SYMBOL_HOME "\xEF\x80\x95" /*61461, 0xF015*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DOWNLOAD
|
||||
#define LV_SYMBOL_DOWNLOAD "\xEF\x80\x99" /*61465, 0xF019*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DRIVE
|
||||
#define LV_SYMBOL_DRIVE "\xEF\x80\x9C" /*61468, 0xF01C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_REFRESH
|
||||
#define LV_SYMBOL_REFRESH "\xEF\x80\xA1" /*61473, 0xF021*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_MUTE
|
||||
#define LV_SYMBOL_MUTE "\xEF\x80\xA6" /*61478, 0xF026*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VOLUME_MID
|
||||
#define LV_SYMBOL_VOLUME_MID "\xEF\x80\xA7" /*61479, 0xF027*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_VOLUME_MAX
|
||||
#define LV_SYMBOL_VOLUME_MAX "\xEF\x80\xA8" /*61480, 0xF028*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_IMAGE
|
||||
#define LV_SYMBOL_IMAGE "\xEF\x80\xBE" /*61502, 0xF03E*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_TINT
|
||||
#define LV_SYMBOL_TINT "\xEF\x81\x83" /*61507, 0xF043*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PREV
|
||||
#define LV_SYMBOL_PREV "\xEF\x81\x88" /*61512, 0xF048*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PLAY
|
||||
#define LV_SYMBOL_PLAY "\xEF\x81\x8B" /*61515, 0xF04B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PAUSE
|
||||
#define LV_SYMBOL_PAUSE "\xEF\x81\x8C" /*61516, 0xF04C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_STOP
|
||||
#define LV_SYMBOL_STOP "\xEF\x81\x8D" /*61517, 0xF04D*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_NEXT
|
||||
#define LV_SYMBOL_NEXT "\xEF\x81\x91" /*61521, 0xF051*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EJECT
|
||||
#define LV_SYMBOL_EJECT "\xEF\x81\x92" /*61522, 0xF052*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LEFT
|
||||
#define LV_SYMBOL_LEFT "\xEF\x81\x93" /*61523, 0xF053*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_RIGHT
|
||||
#define LV_SYMBOL_RIGHT "\xEF\x81\x94" /*61524, 0xF054*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PLUS
|
||||
#define LV_SYMBOL_PLUS "\xEF\x81\xA7" /*61543, 0xF067*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_MINUS
|
||||
#define LV_SYMBOL_MINUS "\xEF\x81\xA8" /*61544, 0xF068*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EYE_OPEN
|
||||
#define LV_SYMBOL_EYE_OPEN "\xEF\x81\xAE" /*61550, 0xF06E*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EYE_CLOSE
|
||||
#define LV_SYMBOL_EYE_CLOSE "\xEF\x81\xB0" /*61552, 0xF070*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_WARNING
|
||||
#define LV_SYMBOL_WARNING "\xEF\x81\xB1" /*61553, 0xF071*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SHUFFLE
|
||||
#define LV_SYMBOL_SHUFFLE "\xEF\x81\xB4" /*61556, 0xF074*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_UP
|
||||
#define LV_SYMBOL_UP "\xEF\x81\xB7" /*61559, 0xF077*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DOWN
|
||||
#define LV_SYMBOL_DOWN "\xEF\x81\xB8" /*61560, 0xF078*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_LOOP
|
||||
#define LV_SYMBOL_LOOP "\xEF\x81\xB9" /*61561, 0xF079*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DIRECTORY
|
||||
#define LV_SYMBOL_DIRECTORY "\xEF\x81\xBB" /*61563, 0xF07B*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_UPLOAD
|
||||
#define LV_SYMBOL_UPLOAD "\xEF\x82\x93" /*61587, 0xF093*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CALL
|
||||
#define LV_SYMBOL_CALL "\xEF\x82\x95" /*61589, 0xF095*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CUT
|
||||
#define LV_SYMBOL_CUT "\xEF\x83\x84" /*61636, 0xF0C4*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_COPY
|
||||
#define LV_SYMBOL_COPY "\xEF\x83\x85" /*61637, 0xF0C5*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SAVE
|
||||
#define LV_SYMBOL_SAVE "\xEF\x83\x87" /*61639, 0xF0C7*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BARS
|
||||
#define LV_SYMBOL_BARS "\xEF\x83\x89" /*61641, 0xF0C9*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_ENVELOPE
|
||||
#define LV_SYMBOL_ENVELOPE "\xEF\x83\xA0" /*61664, 0xF0E0*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_CHARGE
|
||||
#define LV_SYMBOL_CHARGE "\xEF\x83\xA7" /*61671, 0xF0E7*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_PASTE
|
||||
#define LV_SYMBOL_PASTE "\xEF\x83\xAA" /*61674, 0xF0EA*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BELL
|
||||
#define LV_SYMBOL_BELL "\xEF\x83\xB3" /*61683, 0xF0F3*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_KEYBOARD
|
||||
#define LV_SYMBOL_KEYBOARD "\xEF\x84\x9C" /*61724, 0xF11C*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_GPS
|
||||
#define LV_SYMBOL_GPS "\xEF\x84\xA4" /*61732, 0xF124*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_FILE
|
||||
#define LV_SYMBOL_FILE "\xEF\x85\x9B" /*61787, 0xF158*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_WIFI
|
||||
#define LV_SYMBOL_WIFI "\xEF\x87\xAB" /*61931, 0xF1EB*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_FULL
|
||||
#define LV_SYMBOL_BATTERY_FULL "\xEF\x89\x80" /*62016, 0xF240*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_3
|
||||
#define LV_SYMBOL_BATTERY_3 "\xEF\x89\x81" /*62017, 0xF241*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_2
|
||||
#define LV_SYMBOL_BATTERY_2 "\xEF\x89\x82" /*62018, 0xF242*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_1
|
||||
#define LV_SYMBOL_BATTERY_1 "\xEF\x89\x83" /*62019, 0xF243*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BATTERY_EMPTY
|
||||
#define LV_SYMBOL_BATTERY_EMPTY "\xEF\x89\x84" /*62020, 0xF244*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_USB
|
||||
#define LV_SYMBOL_USB "\xEF\x8a\x87" /*62087, 0xF287*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BLUETOOTH
|
||||
#define LV_SYMBOL_BLUETOOTH "\xEF\x8a\x93" /*62099, 0xF293*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_TRASH
|
||||
#define LV_SYMBOL_TRASH "\xEF\x8B\xAD" /*62189, 0xF2ED*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_EDIT
|
||||
#define LV_SYMBOL_EDIT "\xEF\x8C\x84" /*62212, 0xF304*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_BACKSPACE
|
||||
#define LV_SYMBOL_BACKSPACE "\xEF\x95\x9A" /*62810, 0xF55A*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_SD_CARD
|
||||
#define LV_SYMBOL_SD_CARD "\xEF\x9F\x82" /*63426, 0xF7C2*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_NEW_LINE
|
||||
#define LV_SYMBOL_NEW_LINE "\xEF\xA2\xA2" /*63650, 0xF8A2*/
|
||||
#endif
|
||||
|
||||
#if !defined LV_SYMBOL_DUMMY
|
||||
/** Invalid symbol at (U+F8FF). If written before a string then `lv_img` will show it as a label*/
|
||||
#define LV_SYMBOL_DUMMY "\xEF\xA3\xBF"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /*extern "C"*/
|
||||
#endif
|
||||
|
||||
#endif /*LV_SYMBOL_DEF_H*/
|
||||
|
||||
+189
-180
@@ -1,225 +1,234 @@
|
||||
#include <Arduino.h>
|
||||
#include "ui.h"
|
||||
#include "screens.h"
|
||||
#include "images.h"
|
||||
#include "actions.h"
|
||||
#include "images.h"
|
||||
#include "screens.h"
|
||||
#include "vars.h"
|
||||
#include <string.h>
|
||||
#include <Arduino.h>
|
||||
#include <Arduino_GFX_Library.h>
|
||||
#include <TouchDrvCSTXXX.hpp>
|
||||
#include <Ticker.h>
|
||||
#include <TouchDrvCSTXXX.hpp>
|
||||
#include <string.h>
|
||||
|
||||
Arduino_DataBus *bus = new Arduino_ESP32SPI(3 /* DC */, 5 /* CS */, 2 /* SCK */, 4 /* MOSI */, -1 /* MISO */, FSPI /* spi_num */);
|
||||
Arduino_GC9A01 *gfx = new Arduino_GC9A01(bus, 0 /* RST */, 2 /* rotation */, true /* IPS */);
|
||||
Arduino_DataBus *bus =
|
||||
new Arduino_ESP32SPI(3 /* DC */, 5 /* CS */, 2 /* SCK */, 4 /* MOSI */,
|
||||
-1 /* MISO */, FSPI /* spi_num */);
|
||||
Arduino_GC9A01 *gfx =
|
||||
new Arduino_GC9A01(bus, 0 /* RST */, 2 /* rotation */, true /* IPS */);
|
||||
TouchDrvCSTXXX touch;
|
||||
Ticker fadeTicker;
|
||||
bool isPressed = false,sleeping=false;
|
||||
unsigned long lastTouch;
|
||||
static int16_t currentScreen = -1;
|
||||
bool isPressed = false, sleeping = false;
|
||||
unsigned long lastTouch=0, lastAniTick=0;
|
||||
static lv_obj_t *currentScreen = NULL;
|
||||
static enum ChartsEnum currentChart = CHART_ID_TEMP;
|
||||
|
||||
/*
|
||||
static lv_obj_t *getLvglObjectFromIndex(int32_t index) {
|
||||
if (index == -1) {
|
||||
return 0;
|
||||
}
|
||||
return ((lv_obj_t **)&objects)[index];
|
||||
}
|
||||
|
||||
void loadScreen(ScreensEnum screenId) {
|
||||
currentScreen = screenId - 1;
|
||||
lv_obj_t *screen = getLvglObjectFromIndex(currentScreen);
|
||||
lv_scr_load_anim(screen, LV_SCR_LOAD_ANIM_FADE_IN, 200, 0, false);
|
||||
*/
|
||||
void loadScreen(lv_obj_t *screen) {
|
||||
lv_scr_load_anim(screen, LV_SCR_LOAD_ANIM_FADE_IN, 200, 0, true);
|
||||
currentScreen = screen;
|
||||
}
|
||||
|
||||
void fadeBrightness(uint16_t _newBrightness) {
|
||||
uint16_t bright = ledcRead(GFX_BL);
|
||||
if (_newBrightness > bright) {
|
||||
bright += 10;
|
||||
} else if (_newBrightness < bright) {
|
||||
bright -= 10;
|
||||
}
|
||||
ledcWrite(GFX_BL, bright);
|
||||
if (_newBrightness == bright) {
|
||||
fadeTicker.detach();
|
||||
}
|
||||
}
|
||||
|
||||
void setBacklight(uint16_t brightness, uint16_t fadeTime){
|
||||
if(brightness > BL_BRIGHTNESS)
|
||||
brightness = BL_BRIGHTNESS;
|
||||
ledcWrite(GFX_BL,brightness);
|
||||
/* uint16_t fadeTickTime = fadeTime/(abs(brightness - (uint16_t)ledcRead(GFX_BL))/10);
|
||||
if(fadeTickTime < 1)
|
||||
fadeTickTime = 1;
|
||||
uint16_t bright = ledcRead(GFX_BL);
|
||||
if (_newBrightness > bright) {
|
||||
bright += 10;
|
||||
} else if (_newBrightness < bright) {
|
||||
bright -= 10;
|
||||
}
|
||||
ledcWrite(GFX_BL, bright);
|
||||
if (_newBrightness == bright) {
|
||||
fadeTicker.detach();
|
||||
fadeTicker.attach_ms(fadeTickTime, fadeBrightness,brightness);*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void DisplayInit(void){
|
||||
ledcAttachPin(GFX_BL, GFX_BL);
|
||||
ledcSetup(GFX_BL, 2000, 10);
|
||||
ledcWrite(GFX_BL, 0);
|
||||
gfx->begin(80000000);
|
||||
gfx->fillScreen(0x0000);
|
||||
void setBacklight(uint16_t brightness, uint16_t fadeTime) {
|
||||
if (brightness > BL_BRIGHTNESS)
|
||||
brightness = BL_BRIGHTNESS;
|
||||
ledcWrite(GFX_BL, brightness);
|
||||
/* uint16_t fadeTickTime = fadeTime/(abs(brightness -
|
||||
(uint16_t)ledcRead(GFX_BL))/10); if(fadeTickTime < 1) fadeTickTime = 1;
|
||||
fadeTicker.detach();
|
||||
fadeTicker.attach_ms(fadeTickTime, fadeBrightness,brightness);*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void loadChart(uint8_t chartId){
|
||||
if(chartId < 1 || chartId >= CHART_ID_LEN)
|
||||
return;
|
||||
switch(chartId){
|
||||
case CHART_ID_TEMP:
|
||||
lv_label_set_text(objects.chart_header,"Temperature");
|
||||
lv_chart_set_ext_y_array(objects.chart,objects.chart_series,history_getTempPt());
|
||||
break;
|
||||
case CHART_ID_HUM:
|
||||
lv_label_set_text(objects.chart_header,"Humidity");
|
||||
lv_chart_set_ext_y_array(objects.chart,objects.chart_series,history_getHumPt());
|
||||
break;
|
||||
case CHART_ID_PRESS:
|
||||
lv_label_set_text(objects.chart_header,"Pressure");
|
||||
lv_chart_set_ext_y_array(objects.chart,objects.chart_series,history_getPressPt());
|
||||
break;
|
||||
}
|
||||
currentChart = (enum ChartsEnum) chartId;
|
||||
chart_autoscale();
|
||||
void DisplayInit(void) {
|
||||
ledcAttachPin(GFX_BL, GFX_BL);
|
||||
ledcSetup(GFX_BL, 2000, 10);
|
||||
ledcWrite(GFX_BL, 0);
|
||||
gfx->begin(80000000);
|
||||
gfx->fillScreen(0x0000);
|
||||
}
|
||||
|
||||
ScreensEnum ui_getCurrentScreen(void){
|
||||
return (ScreensEnum) (currentScreen + 1);
|
||||
void loadChart(uint8_t chartId) {
|
||||
if (chartId < 1 || chartId >= CHART_ID_LEN)
|
||||
return;
|
||||
switch (chartId) {
|
||||
case CHART_ID_TEMP:
|
||||
lv_label_set_text(objects.chart_header, "Temperature");
|
||||
lv_chart_set_ext_y_array(objects.chart, objects.chart_series,
|
||||
history_getTempPt());
|
||||
break;
|
||||
case CHART_ID_HUM:
|
||||
lv_label_set_text(objects.chart_header, "Humidity");
|
||||
lv_chart_set_ext_y_array(objects.chart, objects.chart_series,
|
||||
history_getHumPt());
|
||||
break;
|
||||
case CHART_ID_PRESS:
|
||||
lv_label_set_text(objects.chart_header, "Pressure");
|
||||
lv_chart_set_ext_y_array(objects.chart, objects.chart_series,
|
||||
history_getPressPt());
|
||||
break;
|
||||
}
|
||||
currentChart = (enum ChartsEnum)chartId;
|
||||
chart_autoscale();
|
||||
}
|
||||
|
||||
ChartsEnum ui_getCurrentChart(void){
|
||||
return (ChartsEnum) currentChart;
|
||||
}
|
||||
lv_obj_t *ui_getCurrentScreen(void) { return currentScreen; }
|
||||
|
||||
ChartsEnum ui_getCurrentChart(void) { return (ChartsEnum)currentChart; }
|
||||
|
||||
void ui_init() {
|
||||
create_screens();
|
||||
loadScreen(SCREEN_ID_MAIN);
|
||||
lv_disp_t *dispp = lv_disp_get_default();
|
||||
lv_theme_t *theme = lv_theme_default_init(
|
||||
dispp, lv_palette_main(LV_PALETTE_GREEN), lv_palette_main(LV_PALETTE_RED),
|
||||
true, LV_FONT_DEFAULT);
|
||||
lv_disp_set_theme(dispp, theme);
|
||||
create_screen_main();
|
||||
loadScreen(objects.mainScr);
|
||||
}
|
||||
|
||||
bool ui_isSleeping(void){
|
||||
return sleeping;
|
||||
}
|
||||
bool ui_isSleeping(void) { return sleeping; }
|
||||
|
||||
void ui_exitSleep(){
|
||||
if(sleeping){
|
||||
isPressed = true;
|
||||
}else{
|
||||
lastTouch = millis();
|
||||
}
|
||||
void ui_exitSleep() {
|
||||
if (sleeping) {
|
||||
isPressed = true;
|
||||
} else {
|
||||
lastTouch = millis();
|
||||
}
|
||||
}
|
||||
|
||||
void ui_tick() {
|
||||
if(millis() - lastTouch > SLEEP_TIMEOUT){
|
||||
if(!sleeping){
|
||||
displaySleep();
|
||||
sleeping = true;
|
||||
}
|
||||
unsigned long millisbefore = millis();
|
||||
//while((millis()-millisbefore) < 10000 && (millis() - lastTouch) > SLEEP_TIMEOUT){
|
||||
delay(200);
|
||||
if (isPressed){
|
||||
lastTouch = millis();
|
||||
}else{
|
||||
lastTouch = millis()-SLEEP_TIMEOUT-1;
|
||||
}
|
||||
//}
|
||||
}else if(sleeping){
|
||||
Serial.print("WAKE!!");
|
||||
lastTouch = millis();
|
||||
displayWake();
|
||||
lv_obj_invalidate(objects.temp_arc);
|
||||
lv_task_handler(); // let the GUI do its work
|
||||
sleeping= false;
|
||||
isPressed = false;
|
||||
if (millis() - lastTouch > SLEEP_TIMEOUT) {
|
||||
if (!sleeping) {
|
||||
displaySleep();
|
||||
sleeping = true;
|
||||
}
|
||||
unsigned long millisbefore = millis();
|
||||
// while((millis()-millisbefore) < 10000 && (millis() - lastTouch) >
|
||||
// SLEEP_TIMEOUT){
|
||||
delay(200);
|
||||
if (isPressed) {
|
||||
lastTouch = millis();
|
||||
} else {
|
||||
lastTouch = millis() - SLEEP_TIMEOUT - 1;
|
||||
}
|
||||
//}
|
||||
} else if (sleeping) {
|
||||
Serial.print("WAKE!!");
|
||||
lastTouch = millis();
|
||||
displayWake();
|
||||
// lv_obj_invalidate(objects.temp_arc);
|
||||
lv_task_handler(); // let the GUI do its work
|
||||
sleeping = false;
|
||||
isPressed = false;
|
||||
}else{
|
||||
if(currentScreen == objects.mainScr && millis() - lastAniTick > 100){
|
||||
lastAniTick = millis();
|
||||
checkZoomState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void displaySleep(){
|
||||
gfx->displayOff();
|
||||
setBacklight(0,300);
|
||||
void displaySleep() {
|
||||
gfx->displayOff();
|
||||
setBacklight(0, 300);
|
||||
}
|
||||
|
||||
void displayWake(){
|
||||
//Serial.println("wakeup");
|
||||
gfx->displayOn();
|
||||
delay(10);
|
||||
lv_obj_invalidate(objects.temp_arc);
|
||||
lv_task_handler(); // let the GUI do its work
|
||||
setBacklight(BL_BRIGHTNESS,200);
|
||||
|
||||
void displayWake() {
|
||||
// Serial.println("wakeup");
|
||||
gfx->displayOn();
|
||||
delay(10);
|
||||
// lv_obj_invalidate(objects.temp_arc);
|
||||
lv_task_handler(); // let the GUI do its work
|
||||
setBacklight(BL_BRIGHTNESS, 200);
|
||||
}
|
||||
|
||||
|
||||
void TouchInit()
|
||||
{
|
||||
pinMode(TouchRST, OUTPUT);
|
||||
digitalWrite(TouchRST, LOW);
|
||||
delay(30);
|
||||
digitalWrite(TouchRST, HIGH);
|
||||
delay(50);
|
||||
|
||||
touch.setPins(TouchRST, TouchInt);
|
||||
Wire.begin(TouchSDA,TouchSCL); //初始化IIC,设置引脚 SCL:22 SDA:21
|
||||
Wire.setClock(200000); //设置频率400KHZ
|
||||
if(touch.begin(Wire, TouchI2CAddr, SDA, SCL)){
|
||||
Serial.println("Touch screen initialization done");
|
||||
}
|
||||
attachInterrupt(TouchInt, []() {
|
||||
isPressed = true;
|
||||
}, CHANGE);
|
||||
|
||||
void TouchInit() {
|
||||
pinMode(TouchRST, OUTPUT);
|
||||
digitalWrite(TouchRST, LOW);
|
||||
delay(30);
|
||||
digitalWrite(TouchRST, HIGH);
|
||||
delay(50);
|
||||
|
||||
touch.setPins(TouchRST, TouchInt);
|
||||
Wire.begin(TouchSDA, TouchSCL); //初始化IIC,设置引脚 SCL:22 SDA:21
|
||||
Wire.setClock(200000); //设置频率400KHZ
|
||||
if (touch.begin(Wire, TouchI2CAddr, TouchSDA, TouchSCL)) {
|
||||
Serial.println("Touch screen initialization done");
|
||||
}
|
||||
|
||||
|
||||
|
||||
void my_touch_read(lv_indev_t * indev, lv_indev_data_t * data)
|
||||
{
|
||||
int16_t x = 0;
|
||||
int16_t y = 0;
|
||||
if (isPressed && !sleeping) {
|
||||
lastTouch = millis();
|
||||
isPressed = false;
|
||||
uint8_t touched = touch.getPoint(&x, &y, 1);
|
||||
if (touched) {
|
||||
data->point.x = SCREEN_WIDTH - x;
|
||||
data->point.y = SCREEN_HEIGHT - y;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
}else {
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void log_print(lv_log_level_t level, const char * buf) {
|
||||
LV_UNUSED(level);
|
||||
Serial.println(buf);
|
||||
Serial.flush();
|
||||
attachInterrupt(
|
||||
TouchInt, []() { isPressed = true; }, CHANGE);
|
||||
}
|
||||
|
||||
|
||||
void my_flush_cb(lv_display_t * display, const lv_area_t * area, uint8_t * px_map)
|
||||
{
|
||||
/* The most simple case (also the slowest) to send all rendered pixels to the
|
||||
* screen one-by-one. `put_px` is just an example. It needs to be implemented by you. */
|
||||
uint16_t * buf16 = (uint16_t *)px_map; /* Let's say it's a 16 bit (RGB565) display */
|
||||
int32_t x, y;
|
||||
gfx->startWrite();
|
||||
gfx->writeAddrWindow(area->x1, area->y1, area->x2 - area->x1+1, area->y2 - area->y1+1);
|
||||
//bus->writeBytes(px_map,(uint32_t) (1+area->y2 - area->y1) * (1+area->x2 - area->x1));
|
||||
for(y = area->y1; y <= area->y2; y++) {
|
||||
for(x = area->x1; x <= area->x2; x++) {
|
||||
|
||||
void my_touch_read(lv_indev_t *indev, lv_indev_data_t *data) {
|
||||
int16_t x = 0;
|
||||
int16_t y = 0;
|
||||
if (isPressed && !sleeping) {
|
||||
lastTouch = millis();
|
||||
isPressed = false;
|
||||
uint8_t touched = touch.getPoint(&x, &y, 1);
|
||||
if (touched) {
|
||||
if (x > 240)
|
||||
x = 240;
|
||||
else if (x < 0)
|
||||
x = 0;
|
||||
if (y > 240)
|
||||
y = 240;
|
||||
else if (y < 0)
|
||||
y = 0;
|
||||
data->point.x = SCREEN_WIDTH - x;
|
||||
data->point.y = SCREEN_HEIGHT - y;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
} else {
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void log_print(lv_log_level_t level, const char *buf) {
|
||||
LV_UNUSED(level);
|
||||
Serial.println(buf);
|
||||
Serial.flush();
|
||||
}
|
||||
|
||||
void my_flush_cb(lv_display_t *display, const lv_area_t *area,
|
||||
uint8_t *px_map) {
|
||||
/* The most simple case (also the slowest) to send all rendered pixels to the
|
||||
* screen one-by-one. `put_px` is just an example. It needs to be
|
||||
* implemented by you. */
|
||||
uint16_t *buf16 =
|
||||
(uint16_t *)px_map; /* Let's say it's a 16 bit (RGB565) display */
|
||||
int32_t x, y;
|
||||
gfx->startWrite();
|
||||
gfx->writeAddrWindow(area->x1, area->y1, area->x2 - area->x1 + 1,
|
||||
area->y2 - area->y1 + 1);
|
||||
// bus->writeBytes(px_map,(uint32_t) (1+area->y2 - area->y1) * (1+area->x2 -
|
||||
// area->x1));
|
||||
for (y = area->y1; y <= area->y2; y++) {
|
||||
for (x = area->x1; x <= area->x2; x++) {
|
||||
// //gfx->writePixel(x, y, *buf16);
|
||||
bus->write16(*buf16);
|
||||
bus->write16(*buf16);
|
||||
// bus->write16bitBeRGBBitmapR1()
|
||||
buf16++;
|
||||
}
|
||||
}
|
||||
gfx->endWrite();
|
||||
/* IMPORTANT!!!
|
||||
* Inform LVGL that flushing is complete so buffer can be modified again. */
|
||||
lv_display_flush_ready(display);
|
||||
buf16++;
|
||||
}
|
||||
}
|
||||
gfx->endWrite();
|
||||
/* IMPORTANT!!!
|
||||
* Inform LVGL that flushing is complete so buffer can be modified again. */
|
||||
lv_display_flush_ready(display);
|
||||
}
|
||||
|
||||
@@ -45,11 +45,11 @@ bool ui_isSleeping(void);
|
||||
void ui_tick();
|
||||
void DisplayInit(void);
|
||||
void log_print(lv_log_level_t level, const char * buf);
|
||||
void loadScreen(ScreensEnum screenId);
|
||||
void loadScreen(lv_obj_t *screen);
|
||||
void loadChart(uint8_t chartId);
|
||||
void ui_chart_autoscale(void);
|
||||
float ui_getSetTemp(void);
|
||||
ScreensEnum ui_getCurrentScreen(void);
|
||||
lv_obj_t* ui_getCurrentScreen(void);
|
||||
ChartsEnum ui_getCurrentChart(void);
|
||||
void displaySleep();
|
||||
void displayWake();
|
||||
|
||||
Reference in New Issue
Block a user