Compare commits
15 Commits
ae2288f039
...
de8d9ede17
| Author | SHA1 | Date | |
|---|---|---|---|
| de8d9ede17 | |||
| c690ac01e1 | |||
| ef4e4af237 | |||
| a12fd1df9d | |||
| cbb42f8773 | |||
| 348a1ea972 | |||
| 98eb5bc66b | |||
| 38530b799c | |||
| d0e336a4ee | |||
| be6c9a1dd1 | |||
| ce83025eb2 | |||
| e963d43a01 | |||
| ad4cd34559 | |||
| 7c7d298af1 | |||
| 2000e459c9 |
2
.vscode/c_cpp_properties.json
vendored
@ -2,7 +2,7 @@
|
|||||||
"configurations": [
|
"configurations": [
|
||||||
{
|
{
|
||||||
"name": "ESP-IDF",
|
"name": "ESP-IDF",
|
||||||
"compilerPath": "${config:idf.toolsPath}/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
|
"compilerPath": "${config:idf.toolsPath}/tools/riscv32-esp-elf/esp-14.2.0_20240906/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
|
||||||
"compileCommands": "${config:idf.buildPath}/compile_commands.json",
|
"compileCommands": "${config:idf.buildPath}/compile_commands.json",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"${config:idf.espIdfPath}/components/**",
|
"${config:idf.espIdfPath}/components/**",
|
||||||
|
|||||||
2
.vscode/launch.json
vendored
@ -16,7 +16,7 @@
|
|||||||
"name": "Debug LVGL demo with gdb",
|
"name": "Debug LVGL demo with gdb",
|
||||||
"type": "cppdbg",
|
"type": "cppdbg",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceFolder}/bin/main",
|
"program": "${workspaceFolder}/bin/rgb_lcd",
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}",
|
"cwd": "${workspaceFolder}",
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
|
|||||||
7
.vscode/settings.json
vendored
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"C_Cpp.intelliSenseEngine": "default",
|
"C_Cpp.intelliSenseEngine": "default",
|
||||||
"idf.espIdfPath": "/home/marc/esp/v5.4/esp-idf",
|
"idf.espIdfPath": "/home/marc/esp/master/esp-idf",
|
||||||
"idf.pythonBinPath": "/home/marc/.espressif/python_env/idf5.3_py3.10_env/bin/python",
|
"idf.pythonBinPath": "/home/marc/.espressif/python_env/idf5.3_py3.10_env/bin/python",
|
||||||
"idf.toolsPath": "/home/marc/.espressif",
|
"idf.toolsPath": "/home/marc/.espressif",
|
||||||
"idf.customExtraPaths": "/home/marc/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/marc/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/marc/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/marc/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/marc/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/marc/.espressif/tools/cmake/3.24.0/bin:/home/marc/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/marc/.espressif/tools/ninja/1.11.1:/home/marc/.espressif/tools/esp-rom-elfs/20240305",
|
"idf.customExtraPaths": "/home/marc/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/marc/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/marc/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/marc/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/marc/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/marc/.espressif/tools/cmake/3.24.0/bin:/home/marc/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/marc/.espressif/tools/ninja/1.11.1:/home/marc/.espressif/tools/esp-rom-elfs/20240305",
|
||||||
@ -104,7 +104,8 @@
|
|||||||
"am2302_rmt.h": "c",
|
"am2302_rmt.h": "c",
|
||||||
"bsp_board_extra.h": "c",
|
"bsp_board_extra.h": "c",
|
||||||
"display.h": "c",
|
"display.h": "c",
|
||||||
"statemanagement.h": "c"
|
"statemanagement.h": "c",
|
||||||
|
"communication.h": "c"
|
||||||
},
|
},
|
||||||
"idf.pythonInstallPath": "/usr/local/bin/python"
|
"idf.pythonInstallPath": "/usr/bin/python3"
|
||||||
}
|
}
|
||||||
|
|||||||
33
.vscode/tasks.json
vendored
@ -1,6 +1,39 @@
|
|||||||
{
|
{
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"tasks": [
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "Build",
|
||||||
|
"command": "cmake",
|
||||||
|
"args": [
|
||||||
|
"--build", "${command:cmake.buildDirectory}"
|
||||||
|
],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
},
|
||||||
|
"problemMatcher": {
|
||||||
|
"owner": "cpp",
|
||||||
|
"fileLocation": ["relative", "${workspaceFolder}"],
|
||||||
|
"pattern": {
|
||||||
|
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
|
||||||
|
"file": 1,
|
||||||
|
"line": 2,
|
||||||
|
"column": 3,
|
||||||
|
"severity": 4,
|
||||||
|
"message": 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Build and Run",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "${workspaceFolder}/bin/main",
|
||||||
|
"group": {
|
||||||
|
"kind": "test",
|
||||||
|
"isDefault": true
|
||||||
|
},
|
||||||
|
"dependsOn": "Build"
|
||||||
|
}
|
||||||
{
|
{
|
||||||
"label": "Build - Build project",
|
"label": "Build - Build project",
|
||||||
"type": "shell",
|
"type": "shell",
|
||||||
|
|||||||
@ -7,8 +7,22 @@ set(COMPONENTS main)
|
|||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
|
|
||||||
set(EXTRA_COMPONENT_DIRS
|
if(${IDF_TARGET} STREQUAL "esp32p4")
|
||||||
|
set(EXTRA_COMPONENT_DIRS
|
||||||
/home/marc/esp-dev-kits/examples/esp32-p4-function-ev-board/examples/common_components
|
/home/marc/esp-dev-kits/examples/esp32-p4-function-ev-board/examples/common_components
|
||||||
|
$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs
|
||||||
)
|
)
|
||||||
|
else()
|
||||||
|
# PROJECT_PLATFORM_LINUX
|
||||||
|
# PROJECT_PLATFORM_ESP32
|
||||||
|
add_compile_definitions(PROJECT_PLATFORM_LINUX)
|
||||||
|
|
||||||
|
set(EXTRA_COMPONENT_DIRS
|
||||||
|
$ENV{IDF_PATH}/examples/protocols/linux_stubs/esp_stubs
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/FreeRTOS
|
||||||
|
"/home/marc/esp-protocols/common_components/linux_compat"
|
||||||
|
"/home/marc/esp-protocols/components/mdns/tests/host_test/components"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
project(rgb_lcd)
|
project(rgb_lcd)
|
||||||
22
ca_cert.pem
@ -1,22 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIDmTCCAoGgAwIBAgIUd5qKY6blEffPyHQZnmQfxkcCO7AwDQYJKoZIhvcNAQEL
|
|
||||||
BQAwXDELMAkGA1UEBhMCRlIxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
|
|
||||||
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4
|
|
||||||
MB4XDTI0MTExMzE4MjYxOVoXDTI1MTExMzE4MjYxOVowXDELMAkGA1UEBhMCRlIx
|
|
||||||
EzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
|
|
||||||
UHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4MIIBIjANBgkqhkiG9w0BAQEF
|
|
||||||
AAOCAQ8AMIIBCgKCAQEA8lKPcpJ6/FhrI+E8fzR93N/XIfEW7GpFa+KNp+DK9DGS
|
|
||||||
hHno2yVGXNdUFRQEL/2pL8aiZzZ7xGMubzEIr1dlHrb/PplGRTXCxQWnDJDsOu4w
|
|
||||||
7TbzjYxDhgMwXhSGuFlMexFBh+W9qcO85l4wNSOhHusyf7XZaPAd3NGmK4XsoeXJ
|
|
||||||
DSROJLLpvyZM3yt1kuC3GTWSqUe4Ldv+kaAfyW+X/PJ7Tgb6frLGNCs5A0zLhFxb
|
|
||||||
FS2omnqX6+H2Bjvk3nCQr85zcuIrnXQ+Hy58MayS+dRqPTSNw7RqRVvrGUuQuj5y
|
|
||||||
/ruAVLjG6F9wTZZFJ8Nk2veuFxIG+8ADpglWoYrokQIDAQABo1MwUTAdBgNVHQ4E
|
|
||||||
FgQUUa64jnTc+VqWQB93Fp/yPuirm2cwHwYDVR0jBBgwFoAUUa64jnTc+VqWQB93
|
|
||||||
Fp/yPuirm2cwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAnqg9
|
|
||||||
DeBozovXmwcbDTlTqz1b5LJ3Xz4mhUnEssmlDvvlXMqL1CjeXDKgOXtkWaomTJNO
|
|
||||||
MfMTmkkKg2lomNe2O84nUyPJnHYle5cbxZXAvbkmsi6R95lXFf5+bHAtU05TFYKc
|
|
||||||
BWMPB3Vwym9qrAc8G1LPr05LYgrJsQ9xkf0pVR7hrjgu9k6ElNAQSiH4dlyK4b/T
|
|
||||||
12U4zBawZNv3f6OnKOTq2NuwwzxWSwRRbEGUf0qO6Z8LNsj7yvmp2ImfN1e3a39p
|
|
||||||
+WmxJkHBzg5LxUon8jtiZLKeAPNlAPvKTs/4umE0LdZnsdlYrNR+kFeMMurxHvfZ
|
|
||||||
ykxPELUVUWEgv/IRbA==
|
|
||||||
-----END CERTIFICATE-----
|
|
||||||
28
ca_key.pem
@ -1,28 +0,0 @@
|
|||||||
-----BEGIN PRIVATE KEY-----
|
|
||||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDyUo9yknr8WGsj
|
|
||||||
4Tx/NH3c39ch8RbsakVr4o2n4Mr0MZKEeejbJUZc11QVFAQv/akvxqJnNnvEYy5v
|
|
||||||
MQivV2Uetv8+mUZFNcLFBacMkOw67jDtNvONjEOGAzBeFIa4WUx7EUGH5b2pw7zm
|
|
||||||
XjA1I6Ee6zJ/tdlo8B3c0aYrheyh5ckNJE4ksum/JkzfK3WS4LcZNZKpR7gt2/6R
|
|
||||||
oB/Jb5f88ntOBvp+ssY0KzkDTMuEXFsVLaiaepfr4fYGO+TecJCvznNy4iuddD4f
|
|
||||||
LnwxrJL51Go9NI3DtGpFW+sZS5C6PnL+u4BUuMboX3BNlkUnw2Ta964XEgb7wAOm
|
|
||||||
CVahiuiRAgMBAAECggEAHqYEkKgoN/xy6KHXRft8o9AH5LoafSJfz2pjIkWTRdlz
|
|
||||||
P6AvrHAFez6c2uGiOfOqT2mfJtDETK2CtPuNrqeuGXlpxSAbvCs1jDfPzg4SYs23
|
|
||||||
kHkvyspfy/ZhSrTr6SsaOkKPeEG9gFhKbxSgokf0W/XBeFemvNgJ3uEBVGXm7P7l
|
|
||||||
MtwGTaM/wHRUqbLTxwzp++pzajs3YDZiU42TJP9hw2d6bBhRS0Jf0p8EAmDZRin2
|
|
||||||
IdKl559pwLewfwfyDUd2ea4NpGVT7x5bX0vI0QKPfLbWyd5Q1+cv7dRi9EP8iB57
|
|
||||||
anrrRHWFmq/+CX79CGMvbdt+3zqxFAgpDxLQ3gcIpQKBgQD5U9lKIUkFw6EqcNyq
|
|
||||||
Uz0+Z/0fXzhkABUBvzan+mbESYD+cnDzA2WX+bBgfmugcmWNTjUmW/6WC0ZhNQ/x
|
|
||||||
5SJz9OYKBmdkdg0XUm4ALhfwDvX6Pdq8A6NFHUg/y/ljjTC7n/qDkcB4L3/jENmX
|
|
||||||
ZT91biCV8574MUrqZk9FRInSDwKBgQD4zrhHgYcwD0iRFqSbUeaU/M/Vwh5ZyVlU
|
|
||||||
5+kXXsjfeXdMoTEeQaaWjkYjPzV+PcAw9BGQeS+GtOx18P/vuVvVGuFEgM1qBiGt
|
|
||||||
d1Ixb0sdzDDSP91tH1gXcYKM7DETIyOok+U48YTkEnsnxGk2iOjPHm1iu4mINKFa
|
|
||||||
YG/qm7u7XwKBgGY9Jesp/wGoGNyIb1RA0epXRgqpRzxqdDLFMCptmdp/sa+lSf+8
|
|
||||||
stpA/zxyWrvubQomudDDBICOmwudcK5moVwfXn1Z5ufhKLkZihX00MgVunQlDR7v
|
|
||||||
9vGOcmQGxns2GHe3wEhXai9eevinnjJgyEblI+OZhOSNggTgcz0aP9GtAoGBAPHj
|
|
||||||
7+689BR6V1+PNvs2Fcm1O84iymUaRvov+UJaSUpSifR7Jgi3ZOEscu3jjvsrx8UQ
|
|
||||||
FF90IguBq/5CDmEewTQezPFPk+VHDsjZn5QmEk5m7PQLWRe1CGzKU1T0cAWd/RXw
|
|
||||||
q0LANCWT/h28a1m0ozpx54C8uMot+Mynw0bAnzRbAoGAG9rlCW9OBFIodxdAOUKH
|
|
||||||
8oJMF+hYBeyvzEdnZhhpShpnIWs0BKt2sWTFRoedLs5Pck3Y1VuOUWmSNhjLhd5X
|
|
||||||
f14tTFynLE42NL6eJ5FyFXLoogki4ObegIfgkFhrzHX4f6b6pD3GSDiXhru3ZjUr
|
|
||||||
mPOvd++V0fTVrC2DfTWaXV0=
|
|
||||||
-----END PRIVATE KEY-----
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
idf_component_register(SRCS "communication.c"
|
|
||||||
INCLUDE_DIRS "include"
|
|
||||||
REQUIRES mqtt esp32_p4_function_ev_board esp_wifi esp32_p4_function_ev_board stateManagement)
|
|
||||||
|
|
||||||
|
|
||||||
lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE")
|
|
||||||
lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE")
|
|
||||||
lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE")
|
|
||||||
lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE")
|
|
||||||
|
|
||||||
lvgl_port_add_images(${COMPONENT_LIB} "images/")
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
|
|
||||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
|
||||||
#include "lvgl.h"
|
|
||||||
#elif defined(LV_BUILD_TEST)
|
|
||||||
#include "../lvgl.h"
|
|
||||||
#else
|
|
||||||
#include "lvgl/lvgl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MQTT_KO
|
|
||||||
#define LV_ATTRIBUTE_MQTT_KO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const
|
|
||||||
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_MQTT_KO
|
|
||||||
uint8_t mqtt_ko_map[] = {
|
|
||||||
|
|
||||||
0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x39,0x39,0x39,0xff,0xaa,0xa9,0xaa,0xff,0xed,0xed,0xed,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf1,0xf1,0xf1,0xff,0x83,0x83,0x83,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xe8,
|
|
||||||
0xb5,0xb3,0xb5,0xfd,0xaa,0xaa,0xaa,0xff,0x8d,0x8d,0x8d,0xff,0x3f,0x3d,0x3f,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x27,0x21,0x27,0xff,0xb6,0xb6,0xb6,0xff,0xfa,0xfa,0xfa,0xff,0xf9,0xf9,0xf9,0xff,0xc3,0xc3,0xc3,0xff,0x4d,0x4d,0x4d,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdd,0xdd,0xdd,0xff,0x9d,0x9c,0x9d,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x6d,0x6d,0x6d,0xff,0xbd,0xbd,0xbd,0xff,0xb5,0xb5,0xb5,0xff,0x5f,0x5f,0x5f,0xff,0x01,0x01,0x01,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0xe7,0xe7,0xe7,0xff,0xee,0xee,0xee,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xec,0xec,0xff,0x81,0x7f,0x81,0xfe,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x23,0x22,0x23,0xff,0x16,0x16,0x16,0xff,0x01,0x01,0x01,0xff,0x17,0x17,0x17,0xff,0x6a,0x68,0x6a,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x3e,0x3c,0x3e,0xff,0x98,0x97,0x98,0xff,0xd9,0xd8,0xd9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xff,0xad,0xac,0xad,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0xd2,0xd2,0xd2,0xff,0xf5,0xf4,0xf5,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x72,0x71,0x72,0xff,0xe2,0xe2,0xe2,0xff,0xc4,0xc4,0xc4,0xff,0x7f,0x7f,0x7f,0xff,0x09,0x09,0x09,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x3b,0x3b,0x3b,0xff,0xf7,0xf7,0xf7,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xe7,0xe7,0xe7,0xff,0xcf,0xce,0xcf,0xfe,0xa9,0xa9,0xa9,0xff,0x4f,0x4f,0x4f,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x10,0x09,0x10,0xff,0x6a,0x6a,0x6a,0xff,0x38,0x38,0x38,0xff,0x00,0x00,0x00,0xff,0x04,0x04,0x04,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xa7,0xa6,0xa7,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf5,0xff,0x94,0x94,0x94,0xff,0x1e,0x1e,0x1e,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x12,0x12,0x12,0xff,0xc2,0xc2,0xc2,0xff,0x8d,0x8c,0x8d,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xe4,0xe3,0xe4,0xfe,
|
|
||||||
0xc5,0xc3,0xc5,0xfe,0xd5,0xd5,0xd5,0xff,0xf0,0xef,0xf0,0xff,0xc7,0xc7,0xc7,0xff,0xb6,0xb6,0xb6,0xff,0x5a,0x5a,0x5a,0xff,0x01,0x01,0x01,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xaf,0xae,0xaf,0xff,0xfd,0xfd,0xfd,0xff,0xed,0xec,0xed,0xff,0x20,0x17,0x20,0xfe,0x00,0x00,0x00,0xff,0x92,0x90,0x92,0xfe,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x19,0x19,0x19,0xff,0x66,0x65,0x66,0xff,0x30,0x30,0x30,0xff,0x03,0x03,0x03,0xff,0x02,0x02,0x02,0xff,0x05,0x05,0x05,0xff,0x00,0x00,0x00,0xff,0x69,0x67,0x69,0xff,0xfb,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0xa5,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x02,0x02,0x02,0xff,0x04,0x04,0x04,0xff,0x4a,0x4a,0x4a,0xff,0xa3,0xa2,0xa3,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xcb,0xcb,0xcb,0xff,0xff,0xff,0xff,0xff,0xe7,0xe6,0xe7,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x63,0x63,0x63,0xff,0xe6,0xe6,0xe6,0xff,0xfb,0xfa,0xfb,0xff,0x51,0x50,0x51,0xff,0x00,0x00,0x00,0xff,0x7c,0x7c,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5d,0x5b,0x5d,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x16,0x09,0x16,0xfe,0xf3,0xf2,0xf3,0xff,0xff,0xff,0xff,0xff,0xb7,0xb6,0xb7,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xf6,0xf6,0xf6,0xff,0xff,0xff,0xff,0xff,0xa0,0x9f,0xa0,0xff,0x00,0x00,0x00,0xff,
|
|
||||||
0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xc6,0xc5,0xc6,0xff,0xff,0xff,0xff,0xff,0xda,0xd9,0xda,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xe1,0xe1,0xe1,0xff,0xff,0xff,0xff,0xff,0xbc,0xbb,0xbc,0xfe,0x00,0x00,0x00,0xff,
|
|
||||||
0x00,0x00,0x00,0xec,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xaa,0xaa,0xaa,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe7,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xcb,0xcb,0xcb,0xff,0xff,0xff,0xff,0xff,0xcb,0xcb,0xcb,0xff,0x00,0x00,0x00,0xe0,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
const lv_image_dsc_t mqtt_ko = {
|
|
||||||
.header.magic = LV_IMAGE_HEADER_MAGIC,
|
|
||||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
|
||||||
.header.flags = 0,
|
|
||||||
.header.w = 15,
|
|
||||||
.header.h = 15,
|
|
||||||
.header.stride = 60,
|
|
||||||
.data_size = sizeof(mqtt_ko_map),
|
|
||||||
.data = mqtt_ko_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
@ -1,116 +0,0 @@
|
|||||||
|
|
||||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
|
||||||
#include "lvgl.h"
|
|
||||||
#elif defined(LV_BUILD_TEST)
|
|
||||||
#include "../lvgl.h"
|
|
||||||
#else
|
|
||||||
#include "lvgl/lvgl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MQTT_OK
|
|
||||||
#define LV_ATTRIBUTE_MQTT_OK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const
|
|
||||||
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_MQTT_OK
|
|
||||||
uint8_t mqtt_ok_map[] = {
|
|
||||||
|
|
||||||
0x66,0x00,0x66,0xe0,0xc1,0xb3,0xc1,0xfd,0x99,0x7f,0x99,0xfe,0xe7,0xe3,0xe7,0xfe,
|
|
||||||
0x6a,0x17,0x6a,0xfe,0x68,0x0a,0x68,0xfe,0xd6,0xce,0xd6,0xfe,0xe8,0xe3,0xe8,0xfe,
|
|
||||||
0xa5,0x90,0xa5,0xfe,0xce,0xc3,0xce,0xfe,0xcf,0xc5,0xcf,0xfe,0xf5,0xf3,0xf5,0xfe,
|
|
||||||
0x66,0x00,0x66,0xe1,0xc6,0xbb,0xc6,0xfe,0xff,0xff,0xff,0xff,0x66,0x00,0x66,0xff,
|
|
||||||
0xd3,0xcb,0xd3,0xff,0xb8,0xaa,0xb8,0xff,0xfb,0xfa,0xfb,0xff,0x72,0x38,0x72,0xff,
|
|
||||||
0xc2,0xb6,0xc2,0xff,0xb8,0xa9,0xb8,0xff,0x72,0x39,0x72,0xff,0x74,0x3c,0x74,0xff,
|
|
||||||
0xeb,0xe7,0xeb,0xff,0xfc,0xfb,0xfc,0xff,0xea,0xe7,0xea,0xff,0x9f,0x87,0x9f,0xff,
|
|
||||||
0xf7,0xf5,0xf7,0xff,0x9d,0x85,0x9d,0xff,0xfe,0xfe,0xfe,0xff,0xfc,0xfc,0xfc,0xff,
|
|
||||||
0xf3,0xf1,0xf3,0xff,0xb5,0xa6,0xb5,0xff,0xef,0xed,0xef,0xff,0xe6,0xe2,0xe6,0xff,
|
|
||||||
0xee,0xeb,0xee,0xff,0xf2,0xf0,0xf2,0xff,0xdc,0xd6,0xdc,0xff,0xc5,0xb9,0xc5,0xff,
|
|
||||||
0xfa,0xf8,0xfa,0xff,0x74,0x3d,0x74,0xff,0x9e,0x86,0x9e,0xff,0x86,0x61,0x86,0xff,
|
|
||||||
0xe2,0xdd,0xe2,0xff,0x8e,0x6f,0x8e,0xff,0xa3,0x8d,0xa3,0xff,0x6c,0x21,0x6c,0xff,
|
|
||||||
0xae,0x9c,0xae,0xff,0xb4,0xa4,0xb4,0xff,0xfe,0xfd,0xfe,0xff,0xde,0xd8,0xde,0xff,
|
|
||||||
0x83,0x5b,0x83,0xff,0x7c,0x4f,0x7c,0xff,0xee,0xec,0xee,0xff,0xaa,0x97,0xaa,0xff,
|
|
||||||
0xf0,0xee,0xf0,0xff,0xc9,0xbe,0xc9,0xff,0xa4,0x8f,0xa4,0xff,0xea,0xe6,0xea,0xff,
|
|
||||||
0xc5,0xba,0xc5,0xff,0x90,0x71,0x90,0xff,0xfb,0xfb,0xfb,0xff,0xc9,0xbf,0xc9,0xff,
|
|
||||||
0x68,0x10,0x68,0xff,0x7f,0x53,0x7f,0xff,0xef,0xec,0xef,0xff,0xe8,0xe4,0xe8,0xff,
|
|
||||||
0xcb,0xc1,0xcb,0xff,0xe3,0xde,0xe3,0xff,0xb0,0x9f,0xb0,0xff,0x7d,0x50,0x7d,0xff,
|
|
||||||
0x8a,0x68,0x8a,0xff,0xdf,0xd9,0xdf,0xff,0xe5,0xe1,0xe5,0xff,0xf7,0xf6,0xf7,0xff,
|
|
||||||
0x96,0x7c,0x96,0xff,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
|
||||||
|
|
||||||
0x00,0x0f,0x0f,0x0f,0x0f,0x16,0x11,0x22,0x0e,0x0e,0x20,0x1d,0x0f,0x0f,0x00,
|
|
||||||
0x01,0x11,0x2e,0x29,0x0f,0x0f,0x0f,0x2f,0x14,0x12,0x0e,0x1f,0x15,0x0f,0x0f,
|
|
||||||
0x0e,0x0e,0x0e,0x0e,0x2c,0x30,0x0f,0x0f,0x0f,0x2d,0x25,0x0e,0x0e,0x11,0x0f,
|
|
||||||
0x1a,0x38,0x0e,0x0e,0x0e,0x0e,0x36,0x02,0x0f,0x0f,0x17,0x23,0x0e,0x1e,0x1b,
|
|
||||||
0x0f,0x0f,0x17,0x37,0x33,0x0e,0x0e,0x0e,0x3c,0x0f,0x0f,0x13,0x24,0x0e,0x1c,
|
|
||||||
0x0f,0x0f,0x0f,0x0f,0x0f,0x3d,0x18,0x0e,0x0e,0x10,0x0f,0x0f,0x2b,0x12,0x0e,
|
|
||||||
0x18,0x06,0x15,0x35,0x0f,0x0f,0x40,0x10,0x0e,0x0e,0x39,0x0f,0x0f,0x21,0x0e,
|
|
||||||
0x0e,0x0e,0x0e,0x12,0x3f,0x16,0x0f,0x0f,0x10,0x0e,0x0e,0x3a,0x0f,0x0f,0x07,
|
|
||||||
0x09,0x26,0x28,0x0e,0x0e,0x03,0x41,0x0f,0x0f,0x45,0x0e,0x42,0x04,0x0f,0x08,
|
|
||||||
0x0f,0x0f,0x13,0x27,0x32,0x0e,0x43,0x13,0x0f,0x48,0x19,0x0e,0x31,0x0f,0x0f,
|
|
||||||
0x0f,0x0f,0x0f,0x0f,0x2a,0x3e,0x0e,0x44,0x0f,0x0f,0x10,0x0e,0x3b,0x0f,0x0f,
|
|
||||||
0x0f,0x0f,0x0f,0x0f,0x0f,0x14,0x0e,0x19,0x47,0x0f,0x4c,0x0e,0x0e,0x34,0x0f,
|
|
||||||
0x0f,0x0f,0x0f,0x0f,0x0f,0x05,0x0b,0x0e,0x14,0x0f,0x0f,0x4b,0x0e,0x46,0x0f,
|
|
||||||
0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0a,0x0e,0x49,0x0f,0x0f,0x4a,0x0e,0x0d,0x0f,
|
|
||||||
0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x11,0x0e,0x1a,0x0f,0x0f,0x10,0x0e,0x10,0x0c,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
const lv_image_dsc_t mqtt_ok = {
|
|
||||||
.header.magic = LV_IMAGE_HEADER_MAGIC,
|
|
||||||
.header.cf = LV_COLOR_FORMAT_I8,
|
|
||||||
.header.flags = 0,
|
|
||||||
.header.w = 15,
|
|
||||||
.header.h = 15,
|
|
||||||
.header.stride = 15,
|
|
||||||
.data_size = sizeof(mqtt_ok_map),
|
|
||||||
.data = mqtt_ok_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
|
|
||||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
|
||||||
#include "lvgl.h"
|
|
||||||
#elif defined(LV_BUILD_TEST)
|
|
||||||
#include "../lvgl.h"
|
|
||||||
#else
|
|
||||||
#include "lvgl/lvgl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_WIFI_KO
|
|
||||||
#define LV_ATTRIBUTE_WIFI_KO
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const
|
|
||||||
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_WIFI_KO
|
|
||||||
uint8_t wifi_ko_map[] = {
|
|
||||||
|
|
||||||
0xfe,0xfe,0xfe,0xff,0xfc,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xf5,0xf5,0xf5,0xff,0xa5,0xa5,0xa5,0xff,0x4d,0x4d,0x4d,0xff,0x1a,0x1a,0x1a,0xff,0x00,0x00,0x00,0xff,0x79,0x79,0x79,0xff,0xff,0xff,0xff,0xff,0x5a,0x5a,0x5a,0xff,0x30,0x30,0x30,0xff,0xff,0xff,0xff,0xff,0x78,0x78,0x78,0xff,0x10,0x10,0x10,0xff,
|
|
||||||
0xfd,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xa0,0xa0,0xa0,0xff,0x18,0x18,0x18,0xff,0x00,0x00,0x00,0xff,0x06,0x06,0x06,0xff,0x2e,0x2e,0x2e,0xff,0x3d,0x3d,0x3d,0xff,0xa5,0xa5,0xa5,0xff,0xff,0xff,0xff,0xff,0x89,0x89,0x89,0xff,0x00,0x00,0x00,0xff,0x2b,0x2b,0x2b,0xff,0x03,0x03,0x03,0xff,0x3c,0x3c,0x3c,0xff,
|
|
||||||
0xf6,0xf6,0xf6,0xff,0x57,0x57,0x57,0xff,0x00,0x00,0x00,0xff,0x23,0x23,0x23,0xff,0xa5,0xa5,0xa5,0xff,0xfa,0xfa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0x4b,0x4b,0x4b,0xff,0x00,0x00,0x00,0xff,0x1a,0x1a,0x1a,0xff,0xe0,0xe0,0xe0,0xff,
|
|
||||||
0x3a,0x3a,0x3a,0xff,0x00,0x00,0x00,0xff,0x77,0x77,0x77,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xbb,0xbb,0xbb,0xff,0x68,0x68,0x68,0xff,0x36,0x36,0x36,0xff,0x9e,0x9e,0x9e,0xff,0xff,0xff,0xff,0xff,0x80,0x80,0x80,0xff,0x00,0x00,0x00,0xff,0x2d,0x2d,0x2d,0xff,0x03,0x03,0x03,0xff,0x32,0x32,0x32,0xff,
|
|
||||||
0x60,0x60,0x60,0xff,0x8f,0x8f,0x8f,0xff,0xff,0xff,0xff,0xff,0xc4,0xc4,0xc4,0xff,0x23,0x23,0x23,0xff,0x00,0x00,0x00,0xff,0x05,0x05,0x05,0xff,0x00,0x00,0x00,0xff,0x84,0x84,0x84,0xff,0xff,0xff,0xff,0xff,0x6a,0x6a,0x6a,0xff,0x46,0x46,0x46,0xff,0xff,0xff,0xff,0xff,0x88,0x88,0x88,0xff,0x27,0x27,0x27,0xff,
|
|
||||||
0xfc,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xab,0xab,0xab,0xff,0x00,0x00,0x00,0xff,0x10,0x10,0x10,0xff,0x96,0x96,0x96,0xff,0xf7,0xf7,0xf7,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xfe,0xfe,0xfe,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xf8,0xf8,0xf8,0xff,0xff,0xff,0xff,0xff,0x8d,0x8d,0x8d,0xff,0x29,0x29,0x29,0xff,0xe6,0xe6,0xe6,0xff,0xff,0xff,0xff,0xff,0xba,0xba,0xba,0xff,0x7d,0x7d,0x7d,0xff,0x83,0x83,0x83,0xff,0xc7,0xc7,0xc7,0xff,0xff,0xff,0xff,0xff,0xfd,0xfd,0xfd,0xff,0xfd,0xfd,0xfd,0xff,0xfd,0xfd,0xfd,0xff,0xfe,0xfe,0xfe,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xd4,0xd4,0xd4,0xff,0x24,0x24,0x24,0xff,0x00,0x00,0x00,0xff,0x02,0x02,0x02,0xff,0x01,0x01,0x01,0xff,0x00,0x00,0x00,0xff,0x4d,0x4d,0x4d,0xff,0xef,0xef,0xef,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0x3c,0x3c,0x3c,0xff,0x01,0x01,0x01,0xff,0x9a,0x9a,0x9a,0xff,0xf0,0xf0,0xf0,0xff,0xe5,0xe5,0xe5,0xff,0x74,0x74,0x74,0xff,0x00,0x00,0x00,0xff,0x83,0x83,0x83,0xff,0xff,0xff,0xff,0xff,0xfb,0xfb,0xfb,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xca,0xca,0xca,0xff,0xd2,0xd2,0xd2,0xff,0xff,0xff,0xff,0xff,0xc2,0xc2,0xc2,0xff,0xd4,0xd4,0xd4,0xff,0xff,0xff,0xff,0xff,0xc3,0xc3,0xc3,0xff,0xe3,0xe3,0xe3,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0x83,0x83,0x83,0xff,0x00,0x00,0x00,0xff,0x02,0x02,0x02,0xff,0xbc,0xbc,0xbc,0xff,0xff,0xff,0xff,0xff,0xfc,0xfc,0xfc,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,0xff,0xff,0xff,0xf9,0xf9,0xf9,0xff,0xff,0xff,0xff,0xff,0x54,0x54,0x54,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x94,0x94,0x94,0xff,0xff,0xff,0xff,0xff,0xfa,0xfa,0xfa,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,0xff,0xff,0xff,0xfd,0xfd,0xfd,0xff,0xff,0xff,0xff,0xff,0xca,0xca,0xca,0xff,0x1e,0x1e,0x1e,0xff,0x40,0x40,0x40,0xff,0xee,0xee,0xee,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
const lv_image_dsc_t wifi_ko = {
|
|
||||||
.header.magic = LV_IMAGE_HEADER_MAGIC,
|
|
||||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
|
||||||
.header.flags = 0,
|
|
||||||
.header.w = 15,
|
|
||||||
.header.h = 13,
|
|
||||||
.header.stride = 60,
|
|
||||||
.data_size = sizeof(wifi_ko_map),
|
|
||||||
.data = wifi_ko_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
[ZoneTransfer]
|
|
||||||
ZoneId=3
|
|
||||||
ReferrerUrl=https://www.flaticon.com/free-icon/wifi_10179082?term=wifi&page=1&position=72&origin=tag&related_id=10179082
|
|
||||||
HostUrl=https://www.flaticon.com/download/icon/10179082?icon_id=10179082&author=4014&team=4014&keyword=Wifi&pack=10178962&style=black+outline&style_id=1369&format=png&color=%23000000&colored=1&size=512&selection=1&type=standard&token=03AFcWeA4RyxIf4QsrIC4tHTqrKilxyFhDaeCELUJ5y2sh5Z335A3k8sZtFRKbUkQjtMRnLVYnKYcv-jzbF73QhCKZMOKukL3s8JLvWQvNyitg0AK2yFN9cm6zn8bhADDZASUE7dAtq2wzDW9Q4xndpF9QSqs7esAvmn7a7sFjD5RF2nbQLj8tSNkchXBvh9Tqfr_3-4FOMk7yNRwUNWUGRHYa_7HL8k24iA_UjL7hDHY21uNBBwEbwmsOtQSMiFog7JBJ7c6QimbJuJFvUq2OaDOvp3XRh0QwfgMzIZR-0eSwHUTNZK0ZvfR-78QJFjvMEOjIZWwvLabNeJk1twjloLXxYWT-VKxk1jRjHxAGVUGH3wm7YSMlgMScDjLDH0ysTezlCo3YIyuFdPSNadc5Y8bLmhc84f0f0YnKzjVLS4YwUO5rLMrG5jx7hvUEuWzny7mWE9N2QstAIC7OTEWRUU9tA2TS_NPlg8yl5YU5KTcgUIojGXyOe4grWD-4TYgKW_Uzu6sQ2iHZWPYWQf3rNjX4GWTHcpDgD3ccNgzb8HeXhQdYE1Rf9W9WAA_amhHnPYZmatQSy9mHCnb80FjnYcbKUwcRMD2hQbPGzF78YqKH5smnThi8V_gsXZvfG8pb6RKfSzf-CK05fKRcvCgr6D-P7dN67GtxrvCt_If3c_X329lw8FYZuGJFHBb5aDgpcVieIOECR6afx2JMb-aesRBEZDNSXuQ7haFyHe_XcD4jqksyCslN3akqmyAx72i3Lg1t7tqEQCFGY_4WsWjHYB2LgwZIss2anRN7Gddg7p4G4fC1sKfSGRCZMIHfutZv0phQNI6OoYGnC8I3dxkW__w1trG7NCWw04Zb4sUpHnqEFpO2ujdoApltxHdcaCPkjT_ojghjjwws_MZZBbBaetGp7B3mYNYiTX0MDtNaYfU6GnP4v3t9mnEKZxfkhMadPW2lcdSc5wDLSXjftxrPOwUUSpS39QHQ7Y-o4L3X0-cedUnrAdjEPH-3i6UfAuDtinqKomkoxlUnGjHvwyDQn-27tWB_EM7X8qdkMu2B3iYpUGTSI6Fr62m2CQjwEI5TPs_556kkMgqKttVmt4pPiI_Imt8w9uPINaqUdR-0AunFKB87KeRLvJK1i6JIPzEAc-SnABc8ohW4m6ngwC3I3dr80nLIwsZo8x9v_p3y2A8DkQPlXPHsUEpBqbM6ZM-Mq1ZK_E0IB-cdbwGTy6zV8JSSOANd6aj3pi7Lmt_sF1VhGPTivI7LJBT5nVW5ypnyz157iL5xbIOa9M6MbB1KtqNPRBcg1W3blhQ3DrczffVuZSoJlcPWXD6lZRAsgPkUR3PHzR2O7QdT4HM8XShoPoIswr6p74yWrO9nTasKVVCu_zL_ea1lR4NwYX10-5hB_hLewEI-Dg03R__kIeU0MNkyWkjajD7Vzn1EBWAJvbeNW73TapaiFWepy7874EQpwZw7_bNK6Qb4L7niaYyG8aGahsgtWl4CuxCJWVqo31MnAUM-j2lXSDk6zZRhZL9N7zGW_vVD7nGOVWFGIh40s-2KytHFI7WImqmiCmTEZZ9wXeRf_6qb_7OcJ8UOePwcaqL6XaNDpCeIzkF5ImSyuLbWLM9GWQGP97kpUXgO_q3FMvYaVJcOcGpZpRU3VFFbvqFVC2LEWcUqaD7SuEZvZS-VGjfVh8cNWocZ3IC_QqNu6-zGjDgpuIIuJBOh_tKy-iERl11U_GOl4ThytbKk4jOJtYFNDkNuN9TIJZqlVCYoNd6VPrnS46GrvrM7wj-LZffmuR9rVQpuxt_zrNyavPzuHbPCEkXDbhZL9ecqJkWy3b5E5V-dQoDSvDbHVxsbMZHwWflmbffCH6uf7fJvlGUNnu3LmOVUq-WuDK5invepzjtGDqOjxTeXmcGqnzvPDuoeQ8SkM04-zzk8HALtK0dRU1_Yk8gFOJOYz2ZPqWoDWoDYZml4QOo&search=wifi
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
|
|
||||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
|
||||||
#include "lvgl.h"
|
|
||||||
#elif defined(LV_BUILD_TEST)
|
|
||||||
#include "../lvgl.h"
|
|
||||||
#else
|
|
||||||
#include "lvgl/lvgl.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LV_ATTRIBUTE_WIFI_OK
|
|
||||||
#define LV_ATTRIBUTE_WIFI_OK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const
|
|
||||||
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_WIFI_OK
|
|
||||||
uint8_t wifi_ok_map[] = {
|
|
||||||
|
|
||||||
0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x6c,0x00,0x00,0x00,0xb9,0x00,0x00,0x00,0xe5,0x00,0x00,0x00,0xf2,0x00,0x00,0x00,0xe6,0x00,0x00,0x00,0xbb,0x00,0x00,0x00,0x6f,0x00,0x00,0x00,0x1a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x86,0x00,0x00,0x00,0xf9,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xe6,0x00,0x00,0x00,0xba,0x00,0x00,0x00,0xa9,0x00,0x00,0x00,0xb9,0x00,0x00,0x00,0xe4,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x8c,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x29,0x00,0x00,0x00,0xd5,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xa2,0x00,0x00,0x00,0x25,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x9d,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xda,0x00,0x00,0x00,0x2f,
|
|
||||||
0x00,0x00,0x00,0xf9,0x00,0x00,0x00,0xf3,0x00,0x00,0x00,0x3d,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00,0x9b,0x00,0x00,0x00,0xdb,0x00,0x00,0x00,0xed,0x00,0x00,0x00,0xdc,0x00,0x00,0x00,0x9e,0x00,0x00,0x00,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0xee,0x00,0x00,0x00,0xfb,
|
|
||||||
0x00,0x00,0x00,0x62,0x00,0x00,0x00,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xa1,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xbc,0x00,0x00,0x00,0xa1,0x00,0x00,0x00,0xba,0x00,0x00,0x00,0xf9,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xa7,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x23,0x00,0x00,0x00,0x57,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xab,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x7b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x74,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xaf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x4a,0x00,0x00,0x00,0x4a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x73,0x00,0x00,0x00,0xd9,0x00,0x00,0x00,0xf4,0x00,0x00,0x00,0xdb,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x43,0x00,0x00,0x00,0x45,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x05,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xd3,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xc5,0x00,0x00,0x00,0x96,0x00,0x00,0x00,0xc2,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xda,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x53,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x00,0x00,0x00,0xa4,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x00,0x00,0x00,0xe6,0x00,0x00,0x00,0x8b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0xfb,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x8e,0x00,0x00,0x00,0xf5,0x00,0x00,0x00,0x96,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
const lv_image_dsc_t wifi_ok = {
|
|
||||||
.header.magic = LV_IMAGE_HEADER_MAGIC,
|
|
||||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
|
||||||
.header.flags = 0,
|
|
||||||
.header.w = 15,
|
|
||||||
.header.h = 12,
|
|
||||||
.header.stride = 60,
|
|
||||||
.data_size = sizeof(wifi_ok_map),
|
|
||||||
.data = wifi_ok_map,
|
|
||||||
};
|
|
||||||
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
void mqtt_app_start(void);
|
|
||||||
typedef enum wifi_evt{
|
|
||||||
CONNECTED,
|
|
||||||
CONNECT_FAIL,
|
|
||||||
DISCONNECTED,
|
|
||||||
GOT_IP
|
|
||||||
} wifi_evt;
|
|
||||||
typedef void (*wifi_callback)(wifi_evt evt);
|
|
||||||
void wifi_init_sta(wifi_callback cb);
|
|
||||||
|
|
||||||
@ -14,11 +14,8 @@
|
|||||||
#include "esp_event.h"
|
#include "esp_event.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_timer.h"
|
#include "esp_timer.h"
|
||||||
#include "lwip/err.h"
|
// HTTP Client
|
||||||
#include "lwip/sys.h"
|
|
||||||
// HTTP Client + time
|
|
||||||
#include "esp_http_client.h"
|
#include "esp_http_client.h"
|
||||||
#include "esp_sntp.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/unistd.h>
|
#include <sys/unistd.h>
|
||||||
@ -44,7 +41,7 @@ static const char *TAG = "ImgDwn";
|
|||||||
|
|
||||||
#define IMGDWN_WIDTH_STR "800"
|
#define IMGDWN_WIDTH_STR "800"
|
||||||
#define IMGDWN_WIDTH 620
|
#define IMGDWN_WIDTH 620
|
||||||
#define IMGDWN_HEIGHT_STR "600"
|
#define IMGDWN_HEIGHT_STR "500"
|
||||||
#define IMGDWN_HEIGHT 460
|
#define IMGDWN_HEIGHT 460
|
||||||
#define IMGDWN_URL2 ("http://vps-edf71efa.vps.ovh.net:3000/render/d-solo/7BtRMrv4k/temperatures?orgId=1&var-emplacement=entree_ECS&var-emplacement=entree_reseauSol&panelId=4&width=650&height=460&scale=1&tz=Europe%2FParis/")
|
#define IMGDWN_URL2 ("http://vps-edf71efa.vps.ovh.net:3000/render/d-solo/7BtRMrv4k/temperatures?orgId=1&var-emplacement=entree_ECS&var-emplacement=entree_reseauSol&panelId=4&width=650&height=460&scale=1&tz=Europe%2FParis/")
|
||||||
#define IMGDWN_URL ("http://vps-edf71efa.vps.ovh.net:3000/render/d-solo/bOcPeysGz/hauteur-cuve?orgId=1&from=now-2d&refresh=1m&panelId=4&width=" IMGDWN_WIDTH_STR "&height=" IMGDWN_HEIGHT_STR "&scale=1&tz=Europe%2FParis") // 650 460
|
#define IMGDWN_URL ("http://vps-edf71efa.vps.ovh.net:3000/render/d-solo/bOcPeysGz/hauteur-cuve?orgId=1&from=now-2d&refresh=1m&panelId=4&width=" IMGDWN_WIDTH_STR "&height=" IMGDWN_HEIGHT_STR "&scale=1&tz=Europe%2FParis") // 650 460
|
||||||
@ -127,15 +124,15 @@ esp_err_t _http_event_handler_id(esp_http_client_event_t *evt)
|
|||||||
case HTTP_EVENT_ON_FINISH:
|
case HTTP_EVENT_ON_FINISH:
|
||||||
// Do not draw if it's a redirect (302)
|
// Do not draw if it's a redirect (302)
|
||||||
if (esp_http_client_get_status_code(evt->client) == 200) {
|
if (esp_http_client_get_status_code(evt->client) == 200) {
|
||||||
printf("%li bytes read from %s\nIMG_BUF size: %li\n", img_buf_pos, IMGDWN_URL, img_buf_pos);
|
printf("%"PRIu32" bytes read from %s\nIMG_BUF size: %"PRIu32"\n", img_buf_pos, IMGDWN_URL, img_buf_pos);
|
||||||
//drawBufJpeg(source_buf, 0, 0);
|
//drawBufJpeg(source_buf, 0, 0);
|
||||||
create_file_app(source_buf,img_buf_pos); //function which opens and records data to spiffs file
|
create_file_app(source_buf,img_buf_pos); //function which opens and records data to spiffs file
|
||||||
time_download = (esp_timer_get_time()-startTime)/1000;
|
time_download = (esp_timer_get_time()-startTime)/1000;
|
||||||
ESP_LOGI("www-dw", "%li ms - download", time_download);
|
ESP_LOGI("www-dw", "%"PRIu32" ms - download", time_download);
|
||||||
// Refresh display
|
// Refresh display
|
||||||
//display.update();
|
//display.update();
|
||||||
|
|
||||||
ESP_LOGI("total", "%li ms - total time spent\n", time_download+time_decomp+time_render);
|
ESP_LOGI("total", "%"PRIu32" ms - total time spent\n", time_download+time_decomp+time_render);
|
||||||
} else {
|
} else {
|
||||||
printf("HTTP on finish got status code: %d\n", esp_http_client_get_status_code(evt->client));
|
printf("HTTP on finish got status code: %d\n", esp_http_client_get_status_code(evt->client));
|
||||||
}
|
}
|
||||||
@ -168,7 +165,7 @@ static void download(void)
|
|||||||
esp_err_t err = esp_http_client_perform(client);
|
esp_err_t err = esp_http_client_perform(client);
|
||||||
if (err == ESP_OK)
|
if (err == ESP_OK)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %lli\n",
|
ESP_LOGI(TAG, "\nIMAGE URL: %s\n\nHTTP GET Status = %d, content_length = %"PRIi64"\n",
|
||||||
IMGDWN_URL,
|
IMGDWN_URL,
|
||||||
esp_http_client_get_status_code(client),
|
esp_http_client_get_status_code(client),
|
||||||
esp_http_client_get_content_length(client));
|
esp_http_client_get_content_length(client));
|
||||||
@ -180,12 +177,21 @@ static void download(void)
|
|||||||
|
|
||||||
//printf("Go to sleep %d minutes\n", CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER);
|
//printf("Go to sleep %d minutes\n", CONFIG_DEEPSLEEP_MINUTES_AFTER_RENDER);
|
||||||
esp_http_client_cleanup(client);
|
esp_http_client_cleanup(client);
|
||||||
vTaskDelay(3600000 / portTICK_PERIOD_MS);
|
|
||||||
//deepsleep();
|
//deepsleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
void imgdwn(void *pvParameter) {
|
void imgdwn(void *domotic_event_group) {
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
// Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
|
||||||
|
// number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above)
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(domotic_event_group,
|
||||||
|
BIT0,
|
||||||
|
pdFALSE,
|
||||||
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
if (bits & BIT0)
|
||||||
|
{
|
||||||
ESP_LOGE(TAG, "beginning");
|
ESP_LOGE(TAG, "beginning");
|
||||||
|
|
||||||
// Should be big enough to allocate the JPEG file size, width * height should suffice
|
// Should be big enough to allocate the JPEG file size, width * height should suffice
|
||||||
@ -193,12 +199,18 @@ void imgdwn(void *pvParameter) {
|
|||||||
if (source_buf == NULL) {
|
if (source_buf == NULL) {
|
||||||
ESP_LOGE(TAG, "Initial alloc source_buf failed!");
|
ESP_LOGE(TAG, "Initial alloc source_buf failed!");
|
||||||
}
|
}
|
||||||
printf("Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
printf("Free heap after buffers allocation: %"PRIu16"\n", xPortGetFreeHeapSize());
|
||||||
|
|
||||||
download();
|
download();
|
||||||
|
|
||||||
heap_caps_free(source_buf);
|
heap_caps_free(source_buf);
|
||||||
printf("Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
printf("Free heap after buffers allocation: %"PRIu16"\n", xPortGetFreeHeapSize());
|
||||||
|
vTaskDelay(3600000 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
vTaskDelay(5000 / portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,2 +1,2 @@
|
|||||||
void imgdwn();
|
void imgdwn(void* evtGroup);
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|||||||
@ -60,5 +60,5 @@ void printff(struct meteoforecast_data *tmp);
|
|||||||
|
|
||||||
void on_weather_data_retrieval(weather_data_callback data_retreived_cb);
|
void on_weather_data_retrieval(weather_data_callback data_retreived_cb);
|
||||||
void on_weather_data_retrieval_start(weather_data_callback data_retreived_cb);
|
void on_weather_data_retrieval_start(weather_data_callback data_retreived_cb);
|
||||||
void initialise_weather_data_retrieval(unsigned long retreival_period);
|
void initialise_weather_data_retrieval(unsigned long retreival_period, void* evtGroup);
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,6 @@
|
|||||||
#include "esp_http_client.h"
|
#include "esp_http_client.h"
|
||||||
#include "esp_tls.h"
|
#include "esp_tls.h"
|
||||||
#include "stateManagement.h"
|
#include "stateManagement.h"
|
||||||
|
|
||||||
static const char *TAG = "MeteoFrance";
|
static const char *TAG = "MeteoFrance";
|
||||||
|
|
||||||
/* Constants that aren't configurable in menuconfig
|
/* Constants that aren't configurable in menuconfig
|
||||||
@ -129,7 +128,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
|
|||||||
if (evt->user_data)
|
if (evt->user_data)
|
||||||
{
|
{
|
||||||
// The last byte in evt->user_data is kept for the NULL character in case of out-of-bound access.
|
// The last byte in evt->user_data is kept for the NULL character in case of out-of-bound access.
|
||||||
copy_len = MIN(evt->data_len, (MAX_HTTP_OUTPUT_BUFFER - output_len));
|
if(evt->data_len<(MAX_HTTP_OUTPUT_BUFFER - output_len)){
|
||||||
|
copy_len = evt->data_len;
|
||||||
|
}else{
|
||||||
|
copy_len=(MAX_HTTP_OUTPUT_BUFFER - output_len);
|
||||||
|
}
|
||||||
if (copy_len)
|
if (copy_len)
|
||||||
{
|
{
|
||||||
memcpy(evt->user_data + output_len, evt->data, copy_len);
|
memcpy(evt->user_data + output_len, evt->data, copy_len);
|
||||||
@ -149,7 +152,11 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
copy_len = MIN(evt->data_len, (content_len - output_len));
|
if(evt->data_len<(content_len - output_len)){
|
||||||
|
copy_len = evt->data_len;
|
||||||
|
}else{
|
||||||
|
copy_len=(content_len - output_len);
|
||||||
|
}
|
||||||
if (copy_len)
|
if (copy_len)
|
||||||
{
|
{
|
||||||
memcpy(output_buffer + output_len, evt->data, copy_len);
|
memcpy(output_buffer + output_len, evt->data, copy_len);
|
||||||
@ -172,7 +179,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
|
|||||||
break;
|
break;
|
||||||
case HTTP_EVENT_DISCONNECTED:
|
case HTTP_EVENT_DISCONNECTED:
|
||||||
ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED");
|
ESP_LOGI(TAG, "HTTP_EVENT_DISCONNECTED");
|
||||||
int mbedtls_err = 0;
|
/*int mbedtls_err = 0;
|
||||||
esp_err_t err = esp_tls_get_and_clear_last_error((esp_tls_error_handle_t)evt->data, &mbedtls_err, NULL);
|
esp_err_t err = esp_tls_get_and_clear_last_error((esp_tls_error_handle_t)evt->data, &mbedtls_err, NULL);
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
@ -184,7 +191,7 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
|
|||||||
free(output_buffer);
|
free(output_buffer);
|
||||||
output_buffer = NULL;
|
output_buffer = NULL;
|
||||||
}
|
}
|
||||||
output_len = 0;
|
output_len = 0;*/
|
||||||
break;
|
break;
|
||||||
case HTTP_EVENT_REDIRECT:
|
case HTTP_EVENT_REDIRECT:
|
||||||
ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT");
|
ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT");
|
||||||
@ -315,16 +322,19 @@ static bool process_response_body(const char *body)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void http_request_task(void *pvParameter)
|
static void http_request_task(void* domotic_event_group)
|
||||||
{
|
{
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if(!mainState.wifi_init){
|
ESP_LOGE(TAG,"En attente connexion wifi");
|
||||||
//On attend le wifi
|
// Waiting until either the connection is established (WIFI_CONNECTED_BIT).
|
||||||
ESP_LOGI(TAG, "Pas de wifi on attend 5 secondes");
|
EventBits_t bits = xEventGroupWaitBits(domotic_event_group,
|
||||||
vTaskDelay(10000 / portTICK_PERIOD_MS);
|
BIT0,
|
||||||
|
pdFALSE,
|
||||||
}else{
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
if (bits & BIT0){
|
||||||
|
ESP_LOGE(TAG,"connexion wifi ok");
|
||||||
ESP_LOGV(TAG, "Début recup méteo --------------------------");
|
ESP_LOGV(TAG, "Début recup méteo --------------------------");
|
||||||
weather.data_retreived_cb_start(NULL);
|
weather.data_retreived_cb_start(NULL);
|
||||||
char *local_response_buffer = heap_caps_malloc((MAX_HTTP_OUTPUT_BUFFER + 1) * (sizeof(char)), MALLOC_CAP_SPIRAM);
|
char *local_response_buffer = heap_caps_malloc((MAX_HTTP_OUTPUT_BUFFER + 1) * (sizeof(char)), MALLOC_CAP_SPIRAM);
|
||||||
@ -376,8 +386,10 @@ static void http_request_task(void *pvParameter)
|
|||||||
ESP_LOGI(TAG, "Données non valides on attend avant de retenter");
|
ESP_LOGI(TAG, "Données non valides on attend avant de retenter");
|
||||||
vTaskDelay(30000 / portTICK_PERIOD_MS);
|
vTaskDelay(30000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
}
|
}else{
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "Wifi non connecté");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,7 +403,7 @@ void on_weather_data_retrieval_start(weather_data_callback data_retreived_cb_sta
|
|||||||
weather.data_retreived_cb_start = data_retreived_cb_start;
|
weather.data_retreived_cb_start = data_retreived_cb_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
void initialise_weather_data_retrieval(unsigned long retreival_period)
|
void initialise_weather_data_retrieval(unsigned long retreival_period, void* domotic_event_group)
|
||||||
{
|
{
|
||||||
|
|
||||||
weather.retreival_period = retreival_period;
|
weather.retreival_period = retreival_period;
|
||||||
@ -399,9 +411,9 @@ void initialise_weather_data_retrieval(unsigned long retreival_period)
|
|||||||
// http_client_on_process_chunk(&http_client, process_chunk);
|
// http_client_on_process_chunk(&http_client, process_chunk);
|
||||||
// http_client_on_disconnected(&http_client, disconnected);
|
// http_client_on_disconnected(&http_client, disconnected);
|
||||||
TaskHandle_t xHandle = NULL;
|
TaskHandle_t xHandle = NULL;
|
||||||
BaseType_t ret1 = xTaskCreate(&http_request_task, "http_meteof", 5 * 1024, NULL, 5, &xHandle);
|
BaseType_t ret1 = xTaskCreatePinnedToCore(&http_request_task, "http_meteof", 5 * 1024, domotic_event_group, 5, &xHandle, 1);
|
||||||
if(ret1!=pdPASS ){
|
if(ret1!=pdPASS ){
|
||||||
ESP_LOGE(TAG, "Impossible de creer la tache %i", ret1);
|
ESP_LOGE(TAG, "Impossible de creer la tache %"PRIi16, ret1);
|
||||||
}
|
}
|
||||||
ESP_LOGI(TAG, "HTTP request task started");
|
ESP_LOGI(TAG, "HTTP request task started");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,13 +2,14 @@ dependencies:
|
|||||||
chmorgan/esp-audio-player:
|
chmorgan/esp-audio-player:
|
||||||
component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033
|
component_hash: c8ac1998e9af863bc41b57e592f88d1a5791a0f891485122336ddabbf7a65033
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
|
||||||
require: private
|
|
||||||
version: '>=5.0'
|
|
||||||
- name: chmorgan/esp-libhelix-mp3
|
- name: chmorgan/esp-libhelix-mp3
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=1.0.0,<2.0.0'
|
version: '>=1.0.0,<2.0.0'
|
||||||
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
|
require: private
|
||||||
|
version: '>=5.0'
|
||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com/
|
registry_url: https://components.espressif.com/
|
||||||
type: service
|
type: service
|
||||||
@ -17,6 +18,7 @@ dependencies:
|
|||||||
component_hash: 327091394b9ef5c2cd395a960ab70ae64479e0a8831cbd9925e38895fad93719
|
component_hash: 327091394b9ef5c2cd395a960ab70ae64479e0a8831cbd9925e38895fad93719
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=4.1.0'
|
version: '>=4.1.0'
|
||||||
source:
|
source:
|
||||||
@ -27,6 +29,7 @@ dependencies:
|
|||||||
component_hash: cbb76089dc2c5749f7b470e2e70aedc44c9da519e04eb9a67d4c7ec275229e53
|
component_hash: cbb76089dc2c5749f7b470e2e70aedc44c9da519e04eb9a67d4c7ec275229e53
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=4.1.0'
|
version: '>=4.1.0'
|
||||||
source:
|
source:
|
||||||
@ -37,6 +40,7 @@ dependencies:
|
|||||||
component_hash: 351350613ceafba240b761b4ea991e0f231ac7a9f59a9ee901f751bddc0bb18f
|
component_hash: 351350613ceafba240b761b4ea991e0f231ac7a9f59a9ee901f751bddc0bb18f
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=4.1'
|
version: '>=4.1'
|
||||||
source:
|
source:
|
||||||
@ -46,13 +50,14 @@ dependencies:
|
|||||||
espressif/eppp_link:
|
espressif/eppp_link:
|
||||||
component_hash: c2fd9c57ac14a68a62c9d9cdeec39a2b265abc16779196ce2c9f5000c9a4dd8b
|
component_hash: c2fd9c57ac14a68a62c9d9cdeec39a2b265abc16779196ce2c9f5000c9a4dd8b
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
|
||||||
require: private
|
|
||||||
version: '>=5.2'
|
|
||||||
- name: espressif/esp_serial_slave_link
|
- name: espressif/esp_serial_slave_link
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: ^1.1.0
|
version: ^1.1.0
|
||||||
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
|
require: private
|
||||||
|
version: '>=5.2'
|
||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
type: service
|
type: service
|
||||||
@ -97,6 +102,7 @@ dependencies:
|
|||||||
component_hash: 014948481bda426cd46714f297fe1891711246c62bea288863a8cc8cf13ef1f0
|
component_hash: 014948481bda426cd46714f297fe1891711246c62bea288863a8cc8cf13ef1f0
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=4.0'
|
version: '>=4.0'
|
||||||
source:
|
source:
|
||||||
@ -104,7 +110,7 @@ dependencies:
|
|||||||
type: service
|
type: service
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
espressif/esp_hosted:
|
espressif/esp_hosted:
|
||||||
component_hash: 9e7a202cc18c08fa9b67c0261f9733b33af9b3af73eafd4ef6704cdb37bde7c2
|
component_hash: fba52659b7d0256b0f6bd497ebce2492bf93506d797935a292f0fd864e364e47
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
require: private
|
require: private
|
||||||
@ -112,7 +118,7 @@ dependencies:
|
|||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
type: service
|
type: service
|
||||||
version: 1.4.1
|
version: 2.0.1
|
||||||
espressif/esp_lcd_ek79007:
|
espressif/esp_lcd_ek79007:
|
||||||
component_hash: 07c1afab7e9fd4dd2fd06ff9245e65327c5bbd5485efec199496e19a9304d47b
|
component_hash: 07c1afab7e9fd4dd2fd06ff9245e65327c5bbd5485efec199496e19a9304d47b
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -145,6 +151,7 @@ dependencies:
|
|||||||
component_hash: 779b4ba2464a3ae85681e4b860caa5fdc35801458c23f3039ee761bae7f442a4
|
component_hash: 779b4ba2464a3ae85681e4b860caa5fdc35801458c23f3039ee761bae7f442a4
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=4.4.2'
|
version: '>=4.4.2'
|
||||||
source:
|
source:
|
||||||
@ -166,7 +173,7 @@ dependencies:
|
|||||||
type: service
|
type: service
|
||||||
version: 1.1.3
|
version: 1.1.3
|
||||||
espressif/esp_lvgl_port:
|
espressif/esp_lvgl_port:
|
||||||
component_hash: bb938deffba7d80b2ce582a796c053681b0439e0a7033666688e0f1f5b921125
|
component_hash: e720c95cf0667554a204591bb5fade4655fb2990465557041200fa44b5bc7556
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
require: private
|
require: private
|
||||||
@ -178,29 +185,20 @@ dependencies:
|
|||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com/
|
registry_url: https://components.espressif.com/
|
||||||
type: service
|
type: service
|
||||||
version: 2.5.0
|
version: 2.6.0
|
||||||
espressif/esp_serial_slave_link:
|
espressif/esp_serial_slave_link:
|
||||||
component_hash: 8c534b7d4986ca0e4c41db71f559492b795ab862f1d15359d7993034696b7bcc
|
component_hash: 8c534b7d4986ca0e4c41db71f559492b795ab862f1d15359d7993034696b7bcc
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=5.0'
|
version: '>=5.0'
|
||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
type: service
|
type: service
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
espressif/esp_websocket_client:
|
|
||||||
component_hash: f77326f0e1c38da4e9c97e17c5d649b0dd13027f2645e720e48db269638fd622
|
|
||||||
dependencies:
|
|
||||||
- name: idf
|
|
||||||
require: private
|
|
||||||
version: '>=5.0'
|
|
||||||
source:
|
|
||||||
registry_url: https://components.espressif.com/
|
|
||||||
type: service
|
|
||||||
version: 1.4.0
|
|
||||||
espressif/esp_wifi_remote:
|
espressif/esp_wifi_remote:
|
||||||
component_hash: f772731a8cc7361a3eb416eac94ac46cf85369cb996c5a5fc9245a07f241fee2
|
component_hash: 6448c379c1dceef7f0dedd30635006118e8b768be884f3804d4a94930556e08c
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: espressif/eppp_link
|
- name: espressif/eppp_link
|
||||||
registry_url: https://components.espressif.com
|
registry_url: https://components.espressif.com
|
||||||
@ -218,13 +216,13 @@ dependencies:
|
|||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com/
|
registry_url: https://components.espressif.com/
|
||||||
type: service
|
type: service
|
||||||
version: 0.8.5
|
version: 0.9.2
|
||||||
idf:
|
idf:
|
||||||
source:
|
source:
|
||||||
type: idf
|
type: idf
|
||||||
version: 5.4.0
|
version: 5.5.0
|
||||||
joltwallet/littlefs:
|
joltwallet/littlefs:
|
||||||
component_hash: 34b8c56a14f10b440845fe972ce34ef41d1d205bcb139b3dfc58983a10abf59b
|
component_hash: e1dbe782be5aa58e879fe9f22bee60e5ff68acbfe3793d92a2e730c27374c787
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
require: private
|
require: private
|
||||||
@ -232,7 +230,7 @@ dependencies:
|
|||||||
source:
|
source:
|
||||||
registry_url: https://components.espressif.com/
|
registry_url: https://components.espressif.com/
|
||||||
type: service
|
type: service
|
||||||
version: 1.19.1
|
version: 1.19.2
|
||||||
lvgl/lvgl:
|
lvgl/lvgl:
|
||||||
component_hash: 2409fdc84e9766d2a18afd84b051aef3f838348136cdb1c10ac2e8bcdb012bf6
|
component_hash: 2409fdc84e9766d2a18afd84b051aef3f838348136cdb1c10ac2e8bcdb012bf6
|
||||||
dependencies: []
|
dependencies: []
|
||||||
@ -244,6 +242,7 @@ dependencies:
|
|||||||
component_hash: b46dd8c20dee72654e8ea4a43b16e8a93e984a6c10426392a4b8486fed50ca93
|
component_hash: b46dd8c20dee72654e8ea4a43b16e8a93e984a6c10426392a4b8486fed50ca93
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: idf
|
- name: idf
|
||||||
|
registry_url: https://components.espressif.com
|
||||||
require: private
|
require: private
|
||||||
version: '>=5.0'
|
version: '>=5.0'
|
||||||
source:
|
source:
|
||||||
@ -256,12 +255,11 @@ direct_dependencies:
|
|||||||
- espressif/esp32_p4_function_ev_board
|
- espressif/esp32_p4_function_ev_board
|
||||||
- espressif/esp_lcd_touch_gt911
|
- espressif/esp_lcd_touch_gt911
|
||||||
- espressif/esp_lvgl_port
|
- espressif/esp_lvgl_port
|
||||||
- espressif/esp_websocket_client
|
|
||||||
- espressif/esp_wifi_remote
|
- espressif/esp_wifi_remote
|
||||||
- idf
|
- idf
|
||||||
- joltwallet/littlefs
|
- joltwallet/littlefs
|
||||||
- lvgl/lvgl
|
- lvgl/lvgl
|
||||||
- suda-morris/am2302_rmt
|
- suda-morris/am2302_rmt
|
||||||
manifest_hash: 15284e0a2c7903f038a0abcadaa03469042782b30abea68977d3e3e45b11bbaa
|
manifest_hash: fc9086d177c610d5a3ed802c7e759df686413041315e1f9bed4bca07bf42740f
|
||||||
target: esp32p4
|
target: esp32p4
|
||||||
version: 2.0.0
|
version: 2.0.0
|
||||||
|
|||||||
@ -1,15 +1,25 @@
|
|||||||
set(EXTRA_COMPONENT_DIRS ../components)
|
set(EXTRA_COMPONENT_DIRS ../components)
|
||||||
|
|
||||||
set(comps heap nvs_flash meteofrance communication esp_netif image_downloader fatfs sdmmc vfs littlefs wifi_logger protocol_examples_common app_update esp_https_ota )
|
set(comps heap nvs_flash meteofrance esp_netif image_downloader fatfs protocol_examples_common mqtt )
|
||||||
|
|
||||||
if(${IDF_TARGET} STREQUAL "esp32p4")
|
if(${IDF_TARGET} STREQUAL "esp32p4")
|
||||||
list(APPEND comps bsp_extra esp32_p4_function_ev_board)
|
list(APPEND comps bsp_extra esp32_p4_function_ev_board sdmmc vfs littlefs wifi_logger app_update esp_https_ota espcoredump esp_http_server esp_wifi)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
function (make_font fontSize)
|
||||||
|
execute_process(COMMAND podman run -v /home/marc/rgb_lcd/main/fonts:/app -w /app lvfontconv lv_font_conv --bpp 4 --size ${fontSize} --no-compress --font Montserrat-Medium.ttf --symbols "0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'():" --format lvgl -o montserrat_medium_${fontSize}.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
make_font(12)
|
||||||
|
make_font(18)
|
||||||
|
make_font(24)
|
||||||
|
|
||||||
|
|
||||||
idf_component_register(SRC_DIRS . fonts
|
idf_component_register(SRC_DIRS . fonts
|
||||||
INCLUDE_DIRS "."
|
INCLUDE_DIRS "."
|
||||||
REQUIRES ${comps}
|
REQUIRES ${comps}
|
||||||
EMBED_TXTFILES ${project_dir}/main/ca_cert.pem)
|
EMBED_TXTFILES ${project_dir}/main/ca_cert.pem
|
||||||
|
EMBED_FILES "index.html")
|
||||||
|
|
||||||
|
|
||||||
set_source_files_properties(
|
set_source_files_properties(
|
||||||
@ -17,6 +27,14 @@ set_source_files_properties(
|
|||||||
"-DLV_LVGL_H_INCLUDE_SIMPLE;-Wno-format;-DLV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(montserrat_medium_12) LV_FONT_DECLARE(montserrat_medium_18) LV_FONT_DECLARE(montserrat_medium_24)"
|
"-DLV_LVGL_H_INCLUDE_SIMPLE;-Wno-format;-DLV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(montserrat_medium_12) LV_FONT_DECLARE(montserrat_medium_18) LV_FONT_DECLARE(montserrat_medium_24)"
|
||||||
)
|
)
|
||||||
|
|
||||||
lvgl_port_add_images(${COMPONENT_LIB} "images/")
|
if(${IDF_TARGET} STREQUAL "esp32p4")
|
||||||
|
lvgl_port_create_c_image("images/wifi_ok.png" "images/" "ARGB8888" "NONE")
|
||||||
|
lvgl_port_create_c_image("images/wifi_ko.png" "images/" "ARGB8888" "NONE")
|
||||||
|
lvgl_port_create_c_image("images/mqtt_ok.png" "images/" "AUTO" "NONE")
|
||||||
|
lvgl_port_create_c_image("images/mqtt_ko.png" "images/" "ARGB8888" "NONE")
|
||||||
|
lvgl_port_add_images(${COMPONENT_LIB} "images/")
|
||||||
|
littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
littlefs_create_partition_image(littlefs images_meteo FLASH_IN_PROJECT)
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
menu "Example Configuration"
|
menu "Domotic Configuration"
|
||||||
|
|
||||||
config ESP_WIFI_SSID
|
config ESP_WIFI_SSID
|
||||||
string "WiFi SSID"
|
string "WiFi SSID"
|
||||||
@ -12,56 +12,11 @@ menu "Example Configuration"
|
|||||||
help
|
help
|
||||||
WiFi password (WPA or WPA2) for the example to use.
|
WiFi password (WPA or WPA2) for the example to use.
|
||||||
|
|
||||||
choice ESP_WIFI_SAE_MODE
|
config GPIO_INPUT_CAPTEUR_PIR
|
||||||
prompt "WPA3 SAE mode selection"
|
int "GPIO PIN Capteur PIR"
|
||||||
default ESP_WPA3_SAE_PWE_BOTH
|
range ENV_GPIO_RANGE_MIN ENV_GPIO_IN_RANGE_MAX
|
||||||
|
default 4
|
||||||
help
|
help
|
||||||
Select mode for SAE as Hunt and Peck, H2E or both.
|
GPIO pin à utiliser pour le capteur de présence IR.
|
||||||
config ESP_WPA3_SAE_PWE_HUNT_AND_PECK
|
|
||||||
bool "HUNT AND PECK"
|
|
||||||
config ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT
|
|
||||||
bool "H2E"
|
|
||||||
config ESP_WPA3_SAE_PWE_BOTH
|
|
||||||
bool "BOTH"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config ESP_WIFI_PW_ID
|
|
||||||
string "PASSWORD IDENTIFIER"
|
|
||||||
depends on ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT|| ESP_WPA3_SAE_PWE_BOTH
|
|
||||||
default ""
|
|
||||||
help
|
|
||||||
password identifier for SAE H2E
|
|
||||||
|
|
||||||
config ESP_MAXIMUM_RETRY
|
|
||||||
int "Maximum retry"
|
|
||||||
default 5
|
|
||||||
help
|
|
||||||
Set the Maximum retry to avoid station reconnecting to the AP unlimited when the AP is really inexistent.
|
|
||||||
|
|
||||||
choice ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD
|
|
||||||
prompt "WiFi Scan auth mode threshold"
|
|
||||||
default ESP_WIFI_AUTH_WPA2_PSK
|
|
||||||
help
|
|
||||||
The weakest authmode to accept in the scan mode.
|
|
||||||
This value defaults to ESP_WIFI_AUTH_WPA2_PSK incase password is present and ESP_WIFI_AUTH_OPEN is used.
|
|
||||||
Please select ESP_WIFI_AUTH_WEP/ESP_WIFI_AUTH_WPA_PSK incase AP is operating in WEP/WPA mode.
|
|
||||||
|
|
||||||
config ESP_WIFI_AUTH_OPEN
|
|
||||||
bool "OPEN"
|
|
||||||
config ESP_WIFI_AUTH_WEP
|
|
||||||
bool "WEP"
|
|
||||||
config ESP_WIFI_AUTH_WPA_PSK
|
|
||||||
bool "WPA PSK"
|
|
||||||
config ESP_WIFI_AUTH_WPA2_PSK
|
|
||||||
bool "WPA2 PSK"
|
|
||||||
config ESP_WIFI_AUTH_WPA_WPA2_PSK
|
|
||||||
bool "WPA/WPA2 PSK"
|
|
||||||
config ESP_WIFI_AUTH_WPA3_PSK
|
|
||||||
bool "WPA3 PSK"
|
|
||||||
config ESP_WIFI_AUTH_WPA2_WPA3_PSK
|
|
||||||
bool "WPA2/WPA3 PSK"
|
|
||||||
config ESP_WIFI_AUTH_WAPI_PSK
|
|
||||||
bool "WAPI PSK"
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|||||||
@ -1,22 +1,22 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
MIIDmTCCAoGgAwIBAgIUd5qKY6blEffPyHQZnmQfxkcCO7AwDQYJKoZIhvcNAQEL
|
MIIDmTCCAoGgAwIBAgIUOi7+QtiJLtk+Ianx4ZXIF53mfpYwDQYJKoZIhvcNAQEL
|
||||||
BQAwXDELMAkGA1UEBhMCRlIxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
|
BQAwXDELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
|
||||||
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4
|
GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4
|
||||||
MB4XDTI0MTExMzE4MjYxOVoXDTI1MTExMzE4MjYxOVowXDELMAkGA1UEBhMCRlIx
|
MB4XDTI1MDUwODIxMjA1MFoXDTI2MDUwODIxMjA1MFowXDELMAkGA1UEBhMCQVUx
|
||||||
EzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
|
EzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMg
|
||||||
UHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4MIIBIjANBgkqhkiG9w0BAQEF
|
UHR5IEx0ZDEVMBMGA1UEAwwMMTkyLjE2OC4wLjI4MIIBIjANBgkqhkiG9w0BAQEF
|
||||||
AAOCAQ8AMIIBCgKCAQEA8lKPcpJ6/FhrI+E8fzR93N/XIfEW7GpFa+KNp+DK9DGS
|
AAOCAQ8AMIIBCgKCAQEAvdYH7paBRB93GgeJDrDYpdLzrTofTOJBNnUQ7YWvNI7A
|
||||||
hHno2yVGXNdUFRQEL/2pL8aiZzZ7xGMubzEIr1dlHrb/PplGRTXCxQWnDJDsOu4w
|
Advt46Yy/Vz59f/vTKwy0F4hVZ4d8VY+0BShfaUrXl5OzWmJ7zCQzMLl74gqRnxw
|
||||||
7TbzjYxDhgMwXhSGuFlMexFBh+W9qcO85l4wNSOhHusyf7XZaPAd3NGmK4XsoeXJ
|
d+ExmJDjH+qaDGtHfIbQrhP8y9rK/M8mLuLGhN/gbU2VVIoUIKRQelnQLH5eKCjg
|
||||||
DSROJLLpvyZM3yt1kuC3GTWSqUe4Ldv+kaAfyW+X/PJ7Tgb6frLGNCs5A0zLhFxb
|
2HyQplVfDT4yUGpAfK/clqhp55dsb8UD4xGSwCcH0DK9BZkPfGU2Icu6CEU0g+eA
|
||||||
FS2omnqX6+H2Bjvk3nCQr85zcuIrnXQ+Hy58MayS+dRqPTSNw7RqRVvrGUuQuj5y
|
vwCKuZmaI32AiII4ca5VH/pbVp9ROkGTgoQ0EKObqO1qgL628SwerHNYY+gtj4V8
|
||||||
/ruAVLjG6F9wTZZFJ8Nk2veuFxIG+8ADpglWoYrokQIDAQABo1MwUTAdBgNVHQ4E
|
fpj1xognXLtaUGvGTDAfN4wWLXZ8DxSiCQ0l7bfwJQIDAQABo1MwUTAdBgNVHQ4E
|
||||||
FgQUUa64jnTc+VqWQB93Fp/yPuirm2cwHwYDVR0jBBgwFoAUUa64jnTc+VqWQB93
|
FgQUQO787KNx3MuicFrM/IfEM7wRTuAwHwYDVR0jBBgwFoAUQO787KNx3MuicFrM
|
||||||
Fp/yPuirm2cwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAnqg9
|
/IfEM7wRTuAwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAduAp
|
||||||
DeBozovXmwcbDTlTqz1b5LJ3Xz4mhUnEssmlDvvlXMqL1CjeXDKgOXtkWaomTJNO
|
Vqn4S2nkS0nrF/ahIV6tVqSluZShIRug3O+NGEDhVqv/qvJ0qlIQm1uRfrdY/CPq
|
||||||
MfMTmkkKg2lomNe2O84nUyPJnHYle5cbxZXAvbkmsi6R95lXFf5+bHAtU05TFYKc
|
PLBXHMcCU+M6/GjylHzxtmHU0UXQ7KGpMdVuTKR/z5GymU2yk+DRmz717JKZ9EeL
|
||||||
BWMPB3Vwym9qrAc8G1LPr05LYgrJsQ9xkf0pVR7hrjgu9k6ElNAQSiH4dlyK4b/T
|
DaNH6nkIID5+OSPMOfxTAGGctjLZDumfWegZFPliVv0kwyrocCiScAGWz7FvKCRJ
|
||||||
12U4zBawZNv3f6OnKOTq2NuwwzxWSwRRbEGUf0qO6Z8LNsj7yvmp2ImfN1e3a39p
|
Hl0xQELNafzhFIpHhZzGQ+uVUuzTstL/la0XqPV5ObHoFEkX/OHPLAKuayzxFWCK
|
||||||
+WmxJkHBzg5LxUon8jtiZLKeAPNlAPvKTs/4umE0LdZnsdlYrNR+kFeMMurxHvfZ
|
f3JtKDgmtKbSUhsjBuZ1Yxb/oY+NiBddO7p60a8r4abZ6etzJ0Z7uO+lp9XKb2C1
|
||||||
ykxPELUVUWEgv/IRbA==
|
hzqdUje8g+LEe0jsKg==
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
|||||||
30
main/ca_key.pem
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
||||||
|
MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIyFKMPkFq4BYCAggA
|
||||||
|
MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECNOtqNNR+tlNBIIEyNHx/EB9kkoD
|
||||||
|
3K3ES8DeRIY1Us2jkaMSe7Xg3ot9umWBOdDDDdQKRqmfzxxqU23J2Zuqe+r3v1Hy
|
||||||
|
8hWY0zst8FOn4ShY/HgnnmsnD4dQ6/iM+o1h86XUyCI9P94Tp1lEI38D/OPuYMS+
|
||||||
|
0NbUzl8DsFqIkLI5y+LSRVrwK1S9IUV+g6pxdj/2ZHxhsWYDIdt/8tFhpf8iBe+y
|
||||||
|
bZilzBrgSEmjB9sNSFOdOtL8GP9DaQrr8Zsxk325tCrBcBdf91Z2fCOdt36Xfpas
|
||||||
|
0Q8wQYNonUVcylU7khzNgnqyDwD4XZ/Jrg1HGqVqNxn2xo47wPDntNlu9yeF33Qo
|
||||||
|
PTuNIVpGZ5mNfl3ipPriAyaPcDXE1v4bT7vzIpREUe1hxRoaRrPLK902tB/YO5B7
|
||||||
|
hci+1VjJhe1rCM9AiODXnkhdt6s7xL+6SUES6EFvY5gslSpiscejqGWK2YANaqKx
|
||||||
|
nmTP0KLi0Ow0ymr8QbPe6c/7RJfEsgDMKeQqqJ5wv8erOtyrmcF1UP0zxF9pMPXz
|
||||||
|
Nzpz/nqOGCyel5RiHOptqVFte/4hsbs7zRoBJdnOmOmDUp8E6clx8eALlj4cvAbl
|
||||||
|
GdIxbdp2AFIom1t1m+Incqm5VO8tUwYLG/VnghPp7vkieqbreWyjxb+fg6DDvW37
|
||||||
|
/dKwCIjAM6KVnCfQnY6EAPwqW8FiKlbmyPhU792T4BA2LqHJkNCfXEWT8OengxsQ
|
||||||
|
jrOWxjEg5vyIg1qeYf3eA0H6q3/us5V1FwivItgK6SVjiPZnaSrGKXTotgxU5Cr8
|
||||||
|
7lkgWhb6X5VbLFjKcTLudTb+5HHVmtk+8wN9ZHBJ/7d/iBpO+jPXu1QKyCQZ9ek1
|
||||||
|
hAv58TwnGiBJMlzKY4otAhHKOY/0EtWqy2JssOK0i6xdp2R11ZgiSo/rGDyWkbsT
|
||||||
|
5TQjQZ5A2JPI6jSlcOEIERjPCrbDx2PvKR4qRXOp+uDMGNum5sUkqjF5VtqV0T+L
|
||||||
|
KBdiKIPk/7xogxqxjWNiCCy3e+xQNq4zkBq4ewUJs+rK4wFPkhCjlMtWXVdF3LEM
|
||||||
|
rx/efSCam135ZX2sAZrwU09n+VpqRH5IJwoY2/n3AtY/g421TWjHzKXfi8Je98TH
|
||||||
|
yt7/dtYPpw0QOqxGMlXu1m5s5Sx25noLAdlPkfe1MhkDrinE30DbF7CqkdgPlyKS
|
||||||
|
7x13sLvJJPhaZo+6HPkzGyLVMVQ1jSum0X4yQ+9BhHypvLgd2flp37m7ZMLykeMB
|
||||||
|
HJttmsA/droEAE9Da07X7A9D+R3Zvs4Kdh9waXKPUPQIpx5xk5iXNMu6Yqpu5a4d
|
||||||
|
wa84tKoMQuGUXnZLE8dMNjhj2+uBTzZJHpuCaKyyMbhMum4uKB1MsEKKsD+2iQWu
|
||||||
|
XbKditDr94WyvEnsp84zwswmqwIc2x2GtqLJH0Hz/r/I6QAwDLcObiKQH4Uct7gU
|
||||||
|
wlxq7Pqtt03xbZkIbz/YQiopvZBrBUJiLyzg9s+x/Y3rFzcr061RAFhs2AQH4kYy
|
||||||
|
VGEelixbxgVbYu70hZ/cnkjTSzoCIXSWP2DgEnAKzIAymrwGbJShqR/YKsqhITBk
|
||||||
|
7XJwCFgSULZWtpVwo/x3qrD+j0tEp5uuT7Q204HoiDRXMkRZzVrlDnv8kXxqIXaO
|
||||||
|
iD3k7HTmrkw91pJQzZ6i3Q==
|
||||||
|
-----END ENCRYPTED PRIVATE KEY-----
|
||||||
@ -1,71 +1,15 @@
|
|||||||
#include "communication.h"
|
#include "include/communication.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "mqtt_client.h"
|
#include "mqtt_client.h"
|
||||||
#include "bsp/esp-bsp.h"
|
|
||||||
#include "stateManagement.h"
|
#include "stateManagement.h"
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
|
||||||
|
|
||||||
esp_mqtt_client_handle_t client;
|
esp_mqtt_client_handle_t client;
|
||||||
lv_subject_t mqttStatus;
|
|
||||||
|
|
||||||
extern lv_subject_t tempIntSubj;
|
|
||||||
extern lv_subject_t tempExtSubj;
|
|
||||||
extern lv_subject_t hauteurCuveSubj;
|
|
||||||
extern lv_subject_t hauteurCuveEvolSubj;
|
|
||||||
|
|
||||||
static const char *TAG = "domo_mqtt";
|
static const char *TAG = "domo_mqtt";
|
||||||
|
|
||||||
char *upEvent = "monter";
|
|
||||||
char *downEvent = "descendre";
|
|
||||||
|
|
||||||
char *topicTempExt = "house/temp/282A802600008059";
|
|
||||||
char *topicHauteurCuve = "house/cuve/hauteur";
|
|
||||||
char *topicTempInt = "house/temp/287DCF1E00008020";
|
|
||||||
char *topicHauteurCuveEvol = "house/cuve/hauteurEvol";
|
|
||||||
char *topicdomoticCommand = "domotic/cmd";
|
|
||||||
char *topicTest = "test";
|
|
||||||
|
|
||||||
LV_IMAGE_DECLARE(mqtt_ok);
|
|
||||||
LV_IMAGE_DECLARE(mqtt_ko);
|
|
||||||
|
|
||||||
static void mqttStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject);
|
|
||||||
|
|
||||||
static void mqttStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject)
|
|
||||||
{
|
|
||||||
ESP_LOGV(TAG, "On passe dans le callback de chgt de statut; %li", lv_subject_get_int(subject));
|
|
||||||
if(lvgl_port_lock(0)){
|
|
||||||
lv_obj_t * wifiSt = lv_obj_get_child(lv_obj_get_child(lv_layer_top(), 0),3);
|
|
||||||
if(lv_obj_check_type(wifiSt, &lv_image_class)){
|
|
||||||
switch (lv_subject_get_int(subject))
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
lv_image_set_src(wifiSt,&mqtt_ko);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
lv_image_set_src(wifiSt,&mqtt_ok);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
lv_color_t color = lv_color_make(255, 0, 0);
|
|
||||||
lv_obj_set_style_image_recolor_opa(wifiSt, 125, 0);
|
|
||||||
lv_obj_set_style_image_recolor(wifiSt, color, 0);
|
|
||||||
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
|
||||||
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
lv_obj_set_style_image_recolor_opa(wifiSt, 0, 0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
ESP_LOGE(TAG, "L'objet recuip en semble pas etre du bon type");
|
|
||||||
}
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
//int32_t prev_v = lv_subject_get_previous_int(subject);
|
|
||||||
//int32_t cur_v = lv_subject_get_int(subject);
|
|
||||||
|
|
||||||
//lv_obj_t * btn = lv_observer_get_target(observer);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void log_error_if_nonzero(const char *message, int error_code)
|
static void log_error_if_nonzero(const char *message, int error_code)
|
||||||
{
|
{
|
||||||
@ -98,6 +42,8 @@ void splitIt(char *payload, unsigned int length, float *datas)
|
|||||||
ESP_LOGE(TAG,"%f",datas[3]);
|
ESP_LOGE(TAG,"%f",datas[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mqtt_callback mqttcb;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief Event handler registered to receive MQTT events
|
* @brief Event handler registered to receive MQTT events
|
||||||
*
|
*
|
||||||
@ -117,11 +63,7 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
|
|||||||
switch ((esp_mqtt_event_id_t)event_id)
|
switch ((esp_mqtt_event_id_t)event_id)
|
||||||
{
|
{
|
||||||
case MQTT_EVENT_CONNECTED:
|
case MQTT_EVENT_CONNECTED:
|
||||||
if(lvgl_port_lock(50)){
|
mqttcb(MQTT_CONNECTED,NULL);
|
||||||
ESP_LOGV(TAG,"Statut mqttStatus 1");
|
|
||||||
lv_subject_set_int(&mqttStatus,1);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
|
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
|
||||||
//msg_id = esp_mqtt_client_publish(client, "/topic/qos1", "data_3", 0, 1, 0);
|
//msg_id = esp_mqtt_client_publish(client, "/topic/qos1", "data_3", 0, 1, 0);
|
||||||
//ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
|
//ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
|
||||||
@ -144,6 +86,15 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
|
|||||||
msg_id = esp_mqtt_client_subscribe(client, topicdomoticCommand, 0);
|
msg_id = esp_mqtt_client_subscribe(client, topicdomoticCommand, 0);
|
||||||
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
||||||
|
|
||||||
|
msg_id = esp_mqtt_client_subscribe(client, topicdomoticCommand, 0);
|
||||||
|
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
||||||
|
|
||||||
|
msg_id = esp_mqtt_client_subscribe(client, topicEtatMachine, 0);
|
||||||
|
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
||||||
|
|
||||||
|
msg_id = esp_mqtt_client_subscribe(client, topicConsoElec, 0);
|
||||||
|
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
||||||
|
|
||||||
//msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1);
|
//msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1);
|
||||||
//ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
//ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
|
||||||
|
|
||||||
@ -151,11 +102,7 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
|
|||||||
//ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id);
|
//ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id);
|
||||||
break;
|
break;
|
||||||
case MQTT_EVENT_DISCONNECTED:
|
case MQTT_EVENT_DISCONNECTED:
|
||||||
if(lvgl_port_lock(50)){
|
mqttcb(MQTT_DISCONNECTED,NULL);
|
||||||
ESP_LOGE(TAG,"Statut mqttStatus 0");
|
|
||||||
lv_subject_set_int(&mqttStatus,0);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
|
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -171,72 +118,7 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
|
|||||||
ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
|
ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
|
||||||
break;
|
break;
|
||||||
case MQTT_EVENT_DATA:
|
case MQTT_EVENT_DATA:
|
||||||
lv_subject_set_int(&mqttStatus,2);
|
mqttcb(MQTT_DATA_RECEIVED, event);
|
||||||
ESP_LOGD(TAG, "\nMQTT_EVENT_DATA");
|
|
||||||
ESP_LOGD(TAG, "TOPIC=%.*s\n", event->topic_len, event->topic);
|
|
||||||
ESP_LOGD(TAG, "DATA=%.*s\n", event->data_len, event->data);
|
|
||||||
if (strncmp(event->topic, topicTempExt, 27) == 0)
|
|
||||||
{
|
|
||||||
if(lvgl_port_lock(50)){
|
|
||||||
// on retransforme en float pour ne garder que la partie entiere de la température
|
|
||||||
float temp = strtof(event->data, NULL);
|
|
||||||
char buff[5];
|
|
||||||
sprintf(buff,"%.1f",temp);
|
|
||||||
lv_subject_copy_string(&tempExtSubj, buff);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strncmp(event->topic, topicTempInt, 27) == 0)
|
|
||||||
{
|
|
||||||
if(lvgl_port_lock(0)){
|
|
||||||
// on retransforme en float pour ne garder que la partie entiere de la température
|
|
||||||
float temp = strtof(event->data, NULL);
|
|
||||||
char buff[5];
|
|
||||||
sprintf(buff,"%.1f",temp);
|
|
||||||
lv_subject_copy_string(&tempIntSubj, buff);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (strncmp(event->topic, topicHauteurCuveEvol, 22) == 0)
|
|
||||||
{
|
|
||||||
/* float datas[4] = {};
|
|
||||||
splitIt(event->data, event->data_len, datas);
|
|
||||||
ser1->y_points[0] = 130 - (int)datas[0];
|
|
||||||
ser1->y_points[1] = 130 - (int)datas[1];
|
|
||||||
ser1->y_points[2] = 130 - (int)datas[2];
|
|
||||||
ser1->y_points[3] = 130 - (int)datas[3];
|
|
||||||
lvgl_port_lock(0);
|
|
||||||
lv_chart_refresh(chart);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
*/
|
|
||||||
|
|
||||||
// lv_subject_copy_string(&hauteurCuveEvolSubj, event->data);
|
|
||||||
}
|
|
||||||
else if (strncmp(event->topic, topicHauteurCuve, 18) == 0)
|
|
||||||
{
|
|
||||||
if (lvgl_port_lock(50)){
|
|
||||||
float temp = strtof(event->data, NULL);
|
|
||||||
char buff[5];
|
|
||||||
sprintf(buff,"%.0f",temp);
|
|
||||||
lv_subject_copy_string(&hauteurCuveSubj, buff);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
}else if (strncmp(event->topic, topicTest, 4) == 0){
|
|
||||||
ESP_LOGD(TAG,"Msg reecu sur test");
|
|
||||||
}else if (strncmp(event->topic, topicdomoticCommand, 11) == 0){
|
|
||||||
if(strncmp(event->data,"restart",7)==0){
|
|
||||||
ESP_LOGI(TAG," Commande 'restart' recue");
|
|
||||||
esp_restart();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ESP_LOGE(TAG, "None match :-( %s", event->topic);
|
|
||||||
}
|
|
||||||
if (lvgl_port_lock(50)){
|
|
||||||
lv_subject_set_int(&mqttStatus,3);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case MQTT_EVENT_ERROR:
|
case MQTT_EVENT_ERROR:
|
||||||
ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
|
ESP_LOGI(TAG, "MQTT_EVENT_ERROR");
|
||||||
@ -253,13 +135,11 @@ static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void mqtt_app_start(void)
|
void mqtt_app_start(mqtt_callback callback, EventGroupHandle_t domotic_event_group)
|
||||||
{
|
{
|
||||||
|
|
||||||
lv_subject_init_int(&mqttStatus,-1);
|
|
||||||
lv_subject_add_observer_obj(&mqttStatus, mqttStatus_obs_cb, NULL, NULL);
|
|
||||||
|
|
||||||
|
|
||||||
|
mqttcb=callback;
|
||||||
esp_mqtt_client_config_t mqtt_cfg = {
|
esp_mqtt_client_config_t mqtt_cfg = {
|
||||||
.broker.address.uri = "mqtt://192.168.0.10",
|
.broker.address.uri = "mqtt://192.168.0.10",
|
||||||
.network.timeout_ms = 1000};
|
.network.timeout_ms = 1000};
|
||||||
@ -298,12 +178,19 @@ void mqtt_app_start(void)
|
|||||||
client = esp_mqtt_client_init(&mqtt_cfg);
|
client = esp_mqtt_client_init(&mqtt_cfg);
|
||||||
/* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */
|
/* The last argument may be used to pass data to the event handler, in this example mqtt_event_handler */
|
||||||
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
|
esp_mqtt_client_register_event(client, ESP_EVENT_ANY_ID, mqtt_event_handler, NULL);
|
||||||
|
// Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
|
||||||
|
// number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above)
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(domotic_event_group,
|
||||||
|
BIT0,
|
||||||
|
pdFALSE,
|
||||||
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
if (bits & BIT0)
|
||||||
|
{
|
||||||
esp_mqtt_client_start(client);
|
esp_mqtt_client_start(client);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "esp_wifi.h"
|
|
||||||
#include "esp_log.h"
|
|
||||||
#include "esp_lvgl_port.h"
|
|
||||||
|
|
||||||
/* FreeRTOS event group to signal when we are connected*/
|
/* FreeRTOS event group to signal when we are connected*/
|
||||||
static EventGroupHandle_t s_wifi_event_group;
|
static EventGroupHandle_t s_wifi_event_group;
|
||||||
@ -319,7 +206,6 @@ static EventGroupHandle_t s_wifi_event_group;
|
|||||||
#define EXAMPLE_ESP_MAXIMUM_RETRY 5
|
#define EXAMPLE_ESP_MAXIMUM_RETRY 5
|
||||||
|
|
||||||
#define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_BOTH
|
#define ESP_WIFI_SAE_MODE WPA3_SAE_PWE_BOTH
|
||||||
#define EXAMPLE_H2E_IDENTIFIER CONFIG_ESP_WIFI_PW_ID
|
|
||||||
#define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_PSK
|
#define ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD WIFI_AUTH_WPA2_PSK
|
||||||
|
|
||||||
static int s_retry_num = 0;
|
static int s_retry_num = 0;
|
||||||
@ -342,9 +228,9 @@ static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t e
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
//xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
|
||||||
}
|
}
|
||||||
cb(DISCONNECTED);
|
cb(WIFI_DISCONNECTED);
|
||||||
ESP_LOGI(TAG, "connect to the AP fail");
|
ESP_LOGI(TAG, "connect to the AP fail");
|
||||||
}
|
}
|
||||||
else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
|
else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
|
||||||
@ -352,7 +238,8 @@ static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t e
|
|||||||
ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
|
ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data;
|
||||||
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
|
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
|
||||||
s_retry_num = 0;
|
s_retry_num = 0;
|
||||||
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
cb(WIFI_CONNECTED);
|
||||||
|
//xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void wifi_init_sta(wifi_callback callback)
|
void wifi_init_sta(wifi_callback callback)
|
||||||
@ -392,7 +279,7 @@ void wifi_init_sta(wifi_callback callback)
|
|||||||
*/
|
*/
|
||||||
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
|
.threshold.authmode = ESP_WIFI_SCAN_AUTH_MODE_THRESHOLD,
|
||||||
.sae_pwe_h2e = ESP_WIFI_SAE_MODE,
|
.sae_pwe_h2e = ESP_WIFI_SAE_MODE,
|
||||||
.sae_h2e_identifier = EXAMPLE_H2E_IDENTIFIER,
|
.sae_h2e_identifier = "",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
|
||||||
@ -1,7 +1,7 @@
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Size: 12 px
|
* Size: 12 px
|
||||||
* Bpp: 4
|
* Bpp: 4
|
||||||
* Opts: --bpp 4 --size 12 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°èéêûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz :-%, --format lvgl -o montserrat_medium_12.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
* Opts: --bpp 4 --size 12 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_12.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||||
@ -32,12 +32,22 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0x43, 0x90, 0x2a, 0x0, 0x49, 0x1, 0xb0, 0x47,
|
0x43, 0x90, 0x2a, 0x0, 0x49, 0x1, 0xb0, 0x47,
|
||||||
0x0, 0xc1, 0x0, 0x7b, 0xb1,
|
0x0, 0xc1, 0x0, 0x7b, 0xb1,
|
||||||
|
|
||||||
|
/* U+0027 "'" */
|
||||||
|
0x3c, 0x3b, 0x3b, 0x15,
|
||||||
|
|
||||||
|
/* U+0028 "(" */
|
||||||
|
0xa, 0x71, 0xf1, 0x5c, 0x9, 0x80, 0xb6, 0xc,
|
||||||
|
0x40, 0xd4, 0xc, 0x40, 0xb6, 0x9, 0x80, 0x5b,
|
||||||
|
0x1, 0xf1, 0xa, 0x70,
|
||||||
|
|
||||||
|
/* U+0029 ")" */
|
||||||
|
0x6b, 0x0, 0xf2, 0xb, 0x60, 0x7a, 0x5, 0xc0,
|
||||||
|
0x4d, 0x3, 0xe0, 0x4d, 0x5, 0xc0, 0x7a, 0xb,
|
||||||
|
0x60, 0xf1, 0x6b, 0x0,
|
||||||
|
|
||||||
/* U+002C "," */
|
/* U+002C "," */
|
||||||
0x18, 0x4, 0xf1, 0xd, 0x3, 0x80,
|
0x18, 0x4, 0xf1, 0xd, 0x3, 0x80,
|
||||||
|
|
||||||
/* U+002D "-" */
|
|
||||||
0x4f, 0xfd, 0x2, 0x22,
|
|
||||||
|
|
||||||
/* U+002E "." */
|
/* U+002E "." */
|
||||||
0x2a, 0x4, 0xd0,
|
0x2a, 0x4, 0xd0,
|
||||||
|
|
||||||
@ -471,13 +481,6 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0xc5, 0xd0, 0x0, 0x0, 0xe, 0x92, 0x3a, 0x20,
|
0xc5, 0xd0, 0x0, 0x0, 0xe, 0x92, 0x3a, 0x20,
|
||||||
0x2b, 0xfe, 0x90,
|
0x2b, 0xfe, 0x90,
|
||||||
|
|
||||||
/* U+00EA "ê" */
|
|
||||||
0x0, 0x4f, 0xa0, 0x0, 0x2c, 0x29, 0x60, 0x0,
|
|
||||||
0x0, 0x0, 0x0, 0x2b, 0xfd, 0x50, 0xe, 0x81,
|
|
||||||
0x4e, 0x45, 0xc0, 0x0, 0x6b, 0x7f, 0xee, 0xee,
|
|
||||||
0xc5, 0xd0, 0x0, 0x0, 0xe, 0x92, 0x3a, 0x20,
|
|
||||||
0x2b, 0xfe, 0x90,
|
|
||||||
|
|
||||||
/* U+00FB "û" */
|
/* U+00FB "û" */
|
||||||
0x1, 0xdd, 0x10, 0x0, 0xa5, 0x4b, 0x0, 0x0,
|
0x1, 0xdd, 0x10, 0x0, 0xa5, 0x4b, 0x0, 0x0,
|
||||||
0x0, 0x0, 0xf, 0x30, 0x2, 0xf0, 0xf3, 0x0,
|
0x0, 0x0, 0xf, 0x30, 0x2, 0xf0, 0xf3, 0x0,
|
||||||
@ -535,116 +538,116 @@ 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 = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||||
{.bitmap_index = 0, .adv_w = 52, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 52, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 0, .adv_w = 162, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 162, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 45, .adv_w = 44, .box_w = 3, .box_h = 4, .ofs_x = 0, .ofs_y = -2},
|
{.bitmap_index = 45, .adv_w = 40, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = 5},
|
||||||
{.bitmap_index = 51, .adv_w = 74, .box_w = 4, .box_h = 2, .ofs_x = 0, .ofs_y = 2},
|
{.bitmap_index = 49, .adv_w = 65, .box_w = 3, .box_h = 13, .ofs_x = 1, .ofs_y = -3},
|
||||||
{.bitmap_index = 55, .adv_w = 44, .box_w = 3, .box_h = 2, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 69, .adv_w = 65, .box_w = 3, .box_h = 13, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 58, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 89, .adv_w = 44, .box_w = 3, .box_h = 4, .ofs_x = 0, .ofs_y = -2},
|
||||||
{.bitmap_index = 94, .adv_w = 71, .box_w = 4, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 95, .adv_w = 44, .box_w = 3, .box_h = 2, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 112, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 98, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 144, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 134, .adv_w = 71, .box_w = 4, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 176, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 152, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 212, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 184, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 244, .adv_w = 118, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 216, .adv_w = 128, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 280, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 252, .adv_w = 110, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 312, .adv_w = 124, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 284, .adv_w = 118, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 348, .adv_w = 118, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 320, .adv_w = 115, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 380, .adv_w = 44, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 352, .adv_w = 124, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 391, .adv_w = 141, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 388, .adv_w = 118, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 436, .adv_w = 145, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 420, .adv_w = 44, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 472, .adv_w = 139, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 431, .adv_w = 141, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 513, .adv_w = 159, .box_w = 9, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 476, .adv_w = 145, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 554, .adv_w = 129, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 512, .adv_w = 139, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 586, .adv_w = 122, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 553, .adv_w = 159, .box_w = 9, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 618, .adv_w = 148, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 594, .adv_w = 129, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 659, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 626, .adv_w = 122, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 695, .adv_w = 60, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 658, .adv_w = 148, .box_w = 9, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 704, .adv_w = 98, .box_w = 6, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 699, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 731, .adv_w = 138, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 735, .adv_w = 60, .box_w = 2, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 767, .adv_w = 114, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 744, .adv_w = 98, .box_w = 6, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 799, .adv_w = 183, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 771, .adv_w = 138, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 844, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 807, .adv_w = 114, .box_w = 7, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 880, .adv_w = 161, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 839, .adv_w = 183, .box_w = 10, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 925, .adv_w = 139, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 884, .adv_w = 156, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 961, .adv_w = 161, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 920, .adv_w = 161, .box_w = 10, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1021, .adv_w = 140, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 965, .adv_w = 139, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1057, .adv_w = 119, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1001, .adv_w = 161, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 1089, .adv_w = 113, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1061, .adv_w = 140, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1121, .adv_w = 152, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1097, .adv_w = 119, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1157, .adv_w = 137, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 1129, .adv_w = 113, .box_w = 7, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1202, .adv_w = 216, .box_w = 14, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1161, .adv_w = 152, .box_w = 8, .box_h = 9, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1265, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1197, .adv_w = 137, .box_w = 10, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1301, .adv_w = 124, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 1242, .adv_w = 216, .box_w = 14, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1342, .adv_w = 126, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1305, .adv_w = 129, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1378, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1341, .adv_w = 124, .box_w = 9, .box_h = 9, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1403, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1382, .adv_w = 126, .box_w = 8, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1438, .adv_w = 110, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1418, .adv_w = 115, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1463, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1443, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1503, .adv_w = 118, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1478, .adv_w = 110, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1528, .adv_w = 68, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1503, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1553, .adv_w = 132, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 1543, .adv_w = 118, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1593, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1568, .adv_w = 68, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1628, .adv_w = 54, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1593, .adv_w = 132, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 1643, .adv_w = 55, .box_w = 5, .box_h = 13, .ofs_x = -2, .ofs_y = -3},
|
{.bitmap_index = 1633, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1676, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1668, .adv_w = 54, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1711, .adv_w = 54, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1683, .adv_w = 55, .box_w = 5, .box_h = 13, .ofs_x = -2, .ofs_y = -3},
|
||||||
{.bitmap_index = 1721, .adv_w = 203, .box_w = 11, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1716, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1760, .adv_w = 131, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1751, .adv_w = 54, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1785, .adv_w = 122, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1761, .adv_w = 203, .box_w = 11, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1813, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = -3},
|
{.bitmap_index = 1800, .adv_w = 131, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1848, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 1825, .adv_w = 122, .box_w = 8, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1888, .adv_w = 79, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1853, .adv_w = 131, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = -3},
|
||||||
{.bitmap_index = 1902, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1888, .adv_w = 131, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 1923, .adv_w = 79, .box_w = 5, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1928, .adv_w = 79, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1946, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1942, .adv_w = 96, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1971, .adv_w = 107, .box_w = 8, .box_h = 7, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 1963, .adv_w = 79, .box_w = 5, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1999, .adv_w = 173, .box_w = 11, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1986, .adv_w = 130, .box_w = 7, .box_h = 7, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2038, .adv_w = 106, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2011, .adv_w = 107, .box_w = 8, .box_h = 7, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2063, .adv_w = 107, .box_w = 8, .box_h = 10, .ofs_x = -1, .ofs_y = -3},
|
{.bitmap_index = 2039, .adv_w = 173, .box_w = 11, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2103, .adv_w = 100, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2078, .adv_w = 106, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2124, .adv_w = 80, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 5},
|
{.bitmap_index = 2103, .adv_w = 107, .box_w = 8, .box_h = 10, .ofs_x = -1, .ofs_y = -3},
|
||||||
{.bitmap_index = 2137, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2143, .adv_w = 100, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2172, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2164, .adv_w = 80, .box_w = 5, .box_h = 5, .ofs_x = 0, .ofs_y = 5},
|
||||||
{.bitmap_index = 2207, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2177, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2242, .adv_w = 130, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2212, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2277, .adv_w = 216, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = -2},
|
{.bitmap_index = 2247, .adv_w = 130, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2375, .adv_w = 240, .box_w = 15, .box_h = 11, .ofs_x = 0, .ofs_y = -1},
|
{.bitmap_index = 2282, .adv_w = 216, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = -2},
|
||||||
{.bitmap_index = 2458, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = -2}
|
{.bitmap_index = 2380, .adv_w = 240, .box_w = 15, .box_h = 11, .ofs_x = 0, .ofs_y = -1},
|
||||||
|
{.bitmap_index = 2463, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = -2}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*---------------------
|
/*---------------------
|
||||||
* CHARACTER MAPPING
|
* CHARACTER MAPPING
|
||||||
*--------------------*/
|
*--------------------*/
|
||||||
|
|
||||||
static const uint16_t unicode_list_0[] = {
|
static const uint8_t glyph_id_ofs_list_0[] = {
|
||||||
0x0, 0x5, 0xc, 0xd, 0xe
|
0, 0, 0, 0, 0, 1, 0, 2,
|
||||||
|
3, 4, 0, 0, 5, 0, 6, 0,
|
||||||
|
7, 8, 9, 10, 11, 12, 13, 14,
|
||||||
|
15, 16, 17
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t unicode_list_4[] = {
|
static const uint16_t unicode_list_3[] = {
|
||||||
0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5
|
0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Collect the unicode lists and glyph_id offsets*/
|
/*Collect the unicode lists and glyph_id offsets*/
|
||||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
.range_start = 32, .range_length = 27, .glyph_id_start = 1,
|
||||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 5, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 48, .range_length = 11, .glyph_id_start = 6,
|
.range_start = 65, .range_length = 26, .glyph_id_start = 19,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 65, .range_length = 26, .glyph_id_start = 17,
|
.range_start = 97, .range_length = 26, .glyph_id_start = 45,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 97, .range_length = 26, .glyph_id_start = 43,
|
.range_start = 176, .range_length = 62662, .glyph_id_start = 71,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||||
},
|
|
||||||
{
|
|
||||||
.range_start = 176, .range_length = 62662, .glyph_id_start = 69,
|
|
||||||
.unicode_list = unicode_list_4, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -656,254 +659,275 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||||||
/*Map glyph_ids to kern left classes*/
|
/*Map glyph_ids to kern left classes*/
|
||||||
static const uint8_t kern_left_class_mapping[] =
|
static const uint8_t kern_left_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 0,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
5, 6, 7, 8, 9, 10, 11, 4,
|
6, 0, 7, 8, 9, 10, 11, 12,
|
||||||
12, 13, 14, 15, 16, 17, 18, 19,
|
13, 6, 14, 15, 16, 17, 18, 19,
|
||||||
20, 20, 21, 22, 23, 20, 20, 16,
|
20, 21, 22, 22, 23, 24, 25, 22,
|
||||||
24, 16, 25, 26, 27, 21, 28, 28,
|
22, 18, 26, 18, 27, 28, 29, 23,
|
||||||
29, 30, 31, 32, 33, 34, 35, 36,
|
30, 30, 31, 32, 33, 34, 35, 36,
|
||||||
37, 38, 32, 38, 38, 39, 35, 32,
|
37, 38, 39, 40, 34, 40, 40, 41,
|
||||||
32, 33, 33, 40, 41, 42, 43, 38,
|
37, 34, 34, 35, 35, 42, 43, 44,
|
||||||
44, 44, 45, 44, 46, 47, 36, 36,
|
45, 40, 46, 46, 47, 46, 48, 49,
|
||||||
36, 38, 0, 0, 0
|
38, 38, 40, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Map glyph_ids to kern right classes*/
|
/*Map glyph_ids to kern right classes*/
|
||||||
static const uint8_t kern_right_class_mapping[] =
|
static const uint8_t kern_right_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 5,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
6, 7, 8, 9, 4, 10, 11, 12,
|
6, 7, 8, 9, 10, 11, 6, 12,
|
||||||
13, 14, 15, 16, 15, 15, 15, 16,
|
13, 14, 15, 16, 17, 18, 17, 17,
|
||||||
15, 15, 17, 15, 15, 15, 15, 16,
|
17, 18, 17, 17, 19, 17, 17, 17,
|
||||||
15, 16, 15, 18, 19, 20, 21, 21,
|
17, 18, 17, 18, 17, 20, 21, 22,
|
||||||
22, 23, 24, 25, 26, 27, 27, 27,
|
23, 23, 24, 25, 26, 27, 28, 29,
|
||||||
0, 27, 26, 28, 29, 26, 26, 30,
|
29, 29, 0, 29, 28, 30, 31, 28,
|
||||||
30, 27, 30, 27, 30, 31, 32, 33,
|
28, 32, 32, 29, 32, 29, 32, 33,
|
||||||
34, 34, 35, 34, 36, 37, 27, 27,
|
34, 35, 36, 36, 37, 36, 38, 39,
|
||||||
27, 33, 0, 0, 0
|
29, 29, 35, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Kern values between classes*/
|
/*Kern values between classes*/
|
||||||
static const int8_t kern_class_values[] =
|
static const int8_t kern_class_values[] =
|
||||||
{
|
{
|
||||||
-23, 6, 4, 0, -4, 2, 2, 6,
|
-23, -5, 0, -4, 6, 0, -4, 2,
|
||||||
4, -3, 4, 0, 0, 0, 0, 0,
|
2, 6, 4, -3, 4, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -5, -12, 0, -1,
|
0, 0, 0, 0, 0, 0, -5, 5,
|
||||||
-2, -2, 2, 2, -2, 0, -2, 2,
|
9, 0, 0, -11, 1, 9, 4, 3,
|
||||||
|
-8, 1, 9, 1, 8, 2, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 4, 0, 0,
|
||||||
|
0, 0, 0, 0, 2, 0, 0, -4,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -12, -7, -1, 1, 1, -3, -2,
|
|
||||||
-4, 1, 0, -2, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-2, 1, 0, -1, -1, -2, 0, 0,
|
0, -7, 0, 0, 0, 0, 0, 0,
|
||||||
-1, 0, 0, 0, -2, 0, 0, -4,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -4, 0, -5, -6, -6, -4, 0,
|
0, 0, 0, 0, -12, -11, 0, 0,
|
||||||
0, 0, 0, -2, 0, 0, 2, 0,
|
0, -2, -2, 2, 2, -2, 0, -2,
|
||||||
1, -2, 0, 1, 2, 2, -1, -1,
|
2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -12, 0, 1, 0, 0, -2,
|
||||||
|
0, -1, -1, -2, 0, 0, -1, 0,
|
||||||
|
0, 0, -2, 0, 0, -4, 0, -4,
|
||||||
|
0, -5, -6, -6, -4, 0, 0, 0,
|
||||||
|
0, -2, 0, 0, 2, 0, 1, -2,
|
||||||
|
0, 1, 2, 0, 0, 0, 2, -1,
|
||||||
0, 0, 0, -4, 0, -1, 0, 0,
|
0, 0, 0, -4, 0, -1, 0, 0,
|
||||||
0, 1, 0, 0, 2, 0, -1, 0,
|
0, 1, 0, 0, 2, 0, -1, 0,
|
||||||
-2, 0, -3, 0, 0, 0, -2, 0,
|
-2, 0, -3, 0, 0, 0, -2, 0,
|
||||||
0, 0, 0, 0, -1, 1, -1, -1,
|
0, 0, 0, 0, -1, 1, -1, -1,
|
||||||
0, -2, 0, 0, 0, 0, -1, -1,
|
0, -2, -2, 0, 0, 0, 0, 0,
|
||||||
0, -2, -2, 0, 0, 0, 1, 0,
|
-1, -1, 0, -2, -2, 0, 0, 0,
|
||||||
0, 0, 0, -1, 0, -2, -2, -2,
|
1, 0, 0, 0, 0, -1, 0, -2,
|
||||||
0, 0, 0, 0, 0, -1, 0, 0,
|
-2, -2, 0, 0, 0, 0, 0, -1,
|
||||||
0, 0, -1, -2, 0, -3, -6, 4,
|
0, 0, 0, 0, -1, -2, 0, -3,
|
||||||
2, 0, -5, -1, -2, 0, -1, -9,
|
-6, -6, 0, 0, 4, 0, -5, -1,
|
||||||
2, -1, 1, 0, 0, 2, 1, -1,
|
-2, 0, -1, -9, 2, -1, 1, 0,
|
||||||
-10, 0, -10, -2, -17, -1, 5, 0,
|
0, 2, 1, -1, -10, 0, -10, -2,
|
||||||
2, 0, 0, 0, 0, 0, 0, -3,
|
-17, -1, 5, 0, 2, 0, 0, 0,
|
||||||
-2, 0, -6, -2, 0, 0, 0, 0,
|
0, 0, 0, -3, -2, 0, -6, -2,
|
||||||
-1, -1, 0, -1, -2, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -1, -1,
|
||||||
0, 0, 0, -2, 0, -2, 0, -1,
|
0, -1, -2, 0, 0, 0, 0, 0,
|
||||||
-2, -2, 0, 0, 0, 0, 0, 0,
|
0, -2, 0, -2, 0, -1, -2, -2,
|
||||||
0, 0, 0, 0, -2, -2, 0, -2,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-4, 2, 1, 0, 0, 0, 0, 0,
|
0, 0, -2, -2, 0, -2, -4, -1,
|
||||||
|
0, 0, 2, 0, 0, 0, 0, 0,
|
||||||
0, -1, 0, 0, 0, 1, 0, 0,
|
0, -1, 0, 0, 0, 1, 0, 0,
|
||||||
0, 0, -2, 0, -2, -1, -2, 0,
|
0, 0, -2, 0, -2, -1, -2, 0,
|
||||||
0, 0, 2, 0, -2, 0, 0, 0,
|
0, 0, 2, 0, -2, 0, 0, 0,
|
||||||
0, -2, -3, 0, -4, 1, -10, -10,
|
0, -2, -3, 0, -4, 1, 6, 0,
|
||||||
-4, 2, 0, -2, -12, -3, 0, -3,
|
0, -10, -4, 2, 0, -2, -12, -3,
|
||||||
0, -4, -12, 0, -3, -5, -1, 0,
|
0, -3, 0, -4, -12, 0, -3, -5,
|
||||||
0, 1, -1, 2, -1, -7, 0, -10,
|
-1, 0, 0, 1, -1, 2, -1, -7,
|
||||||
-5, -4, -5, -6, -2, -5, 0, -4,
|
0, -10, -5, -4, -5, -6, -2, -5,
|
||||||
-5, 1, -2, 2, 0, 0, 0, 0,
|
0, -4, -5, 1, -2, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, -1,
|
2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, -1, 0, -2, 0, -3, -4,
|
0, 0, 0, -1, 0, 0, -1, 0,
|
||||||
-4, -1, 0, 0, 0, 0, -2, 0,
|
-2, 0, -3, -4, -4, -1, 0, 0,
|
||||||
0, 0, 0, 1, -1, 0, 0, 0,
|
0, 0, -2, 0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
-1, 0, 0, 0, 2, 0, 0, 0,
|
||||||
1, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 1, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 6, -3, -2,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, -8, 0, 0, 6, -2,
|
||||||
-8, 0, 2, -3, 0, -10, -1, -2,
|
-8, 0, 2, -3, 0, -10, -1, -2,
|
||||||
2, 2, 0, -2, 3, 0, -7, -3,
|
2, 2, 0, -2, 3, 0, -7, -3,
|
||||||
-7, -6, -8, 0, 0, 0, -1, 0,
|
-7, -6, -8, 0, 0, 0, -1, 0,
|
||||||
0, 0, -1, -1, -2, -5, -6, 0,
|
0, 0, -1, -1, -2, -5, -6, 0,
|
||||||
-18, 0, 1, 0, 0, 0, 0, 0,
|
-18, 0, 0, 0, 0, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -2, 0, -1, -2, -3,
|
0, 0, 0, 0, 0, -2, 0, -1,
|
||||||
|
-2, -3, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 2,
|
0, 0, 0, 0, 2, -4, 2, -1,
|
||||||
-1, -4, 2, -1, -1, -5, -2, 0,
|
-1, -5, -2, 0, -2, -2, -1, -3,
|
||||||
-2, -2, -1, -3, 0, -3, 0, -1,
|
0, -3, 0, -1, -2, -1, -1, -3,
|
||||||
-2, -1, -1, -3, -2, 0, -1, 0,
|
-2, 0, -1, 0, -4, 0, 0, 0,
|
||||||
-4, 0, 0, 0, -4, 0, -3, 0,
|
-4, 0, -3, 0, -3, -3, 2, 0,
|
||||||
-3, -3, 2, 0, -4, 1, 0, -2,
|
-3, 0, 2, -4, 0, -2, -2, -2,
|
||||||
-2, -2, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -2, 0,
|
||||||
-2, 0, 0, -3, 0, -2, 0, -4,
|
0, -3, 0, -2, 0, -4, -5, -6,
|
||||||
-5, -6, -2, 0, 0, 0, 0, 15,
|
-2, 0, 0, 0, 0, 15, 0, 0,
|
||||||
0, 0, 1, 0, 0, -2, 0, 2,
|
1, 0, 0, -2, 0, 2, 0, 0,
|
||||||
0, 2, -4, -3, 0, -1, -2, -6,
|
0, 0, 2, -3, 0, -1, -2, -6,
|
||||||
-1, -1, -1, -1, -1, 0, 0, -1,
|
-1, -1, -1, -1, -1, 0, 0, -1,
|
||||||
0, 0, 0, 0, -2, -2, -2, 0,
|
0, 0, 0, 0, -2, -2, -2, 0,
|
||||||
-1, 0, -1, 0, 0, 0, -1, -2,
|
-1, 0, -1, 0, 0, 0, -1, -2,
|
||||||
-1, -2, -2, -2, 0, 0, -2, 0,
|
-1, -2, -2, -2, 0, 0, 8, 0,
|
||||||
-2, 3, 0, 0, -9, -3, 2, -3,
|
-1, -2, -2, 3, 0, 0, -9, -3,
|
||||||
1, 0, -6, 0, -2, -3, -1, 1,
|
2, -3, 1, 0, -6, 0, -2, -3,
|
||||||
0, 0, -3, 0, 0, -4, 0, -3,
|
-1, 1, 0, 0, -3, 0, 0, -4,
|
||||||
-2, -3, -2, -2, 0, -3, 1, -4,
|
0, -3, -2, -3, -2, -2, 0, -3,
|
||||||
-3, 6, 0, 2, 0, 0, 0, 0,
|
1, -4, -3, 6, 0, 0, 0, 0,
|
||||||
|
2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -1, 0, 0, 0, 0,
|
0, -1, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, -2, 0, 0,
|
0, 0, 0, 0, 0, 0, -2, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -3, 0, 0, 0, 0, -2, 0,
|
0, -3, 0, 0, 0, 0, -2, 0,
|
||||||
0, -2, -2, 0, 0, 0, 0, 0,
|
0, -2, -2, 0, 0, 0, 0, 0,
|
||||||
-1, 0, 0, 0, 0, 0, -1, 0,
|
-1, 0, 0, 0, 0, 0, -1, 0,
|
||||||
0, 0, 0, -6, -4, 4, 0, -1,
|
0, 0, 0, 0, 0, 0, -4, 4,
|
||||||
-9, 0, 0, -4, -2, 0, -5, 0,
|
0, -1, -9, 0, 0, -4, -2, 0,
|
||||||
-5, 0, -3, -8, -2, -8, -7, -9,
|
-5, 0, -5, 0, -3, -8, -2, -8,
|
||||||
0, -2, 0, -4, -2, -1, -2, -3,
|
-7, -9, 0, -2, 0, -4, -2, -1,
|
||||||
-5, -3, -7, -8, -4, -2, 0, 6,
|
-2, -3, -5, -3, -7, -8, -4, -2,
|
||||||
-2, -4, -7, 0, 1, -6, 0, -10,
|
0, 0, 0, 0, 6, -4, -7, 0,
|
||||||
-1, -2, 4, 1, 0, -2, 0, -1,
|
1, -6, 0, -10, -1, -2, 4, 1,
|
||||||
-12, -2, -10, -2, -14, 0, 1, 0,
|
0, -2, 0, -1, -12, -2, -10, -2,
|
||||||
-1, 0, 0, 0, 0, -1, -1, -7,
|
-14, 0, 1, 0, -1, 0, 0, 0,
|
||||||
-1, 0, -12, 0, -5, -1, 0, 0,
|
0, -1, -1, -7, -1, 0, -12, 0,
|
||||||
-1, -3, -6, -2, 0, -1, 0, 0,
|
0, 0, -2, -5, 0, 0, -1, -3,
|
||||||
-9, -2, 0, -6, 0, -6, -2, -3,
|
-6, -2, 0, -1, 0, 0, -9, -2,
|
||||||
-5, -2, -3, -3, 0, -2, -4, -2,
|
0, -6, 0, -6, -2, -3, -5, -2,
|
||||||
-4, 0, 1, 0, -1, -6, 0, 4,
|
-3, -3, 0, -2, -4, -2, -4, 0,
|
||||||
|
1, 0, -1, -6, 0, 4, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -1, -4,
|
0, 0, 0, 0, 0, 0, -1, -4,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-2, 0, -2, 0, 0, -4, -2, 0,
|
-2, 0, -2, 0, 0, -4, -2, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 1,
|
-1, 0, 0, 0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 3, 0, 4, 3,
|
0, 0, 0, 0, 3, 0, -6, 0,
|
||||||
0, -2, 0, -1, 2, 0, -2, 0,
|
0, 4, 0, -2, 0, -1, 2, 0,
|
||||||
-2, -1, 0, 0, 0, 0, 0, -2,
|
-2, 0, -2, -1, 0, 0, 0, 0,
|
||||||
0, 0, -2, -3, 0, 0, 0, 0,
|
0, -2, 0, 0, -2, -3, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -2, -2,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -3, 0, -6, -6, -4, 8, 3,
|
-2, -2, 0, -3, 0, 2, -3, 0,
|
||||||
2, -17, -1, 4, -2, 0, -2, -7,
|
-6, -4, 8, 3, 2, -17, -1, 4,
|
||||||
0, -2, -2, -2, 2, -2, -2, -6,
|
-2, 0, -2, -7, 0, -2, -2, -2,
|
||||||
-2, 0, -5, 0, -11, -2, 6, -2,
|
2, -2, -2, -6, -2, 0, -5, 0,
|
||||||
-7, 1, -2, -6, -6, -2, 8, 0,
|
-11, -2, 6, -2, -7, 1, -2, -6,
|
||||||
-7, -4, -5, 6, 0, 1, -14, -2,
|
-6, -2, 8, 0, 0, 0, 2, -7,
|
||||||
2, -3, -1, -4, -7, -3, -4, -3,
|
-5, 6, 0, 1, -14, -2, 2, -3,
|
||||||
-3, -2, 0, 0, -4, -4, -2, -11,
|
-1, -4, -7, -3, -4, -3, -3, -2,
|
||||||
0, -11, -3, 0, -7, -11, -1, -6,
|
0, 0, -4, -4, -2, -11, 0, -11,
|
||||||
-3, -6, -5, 5, 0, 0, -3, -6,
|
-3, 0, -7, -11, -1, -6, -3, -6,
|
||||||
|
-5, 5, 0, 0, -2, 0, 0, -6,
|
||||||
2, 0, 0, -10, 0, -2, -4, -3,
|
2, 0, 0, -10, 0, -2, -4, -3,
|
||||||
-1, -6, -4, -5, 0, -2, -6, -2,
|
-1, -6, -4, -5, 0, -2, -6, -2,
|
||||||
-4, -4, -6, -2, -3, 0, -6, -2,
|
-4, -4, -6, -2, -3, 0, -6, -2,
|
||||||
0, -2, -4, -4, -5, -5, -7, -2,
|
0, -2, -4, -4, -5, -5, -7, -2,
|
||||||
-4, 0, -7, -6, -6, 6, -2, 1,
|
-4, 0, 0, -2, 1, -7, -6, 6,
|
||||||
-18, -3, 4, -4, -3, -7, -8, -2,
|
-2, 1, -18, -3, 4, -4, -3, -7,
|
||||||
-6, -2, -3, -2, -2, -4, -6, -1,
|
-8, -2, -6, -2, -3, -2, -2, -4,
|
||||||
0, -12, 0, -12, -4, 5, -7, -13,
|
-6, -1, 0, -12, 0, -12, -4, 5,
|
||||||
-4, -7, -8, -10, -6, 4, 0, 4,
|
-7, -13, -4, -7, -8, -10, -6, 4,
|
||||||
-2, -4, 4, 0, 0, -6, -1, 0,
|
0, 0, 0, 0, 4, -4, 4, 0,
|
||||||
-1, 0, 1, 0, 0, -2, 0, 0,
|
0, -6, -1, 0, -1, 0, 1, 0,
|
||||||
0, 0, 0, -2, 0, 0, 0, 0,
|
0, -2, 0, 0, 0, 0, 0, -2,
|
||||||
-2, 0, 0, 0, 0, -1, -1, -2,
|
0, 0, 0, 0, -2, 0, 0, 0,
|
||||||
0, 0, 0, -5, 0, 0, 0, -4,
|
0, -1, -1, -2, 0, 0, 0, -5,
|
||||||
-1, 0, 0, 0, -4, 0, -2, 0,
|
0, 0, 0, 0, 0, -4, -1, 0,
|
||||||
|
0, 0, -4, 0, -2, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 1, 0, 0,
|
0, 0, 0, 1, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -2, 0, 0, -4,
|
0, 0, -2, 0, 0, -4, -5, -3,
|
||||||
-5, -2, 2, 0, -5, -2, -4, 0,
|
0, 0, -2, 0, -5, -2, -4, 0,
|
||||||
0, -5, 0, -2, 0, -2, 0, 0,
|
0, -5, 0, -2, 0, -2, 0, 0,
|
||||||
0, 0, -16, -4, -8, -2, -7, 0,
|
0, 0, -16, -4, -8, -2, -7, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 0,
|
-1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -3, -3, -2, -3, 0, 4, -2,
|
0, -3, -3, -2, -3, 0, 0, 0,
|
||||||
-1, -4, -1, -3, -4, 0, -2, -1,
|
-4, 4, -1, -4, -1, -3, -4, 0,
|
||||||
-1, 1, 0, 0, -1, 0, 0, -17,
|
-2, -1, -1, 1, 0, 0, -1, 0,
|
||||||
-2, -3, 0, -4, 0, 0, -1, -2,
|
0, -17, -2, -3, 0, -4, 0, 0,
|
||||||
0, 0, 0, 0, 1, 0, -1, -3,
|
-1, -2, 0, 0, 0, 0, 1, 0,
|
||||||
-1, 3, 0, 0, 0, 0, 0, 0,
|
-1, -3, -1, 3, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 2, 0, 0, 0, 0, 0, -1,
|
0, 0, 0, 0, 0, 2, 0, 0,
|
||||||
0, 2, 0, -5, -2, -4, 0, 0,
|
0, 0, 0, -1, -4, 0, 0, 0,
|
||||||
-5, 0, -2, 0, 0, 0, 0, 0,
|
0, -5, -2, -4, 0, 0, -5, 0,
|
||||||
0, -19, 0, -4, -7, -10, 0, -3,
|
-2, 0, 0, 0, 0, 0, 0, -19,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, -4, -7, -10, 0, -3, 0, 0,
|
||||||
-2, -3, -1, -3, 3, -2, -2, 2,
|
0, 0, 0, 0, 0, 0, -2, -3,
|
||||||
|
-1, -3, 3, 0, 0, 6, -2, 2,
|
||||||
9, 3, 4, -5, 2, 8, 2, 6,
|
9, 3, 4, -5, 2, 8, 2, 6,
|
||||||
4, 0, 0, 0, 0, 0, 0, 0,
|
4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -2, 0, -2, 15,
|
0, 0, 0, 0, -2, 0, -2, 15,
|
||||||
8, 15, 0, 0, 0, 2, 0, 0,
|
8, 15, 0, 0, 0, 2, 0, 0,
|
||||||
7, 0, 0, 0, 0, -1, 0, 0,
|
7, 0, 0, 0, 0, 0, 0, -1,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, -3, -16, -2, -2, -8, -9,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 2,
|
|
||||||
-4, -2, 2, 3, 2, -6, 0, 0,
|
|
||||||
-2, 2, 0, 0, 0, 0, 0, 0,
|
|
||||||
-5, 0, -2, -1, -4, 0, -2, 0,
|
|
||||||
-4, -1, 0, -1, -3, 0, -2, -5,
|
|
||||||
-4, -2, 0, 0, 0, 0, 0, -1,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -3, -16, -2, -2,
|
0, 0, 0, 0, -3, -16, -2, -2,
|
||||||
-8, -9, 0, 0, 0, 0, 0, 10,
|
-8, -9, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -2, -2, 1, -1, 1, -1, -5,
|
0, 0, 0, 0, 2, -2, 2, 3,
|
||||||
|
2, -6, 0, 0, -2, 2, 0, 0,
|
||||||
|
0, 0, 0, 0, -5, 0, -2, -1,
|
||||||
|
-4, 0, -2, 0, -4, -1, 0, -1,
|
||||||
|
-3, 0, -2, -5, -4, -2, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, -1, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -3, -16, -2, -2, -8, -9,
|
||||||
|
0, 0, 0, 0, 0, 10, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
-2, -2, -2, 1, -1, 1, -1, -5,
|
||||||
0, 4, 0, 2, 1, -8, -2, -5,
|
0, 4, 0, 2, 1, -8, -2, -5,
|
||||||
0, -3, -7, -4, -5, -8, -7, 0,
|
0, -3, -7, -4, -5, -8, -7, 0,
|
||||||
-2, -1, -2, -1, 0, -1, -1, 3,
|
-2, -1, -2, -1, 0, -1, -1, 3,
|
||||||
0, 3, -1, 0, 6, 0, 0, 0,
|
0, 3, -1, 0, 6, 0, 0, 0,
|
||||||
0, -1, -2, -2, 0, 0, -5, 0,
|
0, 0, 0, -1, -2, -2, 0, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 0,
|
-5, 0, -1, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -2, -2,
|
|
||||||
0, -2, 0, 2, -2, -3, -4, -1,
|
|
||||||
0, -6, -1, -4, -1, -2, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -3, 0, 0, 0,
|
-2, -2, 0, -2, 0, 0, 0, 0,
|
||||||
0, -2, 0, -2, 0, 0, -1, 0,
|
2, -3, -4, -1, 0, -6, -1, -4,
|
||||||
-6, -2, 1, 2, 2, 0, -5, 1,
|
-1, -2, 0, 0, 0, 0, 0, 0,
|
||||||
3, 1, 6, 1, -5, 0, -1, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-1, -8, 0, 0, -6, -5, 0, -3,
|
-3, 0, 0, 0, 0, -2, 0, -2,
|
||||||
0, -3, 0, -3, 0, -1, 3, 0,
|
0, 0, -1, 0, 0, 0, 0, -6,
|
||||||
-2, -6, -2, 7, 0, 0, -4, -2,
|
1, 2, 2, 0, -5, 1, 3, 1,
|
||||||
|
6, 1, -5, 0, -1, 0, -1, -8,
|
||||||
|
0, 0, -6, -5, 0, -3, 0, -3,
|
||||||
|
0, -3, 0, -1, 3, 0, -2, -6,
|
||||||
|
-2, 7, 0, 0, 0, 0, 0, -2,
|
||||||
2, 0, 0, -6, 0, -1, -1, 0,
|
2, 0, 0, -6, 0, -1, -1, 0,
|
||||||
-2, 0, 0, -2, 0, -2, -8, -2,
|
-2, 0, 0, -2, 0, -2, -8, -2,
|
||||||
-4, 0, -6, 0, -2, 0, -3, 0,
|
-4, 0, -6, 0, -2, 0, -3, 0,
|
||||||
1, 0, -2, 0, -2, -6, 0, -2,
|
1, 0, -2, 0, -2, -6, 0, -2,
|
||||||
2, 0, 1, -2, 0, -2, -1, 0,
|
2, 0, 0, 0, 0, 1, 0, -2,
|
||||||
-2, 0, 0, 0, 0, 0, 0, 0,
|
-1, 0, -2, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -2, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, -2, 0, 0,
|
||||||
0, 0, -2, -2, 0, 0, 4, -12,
|
0, 0, 0, 0, -2, -2, 0, 0,
|
||||||
0, 1, 8, 6, 3, -8, 1, 8,
|
4, 4, 0, 0, -12, 1, 8, 6,
|
||||||
0, 7, 0, 0, 0, 0, 0, 0,
|
3, -8, 1, 8, 0, 7, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0
|
0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -913,8 +937,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes =
|
|||||||
.class_pair_values = kern_class_values,
|
.class_pair_values = kern_class_values,
|
||||||
.left_class_mapping = kern_left_class_mapping,
|
.left_class_mapping = kern_left_class_mapping,
|
||||||
.right_class_mapping = kern_right_class_mapping,
|
.right_class_mapping = kern_right_class_mapping,
|
||||||
.left_class_cnt = 47,
|
.left_class_cnt = 49,
|
||||||
.right_class_cnt = 37,
|
.right_class_cnt = 39,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*--------------------
|
/*--------------------
|
||||||
@ -936,7 +960,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||||||
.cmaps = cmaps,
|
.cmaps = cmaps,
|
||||||
.kern_dsc = &kern_classes,
|
.kern_dsc = &kern_classes,
|
||||||
.kern_scale = 16,
|
.kern_scale = 16,
|
||||||
.cmap_num = 5,
|
.cmap_num = 4,
|
||||||
.bpp = 4,
|
.bpp = 4,
|
||||||
.kern_classes = 1,
|
.kern_classes = 1,
|
||||||
.bitmap_format = 0,
|
.bitmap_format = 0,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Size: 18 px
|
* Size: 18 px
|
||||||
* Bpp: 4
|
* Bpp: 4
|
||||||
* Opts: --bpp 4 --size 18 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°èéêûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz :-%, --format lvgl -o montserrat_medium_18.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
* Opts: --bpp 4 --size 18 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_18.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||||
@ -39,13 +39,29 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0x5, 0xe1, 0x0, 0x1f, 0x50, 0x0, 0x2, 0xbf,
|
0x5, 0xe1, 0x0, 0x1f, 0x50, 0x0, 0x2, 0xbf,
|
||||||
0xc3, 0x0,
|
0xc3, 0x0,
|
||||||
|
|
||||||
|
/* U+0027 "'" */
|
||||||
|
0xda, 0xd9, 0xd9, 0xc8, 0xc8, 0x0,
|
||||||
|
|
||||||
|
/* U+0028 "(" */
|
||||||
|
0x0, 0x6f, 0x40, 0xd, 0xc0, 0x4, 0xf6, 0x0,
|
||||||
|
0x9f, 0x20, 0xd, 0xd0, 0x0, 0xfb, 0x0, 0x2f,
|
||||||
|
0x80, 0x3, 0xf7, 0x0, 0x4f, 0x60, 0x4, 0xf6,
|
||||||
|
0x0, 0x3f, 0x70, 0x2, 0xf8, 0x0, 0xf, 0xb0,
|
||||||
|
0x0, 0xdd, 0x0, 0x8, 0xf1, 0x0, 0x3f, 0x60,
|
||||||
|
0x0, 0xdc, 0x0, 0x6, 0xf4,
|
||||||
|
|
||||||
|
/* U+0029 ")" */
|
||||||
|
0x3f, 0x70, 0x0, 0xbe, 0x0, 0x5, 0xf5, 0x0,
|
||||||
|
0x1f, 0xa0, 0x0, 0xce, 0x0, 0x9, 0xf1, 0x0,
|
||||||
|
0x7f, 0x30, 0x6, 0xf4, 0x0, 0x5f, 0x50, 0x5,
|
||||||
|
0xf5, 0x0, 0x6f, 0x40, 0x7, 0xf3, 0x0, 0x9f,
|
||||||
|
0x10, 0xc, 0xe0, 0x1, 0xfa, 0x0, 0x5f, 0x50,
|
||||||
|
0xb, 0xe0, 0x3, 0xf7, 0x0,
|
||||||
|
|
||||||
/* U+002C "," */
|
/* U+002C "," */
|
||||||
0x1, 0x10, 0xe, 0xf1, 0xf, 0xf2, 0x7, 0xe0,
|
0x1, 0x10, 0xe, 0xf1, 0xf, 0xf2, 0x7, 0xe0,
|
||||||
0xb, 0x90, 0xe, 0x40,
|
0xb, 0x90, 0xe, 0x40,
|
||||||
|
|
||||||
/* U+002D "-" */
|
|
||||||
0x88, 0x88, 0x7f, 0xff, 0xfe,
|
|
||||||
|
|
||||||
/* U+002E "." */
|
/* U+002E "." */
|
||||||
0x5, 0x60, 0x1f, 0xf2, 0xc, 0xd0,
|
0x5, 0x60, 0x1f, 0xf2, 0xc, 0xd0,
|
||||||
|
|
||||||
@ -770,18 +786,6 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0x9, 0x10, 0x0, 0xdf, 0xda, 0xae, 0xf6, 0x0,
|
0x9, 0x10, 0x0, 0xdf, 0xda, 0xae, 0xf6, 0x0,
|
||||||
0x0, 0x7d, 0xff, 0xc5, 0x0,
|
0x0, 0x7d, 0xff, 0xc5, 0x0,
|
||||||
|
|
||||||
/* U+00EA "ê" */
|
|
||||||
0x0, 0x0, 0xbf, 0xc0, 0x0, 0x0, 0x0, 0xae,
|
|
||||||
0x4d, 0xb0, 0x0, 0x0, 0x49, 0x10, 0x18, 0x40,
|
|
||||||
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8,
|
|
||||||
0xdf, 0xe9, 0x10, 0x0, 0x1d, 0xfb, 0x8a, 0xfe,
|
|
||||||
0x20, 0xa, 0xf3, 0x0, 0x3, 0xfb, 0x0, 0xfa,
|
|
||||||
0x0, 0x0, 0x9, 0xf1, 0x3f, 0xff, 0xff, 0xff,
|
|
||||||
0xff, 0x33, 0xfa, 0x33, 0x33, 0x33, 0x30, 0xf,
|
|
||||||
0xd0, 0x0, 0x0, 0x0, 0x0, 0x9f, 0x90, 0x0,
|
|
||||||
0x9, 0x10, 0x0, 0xdf, 0xda, 0xae, 0xf6, 0x0,
|
|
||||||
0x0, 0x7d, 0xff, 0xc5, 0x0,
|
|
||||||
|
|
||||||
/* U+00FB "û" */
|
/* U+00FB "û" */
|
||||||
0x0, 0x4, 0xff, 0x50, 0x0, 0x0, 0x3f, 0x87,
|
0x0, 0x4, 0xff, 0x50, 0x0, 0x0, 0x3f, 0x87,
|
||||||
0xf5, 0x0, 0x0, 0x75, 0x0, 0x47, 0x0, 0x0,
|
0xf5, 0x0, 0x0, 0x75, 0x0, 0x47, 0x0, 0x0,
|
||||||
@ -881,116 +885,116 @@ 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 = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||||
{.bitmap_index = 0, .adv_w = 77, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 77, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 0, .adv_w = 243, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 243, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 98, .adv_w = 65, .box_w = 4, .box_h = 6, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 98, .adv_w = 60, .box_w = 2, .box_h = 6, .ofs_x = 1, .ofs_y = 7},
|
||||||
{.bitmap_index = 110, .adv_w = 110, .box_w = 5, .box_h = 2, .ofs_x = 1, .ofs_y = 4},
|
{.bitmap_index = 104, .adv_w = 97, .box_w = 5, .box_h = 18, .ofs_x = 1, .ofs_y = -4},
|
||||||
{.bitmap_index = 115, .adv_w = 65, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 149, .adv_w = 97, .box_w = 5, .box_h = 18, .ofs_x = 0, .ofs_y = -4},
|
||||||
{.bitmap_index = 121, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 194, .adv_w = 65, .box_w = 4, .box_h = 6, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 199, .adv_w = 107, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 206, .adv_w = 65, .box_w = 4, .box_h = 3, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 232, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 212, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 297, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 290, .adv_w = 107, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 362, .adv_w = 193, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 323, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 440, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 388, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 505, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 453, .adv_w = 193, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 577, .adv_w = 172, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 531, .adv_w = 165, .box_w = 10, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 649, .adv_w = 185, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 596, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 721, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 668, .adv_w = 172, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 793, .adv_w = 65, .box_w = 4, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 740, .adv_w = 185, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 813, .adv_w = 211, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 812, .adv_w = 178, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 911, .adv_w = 218, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 884, .adv_w = 65, .box_w = 4, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 989, .adv_w = 208, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 904, .adv_w = 211, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1074, .adv_w = 238, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1002, .adv_w = 218, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1159, .adv_w = 193, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1080, .adv_w = 208, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1231, .adv_w = 183, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1165, .adv_w = 238, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1296, .adv_w = 222, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1250, .adv_w = 193, .box_w = 11, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1381, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1322, .adv_w = 183, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1459, .adv_w = 89, .box_w = 3, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1387, .adv_w = 222, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1479, .adv_w = 148, .box_w = 9, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 1472, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1538, .adv_w = 207, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1550, .adv_w = 89, .box_w = 3, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1616, .adv_w = 171, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1570, .adv_w = 148, .box_w = 9, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1681, .adv_w = 275, .box_w = 15, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1629, .adv_w = 207, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1779, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1707, .adv_w = 171, .box_w = 10, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1857, .adv_w = 242, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1772, .adv_w = 275, .box_w = 15, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1955, .adv_w = 208, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1870, .adv_w = 234, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2033, .adv_w = 242, .box_w = 15, .box_h = 16, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 1948, .adv_w = 242, .box_w = 15, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2153, .adv_w = 209, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2046, .adv_w = 208, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2231, .adv_w = 179, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2124, .adv_w = 242, .box_w = 15, .box_h = 16, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 2303, .adv_w = 169, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2244, .adv_w = 209, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2375, .adv_w = 228, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2322, .adv_w = 179, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2453, .adv_w = 205, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 2394, .adv_w = 169, .box_w = 11, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2544, .adv_w = 324, .box_w = 20, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2466, .adv_w = 228, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2674, .adv_w = 194, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2544, .adv_w = 205, .box_w = 14, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2752, .adv_w = 186, .box_w = 13, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 2635, .adv_w = 324, .box_w = 20, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2837, .adv_w = 189, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2765, .adv_w = 194, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 2915, .adv_w = 172, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 2843, .adv_w = 186, .box_w = 13, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2965, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2928, .adv_w = 189, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3042, .adv_w = 164, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3006, .adv_w = 172, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3092, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3056, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3169, .adv_w = 176, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3133, .adv_w = 164, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3224, .adv_w = 102, .box_w = 7, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3183, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3273, .adv_w = 199, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4},
|
{.bitmap_index = 3260, .adv_w = 176, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3350, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3315, .adv_w = 102, .box_w = 7, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3420, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3364, .adv_w = 199, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4},
|
||||||
{.bitmap_index = 3441, .adv_w = 82, .box_w = 6, .box_h = 18, .ofs_x = -2, .ofs_y = -4},
|
{.bitmap_index = 3441, .adv_w = 196, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3495, .adv_w = 177, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3511, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3572, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3532, .adv_w = 82, .box_w = 6, .box_h = 18, .ofs_x = -2, .ofs_y = -4},
|
||||||
{.bitmap_index = 3593, .adv_w = 304, .box_w = 17, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3586, .adv_w = 177, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3678, .adv_w = 196, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3663, .adv_w = 80, .box_w = 3, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3728, .adv_w = 183, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3684, .adv_w = 304, .box_w = 17, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3783, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -4},
|
{.bitmap_index = 3769, .adv_w = 196, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3860, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4},
|
{.bitmap_index = 3819, .adv_w = 183, .box_w = 11, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 3937, .adv_w = 118, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 3874, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 1, .ofs_y = -4},
|
||||||
{.bitmap_index = 3967, .adv_w = 144, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3951, .adv_w = 196, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = -4},
|
||||||
{.bitmap_index = 4012, .adv_w = 119, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4028, .adv_w = 118, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4054, .adv_w = 195, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 4058, .adv_w = 144, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4104, .adv_w = 161, .box_w = 12, .box_h = 10, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 4103, .adv_w = 119, .box_w = 7, .box_h = 12, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4164, .adv_w = 259, .box_w = 17, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4145, .adv_w = 195, .box_w = 10, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4249, .adv_w = 159, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4195, .adv_w = 161, .box_w = 12, .box_h = 10, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4299, .adv_w = 161, .box_w = 12, .box_h = 14, .ofs_x = -1, .ofs_y = -4},
|
{.bitmap_index = 4255, .adv_w = 259, .box_w = 17, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4383, .adv_w = 150, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4340, .adv_w = 159, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4428, .adv_w = 121, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 6},
|
{.bitmap_index = 4390, .adv_w = 161, .box_w = 12, .box_h = 14, .ofs_x = -1, .ofs_y = -4},
|
||||||
{.bitmap_index = 4453, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4474, .adv_w = 150, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4530, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4519, .adv_w = 121, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 6},
|
||||||
{.bitmap_index = 4607, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4544, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4684, .adv_w = 195, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 4621, .adv_w = 176, .box_w = 11, .box_h = 14, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4754, .adv_w = 324, .box_w = 21, .box_h = 19, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 4698, .adv_w = 195, .box_w = 10, .box_h = 14, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4954, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -2},
|
{.bitmap_index = 4768, .adv_w = 324, .box_w = 21, .box_h = 19, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 5150, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -3}
|
{.bitmap_index = 4968, .adv_w = 360, .box_w = 23, .box_h = 17, .ofs_x = 0, .ofs_y = -2},
|
||||||
|
{.bitmap_index = 5164, .adv_w = 288, .box_w = 18, .box_h = 19, .ofs_x = 0, .ofs_y = -3}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*---------------------
|
/*---------------------
|
||||||
* CHARACTER MAPPING
|
* CHARACTER MAPPING
|
||||||
*--------------------*/
|
*--------------------*/
|
||||||
|
|
||||||
static const uint16_t unicode_list_0[] = {
|
static const uint8_t glyph_id_ofs_list_0[] = {
|
||||||
0x0, 0x5, 0xc, 0xd, 0xe
|
0, 0, 0, 0, 0, 1, 0, 2,
|
||||||
|
3, 4, 0, 0, 5, 0, 6, 0,
|
||||||
|
7, 8, 9, 10, 11, 12, 13, 14,
|
||||||
|
15, 16, 17
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t unicode_list_4[] = {
|
static const uint16_t unicode_list_3[] = {
|
||||||
0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5
|
0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Collect the unicode lists and glyph_id offsets*/
|
/*Collect the unicode lists and glyph_id offsets*/
|
||||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
.range_start = 32, .range_length = 27, .glyph_id_start = 1,
|
||||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 5, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 48, .range_length = 11, .glyph_id_start = 6,
|
.range_start = 65, .range_length = 26, .glyph_id_start = 19,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 65, .range_length = 26, .glyph_id_start = 17,
|
.range_start = 97, .range_length = 26, .glyph_id_start = 45,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 97, .range_length = 26, .glyph_id_start = 43,
|
.range_start = 176, .range_length = 62662, .glyph_id_start = 71,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||||
},
|
|
||||||
{
|
|
||||||
.range_start = 176, .range_length = 62662, .glyph_id_start = 69,
|
|
||||||
.unicode_list = unicode_list_4, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1002,254 +1006,275 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||||||
/*Map glyph_ids to kern left classes*/
|
/*Map glyph_ids to kern left classes*/
|
||||||
static const uint8_t kern_left_class_mapping[] =
|
static const uint8_t kern_left_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 0,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
5, 6, 7, 8, 9, 10, 11, 4,
|
6, 0, 7, 8, 9, 10, 11, 12,
|
||||||
12, 13, 14, 15, 16, 17, 18, 19,
|
13, 6, 14, 15, 16, 17, 18, 19,
|
||||||
20, 20, 21, 22, 23, 20, 20, 16,
|
20, 21, 22, 22, 23, 24, 25, 22,
|
||||||
24, 16, 25, 26, 27, 21, 28, 28,
|
22, 18, 26, 18, 27, 28, 29, 23,
|
||||||
29, 30, 31, 32, 33, 34, 35, 36,
|
30, 30, 31, 32, 33, 34, 35, 36,
|
||||||
37, 38, 32, 38, 38, 39, 35, 32,
|
37, 38, 39, 40, 34, 40, 40, 41,
|
||||||
32, 33, 33, 40, 41, 42, 43, 38,
|
37, 34, 34, 35, 35, 42, 43, 44,
|
||||||
44, 44, 45, 44, 46, 47, 36, 36,
|
45, 40, 46, 46, 47, 46, 48, 49,
|
||||||
36, 38, 0, 0, 0
|
38, 38, 40, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Map glyph_ids to kern right classes*/
|
/*Map glyph_ids to kern right classes*/
|
||||||
static const uint8_t kern_right_class_mapping[] =
|
static const uint8_t kern_right_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 5,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
6, 7, 8, 9, 4, 10, 11, 12,
|
6, 7, 8, 9, 10, 11, 6, 12,
|
||||||
13, 14, 15, 16, 15, 15, 15, 16,
|
13, 14, 15, 16, 17, 18, 17, 17,
|
||||||
15, 15, 17, 15, 15, 15, 15, 16,
|
17, 18, 17, 17, 19, 17, 17, 17,
|
||||||
15, 16, 15, 18, 19, 20, 21, 21,
|
17, 18, 17, 18, 17, 20, 21, 22,
|
||||||
22, 23, 24, 25, 26, 27, 27, 27,
|
23, 23, 24, 25, 26, 27, 28, 29,
|
||||||
0, 27, 26, 28, 29, 26, 26, 30,
|
29, 29, 0, 29, 28, 30, 31, 28,
|
||||||
30, 27, 30, 27, 30, 31, 32, 33,
|
28, 32, 32, 29, 32, 29, 32, 33,
|
||||||
34, 34, 35, 34, 36, 37, 27, 27,
|
34, 35, 36, 36, 37, 36, 38, 39,
|
||||||
27, 33, 0, 0, 0
|
29, 29, 35, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Kern values between classes*/
|
/*Kern values between classes*/
|
||||||
static const int8_t kern_class_values[] =
|
static const int8_t kern_class_values[] =
|
||||||
{
|
{
|
||||||
-35, 9, 6, 0, -6, 3, 3, 10,
|
-35, -8, 0, -6, 9, 0, -6, 3,
|
||||||
6, -5, 6, 0, 0, 0, 0, 0,
|
3, 10, 6, -5, 6, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -8, -18, 0, -2,
|
0, 0, 0, 0, 0, 0, -8, 8,
|
||||||
-3, -4, 3, 3, -3, 0, -4, 3,
|
13, 0, 0, -16, 2, 14, 6, 5,
|
||||||
|
-12, 2, 14, 1, 12, 3, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 6, 0, 0,
|
||||||
|
0, 0, 0, 0, 3, 0, 0, -6,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -18, -11, -2, 1, 2, -5, -4,
|
|
||||||
-6, 2, 0, -3, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-3, 2, 0, -1, -1, -3, 0, 0,
|
0, -11, 0, 0, 0, 0, 0, 0,
|
||||||
-2, 0, 0, 0, -2, 0, 0, -7,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -6, 0, -7, -10, -10, -5, 0,
|
0, 0, 0, 0, -18, -16, 0, 0,
|
||||||
0, 0, 0, -2, 0, 0, 3, 0,
|
0, -3, -4, 3, 3, -3, 0, -4,
|
||||||
2, -3, 0, 1, 3, 3, -2, -1,
|
3, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -18, 0, 2, 0, 0, -3,
|
||||||
|
0, -1, -1, -3, 0, 0, -2, 0,
|
||||||
|
0, 0, -2, 0, 0, -7, 0, -6,
|
||||||
|
0, -7, -10, -10, -5, 0, 0, 0,
|
||||||
|
0, -2, 0, 0, 3, 0, 2, -3,
|
||||||
|
0, 1, 3, 0, 0, 0, 3, -1,
|
||||||
0, 0, 0, -5, 0, -1, 0, 0,
|
0, 0, 0, -5, 0, -1, 0, 0,
|
||||||
0, 1, 0, 0, 4, 0, -2, 0,
|
0, 1, 0, 0, 4, 0, -2, 0,
|
||||||
-3, 0, -5, 0, 0, 0, -3, 0,
|
-3, 0, -5, 0, 0, 0, -3, 0,
|
||||||
0, 0, 0, 0, -1, 1, -2, -2,
|
0, 0, 0, 0, -1, 1, -2, -2,
|
||||||
0, -3, 0, 0, 0, 0, -1, -1,
|
0, -3, -3, 0, 0, 0, 0, 0,
|
||||||
0, -3, -3, 0, 0, 0, 1, 0,
|
-1, -1, 0, -3, -3, 0, 0, 0,
|
||||||
0, 0, 0, -2, 0, -3, -3, -3,
|
1, 0, 0, 0, 0, -2, 0, -3,
|
||||||
0, 0, 0, 0, 0, -2, 0, 0,
|
-3, -3, 0, 0, 0, 0, 0, -2,
|
||||||
0, 0, -2, -4, 0, -4, -9, 6,
|
0, 0, 0, 0, -2, -4, 0, -4,
|
||||||
3, 0, -7, -1, -3, 0, -1, -14,
|
-9, -9, 0, 0, 6, 0, -7, -1,
|
||||||
3, -2, 2, 0, 0, 3, 1, -2,
|
-3, 0, -1, -14, 3, -2, 2, 0,
|
||||||
-15, 0, -15, -2, -25, -2, 8, 0,
|
0, 3, 1, -2, -15, 0, -15, -2,
|
||||||
4, 0, 0, 0, 0, 1, 0, -5,
|
-25, -2, 8, 0, 4, 0, 0, 0,
|
||||||
-4, 0, -9, -3, 0, 0, 0, 0,
|
0, 1, 0, -5, -4, 0, -9, -3,
|
||||||
-1, -1, 0, -1, -4, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -1, -1,
|
||||||
0, 0, 0, -3, 0, -3, 0, -2,
|
0, -1, -4, 0, 0, 0, 0, 0,
|
||||||
-3, -2, 0, 0, 0, 0, 0, 0,
|
0, -3, 0, -3, 0, -2, -3, -2,
|
||||||
0, 0, 0, 0, -2, -2, 0, -3,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-6, 3, 1, 0, 0, 0, 0, 0,
|
0, 0, -2, -2, 0, -3, -6, -2,
|
||||||
|
0, 0, 3, 0, 0, 0, 0, 0,
|
||||||
0, -2, 0, 0, 0, 2, 0, 0,
|
0, -2, 0, 0, 0, 2, 0, 0,
|
||||||
0, 0, -3, 0, -3, -2, -3, 0,
|
0, 0, -3, 0, -3, -2, -3, 0,
|
||||||
0, 0, 2, 0, -2, 0, 0, 0,
|
0, 0, 2, 0, -2, 0, 0, 0,
|
||||||
0, -3, -4, 0, -5, 1, -15, -14,
|
0, -3, -4, 0, -5, 1, 9, 0,
|
||||||
-6, 3, 0, -2, -19, -5, 0, -5,
|
0, -15, -6, 3, 0, -2, -19, -5,
|
||||||
0, -6, -18, 0, -5, -8, -2, 0,
|
0, -5, 0, -6, -18, 0, -5, -8,
|
||||||
0, 1, -1, 2, -2, -11, 0, -14,
|
-2, 0, 0, 1, -1, 2, -2, -11,
|
||||||
-7, -6, -7, -9, -3, -8, -1, -5,
|
0, -14, -7, -6, -7, -9, -3, -8,
|
||||||
-8, 2, -3, 3, 0, 0, 0, 0,
|
-1, -5, -8, 2, -3, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, -1,
|
3, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, -1, 0, -3, 0, -5, -6,
|
0, 0, 0, -1, 0, 0, -1, 0,
|
||||||
-6, -1, 0, 0, 0, 0, -2, 0,
|
-3, 0, -5, -6, -6, -1, 0, 0,
|
||||||
0, 0, 0, 1, -2, 0, 0, 0,
|
0, 0, -2, 0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
-2, 0, 0, 0, 3, 0, 0, 0,
|
||||||
2, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 2, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 10, -5, -2,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, -12, 0, 0, 10, -2,
|
||||||
-12, 0, 3, -4, 0, -14, -1, -4,
|
-12, 0, 3, -4, 0, -14, -1, -4,
|
||||||
3, 4, 0, -3, 4, 0, -10, -4,
|
3, 4, 0, -3, 4, 0, -10, -4,
|
||||||
-11, -10, -12, 0, 0, 0, -1, 0,
|
-11, -10, -12, 0, 0, 0, -1, 0,
|
||||||
0, 0, -1, -1, -3, -8, -10, -1,
|
0, 0, -1, -1, -3, -8, -10, -1,
|
||||||
-27, 0, 1, 0, 0, 0, 0, 0,
|
-27, 0, 0, 0, 0, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -3, 0, -1, -3, -4,
|
0, 0, 0, 0, 0, -3, 0, -1,
|
||||||
|
-3, -4, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 4,
|
0, 0, 0, 0, 4, -6, 3, -2,
|
||||||
-1, -6, 3, -2, -1, -7, -3, 0,
|
-1, -7, -3, 0, -4, -3, -2, -5,
|
||||||
-4, -3, -2, -5, 0, -4, 0, -1,
|
0, -4, 0, -1, -2, -1, -2, -5,
|
||||||
-2, -1, -2, -5, -3, 0, -2, 0,
|
-3, 0, -2, 0, -6, 0, 0, 0,
|
||||||
-6, 0, 0, 0, -6, 0, -5, 0,
|
-6, 0, -5, 0, -5, -5, 3, 0,
|
||||||
-5, -5, 3, 0, -6, 2, 0, -3,
|
-5, 0, 3, -6, 0, -3, -3, -3,
|
||||||
-3, -3, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -3, 0,
|
||||||
-3, 0, 0, -4, 0, -3, 0, -6,
|
0, -4, 0, -3, 0, -6, -7, -9,
|
||||||
-7, -9, -2, 0, 0, 0, 0, 23,
|
-2, 0, 0, 0, 0, 23, 0, 0,
|
||||||
0, 0, 1, 0, 0, -4, 0, 3,
|
1, 0, 0, -4, 0, 3, 0, 0,
|
||||||
0, 3, -6, -4, 0, -2, -3, -9,
|
0, 0, 3, -4, 0, -2, -3, -9,
|
||||||
-2, -2, -2, -1, -2, 0, 0, -1,
|
-2, -2, -2, -1, -2, 0, 0, -1,
|
||||||
0, 0, 0, 0, -3, -2, -2, 0,
|
0, 0, 0, 0, -3, -2, -2, 0,
|
||||||
-2, 0, -2, 0, 0, 0, -2, -3,
|
-2, 0, -2, 0, 0, 0, -2, -3,
|
||||||
-2, -3, -3, -3, 0, 0, -3, 0,
|
-2, -3, -3, -3, 0, 0, 12, 0,
|
||||||
-4, 4, 0, 0, -14, -5, 3, -5,
|
-2, -3, -4, 4, 0, 0, -14, -5,
|
||||||
2, 0, -9, 0, -2, -4, -1, 1,
|
3, -5, 2, 0, -9, 0, -2, -4,
|
||||||
0, 0, -5, 0, 0, -5, 0, -5,
|
-1, 1, 0, 0, -5, 0, 0, -5,
|
||||||
-3, -4, -3, -3, 0, -5, 1, -5,
|
0, -5, -3, -4, -3, -3, 0, -5,
|
||||||
-5, 9, 0, 3, 0, 0, 0, 0,
|
1, -5, -5, 9, 0, 0, 0, 0,
|
||||||
|
3, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -2, 0, 0, 0, 0,
|
0, -2, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, -2, 0, 0,
|
0, 0, 0, 0, 0, 0, -2, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -4, 0, 0, 0, 0, -4, 0,
|
0, -4, 0, 0, 0, 0, -4, 0,
|
||||||
0, -3, -3, 0, 0, 0, 0, 0,
|
0, -3, -3, 0, 0, 0, 0, 0,
|
||||||
-1, 0, 0, 0, 0, 0, -2, 0,
|
-1, 0, 0, 0, 0, 0, -2, 0,
|
||||||
0, 0, 0, -10, -6, 6, 1, -2,
|
0, 0, 0, 0, 0, 0, -6, 6,
|
||||||
-14, 0, 0, -6, -3, 0, -8, 0,
|
1, -2, -14, 0, 0, -6, -3, 0,
|
||||||
-7, 0, -4, -12, -3, -12, -11, -14,
|
-8, 0, -7, 0, -4, -12, -3, -12,
|
||||||
0, -4, 0, -7, -3, -1, -3, -5,
|
-11, -14, 0, -4, 0, -7, -3, -1,
|
||||||
-8, -5, -11, -12, -7, -3, 0, 9,
|
-3, -5, -8, -5, -11, -12, -7, -3,
|
||||||
-3, -6, -11, 0, 1, -9, 0, -14,
|
0, 0, 0, 0, 9, -6, -11, 0,
|
||||||
-2, -3, 6, 1, 0, -4, 0, -2,
|
1, -9, 0, -14, -2, -3, 6, 1,
|
||||||
-19, -3, -15, -3, -21, 0, 1, 0,
|
0, -4, 0, -2, -19, -3, -15, -3,
|
||||||
-2, 0, 0, 0, 0, -1, -2, -11,
|
-21, 0, 1, 0, -2, 0, 0, 0,
|
||||||
-2, 0, -19, 0, -8, -1, 0, 0,
|
0, -1, -2, -11, -2, 0, -19, 0,
|
||||||
-1, -4, -9, -3, 0, -2, 0, 0,
|
0, 0, -3, -8, 0, 0, -1, -4,
|
||||||
-13, -3, 0, -10, 0, -9, -2, -5,
|
-9, -3, 0, -2, 0, 0, -13, -3,
|
||||||
-7, -3, -5, -4, 0, -3, -5, -3,
|
0, -10, 0, -9, -2, -5, -7, -3,
|
||||||
-5, 0, 1, 0, -2, -10, 0, 6,
|
-5, -4, 0, -3, -5, -3, -5, 0,
|
||||||
0, 0, -1, 0, 0, 0, -2, -6,
|
1, 0, -2, -10, 0, 6, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, -2, -6,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-3, 0, -3, 0, 0, -6, -3, 0,
|
-3, 0, -3, 0, 0, -6, -3, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 1,
|
-1, 0, 0, 0, 0, 0, 0, 1,
|
||||||
0, 0, 0, 0, 4, 0, 6, 5,
|
0, 0, 0, 0, 4, 0, -9, 0,
|
||||||
0, -3, 0, -2, 3, 0, -3, 0,
|
0, 6, 0, -3, 0, -2, 3, 0,
|
||||||
-3, -1, 0, 0, 0, 0, 0, -3,
|
-3, 0, -3, -1, 0, 0, 0, 0,
|
||||||
0, 0, -4, -4, 0, 0, 0, 0,
|
0, -3, 0, 0, -4, -4, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -3, -3,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -4, 0, -9, -10, -6, 12, 5,
|
-3, -3, 0, -4, 0, 2, -5, 0,
|
||||||
3, -25, -2, 6, -3, 0, -3, -10,
|
-9, -6, 12, 5, 3, -25, -2, 6,
|
||||||
0, -3, -3, -3, 3, -4, -2, -9,
|
-3, 0, -3, -10, 0, -3, -3, -3,
|
||||||
-2, 0, -8, 0, -16, -4, 8, -4,
|
3, -4, -2, -9, -2, 0, -8, 0,
|
||||||
-11, 1, -4, -10, -10, -3, 12, 0,
|
-16, -4, 8, -4, -11, 1, -4, -10,
|
||||||
-11, -7, -7, 9, 0, 1, -21, -2,
|
-10, -3, 12, 0, 0, 0, 2, -11,
|
||||||
3, -5, -2, -7, -11, -4, -6, -4,
|
-7, 9, 0, 1, -21, -2, 3, -5,
|
||||||
-4, -2, 0, 0, -7, -6, -3, -16,
|
-2, -7, -11, -4, -6, -4, -4, -2,
|
||||||
0, -16, -4, 0, -10, -17, -1, -9,
|
0, 0, -7, -6, -3, -16, 0, -16,
|
||||||
-5, -10, -8, 8, 0, 0, -5, -10,
|
-4, 0, -10, -17, -1, -9, -5, -10,
|
||||||
|
-8, 8, 0, 0, -3, 0, 0, -10,
|
||||||
3, 0, 0, -15, 0, -3, -6, -5,
|
3, 0, 0, -15, 0, -3, -6, -5,
|
||||||
-2, -10, -7, -7, 0, -4, -9, -3,
|
-2, -10, -7, -7, 0, -4, -9, -3,
|
||||||
-7, -5, -9, -3, -5, 0, -9, -3,
|
-7, -5, -9, -3, -5, 0, -9, -3,
|
||||||
0, -3, -6, -7, -8, -8, -11, -4,
|
0, -3, -6, -7, -8, -8, -11, -4,
|
||||||
-6, 0, -11, -9, -10, 10, -3, 1,
|
-6, 0, 0, -3, 2, -11, -10, 10,
|
||||||
-27, -5, 6, -6, -5, -11, -12, -3,
|
-3, 1, -27, -5, 6, -6, -5, -11,
|
||||||
-9, -3, -4, -2, -3, -6, -9, -1,
|
-12, -3, -9, -3, -4, -2, -3, -6,
|
||||||
0, -19, 0, -17, -7, 7, -11, -20,
|
-9, -1, 0, -19, 0, -17, -7, 7,
|
||||||
-6, -10, -12, -14, -10, 6, 0, 6,
|
-11, -20, -6, -10, -12, -14, -10, 6,
|
||||||
-3, -5, 6, 0, 0, -9, -1, 0,
|
0, 0, 0, 0, 6, -5, 6, 0,
|
||||||
-1, 0, 1, 0, 0, -2, 0, 0,
|
0, -9, -1, 0, -1, 0, 1, 0,
|
||||||
0, 0, 0, -3, 0, 0, 1, 0,
|
0, -2, 0, 0, 0, 0, 0, -3,
|
||||||
-3, 0, 0, 0, 0, -2, -2, -3,
|
0, 0, 1, 0, -3, 0, 0, 0,
|
||||||
0, 0, 0, -8, 0, 0, 0, -6,
|
0, -2, -2, -3, 0, 0, 0, -8,
|
||||||
-1, 0, 0, 0, -6, 0, -3, 0,
|
0, 0, 0, 0, 0, -6, -1, 0,
|
||||||
|
0, 0, -6, 0, -3, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 1, 0, 0,
|
0, 0, 0, 1, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -3, 0, 0, -5,
|
0, 0, -3, 0, 0, -5, -8, -4,
|
||||||
-8, -3, 3, 0, -8, -3, -7, 0,
|
0, 0, -3, 0, -8, -3, -7, 0,
|
||||||
0, -8, 0, -3, 0, -3, 0, 0,
|
0, -8, 0, -3, 0, -3, 0, 0,
|
||||||
0, 0, -23, -5, -12, -3, -10, 0,
|
0, 0, -23, -5, -12, -3, -10, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 0,
|
-1, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -4, -5, -2, -5, 0, 6, -3,
|
0, -4, -5, -2, -5, 0, 0, 0,
|
||||||
-2, -7, -2, -5, -5, 0, -3, -1,
|
-6, 6, -2, -7, -2, -5, -5, 0,
|
||||||
-2, 2, 0, 0, -1, 0, 0, -25,
|
-3, -1, -2, 2, 0, 0, -1, 0,
|
||||||
-2, -4, 0, -6, 0, 0, -2, -2,
|
0, -25, -2, -4, 0, -6, 0, 0,
|
||||||
0, 0, 0, 0, 2, 0, -2, -5,
|
-2, -2, 0, 0, 0, 0, 2, 0,
|
||||||
-2, 5, 0, 0, 0, 0, 0, 0,
|
-2, -5, -2, 5, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 4, 0, 0, 0, 0, 0, -2,
|
0, 0, 0, 0, 0, 4, 0, 0,
|
||||||
0, 3, 0, -8, -3, -6, 0, 0,
|
0, 0, 0, -2, -6, 0, 0, 0,
|
||||||
-8, 0, -3, 0, 0, 0, 0, 0,
|
0, -8, -3, -6, 0, 0, -8, 0,
|
||||||
0, -28, 0, -6, -11, -14, 0, -4,
|
-3, 0, 0, 0, 0, 0, 0, -28,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, -6, -11, -14, 0, -4, 0, 0,
|
||||||
-3, -4, -1, -4, 5, -3, -3, 3,
|
0, 0, 0, 0, 0, 0, -3, -4,
|
||||||
|
-1, -4, 5, 0, 0, 9, -3, 3,
|
||||||
14, 5, 6, -8, 3, 12, 3, 8,
|
14, 5, 6, -8, 3, 12, 3, 8,
|
||||||
6, 0, 0, 0, 0, 0, 0, 0,
|
6, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -3, 0, -2, 23,
|
0, 0, 0, 0, -3, 0, -2, 23,
|
||||||
12, 23, 0, 0, 0, 3, 0, 0,
|
12, 23, 0, 0, 0, 3, 0, 0,
|
||||||
11, 0, 0, 0, 0, -2, 0, 0,
|
11, 0, 0, 0, 0, 0, 0, -2,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, -5, -24, -3, -2, -12, -14,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 3,
|
|
||||||
-7, -3, 2, 5, 3, -9, 0, -1,
|
|
||||||
-2, 3, 0, 0, 0, 0, 0, 0,
|
|
||||||
-7, 0, -3, -2, -6, 0, -3, 0,
|
|
||||||
-6, -2, 0, -2, -5, 0, -3, -8,
|
|
||||||
-6, -3, 0, 0, 0, 0, 0, -2,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -5, -24, -3, -2,
|
0, 0, 0, 0, -5, -24, -3, -2,
|
||||||
-12, -14, 0, 0, 0, 0, 0, 14,
|
-12, -14, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -3, -3, 1, -2, 1, -2, -8,
|
0, 0, 0, 0, 3, -3, 2, 5,
|
||||||
|
3, -9, 0, -1, -2, 3, 0, 0,
|
||||||
|
0, 0, 0, 0, -7, 0, -3, -2,
|
||||||
|
-6, 0, -3, 0, -6, -2, 0, -2,
|
||||||
|
-5, 0, -3, -8, -6, -3, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, -2, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -5, -24, -3, -2, -12, -14,
|
||||||
|
0, 0, 0, 0, 0, 14, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
-3, -3, -3, 1, -2, 1, -2, -8,
|
||||||
1, 6, 1, 2, 1, -12, -3, -7,
|
1, 6, 1, 2, 1, -12, -3, -7,
|
||||||
0, -5, -11, -5, -8, -12, -11, 0,
|
0, -5, -11, -5, -8, -12, -11, 0,
|
||||||
-2, -2, -3, -2, 0, -2, -1, 4,
|
-2, -2, -3, -2, 0, -2, -1, 4,
|
||||||
0, 4, -2, 0, 9, 0, 0, 0,
|
0, 4, -2, 0, 9, 0, 0, 0,
|
||||||
0, -2, -3, -3, 0, 0, -8, 0,
|
0, 0, 0, -2, -3, -3, 0, 0,
|
||||||
-1, 0, 0, 0, 0, 0, 0, 0,
|
-8, 0, -1, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -3, -3,
|
|
||||||
0, -4, 0, 3, -3, -5, -5, -2,
|
|
||||||
0, -8, -2, -6, -2, -3, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -5, 0, 0, 0,
|
-3, -3, 0, -4, 0, 0, 0, 0,
|
||||||
0, -4, 0, -3, 0, 0, -1, 0,
|
3, -5, -5, -2, 0, -8, -2, -6,
|
||||||
-10, -4, 2, 3, 3, -1, -8, 2,
|
-2, -3, 0, 0, 0, 0, 0, 0,
|
||||||
4, 2, 9, 2, -8, 0, -2, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-2, -12, 0, 0, -9, -8, 0, -5,
|
-5, 0, 0, 0, 0, -4, 0, -3,
|
||||||
0, -4, 0, -4, 0, -2, 4, 0,
|
0, 0, -1, 0, 0, 0, 0, -10,
|
||||||
-2, -9, -3, 11, 0, 0, -7, -3,
|
2, 3, 3, -1, -8, 2, 4, 2,
|
||||||
|
9, 2, -8, 0, -2, 0, -2, -12,
|
||||||
|
0, 0, -9, -8, 0, -5, 0, -4,
|
||||||
|
0, -4, 0, -2, 4, 0, -2, -9,
|
||||||
|
-3, 11, 0, 0, 0, 0, 0, -3,
|
||||||
2, 0, 0, -10, 0, -2, -1, 0,
|
2, 0, 0, -10, 0, -2, -1, 0,
|
||||||
-3, 0, 0, -2, 0, -3, -12, -3,
|
-3, 0, 0, -2, 0, -3, -12, -3,
|
||||||
-6, 0, -9, 0, -3, 0, -5, 0,
|
-6, 0, -9, 0, -3, 0, -5, 0,
|
||||||
2, 0, -3, 0, -3, -9, 0, -3,
|
2, 0, -3, 0, -3, -9, 0, -3,
|
||||||
3, 0, 1, -4, 0, -3, -2, 0,
|
3, 0, 0, 0, 0, 1, 0, -3,
|
||||||
-3, 0, 0, 0, 0, 0, 0, 0,
|
-2, 0, -3, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -2, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, -2, 0, 0,
|
||||||
1, 0, -3, -3, 0, 0, 7, -18,
|
0, 0, 1, 0, -3, -3, 0, 0,
|
||||||
0, 1, 12, 9, 5, -12, 2, 12,
|
7, 6, 0, 0, -18, 1, 12, 9,
|
||||||
0, 11, 0, 0, 0, 0, 0, 0,
|
5, -12, 2, 12, 0, 11, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0
|
0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1259,8 +1284,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes =
|
|||||||
.class_pair_values = kern_class_values,
|
.class_pair_values = kern_class_values,
|
||||||
.left_class_mapping = kern_left_class_mapping,
|
.left_class_mapping = kern_left_class_mapping,
|
||||||
.right_class_mapping = kern_right_class_mapping,
|
.right_class_mapping = kern_right_class_mapping,
|
||||||
.left_class_cnt = 47,
|
.left_class_cnt = 49,
|
||||||
.right_class_cnt = 37,
|
.right_class_cnt = 39,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*--------------------
|
/*--------------------
|
||||||
@ -1282,7 +1307,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||||||
.cmaps = cmaps,
|
.cmaps = cmaps,
|
||||||
.kern_dsc = &kern_classes,
|
.kern_dsc = &kern_classes,
|
||||||
.kern_scale = 16,
|
.kern_scale = 16,
|
||||||
.cmap_num = 5,
|
.cmap_num = 4,
|
||||||
.bpp = 4,
|
.bpp = 4,
|
||||||
.kern_classes = 1,
|
.kern_classes = 1,
|
||||||
.bitmap_format = 0,
|
.bitmap_format = 0,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Size: 24 px
|
* Size: 24 px
|
||||||
* Bpp: 4
|
* Bpp: 4
|
||||||
* Opts: --bpp 4 --size 24 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°èéêûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz :-%, --format lvgl -o montserrat_medium_24.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
* Opts: --bpp 4 --size 24 --no-compress --font Montserrat-Medium.ttf --symbols 0123456789.°éèûCABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz %,'(): --format lvgl -o montserrat_medium_24.c --font fa-solid-900.ttf --range 61461,0xf0c2,0xf575
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||||
@ -48,14 +48,36 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0x0, 0x3, 0xfa, 0x0, 0x0, 0x0, 0x7, 0xdf,
|
0x0, 0x3, 0xfa, 0x0, 0x0, 0x0, 0x7, 0xdf,
|
||||||
0xd6, 0x0,
|
0xd6, 0x0,
|
||||||
|
|
||||||
|
/* U+0027 "'" */
|
||||||
|
0x7f, 0x87, 0xf7, 0x6f, 0x76, 0xf7, 0x6f, 0x65,
|
||||||
|
0xf6, 0x38, 0x30,
|
||||||
|
|
||||||
|
/* U+0028 "(" */
|
||||||
|
0x0, 0x2f, 0xf1, 0x0, 0x9f, 0x90, 0x1, 0xff,
|
||||||
|
0x20, 0x6, 0xfc, 0x0, 0xc, 0xf7, 0x0, 0xf,
|
||||||
|
0xf3, 0x0, 0x3f, 0xf0, 0x0, 0x6f, 0xd0, 0x0,
|
||||||
|
0x8f, 0xb0, 0x0, 0x9f, 0xa0, 0x0, 0xaf, 0x90,
|
||||||
|
0x0, 0xbf, 0x80, 0x0, 0xaf, 0x90, 0x0, 0x9f,
|
||||||
|
0xa0, 0x0, 0x8f, 0xb0, 0x0, 0x6f, 0xd0, 0x0,
|
||||||
|
0x3f, 0xf0, 0x0, 0xf, 0xf3, 0x0, 0xc, 0xf7,
|
||||||
|
0x0, 0x6, 0xfc, 0x0, 0x1, 0xff, 0x20, 0x0,
|
||||||
|
0x9f, 0x90, 0x0, 0x2f, 0xf1,
|
||||||
|
|
||||||
|
/* U+0029 ")" */
|
||||||
|
0xf, 0xf3, 0x0, 0x8, 0xfb, 0x0, 0x1, 0xff,
|
||||||
|
0x30, 0x0, 0xbf, 0x80, 0x0, 0x6f, 0xd0, 0x0,
|
||||||
|
0x1f, 0xf2, 0x0, 0xe, 0xf5, 0x0, 0xb, 0xf8,
|
||||||
|
0x0, 0x9, 0xfa, 0x0, 0x8, 0xfb, 0x0, 0x7,
|
||||||
|
0xfc, 0x0, 0x6, 0xfd, 0x0, 0x7, 0xfc, 0x0,
|
||||||
|
0x8, 0xfb, 0x0, 0x9, 0xfa, 0x0, 0xb, 0xf8,
|
||||||
|
0x0, 0xe, 0xf5, 0x0, 0x1f, 0xf2, 0x0, 0x6f,
|
||||||
|
0xd0, 0x0, 0xbf, 0x80, 0x1, 0xff, 0x30, 0x8,
|
||||||
|
0xfb, 0x0, 0xf, 0xf3, 0x0,
|
||||||
|
|
||||||
/* U+002C "," */
|
/* U+002C "," */
|
||||||
0x3b, 0x80, 0xcf, 0xf3, 0xaf, 0xf3, 0xf, 0xe0,
|
0x3b, 0x80, 0xcf, 0xf3, 0xaf, 0xf3, 0xf, 0xe0,
|
||||||
0x1f, 0x90, 0x5f, 0x40, 0x9e, 0x0,
|
0x1f, 0x90, 0x5f, 0x40, 0x9e, 0x0,
|
||||||
|
|
||||||
/* U+002D "-" */
|
|
||||||
0x0, 0x0, 0x0, 0xa, 0xff, 0xff, 0xfd, 0xaf,
|
|
||||||
0xff, 0xff, 0xd0,
|
|
||||||
|
|
||||||
/* U+002E "." */
|
/* U+002E "." */
|
||||||
0x4, 0x10, 0x9f, 0xf1, 0xdf, 0xf4, 0x6f, 0xb0,
|
0x4, 0x10, 0x9f, 0xf1, 0xdf, 0xf4, 0x6f, 0xb0,
|
||||||
|
|
||||||
@ -1138,23 +1160,6 @@ static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
|
|||||||
0x0, 0x9f, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x0,
|
0x0, 0x9f, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x0,
|
||||||
0x3a, 0xdf, 0xfd, 0x81, 0x0,
|
0x3a, 0xdf, 0xfd, 0x81, 0x0,
|
||||||
|
|
||||||
/* U+00EA "ê" */
|
|
||||||
0x0, 0x0, 0x4f, 0xfd, 0x10, 0x0, 0x0, 0x0,
|
|
||||||
0x4f, 0xe8, 0xfd, 0x10, 0x0, 0x0, 0x4f, 0xd2,
|
|
||||||
0x4, 0xfd, 0x10, 0x0, 0x2, 0x30, 0x0, 0x1,
|
|
||||||
0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
|
|
||||||
0x0, 0x0, 0x5b, 0xef, 0xda, 0x30, 0x0, 0x0,
|
|
||||||
0xaf, 0xff, 0xff, 0xff, 0x80, 0x0, 0xaf, 0xe6,
|
|
||||||
0x10, 0x28, 0xff, 0x70, 0x4f, 0xf2, 0x0, 0x0,
|
|
||||||
0x5, 0xff, 0x1a, 0xf9, 0x0, 0x0, 0x0, 0xc,
|
|
||||||
0xf6, 0xdf, 0xcb, 0xbb, 0xbb, 0xbb, 0xdf, 0x9f,
|
|
||||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xdf, 0x60,
|
|
||||||
0x0, 0x0, 0x0, 0x0, 0xa, 0xfc, 0x0, 0x0,
|
|
||||||
0x0, 0x0, 0x0, 0x4f, 0xf6, 0x0, 0x0, 0x0,
|
|
||||||
0x60, 0x0, 0xaf, 0xfa, 0x31, 0x14, 0xbf, 0x80,
|
|
||||||
0x0, 0x9f, 0xff, 0xff, 0xff, 0xf4, 0x0, 0x0,
|
|
||||||
0x3a, 0xdf, 0xfd, 0x81, 0x0,
|
|
||||||
|
|
||||||
/* U+00FB "û" */
|
/* U+00FB "û" */
|
||||||
0x0, 0x0, 0x8f, 0xfa, 0x0, 0x0, 0x0, 0x0,
|
0x0, 0x0, 0x8f, 0xfa, 0x0, 0x0, 0x0, 0x0,
|
||||||
0x9f, 0xba, 0xfa, 0x0, 0x0, 0x0, 0x9f, 0x90,
|
0x9f, 0xba, 0xfa, 0x0, 0x0, 0x0, 0x9f, 0x90,
|
||||||
@ -1310,116 +1315,116 @@ 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 = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
|
||||||
{.bitmap_index = 0, .adv_w = 103, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 103, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 0, .adv_w = 324, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 0, .adv_w = 324, .box_w = 20, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 170, .adv_w = 87, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = -4},
|
{.bitmap_index = 170, .adv_w = 81, .box_w = 3, .box_h = 7, .ofs_x = 1, .ofs_y = 10},
|
||||||
{.bitmap_index = 184, .adv_w = 147, .box_w = 7, .box_h = 3, .ofs_x = 1, .ofs_y = 6},
|
{.bitmap_index = 181, .adv_w = 129, .box_w = 6, .box_h = 23, .ofs_x = 2, .ofs_y = -5},
|
||||||
{.bitmap_index = 195, .adv_w = 87, .box_w = 4, .box_h = 4, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 250, .adv_w = 130, .box_w = 6, .box_h = 23, .ofs_x = 0, .ofs_y = -5},
|
||||||
{.bitmap_index = 203, .adv_w = 256, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 319, .adv_w = 87, .box_w = 4, .box_h = 7, .ofs_x = 1, .ofs_y = -4},
|
||||||
{.bitmap_index = 322, .adv_w = 142, .box_w = 7, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 333, .adv_w = 87, .box_w = 4, .box_h = 4, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 382, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 341, .adv_w = 256, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 493, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 460, .adv_w = 142, .box_w = 7, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 604, .adv_w = 257, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 520, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 740, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 631, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 851, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 742, .adv_w = 257, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 970, .adv_w = 230, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 878, .adv_w = 220, .box_w = 13, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1089, .adv_w = 247, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 989, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1208, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 1108, .adv_w = 230, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1327, .adv_w = 87, .box_w = 4, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1227, .adv_w = 247, .box_w = 14, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1353, .adv_w = 281, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 1346, .adv_w = 237, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 1515, .adv_w = 291, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 1465, .adv_w = 87, .box_w = 4, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1643, .adv_w = 278, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 1491, .adv_w = 281, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 1779, .adv_w = 317, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 1653, .adv_w = 291, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 1924, .adv_w = 257, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 1781, .adv_w = 278, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2035, .adv_w = 244, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 1917, .adv_w = 317, .box_w = 17, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2146, .adv_w = 296, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2062, .adv_w = 257, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2282, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2173, .adv_w = 244, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2410, .adv_w = 119, .box_w = 3, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2284, .adv_w = 296, .box_w = 16, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2436, .adv_w = 197, .box_w = 11, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 2420, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2530, .adv_w = 276, .box_w = 16, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2548, .adv_w = 119, .box_w = 3, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2666, .adv_w = 228, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2574, .adv_w = 197, .box_w = 11, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 2777, .adv_w = 367, .box_w = 19, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2668, .adv_w = 276, .box_w = 16, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 2939, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 2804, .adv_w = 228, .box_w = 13, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 3067, .adv_w = 323, .box_w = 19, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 2915, .adv_w = 367, .box_w = 19, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 3229, .adv_w = 277, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 3077, .adv_w = 312, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 3357, .adv_w = 323, .box_w = 19, .box_h = 20, .ofs_x = 1, .ofs_y = -3},
|
{.bitmap_index = 3205, .adv_w = 323, .box_w = 19, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 3547, .adv_w = 279, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 3367, .adv_w = 277, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 3675, .adv_w = 238, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3495, .adv_w = 323, .box_w = 19, .box_h = 20, .ofs_x = 1, .ofs_y = -3},
|
||||||
{.bitmap_index = 3794, .adv_w = 225, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 3685, .adv_w = 279, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 3913, .adv_w = 304, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 3813, .adv_w = 238, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4041, .adv_w = 273, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 3932, .adv_w = 225, .box_w = 14, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4203, .adv_w = 432, .box_w = 27, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4051, .adv_w = 304, .box_w = 15, .box_h = 17, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 4433, .adv_w = 258, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 4179, .adv_w = 273, .box_w = 19, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4569, .adv_w = 248, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 4341, .adv_w = 432, .box_w = 27, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4714, .adv_w = 252, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 4571, .adv_w = 258, .box_w = 16, .box_h = 17, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 4842, .adv_w = 230, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 4707, .adv_w = 248, .box_w = 17, .box_h = 17, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 4920, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 4852, .adv_w = 252, .box_w = 15, .box_h = 17, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5046, .adv_w = 219, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 4980, .adv_w = 230, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5124, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 5058, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 5250, .adv_w = 235, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 5184, .adv_w = 219, .box_w = 12, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5335, .adv_w = 136, .box_w = 10, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 5262, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5425, .adv_w = 265, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5},
|
{.bitmap_index = 5388, .adv_w = 235, .box_w = 13, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5551, .adv_w = 262, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 5473, .adv_w = 136, .box_w = 10, .box_h = 18, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 5668, .adv_w = 107, .box_w = 4, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 5563, .adv_w = 265, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5},
|
||||||
{.bitmap_index = 5704, .adv_w = 109, .box_w = 9, .box_h = 23, .ofs_x = -3, .ofs_y = -5},
|
{.bitmap_index = 5689, .adv_w = 262, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 5808, .adv_w = 237, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 5806, .adv_w = 107, .box_w = 4, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 5925, .adv_w = 107, .box_w = 3, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 5842, .adv_w = 109, .box_w = 9, .box_h = 23, .ofs_x = -3, .ofs_y = -5},
|
||||||
{.bitmap_index = 5952, .adv_w = 406, .box_w = 22, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 5946, .adv_w = 237, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 6095, .adv_w = 262, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 6063, .adv_w = 107, .box_w = 3, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 6180, .adv_w = 244, .box_w = 14, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 6090, .adv_w = 406, .box_w = 22, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 6271, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = -5},
|
{.bitmap_index = 6233, .adv_w = 262, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 6397, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5},
|
{.bitmap_index = 6318, .adv_w = 244, .box_w = 14, .box_h = 13, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 6523, .adv_w = 157, .box_w = 8, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 6409, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 2, .ofs_y = -5},
|
||||||
{.bitmap_index = 6575, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 6535, .adv_w = 262, .box_w = 14, .box_h = 18, .ofs_x = 1, .ofs_y = -5},
|
||||||
{.bitmap_index = 6653, .adv_w = 159, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 6661, .adv_w = 157, .box_w = 8, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 6733, .adv_w = 260, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 6713, .adv_w = 192, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 6818, .adv_w = 215, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
{.bitmap_index = 6791, .adv_w = 159, .box_w = 10, .box_h = 16, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 6916, .adv_w = 345, .box_w = 22, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 6871, .adv_w = 260, .box_w = 13, .box_h = 13, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 7059, .adv_w = 212, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 6956, .adv_w = 215, .box_w = 15, .box_h = 13, .ofs_x = -1, .ofs_y = 0},
|
||||||
{.bitmap_index = 7144, .adv_w = 215, .box_w = 15, .box_h = 18, .ofs_x = -1, .ofs_y = -5},
|
{.bitmap_index = 7054, .adv_w = 345, .box_w = 22, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 7279, .adv_w = 200, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
{.bitmap_index = 7197, .adv_w = 212, .box_w = 13, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 7357, .adv_w = 161, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 9},
|
{.bitmap_index = 7282, .adv_w = 215, .box_w = 15, .box_h = 18, .ofs_x = -1, .ofs_y = -5},
|
||||||
{.bitmap_index = 7397, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 7417, .adv_w = 200, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = 0},
|
||||||
{.bitmap_index = 7514, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 7495, .adv_w = 161, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 9},
|
||||||
{.bitmap_index = 7631, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
{.bitmap_index = 7535, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 7748, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
{.bitmap_index = 7652, .adv_w = 235, .box_w = 13, .box_h = 18, .ofs_x = 1, .ofs_y = 0},
|
||||||
{.bitmap_index = 7865, .adv_w = 432, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -3},
|
{.bitmap_index = 7769, .adv_w = 260, .box_w = 13, .box_h = 18, .ofs_x = 2, .ofs_y = 0},
|
||||||
{.bitmap_index = 8215, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
|
{.bitmap_index = 7886, .adv_w = 432, .box_w = 28, .box_h = 25, .ofs_x = 0, .ofs_y = -3},
|
||||||
{.bitmap_index = 8545, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3}
|
{.bitmap_index = 8236, .adv_w = 480, .box_w = 30, .box_h = 22, .ofs_x = 0, .ofs_y = -2},
|
||||||
|
{.bitmap_index = 8566, .adv_w = 384, .box_w = 24, .box_h = 24, .ofs_x = 0, .ofs_y = -3}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*---------------------
|
/*---------------------
|
||||||
* CHARACTER MAPPING
|
* CHARACTER MAPPING
|
||||||
*--------------------*/
|
*--------------------*/
|
||||||
|
|
||||||
static const uint16_t unicode_list_0[] = {
|
static const uint8_t glyph_id_ofs_list_0[] = {
|
||||||
0x0, 0x5, 0xc, 0xd, 0xe
|
0, 0, 0, 0, 0, 1, 0, 2,
|
||||||
|
3, 4, 0, 0, 5, 0, 6, 0,
|
||||||
|
7, 8, 9, 10, 11, 12, 13, 14,
|
||||||
|
15, 16, 17
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t unicode_list_4[] = {
|
static const uint16_t unicode_list_3[] = {
|
||||||
0x0, 0x38, 0x39, 0x3a, 0x4b, 0xef65, 0xf012, 0xf4c5
|
0x0, 0x38, 0x39, 0x4b, 0xef65, 0xf012, 0xf4c5
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Collect the unicode lists and glyph_id offsets*/
|
/*Collect the unicode lists and glyph_id offsets*/
|
||||||
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
static const lv_font_fmt_txt_cmap_t cmaps[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.range_start = 32, .range_length = 15, .glyph_id_start = 1,
|
.range_start = 32, .range_length = 27, .glyph_id_start = 1,
|
||||||
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 5, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = glyph_id_ofs_list_0, .list_length = 27, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_FULL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 48, .range_length = 11, .glyph_id_start = 6,
|
.range_start = 65, .range_length = 26, .glyph_id_start = 19,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 65, .range_length = 26, .glyph_id_start = 17,
|
.range_start = 97, .range_length = 26, .glyph_id_start = 45,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.range_start = 97, .range_length = 26, .glyph_id_start = 43,
|
.range_start = 176, .range_length = 62662, .glyph_id_start = 71,
|
||||||
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
|
.unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 7, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
||||||
},
|
|
||||||
{
|
|
||||||
.range_start = 176, .range_length = 62662, .glyph_id_start = 69,
|
|
||||||
.unicode_list = unicode_list_4, .glyph_id_ofs_list = NULL, .list_length = 8, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1431,254 +1436,275 @@ static const lv_font_fmt_txt_cmap_t cmaps[] =
|
|||||||
/*Map glyph_ids to kern left classes*/
|
/*Map glyph_ids to kern left classes*/
|
||||||
static const uint8_t kern_left_class_mapping[] =
|
static const uint8_t kern_left_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 0,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
5, 6, 7, 8, 9, 10, 11, 4,
|
6, 0, 7, 8, 9, 10, 11, 12,
|
||||||
12, 13, 14, 15, 16, 17, 18, 19,
|
13, 6, 14, 15, 16, 17, 18, 19,
|
||||||
20, 20, 21, 22, 23, 20, 20, 16,
|
20, 21, 22, 22, 23, 24, 25, 22,
|
||||||
24, 16, 25, 26, 27, 21, 28, 28,
|
22, 18, 26, 18, 27, 28, 29, 23,
|
||||||
29, 30, 31, 32, 33, 34, 35, 36,
|
30, 30, 31, 32, 33, 34, 35, 36,
|
||||||
37, 38, 32, 38, 38, 39, 35, 32,
|
37, 38, 39, 40, 34, 40, 40, 41,
|
||||||
32, 33, 33, 40, 41, 42, 43, 38,
|
37, 34, 34, 35, 35, 42, 43, 44,
|
||||||
44, 44, 45, 44, 46, 47, 36, 36,
|
45, 40, 46, 46, 47, 46, 48, 49,
|
||||||
36, 38, 0, 0, 0
|
38, 38, 40, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Map glyph_ids to kern right classes*/
|
/*Map glyph_ids to kern right classes*/
|
||||||
static const uint8_t kern_right_class_mapping[] =
|
static const uint8_t kern_right_class_mapping[] =
|
||||||
{
|
{
|
||||||
0, 0, 1, 2, 3, 2, 4, 5,
|
0, 0, 1, 2, 3, 4, 5, 5,
|
||||||
6, 7, 8, 9, 4, 10, 11, 12,
|
6, 7, 8, 9, 10, 11, 6, 12,
|
||||||
13, 14, 15, 16, 15, 15, 15, 16,
|
13, 14, 15, 16, 17, 18, 17, 17,
|
||||||
15, 15, 17, 15, 15, 15, 15, 16,
|
17, 18, 17, 17, 19, 17, 17, 17,
|
||||||
15, 16, 15, 18, 19, 20, 21, 21,
|
17, 18, 17, 18, 17, 20, 21, 22,
|
||||||
22, 23, 24, 25, 26, 27, 27, 27,
|
23, 23, 24, 25, 26, 27, 28, 29,
|
||||||
0, 27, 26, 28, 29, 26, 26, 30,
|
29, 29, 0, 29, 28, 30, 31, 28,
|
||||||
30, 27, 30, 27, 30, 31, 32, 33,
|
28, 32, 32, 29, 32, 29, 32, 33,
|
||||||
34, 34, 35, 34, 36, 37, 27, 27,
|
34, 35, 36, 36, 37, 36, 38, 39,
|
||||||
27, 33, 0, 0, 0
|
29, 29, 35, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
/*Kern values between classes*/
|
/*Kern values between classes*/
|
||||||
static const int8_t kern_class_values[] =
|
static const int8_t kern_class_values[] =
|
||||||
{
|
{
|
||||||
-46, 12, 8, 0, -8, 4, 4, 13,
|
-46, -10, 0, -8, 12, 0, -8, 4,
|
||||||
8, -7, 8, 0, 0, 0, 0, 0,
|
4, 13, 8, -7, 8, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -10, -24, 0, -3,
|
0, 0, 0, 0, 0, 0, -10, 10,
|
||||||
-5, -5, 4, 4, -3, 0, -5, 4,
|
17, 0, 0, -21, 3, 18, 8, 7,
|
||||||
|
-15, 3, 19, 1, 16, 4, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 8, 0, 0,
|
||||||
|
0, 0, 0, 0, 4, 0, 0, -8,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -24, -14, -3, 1, 3, -7, -5,
|
|
||||||
-8, 3, 0, -4, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-5, 3, 0, -1, -1, -4, 0, 0,
|
0, -14, 0, 0, 0, 0, 0, 0,
|
||||||
-3, 0, 0, 0, -3, 0, 0, -9,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -8, 0, -10, -13, -13, -7, 0,
|
0, 0, 0, 0, -24, -21, 0, 0,
|
||||||
0, 0, 0, -3, 0, 0, 4, 0,
|
0, -5, -5, 4, 4, -3, 0, -5,
|
||||||
3, -4, 0, 1, 4, 4, -3, -1,
|
4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -24, 0, 3, 0, 0, -5,
|
||||||
|
0, -1, -1, -4, 0, 0, -3, 0,
|
||||||
|
0, 0, -3, 0, 0, -9, 0, -8,
|
||||||
|
0, -10, -13, -13, -7, 0, 0, 0,
|
||||||
|
0, -3, 0, 0, 4, 0, 3, -4,
|
||||||
|
0, 1, 4, 0, 0, 0, 4, -1,
|
||||||
0, 0, 0, -7, 0, -1, 0, 0,
|
0, 0, 0, -7, 0, -1, 0, 0,
|
||||||
0, 1, 0, 0, 5, 0, -3, 0,
|
0, 1, 0, 0, 5, 0, -3, 0,
|
||||||
-5, 0, -7, 0, 0, 0, -4, 0,
|
-5, 0, -7, 0, 0, 0, -4, 0,
|
||||||
0, 0, 0, 0, -1, 1, -3, -3,
|
0, 0, 0, 0, -1, 1, -3, -3,
|
||||||
0, -4, 0, 0, 0, 0, -2, -2,
|
0, -4, -4, 0, 0, 0, 0, 0,
|
||||||
0, -4, -5, 0, 0, 0, 1, 0,
|
-2, -2, 0, -4, -5, 0, 0, 0,
|
||||||
0, 0, 0, -3, 0, -4, -4, -4,
|
1, 0, 0, 0, 0, -3, 0, -4,
|
||||||
0, 0, 0, 0, 0, -2, 0, 0,
|
-4, -4, 0, 0, 0, 0, 0, -2,
|
||||||
0, 0, -3, -5, 0, -6, -12, 8,
|
0, 0, 0, 0, -3, -5, 0, -6,
|
||||||
4, 0, -10, -1, -5, 0, -1, -18,
|
-12, -12, 0, 0, 8, 0, -10, -1,
|
||||||
4, -3, 3, 0, 0, 4, 1, -3,
|
-5, 0, -1, -18, 4, -3, 3, 0,
|
||||||
-20, 0, -20, -3, -33, -3, 11, 0,
|
0, 4, 1, -3, -20, 0, -20, -3,
|
||||||
5, 0, 0, 0, 0, 1, 0, -7,
|
-33, -3, 11, 0, 5, 0, 0, 0,
|
||||||
-5, 0, -12, -4, 0, 0, 0, 0,
|
0, 1, 0, -7, -5, 0, -12, -4,
|
||||||
-2, -2, 0, -2, -5, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -2, -2,
|
||||||
0, 0, 0, -4, 0, -4, 0, -3,
|
0, -2, -5, 0, 0, 0, 0, 0,
|
||||||
-5, -3, 0, 0, 0, 0, 0, 0,
|
0, -4, 0, -4, 0, -3, -5, -3,
|
||||||
0, 0, 0, 0, -3, -3, 0, -5,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-8, 4, 2, 0, 0, 0, 0, 0,
|
0, 0, -3, -3, 0, -5, -8, -3,
|
||||||
|
0, 0, 4, 0, 0, 0, 0, 0,
|
||||||
0, -3, 0, 0, 0, 3, 0, 0,
|
0, -3, 0, 0, 0, 3, 0, 0,
|
||||||
0, 0, -4, 0, -4, -3, -5, 0,
|
0, 0, -4, 0, -4, -3, -5, 0,
|
||||||
0, 0, 3, 0, -3, 0, 0, 0,
|
0, 0, 3, 0, -3, 0, 0, 0,
|
||||||
0, -4, -6, 0, -7, 1, -20, -19,
|
0, -4, -6, 0, -7, 1, 12, 0,
|
||||||
-8, 4, 0, -3, -25, -7, 0, -7,
|
0, -20, -8, 4, 0, -3, -25, -7,
|
||||||
0, -8, -25, 0, -7, -10, -3, 0,
|
0, -7, 0, -8, -25, 0, -7, -10,
|
||||||
0, 2, -1, 3, -3, -15, 0, -19,
|
-3, 0, 0, 2, -1, 3, -3, -15,
|
||||||
-9, -8, -9, -12, -5, -10, -1, -7,
|
0, -19, -9, -8, -9, -12, -5, -10,
|
||||||
-10, 2, -4, 4, 0, 0, 0, 0,
|
-1, -7, -10, 2, -4, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, -2,
|
4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, -1, 0, -4, 0, -7, -8,
|
0, 0, 0, -2, 0, 0, -1, 0,
|
||||||
-8, -1, 0, 0, 0, 0, -3, 0,
|
-4, 0, -7, -8, -8, -1, 0, 0,
|
||||||
0, 0, 0, 2, -2, 0, 0, 0,
|
0, 0, -3, 0, 0, 0, 0, 2,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
-2, 0, 0, 0, 4, 0, 0, 0,
|
||||||
3, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 3, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 13, -7, -3,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, -17, 0, 0, 13, -3,
|
||||||
-16, 0, 4, -6, 0, -19, -2, -5,
|
-16, 0, 4, -6, 0, -19, -2, -5,
|
||||||
4, 5, 0, -4, 6, 0, -13, -6,
|
4, 5, 0, -4, 6, 0, -13, -6,
|
||||||
-14, -13, -16, 0, 0, 0, -2, 0,
|
-14, -13, -16, 0, 0, 0, -2, 0,
|
||||||
0, 0, -2, -2, -4, -10, -13, -1,
|
0, 0, -2, -2, -4, -10, -13, -1,
|
||||||
-36, 0, 1, 0, 0, 0, 0, 0,
|
-36, 0, 0, 0, 0, 1, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -4, 0, -2, -4, -6,
|
0, 0, 0, 0, 0, -4, 0, -2,
|
||||||
|
-4, -6, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 5,
|
0, 0, 0, 0, 5, -8, 4, -3,
|
||||||
-1, -8, 4, -3, -1, -10, -4, 0,
|
-1, -10, -4, 0, -5, -4, -3, -7,
|
||||||
-5, -4, -3, -7, 0, -6, 0, -1,
|
0, -6, 0, -1, -3, -1, -3, -7,
|
||||||
-3, -1, -3, -7, -5, 0, -3, 0,
|
-5, 0, -3, 0, -8, 0, 0, 0,
|
||||||
-8, 0, 0, 0, -8, 0, -7, 0,
|
-8, 0, -7, 0, -7, -7, 4, 0,
|
||||||
-7, -7, 4, 0, -8, 3, 0, -4,
|
-7, 0, 5, -8, 0, -4, -4, -5,
|
||||||
-4, -5, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, -4, 0,
|
||||||
-4, 0, 0, -6, 0, -4, 0, -8,
|
0, -6, 0, -4, 0, -8, -10, -12,
|
||||||
-10, -12, -3, 0, 0, 0, 0, 31,
|
-3, 0, 0, 0, 0, 31, 0, 0,
|
||||||
0, 0, 2, 0, 0, -5, 0, 4,
|
2, 0, 0, -5, 0, 4, 0, 0,
|
||||||
0, 4, -8, -5, 0, -3, -5, -12,
|
0, 0, 4, -5, 0, -3, -5, -12,
|
||||||
-3, -3, -3, -1, -3, 0, 0, -1,
|
-3, -3, -3, -1, -3, 0, 0, -1,
|
||||||
0, 0, 0, 0, -4, -3, -3, 0,
|
0, 0, 0, 0, -4, -3, -3, 0,
|
||||||
-3, 0, -3, 0, 0, 0, -3, -5,
|
-3, 0, -3, 0, 0, 0, -3, -5,
|
||||||
-3, -3, -5, -3, 0, 0, -4, 0,
|
-3, -3, -5, -3, 0, 0, 15, 0,
|
||||||
-5, 6, 0, 0, -18, -7, 4, -7,
|
-3, -4, -5, 6, 0, 0, -18, -7,
|
||||||
3, 0, -12, 0, -3, -6, -1, 2,
|
4, -7, 3, 0, -12, 0, -3, -6,
|
||||||
0, 0, -7, 0, 0, -7, 0, -7,
|
-1, 2, 0, 0, -7, 0, 0, -7,
|
||||||
-4, -6, -4, -4, 0, -7, 2, -7,
|
0, -7, -4, -6, -4, -4, 0, -7,
|
||||||
-7, 12, 0, 4, 0, 0, 0, 0,
|
2, -7, -7, 12, 0, 0, 0, 0,
|
||||||
|
4, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -3, 0, 0, 0, 0,
|
0, -3, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, -3, 0, 0,
|
0, 0, 0, 0, 0, 0, -3, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -6, 0, 0, 0, 0, -5, 0,
|
0, -6, 0, 0, 0, 0, -5, 0,
|
||||||
0, -4, -4, 0, 0, 0, 0, 0,
|
0, -4, -4, 0, 0, 0, 0, 0,
|
||||||
-2, 0, 0, 0, 0, 0, -3, 0,
|
-2, 0, 0, 0, 0, 0, -3, 0,
|
||||||
0, 0, 0, -13, -8, 8, 1, -3,
|
0, 0, 0, 0, 0, 0, -8, 8,
|
||||||
-18, 0, 0, -8, -4, 0, -11, 0,
|
1, -3, -18, 0, 0, -8, -4, 0,
|
||||||
-10, 0, -6, -17, -4, -15, -15, -18,
|
-11, 0, -10, 0, -6, -17, -4, -15,
|
||||||
0, -5, 0, -9, -4, -1, -4, -7,
|
-15, -18, 0, -5, 0, -9, -4, -1,
|
||||||
-10, -7, -14, -16, -9, -4, 0, 12,
|
-4, -7, -10, -7, -14, -16, -9, -4,
|
||||||
-3, -8, -14, 0, 1, -12, 0, -19,
|
0, 0, 0, 0, 12, -8, -14, 0,
|
||||||
-3, -4, 8, 1, 0, -5, 0, -3,
|
1, -12, 0, -19, -3, -4, 8, 1,
|
||||||
-25, -5, -20, -4, -28, 0, 1, 0,
|
0, -5, 0, -3, -25, -5, -20, -4,
|
||||||
-3, 0, 0, 0, 0, -2, -3, -15,
|
-28, 0, 1, 0, -3, 0, 0, 0,
|
||||||
-3, 0, -25, 0, -11, -1, 0, 0,
|
0, -2, -3, -15, -3, 0, -25, 0,
|
||||||
-2, -6, -12, -4, 0, -3, 0, 0,
|
0, 0, -3, -11, 0, 0, -2, -6,
|
||||||
-17, -4, 0, -13, 0, -12, -3, -7,
|
-12, -4, 0, -3, 0, 0, -17, -4,
|
||||||
-10, -4, -7, -6, 0, -5, -7, -4,
|
0, -13, 0, -12, -3, -7, -10, -4,
|
||||||
-7, 0, 2, 0, -3, -13, 0, 8,
|
-7, -6, 0, -5, -7, -4, -7, 0,
|
||||||
0, 0, -1, 0, 0, 0, -3, -8,
|
2, 0, -3, -13, 0, 8, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, -3, -8,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-4, 0, -4, 0, 0, -8, -4, 0,
|
-4, 0, -4, 0, 0, -8, -4, 0,
|
||||||
-2, 0, 0, 0, 0, 0, 0, 2,
|
-2, 0, 0, 0, 0, 0, 0, 2,
|
||||||
0, 0, 0, 0, 6, 0, 8, 7,
|
0, 0, 0, 0, 6, 0, -12, 0,
|
||||||
0, -4, 0, -3, 4, 0, -4, 0,
|
0, 8, 0, -4, 0, -3, 4, 0,
|
||||||
-4, -2, 0, 0, 0, 0, 0, -4,
|
-4, 0, -4, -2, 0, 0, 0, 0,
|
||||||
0, 0, -5, -6, 0, 0, 0, 0,
|
0, -4, 0, 0, -5, -6, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -4, -4,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -6, 0, -12, -13, -8, 15, 7,
|
-4, -4, 0, -6, 0, 3, -6, 0,
|
||||||
4, -33, -3, 8, -4, 0, -4, -13,
|
-12, -8, 15, 7, 4, -33, -3, 8,
|
||||||
0, -4, -4, -3, 4, -5, -3, -12,
|
-4, 0, -4, -13, 0, -4, -4, -3,
|
||||||
-3, 0, -11, 0, -21, -5, 11, -5,
|
4, -5, -3, -12, -3, 0, -11, 0,
|
||||||
-15, 1, -5, -13, -13, -4, 15, 0,
|
-21, -5, 11, -5, -15, 1, -5, -13,
|
||||||
-14, -9, -10, 12, 0, 1, -28, -3,
|
-13, -4, 15, 0, 0, 0, 3, -14,
|
||||||
4, -7, -3, -9, -14, -6, -8, -6,
|
-10, 12, 0, 1, -28, -3, 4, -7,
|
||||||
-6, -3, 0, 0, -9, -8, -4, -21,
|
-3, -9, -14, -6, -8, -6, -6, -3,
|
||||||
0, -21, -5, 0, -13, -22, -1, -12,
|
0, 0, -9, -8, -4, -21, 0, -21,
|
||||||
-7, -13, -11, 10, 0, 0, -7, -13,
|
-5, 0, -13, -22, -1, -12, -7, -13,
|
||||||
|
-11, 10, 0, 0, -3, 0, 0, -13,
|
||||||
4, 0, 0, -20, 0, -4, -8, -7,
|
4, 0, 0, -20, 0, -4, -8, -7,
|
||||||
-3, -13, -9, -10, 0, -5, -12, -4,
|
-3, -13, -9, -10, 0, -5, -12, -4,
|
||||||
-9, -7, -12, -4, -7, 0, -12, -4,
|
-9, -7, -12, -4, -7, 0, -12, -4,
|
||||||
0, -4, -8, -9, -10, -11, -15, -5,
|
0, -4, -8, -9, -10, -11, -15, -5,
|
||||||
-8, 0, -14, -12, -13, 13, -4, 2,
|
-8, 0, 0, -5, 2, -14, -13, 13,
|
||||||
-36, -7, 8, -8, -7, -14, -16, -5,
|
-4, 2, -36, -7, 8, -8, -7, -14,
|
||||||
-12, -4, -6, -3, -4, -8, -12, -1,
|
-16, -5, -12, -4, -6, -3, -4, -8,
|
||||||
0, -25, 0, -23, -9, 9, -15, -26,
|
-12, -1, 0, -25, 0, -23, -9, 9,
|
||||||
-8, -13, -16, -19, -13, 8, 0, 8,
|
-15, -26, -8, -13, -16, -19, -13, 8,
|
||||||
-5, -7, 8, 0, 0, -12, -1, 0,
|
0, 0, 0, 0, 8, -7, 8, 0,
|
||||||
-1, 0, 1, 0, 0, -3, 0, 0,
|
0, -12, -1, 0, -1, 0, 1, 0,
|
||||||
0, 0, 0, -4, 0, 0, 1, 0,
|
0, -3, 0, 0, 0, 0, 0, -4,
|
||||||
-5, 0, 0, 0, 0, -3, -3, -5,
|
0, 0, 1, 0, -5, 0, 0, 0,
|
||||||
0, 0, 0, -11, 0, 0, 0, -8,
|
0, -3, -3, -5, 0, 0, 0, -11,
|
||||||
-2, 0, 0, 0, -8, 0, -5, 0,
|
0, 0, 0, 0, 0, -8, -2, 0,
|
||||||
|
0, 0, -8, 0, -5, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 1, 0, 0,
|
0, 0, 0, 1, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -4, 0, 0, -7,
|
0, 0, -4, 0, 0, -7, -10, -6,
|
||||||
-10, -5, 4, 0, -10, -4, -9, 0,
|
0, 0, -5, 0, -10, -4, -9, 0,
|
||||||
0, -10, 0, -4, 0, -4, 0, 0,
|
0, -10, 0, -4, 0, -4, 0, 0,
|
||||||
0, 0, -31, -7, -15, -4, -14, 0,
|
0, 0, -31, -7, -15, -4, -14, 0,
|
||||||
-2, 0, 0, 0, 0, 0, 0, 0,
|
-2, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -6, -7, -3, -7, 0, 8, -4,
|
0, -6, -7, -3, -7, 0, 0, 0,
|
||||||
-3, -9, -3, -7, -7, 0, -5, -2,
|
-8, 8, -3, -9, -3, -7, -7, 0,
|
||||||
-3, 3, 0, 0, -1, 0, 0, -34,
|
-5, -2, -3, 3, 0, 0, -1, 0,
|
||||||
-3, -5, 0, -8, 0, 0, -3, -3,
|
0, -34, -3, -5, 0, -8, 0, 0,
|
||||||
0, 0, 0, 0, 3, 0, -3, -7,
|
-3, -3, 0, 0, 0, 0, 3, 0,
|
||||||
-3, 7, 0, 0, 0, 0, 0, 0,
|
-3, -7, -3, 7, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 5, 0, 0, 0, 0, 0, -3,
|
0, 0, 0, 0, 0, 5, 0, 0,
|
||||||
0, 4, 0, -10, -4, -8, 0, 0,
|
0, 0, 0, -3, -8, 0, 0, 0,
|
||||||
-11, 0, -4, 0, 0, 0, 0, 0,
|
0, -10, -4, -8, 0, 0, -11, 0,
|
||||||
0, -37, 0, -8, -14, -19, 0, -6,
|
-4, 0, 0, 0, 0, 0, 0, -37,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, -8, -14, -19, 0, -6, 0, 0,
|
||||||
-4, -6, -2, -6, 7, -4, -4, 5,
|
0, 0, 0, 0, 0, 0, -4, -6,
|
||||||
|
-2, -6, 7, 0, 0, 12, -4, 5,
|
||||||
19, 7, 8, -10, 5, 16, 5, 11,
|
19, 7, 8, -10, 5, 16, 5, 11,
|
||||||
8, 0, 0, 0, 0, 0, 0, 0,
|
8, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -4, 0, -3, 31,
|
0, 0, 0, 0, -4, 0, -3, 31,
|
||||||
17, 31, 0, 0, 0, 4, 0, 0,
|
17, 31, 0, 0, 0, 4, 0, 0,
|
||||||
14, 0, 0, 0, 0, -3, 0, 0,
|
14, 0, 0, 0, 0, 0, 0, -3,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, -6, -32, -5, -3, -16, -19,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 4,
|
|
||||||
-9, -4, 3, 7, 4, -12, 0, -1,
|
|
||||||
-3, 4, 0, 0, 0, 0, 0, 0,
|
|
||||||
-10, 0, -3, -3, -8, 0, -4, 0,
|
|
||||||
-8, -3, 0, -3, -7, 0, -4, -11,
|
|
||||||
-8, -5, 0, 0, 0, 0, 0, -3,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -6, -32, -5, -3,
|
0, 0, 0, 0, -6, -32, -5, -3,
|
||||||
-16, -19, 0, 0, 0, 0, 0, 19,
|
-16, -19, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, -4, -3, 1, -2, 1, -3, -10,
|
0, 0, 0, 0, 4, -4, 3, 7,
|
||||||
|
4, -12, 0, -1, -3, 4, 0, 0,
|
||||||
|
0, 0, 0, 0, -10, 0, -3, -3,
|
||||||
|
-8, 0, -4, 0, -8, -3, 0, -3,
|
||||||
|
-7, 0, -4, -11, -8, -5, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, -3, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, -6, -32, -5, -3, -16, -19,
|
||||||
|
0, 0, 0, 0, 0, 19, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
-5, -3, -4, 1, -2, 1, -3, -10,
|
||||||
1, 8, 1, 3, 1, -15, -5, -9,
|
1, 8, 1, 3, 1, -15, -5, -9,
|
||||||
0, -6, -15, -7, -10, -16, -15, 0,
|
0, -6, -15, -7, -10, -16, -15, 0,
|
||||||
-3, -3, -5, -3, 0, -3, -1, 6,
|
-3, -3, -5, -3, 0, -3, -1, 6,
|
||||||
0, 6, -3, 0, 12, 0, 0, 0,
|
0, 6, -3, 0, 12, 0, 0, 0,
|
||||||
0, -3, -4, -4, 0, 0, -10, 0,
|
0, 0, 0, -3, -4, -4, 0, 0,
|
||||||
-2, 0, 0, 0, 0, 0, 0, 0,
|
-10, 0, -2, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, -4, -4,
|
|
||||||
0, -5, 0, 4, -4, -7, -7, -3,
|
|
||||||
0, -11, -3, -8, -3, -5, 0, 0,
|
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, -7, 0, 0, 0,
|
-4, -4, 0, -5, 0, 0, 0, 0,
|
||||||
0, -5, 0, -4, 0, 0, -2, 0,
|
4, -7, -7, -3, 0, -11, -3, -8,
|
||||||
-13, -5, 3, 4, 4, -1, -11, 3,
|
-3, -5, 0, 0, 0, 0, 0, 0,
|
||||||
6, 3, 12, 3, -10, 0, -3, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
-3, -15, 0, 0, -12, -10, 0, -7,
|
-7, 0, 0, 0, 0, -5, 0, -4,
|
||||||
0, -6, 0, -6, 0, -3, 6, 0,
|
0, 0, -2, 0, 0, 0, 0, -13,
|
||||||
-3, -12, -4, 14, 0, 0, -9, -4,
|
3, 4, 4, -1, -11, 3, 6, 3,
|
||||||
|
12, 3, -10, 0, -3, 0, -3, -15,
|
||||||
|
0, 0, -12, -10, 0, -7, 0, -6,
|
||||||
|
0, -6, 0, -3, 6, 0, -3, -12,
|
||||||
|
-4, 14, 0, 0, 0, 0, 0, -4,
|
||||||
3, 0, 0, -13, 0, -3, -1, 0,
|
3, 0, 0, -13, 0, -3, -1, 0,
|
||||||
-4, 0, 0, -3, 0, -3, -16, -5,
|
-4, 0, 0, -3, 0, -3, -16, -5,
|
||||||
-8, 0, -12, 0, -4, 0, -7, 0,
|
-8, 0, -12, 0, -4, 0, -7, 0,
|
||||||
2, 0, -4, 0, -4, -12, 0, -4,
|
2, 0, -4, 0, -4, -12, 0, -4,
|
||||||
4, 0, 1, -5, 0, -5, -3, 0,
|
4, 0, 0, 0, 0, 1, 0, -5,
|
||||||
-5, 0, 0, 0, 0, 0, 0, 0,
|
-3, 0, -5, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, -3, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, -3, 0, 0,
|
||||||
1, 0, -4, -4, 0, 0, 9, -24,
|
0, 0, 1, 0, -4, -4, 0, 0,
|
||||||
0, 1, 17, 12, 7, -15, 3, 16,
|
9, 8, 0, 0, -24, 1, 17, 12,
|
||||||
0, 14, 0, 0, 0, 0, 0, 0,
|
7, -15, 3, 16, 0, 14, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0
|
0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1688,8 +1714,8 @@ static const lv_font_fmt_txt_kern_classes_t kern_classes =
|
|||||||
.class_pair_values = kern_class_values,
|
.class_pair_values = kern_class_values,
|
||||||
.left_class_mapping = kern_left_class_mapping,
|
.left_class_mapping = kern_left_class_mapping,
|
||||||
.right_class_mapping = kern_right_class_mapping,
|
.right_class_mapping = kern_right_class_mapping,
|
||||||
.left_class_cnt = 47,
|
.left_class_cnt = 49,
|
||||||
.right_class_cnt = 37,
|
.right_class_cnt = 39,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*--------------------
|
/*--------------------
|
||||||
@ -1711,7 +1737,7 @@ static lv_font_fmt_txt_dsc_t font_dsc = {
|
|||||||
.cmaps = cmaps,
|
.cmaps = cmaps,
|
||||||
.kern_dsc = &kern_classes,
|
.kern_dsc = &kern_classes,
|
||||||
.kern_scale = 16,
|
.kern_scale = 16,
|
||||||
.cmap_num = 5,
|
.cmap_num = 4,
|
||||||
.bpp = 4,
|
.bpp = 4,
|
||||||
.kern_classes = 1,
|
.kern_classes = 1,
|
||||||
.bitmap_format = 0,
|
.bitmap_format = 0,
|
||||||
|
|||||||
@ -1,24 +1,27 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
espressif/esp_wifi_remote: "0.8.5"
|
espressif/esp_wifi_remote:
|
||||||
#espressif/esp32_p4_function_ev_board: "^4.1.1"
|
rules:
|
||||||
suda-morris/am2302_rmt: "^1.0.0"
|
- if: target in ["esp32p4"]
|
||||||
espressif/esp_websocket_client: "^1.3.0"
|
version: "0.9.2"
|
||||||
joltwallet/littlefs: ^1.14.8
|
|
||||||
|
suda-morris/am2302_rmt:
|
||||||
|
version: "^1.0.0"
|
||||||
|
rules:
|
||||||
|
- if: target in ["esp32p4"]
|
||||||
|
joltwallet/littlefs:
|
||||||
|
rules:
|
||||||
|
- if: target in ["esp32p4"]
|
||||||
|
version: "^1.14.8"
|
||||||
esp_lcd_touch_gt911:
|
esp_lcd_touch_gt911:
|
||||||
version: ^1
|
rules:
|
||||||
|
- if: target in ["esp32p4"]
|
||||||
esp_lvgl_port:
|
esp_lvgl_port:
|
||||||
version: 2.5.0
|
rules:
|
||||||
|
- if: target in ["esp32p4"]
|
||||||
|
version: 2.6.0
|
||||||
idf:
|
idf:
|
||||||
version: '5.4.*'
|
version: '5.5.*'
|
||||||
lvgl/lvgl:
|
lvgl/lvgl:
|
||||||
version: 9.2.0
|
version: 9.2.0
|
||||||
#espressif/esp32_p4_function_ev_board:
|
#espressif/esp32_p4_function_ev_board:
|
||||||
# version: "4.1.*"
|
# version: "4.1.*"
|
||||||
|
|
||||||
chmorgan/esp-audio-player:
|
|
||||||
version: "1.0.*"
|
|
||||||
public: true
|
|
||||||
|
|
||||||
chmorgan/esp-file-iterator:
|
|
||||||
version: "1.0.0"
|
|
||||||
public: true
|
|
||||||
|
|||||||
303
main/ihm.c
@ -8,11 +8,10 @@
|
|||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "meteofrance.h"
|
#include "meteofrance.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "bsp/esp-bsp.h"
|
||||||
|
|
||||||
|
#define upEvent "monter"
|
||||||
extern char *upEvent;
|
#define downEvent "descendre"
|
||||||
extern char *downEvent;
|
|
||||||
extern esp_mqtt_client_handle_t client;
|
|
||||||
|
|
||||||
lv_subject_t dateHeureSubj;
|
lv_subject_t dateHeureSubj;
|
||||||
lv_obj_t *lblTempInt2;
|
lv_obj_t *lblTempInt2;
|
||||||
@ -34,25 +33,151 @@ lv_subject_t forecastH3Subj;
|
|||||||
lv_subject_t *tmpHSubj[3] = {&forecastH1Subj, &forecastH2Subj, &forecastH3Subj};
|
lv_subject_t *tmpHSubj[3] = {&forecastH1Subj, &forecastH2Subj, &forecastH3Subj};
|
||||||
|
|
||||||
lv_subject_t meteoStatus;
|
lv_subject_t meteoStatus;
|
||||||
char dateHeureStr[30];
|
//char dateHeureStr[30];
|
||||||
|
lv_obj_t *jour;
|
||||||
|
|
||||||
static lv_style_t no_padding;
|
static lv_style_t no_padding;
|
||||||
static const char *TAG = "IHM";
|
static const char *TAG = "IHM";
|
||||||
|
static lv_subject_t wifiStatus;
|
||||||
|
|
||||||
void draw_time(char* dateHeure){
|
LV_IMAGE_DECLARE(wifi_ok);
|
||||||
|
LV_IMAGE_DECLARE(wifi_ko);
|
||||||
|
|
||||||
|
|
||||||
|
static void wifiStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject)
|
||||||
|
{
|
||||||
|
ESP_LOGV(TAG, "On passe dans le callback de chgt de statut; %li", lv_subject_get_int(subject));
|
||||||
|
bsp_display_lock(0);
|
||||||
|
if(lv_layer_top()!=NULL && lv_obj_get_child_cnt(lv_layer_top())){
|
||||||
|
lv_obj_t * wifiSt = lv_obj_get_child(lv_obj_get_child(lv_layer_top(), 0),2);
|
||||||
|
if(lv_obj_check_type(wifiSt, &lv_image_class)){
|
||||||
|
switch (lv_subject_get_int(subject))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
lv_image_set_src(wifiSt,&wifi_ko);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
lv_image_set_src(wifiSt,&wifi_ok);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
ESP_LOGE(TAG, "L'objet recuip en semble pas etre du bon type");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
ESP_LOGI(TAG,"Pour le moment l'icone de statut n'existe pas");
|
||||||
|
}
|
||||||
|
|
||||||
|
bsp_display_unlock();
|
||||||
|
//int32_t prev_v = lv_subject_get_previous_int(subject);
|
||||||
|
//int32_t cur_v = lv_subject_get_int(subject);
|
||||||
|
|
||||||
|
//lv_obj_t * btn = lv_observer_get_target(observer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void draw_time(char* dateHeure){
|
||||||
if(display_lock("updateTime")){
|
if(display_lock("updateTime")){
|
||||||
lv_subject_copy_string(&dateHeureSubj, dateHeure);
|
lv_label_set_text(jour, dateHeure);
|
||||||
display_unlock("updateTime");
|
display_unlock("updateTime");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_temp(char * tempHumid){
|
static void draw_temp(char * tempHumid){
|
||||||
if(lvgl_port_lock(5)){
|
if(display_lock("draw_temp")){
|
||||||
lv_label_set_text(lblTempInt2,tempHumid);
|
lv_label_set_text(lblTempInt2,tempHumid);
|
||||||
lvgl_port_unlock();
|
display_unlock("updateTime");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lv_obj_t* myChart;
|
||||||
|
lv_chart_series_t * ser;
|
||||||
|
lv_obj_t *lblHauteurCuve;
|
||||||
|
|
||||||
|
void drawIhm(void *xIHMEventQueueParam) {
|
||||||
|
QueueHandle_t xIHMEventQueue = (QueueHandle_t)xIHMEventQueueParam;
|
||||||
|
|
||||||
|
init_display();
|
||||||
|
|
||||||
|
lv_subject_init_int(&wifiStatus, 0);
|
||||||
|
lv_subject_add_observer_obj(&wifiStatus, wifiStatus_obs_cb, NULL, NULL);
|
||||||
|
|
||||||
|
display_lock("app_main");
|
||||||
|
app_main_display();
|
||||||
|
display_unlock("app_main");
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(2000));
|
||||||
|
|
||||||
|
if (display_lock("draw_ihm")) {
|
||||||
|
draw_ihm();
|
||||||
|
display_unlock("draw_ihm");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
xIHMEvent_t *xReceivedEvent = NULL;
|
||||||
|
|
||||||
|
if (xQueueReceive(xIHMEventQueue, &xReceivedEvent, portMAX_DELAY) == pdTRUE && xReceivedEvent) {
|
||||||
|
ESP_LOGE(TAG,"Evt IHM Recu");
|
||||||
|
switch (xReceivedEvent->eEventType) {
|
||||||
|
case IHM_EVT_WIFI_STATUS:
|
||||||
|
lv_subject_set_int(&wifiStatus, *(bool *)xReceivedEvent->pvData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_TIME_SETTED:
|
||||||
|
draw_time(xReceivedEvent->pvData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_OTA_STARTED:
|
||||||
|
app_ota_display();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_OTA_PROGRESS:
|
||||||
|
setOTAProgress((int)xReceivedEvent->pvData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_HUMID_TEMP:
|
||||||
|
draw_temp((char *)xReceivedEvent->pvData);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_PUISSANCE_EMISE:
|
||||||
|
case IHM_EVT_ETAT_MACHINE:
|
||||||
|
if (display_lock("updateChart")) {
|
||||||
|
int val = (int)xReceivedEvent->pvData;
|
||||||
|
if (val == 0) {
|
||||||
|
lv_chart_set_next_value(myChart, ser, LV_CHART_POINT_NONE);
|
||||||
|
} else {
|
||||||
|
lv_chart_set_next_value(myChart, ser, val);
|
||||||
|
}
|
||||||
|
display_unlock("updateChart");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IHM_EVT_HAUTEUR_CUVE:
|
||||||
|
if (display_lock("updateCuve")) {
|
||||||
|
float hauteur = *(float *)xReceivedEvent->pvData;
|
||||||
|
lv_label_set_text_fmt(lblHauteurCuve, "%.2f cm", hauteur);
|
||||||
|
display_unlock("updateCuve");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
ESP_LOGE(TAG, "Evt inconnu");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_LOGE(TAG,"Evt IHM Traité on nettoie la memoire");
|
||||||
|
// Nettoyage mémoire sécurisé
|
||||||
|
if (xReceivedEvent->bNeedToFreeData && xReceivedEvent->pvData) {
|
||||||
|
free(xReceivedEvent->pvData);
|
||||||
|
}
|
||||||
|
free(xReceivedEvent);
|
||||||
|
ESP_LOGE(TAG,"Evt IHM Traité !");
|
||||||
|
}
|
||||||
|
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(100));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void event_handler(lv_event_t *e)
|
static void event_handler(lv_event_t *e)
|
||||||
{
|
{
|
||||||
lv_event_code_t code = lv_event_get_code(e);
|
lv_event_code_t code = lv_event_get_code(e);
|
||||||
@ -66,7 +191,7 @@ static void event_handler(lv_event_t *e)
|
|||||||
break;
|
break;
|
||||||
case LV_EVENT_CLICKED:
|
case LV_EVENT_CLICKED:
|
||||||
ESP_LOGI(TAG, "%s was clicked\n", evtData);
|
ESP_LOGI(TAG, "%s was clicked\n", evtData);
|
||||||
esp_mqtt_client_publish(client, "volets", evtData, 0, 0, 0);
|
send_event(EVT_BTN_VOLET,evtData);
|
||||||
break;
|
break;
|
||||||
case LV_EVENT_LONG_PRESSED:
|
case LV_EVENT_LONG_PRESSED:
|
||||||
LV_LOG_USER("%s was long pressed\n", evtData);
|
LV_LOG_USER("%s was long pressed\n", evtData);
|
||||||
@ -79,37 +204,85 @@ static void event_handler(lv_event_t *e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void init_display(){
|
void init_display(){
|
||||||
|
lvgl_port_cfg_t lvgl_cfg = ESP_LVGL_PORT_INIT_CONFIG();
|
||||||
|
//lvgl_cfg.task_priority=15;
|
||||||
bsp_display_cfg_t cfg = {
|
bsp_display_cfg_t cfg = {
|
||||||
.lvgl_port_cfg = ESP_LVGL_PORT_INIT_CONFIG(),
|
.lvgl_port_cfg = lvgl_cfg,
|
||||||
.buffer_size = BSP_LCD_DRAW_BUFF_SIZE,
|
.buffer_size = 1024*600,//BSP_LCD_DRAW_BUFF_SIZE,
|
||||||
.double_buffer = BSP_LCD_DRAW_BUFF_DOUBLE,
|
.double_buffer = 1,
|
||||||
.flags = {
|
.flags = {
|
||||||
.buff_dma = true,
|
.buff_dma = false,
|
||||||
.buff_spiram = false,
|
.buff_spiram = false,
|
||||||
.sw_rotate = false,
|
.sw_rotate = true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ESP_LOGE(TAG,"On demarre le display");
|
ESP_LOGE(TAG,"On demarre le display");
|
||||||
lv_display_t *dsp = bsp_display_start_with_config(&cfg);
|
lv_display_t *dsp = bsp_display_start_with_config(&cfg);
|
||||||
//bsp_display_rotate(dsp,LV_DISP_ROTATION_180);
|
//bsp_display_rotate(dsp,LV_DISP_ROTATION_180);
|
||||||
|
|
||||||
bsp_display_brightness_set(50);
|
|
||||||
bsp_display_backlight_on();
|
bsp_display_backlight_on();
|
||||||
|
bsp_display_brightness_set(50);
|
||||||
mainState.display_init=true;
|
mainState.display_init=true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lv_obj_t * otaStatus;
|
||||||
|
lv_obj_t * arcProgress;
|
||||||
|
static void value_changed_event_cb(lv_event_t * e)
|
||||||
|
{
|
||||||
|
//lv_obj_t * arc = lv_event_get_target_obj(e);
|
||||||
|
lv_obj_t * label = (lv_obj_t *)lv_event_get_user_data(e);
|
||||||
|
|
||||||
|
lv_label_set_text_fmt(label, "%" LV_PRId32 "%%", lv_arc_get_value(arcProgress));
|
||||||
|
|
||||||
|
/*Rotate the label to the current position of the arc*/
|
||||||
|
lv_arc_rotate_obj_to_angle(arcProgress, label, 25);
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_ota_display(){
|
||||||
|
if(display_lock("app_ota_display")){
|
||||||
|
lv_obj_clean(lv_scr_act());
|
||||||
|
lv_obj_t * label = lv_label_create(lv_screen_active());
|
||||||
|
otaStatus=lv_label_create(lv_scr_act());
|
||||||
|
lv_label_set_text(otaStatus, "Mise à jour OTA en cours");
|
||||||
|
/*Create an Arc*/
|
||||||
|
arcProgress = lv_arc_create(lv_screen_active());
|
||||||
|
lv_obj_set_size(arcProgress, 150, 150);
|
||||||
|
lv_arc_set_rotation(arcProgress, 135);
|
||||||
|
lv_arc_set_bg_angles(arcProgress, 0, 270);
|
||||||
|
lv_arc_set_value(arcProgress, 0);
|
||||||
|
lv_obj_center(arcProgress);
|
||||||
|
lv_obj_add_event_cb(arcProgress, value_changed_event_cb, LV_EVENT_VALUE_CHANGED, label);
|
||||||
|
|
||||||
|
/*Manually update the label for the first time*/
|
||||||
|
lv_obj_send_event(arcProgress, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
|
display_unlock("app_ota_display");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setOTAProgress(int value){
|
||||||
|
if(display_lock("setOTAProgress")){
|
||||||
|
lv_arc_set_value(arcProgress, value);
|
||||||
|
lv_obj_send_event(arcProgress, LV_EVENT_VALUE_CHANGED, NULL);
|
||||||
|
display_unlock("setOTAProgress");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void app_main_display()
|
void app_main_display()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(display_lock("meteoStatus")){
|
||||||
lv_subject_init_int(&meteoStatus, -1);
|
lv_subject_init_int(&meteoStatus, -1);
|
||||||
|
display_unlock("meteoStatus");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct meteodailyforecast_data d;
|
struct meteodailyforecast_data d;
|
||||||
struct dailyforecast_prev p;
|
struct dailyforecast_prev p;
|
||||||
lv_strcpy(p.desc, "");
|
lv_strcpy(p.desc, "");
|
||||||
d.previsions = p;
|
d.previsions = p;
|
||||||
|
d.isValid=false;
|
||||||
lv_subject_init_pointer(&forecastD1Subj, &d);
|
lv_subject_init_pointer(&forecastD1Subj, &d);
|
||||||
lv_subject_init_pointer(&forecastD2Subj, &d);
|
lv_subject_init_pointer(&forecastD2Subj, &d);
|
||||||
lv_subject_init_pointer(&forecastD3Subj, &d);
|
lv_subject_init_pointer(&forecastD3Subj, &d);
|
||||||
@ -119,6 +292,7 @@ void app_main_display()
|
|||||||
lv_strcpy(p1.desc, "");
|
lv_strcpy(p1.desc, "");
|
||||||
|
|
||||||
d1.previsions = p1;
|
d1.previsions = p1;
|
||||||
|
d1.isValid=false;
|
||||||
lv_subject_init_pointer(&forecastH1Subj, &d1);
|
lv_subject_init_pointer(&forecastH1Subj, &d1);
|
||||||
lv_subject_init_pointer(&forecastH2Subj, &d1);
|
lv_subject_init_pointer(&forecastH2Subj, &d1);
|
||||||
lv_subject_init_pointer(&forecastH3Subj, &d1);
|
lv_subject_init_pointer(&forecastH3Subj, &d1);
|
||||||
@ -127,7 +301,7 @@ void app_main_display()
|
|||||||
lv_theme_t * th = lv_theme_domotic_init(lv_display_get_default());
|
lv_theme_t * th = lv_theme_domotic_init(lv_display_get_default());
|
||||||
lv_display_set_theme(lv_disp_get_default(), th); /* Assign theme to display */
|
lv_display_set_theme(lv_disp_get_default(), th); /* Assign theme to display */
|
||||||
|
|
||||||
lv_subject_init_string(&dateHeureSubj, dateHeureStr, NULL, 64, "--");
|
//lv_subject_init_string(&dateHeureSubj, dateHeureStr, NULL, 64, "--");
|
||||||
|
|
||||||
lv_style_init(&no_padding);
|
lv_style_init(&no_padding);
|
||||||
lv_style_set_pad_all(&no_padding, 0);
|
lv_style_set_pad_all(&no_padding, 0);
|
||||||
@ -143,7 +317,6 @@ void app_main_display()
|
|||||||
/*First define a color gradient. In this example we use a purple to black color map.*/
|
/*First define a color gradient. In this example we use a purple to black color map.*/
|
||||||
static lv_grad_dsc_t grad;
|
static lv_grad_dsc_t grad;
|
||||||
|
|
||||||
ESP_LOGE(TAG,"On aimerait %d stops", sizeof(grad_colors) / sizeof(lv_color_t));
|
|
||||||
lv_gradient_init_stops(&grad, grad_colors, NULL, NULL, sizeof(grad_colors) / sizeof(lv_color_t));
|
lv_gradient_init_stops(&grad, grad_colors, NULL, NULL, sizeof(grad_colors) / sizeof(lv_color_t));
|
||||||
|
|
||||||
/*Make a radial gradient with the center in the middle of the object, extending to the farthest corner*/
|
/*Make a radial gradient with the center in the middle of the object, extending to the farthest corner*/
|
||||||
@ -159,10 +332,10 @@ void app_main_display()
|
|||||||
lv_obj_set_height(cont_status, LV_SIZE_CONTENT);
|
lv_obj_set_height(cont_status, LV_SIZE_CONTENT);
|
||||||
lv_obj_set_width(cont_status, LV_SIZE_CONTENT);
|
lv_obj_set_width(cont_status, LV_SIZE_CONTENT);
|
||||||
|
|
||||||
lv_obj_t *jour = lv_label_create(cont_status);
|
jour = lv_label_create(cont_status);
|
||||||
lv_obj_set_style_text_font(jour,lv_theme_get_font_normal(jour),0);
|
lv_obj_set_style_text_font(jour,lv_theme_get_font_normal(jour),0);
|
||||||
lv_obj_set_width(jour, LV_SIZE_CONTENT);
|
lv_obj_set_width(jour, LV_SIZE_CONTENT);
|
||||||
lv_label_bind_text(jour, &dateHeureSubj, NULL);
|
//lv_label_bind_text(jour, &dateHeureSubj, NULL);
|
||||||
|
|
||||||
lv_obj_refr_size(cont_status);
|
lv_obj_refr_size(cont_status);
|
||||||
// lv_obj_align(jour, LV_ALIGN_CENTER,0,0);
|
// lv_obj_align(jour, LV_ALIGN_CENTER,0,0);
|
||||||
@ -201,17 +374,17 @@ void app_main_display()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool display_lock(const char* TAG){
|
bool display_lock(const char* TAG){
|
||||||
ESP_LOGI(TAG,"Obtention mutexx");
|
//ESP_LOGI(TAG,"Obtention mutex");
|
||||||
if(bsp_display_lock(5000)){
|
if(bsp_display_lock(3000)){
|
||||||
ESP_LOGI(TAG, "Mutex obtenu");
|
//ESP_LOGI(TAG, "Mutex obtenu");
|
||||||
return true;
|
return true;
|
||||||
}else{
|
}else{
|
||||||
ESP_LOGE(TAG, "Impossible d'obtenir le mutex");
|
//ESP_LOGE(TAG, "Impossible d'obtenir le mutex");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void display_unlock(const char* TAG){
|
void display_unlock(const char* TAG){
|
||||||
ESP_LOGI(TAG,"Libération mutexx");
|
//ESP_LOGI(TAG,"Libération mutexx");
|
||||||
bsp_display_unlock();
|
bsp_display_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,13 +420,13 @@ static lv_style_t style_container;
|
|||||||
static void weatherdata_obs_cb(lv_observer_t *observer, lv_subject_t *subject)
|
static void weatherdata_obs_cb(lv_observer_t *observer, lv_subject_t *subject)
|
||||||
{
|
{
|
||||||
|
|
||||||
ESP_LOGE(TAG, "CB meteo jour declenché");
|
|
||||||
// Retrieve weatherdata
|
// Retrieve weatherdata
|
||||||
const struct meteodailyforecast_data *data = subject->value.pointer;
|
const struct meteodailyforecast_data *data = subject->value.pointer;
|
||||||
|
ESP_LOGV(TAG, "CB meteo jour declenché. Meteo valide : %i", data->isValid);
|
||||||
// printffd(data);
|
// printffd(data);
|
||||||
// char buff[40] = {};
|
// char buff[40] = {};
|
||||||
// sprintf(buff,"%s %.1f %.1f", data->previsions.desc, data->previsions.min, data->previsions.max);
|
// sprintf(buff,"%s %.1f %.1f", data->previsions.desc, data->previsions.min, data->previsions.max);
|
||||||
|
if(data->isValid){
|
||||||
lv_obj_t *parent = (lv_obj_t *)(observer->target);
|
lv_obj_t *parent = (lv_obj_t *)(observer->target);
|
||||||
lv_obj_t *datefld = lv_obj_get_child(parent, 0);
|
lv_obj_t *datefld = lv_obj_get_child(parent, 0);
|
||||||
lv_obj_t *desc_icon = lv_obj_get_child(parent, 1);
|
lv_obj_t *desc_icon = lv_obj_get_child(parent, 1);
|
||||||
@ -266,6 +439,7 @@ static void weatherdata_obs_cb(lv_observer_t *observer, lv_subject_t *subject)
|
|||||||
lv_label_set_text(lv_obj_get_child(desc_icon, 1), data->previsions.desc);
|
lv_label_set_text(lv_obj_get_child(desc_icon, 1), data->previsions.desc);
|
||||||
lv_label_set_text_fmt(lv_obj_get_child(temps, 0), "%.1f°C", data->previsions.max);
|
lv_label_set_text_fmt(lv_obj_get_child(temps, 0), "%.1f°C", data->previsions.max);
|
||||||
lv_label_set_text_fmt(lv_obj_get_child(temps, 1), "%.1f°C", data->previsions.min);
|
lv_label_set_text_fmt(lv_obj_get_child(temps, 1), "%.1f°C", data->previsions.min);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback pour mettre à jour une météo horaire
|
// Callback pour mettre à jour une météo horaire
|
||||||
@ -306,7 +480,7 @@ void showMeteoIcon(const char *icon, lv_obj_t *desc_icon, int childNr)
|
|||||||
char *str1 = "A:/littlefs/";
|
char *str1 = "A:/littlefs/";
|
||||||
char *result = malloc(strlen(str1) + strlen(icon) + 6);
|
char *result = malloc(strlen(str1) + strlen(icon) + 6);
|
||||||
sprintf(result, "%s%s.png", str1, icon);
|
sprintf(result, "%s%s.png", str1, icon);
|
||||||
ESP_LOGE(TAG,"On affiche l'image %s", result);
|
ESP_LOGV(TAG,"On affiche l'image %s", result);
|
||||||
lv_image_set_src(img, result);
|
lv_image_set_src(img, result);
|
||||||
free(result);
|
free(result);
|
||||||
}
|
}
|
||||||
@ -425,7 +599,7 @@ static lv_obj_t* weatherH_fragment_create_obj(int horaireNr, lv_obj_t *parent)
|
|||||||
lv_obj_set_style_text_font(desc, lv_theme_get_font_normal(desc), 0);
|
lv_obj_set_style_text_font(desc, lv_theme_get_font_normal(desc), 0);
|
||||||
|
|
||||||
// On positionne un observer sur le subjet correspondant a l'horaire du widget
|
// On positionne un observer sur le subjet correspondant a l'horaire du widget
|
||||||
ESP_LOGE(TAG, "on positionne obs sur horaire %d", horaireNr);
|
ESP_LOGV(TAG, "on positionne obs sur horaire %d", horaireNr);
|
||||||
lv_subject_add_observer_obj(tmpHSubj[horaireNr], weatherdataH_obs_cb, sup, NULL);
|
lv_subject_add_observer_obj(tmpHSubj[horaireNr], weatherdataH_obs_cb, sup, NULL);
|
||||||
return container;
|
return container;
|
||||||
}
|
}
|
||||||
@ -512,6 +686,56 @@ static void log_event_handler(lv_event_t * e)
|
|||||||
static lv_style_t style_lbvValue;
|
static lv_style_t style_lbvValue;
|
||||||
static lv_style_t style_btn;
|
static lv_style_t style_btn;
|
||||||
|
|
||||||
|
static void draw_event_cb(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_draw_task_t * draw_task = lv_event_get_draw_task(e);
|
||||||
|
lv_draw_dsc_base_t * base_dsc = lv_draw_task_get_draw_dsc(draw_task);
|
||||||
|
|
||||||
|
if(base_dsc->part != LV_PART_ITEMS) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lv_draw_fill_dsc_t * fill_dsc = lv_draw_task_get_fill_dsc(draw_task);
|
||||||
|
if(fill_dsc) {
|
||||||
|
lv_obj_t * chart = lv_event_get_target(e);
|
||||||
|
int32_t * y_array = lv_chart_get_y_array(chart, ser);
|
||||||
|
int32_t v = y_array[(base_dsc->id2+lv_chart_get_x_start_point(myChart,ser))%30];
|
||||||
|
//ESP_LOGE(TAG, "Dessin de l'index %li, valeur: %li, start point : %li",base_dsc->id2, v, lv_chart_get_x_start_point(myChart,ser));
|
||||||
|
/*for(int i=0;i<20;i++){
|
||||||
|
ESP_LOGE(TAG,"Tab %i : %li", i, y_array[i]);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
fill_dsc->color = lv_color_mix(lv_palette_main(LV_PALETTE_RED), lv_palette_main(LV_PALETTE_BLUE), MIN(v*255/1500,255));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lv_obj_t* lblEtatMachine;
|
||||||
|
void draw_tabMinuteur(lv_obj_t * parent)
|
||||||
|
{
|
||||||
|
lblEtatMachine = lv_label_create(parent);
|
||||||
|
lv_label_set_text(lblEtatMachine,"Machine: ");
|
||||||
|
myChart = lv_chart_create(parent);
|
||||||
|
lv_chart_set_type(myChart, LV_CHART_TYPE_BAR);
|
||||||
|
lv_chart_set_point_count(myChart, 30);
|
||||||
|
lv_obj_set_style_pad_column(myChart, 2, 0);
|
||||||
|
lv_obj_set_size(myChart, 600, 400);
|
||||||
|
lv_chart_set_range(myChart, LV_CHART_AXIS_PRIMARY_Y, 0, 1500);
|
||||||
|
lv_obj_center(myChart);
|
||||||
|
|
||||||
|
ser = lv_chart_add_series(myChart, lv_color_hex(0xff0000), LV_CHART_AXIS_PRIMARY_Y);
|
||||||
|
lv_obj_add_event_cb(myChart, draw_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL);
|
||||||
|
lv_obj_add_flag(myChart, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS);
|
||||||
|
//uint32_t i;
|
||||||
|
lv_chart_set_update_mode(myChart,LV_CHART_UPDATE_MODE_SHIFT);
|
||||||
|
/*for(i = 0; i < 60; i++) {
|
||||||
|
lv_chart_set_next_value(myChart, ser, (int32_t)lv_rand(10, 1500));
|
||||||
|
}*/
|
||||||
|
/*for(int i=0; i<30; i++){
|
||||||
|
ser->y_points[i]=LV_CHART_POINT_NONE;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void draw_tabSettings(lv_obj_t * parent)
|
void draw_tabSettings(lv_obj_t * parent)
|
||||||
{
|
{
|
||||||
lv_obj_t *btnGrp = lv_obj_create(parent);
|
lv_obj_t *btnGrp = lv_obj_create(parent);
|
||||||
@ -604,6 +828,7 @@ void draw_tabHome(lv_obj_t* parent){
|
|||||||
lv_label_bind_text(lblTempExt, &tempExtSubj, "%s °C");
|
lv_label_bind_text(lblTempExt, &tempExtSubj, "%s °C");
|
||||||
|
|
||||||
//Create a container with COLUMN flex direction
|
//Create a container with COLUMN flex direction
|
||||||
|
/*
|
||||||
lv_obj_t *cont_tempInt = lv_obj_create(cont_colTemp);
|
lv_obj_t *cont_tempInt = lv_obj_create(cont_colTemp);
|
||||||
lv_obj_add_style(cont_tempInt, &style_container, 0);
|
lv_obj_add_style(cont_tempInt, &style_container, 0);
|
||||||
// lv_obj_set_height(cont_tempInt,50);
|
// lv_obj_set_height(cont_tempInt,50);
|
||||||
@ -614,13 +839,14 @@ void draw_tabHome(lv_obj_t* parent){
|
|||||||
lv_obj_add_style(lblTempInt, &style_lbvValue, 0);
|
lv_obj_add_style(lblTempInt, &style_lbvValue, 0);
|
||||||
lv_label_set_text(lblTempInt, "");
|
lv_label_set_text(lblTempInt, "");
|
||||||
lv_label_bind_text(lblTempInt, &tempIntSubj, "%s °C");
|
lv_label_bind_text(lblTempInt, &tempIntSubj, "%s °C");
|
||||||
|
*/
|
||||||
|
|
||||||
//Create a container with COLUMN flex direction
|
//Create a container with COLUMN flex direction
|
||||||
lv_obj_t *cont_tempInt2 = lv_obj_create(cont_colTemp);
|
lv_obj_t *cont_tempInt2 = lv_obj_create(cont_colTemp);
|
||||||
lv_obj_add_style(cont_tempInt2, &style_container, 0);
|
lv_obj_add_style(cont_tempInt2, &style_container, 0);
|
||||||
// lv_obj_set_height(cont_tempInt,50);
|
// lv_obj_set_height(cont_tempInt,50);
|
||||||
lv_obj_set_flex_flow(cont_tempInt2, LV_FLEX_FLOW_ROW);
|
lv_obj_set_flex_flow(cont_tempInt2, LV_FLEX_FLOW_ROW);
|
||||||
lblInt = lv_label_create(cont_tempInt2);
|
lv_obj_t * lblInt = lv_label_create(cont_tempInt2);
|
||||||
lv_label_set_text(lblInt, "int.");
|
lv_label_set_text(lblInt, "int.");
|
||||||
lblTempInt2 = lv_label_create(cont_tempInt2);
|
lblTempInt2 = lv_label_create(cont_tempInt2);
|
||||||
lv_obj_add_style(lblTempInt2, &style_lbvValue, 0);
|
lv_obj_add_style(lblTempInt2, &style_lbvValue, 0);
|
||||||
@ -637,9 +863,9 @@ void draw_tabHome(lv_obj_t* parent){
|
|||||||
|
|
||||||
lv_obj_t *lblHauteurEau = lv_label_create(cont_Cuve);
|
lv_obj_t *lblHauteurEau = lv_label_create(cont_Cuve);
|
||||||
lv_label_set_text(lblHauteurEau, "Cuve: ");
|
lv_label_set_text(lblHauteurEau, "Cuve: ");
|
||||||
lv_obj_t *lblHauteurCuve = lv_label_create(cont_Cuve);
|
lblHauteurCuve = lv_label_create(cont_Cuve);
|
||||||
lv_obj_add_style(lblHauteurCuve, &style_lbvValue, 0);
|
lv_obj_add_style(lblHauteurCuve, &style_lbvValue, 0);
|
||||||
lv_label_bind_text(lblHauteurCuve, &hauteurCuveSubj, "%s cm");
|
//lv_label_bind_text(lblHauteurCuve, &hauteurCuveSubj, "%s cm");
|
||||||
|
|
||||||
lv_obj_t *btnUp = lv_button_create(cont_colVolets);
|
lv_obj_t *btnUp = lv_button_create(cont_colVolets);
|
||||||
lv_obj_add_style(btnUp, &style_btn, 0);
|
lv_obj_add_style(btnUp, &style_btn, 0);
|
||||||
@ -787,7 +1013,7 @@ void draw_ihm()
|
|||||||
// lv_obj_set_style_bg_color(tabview, lv_palette_lighten(LV_PALETTE_RED, 2), 0);
|
// lv_obj_set_style_bg_color(tabview, lv_palette_lighten(LV_PALETTE_RED, 2), 0);
|
||||||
|
|
||||||
lv_obj_t *tab_buttons = lv_tabview_get_tab_bar(tabview);
|
lv_obj_t *tab_buttons = lv_tabview_get_tab_bar(tabview);
|
||||||
lv_obj_set_width(tab_buttons, 100);
|
lv_obj_set_width(tab_buttons, 120);
|
||||||
lv_obj_set_style_text_font(tab_buttons, lv_theme_get_font_large(tab_buttons), 0);
|
lv_obj_set_style_text_font(tab_buttons, lv_theme_get_font_large(tab_buttons), 0);
|
||||||
lv_obj_set_style_bg_color(tab_buttons, lv_palette_darken(LV_PALETTE_GREY, 3), 0);
|
lv_obj_set_style_bg_color(tab_buttons, lv_palette_darken(LV_PALETTE_GREY, 3), 0);
|
||||||
lv_obj_set_style_text_color(tab_buttons, lv_palette_lighten(LV_PALETTE_GREY, 5), 0);
|
lv_obj_set_style_text_color(tab_buttons, lv_palette_lighten(LV_PALETTE_GREY, 5), 0);
|
||||||
@ -799,6 +1025,7 @@ void draw_ihm()
|
|||||||
lv_obj_t* tabMeteo = lv_tabview_add_tab(tabview, "Météo");
|
lv_obj_t* tabMeteo = lv_tabview_add_tab(tabview, "Météo");
|
||||||
lv_obj_t* tabCuve = lv_tabview_add_tab(tabview, "\xEF\x95\xB5"
|
lv_obj_t* tabCuve = lv_tabview_add_tab(tabview, "\xEF\x95\xB5"
|
||||||
"Cuve");
|
"Cuve");
|
||||||
|
lv_obj_t* tabMinuteur = lv_tabview_add_tab(tabview, "Minuteur");
|
||||||
lv_obj_t* tabSettings = lv_tabview_add_tab(tabview, "Settings");
|
lv_obj_t* tabSettings = lv_tabview_add_tab(tabview, "Settings");
|
||||||
|
|
||||||
// lv_obj_set_style_bg_color(tab2b, lv_palette_lighten(LV_PALETTE_AMBER, 3), 0);
|
// lv_obj_set_style_bg_color(tab2b, lv_palette_lighten(LV_PALETTE_AMBER, 3), 0);
|
||||||
@ -835,6 +1062,7 @@ void draw_ihm()
|
|||||||
draw_tabMeteo(tabMeteo);
|
draw_tabMeteo(tabMeteo);
|
||||||
draw_tabCuve(tabCuve);
|
draw_tabCuve(tabCuve);
|
||||||
draw_tabSettings(tabSettings);
|
draw_tabSettings(tabSettings);
|
||||||
|
draw_tabMinuteur(tabMinuteur);
|
||||||
|
|
||||||
lv_obj_set_flex_flow(tabVolets, LV_FLEX_FLOW_ROW);
|
lv_obj_set_flex_flow(tabVolets, LV_FLEX_FLOW_ROW);
|
||||||
|
|
||||||
@ -845,10 +1073,3 @@ void draw_ihm()
|
|||||||
void log_cb(lv_log_level_t level, const char * buf){
|
void log_cb(lv_log_level_t level, const char * buf){
|
||||||
ESP_LOGE(TAG, "%s",buf);
|
ESP_LOGE(TAG, "%s",buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_temp(char * tempHumid){
|
|
||||||
display_lock("tempHumid");
|
|
||||||
lv_label_set_text(lblTempInt2, tempHumid);
|
|
||||||
display_unlock("tempHumid");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
25
main/ihm.h
@ -4,6 +4,8 @@
|
|||||||
#include "bsp/esp-bsp.h"
|
#include "bsp/esp-bsp.h"
|
||||||
|
|
||||||
void app_main_display();
|
void app_main_display();
|
||||||
|
void app_ota_display();
|
||||||
|
void setOTAProgress(int value);
|
||||||
void init_display();
|
void init_display();
|
||||||
|
|
||||||
bool display_lock(const char *TAG);
|
bool display_lock(const char *TAG);
|
||||||
@ -21,8 +23,6 @@ void weather_data_retreived_start();
|
|||||||
|
|
||||||
void weather_data_retreived(meteodailyforecast_data dailyDatas[3], meteoforecast_data datas[3]);
|
void weather_data_retreived(meteodailyforecast_data dailyDatas[3], meteoforecast_data datas[3]);
|
||||||
|
|
||||||
void draw_time(char * dateHeure);
|
|
||||||
void show_temp(char * tempHumid);
|
|
||||||
void draw_tabMeteo(lv_obj_t * parent);
|
void draw_tabMeteo(lv_obj_t * parent);
|
||||||
|
|
||||||
void tabChgEvt(lv_event_t *event);
|
void tabChgEvt(lv_event_t *event);
|
||||||
@ -30,3 +30,24 @@ void tabChgEvt(lv_event_t *event);
|
|||||||
void draw_tabCuve(lv_obj_t * parent);
|
void draw_tabCuve(lv_obj_t * parent);
|
||||||
void draw_tabHome(lv_obj_t * parent);
|
void draw_tabHome(lv_obj_t * parent);
|
||||||
void draw_tabSettings(lv_obj_t * parent);
|
void draw_tabSettings(lv_obj_t * parent);
|
||||||
|
|
||||||
|
typedef enum eIHMEvent_t{
|
||||||
|
IHM_EVT_WIFI_STATUS,
|
||||||
|
IHM_EVT_TIME_SETTED,
|
||||||
|
IHM_EVT_OTA_STARTED,
|
||||||
|
IHM_EVT_OTA_PROGRESS,
|
||||||
|
IHM_EVT_HUMID_TEMP,
|
||||||
|
IHM_EVT_PUISSANCE_EMISE,
|
||||||
|
IHM_EVT_ETAT_MACHINE,
|
||||||
|
IHM_EVT_HAUTEUR_CUVE,
|
||||||
|
} eIHMEvent_t;
|
||||||
|
|
||||||
|
typedef struct IHM_EVENT
|
||||||
|
{
|
||||||
|
eIHMEvent_t eEventType; /* Tells the receiving task what the event is. */
|
||||||
|
void *pvData; /* Holds or points to any data associated with the event. */
|
||||||
|
bool bNeedToFreeData; // ← Important !
|
||||||
|
} xIHMEvent_t;
|
||||||
|
|
||||||
|
|
||||||
|
void drawIhm(void *pvParameter);
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 483 B After Width: | Height: | Size: 483 B |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 372 B After Width: | Height: | Size: 372 B |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
29
main/include/communication.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "mqtt_client.h"
|
||||||
|
typedef enum wifi_evt{
|
||||||
|
WIFI_CONNECTED,
|
||||||
|
WIFI_CONNECT_FAIL,
|
||||||
|
WIFI_DISCONNECTED,
|
||||||
|
WIFI_GOT_IP
|
||||||
|
} wifi_evt;
|
||||||
|
typedef enum mqtt_evt{
|
||||||
|
MQTT_CONNECTED,
|
||||||
|
MQTT_CONNECT_FAIL,
|
||||||
|
MQTT_DISCONNECTED,
|
||||||
|
MQTT_DATA_RECEIVED
|
||||||
|
} mqtt_evt;
|
||||||
|
typedef void (*wifi_callback)(wifi_evt evt);
|
||||||
|
typedef void (*mqtt_callback)(mqtt_evt evt, esp_mqtt_event_handle_t evt_data);
|
||||||
|
void wifi_init_sta(wifi_callback cb);
|
||||||
|
void mqtt_app_start(mqtt_callback cb, EventGroupHandle_t evtGroup);
|
||||||
|
|
||||||
|
|
||||||
|
#define topicTempExt "house/temp/282A802600008059"
|
||||||
|
#define topicHauteurCuve "house/cuve/hauteur"
|
||||||
|
#define topicTempInt "house/temp/287DCF1E00008020"
|
||||||
|
#define topicHauteurCuveEvol "house/cuve/hauteurEvol"
|
||||||
|
#define topicConsoElec "energy/puissance_5mn"
|
||||||
|
#define topicEtatMachine "energy/machine_en_route"
|
||||||
|
#define topicdomoticCommand "domotic/cmd"
|
||||||
|
#define topicTest "test"
|
||||||
|
|
||||||
80
main/index.html
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.btn {
|
||||||
|
border: 2px solid black;
|
||||||
|
/* background-color: white; */
|
||||||
|
color: black;
|
||||||
|
padding: 14px 28px;
|
||||||
|
font-size: 16px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Green */
|
||||||
|
.success {
|
||||||
|
border-color: #4CAF50;
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success:hover {
|
||||||
|
background-color: #4CAF50;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Blue */
|
||||||
|
.info {
|
||||||
|
border-color: #2196F3;
|
||||||
|
color: dodgerblue
|
||||||
|
}
|
||||||
|
|
||||||
|
.info:hover {
|
||||||
|
background: #2196F3;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Orange */
|
||||||
|
.warning {
|
||||||
|
border-color: #ff9800;
|
||||||
|
color: orange;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning:hover {
|
||||||
|
background: #ff9800;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Red */
|
||||||
|
.danger {
|
||||||
|
border-color: #f44336;
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.danger:hover {
|
||||||
|
background: #f44336;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Gray */
|
||||||
|
.default {
|
||||||
|
border-color: #e7e7e7;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.default:hover {
|
||||||
|
background: #e7e7e7;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body onload="init()"><center>
|
||||||
|
<h1>Developed by Mark</h1>
|
||||||
|
<h2>How to save and Download crash dump</h2>
|
||||||
|
</br></br>
|
||||||
|
<button class="btn success"><a href="http://192.168.4.1/download">Download</a></button></br></br>
|
||||||
|
<button class="btn success"><a href="http://192.168.4.1/crash">Crash</a></button>
|
||||||
|
</center>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
721
main/main.c
@ -13,6 +13,8 @@
|
|||||||
#include "sdmmc_cmd.h"
|
#include "sdmmc_cmd.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "esp_http_server.h"
|
||||||
|
|
||||||
#include "bsp/esp-bsp.h"
|
#include "bsp/esp-bsp.h"
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
@ -27,11 +29,15 @@
|
|||||||
#include "wifi_logger.h"
|
#include "wifi_logger.h"
|
||||||
#include "obtain_time.h"
|
#include "obtain_time.h"
|
||||||
#include "image_downloader.h"
|
#include "image_downloader.h"
|
||||||
#include "communication.h"
|
#include "include/communication.h"
|
||||||
#include "stateManagement.h"
|
#include "stateManagement.h"
|
||||||
|
#include "driver/gpio.h"
|
||||||
#include "am2302_rmt.h"
|
#include "am2302_rmt.h"
|
||||||
|
|
||||||
|
#include "esp_timer.h"
|
||||||
|
|
||||||
|
#include <esp_task_wdt.h>
|
||||||
|
|
||||||
// GPIO assignment
|
// GPIO assignment
|
||||||
#define AM2302_GPIO 4
|
#define AM2302_GPIO 4
|
||||||
|
|
||||||
@ -51,63 +57,222 @@ static const char *TAG = "domoTic";
|
|||||||
|
|
||||||
extern esp_mqtt_client_handle_t client;
|
extern esp_mqtt_client_handle_t client;
|
||||||
|
|
||||||
typedef enum domo_events{
|
|
||||||
WIFI_CONNECTED,
|
|
||||||
TIME_SETTED
|
|
||||||
} domo_events;
|
|
||||||
|
|
||||||
static EventGroupHandle_t hevt;
|
|
||||||
#define WIFI_RDY 0b0001
|
#define WIFI_RDY 0b0001
|
||||||
|
|
||||||
static lv_subject_t wifiStatus;
|
|
||||||
LV_IMAGE_DECLARE(wifi_ok);
|
EventGroupHandle_t domotic_event_group;
|
||||||
LV_IMAGE_DECLARE(wifi_ko);
|
QueueHandle_t ihm_queue;
|
||||||
|
|
||||||
static void wifiStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject);
|
static void wifiStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject);
|
||||||
|
|
||||||
|
|
||||||
static void wifiStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject)
|
|
||||||
{
|
lv_subject_t mqttStatus;
|
||||||
ESP_LOGE(TAG, "On passe dans le callback de chgt de statut; %li", lv_subject_get_int(subject));
|
|
||||||
bsp_display_lock(0);
|
extern lv_subject_t tempIntSubj;
|
||||||
lv_obj_t * wifiSt = lv_obj_get_child(lv_obj_get_child(lv_layer_top(), 0),2);
|
extern lv_subject_t tempExtSubj;
|
||||||
if(lv_obj_check_type(wifiSt, &lv_image_class)){
|
extern lv_subject_t hauteurCuveSubj;
|
||||||
switch (lv_subject_get_int(subject))
|
extern lv_subject_t hauteurCuveEvolSubj;
|
||||||
|
|
||||||
|
void mqtt_cb(mqtt_evt evt, esp_mqtt_event_handle_t event){
|
||||||
|
switch (evt)
|
||||||
{
|
{
|
||||||
case 0:
|
case MQTT_CONNECTED:
|
||||||
lv_image_set_src(wifiSt,&wifi_ko);
|
if(lvgl_port_lock(50)){
|
||||||
|
ESP_LOGV(TAG,"Statut mqttStatus 1");
|
||||||
|
lv_subject_set_int(&mqttStatus,1);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case MQTT_DISCONNECTED:
|
||||||
lv_image_set_src(wifiSt,&wifi_ok);
|
if(lvgl_port_lock(50)){
|
||||||
|
ESP_LOGE(TAG,"Statut mqttStatus 0");
|
||||||
|
lv_subject_set_int(&mqttStatus,0);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MQTT_DATA_RECEIVED:
|
||||||
|
lv_subject_set_int(&mqttStatus,2);
|
||||||
|
ESP_LOGD(TAG, "\nMQTT_EVENT_DATA");
|
||||||
|
ESP_LOGD(TAG, "TOPIC=%.*s\n", event->topic_len, event->topic);
|
||||||
|
ESP_LOGD(TAG, "DATA=%.*s\n", event->data_len, event->data);
|
||||||
|
if (strncmp(event->topic, topicTempExt, event->topic_len) == 0)
|
||||||
|
{
|
||||||
|
if(lvgl_port_lock(50)){
|
||||||
|
// on retransforme en float pour ne garder que la partie entiere de la température
|
||||||
|
float temp = strtof(event->data, NULL);
|
||||||
|
char buff[5];
|
||||||
|
sprintf(buff,"%.1f",temp);
|
||||||
|
lv_subject_copy_string(&tempExtSubj, buff);
|
||||||
|
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (strncmp(event->topic, topicTempInt, event->topic_len) == 0)
|
||||||
|
{
|
||||||
|
if(lvgl_port_lock(0)){
|
||||||
|
// on retransforme en float pour ne garder que la partie entiere de la température
|
||||||
|
float temp = strtof(event->data, NULL);
|
||||||
|
char buff[5];
|
||||||
|
sprintf(buff,"%.1f",temp);
|
||||||
|
lv_subject_copy_string(&tempIntSubj, buff);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*else if (strncmp(event->topic, topicHauteurCuveEvol, event->topic_len) == 0)
|
||||||
|
{
|
||||||
|
float datas[4] = {};
|
||||||
|
splitIt(event->data, event->data_len, datas);
|
||||||
|
ser1->y_points[0] = 130 - (int)datas[0];
|
||||||
|
ser1->y_points[1] = 130 - (int)datas[1];
|
||||||
|
ser1->y_points[2] = 130 - (int)datas[2];
|
||||||
|
ser1->y_points[3] = 130 - (int)datas[3];
|
||||||
|
lvgl_port_lock(0);
|
||||||
|
lv_chart_refresh(chart);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
|
||||||
|
|
||||||
|
// lv_subject_copy_string(&hauteurCuveEvolSubj, event->data);
|
||||||
|
}*/
|
||||||
|
else if (strncmp(event->topic, topicHauteurCuve, event->topic_len) == 0)
|
||||||
|
{
|
||||||
|
float f = strtof(event->data, NULL);
|
||||||
|
ESP_LOGE(TAG,"%f recu mqtt", f);
|
||||||
|
send_event(EVT_HAUTEUR_CUVE,&f);
|
||||||
|
/*
|
||||||
|
if (lvgl_port_lock(50)){
|
||||||
|
float temp = strtof(event->data, NULL);
|
||||||
|
char buff[5];
|
||||||
|
sprintf(buff,"%.0f",temp);
|
||||||
|
lv_subject_copy_string(&hauteurCuveSubj, buff);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}else if (strncmp(event->topic, topicTest, event->topic_len) == 0){
|
||||||
|
ESP_LOGD(TAG,"Msg reecu sur test");
|
||||||
|
}else if (strncmp(event->topic, topicConsoElec, event->topic_len) == 0){
|
||||||
|
char* datas = malloc(event->data_len+1);
|
||||||
|
strncpy(datas, event->data, event->data_len);
|
||||||
|
|
||||||
|
send_event(EVT_PUISSANCE_RECUE,(int*)atoi(datas));
|
||||||
|
|
||||||
|
}else if (strncmp(event->topic, topicEtatMachine, event->topic_len) == 0){
|
||||||
|
char* datas = malloc(event->data_len+1);
|
||||||
|
strncpy(datas, event->data, event->data_len);
|
||||||
|
|
||||||
|
send_event(EVT_ETAT_MACHINE,(int*)atoi(datas));
|
||||||
|
|
||||||
|
}else if (strncmp(event->topic, topicdomoticCommand, event->topic_len) == 0){
|
||||||
|
if(strncmp(event->data,"restart",7)==0){
|
||||||
|
ESP_LOGI(TAG," Commande 'restart' recue");
|
||||||
|
esp_restart();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESP_LOGE(TAG, "None match :-( %.*s", event->topic_len, event->topic);
|
||||||
|
}
|
||||||
|
if (lvgl_port_lock(50)){
|
||||||
|
lv_subject_set_int(&mqttStatus,3);
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
ESP_LOGE(TAG, "L'objet recuip en semble pas etre du bon type");
|
|
||||||
}
|
|
||||||
bsp_display_unlock();
|
|
||||||
//int32_t prev_v = lv_subject_get_previous_int(subject);
|
|
||||||
//int32_t cur_v = lv_subject_get_int(subject);
|
|
||||||
|
|
||||||
//lv_obj_t * btn = lv_observer_get_target(observer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void send_event(domo_events evt){
|
|
||||||
switch(evt){
|
void send_event(domo_events evt, void* pDatas) {
|
||||||
case WIFI_CONNECTED:
|
ESP_LOGE(TAG,"On est dans l'event handler %i", evt);
|
||||||
xEventGroupSetBits(hevt,WIFI_RDY);
|
|
||||||
start_wifi_logger();
|
xIHMEvent_t *ihmEvt = malloc(sizeof(xIHMEvent_t));
|
||||||
wifi_log_e("test", "%s %d %f", "hello world wifi logger", 43, 45.341223242); // write log over wifi with log level -> ERROR }
|
if (!ihmEvt) {
|
||||||
ESP_LOGI(TAG, "connected to ap SSID");
|
ESP_LOGE(TAG, "malloc failed for event struct");
|
||||||
if(lvgl_port_lock(0)){
|
return;
|
||||||
ESP_LOGE(TAG,"Statut Wifi 1");
|
|
||||||
lv_subject_set_int(&wifiStatus,1);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (evt) {
|
||||||
|
case EVT_WIFI_CONNECTED: {
|
||||||
|
xEventGroupSetBits(domotic_event_group, WIFI_CONNECTED_BIT);
|
||||||
|
ESP_LOGI(TAG, "connected to AP SSID");
|
||||||
|
|
||||||
|
bool *wifiStatus = malloc(sizeof(bool));
|
||||||
|
if (!wifiStatus) {
|
||||||
|
ESP_LOGE(TAG, "malloc failed for wifiStatus");
|
||||||
|
free(ihmEvt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*wifiStatus = true;
|
||||||
|
|
||||||
|
ihmEvt->eEventType = IHM_EVT_WIFI_STATUS;
|
||||||
|
ihmEvt->pvData = wifiStatus;
|
||||||
|
ihmEvt->bNeedToFreeData = true;
|
||||||
break;
|
break;
|
||||||
case TIME_SETTED:
|
}
|
||||||
|
|
||||||
|
case EVT_TIME_SETTED:
|
||||||
|
const char *msg = (const char *)pDatas;
|
||||||
|
char *msg_copy = malloc(strlen(msg) + 1);
|
||||||
|
if (!msg_copy) {
|
||||||
|
ESP_LOGE(TAG, "malloc failed for message string");
|
||||||
|
free(ihmEvt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strcpy(msg_copy, msg);
|
||||||
|
ihmEvt->eEventType = IHM_EVT_TIME_SETTED;
|
||||||
|
ihmEvt->pvData = msg_copy;
|
||||||
|
ihmEvt->bNeedToFreeData = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case EVT_BTN_VOLET:
|
||||||
|
esp_mqtt_client_publish(client, "volets", pDatas, 0, 0, 0);
|
||||||
|
free(ihmEvt); // rien à envoyer à l'IHM
|
||||||
|
return;
|
||||||
|
|
||||||
|
case EVT_PUISSANCE_RECUE:
|
||||||
|
ihmEvt->eEventType = IHM_EVT_PUISSANCE_EMISE;
|
||||||
|
ihmEvt->pvData = pDatas;
|
||||||
|
ihmEvt->bNeedToFreeData = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVT_ETAT_MACHINE:
|
||||||
|
ihmEvt->eEventType = IHM_EVT_ETAT_MACHINE;
|
||||||
|
ihmEvt->pvData = pDatas;
|
||||||
|
ihmEvt->bNeedToFreeData = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EVT_HAUTEUR_CUVE: {
|
||||||
|
float *data = malloc(sizeof(float));
|
||||||
|
if (!data) {
|
||||||
|
ESP_LOGE(TAG, "malloc failed for hauteur_cuve");
|
||||||
|
free(ihmEvt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
*data = *(float *)pDatas;
|
||||||
|
ESP_LOGE(TAG, "EVENT_HANDLER -> On a recu %f", *data);
|
||||||
|
|
||||||
|
ihmEvt->eEventType = IHM_EVT_HAUTEUR_CUVE;
|
||||||
|
ihmEvt->pvData = data;
|
||||||
|
ihmEvt->bNeedToFreeData = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
ESP_LOGE(TAG, "Unhandled event type");
|
||||||
|
free(ihmEvt);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ESP_LOGE(TAG, "Envoi d'un evt %i a l'IHM", ihmEvt->eEventType);
|
||||||
|
if (xQueueSendToFront(ihm_queue, &ihmEvt, pdMS_TO_TICKS(10)) != pdPASS) {
|
||||||
|
ESP_LOGE(TAG, "La queue est pleine");
|
||||||
|
if (ihmEvt->bNeedToFreeData && ihmEvt->pvData) {
|
||||||
|
free(ihmEvt->pvData);
|
||||||
|
}
|
||||||
|
free(ihmEvt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,6 +344,7 @@ void mount_sd_card()
|
|||||||
extern char *days[7];
|
extern char *days[7];
|
||||||
extern char *months[12];
|
extern char *months[12];
|
||||||
|
|
||||||
|
|
||||||
esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt)
|
esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt)
|
||||||
{
|
{
|
||||||
switch (evt->event_id) {
|
switch (evt->event_id) {
|
||||||
@ -210,11 +376,45 @@ esp_err_t _ota_http_event_handler(esp_http_client_event_t *evt)
|
|||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start");
|
extern const uint8_t server_cert_pem_start[] asm("_binary_ca_cert_pem_start");
|
||||||
extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end");
|
extern const uint8_t server_cert_pem_end[] asm("_binary_ca_cert_pem_end");
|
||||||
|
static esp_err_t validate_image_header(esp_app_desc_t *new_app_info)
|
||||||
|
{
|
||||||
|
if (new_app_info == NULL) {
|
||||||
|
return ESP_ERR_INVALID_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
const esp_partition_t *running = esp_ota_get_running_partition();
|
||||||
|
esp_app_desc_t running_app_info;
|
||||||
|
if (esp_ota_get_partition_description(running, &running_app_info) == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Running firmware version: %s", running_app_info.version);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef CONFIG_EXAMPLE_SKIP_VERSION_CHECK
|
||||||
|
if (memcmp(new_app_info->version, running_app_info.version, sizeof(new_app_info->version)) == 0) {
|
||||||
|
ESP_LOGW(TAG, "Current running version is the same as a new. We will not continue the update.");
|
||||||
|
return ESP_FAIL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void simple_ota_example_task(void *pvParameter)
|
void simple_ota_example_task(void *pvParameter)
|
||||||
{
|
{
|
||||||
|
ESP_LOGE(TAG,"En attente connexion wifi");
|
||||||
|
// Waiting until either the connection is established (WIFI_CONNECTED_BIT).
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(domotic_event_group,
|
||||||
|
BIT0,
|
||||||
|
pdFALSE,
|
||||||
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
if (bits & BIT0){
|
||||||
|
|
||||||
|
esp_err_t ota_finish_err = ESP_OK;
|
||||||
ESP_LOGI(TAG, "Starting OTA example task");
|
ESP_LOGI(TAG, "Starting OTA example task");
|
||||||
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
#ifdef CONFIG_EXAMPLE_FIRMWARE_UPGRADE_BIND_IF
|
||||||
esp_netif_t *netif = get_example_netif_from_desc(bind_interface_name);
|
esp_netif_t *netif = get_example_netif_from_desc(bind_interface_name);
|
||||||
@ -227,10 +427,10 @@ void simple_ota_example_task(void *pvParameter)
|
|||||||
ESP_LOGI(TAG, "Bind interface name is %s", ifr.ifr_name);
|
ESP_LOGI(TAG, "Bind interface name is %s", ifr.ifr_name);
|
||||||
#endif
|
#endif
|
||||||
esp_http_client_config_t config = {
|
esp_http_client_config_t config = {
|
||||||
.url = "http://192.168.0.28:8070/rgb_lcd.bin",
|
.url = "https://192.168.0.28:8070/rgb_lcd.bin",
|
||||||
.timeout_ms = 30000,
|
.timeout_ms = 30000,
|
||||||
.buffer_size = 6144,
|
.buffer_size = 20000,
|
||||||
.buffer_size_tx = 6144, //TX Buffer, Main Buffer
|
.buffer_size_tx = 20000, //TX Buffer, Main Buffer
|
||||||
.event_handler = _ota_http_event_handler,
|
.event_handler = _ota_http_event_handler,
|
||||||
.keep_alive_enable = true,
|
.keep_alive_enable = true,
|
||||||
.cert_pem = (char *)server_cert_pem_start,
|
.cert_pem = (char *)server_cert_pem_start,
|
||||||
@ -256,25 +456,83 @@ void simple_ota_example_task(void *pvParameter)
|
|||||||
#ifdef CONFIG_EXAMPLE_SKIP_COMMON_NAME_CHECK
|
#ifdef CONFIG_EXAMPLE_SKIP_COMMON_NAME_CHECK
|
||||||
config.skip_cert_common_name_check = true;
|
config.skip_cert_common_name_check = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
esp_https_ota_config_t ota_config = {
|
esp_https_ota_config_t ota_config = {
|
||||||
.http_config = &config,
|
.http_config = &config,
|
||||||
|
.buffer_caps = MALLOC_CAP_INTERNAL
|
||||||
};
|
};
|
||||||
ESP_LOGI(TAG, "Attempting to download update from %s", config.url);
|
ESP_LOGI(TAG, "Attempting to download update from %s", config.url);
|
||||||
esp_err_t ret = esp_https_ota(&ota_config);
|
esp_https_ota_handle_t https_ota_handle = NULL;
|
||||||
if (ret == ESP_OK) {
|
esp_err_t err = esp_https_ota_begin(&ota_config, &https_ota_handle);
|
||||||
ESP_LOGI(TAG, "OTA Succeed, Rebooting...");
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGE(TAG, "ESP HTTPS OTA Begin failed");
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
esp_app_desc_t app_desc;
|
||||||
|
err = esp_https_ota_get_img_desc(https_ota_handle, &app_desc);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGE(TAG, "esp_https_ota_get_img_desc failed");
|
||||||
|
goto ota_end;
|
||||||
|
}
|
||||||
|
err = validate_image_header(&app_desc);
|
||||||
|
if (err != ESP_OK) {
|
||||||
|
ESP_LOGE(TAG, "image header verification failed");
|
||||||
|
goto ota_end;
|
||||||
|
}
|
||||||
|
xIHMEvent_t m = {
|
||||||
|
.eEventType = IHM_EVT_OTA_STARTED,
|
||||||
|
.pvData = NULL
|
||||||
|
};
|
||||||
|
//xQueueSendToBack(ihm_queue,&m,5);
|
||||||
|
|
||||||
|
esp_task_wdt_config_t cfgWdt = {
|
||||||
|
.idle_core_mask = 0,
|
||||||
|
.timeout_ms=15000,
|
||||||
|
.trigger_panic=false
|
||||||
|
};
|
||||||
|
esp_task_wdt_reconfigure(&cfgWdt);
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
err = esp_https_ota_perform(https_ota_handle);
|
||||||
|
if (err != ESP_ERR_HTTPS_OTA_IN_PROGRESS) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// esp_https_ota_perform returns after every read operation which gives user the ability to
|
||||||
|
// monitor the status of OTA upgrade by calling esp_https_ota_get_image_len_read, which gives length of image
|
||||||
|
// data read so far.
|
||||||
|
//ESP_LOGE(TAG,"Image size : %i", esp_https_ota_get_image_size(https_ota_handle));
|
||||||
|
int percent=esp_https_ota_get_image_len_read(https_ota_handle)*100/esp_https_ota_get_image_size(https_ota_handle);
|
||||||
|
//ESP_LOGE(TAG, "Image bytes read: %d %i%%", esp_https_ota_get_image_len_read(https_ota_handle),percent);
|
||||||
|
m.eEventType=IHM_EVT_OTA_PROGRESS;
|
||||||
|
m.pvData=(void*)percent;
|
||||||
|
//xQueueSendToBack(ihm_queue,&m,5);
|
||||||
|
vTaskDelay(10/portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
if (esp_https_ota_is_complete_data_received(https_ota_handle) != true) {
|
||||||
|
// the OTA image was not completely received and user can customise the response to this situation.
|
||||||
|
ESP_LOGE(TAG, "Complete data was not received.");
|
||||||
|
} else {
|
||||||
|
ota_finish_err = esp_https_ota_finish(https_ota_handle);
|
||||||
|
if ((err == ESP_OK) && (ota_finish_err == ESP_OK)) {
|
||||||
|
ESP_LOGI(TAG, "ESP_HTTPS_OTA upgrade successful. Rebooting ...");
|
||||||
|
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
||||||
esp_restart();
|
esp_restart();
|
||||||
} else {
|
} else {
|
||||||
ESP_LOGE(TAG, "Firmware upgrade failed");
|
if (ota_finish_err == ESP_ERR_OTA_VALIDATE_FAILED) {
|
||||||
|
ESP_LOGE(TAG, "Image validation failed, image is corrupted");
|
||||||
}
|
}
|
||||||
while (1) {
|
ESP_LOGE(TAG, "ESP_HTTPS_OTA upgrade failed 0x%x", ota_finish_err);
|
||||||
vTaskDelay(1000 / portTICK_PERIOD_MS);
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ota_end:
|
||||||
|
esp_https_ota_abort(https_ota_handle);
|
||||||
|
ESP_LOGE(TAG, "ESP_HTTPS_OTA upgrade failed");
|
||||||
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
am2302_handle_t sensor = NULL;
|
||||||
am2302_handle_t sensor = NULL;
|
|
||||||
|
|
||||||
void readTempHumid(void *pvParameter)
|
void readTempHumid(void *pvParameter)
|
||||||
{
|
{
|
||||||
@ -286,7 +544,11 @@ void readTempHumid(void *pvParameter)
|
|||||||
char buff[40];
|
char buff[40];
|
||||||
ESP_LOGI(TAG, "Temperature: %.1f °C, Humidity: %.1f %%", temperature, humidity);
|
ESP_LOGI(TAG, "Temperature: %.1f °C, Humidity: %.1f %%", temperature, humidity);
|
||||||
sprintf(buff,"%.1f °C, %.1f %%", temperature, humidity);
|
sprintf(buff,"%.1f °C, %.1f %%", temperature, humidity);
|
||||||
show_temp(buff);
|
xIHMEvent_t m = {
|
||||||
|
.eEventType = IHM_EVT_HUMID_TEMP,
|
||||||
|
.pvData = buff
|
||||||
|
};
|
||||||
|
//xQueueSendToFront(ihm_queue,&m,5);
|
||||||
vTaskDelay(60000 / portTICK_PERIOD_MS);
|
vTaskDelay(60000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,38 +558,193 @@ void alloc_fail(size_t size, uint32_t caps, const char * function_name){
|
|||||||
ESP_LOGE(TAG,"fail alloc %u in %" PRIu32 " in %s", size,caps,function_name);
|
ESP_LOGE(TAG,"fail alloc %u in %" PRIu32 " in %s", size,caps,function_name);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
static QueueHandle_t gpio_evt_queue = NULL;
|
||||||
|
// Durée pour l'arret automatique (micro-secondes ^^)
|
||||||
|
uint64_t arretAuto=5*60*1000*1000;
|
||||||
|
bool ecranEteint=true;
|
||||||
|
// Ce timer permet d'eteindre l'ecran "arretAuto" apres la derniere présence détectée
|
||||||
|
esp_timer_handle_t presence_timer;
|
||||||
|
|
||||||
|
static void IRAM_ATTR gpio_isr_handler(void* arg)
|
||||||
|
{
|
||||||
|
uint32_t gpio_num = (uint32_t) arg;
|
||||||
|
xQueueSendFromISR(gpio_evt_queue, &gpio_num, NULL);
|
||||||
|
|
||||||
|
}
|
||||||
|
static void gpio_task_example(void* arg)
|
||||||
|
{
|
||||||
|
uint32_t io_num;
|
||||||
|
int delay=50;
|
||||||
|
for (;;) {
|
||||||
|
if (xQueueReceive(gpio_evt_queue, &io_num, portMAX_DELAY)) {
|
||||||
|
ESP_LOGE(TAG,"Got it !");
|
||||||
|
if(ecranEteint){
|
||||||
|
for (int i = 0; i < 100; i+=2)
|
||||||
|
{
|
||||||
|
if(bsp_display_lock(0)){
|
||||||
|
bsp_display_brightness_set(i);
|
||||||
|
bsp_display_unlock();
|
||||||
|
}
|
||||||
|
vTaskDelay(delay/portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
ecranEteint=false;
|
||||||
|
}else{
|
||||||
|
ESP_LOGI(TAG, "Ecran déjà allumé");
|
||||||
|
}
|
||||||
|
//On arrete le timer de presence
|
||||||
|
esp_timer_stop(presence_timer);
|
||||||
|
//Pour le redemarrer
|
||||||
|
ESP_ERROR_CHECK(esp_timer_start_once(presence_timer, arretAuto));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#define GPIO_INPUT_IO_0 CONFIG_GPIO_INPUT_CAPTEUR_PIR
|
||||||
|
|
||||||
|
void initPirSensor(){
|
||||||
|
//create a queue to handle gpio event from isr
|
||||||
|
gpio_evt_queue = xQueueCreate(10, sizeof(uint32_t));
|
||||||
|
//start gpio task
|
||||||
|
xTaskCreate(gpio_task_example, "gpio_task_example", 5000, NULL, 10, NULL);
|
||||||
|
|
||||||
|
gpio_config_t gpioconf={
|
||||||
|
.pin_bit_mask= 1ULL<<GPIO_INPUT_IO_0,
|
||||||
|
.intr_type=GPIO_INTR_POSEDGE,
|
||||||
|
.mode=GPIO_MODE_INPUT,
|
||||||
|
.pull_up_en=1
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(gpio_config(&gpioconf));
|
||||||
|
gpio_install_isr_service(0);
|
||||||
|
gpio_isr_handler_add(GPIO_INPUT_IO_0,gpio_isr_handler,(void*)(GPIO_INPUT_IO_0));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ce timer permet d'eteindre l'ecran apres @arretAuto de présence*/
|
||||||
|
static void presence_timer_callback(void* arg)
|
||||||
|
{
|
||||||
|
int64_t time_since_boot = esp_timer_get_time();
|
||||||
|
for (int i = 100; i >= 0; i-=2)
|
||||||
|
{
|
||||||
|
if(bsp_display_lock(0)){
|
||||||
|
bsp_display_brightness_set(i);
|
||||||
|
bsp_display_unlock();
|
||||||
|
}
|
||||||
|
vTaskDelay(20/portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
ecranEteint=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static esp_err_t download_get_handler(httpd_req_t *req) {
|
||||||
|
httpd_resp_set_type(req, "application/octet-stream");
|
||||||
|
httpd_resp_set_hdr(req, "Content-Disposition",
|
||||||
|
"attachment;filename=core.bin");
|
||||||
|
|
||||||
|
esp_partition_iterator_t partition_iterator = esp_partition_find(
|
||||||
|
ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_COREDUMP, "coredump");
|
||||||
|
|
||||||
|
const esp_partition_t *partition = esp_partition_get(partition_iterator);
|
||||||
|
|
||||||
|
int file_size = 65536;
|
||||||
|
int chunk_size = 1024;
|
||||||
|
int i = 0;
|
||||||
|
for (i = 0; i < (file_size / chunk_size); i++) {
|
||||||
|
char store_data[chunk_size];
|
||||||
|
ESP_ERROR_CHECK(
|
||||||
|
esp_partition_read(partition, i * chunk_size, store_data, chunk_size));
|
||||||
|
httpd_resp_send_chunk(req, store_data, chunk_size);
|
||||||
|
}
|
||||||
|
uint16_t pending_size = file_size - (i * chunk_size);
|
||||||
|
char pending_data[pending_size];
|
||||||
|
if (pending_size > 0) {
|
||||||
|
ESP_ERROR_CHECK(esp_partition_read(partition, i * chunk_size, pending_data,
|
||||||
|
pending_size));
|
||||||
|
httpd_resp_send_chunk(req, pending_data, pending_size);
|
||||||
|
}
|
||||||
|
httpd_resp_send_chunk(req, NULL, 0);
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern const unsigned char index_start[] asm("_binary_index_html_start");
|
||||||
|
extern const unsigned char index_end[] asm("_binary_index_html_end");
|
||||||
|
|
||||||
|
static esp_err_t crash_get_handler(httpd_req_t *req) {
|
||||||
|
const size_t index_size = (index_end - index_start);
|
||||||
|
httpd_resp_set_type(req, "text/html");
|
||||||
|
httpd_resp_send_chunk(req, (const char *)index_start, index_size);
|
||||||
|
httpd_resp_send_chunk(req, NULL, 0);
|
||||||
|
assert(0);
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const httpd_uri_t download = {
|
||||||
|
.uri = "/download",
|
||||||
|
.method = HTTP_GET,
|
||||||
|
.handler = download_get_handler,
|
||||||
|
.user_ctx = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const httpd_uri_t crash = {
|
||||||
|
.uri = "/crash",
|
||||||
|
.method = HTTP_GET,
|
||||||
|
.handler = crash_get_handler,
|
||||||
|
.user_ctx = NULL,
|
||||||
|
};
|
||||||
|
static esp_err_t root_get_handler(httpd_req_t *req) {
|
||||||
|
const size_t index_size = (index_end - index_start);
|
||||||
|
httpd_resp_set_type(req, "text/html");
|
||||||
|
httpd_resp_send_chunk(req, (const char *)index_start, index_size);
|
||||||
|
httpd_resp_send_chunk(req, NULL, 0);
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
static const httpd_uri_t root = {
|
||||||
|
.uri = "/",
|
||||||
|
.method = HTTP_GET,
|
||||||
|
.handler = root_get_handler,
|
||||||
|
.user_ctx = NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static httpd_handle_t start_webserver(void) {
|
||||||
|
httpd_handle_t server = NULL;
|
||||||
|
httpd_config_t config = HTTPD_DEFAULT_CONFIG();
|
||||||
|
config.max_resp_headers = 1024;
|
||||||
|
config.lru_purge_enable = true;
|
||||||
|
|
||||||
|
// Start the httpd server
|
||||||
|
ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
|
||||||
|
if (httpd_start(&server, &config) == ESP_OK) {
|
||||||
|
// Set URI handlers
|
||||||
|
ESP_LOGI(TAG, "Registering URI handlers");
|
||||||
|
httpd_register_uri_handler(server, &root);
|
||||||
|
httpd_register_uri_handler(server, &download);
|
||||||
|
httpd_register_uri_handler(server, &crash);
|
||||||
|
return server;
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "Error starting server!");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void wifi_cb(wifi_evt evt){
|
void wifi_cb(wifi_evt evt){
|
||||||
|
ESP_LOGE(TAG,"On est dans wifi_cb %i", evt);
|
||||||
switch(evt){
|
switch(evt){
|
||||||
case CONNECTED:
|
case WIFI_CONNECTED:
|
||||||
send_event(WIFI_CONNECTED);
|
mainState.wifi_init=true;
|
||||||
case DISCONNECTED:
|
send_event(WIFI_CONNECTED,NULL);
|
||||||
if(lvgl_port_lock(0)){
|
|
||||||
ESP_LOGE(TAG,"Statut Wifi 0");
|
|
||||||
lv_subject_set_int(&wifiStatus,0);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case GOT_IP:
|
case WIFI_DISCONNECTED:
|
||||||
if(lvgl_port_lock(0)){
|
mainState.wifi_init=true;
|
||||||
ESP_LOGE(TAG,"Statut Wifi 1");
|
send_event(WIFI_DISCONNECTED,NULL);
|
||||||
lv_subject_set_int(&wifiStatus,1);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case CONNECT_FAIL:
|
case WIFI_GOT_IP:
|
||||||
if(lvgl_port_lock(0)){
|
mainState.wifi_init=true;
|
||||||
ESP_LOGE(TAG,"Statut Wifi 0");
|
send_event(WIFI_CONNECTED,NULL);
|
||||||
lv_subject_set_int(&wifiStatus,0);
|
break;
|
||||||
lvgl_port_unlock();
|
case WIFI_CONNECT_FAIL:
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if(lvgl_port_lock(0)){
|
|
||||||
ESP_LOGE(TAG,"Statut Wifi 0");
|
|
||||||
lv_subject_set_int(&wifiStatus,0);
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -392,10 +809,66 @@ void weather_data_retreived_start()
|
|||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LV_IMAGE_DECLARE(mqtt_ok);
|
||||||
|
LV_IMAGE_DECLARE(mqtt_ko);
|
||||||
|
|
||||||
|
static void mqttStatus_obs_cb(lv_observer_t * observer, lv_subject_t * subject)
|
||||||
|
{
|
||||||
|
ESP_LOGV(TAG, "On passe dans le callback de chgt de statut; %li", lv_subject_get_int(subject));
|
||||||
|
if(lvgl_port_lock(0)){
|
||||||
|
lv_obj_t * wifiSt = lv_obj_get_child(lv_obj_get_child(lv_layer_top(), 0),3);
|
||||||
|
if(lv_obj_check_type(wifiSt, &lv_image_class)){
|
||||||
|
switch (lv_subject_get_int(subject))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
lv_image_set_src(wifiSt,&mqtt_ko);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
lv_image_set_src(wifiSt,&mqtt_ok);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
lv_color_t color = lv_color_make(255, 0, 0);
|
||||||
|
lv_obj_set_style_image_recolor_opa(wifiSt, 125, 0);
|
||||||
|
lv_obj_set_style_image_recolor(wifiSt, color, 0);
|
||||||
|
vTaskDelay(2000 / portTICK_PERIOD_MS);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
lv_obj_set_style_image_recolor_opa(wifiSt, 0, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
ESP_LOGE(TAG, "L'objet recuip en semble pas etre du bon type");
|
||||||
|
}
|
||||||
|
lvgl_port_unlock();
|
||||||
|
}
|
||||||
|
//int32_t prev_v = lv_subject_get_previous_int(subject);
|
||||||
|
//int32_t cur_v = lv_subject_get_int(subject);
|
||||||
|
|
||||||
|
//lv_obj_t * btn = lv_observer_get_target(observer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
domotic_event_group = xEventGroupCreate();
|
||||||
|
ihm_queue = xQueueCreate(10,sizeof(xIHMEvent_t *));
|
||||||
|
//init_display();
|
||||||
|
const esp_timer_create_args_t periodic_timer_args = {
|
||||||
|
.callback = &presence_timer_callback,
|
||||||
|
/* name is optional, but may help identify the timer when debugging */
|
||||||
|
.name = "presence"
|
||||||
|
};
|
||||||
|
ESP_ERROR_CHECK(esp_timer_create(&periodic_timer_args, &presence_timer));
|
||||||
|
/* Start the timers */
|
||||||
|
ESP_ERROR_CHECK(esp_timer_start_once(presence_timer, 30*1000*1000));
|
||||||
|
|
||||||
|
|
||||||
|
initPirSensor();
|
||||||
|
|
||||||
printf("Minimum free heap size: %" PRIu32 " bytes\n", esp_get_minimum_free_heap_size());
|
printf("Minimum free heap size: %" PRIu32 " bytes\n", esp_get_minimum_free_heap_size());
|
||||||
printf("Free heap size: %" PRIu32 " bytes\n", esp_get_free_heap_size());
|
printf("Free heap size: %" PRIu32 " bytes\n", esp_get_free_heap_size());
|
||||||
heap_caps_print_heap_info(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
heap_caps_print_heap_info(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
||||||
@ -406,27 +879,9 @@ void app_main(void)
|
|||||||
esp_log_level_set("wifi", ESP_LOG_ERROR);
|
esp_log_level_set("wifi", ESP_LOG_ERROR);
|
||||||
esp_log_level_set(TAG, ESP_LOG_VERBOSE);
|
esp_log_level_set(TAG, ESP_LOG_VERBOSE);
|
||||||
|
|
||||||
printf("2- Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
|
|
||||||
//mount_sd_card();
|
//mount_sd_card();
|
||||||
bsp_sdcard_mount();
|
bsp_sdcard_mount();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//lv_log_register_print_cb(log_cb);
|
|
||||||
// LCD HW initialization
|
|
||||||
//ESP_ERROR_CHECK(app_lcd_init());
|
|
||||||
|
|
||||||
printf("4 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
// Touch initialization
|
|
||||||
//ESP_ERROR_CHECK(app_touch_init());
|
|
||||||
|
|
||||||
printf("5 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
// LVGL initialization
|
|
||||||
//ESP_ERROR_CHECK(app_lvgl_init());
|
|
||||||
|
|
||||||
printf("6 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Initializing LittleFS");
|
ESP_LOGI(TAG, "Initializing LittleFS");
|
||||||
|
|
||||||
esp_vfs_littlefs_conf_t conflfs = {
|
esp_vfs_littlefs_conf_t conflfs = {
|
||||||
@ -463,12 +918,8 @@ void app_main(void)
|
|||||||
|
|
||||||
// On affiche au plus tot l'ecran de démarrage
|
// On affiche au plus tot l'ecran de démarrage
|
||||||
// ESP_ERROR_CHECK(esp_lcd_panel_mirror(lcd_panel,true,true));
|
// ESP_ERROR_CHECK(esp_lcd_panel_mirror(lcd_panel,true,true));
|
||||||
init_display();
|
xTaskCreatePinnedToCore(&drawIhm,"ihm_task",10000,ihm_queue,10,NULL,0);
|
||||||
display_lock("app_main");
|
|
||||||
app_main_display();
|
|
||||||
display_unlock("app_main");
|
|
||||||
|
|
||||||
printf("7 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
// Initialize NVS
|
// Initialize NVS
|
||||||
esp_err_t ret = nvs_flash_init();
|
esp_err_t ret = nvs_flash_init();
|
||||||
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
|
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND)
|
||||||
@ -478,70 +929,53 @@ void app_main(void)
|
|||||||
}
|
}
|
||||||
ESP_ERROR_CHECK(ret);
|
ESP_ERROR_CHECK(ret);
|
||||||
|
|
||||||
printf("8 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
|
ESP_LOGI(TAG, "ESP_WIFI_MODE_STA");
|
||||||
|
|
||||||
lv_subject_init_int(&wifiStatus,0);
|
|
||||||
lv_subject_add_observer_obj(&wifiStatus, wifiStatus_obs_cb, NULL, NULL);
|
|
||||||
wifi_init_sta(wifi_cb);
|
wifi_init_sta(wifi_cb);
|
||||||
//
|
//start_wifi_logger();
|
||||||
|
//wifi_log_e("test", "%s %d %f", "hello world wifi logger", 43, 45.341223242); // write log over wifi with log level -> ERROR
|
||||||
esp_log_level_set("tcp_handler", ESP_LOG_NONE);
|
esp_log_level_set("tcp_handler", ESP_LOG_NONE);
|
||||||
printf("8b - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
printf("8b - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
||||||
|
|
||||||
printf("9 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
printf("9 - Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
||||||
|
|
||||||
|
/* Ensure to disable any WiFi power save mode, this allows best throughput
|
||||||
|
* and hence timings for overall OTA operation.
|
||||||
|
*/
|
||||||
|
esp_wifi_set_ps(WIFI_PS_NONE);
|
||||||
|
xTaskCreatePinnedToCore(&simple_ota_example_task, "ota__task", 8192, NULL, 1, NULL,0);
|
||||||
|
|
||||||
on_weather_data_retrieval(weather_data_retreived);
|
on_weather_data_retrieval(weather_data_retreived);
|
||||||
on_weather_data_retrieval_start(weather_data_retreived_start);
|
on_weather_data_retrieval_start(weather_data_retreived_start);
|
||||||
initialise_weather_data_retrieval(600000);
|
|
||||||
ESP_LOGW(TAG, "Weather data retrieval initialized");
|
ESP_LOGW(TAG, "Weather data retrieval initialized");
|
||||||
|
initialise_weather_data_retrieval(600000, domotic_event_group);
|
||||||
time_t now;
|
|
||||||
struct tm timeinfo;
|
|
||||||
time(&now);
|
|
||||||
localtime_r(&now, &timeinfo);
|
|
||||||
// Is time set? If not, tm_year will be (1970 - 1900).
|
|
||||||
if (timeinfo.tm_year < (2016 - 1900))
|
|
||||||
{
|
|
||||||
ESP_LOGI(TAG, "Time is not set yet. Connecting to WiFi and getting time over NTP.");
|
|
||||||
obtain_time();
|
|
||||||
// update 'now' variable with current time
|
|
||||||
time(&now);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
printf("10. Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
heap_caps_print_heap_info(MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
|
|
||||||
|
|
||||||
|
|
||||||
printf("11. Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
|
||||||
ESP_LOGW(TAG, "On telecharge l'image cuve");
|
|
||||||
TaskHandle_t xHandle = NULL;
|
TaskHandle_t xHandle = NULL;
|
||||||
BaseType_t ret1;
|
BaseType_t ret1;
|
||||||
|
ret1 = xTaskCreate(&imgdwn, "imageDownload_task", 3 * 1024, domotic_event_group, 5, &xHandle);
|
||||||
ret1 = xTaskCreate(&imgdwn, "imageDownload_task", 3 * 1024, NULL, 5, &xHandle);
|
|
||||||
if (ret1 != pdPASS)
|
if (ret1 != pdPASS)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "Impossiblke de creer la tache imageDownload_task %i", ret1);
|
ESP_LOGE(TAG, "Impossiblke de creer la tache imageDownload_task %i", ret1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tache updateTime */
|
||||||
BaseType_t ret2 = xTaskCreate(&updateTime, "updateTimeTask", 3 * 1024, NULL, 5, NULL);
|
BaseType_t ret2 = xTaskCreate(&updateTime, "updateTimeTask", 3 * 1024, NULL, 5, NULL);
|
||||||
if (ret2 != pdPASS)
|
if (ret2 != pdPASS)
|
||||||
{
|
{
|
||||||
ESP_LOGE(TAG, "Impossiblke de creer la tache updateTimeTask %i", ret2);
|
ESP_LOGE(TAG, "Impossiblke de creer la tache updateTimeTask %i", ret2);
|
||||||
}
|
}
|
||||||
|
/* Tache updateTime - FIN*/
|
||||||
|
|
||||||
printf("12. Free heap after buffers allocation: %d\n", xPortGetFreeHeapSize());
|
mqtt_app_start(mqtt_cb, domotic_event_group);
|
||||||
// Show LVGL objects
|
|
||||||
if(display_lock("draw_ihm")){
|
//start_wifi_logger();
|
||||||
draw_ihm();
|
//wifi_log_e("test", "%s %d %f", "hello world wifi logger", 43, 45.341223242); // write log over wifi with log level -> ERROR }
|
||||||
display_unlock("draw_ihm");
|
|
||||||
}else{
|
lv_subject_init_int(&mqttStatus,-1);
|
||||||
ESP_LOGE(TAG,"Impossible d'obtenir le mutex pour draw_ihm");
|
lv_subject_add_observer_obj(&mqttStatus, mqttStatus_obs_cb, NULL, NULL);
|
||||||
|
|
||||||
|
while(!mainState.wifi_init){
|
||||||
|
vTaskDelay(pdTICKS_TO_MS(10));
|
||||||
}
|
}
|
||||||
|
start_webserver();
|
||||||
mqtt_app_start();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Configuration de la sonde Temp/Humid.
|
// Configuration de la sonde Temp/Humid.
|
||||||
am2302_config_t am2302_config = {
|
am2302_config_t am2302_config = {
|
||||||
@ -551,11 +985,8 @@ void app_main(void)
|
|||||||
.clk_src = RMT_CLK_SRC_DEFAULT,
|
.clk_src = RMT_CLK_SRC_DEFAULT,
|
||||||
};
|
};
|
||||||
ESP_ERROR_CHECK(am2302_new_sensor_rmt(&am2302_config, &rmt_config, &sensor));
|
ESP_ERROR_CHECK(am2302_new_sensor_rmt(&am2302_config, &rmt_config, &sensor));
|
||||||
|
|
||||||
|
|
||||||
xTaskCreate(&readTempHumid, "read_temp_task", 8192, NULL, 5, NULL);
|
xTaskCreate(&readTempHumid, "read_temp_task", 8192, NULL, 5, NULL);
|
||||||
|
|
||||||
//xTaskCreate(&simple_ota_example_task, "ota_example_task", 8192, NULL, 5, NULL);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
11
main/main.h
@ -1,2 +1,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "mqtt_client.h"
|
#define WIFI_CONNECTED_BIT BIT0
|
||||||
|
typedef enum domo_events{
|
||||||
|
EVT_WIFI_CONNECTED,
|
||||||
|
EVT_TIME_SETTED,
|
||||||
|
EVT_BTN_VOLET,
|
||||||
|
EVT_PUISSANCE_RECUE,
|
||||||
|
EVT_ETAT_MACHINE,
|
||||||
|
EVT_HAUTEUR_CUVE
|
||||||
|
} domo_events;
|
||||||
|
void send_event(domo_events evt, void* pDatas);
|
||||||
|
|||||||
@ -4,6 +4,7 @@
|
|||||||
#include "obtain_time.h"
|
#include "obtain_time.h"
|
||||||
#include "esp_lvgl_port.h"
|
#include "esp_lvgl_port.h"
|
||||||
#include "ihm.h"
|
#include "ihm.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
static const char *TAG = "sntp";
|
static const char *TAG = "sntp";
|
||||||
extern lv_subject_t dateHeureSubj;
|
extern lv_subject_t dateHeureSubj;
|
||||||
@ -19,23 +20,38 @@ void time_sync_notification_cb(struct timeval *tv)
|
|||||||
// Set timezone to Eastern Standard Time and print local time
|
// Set timezone to Eastern Standard Time and print local time
|
||||||
time_t now;
|
time_t now;
|
||||||
struct tm timeinfo;
|
struct tm timeinfo;
|
||||||
localtime_r(&now, &timeinfo);
|
|
||||||
strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
|
|
||||||
time(&now);
|
time(&now);
|
||||||
localtime_r(&now, &timeinfo);
|
localtime_r(&now, &timeinfo);
|
||||||
|
//strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);
|
||||||
|
sprintf(strftime_buf, "%s %d %s %02d:%02d", days[timeinfo.tm_wday], timeinfo.tm_mday, months[timeinfo.tm_mon], timeinfo.tm_hour, timeinfo.tm_min);
|
||||||
|
localtime_r(&now, &timeinfo);
|
||||||
|
send_event(EVT_TIME_SETTED,&strftime_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
void obtain_time()
|
void obtain_time()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void updateTime(void *pvParameter)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
|
||||||
|
// number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above)
|
||||||
|
EventBits_t bits = xEventGroupWaitBits(domotic_event_group,
|
||||||
|
WIFI_CONNECTED_BIT,
|
||||||
|
pdFALSE,
|
||||||
|
pdFALSE,
|
||||||
|
portMAX_DELAY);
|
||||||
|
if (bits & WIFI_CONNECTED_BIT)
|
||||||
|
{
|
||||||
ESP_LOGI(TAG, "Initializing and starting SNTP");
|
ESP_LOGI(TAG, "Initializing and starting SNTP");
|
||||||
esp_sntp_config_t config = ESP_NETIF_SNTP_DEFAULT_CONFIG("pool.ntp.org");
|
esp_sntp_config_t config = ESP_NETIF_SNTP_DEFAULT_CONFIG("pool.ntp.org");
|
||||||
config.sync_cb = time_sync_notification_cb; // Note: This is only needed if we want
|
config.sync_cb = time_sync_notification_cb; // Note: This is only needed if we want
|
||||||
esp_netif_sntp_init(&config);
|
esp_netif_sntp_init(&config);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void updateTime(void *pvParameter)
|
|
||||||
{
|
|
||||||
|
|
||||||
char strftime_buf[64];
|
char strftime_buf[64];
|
||||||
time_t now = 0;
|
time_t now = 0;
|
||||||
@ -46,13 +62,8 @@ void updateTime(void *pvParameter)
|
|||||||
tzset();
|
tzset();
|
||||||
struct tm timeinfo = {0};
|
struct tm timeinfo = {0};
|
||||||
localtime_r(&now, &timeinfo);
|
localtime_r(&now, &timeinfo);
|
||||||
sprintf(strftime_buf, "%s %d %s %02d:%02d", days[timeinfo.tm_wday], timeinfo.tm_mday, months[timeinfo.tm_mon], timeinfo.tm_hour, timeinfo.tm_min);
|
sprintf(strftime_buf, "%s %d %s %02d:%02d (%lli mn depuis reboot)", days[timeinfo.tm_wday], timeinfo.tm_mday, months[timeinfo.tm_mon], timeinfo.tm_hour, timeinfo.tm_min, (esp_timer_get_time()/1000/1000/60));
|
||||||
draw_time(strftime_buf);
|
send_event(EVT_TIME_SETTED,&strftime_buf);
|
||||||
/*
|
|
||||||
lv_obj_refr_size(lv_obj_get_child(lv_obj_get_child(lv_layer_top(),0),0));
|
|
||||||
lv_obj_refr_size(lv_obj_get_child(lv_layer_top(),0));
|
|
||||||
lvgl_port_unlock();
|
|
||||||
}*/
|
|
||||||
vTaskDelay(60000 / portTICK_PERIOD_MS);
|
vTaskDelay(60000 / portTICK_PERIOD_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
#pragma once
|
||||||
void obtain_time();
|
void obtain_time();
|
||||||
void updateTime(void *pvParameter);
|
void updateTime(void *pvParameter);
|
||||||
#pragma once
|
|
||||||
|
extern EventGroupHandle_t domotic_event_group;
|
||||||
|
|||||||
@ -7,3 +7,4 @@ factory,app,factory,,3M,,
|
|||||||
ota_0,app,ota_0,,3M,,
|
ota_0,app,ota_0,,3M,,
|
||||||
ota_1,app,ota_1,,3M,,
|
ota_1,app,ota_1,,3M,,
|
||||||
littlefs,data,littlefs,,1M,,
|
littlefs,data,littlefs,,1M,,
|
||||||
|
coredump, data, coredump,,64K,,
|
||||||
|
|||||||
|
268
sdkconfig
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Automatically generated file. DO NOT EDIT.
|
# Automatically generated file. DO NOT EDIT.
|
||||||
# Espressif IoT Development Framework (ESP-IDF) 5.4.0 Project Configuration
|
# Espressif IoT Development Framework (ESP-IDF) 5.5.0 Project Configuration
|
||||||
#
|
#
|
||||||
CONFIG_SOC_ADC_SUPPORTED=y
|
CONFIG_SOC_ADC_SUPPORTED=y
|
||||||
CONFIG_SOC_ANA_CMPR_SUPPORTED=y
|
CONFIG_SOC_ANA_CMPR_SUPPORTED=y
|
||||||
@ -478,7 +478,6 @@ CONFIG_SOC_CPU_IN_TOP_DOMAIN=y
|
|||||||
CONFIG_SOC_PM_PAU_REGDMA_UPDATE_CACHE_BEFORE_WAIT_COMPARE=y
|
CONFIG_SOC_PM_PAU_REGDMA_UPDATE_CACHE_BEFORE_WAIT_COMPARE=y
|
||||||
CONFIG_SOC_SLEEP_SYSTIMER_STALL_WORKAROUND=y
|
CONFIG_SOC_SLEEP_SYSTIMER_STALL_WORKAROUND=y
|
||||||
CONFIG_SOC_SLEEP_TGWDT_STOP_WORKAROUND=y
|
CONFIG_SOC_SLEEP_TGWDT_STOP_WORKAROUND=y
|
||||||
CONFIG_SOC_PM_RETENTION_MODULE_NUM=64
|
|
||||||
CONFIG_SOC_PSRAM_VDD_POWER_MPLL=y
|
CONFIG_SOC_PSRAM_VDD_POWER_MPLL=y
|
||||||
CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
|
CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y
|
||||||
CONFIG_SOC_CLK_APLL_SUPPORTED=y
|
CONFIG_SOC_CLK_APLL_SUPPORTED=y
|
||||||
@ -489,6 +488,7 @@ CONFIG_SOC_CLK_RC32K_SUPPORTED=y
|
|||||||
CONFIG_SOC_CLK_LP_FAST_SUPPORT_LP_PLL=y
|
CONFIG_SOC_CLK_LP_FAST_SUPPORT_LP_PLL=y
|
||||||
CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL=y
|
CONFIG_SOC_CLK_LP_FAST_SUPPORT_XTAL=y
|
||||||
CONFIG_SOC_PERIPH_CLK_CTRL_SHARED=y
|
CONFIG_SOC_PERIPH_CLK_CTRL_SHARED=y
|
||||||
|
CONFIG_SOC_CLK_ANA_I2C_MST_HAS_ROOT_GATE=y
|
||||||
CONFIG_SOC_TEMPERATURE_SENSOR_LP_PLL_SUPPORT=y
|
CONFIG_SOC_TEMPERATURE_SENSOR_LP_PLL_SUPPORT=y
|
||||||
CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y
|
CONFIG_SOC_TEMPERATURE_SENSOR_INTR_SUPPORT=y
|
||||||
CONFIG_SOC_TSENS_IS_INDEPENDENT_FROM_ADC=y
|
CONFIG_SOC_TSENS_IS_INDEPENDENT_FROM_ADC=y
|
||||||
@ -497,7 +497,7 @@ CONFIG_SOC_TEMPERATURE_SENSOR_SUPPORT_SLEEP_RETENTION=y
|
|||||||
CONFIG_SOC_MEM_TCM_SUPPORTED=y
|
CONFIG_SOC_MEM_TCM_SUPPORTED=y
|
||||||
CONFIG_SOC_MEM_NON_CONTIGUOUS_SRAM=y
|
CONFIG_SOC_MEM_NON_CONTIGUOUS_SRAM=y
|
||||||
CONFIG_SOC_ASYNCHRONOUS_BUS_ERROR_MODE=y
|
CONFIG_SOC_ASYNCHRONOUS_BUS_ERROR_MODE=y
|
||||||
CONFIG_SOC_EMAC_IEEE_1588_SUPPORT=y
|
CONFIG_SOC_EMAC_IEEE1588V2_SUPPORTED=y
|
||||||
CONFIG_SOC_EMAC_USE_MULTI_IO_MUX=y
|
CONFIG_SOC_EMAC_USE_MULTI_IO_MUX=y
|
||||||
CONFIG_SOC_EMAC_MII_USE_GPIO_MATRIX=y
|
CONFIG_SOC_EMAC_MII_USE_GPIO_MATRIX=y
|
||||||
CONFIG_SOC_JPEG_CODEC_SUPPORTED=y
|
CONFIG_SOC_JPEG_CODEC_SUPPORTED=y
|
||||||
@ -515,7 +515,7 @@ CONFIG_IDF_TOOLCHAIN_GCC=y
|
|||||||
CONFIG_IDF_TARGET_ARCH_RISCV=y
|
CONFIG_IDF_TARGET_ARCH_RISCV=y
|
||||||
CONFIG_IDF_TARGET_ARCH="riscv"
|
CONFIG_IDF_TARGET_ARCH="riscv"
|
||||||
CONFIG_IDF_TARGET="esp32p4"
|
CONFIG_IDF_TARGET="esp32p4"
|
||||||
CONFIG_IDF_INIT_VERSION="5.4.0"
|
CONFIG_IDF_INIT_VERSION="5.5.0"
|
||||||
CONFIG_IDF_TARGET_ESP32P4=y
|
CONFIG_IDF_TARGET_ESP32P4=y
|
||||||
CONFIG_IDF_FIRMWARE_CHIP_ID=0x0012
|
CONFIG_IDF_FIRMWARE_CHIP_ID=0x0012
|
||||||
|
|
||||||
@ -542,6 +542,17 @@ CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y
|
|||||||
CONFIG_BOOTLOADER_PROJECT_VER=1
|
CONFIG_BOOTLOADER_PROJECT_VER=1
|
||||||
# end of Bootloader manager
|
# end of Bootloader manager
|
||||||
|
|
||||||
|
#
|
||||||
|
# Application Rollback
|
||||||
|
#
|
||||||
|
# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
|
||||||
|
# end of Application Rollback
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bootloader Rollback
|
||||||
|
#
|
||||||
|
# end of Bootloader Rollback
|
||||||
|
|
||||||
CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x2000
|
CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x2000
|
||||||
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
|
CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
|
||||||
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
|
# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
|
||||||
@ -579,7 +590,6 @@ CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y
|
|||||||
CONFIG_BOOTLOADER_WDT_ENABLE=y
|
CONFIG_BOOTLOADER_WDT_ENABLE=y
|
||||||
# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
|
# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
|
||||||
CONFIG_BOOTLOADER_WDT_TIME_MS=9000
|
CONFIG_BOOTLOADER_WDT_TIME_MS=9000
|
||||||
# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
|
|
||||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
|
# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
|
||||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
|
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
|
||||||
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
|
# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
|
||||||
@ -687,24 +697,12 @@ CONFIG_PARTITION_TABLE_MD5=y
|
|||||||
# end of Partition Table
|
# end of Partition Table
|
||||||
|
|
||||||
#
|
#
|
||||||
# Example Configuration
|
# Domotic Configuration
|
||||||
#
|
#
|
||||||
CONFIG_ESP_WIFI_SSID="myssid"
|
CONFIG_ESP_WIFI_SSID="myssid"
|
||||||
CONFIG_ESP_WIFI_PASSWORD="mypassword"
|
CONFIG_ESP_WIFI_PASSWORD="mypassword"
|
||||||
# CONFIG_ESP_WPA3_SAE_PWE_HUNT_AND_PECK is not set
|
CONFIG_GPIO_INPUT_CAPTEUR_PIR=4
|
||||||
# CONFIG_ESP_WPA3_SAE_PWE_HASH_TO_ELEMENT is not set
|
# end of Domotic Configuration
|
||||||
CONFIG_ESP_WPA3_SAE_PWE_BOTH=y
|
|
||||||
CONFIG_ESP_WIFI_PW_ID=""
|
|
||||||
CONFIG_ESP_MAXIMUM_RETRY=5
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_OPEN is not set
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WEP is not set
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WPA_PSK is not set
|
|
||||||
CONFIG_ESP_WIFI_AUTH_WPA2_PSK=y
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WPA_WPA2_PSK is not set
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WPA3_PSK is not set
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WPA2_WPA3_PSK is not set
|
|
||||||
# CONFIG_ESP_WIFI_AUTH_WAPI_PSK is not set
|
|
||||||
# end of Example Configuration
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Example Connection Configuration
|
# Example Connection Configuration
|
||||||
@ -855,6 +853,12 @@ CONFIG_BT_ALARM_MAX_NUM=50
|
|||||||
#
|
#
|
||||||
# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
|
# CONFIG_TEMP_SENSOR_SUPPRESS_DEPRECATE_WARN is not set
|
||||||
# end of Legacy Temperature Sensor Driver Configurations
|
# end of Legacy Temperature Sensor Driver Configurations
|
||||||
|
|
||||||
|
#
|
||||||
|
# Legacy Touch Sensor Driver Configurations
|
||||||
|
#
|
||||||
|
# CONFIG_TOUCH_SUPPRESS_DEPRECATE_WARN is not set
|
||||||
|
# end of Legacy Touch Sensor Driver Configurations
|
||||||
# end of Driver Configurations
|
# end of Driver Configurations
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -1037,6 +1041,19 @@ CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
|
|||||||
CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000
|
CONFIG_ESP_HTTP_CLIENT_EVENT_POST_TIMEOUT=2000
|
||||||
# end of ESP HTTP client
|
# end of ESP HTTP client
|
||||||
|
|
||||||
|
#
|
||||||
|
# HTTP Server
|
||||||
|
#
|
||||||
|
CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
|
||||||
|
CONFIG_HTTPD_MAX_URI_LEN=512
|
||||||
|
CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
|
||||||
|
CONFIG_HTTPD_PURGE_BUF_LEN=32
|
||||||
|
# CONFIG_HTTPD_LOG_PURGE_DATA is not set
|
||||||
|
# CONFIG_HTTPD_WS_SUPPORT is not set
|
||||||
|
# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set
|
||||||
|
CONFIG_HTTPD_SERVER_EVENT_POST_TIMEOUT=2000
|
||||||
|
# end of HTTP Server
|
||||||
|
|
||||||
#
|
#
|
||||||
# ESP HTTPS OTA
|
# ESP HTTPS OTA
|
||||||
#
|
#
|
||||||
@ -1100,6 +1117,7 @@ CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y
|
|||||||
#
|
#
|
||||||
CONFIG_RTC_CLK_SRC_INT_RC=y
|
CONFIG_RTC_CLK_SRC_INT_RC=y
|
||||||
# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set
|
# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set
|
||||||
|
# CONFIG_RTC_CLK_SRC_INT_RC32K is not set
|
||||||
CONFIG_RTC_CLK_CAL_CYCLES=1024
|
CONFIG_RTC_CLK_CAL_CYCLES=1024
|
||||||
CONFIG_RTC_FAST_CLK_SRC_RC_FAST=y
|
CONFIG_RTC_FAST_CLK_SRC_RC_FAST=y
|
||||||
# CONFIG_RTC_FAST_CLK_SRC_XTAL is not set
|
# CONFIG_RTC_FAST_CLK_SRC_XTAL is not set
|
||||||
@ -1213,6 +1231,7 @@ CONFIG_ESP_NETIF_REPORT_DATA_TRAFFIC=y
|
|||||||
#
|
#
|
||||||
# CONFIG_PM_ENABLE is not set
|
# CONFIG_PM_ENABLE is not set
|
||||||
# CONFIG_PM_SLP_IRAM_OPT is not set
|
# CONFIG_PM_SLP_IRAM_OPT is not set
|
||||||
|
CONFIG_PM_SLP_DEFAULT_PARAMS_OPT=y
|
||||||
# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set
|
# CONFIG_PM_POWER_DOWN_PERIPHERAL_IN_LIGHT_SLEEP is not set
|
||||||
# end of Power Management
|
# end of Power Management
|
||||||
|
|
||||||
@ -1228,10 +1247,7 @@ CONFIG_SPIRAM_MODE_HEX=y
|
|||||||
CONFIG_SPIRAM_SPEED_200M=y
|
CONFIG_SPIRAM_SPEED_200M=y
|
||||||
# CONFIG_SPIRAM_SPEED_20M is not set
|
# CONFIG_SPIRAM_SPEED_20M is not set
|
||||||
CONFIG_SPIRAM_SPEED=200
|
CONFIG_SPIRAM_SPEED=200
|
||||||
CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y
|
# CONFIG_SPIRAM_XIP_FROM_PSRAM is not set
|
||||||
CONFIG_SPIRAM_RODATA=y
|
|
||||||
CONFIG_SPIRAM_XIP_FROM_PSRAM=y
|
|
||||||
CONFIG_SPIRAM_FLASH_LOAD_TO_PSRAM=y
|
|
||||||
# CONFIG_SPIRAM_ECC_ENABLE is not set
|
# CONFIG_SPIRAM_ECC_ENABLE is not set
|
||||||
CONFIG_SPIRAM_BOOT_INIT=y
|
CONFIG_SPIRAM_BOOT_INIT=y
|
||||||
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
|
||||||
@ -1240,7 +1256,7 @@ CONFIG_SPIRAM_BOOT_INIT=y
|
|||||||
CONFIG_SPIRAM_USE_MALLOC=y
|
CONFIG_SPIRAM_USE_MALLOC=y
|
||||||
CONFIG_SPIRAM_MEMTEST=y
|
CONFIG_SPIRAM_MEMTEST=y
|
||||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
|
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=16384
|
||||||
CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP=y
|
# CONFIG_SPIRAM_TRY_ALLOCATE_WIFI_LWIP is not set
|
||||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
||||||
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
|
||||||
# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
|
# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
|
||||||
@ -1369,9 +1385,8 @@ CONFIG_ESP_TIMER_IMPL_SYSTIMER=y
|
|||||||
# CONFIG_ESP_HOST_WIFI_ENABLED is not set
|
# CONFIG_ESP_HOST_WIFI_ENABLED is not set
|
||||||
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
|
CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10
|
||||||
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||||
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0
|
CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1
|
||||||
CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=16
|
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||||
CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=32
|
|
||||||
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
|
CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0
|
||||||
CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
|
CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5
|
||||||
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y
|
||||||
@ -1382,11 +1397,13 @@ CONFIG_ESP_WIFI_NVS_ENABLED=y
|
|||||||
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
|
CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752
|
||||||
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
|
CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32
|
||||||
CONFIG_ESP_WIFI_IRAM_OPT=y
|
CONFIG_ESP_WIFI_IRAM_OPT=y
|
||||||
|
CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y
|
||||||
CONFIG_ESP_WIFI_RX_IRAM_OPT=y
|
CONFIG_ESP_WIFI_RX_IRAM_OPT=y
|
||||||
CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
|
CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y
|
||||||
CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
|
CONFIG_ESP_WIFI_ENABLE_SAE_PK=y
|
||||||
CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
|
CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y
|
||||||
CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
|
CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y
|
||||||
|
CONFIG_ESP_WIFI_SLP_IRAM_OPT=y
|
||||||
CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50
|
CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50
|
||||||
CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10
|
CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10
|
||||||
CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
|
CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
|
||||||
@ -1400,6 +1417,27 @@ CONFIG_ESP_WIFI_TX_HETB_QUEUE_NUM=3
|
|||||||
CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
|
CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y
|
||||||
# end of Wi-Fi
|
# end of Wi-Fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Core dump
|
||||||
|
#
|
||||||
|
# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
|
||||||
|
CONFIG_ESP_COREDUMP_ENABLE_TO_UART=y
|
||||||
|
# CONFIG_ESP_COREDUMP_ENABLE_TO_NONE is not set
|
||||||
|
# CONFIG_ESP_COREDUMP_DATA_FORMAT_BIN is not set
|
||||||
|
CONFIG_ESP_COREDUMP_DATA_FORMAT_ELF=y
|
||||||
|
CONFIG_ESP_COREDUMP_CHECKSUM_CRC32=y
|
||||||
|
# CONFIG_ESP_COREDUMP_CHECKSUM_SHA256 is not set
|
||||||
|
# CONFIG_ESP_COREDUMP_CAPTURE_DRAM is not set
|
||||||
|
CONFIG_ESP_COREDUMP_ENABLE=y
|
||||||
|
CONFIG_ESP_COREDUMP_LOGS=y
|
||||||
|
CONFIG_ESP_COREDUMP_MAX_TASKS_NUM=64
|
||||||
|
CONFIG_ESP_COREDUMP_UART_DELAY=0
|
||||||
|
CONFIG_ESP_COREDUMP_STACK_SIZE=0
|
||||||
|
CONFIG_ESP_COREDUMP_DECODE_INFO=y
|
||||||
|
# CONFIG_ESP_COREDUMP_DECODE_DISABLE is not set
|
||||||
|
CONFIG_ESP_COREDUMP_DECODE="info"
|
||||||
|
# end of Core dump
|
||||||
|
|
||||||
#
|
#
|
||||||
# FAT Filesystem support
|
# FAT Filesystem support
|
||||||
#
|
#
|
||||||
@ -1491,12 +1529,13 @@ CONFIG_FREERTOS_RUN_TIME_COUNTER_TYPE_U32=y
|
|||||||
#
|
#
|
||||||
# Port
|
# Port
|
||||||
#
|
#
|
||||||
|
CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
|
||||||
# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
|
# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
|
||||||
CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y
|
CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y
|
||||||
# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set
|
# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set
|
||||||
# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
|
# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
|
||||||
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
|
||||||
CONFIG_FREERTOS_ISR_STACKSIZE=1536
|
CONFIG_FREERTOS_ISR_STACKSIZE=2096
|
||||||
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
|
CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
|
||||||
CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y
|
CONFIG_FREERTOS_TICK_SUPPORT_SYSTIMER=y
|
||||||
CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y
|
CONFIG_FREERTOS_CORETIMER_SYSTIMER_LVL1=y
|
||||||
@ -1566,10 +1605,10 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
|||||||
# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
|
# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
|
||||||
# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
|
||||||
CONFIG_LOG_DEFAULT_LEVEL=3
|
CONFIG_LOG_DEFAULT_LEVEL=3
|
||||||
CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
|
# CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT is not set
|
||||||
# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
|
# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
|
||||||
# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
|
CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE=y
|
||||||
CONFIG_LOG_MAXIMUM_LEVEL=3
|
CONFIG_LOG_MAXIMUM_LEVEL=5
|
||||||
|
|
||||||
#
|
#
|
||||||
# Level Settings
|
# Level Settings
|
||||||
@ -1683,7 +1722,6 @@ CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4
|
|||||||
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
|
CONFIG_LWIP_TCP_OVERSIZE_MSS=y
|
||||||
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
|
# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
|
||||||
# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
|
# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
|
||||||
# CONFIG_LWIP_WND_SCALE is not set
|
|
||||||
CONFIG_LWIP_TCP_RTO_TIME=1500
|
CONFIG_LWIP_TCP_RTO_TIME=1500
|
||||||
# end of TCP
|
# end of TCP
|
||||||
|
|
||||||
@ -2292,11 +2330,21 @@ CONFIG_ESP_HOSTED_SDIO_RESET_ACTIVE_HIGH=y
|
|||||||
# CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_NONE is not set
|
# CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_NONE is not set
|
||||||
# CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_MAX_SIZE is not set
|
# CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_MAX_SIZE is not set
|
||||||
CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_STREAMING_MODE=y
|
CONFIG_ESP_HOSTED_SDIO_OPTIMIZATION_RX_STREAMING_MODE=y
|
||||||
|
# CONFIG_ESP_HOSTED_SDIO_SLOT_0 is not set
|
||||||
|
CONFIG_ESP_HOSTED_SDIO_SLOT_1=y
|
||||||
|
CONFIG_ESP_HOSTED_SDIO_SLOT=1
|
||||||
|
# CONFIG_ESP_HOSTED_SD_PWR_CTRL_LDO_INTERNAL_IO is not set
|
||||||
CONFIG_ESP_HOSTED_SDIO_GPIO_RESET_SLAVE=54
|
CONFIG_ESP_HOSTED_SDIO_GPIO_RESET_SLAVE=54
|
||||||
CONFIG_ESP_HOSTED_SDIO_4_BIT_BUS=y
|
CONFIG_ESP_HOSTED_SDIO_4_BIT_BUS=y
|
||||||
# CONFIG_ESP_HOSTED_SDIO_1_BIT_BUS is not set
|
# CONFIG_ESP_HOSTED_SDIO_1_BIT_BUS is not set
|
||||||
CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4
|
CONFIG_ESP_HOSTED_SDIO_BUS_WIDTH=4
|
||||||
CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ=40000
|
CONFIG_ESP_HOSTED_SDIO_CLOCK_FREQ_KHZ=40000
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CMD_SLOT_1=19
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_CLK_SLOT_1=18
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D0_SLOT_1=14
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D1_4BIT_BUS_SLOT_1=15
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D2_4BIT_BUS_SLOT_1=16
|
||||||
|
CONFIG_ESP_HOSTED_PRIV_SDIO_PIN_D3_4BIT_BUS_SLOT_1=17
|
||||||
CONFIG_ESP_HOSTED_SDIO_PIN_CMD=19
|
CONFIG_ESP_HOSTED_SDIO_PIN_CMD=19
|
||||||
CONFIG_ESP_HOSTED_SDIO_PIN_CLK=18
|
CONFIG_ESP_HOSTED_SDIO_PIN_CLK=18
|
||||||
CONFIG_ESP_HOSTED_SDIO_PIN_D0=14
|
CONFIG_ESP_HOSTED_SDIO_PIN_D0=14
|
||||||
@ -2360,10 +2408,10 @@ CONFIG_ESP_LCD_TOUCH_MAX_BUTTONS=1
|
|||||||
# end of ESP LCD TOUCH
|
# end of ESP LCD TOUCH
|
||||||
|
|
||||||
#
|
#
|
||||||
# ESP WebSocket client
|
# ESP LVGL PORT
|
||||||
#
|
#
|
||||||
# CONFIG_ESP_WS_CLIENT_ENABLE_DYNAMIC_BUFFER is not set
|
CONFIG_LVGL_PORT_ENABLE_PPA=y
|
||||||
# end of ESP WebSocket client
|
# end of ESP LVGL PORT
|
||||||
|
|
||||||
#
|
#
|
||||||
# Wi-Fi Remote
|
# Wi-Fi Remote
|
||||||
@ -2397,10 +2445,10 @@ CONFIG_ESP_WIFI_REMOTE_LIBRARY_HOSTED=y
|
|||||||
#
|
#
|
||||||
CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10
|
CONFIG_WIFI_RMT_STATIC_RX_BUFFER_NUM=10
|
||||||
CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=32
|
CONFIG_WIFI_RMT_DYNAMIC_RX_BUFFER_NUM=32
|
||||||
CONFIG_WIFI_RMT_STATIC_TX_BUFFER=y
|
# CONFIG_WIFI_RMT_STATIC_TX_BUFFER is not set
|
||||||
CONFIG_WIFI_RMT_TX_BUFFER_TYPE=0
|
CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER=y
|
||||||
CONFIG_WIFI_RMT_STATIC_TX_BUFFER_NUM=16
|
CONFIG_WIFI_RMT_TX_BUFFER_TYPE=1
|
||||||
CONFIG_WIFI_RMT_CACHE_TX_BUFFER_NUM=32
|
CONFIG_WIFI_RMT_DYNAMIC_TX_BUFFER_NUM=32
|
||||||
CONFIG_WIFI_RMT_STATIC_RX_MGMT_BUFFER=y
|
CONFIG_WIFI_RMT_STATIC_RX_MGMT_BUFFER=y
|
||||||
# CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUFFER is not set
|
# CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUFFER is not set
|
||||||
CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUF=0
|
CONFIG_WIFI_RMT_DYNAMIC_RX_MGMT_BUF=0
|
||||||
@ -2410,19 +2458,20 @@ CONFIG_WIFI_RMT_AMPDU_TX_ENABLED=y
|
|||||||
CONFIG_WIFI_RMT_TX_BA_WIN=6
|
CONFIG_WIFI_RMT_TX_BA_WIN=6
|
||||||
CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y
|
CONFIG_WIFI_RMT_AMPDU_RX_ENABLED=y
|
||||||
CONFIG_WIFI_RMT_RX_BA_WIN=6
|
CONFIG_WIFI_RMT_RX_BA_WIN=6
|
||||||
# CONFIG_WIFI_RMT_AMSDU_TX_ENABLED is not set
|
|
||||||
CONFIG_WIFI_RMT_NVS_ENABLED=y
|
CONFIG_WIFI_RMT_NVS_ENABLED=y
|
||||||
CONFIG_WIFI_RMT_SOFTAP_BEACON_MAX_LEN=752
|
CONFIG_WIFI_RMT_SOFTAP_BEACON_MAX_LEN=752
|
||||||
CONFIG_WIFI_RMT_MGMT_SBUF_NUM=32
|
CONFIG_WIFI_RMT_MGMT_SBUF_NUM=32
|
||||||
CONFIG_WIFI_RMT_IRAM_OPT=y
|
CONFIG_WIFI_RMT_IRAM_OPT=y
|
||||||
# CONFIG_WIFI_RMT_EXTRA_IRAM_OPT is not set
|
CONFIG_WIFI_RMT_EXTRA_IRAM_OPT=y
|
||||||
CONFIG_WIFI_RMT_RX_IRAM_OPT=y
|
CONFIG_WIFI_RMT_RX_IRAM_OPT=y
|
||||||
CONFIG_WIFI_RMT_ENABLE_WPA3_SAE=y
|
CONFIG_WIFI_RMT_ENABLE_WPA3_SAE=y
|
||||||
CONFIG_WIFI_RMT_ENABLE_SAE_PK=y
|
CONFIG_WIFI_RMT_ENABLE_SAE_PK=y
|
||||||
|
CONFIG_WIFI_RMT_ENABLE_SAE_H2E=y
|
||||||
CONFIG_WIFI_RMT_SOFTAP_SAE_SUPPORT=y
|
CONFIG_WIFI_RMT_SOFTAP_SAE_SUPPORT=y
|
||||||
CONFIG_WIFI_RMT_ENABLE_WPA3_OWE_STA=y
|
CONFIG_WIFI_RMT_ENABLE_WPA3_OWE_STA=y
|
||||||
# CONFIG_WIFI_RMT_SLP_IRAM_OPT is not set
|
CONFIG_WIFI_RMT_SLP_IRAM_OPT=y
|
||||||
CONFIG_WIFI_RMT_SLP_DEFAULT_MIN_ACTIVE_TIME=50
|
CONFIG_WIFI_RMT_SLP_DEFAULT_MIN_ACTIVE_TIME=50
|
||||||
|
CONFIG_WIFI_RMT_BSS_MAX_IDLE_SUPPORT=y
|
||||||
CONFIG_WIFI_RMT_SLP_DEFAULT_MAX_ACTIVE_TIME=10
|
CONFIG_WIFI_RMT_SLP_DEFAULT_MAX_ACTIVE_TIME=10
|
||||||
CONFIG_WIFI_RMT_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
|
CONFIG_WIFI_RMT_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15
|
||||||
# CONFIG_WIFI_RMT_FTM_ENABLE is not set
|
# CONFIG_WIFI_RMT_FTM_ENABLE is not set
|
||||||
@ -2458,6 +2507,8 @@ CONFIG_WIFI_RMT_TX_HETB_QUEUE_NUM=3
|
|||||||
# CONFIG_WIFI_RMT_TESTING_OPTIONS is not set
|
# CONFIG_WIFI_RMT_TESTING_OPTIONS is not set
|
||||||
CONFIG_WIFI_RMT_ENTERPRISE_SUPPORT=y
|
CONFIG_WIFI_RMT_ENTERPRISE_SUPPORT=y
|
||||||
# CONFIG_WIFI_RMT_ENT_FREE_DYNAMIC_BUFFER is not set
|
# CONFIG_WIFI_RMT_ENT_FREE_DYNAMIC_BUFFER is not set
|
||||||
|
CONFIG_ESP_WIFI_ENABLE_SAE_H2E=y
|
||||||
|
CONFIG_ESP_WIFI_BSS_MAX_IDLE_SUPPORT=y
|
||||||
# end of Wi-Fi configuration
|
# end of Wi-Fi configuration
|
||||||
# end of Wi-Fi Remote
|
# end of Wi-Fi Remote
|
||||||
|
|
||||||
@ -2515,8 +2566,8 @@ CONFIG_LV_USE_CLIB_MALLOC=y
|
|||||||
# CONFIG_LV_USE_MICROPYTHON_MALLOC is not set
|
# CONFIG_LV_USE_MICROPYTHON_MALLOC is not set
|
||||||
# CONFIG_LV_USE_RTTHREAD_MALLOC is not set
|
# CONFIG_LV_USE_RTTHREAD_MALLOC is not set
|
||||||
# CONFIG_LV_USE_CUSTOM_MALLOC is not set
|
# CONFIG_LV_USE_CUSTOM_MALLOC is not set
|
||||||
CONFIG_LV_USE_BUILTIN_STRING=y
|
# CONFIG_LV_USE_BUILTIN_STRING is not set
|
||||||
# CONFIG_LV_USE_CLIB_STRING is not set
|
CONFIG_LV_USE_CLIB_STRING=y
|
||||||
# CONFIG_LV_USE_CUSTOM_STRING is not set
|
# CONFIG_LV_USE_CUSTOM_STRING is not set
|
||||||
# CONFIG_LV_USE_BUILTIN_SPRINTF is not set
|
# CONFIG_LV_USE_BUILTIN_SPRINTF is not set
|
||||||
CONFIG_LV_USE_CLIB_SPRINTF=y
|
CONFIG_LV_USE_CLIB_SPRINTF=y
|
||||||
@ -2526,22 +2577,22 @@ CONFIG_LV_USE_CLIB_SPRINTF=y
|
|||||||
#
|
#
|
||||||
# HAL Settings
|
# HAL Settings
|
||||||
#
|
#
|
||||||
CONFIG_LV_DEF_REFR_PERIOD=33
|
CONFIG_LV_DEF_REFR_PERIOD=10
|
||||||
CONFIG_LV_DPI_DEF=130
|
CONFIG_LV_DPI_DEF=130
|
||||||
# end of HAL Settings
|
# end of HAL Settings
|
||||||
|
|
||||||
#
|
#
|
||||||
# Operating System (OS)
|
# Operating System (OS)
|
||||||
#
|
#
|
||||||
CONFIG_LV_OS_NONE=y
|
# CONFIG_LV_OS_NONE is not set
|
||||||
# CONFIG_LV_OS_PTHREAD is not set
|
# CONFIG_LV_OS_PTHREAD is not set
|
||||||
# CONFIG_LV_OS_FREERTOS is not set
|
CONFIG_LV_OS_FREERTOS=y
|
||||||
# CONFIG_LV_OS_CMSIS_RTOS2 is not set
|
# CONFIG_LV_OS_CMSIS_RTOS2 is not set
|
||||||
# CONFIG_LV_OS_RTTHREAD is not set
|
# CONFIG_LV_OS_RTTHREAD is not set
|
||||||
# CONFIG_LV_OS_WINDOWS is not set
|
# CONFIG_LV_OS_WINDOWS is not set
|
||||||
# CONFIG_LV_OS_MQX is not set
|
# CONFIG_LV_OS_MQX is not set
|
||||||
# CONFIG_LV_OS_CUSTOM is not set
|
# CONFIG_LV_OS_CUSTOM is not set
|
||||||
CONFIG_LV_USE_OS=0
|
CONFIG_LV_USE_OS=2
|
||||||
# end of Operating System (OS)
|
# end of Operating System (OS)
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -2550,6 +2601,7 @@ CONFIG_LV_USE_OS=0
|
|||||||
CONFIG_LV_DRAW_BUF_STRIDE_ALIGN=1
|
CONFIG_LV_DRAW_BUF_STRIDE_ALIGN=1
|
||||||
CONFIG_LV_DRAW_BUF_ALIGN=4
|
CONFIG_LV_DRAW_BUF_ALIGN=4
|
||||||
CONFIG_LV_DRAW_LAYER_SIMPLE_BUF_SIZE=24576
|
CONFIG_LV_DRAW_LAYER_SIMPLE_BUF_SIZE=24576
|
||||||
|
CONFIG_LV_DRAW_THREAD_STACK_SIZE=8192
|
||||||
CONFIG_LV_USE_DRAW_SW=y
|
CONFIG_LV_USE_DRAW_SW=y
|
||||||
CONFIG_LV_DRAW_SW_SUPPORT_RGB565=y
|
CONFIG_LV_DRAW_SW_SUPPORT_RGB565=y
|
||||||
CONFIG_LV_DRAW_SW_SUPPORT_RGB565A8=y
|
CONFIG_LV_DRAW_SW_SUPPORT_RGB565A8=y
|
||||||
@ -2587,26 +2639,7 @@ CONFIG_LV_USE_DRAW_SW_ASM=0
|
|||||||
#
|
#
|
||||||
# Logging
|
# Logging
|
||||||
#
|
#
|
||||||
CONFIG_LV_USE_LOG=y
|
# CONFIG_LV_USE_LOG is not set
|
||||||
# CONFIG_LV_LOG_LEVEL_TRACE is not set
|
|
||||||
# CONFIG_LV_LOG_LEVEL_INFO is not set
|
|
||||||
# CONFIG_LV_LOG_LEVEL_WARN is not set
|
|
||||||
CONFIG_LV_LOG_LEVEL_ERROR=y
|
|
||||||
# CONFIG_LV_LOG_LEVEL_USER is not set
|
|
||||||
# CONFIG_LV_LOG_LEVEL_NONE is not set
|
|
||||||
CONFIG_LV_LOG_LEVEL=3
|
|
||||||
CONFIG_LV_LOG_PRINTF=y
|
|
||||||
# CONFIG_LV_LOG_USE_TIMESTAMP is not set
|
|
||||||
# CONFIG_LV_LOG_USE_FILE_LINE is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_MEM is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_TIMER is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_INDEV is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_DISP_REFR is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_EVENT is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_OBJ_CREATE is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_LAYOUT is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_ANIM is not set
|
|
||||||
# CONFIG_LV_LOG_TRACE_CACHE is not set
|
|
||||||
# end of Logging
|
# end of Logging
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -2614,7 +2647,7 @@ CONFIG_LV_LOG_PRINTF=y
|
|||||||
#
|
#
|
||||||
CONFIG_LV_USE_ASSERT_NULL=y
|
CONFIG_LV_USE_ASSERT_NULL=y
|
||||||
CONFIG_LV_USE_ASSERT_MALLOC=y
|
CONFIG_LV_USE_ASSERT_MALLOC=y
|
||||||
CONFIG_LV_USE_ASSERT_STYLE=y
|
# CONFIG_LV_USE_ASSERT_STYLE is not set
|
||||||
# CONFIG_LV_USE_ASSERT_MEM_INTEGRITY is not set
|
# CONFIG_LV_USE_ASSERT_MEM_INTEGRITY is not set
|
||||||
# CONFIG_LV_USE_ASSERT_OBJ is not set
|
# CONFIG_LV_USE_ASSERT_OBJ is not set
|
||||||
CONFIG_LV_ASSERT_HANDLER_INCLUDE="assert.h"
|
CONFIG_LV_ASSERT_HANDLER_INCLUDE="assert.h"
|
||||||
@ -2634,7 +2667,7 @@ CONFIG_LV_ASSERT_HANDLER_INCLUDE="assert.h"
|
|||||||
# CONFIG_LV_ENABLE_GLOBAL_CUSTOM is not set
|
# CONFIG_LV_ENABLE_GLOBAL_CUSTOM is not set
|
||||||
CONFIG_LV_CACHE_DEF_SIZE=0
|
CONFIG_LV_CACHE_DEF_SIZE=0
|
||||||
CONFIG_LV_IMAGE_HEADER_CACHE_DEF_CNT=0
|
CONFIG_LV_IMAGE_HEADER_CACHE_DEF_CNT=0
|
||||||
CONFIG_LV_GRADIENT_MAX_STOPS=50
|
CONFIG_LV_GRADIENT_MAX_STOPS=2
|
||||||
CONFIG_LV_COLOR_MIX_ROUND_OFS=128
|
CONFIG_LV_COLOR_MIX_ROUND_OFS=128
|
||||||
# CONFIG_LV_OBJ_STYLE_CACHE is not set
|
# CONFIG_LV_OBJ_STYLE_CACHE is not set
|
||||||
# CONFIG_LV_USE_OBJ_ID is not set
|
# CONFIG_LV_USE_OBJ_ID is not set
|
||||||
@ -2662,12 +2695,12 @@ CONFIG_LV_USE_PRIVATE_API=y
|
|||||||
#
|
#
|
||||||
# CONFIG_LV_FONT_MONTSERRAT_8 is not set
|
# CONFIG_LV_FONT_MONTSERRAT_8 is not set
|
||||||
# CONFIG_LV_FONT_MONTSERRAT_10 is not set
|
# CONFIG_LV_FONT_MONTSERRAT_10 is not set
|
||||||
CONFIG_LV_FONT_MONTSERRAT_12=y
|
# CONFIG_LV_FONT_MONTSERRAT_12 is not set
|
||||||
CONFIG_LV_FONT_MONTSERRAT_14=y
|
CONFIG_LV_FONT_MONTSERRAT_14=y
|
||||||
CONFIG_LV_FONT_MONTSERRAT_16=y
|
# CONFIG_LV_FONT_MONTSERRAT_16 is not set
|
||||||
CONFIG_LV_FONT_MONTSERRAT_18=y
|
# CONFIG_LV_FONT_MONTSERRAT_18 is not set
|
||||||
CONFIG_LV_FONT_MONTSERRAT_20=y
|
# CONFIG_LV_FONT_MONTSERRAT_20 is not set
|
||||||
CONFIG_LV_FONT_MONTSERRAT_22=y
|
# CONFIG_LV_FONT_MONTSERRAT_22 is not set
|
||||||
# CONFIG_LV_FONT_MONTSERRAT_24 is not set
|
# CONFIG_LV_FONT_MONTSERRAT_24 is not set
|
||||||
# CONFIG_LV_FONT_MONTSERRAT_26 is not set
|
# CONFIG_LV_FONT_MONTSERRAT_26 is not set
|
||||||
# CONFIG_LV_FONT_MONTSERRAT_28 is not set
|
# CONFIG_LV_FONT_MONTSERRAT_28 is not set
|
||||||
@ -2736,41 +2769,46 @@ CONFIG_LV_TXT_LINE_BREAK_LONG_LEN=0
|
|||||||
# Widget Usage
|
# Widget Usage
|
||||||
#
|
#
|
||||||
CONFIG_LV_WIDGETS_HAS_DEFAULT_VALUE=y
|
CONFIG_LV_WIDGETS_HAS_DEFAULT_VALUE=y
|
||||||
# CONFIG_LV_USE_ANIMIMG is not set
|
CONFIG_LV_USE_ANIMIMG=y
|
||||||
# CONFIG_LV_USE_ARC is not set
|
CONFIG_LV_USE_ARC=y
|
||||||
CONFIG_LV_USE_BAR=y
|
CONFIG_LV_USE_BAR=y
|
||||||
CONFIG_LV_USE_BUTTON=y
|
CONFIG_LV_USE_BUTTON=y
|
||||||
CONFIG_LV_USE_BUTTONMATRIX=y
|
CONFIG_LV_USE_BUTTONMATRIX=y
|
||||||
# CONFIG_LV_USE_CALENDAR is not set
|
CONFIG_LV_USE_CALENDAR=y
|
||||||
|
# CONFIG_LV_CALENDAR_WEEK_STARTS_MONDAY is not set
|
||||||
|
CONFIG_LV_USE_CALENDAR_HEADER_ARROW=y
|
||||||
|
CONFIG_LV_USE_CALENDAR_HEADER_DROPDOWN=y
|
||||||
|
# CONFIG_LV_USE_CALENDAR_CHINESE is not set
|
||||||
CONFIG_LV_USE_CANVAS=y
|
CONFIG_LV_USE_CANVAS=y
|
||||||
CONFIG_LV_USE_CHART=y
|
CONFIG_LV_USE_CHART=y
|
||||||
CONFIG_LV_USE_CHECKBOX=y
|
CONFIG_LV_USE_CHECKBOX=y
|
||||||
# CONFIG_LV_USE_DROPDOWN is not set
|
CONFIG_LV_USE_DROPDOWN=y
|
||||||
CONFIG_LV_USE_IMAGE=y
|
CONFIG_LV_USE_IMAGE=y
|
||||||
CONFIG_LV_USE_IMAGEBUTTON=y
|
CONFIG_LV_USE_IMAGEBUTTON=y
|
||||||
# CONFIG_LV_USE_KEYBOARD is not set
|
CONFIG_LV_USE_KEYBOARD=y
|
||||||
CONFIG_LV_USE_LABEL=y
|
CONFIG_LV_USE_LABEL=y
|
||||||
CONFIG_LV_LABEL_TEXT_SELECTION=y
|
CONFIG_LV_LABEL_TEXT_SELECTION=y
|
||||||
CONFIG_LV_LABEL_LONG_TXT_HINT=y
|
CONFIG_LV_LABEL_LONG_TXT_HINT=y
|
||||||
CONFIG_LV_LABEL_WAIT_CHAR_COUNT=3
|
CONFIG_LV_LABEL_WAIT_CHAR_COUNT=3
|
||||||
# CONFIG_LV_USE_LED is not set
|
CONFIG_LV_USE_LED=y
|
||||||
# CONFIG_LV_USE_LINE is not set
|
CONFIG_LV_USE_LINE=y
|
||||||
# CONFIG_LV_USE_LIST is not set
|
CONFIG_LV_USE_LIST=y
|
||||||
# CONFIG_LV_USE_MENU is not set
|
CONFIG_LV_USE_MENU=y
|
||||||
# CONFIG_LV_USE_MSGBOX is not set
|
CONFIG_LV_USE_MSGBOX=y
|
||||||
CONFIG_LV_USE_ROLLER=y
|
CONFIG_LV_USE_ROLLER=y
|
||||||
# CONFIG_LV_USE_SCALE is not set
|
CONFIG_LV_USE_SCALE=y
|
||||||
CONFIG_LV_USE_SLIDER=y
|
CONFIG_LV_USE_SLIDER=y
|
||||||
# CONFIG_LV_USE_SPAN is not set
|
CONFIG_LV_USE_SPAN=y
|
||||||
# CONFIG_LV_USE_SPINBOX is not set
|
CONFIG_LV_SPAN_SNIPPET_STACK_SIZE=64
|
||||||
# CONFIG_LV_USE_SPINNER is not set
|
CONFIG_LV_USE_SPINBOX=y
|
||||||
|
CONFIG_LV_USE_SPINNER=y
|
||||||
CONFIG_LV_USE_SWITCH=y
|
CONFIG_LV_USE_SWITCH=y
|
||||||
CONFIG_LV_USE_TEXTAREA=y
|
CONFIG_LV_USE_TEXTAREA=y
|
||||||
CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME=1500
|
CONFIG_LV_TEXTAREA_DEF_PWD_SHOW_TIME=1500
|
||||||
# CONFIG_LV_USE_TABLE is not set
|
CONFIG_LV_USE_TABLE=y
|
||||||
CONFIG_LV_USE_TABVIEW=y
|
CONFIG_LV_USE_TABVIEW=y
|
||||||
# CONFIG_LV_USE_TILEVIEW is not set
|
CONFIG_LV_USE_TILEVIEW=y
|
||||||
# CONFIG_LV_USE_WIN is not set
|
CONFIG_LV_USE_WIN=y
|
||||||
# end of Widget Usage
|
# end of Widget Usage
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -2828,11 +2866,22 @@ CONFIG_LV_USE_LODEPNG=y
|
|||||||
# Others
|
# Others
|
||||||
#
|
#
|
||||||
# CONFIG_LV_USE_SNAPSHOT is not set
|
# CONFIG_LV_USE_SNAPSHOT is not set
|
||||||
# CONFIG_LV_USE_SYSMON is not set
|
CONFIG_LV_USE_SYSMON=y
|
||||||
|
CONFIG_LV_USE_PERF_MONITOR=y
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_LEFT is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_MID is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_TOP_RIGHT is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_LEFT is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_MID is not set
|
||||||
|
CONFIG_LV_PERF_MONITOR_ALIGN_BOTTOM_RIGHT=y
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_LEFT_MID is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_RIGHT_MID is not set
|
||||||
|
# CONFIG_LV_PERF_MONITOR_ALIGN_CENTER is not set
|
||||||
|
# CONFIG_LV_USE_PERF_MONITOR_LOG_MODE is not set
|
||||||
# CONFIG_LV_USE_PROFILER is not set
|
# CONFIG_LV_USE_PROFILER is not set
|
||||||
CONFIG_LV_USE_MONKEY=y
|
# CONFIG_LV_USE_MONKEY is not set
|
||||||
# CONFIG_LV_USE_GRIDNAV is not set
|
# CONFIG_LV_USE_GRIDNAV is not set
|
||||||
CONFIG_LV_USE_FRAGMENT=y
|
# CONFIG_LV_USE_FRAGMENT is not set
|
||||||
# CONFIG_LV_USE_IMGFONT is not set
|
# CONFIG_LV_USE_IMGFONT is not set
|
||||||
CONFIG_LV_USE_OBSERVER=y
|
CONFIG_LV_USE_OBSERVER=y
|
||||||
# CONFIG_LV_USE_IME_PINYIN is not set
|
# CONFIG_LV_USE_IME_PINYIN is not set
|
||||||
@ -2875,7 +2924,6 @@ CONFIG_LV_USE_OBSERVER=y
|
|||||||
# CONFIG_LV_USE_DEMO_RENDER is not set
|
# CONFIG_LV_USE_DEMO_RENDER is not set
|
||||||
# CONFIG_LV_USE_DEMO_SCROLL is not set
|
# CONFIG_LV_USE_DEMO_SCROLL is not set
|
||||||
# CONFIG_LV_USE_DEMO_STRESS is not set
|
# CONFIG_LV_USE_DEMO_STRESS is not set
|
||||||
# CONFIG_LV_USE_DEMO_TRANSFORM is not set
|
|
||||||
# CONFIG_LV_USE_DEMO_MUSIC is not set
|
# CONFIG_LV_USE_DEMO_MUSIC is not set
|
||||||
# CONFIG_LV_USE_DEMO_FLEX_LAYOUT is not set
|
# CONFIG_LV_USE_DEMO_FLEX_LAYOUT is not set
|
||||||
# CONFIG_LV_USE_DEMO_MULTILANG is not set
|
# CONFIG_LV_USE_DEMO_MULTILANG is not set
|
||||||
@ -2888,6 +2936,7 @@ CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
|||||||
# Deprecated options for backward compatibility
|
# Deprecated options for backward compatibility
|
||||||
# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
|
# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
|
||||||
# CONFIG_NO_BLOBS is not set
|
# CONFIG_NO_BLOBS is not set
|
||||||
|
# CONFIG_APP_ROLLBACK_ENABLE is not set
|
||||||
# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
|
# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
|
||||||
# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
|
# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
|
||||||
# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
|
# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
|
||||||
@ -2895,7 +2944,6 @@ CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
|
|||||||
# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
|
# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
|
||||||
# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
|
# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
|
||||||
CONFIG_LOG_BOOTLOADER_LEVEL=3
|
CONFIG_LOG_BOOTLOADER_LEVEL=3
|
||||||
# CONFIG_APP_ROLLBACK_ENABLE is not set
|
|
||||||
# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
|
# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
|
||||||
CONFIG_FLASHMODE_QIO=y
|
CONFIG_FLASHMODE_QIO=y
|
||||||
# CONFIG_FLASHMODE_QOUT is not set
|
# CONFIG_FLASHMODE_QOUT is not set
|
||||||
@ -2951,9 +2999,8 @@ CONFIG_IPC_TASK_STACK_SIZE=1024
|
|||||||
CONFIG_TIMER_TASK_STACK_SIZE=3584
|
CONFIG_TIMER_TASK_STACK_SIZE=3584
|
||||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
|
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
|
||||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
|
||||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16
|
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||||
CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32
|
|
||||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||||
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
||||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||||
@ -2969,6 +3016,20 @@ CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
|
|||||||
CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y
|
CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y
|
||||||
CONFIG_WPA_MBEDTLS_CRYPTO=y
|
CONFIG_WPA_MBEDTLS_CRYPTO=y
|
||||||
CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
|
CONFIG_WPA_MBEDTLS_TLS_CLIENT=y
|
||||||
|
# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
|
||||||
|
CONFIG_ESP32_ENABLE_COREDUMP_TO_UART=y
|
||||||
|
# CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE is not set
|
||||||
|
# CONFIG_ESP32_COREDUMP_DATA_FORMAT_BIN is not set
|
||||||
|
CONFIG_ESP32_COREDUMP_DATA_FORMAT_ELF=y
|
||||||
|
CONFIG_ESP32_COREDUMP_CHECKSUM_CRC32=y
|
||||||
|
# CONFIG_ESP32_COREDUMP_CHECKSUM_SHA256 is not set
|
||||||
|
CONFIG_ESP32_ENABLE_COREDUMP=y
|
||||||
|
CONFIG_ESP32_CORE_DUMP_MAX_TASKS_NUM=64
|
||||||
|
CONFIG_ESP32_CORE_DUMP_UART_DELAY=0
|
||||||
|
CONFIG_ESP32_CORE_DUMP_STACK_SIZE=0
|
||||||
|
CONFIG_ESP32_CORE_DUMP_DECODE_INFO=y
|
||||||
|
# CONFIG_ESP32_CORE_DUMP_DECODE_DISABLE is not set
|
||||||
|
CONFIG_ESP32_CORE_DUMP_DECODE="info"
|
||||||
CONFIG_TIMER_TASK_PRIORITY=1
|
CONFIG_TIMER_TASK_PRIORITY=1
|
||||||
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
CONFIG_TIMER_TASK_STACK_DEPTH=2048
|
||||||
CONFIG_TIMER_QUEUE_LENGTH=10
|
CONFIG_TIMER_QUEUE_LENGTH=10
|
||||||
@ -3054,9 +3115,8 @@ CONFIG_TO_WIFI_DATA_THROTTLE_HIGH_THRESHOLD=80
|
|||||||
CONFIG_TO_WIFI_DATA_THROTTLE_LOW_THRESHOLD=60
|
CONFIG_TO_WIFI_DATA_THROTTLE_LOW_THRESHOLD=60
|
||||||
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
|
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
|
||||||
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
|
||||||
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=0
|
CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
|
||||||
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=16
|
CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
|
||||||
CONFIG_ESP32_WIFI_CACHE_TX_BUFFER_NUM=32
|
|
||||||
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
|
||||||
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
CONFIG_ESP32_WIFI_TX_BA_WIN=6
|
||||||
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
|
||||||
|
|||||||
@ -42,31 +42,14 @@ CONFIG_LV_LAYER_SIMPLE_BUF_SIZE=102400
|
|||||||
CONFIG_LV_IMG_CACHE_DEF_SIZE=20
|
CONFIG_LV_IMG_CACHE_DEF_SIZE=20
|
||||||
CONFIG_LV_GRAD_CACHE_DEF_SIZE=10240
|
CONFIG_LV_GRAD_CACHE_DEF_SIZE=10240
|
||||||
CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y
|
CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y
|
||||||
CONFIG_LV_FONT_MONTSERRAT_8=y
|
CONFIG_LV_USE_MONKEY=n
|
||||||
CONFIG_LV_FONT_MONTSERRAT_10=y
|
CONFIG_LV_USE_DEMO_WIDGETS=n
|
||||||
CONFIG_LV_FONT_MONTSERRAT_12=y
|
CONFIG_LV_USE_DEMO_BENCHMARK=n
|
||||||
CONFIG_LV_FONT_MONTSERRAT_16=y
|
CONFIG_LV_USE_DEMO_STRESS=n
|
||||||
CONFIG_LV_FONT_MONTSERRAT_18=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_20=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_22=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_24=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_26=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_28=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_30=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_32=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_34=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_36=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_38=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_40=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_42=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_44=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_46=y
|
|
||||||
CONFIG_LV_FONT_MONTSERRAT_48=y
|
|
||||||
CONFIG_LV_USE_MONKEY=y
|
|
||||||
CONFIG_LV_USE_DEMO_WIDGETS=y
|
|
||||||
CONFIG_LV_USE_DEMO_BENCHMARK=y
|
|
||||||
CONFIG_LV_USE_DEMO_STRESS=y
|
|
||||||
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
||||||
|
CONFIG_LV_USE_CLIB_MALLOC=y
|
||||||
|
CONFIG_LV_USE_CLIB_SPRINTF=y
|
||||||
|
CONFIG_LV_BUILD_EXAMPLES=n
|
||||||
|
|
||||||
#Necessaire pour lire les fichiers depuis littlefs
|
#Necessaire pour lire les fichiers depuis littlefs
|
||||||
CONFIG_LV_USE_FS_STDIO=y
|
CONFIG_LV_USE_FS_STDIO=y
|
||||||
@ -76,3 +59,21 @@ CONFIG_LV_FS_STDIO_CACHE_SIZE=0
|
|||||||
# Necessaire pour lire le png
|
# Necessaire pour lire le png
|
||||||
CONFIG_LV_USE_LODEPNG=y
|
CONFIG_LV_USE_LODEPNG=y
|
||||||
|
|
||||||
|
CONFIG_LV_FONT_MONTSERRAT_40=y
|
||||||
|
|
||||||
|
# Important pour la fluidité des animations
|
||||||
|
CONFIG_LV_DEF_REFR_PERIOD=10
|
||||||
|
|
||||||
|
#Dégradés
|
||||||
|
CONFIG_LV_USE_DRAW_SW_COMPLEX_GRADIENTS=y
|
||||||
|
|
||||||
|
#Necessaire pour compiler avec les struct internes
|
||||||
|
CONFIG_LV_USE_PRIVATE_API=y
|
||||||
|
|
||||||
|
CONFIG_SPIRAM_USE_MALLOC=y
|
||||||
|
|
||||||
|
#Specifique P4
|
||||||
|
CONFIG_SLAVE_IDF_TARGET_ESP32C6=y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
31
sdkconfig.defaults.esp32p4
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# This file was generated using idf.py save-defconfig. It can be edited manually.
|
||||||
|
# Espressif IoT Development Framework (ESP-IDF) Project Minimal Configuration
|
||||||
|
#
|
||||||
|
CONFIG_IDF_TARGET="esp32p4"
|
||||||
|
|
||||||
|
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
|
||||||
|
CONFIG_COMPILER_OPTIMIZATION_PERF=y
|
||||||
|
CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM=y
|
||||||
|
CONFIG_FREERTOS_HZ=1000
|
||||||
|
|
||||||
|
CONFIG_SPIRAM=y
|
||||||
|
CONFIG_SPIRAM_MODE_HEX=y
|
||||||
|
CONFIG_SPIRAM_SPEED_200M=y
|
||||||
|
CONFIG_IDF_EXPERIMENTAL_FEATURES=y
|
||||||
|
|
||||||
|
## LVGL9 ##
|
||||||
|
CONFIG_LV_CONF_SKIP=y
|
||||||
|
CONFIG_LV_DEF_REFR_PERIOD=10
|
||||||
|
|
||||||
|
#CLIB default
|
||||||
|
CONFIG_LV_USE_CLIB_MALLOC=y
|
||||||
|
CONFIG_LV_USE_CLIB_SPRINTF=y
|
||||||
|
CONFIG_LV_USE_CLIB_STRING=y
|
||||||
|
|
||||||
|
# Performance monitor
|
||||||
|
CONFIG_LV_USE_OBSERVER=y
|
||||||
|
CONFIG_LV_USE_SYSMON=y
|
||||||
|
CONFIG_LV_USE_PERF_MONITOR=y
|
||||||
|
|
||||||
|
|
||||||
|
# CONFIG_LV_BUILD_EXAMPLES is not set
|
||||||
1871
sdkconfig.old
380
server.py
Normal file
@ -0,0 +1,380 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
|
import http.server
|
||||||
|
import multiprocessing
|
||||||
|
import os
|
||||||
|
import ssl
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from typing import Any
|
||||||
|
from typing import Optional
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
|
import pexpect
|
||||||
|
import pytest
|
||||||
|
from pytest_embedded import Dut
|
||||||
|
|
||||||
|
try:
|
||||||
|
from common_test_methods import get_env_config_variable, get_host_ip4_by_dest_ip
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
idf_path = os.environ['IDF_PATH']
|
||||||
|
sys.path.insert(0, idf_path + '/tools/ci/python_packages')
|
||||||
|
from common_test_methods import get_env_config_variable, get_host_ip4_by_dest_ip
|
||||||
|
|
||||||
|
server_cert = '-----BEGIN CERTIFICATE-----\n' \
|
||||||
|
'MIIDWDCCAkACCQCbF4+gVh/MLjANBgkqhkiG9w0BAQsFADBuMQswCQYDVQQGEwJJ\n'\
|
||||||
|
'TjELMAkGA1UECAwCTUgxDDAKBgNVBAcMA1BVTjEMMAoGA1UECgwDRVNQMQwwCgYD\n'\
|
||||||
|
'VQQLDANFU1AxDDAKBgNVBAMMA0VTUDEaMBgGCSqGSIb3DQEJARYLZXNwQGVzcC5j\n'\
|
||||||
|
'b20wHhcNMjEwNzEyMTIzNjI3WhcNNDEwNzA3MTIzNjI3WjBuMQswCQYDVQQGEwJJ\n'\
|
||||||
|
'TjELMAkGA1UECAwCTUgxDDAKBgNVBAcMA1BVTjEMMAoGA1UECgwDRVNQMQwwCgYD\n'\
|
||||||
|
'VQQLDANFU1AxDDAKBgNVBAMMA0VTUDEaMBgGCSqGSIb3DQEJARYLZXNwQGVzcC5j\n'\
|
||||||
|
'b20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDhxF/y7bygndxPwiWL\n'\
|
||||||
|
'SwS9LY3uBMaJgup0ufNKVhx+FhGQOu44SghuJAaH3KkPUnt6SOM8jC97/yQuc32W\n'\
|
||||||
|
'ukI7eBZoA12kargSnzdv5m5rZZpd+NznSSpoDArOAONKVlzr25A1+aZbix2mKRbQ\n'\
|
||||||
|
'S5w9o1N2BriQuSzd8gL0Y0zEk3VkOWXEL+0yFUT144HnErnD+xnJtHe11yPO2fEz\n'\
|
||||||
|
'YaGiilh0ddL26PXTugXMZN/8fRVHP50P2OG0SvFpC7vghlLp4VFM1/r3UJnvL6Oz\n'\
|
||||||
|
'3ALc6dhxZEKQucqlpj8l1UegszQToopemtIj0qXTHw2+uUnkUyWIPjPC+wdOAoap\n'\
|
||||||
|
'rFTRAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAItw24y565k3C/zENZlxyzto44ud\n'\
|
||||||
|
'IYPQXN8Fa2pBlLe1zlSIyuaA/rWQ+i1daS8nPotkCbWZyf5N8DYaTE4B0OfvoUPk\n'\
|
||||||
|
'B5uGDmbuk6akvlB5BGiYLfQjWHRsK9/4xjtIqN1H58yf3QNROuKsPAeywWS3Fn32\n'\
|
||||||
|
'3//OpbWaClQePx6udRYMqAitKR+QxL7/BKZQsX+UyShuq8hjphvXvk0BW8ONzuw9\n'\
|
||||||
|
'RcoORxM0FzySYjeQvm4LhzC/P3ZBhEq0xs55aL2a76SJhq5hJy7T/Xz6NFByvlrN\n'\
|
||||||
|
'lFJJey33KFrAf5vnV9qcyWFIo7PYy2VsaaEjFeefr7q3sTFSMlJeadexW2Y=\n'\
|
||||||
|
'-----END CERTIFICATE-----\n'
|
||||||
|
|
||||||
|
server_key = '-----BEGIN PRIVATE KEY-----\n'\
|
||||||
|
'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDhxF/y7bygndxP\n'\
|
||||||
|
'wiWLSwS9LY3uBMaJgup0ufNKVhx+FhGQOu44SghuJAaH3KkPUnt6SOM8jC97/yQu\n'\
|
||||||
|
'c32WukI7eBZoA12kargSnzdv5m5rZZpd+NznSSpoDArOAONKVlzr25A1+aZbix2m\n'\
|
||||||
|
'KRbQS5w9o1N2BriQuSzd8gL0Y0zEk3VkOWXEL+0yFUT144HnErnD+xnJtHe11yPO\n'\
|
||||||
|
'2fEzYaGiilh0ddL26PXTugXMZN/8fRVHP50P2OG0SvFpC7vghlLp4VFM1/r3UJnv\n'\
|
||||||
|
'L6Oz3ALc6dhxZEKQucqlpj8l1UegszQToopemtIj0qXTHw2+uUnkUyWIPjPC+wdO\n'\
|
||||||
|
'AoaprFTRAgMBAAECggEAE0HCxV/N1Q1h+1OeDDGL5+74yjKSFKyb/vTVcaPCrmaH\n'\
|
||||||
|
'fPvp0ddOvMZJ4FDMAsiQS6/n4gQ7EKKEnYmwTqj4eUYW8yxGUn3f0YbPHbZT+Mkj\n'\
|
||||||
|
'z5woi3nMKi/MxCGDQZX4Ow3xUQlITUqibsfWcFHis8c4mTqdh4qj7xJzehD2PVYF\n'\
|
||||||
|
'gNHZsvVj6MltjBDAVwV1IlGoHjuElm6vuzkfX7phxcA1B4ZqdYY17yCXUnvui46z\n'\
|
||||||
|
'Xn2kUTOOUCEgfgvGa9E+l4OtdXi5IxjaSraU+dlg2KsE4TpCuN2MEVkeR5Ms3Y7Q\n'\
|
||||||
|
'jgJl8vlNFJDQpbFukLcYwG7rO5N5dQ6WWfVia/5XgQKBgQD74at/bXAPrh9NxPmz\n'\
|
||||||
|
'i1oqCHMDoM9sz8xIMZLF9YVu3Jf8ux4xVpRSnNy5RU1gl7ZXbpdgeIQ4v04zy5aw\n'\
|
||||||
|
'8T4tu9K3XnR3UXOy25AK0q+cnnxZg3kFQm+PhtOCKEFjPHrgo2MUfnj+EDddod7N\n'\
|
||||||
|
'JQr9q5rEFbqHupFPpWlqCa3QmQKBgQDldWUGokNaEpmgHDMnHxiibXV5LQhzf8Rq\n'\
|
||||||
|
'gJIQXb7R9EsTSXEvsDyqTBb7PHp2Ko7rZ5YQfyf8OogGGjGElnPoU/a+Jij1gVFv\n'\
|
||||||
|
'kZ064uXAAISBkwHdcuobqc5EbG3ceyH46F+FBFhqM8KcbxJxx08objmh58+83InN\n'\
|
||||||
|
'P9Qr25Xw+QKBgEGXMHuMWgQbSZeM1aFFhoMvlBO7yogBTKb4Ecpu9wI5e3Kan3Al\n'\
|
||||||
|
'pZYltuyf+VhP6XG3IMBEYdoNJyYhu+nzyEdMg8CwXg+8LC7FMis/Ve+o7aS5scgG\n'\
|
||||||
|
'1to/N9DK/swCsdTRdzmc/ZDbVC+TuVsebFBGYZTyO5KgqLpezqaIQrTxAoGALFCU\n'\
|
||||||
|
'10glO9MVyl9H3clap5v+MQ3qcOv/EhaMnw6L2N6WVT481tnxjW4ujgzrFcE4YuxZ\n'\
|
||||||
|
'hgwYu9TOCmeqopGwBvGYWLbj+C4mfSahOAs0FfXDoYazuIIGBpuv03UhbpB1Si4O\n'\
|
||||||
|
'rJDfRnuCnVWyOTkl54gKJ2OusinhjztBjcrV1XkCgYEA3qNi4uBsPdyz9BZGb/3G\n'\
|
||||||
|
'rOMSw0CaT4pEMTLZqURmDP/0hxvTk1polP7O/FYwxVuJnBb6mzDa0xpLFPTpIAnJ\n'\
|
||||||
|
'YXB8xpXU69QVh+EBbemdJWOd+zp5UCfXvb2shAeG3Tn/Dz4cBBMEUutbzP+or0nG\n'\
|
||||||
|
'vSXnRLaxQhooWm+IuX9SuBQ=\n'\
|
||||||
|
'-----END PRIVATE KEY-----\n'
|
||||||
|
|
||||||
|
OTA_0_ADDRESS = '0x20000'
|
||||||
|
OTA_1_ADDRESS = '0x1d0000'
|
||||||
|
|
||||||
|
|
||||||
|
def start_https_server(ota_image_dir: str, server_ip: str, server_port: int, server_file: Optional[str] = None, key_file: Optional[str] = None) -> None:
|
||||||
|
os.chdir(ota_image_dir)
|
||||||
|
|
||||||
|
if server_file is None:
|
||||||
|
server_file = os.path.join(ota_image_dir, 'server_cert.pem')
|
||||||
|
cert_file_handle = open(server_file, 'w+', encoding='utf-8')
|
||||||
|
cert_file_handle.write(server_cert)
|
||||||
|
cert_file_handle.close()
|
||||||
|
|
||||||
|
if key_file is None:
|
||||||
|
key_file = os.path.join(ota_image_dir, 'server_key.pem')
|
||||||
|
key_file_handle = open('server_key.pem', 'w+', encoding='utf-8')
|
||||||
|
key_file_handle.write(server_key)
|
||||||
|
key_file_handle.close()
|
||||||
|
|
||||||
|
httpd = http.server.HTTPServer((server_ip, server_port), http.server.SimpleHTTPRequestHandler)
|
||||||
|
|
||||||
|
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||||
|
ssl_context.load_cert_chain(certfile=server_file, keyfile=key_file)
|
||||||
|
|
||||||
|
httpd.socket = ssl_context.wrap_socket(httpd.socket, server_side=True)
|
||||||
|
httpd.serve_forever()
|
||||||
|
|
||||||
|
|
||||||
|
def start_tls1_3_server(ota_image_dir: str, server_port: int) -> subprocess.Popen:
|
||||||
|
os.chdir(ota_image_dir)
|
||||||
|
server_file = os.path.join(ota_image_dir, 'server_cert.pem')
|
||||||
|
cert_file_handle = open(server_file, 'w+', encoding='utf-8')
|
||||||
|
cert_file_handle.write(server_cert)
|
||||||
|
cert_file_handle.close()
|
||||||
|
|
||||||
|
key_file = os.path.join(ota_image_dir, 'server_key.pem')
|
||||||
|
key_file_handle = open('server_key.pem', 'w+', encoding='utf-8')
|
||||||
|
key_file_handle.write(server_key)
|
||||||
|
key_file_handle.close()
|
||||||
|
|
||||||
|
chunked_server = subprocess.Popen(['openssl', 's_server', '-tls1_3', '-WWW', '-key', key_file, '-cert', server_file, '-port', str(server_port)])
|
||||||
|
return chunked_server
|
||||||
|
|
||||||
|
|
||||||
|
def check_sha256(sha256_expected: str, sha256_reported: str) -> None:
|
||||||
|
print('sha256_expected: %s' % (sha256_expected))
|
||||||
|
print('sha256_reported: %s' % (sha256_reported))
|
||||||
|
if sha256_expected not in sha256_reported:
|
||||||
|
raise ValueError('SHA256 mismatch')
|
||||||
|
else:
|
||||||
|
print('SHA256 expected and reported are the same')
|
||||||
|
|
||||||
|
|
||||||
|
def calc_all_sha256(dut: Dut) -> Tuple[str, str]:
|
||||||
|
bootloader_path = os.path.join(dut.app.binary_path, 'bootloader', 'bootloader.bin')
|
||||||
|
sha256_bootloader = dut.app.get_sha256(bootloader_path)
|
||||||
|
|
||||||
|
app_path = os.path.join(dut.app.binary_path, 'simple_ota.bin')
|
||||||
|
sha256_app = dut.app.get_sha256(app_path)
|
||||||
|
|
||||||
|
return str(sha256_bootloader), str(sha256_app)
|
||||||
|
|
||||||
|
|
||||||
|
def setting_connection(dut: Dut, env_name: Optional[str] = None) -> Any:
|
||||||
|
if env_name is not None and dut.app.sdkconfig.get('EXAMPLE_WIFI_SSID_PWD_FROM_STDIN') is True:
|
||||||
|
dut.expect('Please input ssid password:')
|
||||||
|
ap_ssid = get_env_config_variable(env_name, 'ap_ssid')
|
||||||
|
ap_password = get_env_config_variable(env_name, 'ap_password')
|
||||||
|
dut.write(f'{ap_ssid} {ap_password}')
|
||||||
|
try:
|
||||||
|
ip_address = dut.expect(r'IPv4 address: (\d+\.\d+\.\d+\.\d+)[^\d]', timeout=30)[1].decode()
|
||||||
|
print(f'Connected to AP/Ethernet with IP: {ip_address}')
|
||||||
|
except pexpect.exceptions.TIMEOUT:
|
||||||
|
raise ValueError('ENV_TEST_FAILURE: Cannot connect to AP/Ethernet')
|
||||||
|
return get_host_ip4_by_dest_ip(ip_address)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.esp32c3
|
||||||
|
@pytest.mark.esp32s3
|
||||||
|
@pytest.mark.wifi_high_traffic
|
||||||
|
def test_examples_protocol_simple_ota_example(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
sha256_bootloader, sha256_app = calc_all_sha256(dut)
|
||||||
|
# Start server
|
||||||
|
thread1 = multiprocessing.Process(target=start_https_server, args=(dut.app.binary_path, '0.0.0.0', 8000))
|
||||||
|
thread1.daemon = True
|
||||||
|
thread1.start()
|
||||||
|
try:
|
||||||
|
# start test
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
check_sha256(sha256_bootloader, str(dut.expect(r'SHA-256 for bootloader:\s+([a-f0-9]){64}')[0]))
|
||||||
|
check_sha256(sha256_app, str(dut.expect(r'SHA-256 for current firmware:\s+([a-f0-9]){64}')[0]))
|
||||||
|
# Parse IP address of STA
|
||||||
|
env_name = 'wifi_high_traffic' if dut.app.sdkconfig.get('EXAMPLE_WIFI_SSID_PWD_FROM_STDIN') is True else None
|
||||||
|
host_ip = setting_connection(dut, env_name)
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=60)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_1_ADDRESS}', timeout=30)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
thread1.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.ethernet_ota
|
||||||
|
@pytest.mark.parametrize('config', ['spiram',], indirect=True)
|
||||||
|
def test_examples_protocol_simple_ota_example_ethernet_with_spiram_config(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
# Start server
|
||||||
|
thread1 = multiprocessing.Process(target=start_https_server, args=(dut.app.binary_path, '0.0.0.0', 8000))
|
||||||
|
thread1.daemon = True
|
||||||
|
thread1.start()
|
||||||
|
try:
|
||||||
|
# start test
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
host_ip = setting_connection(dut)
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=60)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_1_ADDRESS}', timeout=30)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
thread1.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.esp32c3
|
||||||
|
@pytest.mark.flash_encryption_wifi_high_traffic
|
||||||
|
@pytest.mark.nightly_run
|
||||||
|
@pytest.mark.parametrize('config', ['flash_enc_wifi',], indirect=True)
|
||||||
|
@pytest.mark.parametrize('skip_autoflash', ['y'], indirect=True)
|
||||||
|
def test_examples_protocol_simple_ota_example_with_flash_encryption_wifi(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
# CONFIG_PARTITION_TABLE_TWO_OTA_ENCRYPTED_NVS==y, it includes partitions_two_ota_encr_nvs.csv
|
||||||
|
FACTORY_ADDRESS = '0x20000'
|
||||||
|
OTA_0_ADDRESS = '0x120000'
|
||||||
|
# OTA_1_ADDRESS = '0x220000'
|
||||||
|
|
||||||
|
# start test
|
||||||
|
# Erase flash
|
||||||
|
dut.serial.erase_flash()
|
||||||
|
dut.serial.flash()
|
||||||
|
# Start server
|
||||||
|
thread1 = multiprocessing.Process(target=start_https_server, args=(dut.app.binary_path, '0.0.0.0', 8000))
|
||||||
|
thread1.daemon = True
|
||||||
|
thread1.start()
|
||||||
|
try:
|
||||||
|
dut.expect(f'Loaded app from partition at offset {FACTORY_ADDRESS}', timeout=30)
|
||||||
|
dut.expect('Flash encryption mode is DEVELOPMENT', timeout=10)
|
||||||
|
# Parse IP address of STA
|
||||||
|
env_name = 'flash_encryption_wifi_high_traffic' if dut.app.sdkconfig.get('EXAMPLE_WIFI_SSID_PWD_FROM_STDIN') is True else None
|
||||||
|
host_ip = setting_connection(dut, env_name)
|
||||||
|
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=60)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
dut.expect('Flash encryption mode is DEVELOPMENT', timeout=10)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
thread1.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.ethernet_ota
|
||||||
|
@pytest.mark.parametrize('config', ['on_update_no_sb_ecdsa',], indirect=True)
|
||||||
|
def test_examples_protocol_simple_ota_example_with_verify_app_signature_on_update_no_secure_boot_ecdsa(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
sha256_bootloader, sha256_app = calc_all_sha256(dut)
|
||||||
|
# Start server
|
||||||
|
thread1 = multiprocessing.Process(target=start_https_server, args=(dut.app.binary_path, '0.0.0.0', 8000))
|
||||||
|
thread1.daemon = True
|
||||||
|
thread1.start()
|
||||||
|
try:
|
||||||
|
# start test
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
check_sha256(sha256_bootloader, str(dut.expect(r'SHA-256 for bootloader:\s+([a-f0-9]){64}')[0]))
|
||||||
|
check_sha256(sha256_app, str(dut.expect(r'SHA-256 for current firmware:\s+([a-f0-9]){64}')[0]))
|
||||||
|
|
||||||
|
host_ip = setting_connection(dut)
|
||||||
|
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect(f'Writing to <ota_1> partition at offset {OTA_1_ADDRESS}', timeout=20)
|
||||||
|
dut.expect('Verifying image signature...', timeout=60)
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=60)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_1_ADDRESS}', timeout=20)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
thread1.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.ethernet_ota
|
||||||
|
@pytest.mark.parametrize('config', ['on_update_no_sb_rsa',], indirect=True)
|
||||||
|
def test_examples_protocol_simple_ota_example_with_verify_app_signature_on_update_no_secure_boot_rsa(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
sha256_bootloader, sha256_app = calc_all_sha256(dut)
|
||||||
|
# Start server
|
||||||
|
thread1 = multiprocessing.Process(target=start_https_server, args=(dut.app.binary_path, '0.0.0.0', 8000))
|
||||||
|
thread1.daemon = True
|
||||||
|
thread1.start()
|
||||||
|
try:
|
||||||
|
# start test
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
check_sha256(sha256_bootloader, str(dut.expect(r'SHA-256 for bootloader:\s+([a-f0-9]){64}')[0]))
|
||||||
|
check_sha256(sha256_app, str(dut.expect(r'SHA-256 for current firmware:\s+([a-f0-9]){64}')[0]))
|
||||||
|
|
||||||
|
host_ip = setting_connection(dut)
|
||||||
|
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect(f'Writing to <ota_1> partition at offset {OTA_1_ADDRESS}', timeout=20)
|
||||||
|
dut.expect('Verifying image signature...', timeout=60)
|
||||||
|
dut.expect('#0 app key digest == #0 trusted key digest', timeout=10)
|
||||||
|
dut.expect('Verifying with RSA-PSS...', timeout=10)
|
||||||
|
dut.expect('Signature verified successfully!', timeout=10)
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=60)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_1_ADDRESS}', timeout=20)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
thread1.terminate()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32
|
||||||
|
@pytest.mark.ethernet_ota
|
||||||
|
@pytest.mark.parametrize('config', ['tls1_3',], indirect=True)
|
||||||
|
def test_examples_protocol_simple_ota_example_tls1_3(dut: Dut) -> None:
|
||||||
|
"""
|
||||||
|
steps: |
|
||||||
|
1. join AP/Ethernet
|
||||||
|
2. Fetch OTA image over HTTPS
|
||||||
|
3. Reboot with the new OTA image
|
||||||
|
"""
|
||||||
|
sha256_bootloader, sha256_app = calc_all_sha256(dut)
|
||||||
|
# Start server
|
||||||
|
tls1_3_server = start_tls1_3_server(dut.app.binary_path, 8000)
|
||||||
|
try:
|
||||||
|
# start test
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_0_ADDRESS}', timeout=30)
|
||||||
|
check_sha256(sha256_bootloader, str(dut.expect(r'SHA-256 for bootloader:\s+([a-f0-9]){64}')[0]))
|
||||||
|
check_sha256(sha256_app, str(dut.expect(r'SHA-256 for current firmware:\s+([a-f0-9]){64}')[0]))
|
||||||
|
# Parse IP address of STA
|
||||||
|
env_name = 'wifi_high_traffic' if dut.app.sdkconfig.get('EXAMPLE_WIFI_SSID_PWD_FROM_STDIN') is True else None
|
||||||
|
host_ip = setting_connection(dut, env_name)
|
||||||
|
|
||||||
|
dut.expect('Starting OTA example task', timeout=30)
|
||||||
|
print(f'writing to device: https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.write(f'https://{host_ip}:8000/simple_ota.bin')
|
||||||
|
dut.expect('OTA Succeed, Rebooting...', timeout=120)
|
||||||
|
# after reboot
|
||||||
|
dut.expect(f'Loaded app from partition at offset {OTA_1_ADDRESS}', timeout=30)
|
||||||
|
dut.expect('OTA example app_main start', timeout=10)
|
||||||
|
finally:
|
||||||
|
tls1_3_server.kill()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
if sys.argv[2:]: # if two or more arguments provided:
|
||||||
|
# Usage: pytest_simple_ota.py <image_dir> <server_port> [cert_dir]
|
||||||
|
this_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
bin_dir = os.path.join(this_dir, sys.argv[1])
|
||||||
|
port = int(sys.argv[2])
|
||||||
|
cert_dir = bin_dir if not sys.argv[3:] else os.path.join(this_dir, sys.argv[3]) # optional argument
|
||||||
|
print(f'Starting HTTPS server at "https://0.0.0.0:{port}"')
|
||||||
|
start_https_server(bin_dir, '', port,
|
||||||
|
server_file=os.path.join(cert_dir, 'ca_cert.pem'),
|
||||||
|
key_file=os.path.join(cert_dir, 'ca_key.pem'))
|
||||||
|
|
||||||
1
version.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
0.1
|
||||||