Initial commit
50
.gitignore
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
# These are some examples of commonly ignored file patterns.
|
||||
# You should customize this list as applicable to your project.
|
||||
# Learn more about .gitignore:
|
||||
# https://www.atlassian.com/git/tutorials/saving-changes/gitignore
|
||||
|
||||
# Node artifact files
|
||||
node_modules/
|
||||
dist/
|
||||
|
||||
# Compiled Java class files
|
||||
*.class
|
||||
|
||||
# Compiled Python bytecode
|
||||
*.py[cod]
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
|
||||
# Package files
|
||||
*.jar
|
||||
|
||||
# Maven
|
||||
target/
|
||||
dist/
|
||||
|
||||
# JetBrains IDE
|
||||
.idea/
|
||||
|
||||
# Unit test reports
|
||||
TEST*.xml
|
||||
|
||||
# Generated by MacOS
|
||||
.DS_Store
|
||||
|
||||
# Generated by Windows
|
||||
Thumbs.db
|
||||
|
||||
# Applications
|
||||
*.app
|
||||
*.exe
|
||||
*.war
|
||||
|
||||
# Large media files
|
||||
*.mp4
|
||||
*.tiff
|
||||
*.avi
|
||||
*.flv
|
||||
*.mov
|
||||
*.wmv
|
||||
|
51
bom.txt
Normal file
@ -0,0 +1,51 @@
|
||||
1. LILYGO® TTGO T-Beam V1.1 SX1262 LORA 915MHZ ESP32 WiFi Wireless Bluetooth Module GPS NEO-M8N IPEX 18650 $41.85
|
||||
https://www.aliexpress.com/item/4001287221970.html?spm=a2g0s.9042311.0.0.1f854c4dBQY7TG
|
||||
|
||||
2. EVE3-35A-IPS-BLH-TPN-F128 $64.5
|
||||
https://www.matrixorbital.com/eve3-35a-ips
|
||||
|
||||
3. MCP23017 $13
|
||||
https://www.aliexpress.com/item/32957655097.html?spm=a2g0s.9042311.0.0.1f854c4dBQY7TG
|
||||
|
||||
4. SGY-9250 $9
|
||||
https://www.aliexpress.com/item/1904051617.html?spm=a2g0s.9042311.0.0.1f854c4dBQY7TG
|
||||
|
||||
5. 76342-303LF x2 $2 or CES-103-01-G-D
|
||||
https://www.newark.com/amphenol-icc/76342-303lf/connector-rcpt-6pos-2row-2-54mm/dp/62K8357
|
||||
|
||||
6. B3S-1000P x6 $2
|
||||
https://www.newark.com/omron-electronic-components/b3s-1000p/switch-tactile-spst-no-50ma-smd/dp/50B6363
|
||||
|
||||
7. MOLEX 15134-0800 $2.5
|
||||
https://www.newark.com/molex/15134-0800/cable-assy-8pos-rcpt-rcpt-2/dp/33AC8053
|
||||
|
||||
8. MOLEX 53048-0810 $1
|
||||
https://www.newark.com/molex/53048-0810/connector-header-8pos-1row-1-25mm/dp/98K9836
|
||||
|
||||
9. SPC20493 or XG8T-0631 x2 $1
|
||||
https://www.newark.com/multicomp/spc20493/board-board-connector-header-6way/dp/93K5746
|
||||
https://www.newark.com/omron-electronic-components/xg8t-0631/connector-header-6-position-2row/dp/05M2064
|
||||
|
||||
10. S2B-PH-SM4-TB(LF)(SN) $0.8
|
||||
https://www.newark.com/jst-japan-solderless-terminals/s2b-ph-sm4-tb-lf-sn/wire-to-board-connector-header/dp/38K8067
|
||||
|
||||
11. GM5539 5mm $0.5
|
||||
https://www.amazon.com/gp/product/B01N7V536K/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
|
||||
|
||||
12. Optional DWM1000 $21
|
||||
https://www.mouser.com/ProductDetail/772-DWM1000/
|
||||
|
||||
13. 10mmx2mm Mini Tiny Vibration Motors 10000rpm Flat Coin Button-Type Micro DC Vibrating Motor $1
|
||||
https://www.amazon.com/gp/product/B073YFR5WR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
|
||||
|
||||
14. HTSW-150-06-G-S
|
||||
https://www.digikey.com/en/products/detail/samtec-inc/HTSW-150-06-G-S/8085307
|
||||
|
||||
15. Adafruit NPN Bipolar Transistors (PN2222)
|
||||
https://www.amazon.com/gp/product/B00XW2OK7M/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
|
||||
|
||||
case+hw $10
|
||||
glass $3
|
||||
pcb $3
|
||||
|
||||
$133/153
|
6
compiler_script.py
Normal file
@ -0,0 +1,6 @@
|
||||
Import("env")
|
||||
|
||||
env.Replace(
|
||||
AR="xtensa-esp32-elf-gcc-ar",
|
||||
RANLIB="xtensa-esp32-elf-gcc-ranlib",
|
||||
)
|
BIN
data/at.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
data/gps.png
Normal file
After Width: | Height: | Size: 423 B |
28
fonts/calibri_14/L1/calibri_14_L1.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
This file is automatically generated
|
||||
calibri_14_L1
|
||||
C Source
|
||||
*/
|
||||
|
||||
#include "App_Common.h"
|
||||
|
||||
#define FONT_HANDLE (1)
|
||||
#define FONT_FILE_ADDRESS (RAM_G + 153600)
|
||||
#define FIRST_CHARACTER (32)
|
||||
|
||||
void Load_Font()
|
||||
{
|
||||
Gpu_CoCmd_Dlstart(phost);
|
||||
App_WrCoCmd_Buffer(phost, CLEAR(1, 1, 1));
|
||||
App_WrCoCmd_Buffer(phost, COLOR_RGB(255, 255, 255));
|
||||
Gpu_Hal_LoadImageToMemory(phost, "path\\to\\calibri_14_L1.raw", FONT_FILE_ADDRESS, LOAD);
|
||||
|
||||
Gpu_CoCmd_SetFont2(phost, FONT_HANDLE, FONT_FILE_ADDRESS, FIRST_CHARACTER);
|
||||
Gpu_CoCmd_Text(phost, 0, 0, FONT_HANDLE, 0, "AaBbCcDdEeFf");
|
||||
App_WrCoCmd_Buffer(phost, DISPLAY());
|
||||
Gpu_CoCmd_Swap(phost);
|
||||
App_Flush_Co_Buffer(phost);
|
||||
Gpu_Hal_WaitCmdfifo_empty(phost);
|
||||
}
|
||||
|
||||
/* end of file */
|
1
fonts/calibri_14/L1/calibri_14_L1.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "calibri_14_L1", "type": "legacyfont", "format": "L1", "size": 14, "base_line": 11, "caps_height": 9, "mid_line": 7}
|
BIN
fonts/calibri_14/L1/calibri_14_L1.raw
Normal file
110
fonts/calibri_14/L1/calibri_14_L1.rawh
Normal file
@ -0,0 +1,110 @@
|
||||
/*Command Line: fnt_cvt.exe -f legacy -C BT81X -i Q:/fonts/calibri.ttf -s 14 -d 153600 -c setfont2 -l 32 -a -o D:/Projects/Embedded/AirsoftTracker/fonts*/
|
||||
|
||||
/*95 characters have been converted */
|
||||
|
||||
/* 148 Metric Block Begin +++ */
|
||||
/*('file properties ', 'format ', 'L1', ' stride ', 2, ' width ', 14, 'height', 14)*/
|
||||
{
|
||||
/* Widths */
|
||||
0,0,0,0,0,0,0,0,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,5,6,7,7,10,10,3,4,4,7,7,4,4,4,6,7,7,7,7,7,7,7,7,7,7,4,4,7,7,7,6,13,8,8,8,9,7,6,9,9,4,4,7,6,12,9,9,7,10,8,6,7,9,8,13,7,7,7,4,6,4,7,8,4,7,7,6,7,7,5,7,7,3,4,7,3,11,7,7,7,7,5,5,5,7,7,10,6,7,6,4,6,5,7,0,
|
||||
/* Format */
|
||||
1,0,0,0,
|
||||
/* Stride */
|
||||
2,0,0,0,
|
||||
/* Max Width */
|
||||
14,0,0,0,
|
||||
/* Max Height */
|
||||
14,0,0,0,
|
||||
/* Raw Data Address in Decimal: <153748> */
|
||||
148,88,2,0,
|
||||
|
||||
/* 148 Metric Block End --- */
|
||||
|
||||
/*Bitmap Raw Data begin +++*/
|
||||
/*The expected raw bitmap size is 2660 Bytes */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,
|
||||
64,0,64,0,64,0,64,0,64,0,64,0,0,0,64,0,64,0,0,0,0,0,0,0,0,0,88,0,80,0,80,0,
|
||||
64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,0,36,0,126,0,36,0,
|
||||
72,0,252,0,72,0,72,0,72,0,0,0,0,0,0,0,0,0,16,0,56,0,68,0,64,0,96,0,56,0,4,0,
|
||||
4,0,68,0,120,0,32,0,32,0,0,0,0,0,0,0,113,0,81,0,18,0,84,0,123,128,10,128,18,0,34,128,
|
||||
35,128,0,0,0,0,0,0,0,0,60,0,36,0,36,0,44,0,56,0,57,0,77,0,71,0,103,0,61,128,0,0,
|
||||
0,0,0,0,0,0,64,0,64,0,64,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,32,0,32,0,32,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,32,0,32,0,32,0,0,0,64,0,
|
||||
64,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,64,0,64,0,0,0,32,0,248,0,112,0,
|
||||
248,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,
|
||||
16,0,124,0,16,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,64,0,64,0,64,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,0,0,
|
||||
0,0,0,0,0,0,8,0,8,0,24,0,16,0,16,0,32,0,32,0,32,0,64,0,64,0,192,0,128,0,0,0,
|
||||
0,0,0,0,56,0,68,0,68,0,70,0,70,0,70,0,68,0,68,0,56,0,0,0,0,0,0,0,0,0,0,0,
|
||||
32,0,224,0,32,0,32,0,32,0,32,0,32,0,32,0,248,0,0,0,0,0,0,0,0,0,0,0,56,0,76,0,
|
||||
4,0,12,0,8,0,24,0,48,0,96,0,124,0,0,0,0,0,0,0,0,0,0,0,56,0,76,0,4,0,8,0,
|
||||
56,0,12,0,4,0,76,0,120,0,0,0,0,0,0,0,0,0,0,0,8,0,24,0,40,0,40,0,72,0,72,0,
|
||||
254,0,8,0,8,0,0,0,0,0,0,0,0,0,0,0,124,0,64,0,64,0,120,0,12,0,4,0,4,0,76,0,
|
||||
120,0,0,0,0,0,0,0,0,0,0,0,28,0,32,0,64,0,124,0,68,0,70,0,68,0,100,0,56,0,0,0,
|
||||
0,0,0,0,0,0,0,0,124,0,4,0,4,0,8,0,8,0,16,0,16,0,48,0,32,0,0,0,0,0,0,0,
|
||||
0,0,0,0,56,0,68,0,68,0,108,0,56,0,68,0,68,0,68,0,56,0,0,0,0,0,0,0,0,0,0,0,
|
||||
56,0,68,0,68,0,68,0,124,0,4,0,4,0,12,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
192,0,192,0,0,0,0,0,0,0,192,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,
|
||||
96,0,0,0,0,0,96,0,96,0,64,0,64,0,0,0,0,0,0,0,0,0,4,0,24,0,96,0,192,0,96,0,
|
||||
24,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,124,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,48,0,12,0,12,0,48,0,64,0,0,0,0,0,
|
||||
0,0,0,0,0,0,120,0,76,0,4,0,12,0,56,0,32,0,32,0,0,0,48,0,48,0,0,0,0,0,0,0,
|
||||
0,0,0,0,15,0,48,192,64,64,79,64,146,64,146,64,146,64,159,128,192,0,96,0,62,0,0,0,0,0,0,0,
|
||||
24,0,24,0,60,0,36,0,36,0,102,0,126,0,66,0,195,0,0,0,0,0,0,0,0,0,0,0,240,0,136,0,
|
||||
136,0,136,0,248,0,140,0,132,0,140,0,248,0,0,0,0,0,0,0,0,0,0,0,28,0,34,0,64,0,64,0,
|
||||
64,0,64,0,64,0,98,0,60,0,0,0,0,0,0,0,0,0,0,0,248,0,140,0,134,0,130,0,130,0,130,0,
|
||||
134,0,140,0,248,0,0,0,0,0,0,0,0,0,0,0,248,0,128,0,128,0,128,0,248,0,128,0,128,0,128,0,
|
||||
248,0,0,0,0,0,0,0,0,0,0,0,248,0,128,0,128,0,128,0,248,0,128,0,128,0,128,0,128,0,0,0,
|
||||
0,0,0,0,0,0,0,0,30,0,33,0,64,0,64,0,79,0,65,0,65,0,35,0,30,0,0,0,0,0,0,0,
|
||||
0,0,0,0,134,0,134,0,134,0,134,0,254,0,134,0,134,0,134,0,134,0,0,0,0,0,0,0,0,0,0,0,
|
||||
128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,
|
||||
32,0,32,0,32,0,32,0,32,0,32,0,224,0,0,0,0,0,0,0,0,0,0,0,140,0,152,0,144,0,224,0,
|
||||
224,0,176,0,144,0,136,0,140,0,0,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,128,0,128,0,
|
||||
128,0,128,0,248,0,0,0,0,0,0,0,0,0,0,0,192,192,225,192,161,64,161,64,146,64,146,64,156,64,140,64,
|
||||
140,64,0,0,0,0,0,0,0,0,0,0,194,0,226,0,162,0,178,0,146,0,154,0,142,0,134,0,134,0,0,0,
|
||||
0,0,0,0,0,0,0,0,30,0,35,0,65,0,65,0,65,128,65,0,65,0,99,0,30,0,0,0,0,0,0,0,
|
||||
0,0,0,0,240,0,136,0,140,0,136,0,136,0,240,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,
|
||||
30,0,35,0,65,0,65,0,65,128,65,0,65,0,99,0,63,0,0,192,0,0,0,0,0,0,0,0,248,0,136,0,
|
||||
140,0,136,0,240,0,152,0,136,0,140,0,132,0,0,0,0,0,0,0,0,0,0,0,56,0,64,0,64,0,96,0,
|
||||
56,0,12,0,4,0,12,0,120,0,0,0,0,0,0,0,0,0,0,0,254,0,16,0,16,0,16,0,16,0,16,0,
|
||||
16,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,130,0,130,0,130,0,130,0,130,0,130,0,134,0,68,0,
|
||||
56,0,0,0,0,0,0,0,0,0,0,0,195,0,66,0,66,0,102,0,36,0,36,0,60,0,24,0,24,0,0,0,
|
||||
0,0,0,0,0,0,0,0,66,16,70,16,70,32,101,32,41,32,41,96,41,192,56,192,16,192,0,0,0,0,0,0,
|
||||
0,0,0,0,70,0,100,0,44,0,56,0,24,0,56,0,44,0,68,0,70,0,0,0,0,0,0,0,0,0,0,0,
|
||||
196,0,68,0,104,0,40,0,48,0,16,0,16,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,124,0,12,0,
|
||||
8,0,24,0,16,0,32,0,96,0,64,0,252,0,0,0,0,0,0,0,0,0,224,0,128,0,128,0,128,0,128,0,
|
||||
128,0,128,0,128,0,128,0,128,0,128,0,224,0,0,0,0,0,128,0,64,0,64,0,64,0,32,0,32,0,32,0,
|
||||
16,0,16,0,24,0,8,0,8,0,0,0,0,0,96,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,
|
||||
32,0,32,0,96,0,0,0,0,0,0,0,16,0,56,0,40,0,76,0,68,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,
|
||||
0,0,64,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,56,0,76,0,4,0,60,0,68,0,76,0,124,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,
|
||||
184,0,200,0,140,0,140,0,140,0,200,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,64,0,
|
||||
64,0,64,0,64,0,64,0,56,0,0,0,0,0,0,0,0,0,4,0,4,0,4,0,60,0,76,0,68,0,68,0,
|
||||
68,0,76,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,68,0,68,0,124,0,64,0,64,0,
|
||||
60,0,0,0,0,0,0,0,0,0,48,0,96,0,64,0,240,0,64,0,64,0,64,0,64,0,64,0,64,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,60,0,72,0,72,0,72,0,120,0,64,0,120,0,68,0,196,0,120,0,
|
||||
0,0,128,0,128,0,128,0,176,0,200,0,136,0,136,0,136,0,136,0,136,0,0,0,0,0,0,0,0,0,0,0,
|
||||
64,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,
|
||||
32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,32,0,96,0,0,0,128,0,128,0,128,0,152,0,176,0,
|
||||
224,0,224,0,176,0,144,0,136,0,0,0,0,0,0,0,0,0,128,0,128,0,128,0,128,0,128,0,128,0,128,0,
|
||||
128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,0,204,128,136,128,136,128,136,128,136,128,
|
||||
136,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,0,200,0,136,0,136,0,136,0,136,0,136,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,56,0,100,0,70,0,66,0,70,0,68,0,56,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,184,0,200,0,140,0,140,0,140,0,200,0,240,0,128,0,128,0,128,0,0,0,0,0,
|
||||
0,0,0,0,60,0,76,0,68,0,68,0,68,0,76,0,60,0,4,0,4,0,4,0,0,0,0,0,0,0,0,0,
|
||||
176,0,192,0,128,0,128,0,128,0,128,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,0,64,0,
|
||||
64,0,48,0,24,0,8,0,112,0,0,0,0,0,0,0,0,0,0,0,64,0,64,0,240,0,64,0,64,0,64,0,
|
||||
64,0,96,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,0,136,0,136,0,136,0,136,0,216,0,
|
||||
120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,0,68,0,72,0,72,0,40,0,48,0,48,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,204,192,76,128,76,128,76,128,51,0,51,0,51,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,72,0,72,0,48,0,48,0,48,0,72,0,204,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,196,0,68,0,72,0,104,0,40,0,48,0,48,0,16,0,32,0,32,0,0,0,0,0,0,0,0,0,
|
||||
120,0,16,0,16,0,32,0,32,0,64,0,120,0,0,0,0,0,0,0,0,0,48,0,32,0,32,0,32,0,32,0,
|
||||
64,0,96,0,32,0,32,0,32,0,32,0,48,0,0,0,0,0,64,0,64,0,64,0,64,0,64,0,64,0,64,0,
|
||||
64,0,64,0,64,0,64,0,64,0,64,0,0,0,96,0,32,0,32,0,32,0,32,0,16,0,32,0,32,0,32,0,
|
||||
32,0,32,0,64,0,0,0,0,0,0,0,0,0,98,0,84,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,
|
||||
/*Bitmap Raw Data end ---*/
|
||||
}
|
98
fonts/calibri_14/L1/calibri_14_L1.rtf
Normal file
@ -0,0 +1,98 @@
|
||||
95 characters are converted
|
||||
|
||||
Character Index No.
|
||||
32
|
||||
! 33
|
||||
" 34
|
||||
# 35
|
||||
$ 36
|
||||
% 37
|
||||
& 38
|
||||
' 39
|
||||
( 40
|
||||
) 41
|
||||
* 42
|
||||
+ 43
|
||||
, 44
|
||||
- 45
|
||||
. 46
|
||||
/ 47
|
||||
0 48
|
||||
1 49
|
||||
2 50
|
||||
3 51
|
||||
4 52
|
||||
5 53
|
||||
6 54
|
||||
7 55
|
||||
8 56
|
||||
9 57
|
||||
: 58
|
||||
; 59
|
||||
< 60
|
||||
= 61
|
||||
> 62
|
||||
? 63
|
||||
@ 64
|
||||
A 65
|
||||
B 66
|
||||
C 67
|
||||
D 68
|
||||
E 69
|
||||
F 70
|
||||
G 71
|
||||
H 72
|
||||
I 73
|
||||
J 74
|
||||
K 75
|
||||
L 76
|
||||
M 77
|
||||
N 78
|
||||
O 79
|
||||
P 80
|
||||
Q 81
|
||||
R 82
|
||||
S 83
|
||||
T 84
|
||||
U 85
|
||||
V 86
|
||||
W 87
|
||||
X 88
|
||||
Y 89
|
||||
Z 90
|
||||
[ 91
|
||||
\ 92
|
||||
] 93
|
||||
^ 94
|
||||
_ 95
|
||||
` 96
|
||||
a 97
|
||||
b 98
|
||||
c 99
|
||||
d 100
|
||||
e 101
|
||||
f 102
|
||||
g 103
|
||||
h 104
|
||||
i 105
|
||||
j 106
|
||||
k 107
|
||||
l 108
|
||||
m 109
|
||||
n 110
|
||||
o 111
|
||||
p 112
|
||||
q 113
|
||||
r 114
|
||||
s 115
|
||||
t 116
|
||||
u 117
|
||||
v 118
|
||||
w 119
|
||||
x 120
|
||||
y 121
|
||||
z 122
|
||||
{ 123
|
||||
| 124
|
||||
} 125
|
||||
~ 126
|
28
fonts/calibri_14/L2/calibri_14_L2.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
This file is automatically generated
|
||||
calibri_14_L2
|
||||
C Source
|
||||
*/
|
||||
|
||||
#include "App_Common.h"
|
||||
|
||||
#define FONT_HANDLE (1)
|
||||
#define FONT_FILE_ADDRESS (RAM_G + 153600)
|
||||
#define FIRST_CHARACTER (32)
|
||||
|
||||
void Load_Font()
|
||||
{
|
||||
Gpu_CoCmd_Dlstart(phost);
|
||||
App_WrCoCmd_Buffer(phost, CLEAR(1, 1, 1));
|
||||
App_WrCoCmd_Buffer(phost, COLOR_RGB(255, 255, 255));
|
||||
Gpu_Hal_LoadImageToMemory(phost, "path\\to\\calibri_14_L2.raw", FONT_FILE_ADDRESS, LOAD);
|
||||
|
||||
Gpu_CoCmd_SetFont2(phost, FONT_HANDLE, FONT_FILE_ADDRESS, FIRST_CHARACTER);
|
||||
Gpu_CoCmd_Text(phost, 0, 0, FONT_HANDLE, 0, "AaBbCcDdEeFf");
|
||||
App_WrCoCmd_Buffer(phost, DISPLAY());
|
||||
Gpu_CoCmd_Swap(phost);
|
||||
App_Flush_Co_Buffer(phost);
|
||||
Gpu_Hal_WaitCmdfifo_empty(phost);
|
||||
}
|
||||
|
||||
/* end of file */
|
1
fonts/calibri_14/L2/calibri_14_L2.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "calibri_14_L2", "type": "legacyfont", "format": "L2", "size": 14, "base_line": 11, "caps_height": 9, "mid_line": 7}
|
BIN
fonts/calibri_14/L2/calibri_14_L2.raw
Normal file
193
fonts/calibri_14/L2/calibri_14_L2.rawh
Normal file
@ -0,0 +1,193 @@
|
||||
/*Command Line: fnt_cvt.exe -f legacy -C BT81X -i Q:/fonts/calibri.ttf -s 14 -d 153600 -c setfont2 -l 32 -a -o D:/Projects/Embedded/AirsoftTracker/fonts*/
|
||||
|
||||
/*95 characters have been converted */
|
||||
|
||||
/* 148 Metric Block Begin +++ */
|
||||
/*('file properties ', 'format ', 'L2', ' stride ', 4, ' width ', 14, 'height', 14)*/
|
||||
{
|
||||
/* Widths */
|
||||
0,0,0,0,0,0,0,0,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,5,6,7,7,10,10,3,4,4,7,7,4,4,4,6,7,7,7,7,7,7,7,7,7,7,4,4,7,7,7,6,13,8,8,8,9,7,6,9,9,4,4,7,6,12,9,9,7,10,8,6,7,9,8,13,7,7,7,4,6,4,7,8,4,7,7,6,7,7,5,7,7,3,4,7,3,11,7,7,7,7,5,5,5,7,7,10,6,7,6,4,6,5,7,0,
|
||||
/* Format */
|
||||
17,0,0,0,
|
||||
/* Stride */
|
||||
4,0,0,0,
|
||||
/* Max Width */
|
||||
14,0,0,0,
|
||||
/* Max Height */
|
||||
14,0,0,0,
|
||||
/* Raw Data Address in Decimal: <153748> */
|
||||
148,88,2,0,
|
||||
|
||||
/* 148 Metric Block End --- */
|
||||
|
||||
/*Bitmap Raw Data begin +++*/
|
||||
/*The expected raw bitmap size is 5320 Bytes */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,
|
||||
48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,
|
||||
48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,128,0,0,50,64,0,0,50,64,0,0,
|
||||
49,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,48,0,0,12,96,0,0,127,248,0,0,24,96,0,0,
|
||||
36,144,0,0,191,244,0,0,36,192,0,0,48,192,0,0,48,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
1,64,0,0,2,64,0,0,27,208,0,0,52,96,0,0,48,0,0,0,41,0,0,0,11,208,0,0,0,112,0,0,
|
||||
0,52,0,0,96,112,0,0,47,144,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
46,2,64,0,99,6,0,0,82,76,0,0,99,36,0,0,46,155,128,0,1,140,144,0,3,24,80,0,9,12,144,0,
|
||||
24,11,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,224,0,0,28,52,0,0,24,36,0,0,
|
||||
13,160,0,0,11,128,0,0,30,131,0,0,52,163,0,0,112,62,0,0,56,46,0,0,27,226,192,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,48,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,9,0,0,0,12,0,0,0,24,0,0,0,36,0,0,0,52,0,0,0,48,0,0,0,48,0,0,0,
|
||||
48,0,0,0,52,0,0,0,36,0,0,0,24,0,0,0,12,0,0,0,9,0,0,0,0,0,0,0,48,0,0,0,
|
||||
36,0,0,0,24,0,0,0,28,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,
|
||||
28,0,0,0,24,0,0,0,36,0,0,0,48,0,0,0,0,0,0,0,12,0,0,0,170,128,0,0,46,0,0,0,
|
||||
170,128,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
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,3,0,0,0,
|
||||
3,0,0,0,127,244,0,0,3,0,0,0,3,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,36,0,0,0,36,0,0,0,48,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,208,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,1,192,0,0,2,128,0,0,3,0,0,0,6,0,0,0,
|
||||
9,0,0,0,12,0,0,0,24,0,0,0,36,0,0,0,112,0,0,0,160,0,0,0,208,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,27,208,0,0,52,112,0,0,112,36,0,0,96,40,0,0,96,40,0,0,96,40,0,0,
|
||||
112,36,0,0,52,112,0,0,31,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
29,0,0,0,169,0,0,0,73,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,
|
||||
191,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,32,160,0,0,
|
||||
0,112,0,0,0,160,0,0,0,208,0,0,2,128,0,0,10,0,0,0,40,0,0,0,127,244,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,32,160,0,0,0,96,0,0,1,208,0,0,
|
||||
31,128,0,0,0,176,0,0,0,52,0,0,96,176,0,0,47,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,1,208,0,0,3,144,0,0,9,144,0,0,28,144,0,0,36,144,0,0,96,144,0,0,
|
||||
191,248,0,0,0,144,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
47,224,0,0,52,0,0,0,52,0,0,0,63,144,0,0,0,176,0,0,0,52,0,0,0,48,0,0,96,160,0,0,
|
||||
47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,224,0,0,25,16,0,0,
|
||||
48,0,0,0,59,224,0,0,116,116,0,0,112,40,0,0,48,36,0,0,56,112,0,0,27,208,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,244,0,0,0,52,0,0,0,96,0,0,0,208,0,0,
|
||||
1,192,0,0,2,64,0,0,7,0,0,0,10,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,27,208,0,0,52,112,0,0,48,48,0,0,41,160,0,0,11,192,0,0,52,112,0,0,
|
||||
96,36,0,0,116,116,0,0,31,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
27,144,0,0,52,112,0,0,96,52,0,0,116,116,0,0,47,180,0,0,0,52,0,0,0,112,0,0,17,224,0,0,
|
||||
63,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
160,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,160,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,
|
||||
40,0,0,0,0,0,0,0,0,0,0,0,40,0,0,0,40,0,0,0,48,0,0,0,96,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0,2,208,0,0,45,0,0,0,176,0,0,0,45,0,0,0,
|
||||
2,208,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,0,0,0,0,127,244,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
100,0,0,0,26,64,0,0,0,164,0,0,1,180,0,0,26,64,0,0,100,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,47,128,0,0,32,160,0,0,0,96,0,0,0,160,0,0,11,128,0,0,
|
||||
9,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,1,190,64,0,14,65,160,0,36,0,48,0,97,250,36,0,147,73,36,0,150,9,48,0,
|
||||
150,28,96,0,147,235,128,0,160,0,0,0,57,0,0,0,11,253,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
2,192,0,0,6,208,0,0,10,160,0,0,13,112,0,0,28,52,0,0,40,40,0,0,63,252,0,0,112,13,0,0,
|
||||
160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,64,0,0,145,208,0,0,
|
||||
144,144,0,0,145,192,0,0,191,128,0,0,144,160,0,0,144,112,0,0,144,160,0,0,191,128,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,228,0,0,29,24,0,0,52,0,0,0,112,0,0,0,
|
||||
112,0,0,0,112,0,0,0,52,0,0,0,45,24,0,0,11,228,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,191,144,0,0,144,176,0,0,144,40,0,0,144,28,0,0,144,28,0,0,144,28,0,0,
|
||||
144,40,0,0,144,176,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
191,192,0,0,144,0,0,0,144,0,0,0,144,0,0,0,191,128,0,0,144,0,0,0,144,0,0,0,144,0,0,0,
|
||||
191,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,144,0,0,0,
|
||||
144,0,0,0,144,0,0,0,191,128,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,249,0,0,29,6,0,0,52,0,0,0,112,0,0,0,
|
||||
112,190,0,0,112,6,0,0,52,6,0,0,29,10,0,0,6,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,144,40,0,0,144,40,0,0,144,40,0,0,144,40,0,0,191,248,0,0,144,40,0,0,
|
||||
144,40,0,0,144,40,0,0,144,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,
|
||||
144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,13,0,0,0,
|
||||
13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,248,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,160,0,0,146,128,0,0,151,0,0,0,173,0,0,0,
|
||||
172,0,0,0,154,0,0,0,147,64,0,0,145,192,0,0,144,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,
|
||||
144,0,0,0,144,0,0,0,191,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
180,1,224,0,168,2,160,0,156,3,96,0,153,6,96,0,151,13,96,0,147,88,96,0,146,164,96,0,144,240,96,0,
|
||||
144,160,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,28,0,0,184,28,0,0,
|
||||
157,28,0,0,154,28,0,0,147,92,0,0,146,156,0,0,144,236,0,0,144,124,0,0,144,40,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,248,0,0,29,10,0,0,52,3,64,0,112,2,64,0,
|
||||
112,2,128,0,112,2,64,0,52,3,64,0,45,10,0,0,7,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,191,64,0,0,145,208,0,0,144,160,0,0,144,144,0,0,145,208,0,0,190,64,0,0,
|
||||
144,0,0,0,144,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
6,248,0,0,29,10,0,0,52,3,64,0,112,2,64,0,112,2,128,0,112,2,64,0,52,3,64,0,45,10,0,0,
|
||||
11,251,64,0,0,1,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,128,0,0,145,208,0,0,
|
||||
144,160,0,0,145,208,0,0,191,64,0,0,146,128,0,0,144,208,0,0,144,160,0,0,144,112,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,128,0,0,52,80,0,0,112,0,0,0,57,0,0,0,
|
||||
11,128,0,0,0,160,0,0,0,112,0,0,80,160,0,0,47,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,255,248,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,
|
||||
7,0,0,0,7,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,
|
||||
144,24,0,0,208,24,0,0,208,24,0,0,208,24,0,0,208,24,0,0,208,24,0,0,144,40,0,0,116,116,0,0,
|
||||
31,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,10,0,0,112,13,0,0,
|
||||
52,28,0,0,40,40,0,0,28,52,0,0,13,112,0,0,10,160,0,0,7,208,0,0,3,128,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,28,7,0,112,45,6,0,52,57,9,0,40,102,12,0,
|
||||
24,147,28,0,12,147,104,0,9,194,164,0,11,129,240,0,7,64,224,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,112,40,0,0,40,112,0,0,28,160,0,0,10,192,0,0,7,128,0,0,10,192,0,0,
|
||||
28,160,0,0,52,52,0,0,96,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
160,36,0,0,112,112,0,0,40,144,0,0,29,192,0,0,11,64,0,0,7,0,0,0,7,0,0,0,7,0,0,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,127,240,0,0,0,160,0,0,
|
||||
1,208,0,0,2,128,0,0,7,0,0,0,13,0,0,0,40,0,0,0,112,0,0,0,191,244,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,184,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,
|
||||
144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,144,0,0,0,184,0,0,0,0,0,0,0,
|
||||
0,0,0,0,144,0,0,0,96,0,0,0,48,0,0,0,36,0,0,0,24,0,0,0,12,0,0,0,9,0,0,0,
|
||||
7,0,0,0,3,64,0,0,2,128,0,0,1,192,0,0,0,208,0,0,0,0,0,0,0,0,0,0,124,0,0,0,
|
||||
12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,
|
||||
12,0,0,0,12,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,64,0,0,10,128,0,0,
|
||||
24,208,0,0,36,160,0,0,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,255,0,0,
|
||||
0,0,0,0,36,0,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,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,27,128,0,0,36,160,0,0,0,96,0,0,31,224,0,0,116,96,0,0,112,160,0,0,
|
||||
47,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,208,0,0,0,208,0,0,0,
|
||||
223,128,0,0,225,208,0,0,208,160,0,0,208,160,0,0,208,160,0,0,225,208,0,0,223,64,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,27,128,0,0,52,80,0,0,
|
||||
112,0,0,0,96,0,0,0,112,0,0,0,52,80,0,0,31,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,36,0,0,0,36,0,0,0,36,0,0,27,180,0,0,52,180,0,0,112,36,0,0,112,36,0,0,
|
||||
112,52,0,0,52,180,0,0,31,164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,11,144,0,0,52,112,0,0,112,52,0,0,127,244,0,0,112,0,0,0,52,0,0,0,
|
||||
27,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,64,0,0,40,0,0,0,36,0,0,0,
|
||||
191,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,240,0,0,52,208,0,0,
|
||||
112,144,0,0,52,208,0,0,63,128,0,0,96,0,0,0,63,208,0,0,96,112,0,0,160,112,0,0,47,144,0,0,
|
||||
0,0,0,0,192,0,0,0,208,0,0,0,208,0,0,0,223,64,0,0,225,192,0,0,208,208,0,0,208,144,0,0,
|
||||
208,144,0,0,208,144,0,0,192,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,
|
||||
52,0,0,0,0,0,0,0,48,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,52,0,0,0,
|
||||
48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,
|
||||
9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,13,0,0,0,
|
||||
12,0,0,0,120,0,0,0,0,0,0,0,192,0,0,0,208,0,0,0,208,0,0,0,210,128,0,0,218,0,0,0,
|
||||
232,0,0,0,232,0,0,0,218,0,0,0,215,64,0,0,193,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,192,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,
|
||||
208,0,0,0,208,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,223,95,64,0,225,225,192,0,208,208,192,0,208,208,208,0,208,208,208,0,208,208,208,0,
|
||||
192,192,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
223,64,0,0,225,192,0,0,208,208,0,0,208,144,0,0,208,144,0,0,208,144,0,0,192,144,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,208,0,0,56,116,0,0,
|
||||
112,40,0,0,96,24,0,0,112,40,0,0,52,116,0,0,27,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,128,0,0,225,208,0,0,208,160,0,0,208,160,0,0,
|
||||
208,160,0,0,225,208,0,0,239,64,0,0,208,0,0,0,208,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,27,164,0,0,52,180,0,0,112,36,0,0,112,36,0,0,112,52,0,0,52,180,0,0,
|
||||
31,164,0,0,0,36,0,0,0,36,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
222,0,0,0,224,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,208,0,0,0,192,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,47,128,0,0,112,0,0,0,
|
||||
52,0,0,0,30,64,0,0,2,128,0,0,1,128,0,0,126,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,36,0,0,0,36,0,0,0,191,64,0,0,36,0,0,0,36,0,0,0,36,0,0,0,
|
||||
36,0,0,0,40,0,0,0,31,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,192,144,0,0,192,144,0,0,192,144,0,0,192,144,0,0,208,144,0,0,162,208,0,0,
|
||||
126,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
160,48,0,0,112,96,0,0,48,144,0,0,36,192,0,0,25,128,0,0,15,64,0,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,160,160,160,0,112,240,144,0,
|
||||
48,176,192,0,37,165,128,0,26,90,64,0,14,14,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,144,0,0,53,192,0,0,31,64,0,0,15,0,0,0,
|
||||
26,64,0,0,53,192,0,0,160,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,160,48,0,0,112,96,0,0,52,144,0,0,40,192,0,0,29,128,0,0,15,64,0,0,
|
||||
11,0,0,0,6,0,0,0,9,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
127,128,0,0,2,64,0,0,7,0,0,0,13,0,0,0,24,0,0,0,48,0,0,0,127,192,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,12,0,0,0,28,0,0,0,24,0,0,0,24,0,0,0,
|
||||
112,0,0,0,40,0,0,0,24,0,0,0,28,0,0,0,28,0,0,0,12,0,0,0,11,0,0,0,0,0,0,0,
|
||||
0,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,
|
||||
96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,96,0,0,0,0,0,0,0,56,0,0,0,
|
||||
28,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,9,0,0,0,12,0,0,0,12,0,0,0,
|
||||
12,0,0,0,28,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,24,0,0,
|
||||
103,36,0,0,145,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,
|
||||
/*Bitmap Raw Data end ---*/
|
||||
}
|
98
fonts/calibri_14/L2/calibri_14_L2.rtf
Normal file
@ -0,0 +1,98 @@
|
||||
95 characters are converted
|
||||
|
||||
Character Index No.
|
||||
32
|
||||
! 33
|
||||
" 34
|
||||
# 35
|
||||
$ 36
|
||||
% 37
|
||||
& 38
|
||||
' 39
|
||||
( 40
|
||||
) 41
|
||||
* 42
|
||||
+ 43
|
||||
, 44
|
||||
- 45
|
||||
. 46
|
||||
/ 47
|
||||
0 48
|
||||
1 49
|
||||
2 50
|
||||
3 51
|
||||
4 52
|
||||
5 53
|
||||
6 54
|
||||
7 55
|
||||
8 56
|
||||
9 57
|
||||
: 58
|
||||
; 59
|
||||
< 60
|
||||
= 61
|
||||
> 62
|
||||
? 63
|
||||
@ 64
|
||||
A 65
|
||||
B 66
|
||||
C 67
|
||||
D 68
|
||||
E 69
|
||||
F 70
|
||||
G 71
|
||||
H 72
|
||||
I 73
|
||||
J 74
|
||||
K 75
|
||||
L 76
|
||||
M 77
|
||||
N 78
|
||||
O 79
|
||||
P 80
|
||||
Q 81
|
||||
R 82
|
||||
S 83
|
||||
T 84
|
||||
U 85
|
||||
V 86
|
||||
W 87
|
||||
X 88
|
||||
Y 89
|
||||
Z 90
|
||||
[ 91
|
||||
\ 92
|
||||
] 93
|
||||
^ 94
|
||||
_ 95
|
||||
` 96
|
||||
a 97
|
||||
b 98
|
||||
c 99
|
||||
d 100
|
||||
e 101
|
||||
f 102
|
||||
g 103
|
||||
h 104
|
||||
i 105
|
||||
j 106
|
||||
k 107
|
||||
l 108
|
||||
m 109
|
||||
n 110
|
||||
o 111
|
||||
p 112
|
||||
q 113
|
||||
r 114
|
||||
s 115
|
||||
t 116
|
||||
u 117
|
||||
v 118
|
||||
w 119
|
||||
x 120
|
||||
y 121
|
||||
z 122
|
||||
{ 123
|
||||
| 124
|
||||
} 125
|
||||
~ 126
|
28
fonts/calibri_14/L4/calibri_14_L4.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
This file is automatically generated
|
||||
calibri_14_L4
|
||||
C Source
|
||||
*/
|
||||
|
||||
#include "App_Common.h"
|
||||
|
||||
#define FONT_HANDLE (1)
|
||||
#define FONT_FILE_ADDRESS (RAM_G + 153600)
|
||||
#define FIRST_CHARACTER (32)
|
||||
|
||||
void Load_Font()
|
||||
{
|
||||
Gpu_CoCmd_Dlstart(phost);
|
||||
App_WrCoCmd_Buffer(phost, CLEAR(1, 1, 1));
|
||||
App_WrCoCmd_Buffer(phost, COLOR_RGB(255, 255, 255));
|
||||
Gpu_Hal_LoadImageToMemory(phost, "path\\to\\calibri_14_L4.raw", FONT_FILE_ADDRESS, LOAD);
|
||||
|
||||
Gpu_CoCmd_SetFont2(phost, FONT_HANDLE, FONT_FILE_ADDRESS, FIRST_CHARACTER);
|
||||
Gpu_CoCmd_Text(phost, 0, 0, FONT_HANDLE, 0, "AaBbCcDdEeFf");
|
||||
App_WrCoCmd_Buffer(phost, DISPLAY());
|
||||
Gpu_CoCmd_Swap(phost);
|
||||
App_Flush_Co_Buffer(phost);
|
||||
Gpu_Hal_WaitCmdfifo_empty(phost);
|
||||
}
|
||||
|
||||
/* end of file */
|
1
fonts/calibri_14/L4/calibri_14_L4.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "calibri_14_L4", "type": "legacyfont", "format": "L4", "size": 14, "base_line": 11, "caps_height": 9, "mid_line": 7}
|
BIN
fonts/calibri_14/L4/calibri_14_L4.raw
Normal file
317
fonts/calibri_14/L4/calibri_14_L4.rawh
Normal file
@ -0,0 +1,317 @@
|
||||
/*Command Line: fnt_cvt.exe -f legacy -C BT81X -i Q:/fonts/calibri.ttf -s 14 -d 153600 -c setfont2 -l 32 -a -o D:/Projects/Embedded/AirsoftTracker/fonts*/
|
||||
|
||||
/*95 characters have been converted */
|
||||
|
||||
/* 148 Metric Block Begin +++ */
|
||||
/*('file properties ', 'format ', 'L4', ' stride ', 7, ' width ', 14, 'height', 14)*/
|
||||
{
|
||||
/* Widths */
|
||||
0,0,0,0,0,0,0,0,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,5,6,7,7,10,10,3,4,4,7,7,4,4,4,6,7,7,7,7,7,7,7,7,7,7,4,4,7,7,7,6,13,8,8,8,9,7,6,9,9,4,4,7,6,12,9,9,7,10,8,6,7,9,8,13,7,7,7,4,6,4,7,8,4,7,7,6,7,7,5,7,7,3,4,7,3,11,7,7,7,7,5,5,5,7,7,10,6,7,6,4,6,5,7,0,
|
||||
/* Format */
|
||||
2,0,0,0,
|
||||
/* Stride */
|
||||
7,0,0,0,
|
||||
/* Max Width */
|
||||
14,0,0,0,
|
||||
/* Max Height */
|
||||
14,0,0,0,
|
||||
/* Raw Data Address in Decimal: <153748> */
|
||||
148,88,2,0,
|
||||
|
||||
/* 148 Metric Block End --- */
|
||||
|
||||
/*Bitmap Raw Data begin +++*/
|
||||
/*The expected raw bitmap size is 9310 Bytes */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,31,32,0,0,0,0,0,31,32,0,0,0,0,0,31,32,0,0,0,0,0,15,32,
|
||||
0,0,0,0,0,15,16,0,0,0,0,0,15,16,0,0,0,0,0,14,16,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,46,32,0,0,0,0,0,46,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,15,25,128,0,0,0,0,15,25,112,0,0,0,0,14,8,112,0,0,0,0,
|
||||
13,7,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,29,0,0,0,0,2,208,76,0,0,
|
||||
0,0,95,255,255,160,0,0,0,6,144,120,0,0,0,0,8,112,150,0,0,0,0,191,255,255,64,0,0,0,12,64,
|
||||
210,0,0,0,0,13,32,241,0,0,0,0,14,1,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,7,96,0,0,0,0,0,9,80,0,0,0,0,4,207,231,0,0,0,0,14,97,58,
|
||||
0,0,0,0,31,32,0,0,0,0,0,12,196,0,0,0,0,0,1,142,213,0,0,0,0,0,0,127,32,0,0,0,
|
||||
0,0,14,80,0,0,0,89,33,110,32,0,0,0,27,239,196,0,0,0,0,0,133,0,0,0,0,0,0,148,0,0,
|
||||
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,233,0,10,80,0,0,90,
|
||||
29,32,106,0,0,0,119,10,66,209,0,0,0,106,29,44,48,0,0,0,27,232,135,142,177,0,0,0,4,178,209,166,
|
||||
0,0,0,29,36,160,119,0,0,0,181,2,209,165,0,0,6,144,0,158,176,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,235,16,0,0,0,4,226,29,112,0,0,
|
||||
0,6,192,12,112,0,0,0,2,244,156,16,0,0,0,0,175,161,0,0,0,0,7,219,176,14,32,0,0,47,49,202,
|
||||
47,16,0,0,63,0,45,233,0,0,0,30,129,42,251,16,0,0,4,207,232,25,224,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,32,0,0,0,0,0,15,16,0,0,
|
||||
0,0,0,14,16,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,180,0,0,0,0,0,2,224,
|
||||
0,0,0,0,0,7,144,0,0,0,0,0,11,96,0,0,0,0,0,14,48,0,0,0,0,0,15,32,0,0,0,0,
|
||||
0,31,32,0,0,0,0,0,31,32,0,0,0,0,0,14,64,0,0,0,0,0,11,96,0,0,0,0,0,7,160,0,
|
||||
0,0,0,0,2,224,0,0,0,0,0,0,180,0,0,0,0,0,0,0,0,0,0,0,0,29,16,0,0,0,0,0,
|
||||
10,96,0,0,0,0,0,6,160,0,0,0,0,0,3,224,0,0,0,0,0,0,242,0,0,0,0,0,0,228,0,0,
|
||||
0,0,0,0,213,0,0,0,0,0,0,228,0,0,0,0,0,0,243,0,0,0,0,0,3,240,0,0,0,0,0,6,
|
||||
176,0,0,0,0,0,11,96,0,0,0,0,0,30,16,0,0,0,0,0,0,0,0,0,0,0,0,0,208,0,0,0,
|
||||
0,0,184,200,160,0,0,0,0,27,250,0,0,0,0,0,184,200,160,0,0,0,0,0,208,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,15,0,0,0,0,0,
|
||||
0,15,0,0,0,0,0,127,255,255,112,0,0,0,0,15,0,0,0,0,0,0,15,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,112,0,0,0,0,0,12,96,
|
||||
0,0,0,0,0,45,16,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,127,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198,0,0,0,0,
|
||||
0,0,214,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,211,0,0,0,0,0,4,208,0,0,0,0,0,9,128,0,0,0,0,0,30,32,0,0,0,
|
||||
0,0,92,0,0,0,0,0,0,182,0,0,0,0,0,1,225,0,0,0,0,0,7,160,0,0,0,0,0,12,80,0,
|
||||
0,0,0,0,62,0,0,0,0,0,0,137,0,0,0,0,0,0,211,0,0,0,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,207,213,0,0,0,0,13,113,95,32,0,0,0,78,0,12,96,
|
||||
0,0,0,107,0,10,128,0,0,0,123,0,9,144,0,0,0,107,0,10,128,0,0,0,94,0,12,96,0,0,0,30,
|
||||
113,110,16,0,0,0,4,223,196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,231,0,0,0,0,0,155,199,0,0,0,0,0,48,167,
|
||||
0,0,0,0,0,0,167,0,0,0,0,0,0,167,0,0,0,0,0,0,167,0,0,0,0,0,0,167,0,0,0,0,
|
||||
0,0,167,0,0,0,0,0,191,255,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,222,178,0,0,0,0,27,33,203,0,0,0,0,
|
||||
0,0,125,0,0,0,0,0,0,155,0,0,0,0,0,2,228,0,0,0,0,0,28,128,0,0,0,0,0,186,0,0,
|
||||
0,0,0,11,160,0,0,0,0,0,63,255,255,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,222,178,0,0,0,0,11,33,186,0,0,
|
||||
0,0,0,0,124,0,0,0,0,0,3,214,0,0,0,0,5,255,194,0,0,0,0,0,2,157,16,0,0,0,0,0,
|
||||
47,48,0,0,0,73,33,142,16,0,0,0,26,238,179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,246,0,0,0,0,0,45,199,
|
||||
0,0,0,0,0,167,183,0,0,0,0,3,208,183,0,0,0,0,12,64,183,0,0,0,0,106,0,183,0,0,0,0,
|
||||
175,255,255,144,0,0,0,0,0,183,0,0,0,0,0,0,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
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,255,250,0,0,0,0,13,
|
||||
48,0,0,0,0,0,13,48,0,0,0,0,0,13,254,179,0,0,0,0,1,1,158,16,0,0,0,0,0,31,48,0,
|
||||
0,0,0,0,31,32,0,0,0,72,17,172,0,0,0,0,27,238,162,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,252,16,0,0,
|
||||
0,7,179,3,0,0,0,0,14,32,0,0,0,0,0,47,174,232,0,0,0,0,79,81,62,64,0,0,0,78,0,10,
|
||||
128,0,0,0,47,32,11,96,0,0,0,13,145,94,32,0,0,0,3,207,212,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,255,96,
|
||||
0,0,0,0,0,30,48,0,0,0,0,0,123,0,0,0,0,0,0,213,0,0,0,0,0,5,208,0,0,0,0,0,
|
||||
12,112,0,0,0,0,0,63,16,0,0,0,0,0,170,0,0,0,0,0,1,243,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,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,206,
|
||||
214,0,0,0,0,14,96,95,16,0,0,0,31,32,31,32,0,0,0,9,196,184,0,0,0,0,1,206,210,0,0,0,
|
||||
0,29,112,126,32,0,0,0,108,0,11,112,0,0,0,78,48,62,80,0,0,0,7,223,215,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,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,206,195,0,0,0,0,46,65,125,0,0,0,0,108,0,14,48,0,0,0,78,48,62,80,0,0,0,8,238,190,80,
|
||||
0,0,0,0,0,14,64,0,0,0,0,0,79,16,0,0,0,19,3,216,0,0,0,0,29,253,112,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,153,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,144,0,0,0,0,0,
|
||||
9,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,160,0,0,0,0,0,9,144,0,0,
|
||||
0,0,0,13,32,0,0,0,0,0,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,64,0,0,0,0,41,213,0,0,0,0,24,231,0,0,0,
|
||||
0,0,142,32,0,0,0,0,0,24,214,0,0,0,0,0,0,41,212,0,0,0,0,0,0,59,64,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,255,
|
||||
64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,255,64,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,64,0,0,0,0,0,4,
|
||||
172,80,0,0,0,0,0,2,156,64,0,0,0,0,3,173,64,0,0,0,4,188,80,0,0,0,0,75,64,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,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,238,161,0,0,0,0,26,18,185,0,0,0,0,0,0,108,0,0,0,0,0,1,185,0,0,0,
|
||||
0,0,159,177,0,0,0,0,0,151,0,0,0,0,0,0,151,0,0,0,0,0,0,0,0,0,0,0,0,0,169,0,
|
||||
0,0,0,0,0,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,206,236,112,0,0,2,217,49,20,201,0,0,12,112,0,0,
|
||||
47,32,0,76,4,222,152,12,64,0,151,30,82,198,12,64,0,180,91,0,195,14,32,0,195,108,22,242,123,0,0,181,
|
||||
45,232,158,194,0,0,138,0,0,0,0,0,0,46,147,0,0,0,0,0,2,157,255,246,0,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,208,0,0,0,0,0,60,212,0,0,0,0,0,136,
|
||||
138,0,0,0,0,0,211,78,16,0,0,0,4,224,14,80,0,0,0,9,144,9,176,0,0,0,14,255,255,241,0,0,
|
||||
0,94,16,0,230,0,0,0,168,0,0,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,112,0,0,0,0,197,3,228,0,0,0,0,
|
||||
197,0,198,0,0,0,0,197,4,226,0,0,0,0,207,255,177,0,0,0,0,197,2,171,0,0,0,0,197,0,78,0,
|
||||
0,0,0,197,1,171,0,0,0,0,207,254,178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,252,80,0,0,0,7,228,19,176,0,
|
||||
0,0,30,96,0,0,0,0,0,79,16,0,0,0,0,0,95,0,0,0,0,0,0,79,16,0,0,0,0,0,31,80,
|
||||
0,0,0,0,0,8,212,19,177,0,0,0,0,141,252,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,163,0,0,0,0,197,2,158,
|
||||
32,0,0,0,197,0,11,160,0,0,0,197,0,6,224,0,0,0,197,0,4,240,0,0,0,197,0,6,208,0,0,0,
|
||||
197,0,11,144,0,0,0,197,2,158,32,0,0,0,207,254,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,240,0,0,0,0,197,
|
||||
0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,207,255,128,0,0,0,0,197,0,0,0,0,
|
||||
0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,207,255,241,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,255,192,0,0,0,
|
||||
0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,207,255,144,0,0,0,0,197,0,0,
|
||||
0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,238,179,
|
||||
0,0,0,5,230,17,90,0,0,0,29,96,0,0,0,0,0,79,0,0,0,0,0,0,93,0,159,251,0,0,0,79,
|
||||
0,0,108,0,0,0,30,96,0,108,0,0,0,7,230,17,140,0,0,0,0,92,239,197,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,0,
|
||||
9,128,0,0,0,197,0,9,128,0,0,0,197,0,9,128,0,0,0,197,0,9,128,0,0,0,207,255,255,128,0,0,
|
||||
0,197,0,9,128,0,0,0,197,0,9,128,0,0,0,197,0,9,128,0,0,0,197,0,9,128,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,
|
||||
0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,212,0,0,0,0,0,0,213,0,0,0,0,0,0,213,0,0,0,0,0,0,213,0,0,0,0,0,0,213,
|
||||
0,0,0,0,0,0,213,0,0,0,0,0,0,213,0,0,0,0,0,1,227,0,0,0,0,0,238,144,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,197,0,185,0,0,0,0,197,8,193,0,0,0,0,197,94,32,0,0,0,0,200,227,0,0,0,0,0,
|
||||
204,209,0,0,0,0,0,198,201,0,0,0,0,0,197,46,80,0,0,0,0,197,5,226,0,0,0,0,197,0,155,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,
|
||||
0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,197,0,0,0,0,0,0,207,255,
|
||||
176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,191,64,0,3,235,0,0,204,160,0,10,204,0,0,198,242,0,30,108,0,0,197,183,0,
|
||||
121,92,0,0,197,93,0,211,92,0,0,197,14,69,192,92,0,0,197,8,171,96,92,0,0,197,2,254,16,92,0,0,
|
||||
196,0,185,0,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,190,32,3,208,0,0,0,205,144,4,208,0,0,0,199,243,4,208,0,0,0,196,
|
||||
155,4,208,0,0,0,196,30,68,208,0,0,0,196,8,196,208,0,0,0,196,1,233,208,0,0,0,196,0,111,208,0,
|
||||
0,0,196,0,12,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,161,0,0,0,7,228,2,188,0,0,0,30,80,0,31,80,0,
|
||||
0,63,0,0,11,112,0,0,78,0,0,10,144,0,0,63,0,0,12,112,0,0,31,64,0,31,48,0,0,9,211,2,
|
||||
203,0,0,0,0,125,253,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,191,253,96,0,0,0,0,197,4,244,0,0,0,0,197,0,184,0,
|
||||
0,0,0,197,0,183,0,0,0,0,197,5,243,0,0,0,0,207,252,80,0,0,0,0,197,0,0,0,0,0,0,197,
|
||||
0,0,0,0,0,0,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,254,145,0,0,0,7,228,2,188,0,0,0,30,80,
|
||||
0,31,64,0,0,63,0,0,11,112,0,0,78,0,0,10,144,0,0,63,0,0,12,112,0,0,31,64,0,31,64,0,
|
||||
0,9,211,2,203,0,0,0,0,141,253,174,113,0,0,0,0,0,3,169,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,207,254,128,0,0,0,0,197,3,229,0,0,0,0,
|
||||
197,0,184,0,0,0,0,197,4,228,0,0,0,0,207,255,80,0,0,0,0,197,26,176,0,0,0,0,197,1,243,0,
|
||||
0,0,0,197,0,169,0,0,0,0,197,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,222,161,0,0,0,0,47,65,118,0,0,
|
||||
0,0,79,16,0,0,0,0,0,29,179,0,0,0,0,0,2,175,161,0,0,0,0,0,2,202,0,0,0,0,0,0,
|
||||
93,0,0,0,0,119,17,185,0,0,0,0,42,238,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,255,255,160,0,0,0,0,63,0,
|
||||
0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,
|
||||
0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,0,5,192,0,0,0,213,
|
||||
0,5,192,0,0,0,213,0,5,192,0,0,0,213,0,5,192,0,0,0,213,0,5,192,0,0,0,213,0,5,192,0,
|
||||
0,0,183,0,8,160,0,0,0,110,65,78,80,0,0,0,7,222,198,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,0,153,0,0,
|
||||
0,94,0,0,228,0,0,0,30,64,4,224,0,0,0,10,144,9,144,0,0,0,4,224,13,48,0,0,0,0,228,77,
|
||||
0,0,0,0,0,153,136,0,0,0,0,0,78,211,0,0,0,0,0,13,192,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,0,7,208,
|
||||
0,62,0,78,0,12,243,0,122,0,14,64,30,183,0,182,0,10,128,75,107,0,242,0,6,192,135,47,20,208,0,2,
|
||||
241,196,13,72,128,0,0,198,224,9,140,64,0,0,141,176,5,222,0,0,0,79,112,1,234,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,16,
|
||||
9,160,0,0,0,12,128,62,32,0,0,0,4,226,184,0,0,0,0,0,172,225,0,0,0,0,0,79,144,0,0,0,
|
||||
0,0,186,226,0,0,0,0,5,208,170,0,0,0,0,29,80,47,48,0,0,0,124,0,9,176,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
153,0,12,112,0,0,0,63,32,78,16,0,0,0,10,144,183,0,0,0,0,3,228,225,0,0,0,0,0,174,112,0,
|
||||
0,0,0,0,79,16,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,63,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,127,255,255,16,0,0,0,0,0,139,0,0,0,0,0,3,227,0,0,0,0,0,12,128,0,0,0,0,0,109,
|
||||
0,0,0,0,0,2,228,0,0,0,0,0,10,160,0,0,0,0,0,78,16,0,0,0,0,0,143,255,255,48,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,175,160,0,
|
||||
0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,0,0,0,
|
||||
166,0,0,0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,0,0,0,166,0,0,0,
|
||||
0,0,0,166,0,0,0,0,0,0,175,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,
|
||||
0,0,0,0,0,0,122,0,0,0,0,0,0,46,16,0,0,0,0,0,11,96,0,0,0,0,0,6,192,0,0,0,
|
||||
0,0,1,226,0,0,0,0,0,0,167,0,0,0,0,0,0,77,0,0,0,0,0,0,14,48,0,0,0,0,0,9,
|
||||
144,0,0,0,0,0,3,224,0,0,0,0,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,95,224,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,
|
||||
0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,
|
||||
1,240,0,0,0,0,0,1,240,0,0,0,0,0,95,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,111,64,0,0,0,0,0,201,176,0,0,0,0,4,193,227,0,0,0,0,11,
|
||||
96,138,0,0,0,0,46,16,46,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,255,255,254,0,0,0,
|
||||
0,0,0,0,0,0,0,12,64,0,0,0,0,0,2,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,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,206,
|
||||
177,0,0,0,0,11,49,184,0,0,0,0,0,0,122,0,0,0,0,6,223,250,0,0,0,0,62,48,122,0,0,0,
|
||||
0,78,34,202,0,0,0,0,10,237,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,226,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,
|
||||
231,222,128,0,0,0,0,236,35,229,0,0,0,0,227,0,153,0,0,0,0,227,0,138,0,0,0,0,227,0,153,0,
|
||||
0,0,0,236,35,228,0,0,0,0,230,238,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,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,206,177,0,0,0,0,30,113,102,0,0,0,0,78,0,0,0,0,0,0,108,0,0,0,0,0,0,78,0,
|
||||
0,0,0,0,0,30,97,102,0,0,0,0,4,223,178,0,0,0,0,0,0,0,0,0,0,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,64,0,0,0,0,0,12,80,0,0,0,0,0,12,
|
||||
80,0,0,0,3,206,141,80,0,0,0,13,113,143,80,0,0,0,62,0,12,80,0,0,0,93,0,12,80,0,0,0,
|
||||
78,0,13,80,0,0,0,14,97,143,80,0,0,0,4,222,138,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,190,195,0,0,0,0,13,113,109,0,0,0,0,62,0,13,48,0,0,0,95,255,255,48,0,
|
||||
0,0,77,0,0,0,0,0,0,29,113,0,0,0,0,0,3,206,255,0,0,0,0,0,0,0,0,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,206,80,0,0,0,0,8,161,16,0,0,0,
|
||||
0,10,112,0,0,0,0,0,191,255,16,0,0,0,0,10,112,0,0,0,0,0,10,112,0,0,0,0,0,10,112,0,
|
||||
0,0,0,0,10,112,0,0,0,0,0,10,112,0,0,0,0,0,10,112,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,223,255,32,0,0,0,30,50,212,0,0,0,0,61,0,151,0,0,0,0,30,
|
||||
50,212,0,0,0,0,45,222,128,0,0,0,0,91,0,0,0,0,0,0,30,254,214,0,0,0,0,123,1,95,16,0,
|
||||
0,0,154,17,110,0,0,0,0,43,238,195,0,0,0,0,0,0,0,0,0,0,0,226,0,0,0,0,0,0,227,0,
|
||||
0,0,0,0,0,227,0,0,0,0,0,0,231,222,112,0,0,0,0,236,36,242,0,0,0,0,227,0,213,0,0,0,
|
||||
0,227,0,197,0,0,0,0,227,0,197,0,0,0,0,227,0,197,0,0,0,0,226,0,181,0,0,0,0,0,0,0,
|
||||
0,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,
|
||||
14,48,0,0,0,0,0,0,0,0,0,0,0,0,14,32,0,0,0,0,0,14,48,0,0,0,0,0,14,48,0,0,
|
||||
0,0,0,14,48,0,0,0,0,0,14,48,0,0,0,0,0,14,48,0,0,0,0,0,14,32,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,
|
||||
0,0,0,213,0,0,0,0,0,0,0,0,0,0,0,0,0,196,0,0,0,0,0,0,196,0,0,0,0,0,0,196,
|
||||
0,0,0,0,0,0,196,0,0,0,0,0,0,196,0,0,0,0,0,0,196,0,0,0,0,0,0,196,0,0,0,0,
|
||||
0,0,212,0,0,0,0,0,1,226,0,0,0,0,0,78,144,0,0,0,0,0,0,0,0,0,0,0,0,226,0,0,
|
||||
0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,227,10,160,0,0,0,0,227,156,16,0,0,0,0,
|
||||
233,193,0,0,0,0,0,235,192,0,0,0,0,0,227,200,0,0,0,0,0,227,62,64,0,0,0,0,226,6,208,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,226,
|
||||
0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,
|
||||
0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,226,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,222,101,222,80,0,0,236,38,252,
|
||||
38,224,0,0,227,0,243,0,242,0,0,227,0,227,0,243,0,0,227,0,227,0,243,0,0,227,0,227,0,243,0,0,
|
||||
226,0,226,0,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,222,112,0,0,0,0,236,
|
||||
36,242,0,0,0,0,227,0,213,0,0,0,0,227,0,197,0,0,0,0,227,0,197,0,0,0,0,227,0,197,0,0,
|
||||
0,0,226,0,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,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,191,215,0,0,0,
|
||||
0,13,129,78,80,0,0,0,78,0,8,160,0,0,0,92,0,7,176,0,0,0,78,0,9,144,0,0,0,30,113,78,
|
||||
48,0,0,0,3,206,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,228,222,128,0,
|
||||
0,0,0,236,35,229,0,0,0,0,227,0,153,0,0,0,0,227,0,138,0,0,0,0,227,0,153,0,0,0,0,236,
|
||||
35,228,0,0,0,0,232,238,112,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,0,0,0,226,0,0,0,0,
|
||||
0,0,0,0,0,0,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,206,
|
||||
154,64,0,0,0,13,113,143,80,0,0,0,62,0,12,80,0,0,0,93,0,12,80,0,0,0,78,0,13,80,0,0,
|
||||
0,14,97,143,80,0,0,0,4,222,140,80,0,0,0,0,0,12,80,0,0,0,0,0,12,80,0,0,0,0,0,12,
|
||||
64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
230,233,0,0,0,0,0,236,17,0,0,0,0,0,228,0,0,0,0,0,0,227,0,0,0,0,0,0,227,0,0,0,
|
||||
0,0,0,227,0,0,0,0,0,0,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,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,239,128,0,0,0,0,61,16,0,0,0,0,0,46,64,0,0,0,0,0,5,220,48,0,0,0,0,0,8,
|
||||
192,0,0,0,0,0,7,192,0,0,0,0,111,252,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,96,0,0,0,0,0,10,112,0,
|
||||
0,0,0,0,191,255,48,0,0,0,0,10,112,0,0,0,0,0,10,112,0,0,0,0,0,10,112,0,0,0,0,0,
|
||||
10,112,0,0,0,0,0,9,145,16,0,0,0,0,3,222,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,226,0,196,0,0,0,0,242,0,197,0,0,0,0,242,0,197,0,0,0,0,242,0,197,0,0,
|
||||
0,0,227,0,197,0,0,0,0,200,24,245,0,0,0,0,61,232,180,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,168,0,46,0,0,0,0,109,0,123,0,0,0,0,31,32,197,0,0,0,0,11,113,225,
|
||||
0,0,0,0,5,198,160,0,0,0,0,1,253,80,0,0,0,0,0,174,16,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,137,0,153,0,136,0,0,77,0,221,0,197,0,0,31,34,206,33,225,0,0,11,
|
||||
101,154,101,176,0,0,6,169,85,169,96,0,0,2,236,17,236,32,0,0,0,204,0,204,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,108,0,167,0,0,0,0,13,100,209,0,0,0,0,4,237,80,0,0,0,
|
||||
0,0,222,0,0,0,0,0,6,204,112,0,0,0,0,30,68,225,0,0,0,0,138,0,169,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,0,46,0,0,0,0,93,0,123,0,0,0,0,30,48,198,0,
|
||||
0,0,0,10,130,241,0,0,0,0,5,214,160,0,0,0,0,0,237,80,0,0,0,0,0,158,16,0,0,0,0,0,
|
||||
122,0,0,0,0,0,0,198,0,0,0,0,0,2,226,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,79,255,176,0,0,0,0,0,11,112,0,0,0,0,0,93,
|
||||
0,0,0,0,0,0,213,0,0,0,0,0,7,176,0,0,0,0,0,46,32,0,0,0,0,0,95,255,224,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,190,0,
|
||||
0,0,0,0,2,225,0,0,0,0,0,3,208,0,0,0,0,0,3,192,0,0,0,0,0,7,160,0,0,0,0,0,
|
||||
110,32,0,0,0,0,0,8,144,0,0,0,0,0,3,192,0,0,0,0,0,3,208,0,0,0,0,0,3,208,0,0,
|
||||
0,0,0,2,224,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,
|
||||
0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,
|
||||
0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,91,0,
|
||||
0,0,0,0,0,91,0,0,0,0,0,0,91,0,0,0,0,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,47,128,0,0,0,0,0,3,224,0,0,0,0,0,1,240,0,0,0,0,0,1,240,0,0,0,0,0,0,227,0,
|
||||
0,0,0,0,0,95,32,0,0,0,0,0,198,0,0,0,0,0,0,240,0,0,0,0,0,1,240,0,0,0,0,0,
|
||||
1,240,0,0,0,0,0,3,224,0,0,0,0,0,46,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,229,5,128,0,0,0,105,61,41,96,0,0,0,133,
|
||||
5,235,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
/*Bitmap Raw Data end ---*/
|
||||
}
|
98
fonts/calibri_14/L4/calibri_14_L4.rtf
Normal file
@ -0,0 +1,98 @@
|
||||
95 characters are converted
|
||||
|
||||
Character Index No.
|
||||
32
|
||||
! 33
|
||||
" 34
|
||||
# 35
|
||||
$ 36
|
||||
% 37
|
||||
& 38
|
||||
' 39
|
||||
( 40
|
||||
) 41
|
||||
* 42
|
||||
+ 43
|
||||
, 44
|
||||
- 45
|
||||
. 46
|
||||
/ 47
|
||||
0 48
|
||||
1 49
|
||||
2 50
|
||||
3 51
|
||||
4 52
|
||||
5 53
|
||||
6 54
|
||||
7 55
|
||||
8 56
|
||||
9 57
|
||||
: 58
|
||||
; 59
|
||||
< 60
|
||||
= 61
|
||||
> 62
|
||||
? 63
|
||||
@ 64
|
||||
A 65
|
||||
B 66
|
||||
C 67
|
||||
D 68
|
||||
E 69
|
||||
F 70
|
||||
G 71
|
||||
H 72
|
||||
I 73
|
||||
J 74
|
||||
K 75
|
||||
L 76
|
||||
M 77
|
||||
N 78
|
||||
O 79
|
||||
P 80
|
||||
Q 81
|
||||
R 82
|
||||
S 83
|
||||
T 84
|
||||
U 85
|
||||
V 86
|
||||
W 87
|
||||
X 88
|
||||
Y 89
|
||||
Z 90
|
||||
[ 91
|
||||
\ 92
|
||||
] 93
|
||||
^ 94
|
||||
_ 95
|
||||
` 96
|
||||
a 97
|
||||
b 98
|
||||
c 99
|
||||
d 100
|
||||
e 101
|
||||
f 102
|
||||
g 103
|
||||
h 104
|
||||
i 105
|
||||
j 106
|
||||
k 107
|
||||
l 108
|
||||
m 109
|
||||
n 110
|
||||
o 111
|
||||
p 112
|
||||
q 113
|
||||
r 114
|
||||
s 115
|
||||
t 116
|
||||
u 117
|
||||
v 118
|
||||
w 119
|
||||
x 120
|
||||
y 121
|
||||
z 122
|
||||
{ 123
|
||||
| 124
|
||||
} 125
|
||||
~ 126
|
28
fonts/calibri_14/L8/calibri_14_L8.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
This file is automatically generated
|
||||
calibri_14_L8
|
||||
C Source
|
||||
*/
|
||||
|
||||
#include "App_Common.h"
|
||||
|
||||
#define FONT_HANDLE (1)
|
||||
#define FONT_FILE_ADDRESS (RAM_G + 153600)
|
||||
#define FIRST_CHARACTER (32)
|
||||
|
||||
void Load_Font()
|
||||
{
|
||||
Gpu_CoCmd_Dlstart(phost);
|
||||
App_WrCoCmd_Buffer(phost, CLEAR(1, 1, 1));
|
||||
App_WrCoCmd_Buffer(phost, COLOR_RGB(255, 255, 255));
|
||||
Gpu_Hal_LoadImageToMemory(phost, "path\\to\\calibri_14_L8.raw", FONT_FILE_ADDRESS, LOAD);
|
||||
|
||||
Gpu_CoCmd_SetFont2(phost, FONT_HANDLE, FONT_FILE_ADDRESS, FIRST_CHARACTER);
|
||||
Gpu_CoCmd_Text(phost, 0, 0, FONT_HANDLE, 0, "AaBbCcDdEeFf");
|
||||
App_WrCoCmd_Buffer(phost, DISPLAY());
|
||||
Gpu_CoCmd_Swap(phost);
|
||||
App_Flush_Co_Buffer(phost);
|
||||
Gpu_Hal_WaitCmdfifo_empty(phost);
|
||||
}
|
||||
|
||||
/* end of file */
|
1
fonts/calibri_14/L8/calibri_14_L8.json
Normal file
@ -0,0 +1 @@
|
||||
{"name": "calibri_14_L8", "type": "legacyfont", "format": "L8", "size": 14, "base_line": 11, "caps_height": 9, "mid_line": 7}
|
BIN
fonts/calibri_14/L8/calibri_14_L8.raw
Normal file
608
fonts/calibri_14/L8/calibri_14_L8.rawh
Normal file
@ -0,0 +1,608 @@
|
||||
/*Command Line: fnt_cvt.exe -f legacy -C BT81X -i Q:/fonts/calibri.ttf -s 14 -d 153600 -c setfont2 -l 32 -a -o D:/Projects/Embedded/AirsoftTracker/fonts*/
|
||||
|
||||
/*95 characters have been converted */
|
||||
|
||||
/* 148 Metric Block Begin +++ */
|
||||
/*('file properties ', 'format ', 'L8', ' stride ', 14, ' width ', 14, 'height', 14)*/
|
||||
{
|
||||
/* Widths */
|
||||
0,0,0,0,0,0,0,0,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,5,6,7,7,10,10,3,4,4,7,7,4,4,4,6,7,7,7,7,7,7,7,7,7,7,4,4,7,7,7,6,13,8,8,8,9,7,6,9,9,4,4,7,6,12,9,9,7,10,8,6,7,9,8,13,7,7,7,4,6,4,7,8,4,7,7,6,7,7,5,7,7,3,4,7,3,11,7,7,7,7,5,5,5,7,7,10,6,7,6,4,6,5,7,0,
|
||||
/* Format */
|
||||
3,0,0,0,
|
||||
/* Stride */
|
||||
14,0,0,0,
|
||||
/* Max Width */
|
||||
14,0,0,0,
|
||||
/* Max Height */
|
||||
14,0,0,0,
|
||||
/* Raw Data Address in Decimal: <153748> */
|
||||
148,88,2,0,
|
||||
|
||||
/* 148 Metric Block End --- */
|
||||
|
||||
/*Bitmap Raw Data begin +++*/
|
||||
/*The expected raw bitmap size is 18620 Bytes */
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,248,32,0,0,0,0,0,0,0,0,0,0,0,
|
||||
15,255,34,0,0,0,0,0,0,0,0,0,0,0,11,255,30,0,0,0,0,0,0,0,0,0,0,0,7,255,26,0,
|
||||
0,0,0,0,0,0,0,0,0,0,2,255,21,0,0,0,0,0,0,0,0,0,0,0,0,254,17,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,242,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,29,243,42,0,0,0,0,0,0,0,0,0,0,0,29,243,42,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,247,23,150,130,0,0,0,0,0,
|
||||
0,0,0,0,0,253,17,146,125,0,0,0,0,0,0,0,0,0,0,243,5,135,113,0,0,0,0,0,0,0,0,0,
|
||||
0,216,0,118,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,242,6,23,228,0,0,0,0,0,0,0,0,0,36,223,0,61,198,0,0,0,0,
|
||||
0,0,0,0,85,255,255,255,255,255,170,0,0,0,0,0,0,0,0,103,157,0,124,133,0,0,0,0,0,0,0,0,
|
||||
0,138,121,0,161,97,0,0,0,0,0,0,0,0,179,255,255,255,255,255,73,0,0,0,0,0,0,0,0,202,61,0,
|
||||
222,38,0,0,0,0,0,0,0,0,0,228,34,0,247,12,0,0,0,0,0,0,0,0,0,243,8,14,236,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,104,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,146,87,0,0,0,0,0,0,0,0,0,0,62,204,251,234,114,0,0,0,0,0,0,0,0,5,237,100,10,57,171,
|
||||
0,0,0,0,0,0,0,0,23,255,31,0,0,0,0,0,0,0,0,0,0,0,0,203,203,68,1,0,0,0,0,0,
|
||||
0,0,0,0,0,16,143,239,221,80,0,0,0,0,0,0,0,0,0,0,0,8,124,251,38,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,232,82,0,0,0,0,0,0,0,79,149,31,10,94,243,28,0,0,0,0,0,0,0,25,179,246,247,
|
||||
198,65,0,0,0,0,0,0,0,0,0,0,144,92,0,0,0,0,0,0,0,0,0,0,0,0,161,66,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,176,240,148,0,0,0,162,91,0,0,0,0,0,88,172,
|
||||
17,219,40,0,96,172,0,0,0,0,0,0,121,120,0,173,68,37,213,16,0,0,0,0,0,0,97,171,14,215,41,201,
|
||||
59,0,0,0,0,0,0,0,13,191,241,138,141,126,135,240,185,12,0,0,0,0,0,0,0,71,192,36,218,18,172,96,
|
||||
0,0,0,0,0,0,23,214,28,65,176,0,117,124,0,0,0,0,0,1,183,80,0,41,219,15,167,90,0,0,0,0,
|
||||
0,106,147,0,0,0,154,242,179,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,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,129,228,243,179,14,0,0,0,0,0,0,0,0,69,237,40,24,214,115,0,0,0,0,0,
|
||||
0,0,0,103,207,0,0,196,114,0,0,0,0,0,0,0,0,32,249,68,146,211,14,0,0,0,0,0,0,0,0,0,
|
||||
165,254,164,14,0,0,0,0,0,0,0,0,0,119,221,194,189,5,0,233,38,0,0,0,0,0,26,252,43,17,212,168,
|
||||
31,249,9,0,0,0,0,0,59,253,5,0,26,217,233,156,0,0,0,0,0,0,16,243,134,13,31,172,249,192,24,0,
|
||||
0,0,0,0,0,66,206,249,230,143,22,150,231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,249,28,0,0,0,0,0,0,0,0,0,0,0,0,253,21,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,243,9,0,0,0,0,0,0,0,0,0,0,0,0,219,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,70,0,0,0,0,0,0,0,0,0,0,0,33,232,4,
|
||||
0,0,0,0,0,0,0,0,0,0,0,117,161,0,0,0,0,0,0,0,0,0,0,0,0,187,99,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,235,59,0,0,0,0,0,0,0,0,0,0,0,7,255,36,0,0,0,0,0,0,0,0,0,
|
||||
0,0,20,255,27,0,0,0,0,0,0,0,0,0,0,0,10,255,37,0,0,0,0,0,0,0,0,0,0,0,0,240,
|
||||
62,0,0,0,0,0,0,0,0,0,0,0,0,195,104,0,0,0,0,0,0,0,0,0,0,0,0,126,166,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,40,236,5,0,0,0,0,0,0,0,0,0,0,0,0,186,73,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,229,9,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,178,95,0,0,0,0,0,0,0,0,0,0,0,0,103,178,0,0,0,0,0,0,0,0,0,0,0,0,43,244,2,
|
||||
0,0,0,0,0,0,0,0,0,0,0,5,251,40,0,0,0,0,0,0,0,0,0,0,0,0,233,68,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,223,80,0,0,0,0,0,0,0,0,0,0,0,0,234,69,0,0,0,0,0,0,0,0,
|
||||
0,0,0,6,252,43,0,0,0,0,0,0,0,0,0,0,0,44,247,4,0,0,0,0,0,0,0,0,0,0,0,105,
|
||||
183,0,0,0,0,0,0,0,0,0,0,0,0,179,99,0,0,0,0,0,0,0,0,0,0,0,15,230,10,0,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,227,0,5,0,0,0,0,0,
|
||||
0,0,0,0,185,128,199,142,166,0,0,0,0,0,0,0,0,0,11,179,255,167,7,0,0,0,0,0,0,0,0,0,
|
||||
185,129,199,143,166,0,0,0,0,0,0,0,0,0,5,3,229,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,243,0,0,0,0,0,0,0,0,0,0,0,0,4,255,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,4,255,0,0,0,0,0,0,0,0,0,0,120,255,255,255,255,255,112,0,0,0,0,0,0,0,0,0,4,255,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,4,255,0,0,0,0,0,0,0,0,0,0,0,0,3,245,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,120,0,0,0,0,0,0,0,0,0,0,0,0,207,106,0,
|
||||
0,0,0,0,0,0,0,0,0,0,40,226,11,0,0,0,0,0,0,0,0,0,0,0,143,87,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,255,255,195,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212,97,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,216,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,221,48,0,0,0,0,0,0,0,0,0,0,0,66,221,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,159,128,0,0,0,0,0,0,0,0,0,0,0,10,241,36,0,0,0,0,0,0,0,
|
||||
0,0,0,0,90,198,0,0,0,0,0,0,0,0,0,0,0,0,183,105,0,0,0,0,0,0,0,0,0,0,0,23,
|
||||
246,19,0,0,0,0,0,0,0,0,0,0,0,114,175,0,0,0,0,0,0,0,0,0,0,0,0,207,82,0,0,0,
|
||||
0,0,0,0,0,0,0,0,44,238,7,0,0,0,0,0,0,0,0,0,0,0,138,152,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,218,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,201,248,
|
||||
223,89,0,0,0,0,0,0,0,0,2,225,122,9,88,250,33,0,0,0,0,0,0,0,66,233,1,0,0,207,106,0,
|
||||
0,0,0,0,0,0,106,191,0,0,0,165,134,0,0,0,0,0,0,0,122,181,0,0,0,154,150,0,0,0,0,0,
|
||||
0,0,110,190,0,0,0,163,133,0,0,0,0,0,0,0,80,233,1,0,0,205,95,0,0,0,0,0,0,0,10,242,
|
||||
114,12,95,241,13,0,0,0,0,0,0,0,0,72,217,249,210,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,83,230,119,0,0,0,0,0,0,0,0,0,0,152,185,203,124,0,0,0,0,0,0,0,0,0,0,44,0,176,124,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,176,124,0,0,0,0,0,0,0,0,0,0,0,0,176,124,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,176,124,0,0,0,0,0,0,0,0,0,0,0,0,176,124,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,176,124,0,0,0,0,0,0,0,0,0,0,187,255,255,255,255,73,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,110,219,244,191,38,0,0,0,0,0,0,0,0,10,187,41,23,199,186,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,112,223,0,0,0,0,0,0,0,0,0,0,0,0,152,181,0,0,0,0,0,0,0,0,0,0,0,31,
|
||||
245,64,0,0,0,0,0,0,0,0,0,0,9,202,141,0,0,0,0,0,0,0,0,0,0,7,182,169,2,0,0,0,
|
||||
0,0,0,0,0,0,3,179,173,4,0,0,0,0,0,0,0,0,0,0,47,255,255,255,255,255,67,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,109,221,246,195,38,0,0,0,0,0,0,0,0,8,187,42,20,192,177,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,122,203,0,0,0,0,0,0,0,0,0,0,2,45,219,110,0,0,0,0,0,0,0,0,
|
||||
0,91,255,255,196,30,0,0,0,0,0,0,0,0,0,0,1,28,159,229,12,0,0,0,0,0,0,0,0,0,0,0,
|
||||
31,255,50,0,0,0,0,0,0,0,68,149,31,15,138,235,10,0,0,0,0,0,0,0,16,165,238,243,195,55,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,117,252,102,0,0,0,0,0,0,0,0,0,0,26,227,201,112,
|
||||
0,0,0,0,0,0,0,0,0,0,164,111,180,112,0,0,0,0,0,0,0,0,0,57,213,4,180,112,0,0,0,0,
|
||||
0,0,0,0,1,203,71,0,180,112,0,0,0,0,0,0,0,0,96,178,0,0,180,112,0,0,0,0,0,0,0,0,
|
||||
164,255,255,255,255,255,158,0,0,0,0,0,0,0,0,0,0,0,180,112,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
175,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,255,255,255,171,0,0,0,0,0,0,0,0,0,220,
|
||||
44,0,0,0,0,0,0,0,0,0,0,0,0,220,44,0,0,0,0,0,0,0,0,0,0,0,0,216,251,244,195,55,
|
||||
0,0,0,0,0,0,0,0,0,11,5,25,153,234,11,0,0,0,0,0,0,0,0,0,0,0,11,254,57,0,0,0,
|
||||
0,0,0,0,0,0,0,0,18,255,38,0,0,0,0,0,0,0,72,134,21,24,164,201,1,0,0,0,0,0,0,0,
|
||||
25,179,243,234,166,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,116,220,249,210,13,0,0,0,0,0,
|
||||
0,0,0,118,193,43,7,50,4,0,0,0,0,0,0,0,3,235,30,0,0,0,0,0,0,0,0,0,0,0,41,248,
|
||||
178,244,230,136,1,0,0,0,0,0,0,0,63,248,81,9,52,240,76,0,0,0,0,0,0,0,62,245,0,0,0,175,
|
||||
128,0,0,0,0,0,0,0,33,255,29,0,0,190,110,0,0,0,0,0,0,0,0,215,152,14,80,245,29,0,0,0,
|
||||
0,0,0,0,0,49,205,249,216,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,255,255,255,255,255,104,0,
|
||||
0,0,0,0,0,0,0,0,0,0,18,245,48,0,0,0,0,0,0,0,0,0,0,0,121,195,0,0,0,0,0,0,
|
||||
0,0,0,0,0,5,228,86,0,0,0,0,0,0,0,0,0,0,0,90,228,4,0,0,0,0,0,0,0,0,0,0,
|
||||
0,202,124,0,0,0,0,0,0,0,0,0,0,0,59,249,22,0,0,0,0,0,0,0,0,0,0,0,172,162,0,0,
|
||||
0,0,0,0,0,0,0,0,0,23,248,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,207,246,
|
||||
223,98,0,0,0,0,0,0,0,0,5,241,94,8,78,253,24,0,0,0,0,0,0,0,17,255,31,0,14,252,29,0,
|
||||
0,0,0,0,0,0,0,153,207,73,187,135,0,0,0,0,0,0,0,0,0,14,205,246,216,36,0,0,0,0,0,0,
|
||||
0,0,14,214,114,7,116,239,36,0,0,0,0,0,0,0,96,207,0,0,0,190,117,0,0,0,0,0,0,0,72,243,
|
||||
59,6,49,234,77,0,0,0,0,0,0,0,0,122,225,248,221,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,84,210,245,207,55,0,0,0,0,0,0,0,0,41,246,72,12,116,228,4,0,0,0,0,0,0,0,100,201,0,0,
|
||||
2,238,57,0,0,0,0,0,0,0,73,242,51,8,50,231,90,0,0,0,0,0,0,0,1,140,232,243,193,235,93,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,237,67,0,0,0,0,0,0,0,0,0,0,0,63,247,14,0,0,0,0,0,
|
||||
0,0,13,47,5,47,223,139,0,0,0,0,0,0,0,0,24,216,250,221,126,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,
|
||||
157,156,0,0,0,0,0,0,0,0,0,0,0,0,158,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,156,155,0,0,0,0,0,0,0,0,0,0,0,0,158,157,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,157,156,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,158,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,132,166,0,0,0,0,0,0,0,0,0,0,0,0,155,150,0,0,0,0,0,
|
||||
0,0,0,0,0,0,7,229,38,0,0,0,0,0,0,0,0,0,0,0,91,135,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46,183,
|
||||
61,0,0,0,0,0,0,0,0,0,30,161,217,80,0,0,0,0,0,0,0,0,16,139,233,117,6,0,0,0,0,0,
|
||||
0,0,0,0,128,237,39,0,0,0,0,0,0,0,0,0,0,0,16,138,228,109,4,0,0,0,0,0,0,0,0,0,
|
||||
0,0,30,161,213,74,0,0,0,0,0,0,0,0,0,0,0,0,47,184,62,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,255,255,255,255,255,
|
||||
65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,75,255,255,255,255,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,71,192,72,0,0,0,0,0,0,0,0,0,0,0,0,63,
|
||||
178,205,88,3,0,0,0,0,0,0,0,0,0,0,0,39,153,212,64,0,0,0,0,0,0,0,0,0,0,48,166,219,
|
||||
66,0,0,0,0,0,0,0,0,68,186,208,91,3,0,0,0,0,0,0,0,0,72,193,73,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,0,0,0,0,0,0,0,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,140,233,236,166,18,0,0,0,0,0,0,0,0,18,175,25,27,191,152,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,99,204,0,0,0,0,0,0,0,0,0,0,0,20,184,161,0,0,0,0,0,0,
|
||||
0,0,0,0,146,249,183,24,0,0,0,0,0,0,0,0,0,0,155,124,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
146,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,149,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,166,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,124,
|
||||
208,241,246,208,113,3,0,0,0,0,0,30,217,158,53,13,12,67,207,159,0,0,0,0,0,198,114,0,0,0,0,0,
|
||||
31,247,31,0,0,0,68,207,0,71,220,238,146,136,0,204,76,0,0,0,147,118,13,237,79,26,212,104,0,200,71,0,
|
||||
0,0,195,69,79,193,0,0,209,49,3,240,28,0,0,0,211,56,98,200,14,99,252,29,115,190,0,0,0,0,185,82,
|
||||
30,222,242,137,147,246,196,32,0,0,0,0,138,175,0,0,0,0,0,0,0,0,0,0,0,0,26,233,152,43,7,0,
|
||||
0,0,0,0,0,0,0,0,0,31,157,226,250,255,255,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,208,227,4,0,0,0,0,0,0,0,0,0,0,50,212,217,73,0,0,0,0,0,0,0,0,0,0,141,135,
|
||||
139,164,0,0,0,0,0,0,0,0,0,2,228,57,60,243,10,0,0,0,0,0,0,0,0,66,233,2,2,235,89,0,
|
||||
0,0,0,0,0,0,0,157,158,0,0,159,180,0,0,0,0,0,0,0,7,240,255,255,255,255,251,20,0,0,0,0,
|
||||
0,0,82,238,9,0,0,7,235,105,0,0,0,0,0,0,165,139,0,0,0,0,132,189,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,197,255,254,235,127,0,0,0,0,0,0,0,0,0,212,88,3,58,246,69,0,0,0,0,0,0,0,0,
|
||||
212,88,0,0,206,106,0,0,0,0,0,0,0,0,212,88,2,61,240,37,0,0,0,0,0,0,0,0,212,255,255,255,
|
||||
191,24,0,0,0,0,0,0,0,0,212,88,1,28,177,190,0,0,0,0,0,0,0,0,212,88,0,0,72,245,0,0,
|
||||
0,0,0,0,0,0,212,88,0,18,165,194,0,0,0,0,0,0,0,0,197,255,255,244,179,31,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,102,215,248,212,92,0,0,0,0,0,0,0,0,114,237,76,12,54,193,5,0,0,
|
||||
0,0,0,0,9,240,98,0,0,0,0,0,0,0,0,0,0,0,61,255,17,0,0,0,0,0,0,0,0,0,0,0,
|
||||
83,247,0,0,0,0,0,0,0,0,0,0,0,0,70,255,11,0,0,0,0,0,0,0,0,0,0,0,18,247,83,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,135,228,68,11,50,187,12,0,0,0,0,0,0,0,4,130,226,249,210,96,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,197,255,254,236,172,43,0,0,0,0,0,0,0,0,212,92,2,30,156,243,
|
||||
41,0,0,0,0,0,0,0,212,92,0,0,0,187,168,0,0,0,0,0,0,0,212,92,0,0,0,98,231,0,0,0,
|
||||
0,0,0,0,212,92,0,0,0,76,247,0,0,0,0,0,0,0,212,92,0,0,0,103,225,0,0,0,0,0,0,0,
|
||||
212,92,0,0,0,184,160,0,0,0,0,0,0,0,212,92,1,27,145,241,37,0,0,0,0,0,0,0,197,255,253,234,
|
||||
170,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,255,255,255,251,5,0,0,0,0,0,0,0,0,212,92,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,212,255,255,255,130,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
197,255,255,255,253,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,255,255,255,200,0,0,0,0,0,0,0,
|
||||
0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,212,255,255,255,152,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,206,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,190,244,241,185,57,
|
||||
0,0,0,0,0,0,0,80,244,107,14,20,93,173,0,0,0,0,0,0,9,228,105,0,0,0,0,0,0,0,0,0,
|
||||
0,0,66,252,8,0,0,0,0,0,0,0,0,0,0,0,91,229,0,0,156,255,255,192,0,0,0,0,0,0,74,252,
|
||||
7,0,0,0,96,204,0,0,0,0,0,0,16,245,100,0,0,0,96,204,0,0,0,0,0,0,0,115,243,103,22,14,
|
||||
140,203,0,0,0,0,0,0,0,0,88,201,246,247,199,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,85,0,0,
|
||||
0,153,133,0,0,0,0,0,0,0,212,92,0,0,0,160,140,0,0,0,0,0,0,0,212,92,0,0,0,160,140,0,
|
||||
0,0,0,0,0,0,212,92,0,0,0,160,140,0,0,0,0,0,0,0,212,255,255,255,255,255,140,0,0,0,0,0,
|
||||
0,0,212,92,0,0,0,160,140,0,0,0,0,0,0,0,212,92,0,0,0,160,140,0,0,0,0,0,0,0,212,92,
|
||||
0,0,0,160,140,0,0,0,0,0,0,0,206,86,0,0,0,154,134,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
205,86,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,206,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,213,74,0,0,0,0,0,0,0,0,0,0,0,0,220,80,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,220,80,0,0,0,0,0,0,0,0,0,0,0,0,220,80,0,0,0,0,0,0,0,0,0,0,0,0,220,80,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,220,80,0,0,0,0,0,0,0,0,0,0,0,0,222,78,0,0,0,0,
|
||||
0,0,0,0,0,0,0,21,246,51,0,0,0,0,0,0,0,0,0,0,235,246,161,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,205,86,0,2,180,148,0,0,0,0,0,0,0,0,212,92,0,135,206,10,0,0,0,0,
|
||||
0,0,0,0,212,92,80,231,29,0,0,0,0,0,0,0,0,0,212,131,234,57,0,0,0,0,0,0,0,0,0,0,
|
||||
212,210,217,9,0,0,0,0,0,0,0,0,0,0,212,96,197,154,0,0,0,0,0,0,0,0,0,0,212,92,31,239,
|
||||
88,0,0,0,0,0,0,0,0,0,212,92,0,84,242,37,0,0,0,0,0,0,0,0,206,86,0,0,149,195,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,205,86,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,197,255,255,255,
|
||||
184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,247,65,0,0,0,0,53,246,189,0,0,0,0,212,200,
|
||||
177,0,0,0,0,168,196,204,0,0,0,0,212,105,248,26,0,0,23,239,104,204,0,0,0,0,212,80,179,123,0,0,
|
||||
123,158,88,204,0,0,0,0,212,80,81,222,1,3,225,55,88,204,0,0,0,0,212,80,5,233,69,79,208,0,88,204,
|
||||
0,0,0,0,212,80,0,140,170,184,105,0,88,204,0,0,0,0,212,80,0,41,250,242,14,0,88,204,0,0,0,0,
|
||||
206,75,0,0,194,153,0,0,83,198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194,233,27,0,0,59,213,0,0,0,0,0,
|
||||
0,0,212,226,159,0,0,64,220,0,0,0,0,0,0,0,212,111,249,46,0,64,220,0,0,0,0,0,0,0,212,75,
|
||||
154,184,0,64,220,0,0,0,0,0,0,0,212,76,24,244,69,64,220,0,0,0,0,0,0,0,212,76,0,129,203,65,
|
||||
220,0,0,0,0,0,0,0,212,76,0,12,232,145,220,0,0,0,0,0,0,0,212,76,0,0,104,248,220,0,0,0,
|
||||
0,0,0,0,206,71,0,0,3,201,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,212,249,236,163,25,
|
||||
0,0,0,0,0,0,0,112,234,68,7,33,189,212,5,0,0,0,0,0,9,237,84,0,0,0,18,247,77,0,0,0,
|
||||
0,0,49,254,8,0,0,0,0,194,120,0,0,0,0,0,75,241,0,0,0,0,0,174,145,0,0,0,0,0,54,254,
|
||||
4,0,0,0,0,196,126,0,0,0,0,0,17,252,71,0,0,0,22,249,55,0,0,0,0,0,0,156,223,55,5,38,
|
||||
199,179,0,0,0,0,0,0,0,3,122,225,250,229,145,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,255,254,225,
|
||||
109,0,0,0,0,0,0,0,0,0,212,92,4,73,247,73,0,0,0,0,0,0,0,0,212,92,0,0,183,142,0,0,
|
||||
0,0,0,0,0,0,212,92,0,0,184,127,0,0,0,0,0,0,0,0,212,92,7,84,248,46,0,0,0,0,0,0,
|
||||
0,0,212,255,247,207,77,0,0,0,0,0,0,0,0,0,212,92,0,0,0,0,0,0,0,0,0,0,0,0,212,92,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,206,87,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,105,212,249,235,159,22,0,0,0,0,0,0,0,112,234,68,7,33,189,199,0,0,0,0,0,0,9,237,83,0,
|
||||
0,0,18,247,73,0,0,0,0,0,49,254,7,0,0,0,0,194,121,0,0,0,0,0,75,241,0,0,0,0,0,174,
|
||||
145,0,0,0,0,0,54,254,5,0,0,0,0,196,125,0,0,0,0,0,17,252,72,0,0,0,23,250,63,0,0,0,
|
||||
0,0,0,157,223,55,5,38,199,193,0,0,0,0,0,0,0,6,137,226,250,224,163,237,113,10,0,0,0,0,0,0,
|
||||
0,0,0,0,0,44,176,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,197,255,254,230,132,2,0,0,0,0,0,0,0,0,212,92,3,54,242,87,0,0,0,0,0,0,0,0,
|
||||
212,92,0,0,190,129,0,0,0,0,0,0,0,0,212,92,4,65,242,62,0,0,0,0,0,0,0,0,212,255,255,252,
|
||||
85,0,0,0,0,0,0,0,0,0,212,92,19,174,181,0,0,0,0,0,0,0,0,0,212,92,0,25,250,50,0,0,
|
||||
0,0,0,0,0,0,212,92,0,0,173,154,0,0,0,0,0,0,0,0,206,86,0,0,71,239,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,90,218,245,174,19,0,0,0,0,0,0,0,0,30,249,66,14,118,96,0,0,0,0,
|
||||
0,0,0,0,62,248,10,0,0,0,0,0,0,0,0,0,0,0,11,223,195,49,0,0,0,0,0,0,0,0,0,0,
|
||||
0,26,165,252,174,20,0,0,0,0,0,0,0,0,0,0,0,38,207,172,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
91,222,0,0,0,0,0,0,0,0,116,122,21,23,182,159,0,0,0,0,0,0,0,0,26,171,243,235,159,16,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,218,255,255,255,255,255,172,0,0,0,0,0,0,0,0,0,44,255,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,44,255,0,0,0,0,0,0,0,0,0,0,0,0,44,255,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,44,255,0,0,0,0,0,0,0,0,0,0,0,0,44,255,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,44,255,0,0,0,0,0,0,0,0,0,0,0,0,44,255,0,0,0,0,0,0,0,0,0,0,0,0,40,249,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,78,0,0,0,82,205,0,0,0,0,0,0,0,216,84,
|
||||
0,0,0,88,212,0,0,0,0,0,0,0,216,84,0,0,0,88,212,0,0,0,0,0,0,0,216,84,0,0,0,88,
|
||||
212,0,0,0,0,0,0,0,216,84,0,0,0,88,212,0,0,0,0,0,0,0,214,87,0,0,0,90,208,0,0,0,
|
||||
0,0,0,0,183,123,0,0,0,128,174,0,0,0,0,0,0,0,96,234,66,10,62,235,78,0,0,0,0,0,0,0,
|
||||
0,114,220,246,212,94,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,143,0,0,0,0,145,152,0,0,0,0,
|
||||
0,0,88,231,2,0,0,2,231,71,0,0,0,0,0,0,10,244,64,0,0,62,234,4,0,0,0,0,0,0,0,165,
|
||||
151,0,0,147,148,0,0,0,0,0,0,0,0,76,234,3,1,229,59,0,0,0,0,0,0,0,0,5,237,69,60,224,
|
||||
1,0,0,0,0,0,0,0,0,0,153,156,144,136,0,0,0,0,0,0,0,0,0,0,64,237,227,47,0,0,0,0,
|
||||
0,0,0,0,0,0,2,223,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,180,0,0,0,126,229,1,
|
||||
0,0,53,237,0,0,62,246,7,0,0,196,255,50,0,0,123,176,0,0,4,240,65,0,10,242,187,119,0,0,190,103,
|
||||
0,0,0,173,134,0,70,192,108,189,0,8,247,31,0,0,0,101,203,0,135,127,37,248,10,67,213,0,0,0,0,28,
|
||||
252,18,200,63,0,222,73,133,140,0,0,0,0,0,212,97,242,7,0,152,142,199,68,0,0,0,0,0,139,221,189,0,
|
||||
0,81,221,240,7,0,0,0,0,0,62,251,118,0,0,14,243,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,225,11,0,
|
||||
0,150,165,0,0,0,0,0,0,0,3,211,130,0,45,246,36,0,0,0,0,0,0,0,0,67,246,29,187,136,0,0,
|
||||
0,0,0,0,0,0,0,0,175,212,230,12,0,0,0,0,0,0,0,0,0,0,74,255,146,0,0,0,0,0,0,0,
|
||||
0,0,0,0,195,172,243,26,0,0,0,0,0,0,0,0,0,91,223,7,177,162,0,0,0,0,0,0,0,0,12,228,
|
||||
87,0,39,250,55,0,0,0,0,0,0,0,124,196,0,0,0,145,190,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
161,158,0,0,0,196,113,0,0,0,0,0,0,0,46,250,33,0,67,238,14,0,0,0,0,0,0,0,0,174,151,0,
|
||||
188,125,0,0,0,0,0,0,0,0,0,48,245,68,238,15,0,0,0,0,0,0,0,0,0,0,175,239,126,0,0,0,
|
||||
0,0,0,0,0,0,0,0,64,255,15,0,0,0,0,0,0,0,0,0,0,0,48,255,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,48,255,0,0,0,0,0,0,0,0,0,0,0,0,43,249,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,116,255,255,255,255,250,12,0,0,0,0,0,0,0,0,0,0,0,137,195,0,0,0,0,0,0,0,0,
|
||||
0,0,0,45,245,43,0,0,0,0,0,0,0,0,0,0,2,199,133,0,0,0,0,0,0,0,0,0,0,0,106,220,
|
||||
8,0,0,0,0,0,0,0,0,0,0,26,240,69,0,0,0,0,0,0,0,0,0,0,0,172,164,0,0,0,0,0,
|
||||
0,0,0,0,0,0,74,237,22,0,0,0,0,0,0,0,0,0,0,0,139,255,255,255,255,255,54,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,165,255,163,0,0,0,
|
||||
0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
176,96,0,0,0,0,0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,176,96,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,176,96,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,176,96,0,0,0,0,0,0,0,0,0,0,0,0,166,255,163,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,78,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,117,173,0,0,0,0,0,0,0,0,0,0,0,0,27,246,17,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,189,103,0,0,0,0,0,0,0,0,0,0,0,0,96,196,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,13,245,33,0,0,0,0,0,0,0,0,0,0,0,0,167,125,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,75,218,0,0,0,0,0,0,0,0,0,0,0,0,4,233,55,0,0,0,0,0,0,0,0,0,0,0,0,146,
|
||||
148,0,0,0,0,0,0,0,0,0,0,0,0,54,236,5,0,0,0,0,0,0,0,0,0,0,0,0,214,71,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,89,255,243,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,0,20,
|
||||
255,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,20,255,0,0,0,0,0,0,0,0,0,0,0,0,20,255,0,0,0,0,0,0,0,0,0,0,0,89,255,245,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,250,68,0,0,0,0,0,0,0,
|
||||
0,0,0,0,211,157,187,0,0,0,0,0,0,0,0,0,0,71,210,10,238,49,0,0,0,0,0,0,0,0,0,186,
|
||||
108,0,141,165,0,0,0,0,0,0,0,0,37,241,16,0,34,245,23,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,249,255,255,255,255,255,241,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,201,75,0,0,0,0,0,0,0,0,0,0,0,0,31,206,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,211,244,
|
||||
186,23,0,0,0,0,0,0,0,0,8,186,43,16,189,136,0,0,0,0,0,0,0,0,0,0,0,0,116,172,0,0,
|
||||
0,0,0,0,0,0,0,110,215,248,255,176,0,0,0,0,0,0,0,0,59,239,51,4,112,176,0,0,0,0,0,0,
|
||||
0,0,74,231,33,38,199,176,0,0,0,0,0,0,0,0,4,165,244,220,148,171,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
244,111,218,245,141,1,0,0,0,0,0,0,0,0,244,202,33,48,239,83,0,0,0,0,0,0,0,0,244,50,0,0,
|
||||
157,154,0,0,0,0,0,0,0,0,244,44,0,0,130,172,0,0,0,0,0,0,0,0,244,48,0,0,159,147,0,0,
|
||||
0,0,0,0,0,0,244,197,29,51,240,65,0,0,0,0,0,0,0,0,236,97,230,231,119,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,50,199,245,186,24,0,0,0,0,0,0,0,0,10,233,114,14,107,98,0,0,0,0,0,0,0,0,
|
||||
72,235,2,0,0,0,0,0,0,0,0,0,0,0,94,210,0,0,0,0,0,0,0,0,0,0,0,0,70,233,1,0,
|
||||
0,0,0,0,0,0,0,0,0,0,13,237,109,13,100,105,0,0,0,0,0,0,0,0,0,65,213,247,185,28,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,202,74,0,0,0,0,0,0,0,0,0,0,0,0,208,80,0,0,0,0,0,0,0,0,0,0,0,0,208,
|
||||
80,0,0,0,0,0,0,0,0,55,208,237,143,213,80,0,0,0,0,0,0,0,4,227,121,14,130,255,80,0,0,0,
|
||||
0,0,0,0,55,240,4,0,0,212,80,0,0,0,0,0,0,0,80,216,0,0,0,208,80,0,0,0,0,0,0,0,
|
||||
62,238,2,0,0,214,80,0,0,0,0,0,0,0,8,238,110,14,136,252,80,0,0,0,0,0,0,0,0,72,228,242,
|
||||
131,173,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,38,189,244,212,52,0,0,0,0,0,0,0,0,3,217,122,13,96,227,
|
||||
5,0,0,0,0,0,0,0,55,234,1,0,0,229,52,0,0,0,0,0,0,0,83,255,255,255,255,254,59,0,0,0,
|
||||
0,0,0,0,62,227,0,0,0,0,0,0,0,0,0,0,0,0,9,228,112,12,0,0,0,0,0,0,0,0,0,0,
|
||||
0,51,196,245,255,250,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,34,209,246,81,0,0,0,0,0,0,0,0,0,0,141,170,10,16,0,0,0,0,0,0,0,
|
||||
0,0,0,166,121,0,0,0,0,0,0,0,0,0,0,0,181,255,255,252,10,0,0,0,0,0,0,0,0,0,0,168,
|
||||
120,0,0,0,0,0,0,0,0,0,0,0,0,168,120,0,0,0,0,0,0,0,0,0,0,0,0,168,120,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,168,120,0,0,0,0,0,0,0,0,0,0,0,0,168,120,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,162,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,225,255,255,255,33,0,0,0,0,0,
|
||||
0,0,19,242,58,26,218,75,0,0,0,0,0,0,0,0,58,216,0,0,157,118,0,0,0,0,0,0,0,0,23,243,
|
||||
53,26,220,74,0,0,0,0,0,0,0,0,32,223,224,238,141,0,0,0,0,0,0,0,0,0,88,185,6,0,0,0,
|
||||
0,0,0,0,0,0,0,0,19,241,253,242,216,100,0,0,0,0,0,0,0,0,125,184,6,11,77,253,13,0,0,0,
|
||||
0,0,0,0,146,175,19,9,97,236,3,0,0,0,0,0,0,0,27,180,239,243,196,58,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,111,219,235,122,0,0,0,
|
||||
0,0,0,0,0,0,244,203,32,62,252,36,0,0,0,0,0,0,0,0,244,50,0,0,213,79,0,0,0,0,0,0,
|
||||
0,0,244,44,0,0,200,88,0,0,0,0,0,0,0,0,244,44,0,0,200,88,0,0,0,0,0,0,0,0,244,44,
|
||||
0,0,200,88,0,0,0,0,0,0,0,0,237,39,0,0,194,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,6,0,0,0,0,0,0,0,0,0,0,0,
|
||||
7,242,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,11,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,219,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,205,70,0,0,0,0,0,0,0,0,0,0,0,0,212,76,0,0,0,0,0,0,0,0,0,0,0,0,212,76,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,212,76,0,0,0,0,0,0,0,0,0,0,0,0,212,76,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,212,76,0,0,0,0,0,0,0,0,0,0,0,0,212,76,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,215,72,0,0,0,0,0,0,0,0,0,0,1,25,246,37,0,0,0,0,0,0,0,0,0,0,63,246,
|
||||
154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,244,44,3,175,165,0,0,0,0,0,0,0,0,0,244,44,146,196,10,0,0,0,0,0,0,0,0,0,
|
||||
244,152,208,15,0,0,0,0,0,0,0,0,0,0,244,188,204,5,0,0,0,0,0,0,0,0,0,0,244,52,211,139,
|
||||
0,0,0,0,0,0,0,0,0,0,244,44,44,246,70,0,0,0,0,0,0,0,0,0,237,39,0,106,227,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,0,0,0,0,0,0,0,0,0,0,0,237,39,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,238,40,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,236,93,225,237,107,80,226,230,93,0,0,0,0,0,244,201,29,96,251,199,
|
||||
29,94,241,7,0,0,0,0,244,50,0,2,251,50,0,2,253,36,0,0,0,0,244,44,0,0,244,44,0,0,248,44,
|
||||
0,0,0,0,244,44,0,0,244,44,0,0,248,44,0,0,0,0,244,44,0,0,244,44,0,0,248,44,0,0,0,0,
|
||||
237,39,0,0,237,39,0,0,240,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,92,222,235,122,0,0,0,0,0,0,0,0,0,244,203,
|
||||
32,62,252,36,0,0,0,0,0,0,0,0,244,50,0,0,213,79,0,0,0,0,0,0,0,0,244,44,0,0,200,88,
|
||||
0,0,0,0,0,0,0,0,244,44,0,0,200,88,0,0,0,0,0,0,0,0,244,44,0,0,200,88,0,0,0,0,
|
||||
0,0,0,0,237,39,0,0,194,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,189,247,221,115,0,0,0,0,0,0,
|
||||
0,0,4,219,133,16,60,238,81,0,0,0,0,0,0,0,64,237,4,0,0,144,164,0,0,0,0,0,0,0,91,210,
|
||||
0,0,0,114,186,0,0,0,0,0,0,0,69,235,2,0,0,145,156,0,0,0,0,0,0,0,10,232,124,15,60,238,
|
||||
59,0,0,0,0,0,0,0,0,53,199,245,223,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,75,216,245,144,2,0,0,
|
||||
0,0,0,0,0,0,244,201,36,46,236,84,0,0,0,0,0,0,0,0,244,50,0,0,155,154,0,0,0,0,0,0,
|
||||
0,0,244,44,0,0,130,172,0,0,0,0,0,0,0,0,244,49,0,0,160,147,0,0,0,0,0,0,0,0,244,199,
|
||||
30,53,241,65,0,0,0,0,0,0,0,0,244,128,231,230,119,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,207,244,
|
||||
148,176,75,0,0,0,0,0,0,0,4,227,121,14,130,254,80,0,0,0,0,0,0,0,55,240,4,0,0,212,80,0,
|
||||
0,0,0,0,0,0,80,216,0,0,0,208,80,0,0,0,0,0,0,0,62,238,2,0,0,214,80,0,0,0,0,0,
|
||||
0,0,8,238,110,14,136,255,80,0,0,0,0,0,0,0,0,72,229,242,133,210,80,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,208,80,0,0,0,0,0,0,0,0,0,0,0,0,208,80,0,0,0,0,0,0,0,0,0,0,0,0,202,
|
||||
74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
236,103,241,145,0,0,0,0,0,0,0,0,0,0,244,203,21,17,0,0,0,0,0,0,0,0,0,0,244,61,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,244,44,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,244,44,0,0,0,0,0,0,0,0,0,0,0,0,237,39,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,136,237,255,143,0,0,0,0,0,0,0,0,0,53,227,22,0,0,0,0,0,0,0,0,0,0,0,
|
||||
41,244,72,0,0,0,0,0,0,0,0,0,0,0,0,91,225,206,48,0,0,0,0,0,0,0,0,0,0,0,3,134,
|
||||
204,0,0,0,0,0,0,0,0,0,0,0,3,111,201,0,0,0,0,0,0,0,0,0,107,255,252,208,53,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,169,105,0,0,0,0,0,0,0,0,0,0,0,0,176,112,0,0,0,
|
||||
0,0,0,0,0,0,0,0,187,255,255,255,51,0,0,0,0,0,0,0,0,0,0,176,112,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,176,112,0,0,0,0,0,0,0,0,0,0,0,0,176,112,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,175,113,0,0,0,0,0,0,0,0,0,0,0,0,156,159,14,9,0,0,0,0,0,0,0,0,0,0,52,226,242,
|
||||
43,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,244,32,0,0,202,74,0,0,0,0,0,0,0,0,252,36,0,0,208,80,
|
||||
0,0,0,0,0,0,0,0,252,36,0,0,208,80,0,0,0,0,0,0,0,0,252,36,0,0,208,80,0,0,0,0,
|
||||
0,0,0,0,243,46,0,0,212,80,0,0,0,0,0,0,0,0,202,140,13,130,254,80,0,0,0,0,0,0,0,0,
|
||||
57,215,236,144,179,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,129,0,0,37,243,7,0,0,0,0,0,0,0,96,216,
|
||||
0,0,118,179,0,0,0,0,0,0,0,0,16,249,42,0,199,92,0,0,0,0,0,0,0,0,0,179,124,25,246,14,
|
||||
0,0,0,0,0,0,0,0,0,93,207,105,176,0,0,0,0,0,0,0,0,0,0,14,247,213,90,0,0,0,0,0,
|
||||
0,0,0,0,0,0,169,242,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,152,0,0,159,157,0,0,136,144,0,0,
|
||||
0,0,76,223,0,0,225,227,0,0,206,78,0,0,0,0,10,247,33,30,212,232,37,17,246,11,0,0,0,0,0,184,
|
||||
100,91,145,162,103,81,185,0,0,0,0,0,0,110,167,152,80,91,169,146,110,0,0,0,0,0,0,35,233,212,18,21,
|
||||
232,212,35,0,0,0,0,0,0,0,210,201,0,0,198,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,108,209,4,0,171,124,0,0,
|
||||
0,0,0,0,0,0,6,217,109,68,228,11,0,0,0,0,0,0,0,0,0,73,238,215,88,0,0,0,0,0,0,0,
|
||||
0,0,0,1,225,240,5,0,0,0,0,0,0,0,0,0,0,96,206,212,115,0,0,0,0,0,0,0,0,0,15,232,
|
||||
64,70,241,23,0,0,0,0,0,0,0,0,136,172,0,0,177,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,133,0,0,
|
||||
36,244,8,0,0,0,0,0,0,0,92,222,0,0,119,180,0,0,0,0,0,0,0,0,12,245,51,0,201,94,0,0,
|
||||
0,0,0,0,0,0,0,169,135,27,247,15,0,0,0,0,0,0,0,0,0,79,220,108,176,0,0,0,0,0,0,0,
|
||||
0,0,0,6,239,225,89,0,0,0,0,0,0,0,0,0,0,0,154,246,12,0,0,0,0,0,0,0,0,0,0,0,
|
||||
126,177,0,0,0,0,0,0,0,0,0,0,0,0,210,101,0,0,0,0,0,0,0,0,0,0,0,28,244,26,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
64,255,255,255,191,0,0,0,0,0,0,0,0,0,0,0,0,187,119,0,0,0,0,0,0,0,0,0,0,0,81,220,
|
||||
7,0,0,0,0,0,0,0,0,0,0,7,222,77,0,0,0,0,0,0,0,0,0,0,0,124,184,0,0,0,0,0,
|
||||
0,0,0,0,0,0,28,239,40,0,0,0,0,0,0,0,0,0,0,0,89,255,255,255,234,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,183,231,0,0,
|
||||
0,0,0,0,0,0,0,0,0,36,237,9,0,0,0,0,0,0,0,0,0,0,0,47,216,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,53,212,0,0,0,0,0,0,0,0,0,0,0,1,127,173,0,0,0,0,0,0,0,0,0,0,0,
|
||||
96,239,41,0,0,0,0,0,0,0,0,0,0,0,1,138,161,0,0,0,0,0,0,0,0,0,0,0,0,55,209,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,48,216,0,0,0,0,0,0,0,0,0,0,0,0,47,217,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,33,238,8,0,0,0,0,0,0,0,0,0,0,0,0,178,230,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,185,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,0,0,0,0,0,0,80,192,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,75,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,39,247,134,0,0,0,0,0,0,0,0,0,0,0,0,46,237,0,0,0,0,0,0,0,0,0,0,0,0,16,
|
||||
251,0,0,0,0,0,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,0,2,241,55,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,87,253,38,0,0,0,0,0,0,0,0,0,0,0,200,94,0,0,0,0,0,0,
|
||||
0,0,0,0,0,4,254,8,0,0,0,0,0,0,0,0,0,0,0,15,252,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,17,250,0,0,0,0,0,0,0,0,0,0,0,0,50,231,0,0,0,0,0,0,0,0,0,0,0,38,246,123,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,17,199,236,82,0,79,138,0,0,0,0,0,0,0,110,149,46,229,42,150,102,0,0,0,0,0,0,0,139,78,
|
||||
0,84,239,191,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||
/*Bitmap Raw Data end ---*/
|
||||
}
|
98
fonts/calibri_14/L8/calibri_14_L8.rtf
Normal file
@ -0,0 +1,98 @@
|
||||
95 characters are converted
|
||||
|
||||
Character Index No.
|
||||
32
|
||||
! 33
|
||||
" 34
|
||||
# 35
|
||||
$ 36
|
||||
% 37
|
||||
& 38
|
||||
' 39
|
||||
( 40
|
||||
) 41
|
||||
* 42
|
||||
+ 43
|
||||
, 44
|
||||
- 45
|
||||
. 46
|
||||
/ 47
|
||||
0 48
|
||||
1 49
|
||||
2 50
|
||||
3 51
|
||||
4 52
|
||||
5 53
|
||||
6 54
|
||||
7 55
|
||||
8 56
|
||||
9 57
|
||||
: 58
|
||||
; 59
|
||||
< 60
|
||||
= 61
|
||||
> 62
|
||||
? 63
|
||||
@ 64
|
||||
A 65
|
||||
B 66
|
||||
C 67
|
||||
D 68
|
||||
E 69
|
||||
F 70
|
||||
G 71
|
||||
H 72
|
||||
I 73
|
||||
J 74
|
||||
K 75
|
||||
L 76
|
||||
M 77
|
||||
N 78
|
||||
O 79
|
||||
P 80
|
||||
Q 81
|
||||
R 82
|
||||
S 83
|
||||
T 84
|
||||
U 85
|
||||
V 86
|
||||
W 87
|
||||
X 88
|
||||
Y 89
|
||||
Z 90
|
||||
[ 91
|
||||
\ 92
|
||||
] 93
|
||||
^ 94
|
||||
_ 95
|
||||
` 96
|
||||
a 97
|
||||
b 98
|
||||
c 99
|
||||
d 100
|
||||
e 101
|
||||
f 102
|
||||
g 103
|
||||
h 104
|
||||
i 105
|
||||
j 106
|
||||
k 107
|
||||
l 108
|
||||
m 109
|
||||
n 110
|
||||
o 111
|
||||
p 112
|
||||
q 113
|
||||
r 114
|
||||
s 115
|
||||
t 116
|
||||
u 117
|
||||
v 118
|
||||
w 119
|
||||
x 120
|
||||
y 121
|
||||
z 122
|
||||
{ 123
|
||||
| 124
|
||||
} 125
|
||||
~ 126
|
BIN
fonts/calibri_14/calibri_14_L8.PNG
Normal file
After Width: | Height: | Size: 4.4 KiB |
5
hw.txt
Normal file
@ -0,0 +1,5 @@
|
||||
1. R2 & R3 10K, R1 - 1K
|
||||
2. Molex cable 33mm
|
||||
3. Ground plane between screen & board. Capton tape+Copper Foil Tape, solder to board ground via 22 cable
|
||||
|
||||
|
BIN
images/at.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
images/gps.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
9
include/version.h
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
// AUTO GENERATED FILE, DO NOT EDIT
|
||||
#ifndef VERSION
|
||||
#define VERSION "1.0.1203"
|
||||
#endif
|
||||
#ifndef BUILD_TIMESTAMP
|
||||
#define BUILD_TIMESTAMP "2023-07-18 14:37:23.725627"
|
||||
#endif
|
||||
|
1119
lib/SparkFun u-blox Arduino Library/SparkFun_Ublox_Arduino_Library.h
Normal file
838
lib/SparkFun u-blox Arduino Library/u-blox_config_keys.h
Normal file
@ -0,0 +1,838 @@
|
||||
/*
|
||||
This is a library written for the u-blox ZED-F9P and NEO-M8P-2
|
||||
SparkFun sells these at its website: www.sparkfun.com
|
||||
Do you like this library? Help support SparkFun. Buy a board!
|
||||
https://www.sparkfun.com/products/16481
|
||||
https://www.sparkfun.com/products/15136
|
||||
https://www.sparkfun.com/products/15005
|
||||
https://www.sparkfun.com/products/15733
|
||||
https://www.sparkfun.com/products/15193
|
||||
https://www.sparkfun.com/products/15210
|
||||
|
||||
Written by Nathan Seidle @ SparkFun Electronics, September 6th, 2018
|
||||
|
||||
This library handles configuring and handling the responses
|
||||
from a u-blox GPS module. Works with most modules from u-blox including
|
||||
the Zed-F9P, NEO-M8P-2, NEO-M9N, ZOE-M8Q, SAM-M8Q, and many others.
|
||||
|
||||
https://github.com/sparkfun/SparkFun_Ublox_Arduino_Library
|
||||
|
||||
Development environment specifics:
|
||||
Arduino IDE 1.8.5
|
||||
|
||||
SparkFun code, firmware, and software is released under the MIT License(http://opensource.org/licenses/MIT).
|
||||
The MIT License (MIT)
|
||||
Copyright (c) 2016 SparkFun Electronics
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
||||
associated documentation files (the "Software"), to deal in the Software without restriction,
|
||||
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to
|
||||
do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial
|
||||
portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
||||
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __u_blox_config_keys_h__
|
||||
#define __u_blox_config_keys_h__
|
||||
|
||||
//The following consts are used to generate KEY values for the advanced protocol functions of VELGET/SET/DEL
|
||||
const uint8_t VAL_SIZE_1 = 0x01; //One bit
|
||||
const uint8_t VAL_SIZE_8 = 0x02; //One byte
|
||||
const uint8_t VAL_SIZE_16 = 0x03; //Two bytes
|
||||
const uint8_t VAL_SIZE_32 = 0x04; //Four bytes
|
||||
const uint8_t VAL_SIZE_64 = 0x05; //Eight bytes
|
||||
|
||||
//These are the Bitfield layers definitions for the UBX-CFG-VALSET message (not to be confused with Bitfield deviceMask in UBX-CFG-CFG)
|
||||
const uint8_t VAL_LAYER_RAM = (1 << 0);
|
||||
const uint8_t VAL_LAYER_BBR = (1 << 1);
|
||||
const uint8_t VAL_LAYER_FLASH = (1 << 2);
|
||||
const uint8_t VAL_LAYER_ALL = VAL_LAYER_RAM | VAL_LAYER_BBR | VAL_LAYER_FLASH; //Not valid with getVal()
|
||||
|
||||
//Below are various Groups, IDs, and sizes for various settings
|
||||
//These can be used to call getVal/setVal/delVal
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint8_t VAL_ID_PROT_UBX = 0x01;
|
||||
const uint8_t VAL_ID_PROT_NMEA = 0x02;
|
||||
const uint8_t VAL_ID_PROT_RTCM3 = 0x04;
|
||||
|
||||
const uint8_t VAL_GROUP_I2C = 0x51;
|
||||
const uint8_t VAL_GROUP_I2COUTPROT = 0x72;
|
||||
const uint8_t VAL_GROUP_UART1INPROT = 0x73;
|
||||
const uint8_t VAL_GROUP_UART1OUTPROT = 0x74;
|
||||
const uint8_t VAL_GROUP_UART2INPROT = 0x75;
|
||||
const uint8_t VAL_GROUP_UART2OUTPROT = 0x76;
|
||||
const uint8_t VAL_GROUP_USBINPROT = 0x77;
|
||||
const uint8_t VAL_GROUP_USBOUTPROT = 0x78;
|
||||
|
||||
const uint8_t VAL_GROUP_UART_SIZE = VAL_SIZE_1; //All fields in UART group are currently 1 bit
|
||||
const uint8_t VAL_GROUP_I2C_SIZE = VAL_SIZE_8; //All fields in I2C group are currently 1 byte
|
||||
|
||||
const uint8_t VAL_ID_I2C_ADDRESS = 0x01;
|
||||
|
||||
//Below are the key values for a given configuration setting
|
||||
|
||||
//CFG-BDS: BeiDou system configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_BDS_USE_PRN_1_TO_5 = 0x10340014; // Use BeiDou geostationary satellites (PRN 1-5)
|
||||
|
||||
//CFG-GEOFENCE: Geofencing configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_CONFLVL = 0x20240011; // Required confidence level for state evaluation
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_USE_PIO = 0x10240012; // Use PIO combined fence state output
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_PINPOL = 0x20240013; // PIO pin polarity
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_PIN = 0x20240014; // PIO pin number
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_USE_FENCE1 = 0x10240020; // Use frst geofence
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE1_LAT = 0x40240021; // Latitude of the first geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE1_LON = 0x40240022; // Longitude of the first geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE1_RAD = 0x40240023; // Radius of the first geofence circle
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_USE_FENCE2 = 0x10240030; // Use second geofence
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE2_LAT = 0x40240031; // Latitude of the second geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE2_LON = 0x40240032; // Longitude of the second geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE2_RAD = 0x40240033; // Radius of the second geofence circle
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_USE_FENCE3 = 0x10240040; // Use third geofence
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE3_LAT = 0x40240041; // Latitude of the third geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE3_LON = 0x40240042; // Longitude of the third geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE3_RAD = 0x40240043; // Radius of the third geofence circle
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_USE_FENCE4 = 0x10240050; // Use fourth geofence
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE4_LAT = 0x40240051; // Latitude of the fourth geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE4_LON = 0x40240052; // Longitude of the fourth geofence circle center
|
||||
const uint32_t UBLOX_CFG_GEOFENCE_FENCE4_RAD = 0x40240053; // Radius of the fourth geofence circle
|
||||
|
||||
//CFG-HW: Hardware configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_VOLTCTRL = 0x10a3002e; // Active antenna voltage control flag
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_SHORTDET = 0x10a3002f; // Short antenna detection flag
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_SHORTDET_POL = 0x10a30030; // Short antenna detection polarity
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_OPENDET = 0x10a30031; // Open antenna detection flag
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_OPENDET_POL = 0x10a30032; // Open antenna detection polarity
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_PWRDOWN = 0x10a30033; // Power down antenna flag
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_PWRDOWN_POL = 0x10a30034; // Power down antenna logic polarity
|
||||
const uint32_t UBLOX_CFG_HW_ANT_CFG_RECOVER = 0x10a30035; // Automatic recovery from short state flag
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_SWITCH_PIN = 0x20a30036; // ANT1 PIO number
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_SHORT_PIN = 0x20a30037; // ANT0 PIO number
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_OPEN_PIN = 0x20a30038; // ANT2 PIO number
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_ENGINE = 0x20a30054; // Antenna supervisor engine selection
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_SHORT_THR = 0x20a30055; // Antenna supervisor MADC engine short detection threshold
|
||||
const uint32_t UBLOX_CFG_HW_ANT_SUP_OPEN_THR = 0x20a30056; // Antenna supervisor MADC engine open detection threshold
|
||||
|
||||
//CFG-I2C: Configuration of the I2C interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_I2C_ADDRESS = 0x20510001; // I2C slave address of the receiver (7 bits)
|
||||
const uint32_t UBLOX_CFG_I2C_EXTENDEDTIMEOUT = 0x10510002; // Flag to disable timeouting the interface after 1.5 s
|
||||
const uint32_t UBLOX_CFG_I2C_ENABLED = 0x10510003; // Flag to indicate if the I2C interface should be enabled
|
||||
|
||||
//CFG-I2CINPROT: Input protocol configuration of the I2C interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_I2CINPROT_UBX = 0x10710001; // Flag to indicate if UBX should be an input protocol on I2C
|
||||
const uint32_t UBLOX_CFG_I2CINPROT_NMEA = 0x10710002; // Flag to indicate if NMEA should be an input protocol on I2C
|
||||
const uint32_t UBLOX_CFG_I2CINPROT_RTCM3X = 0x10710004; // Flag to indicate if RTCM3X should be an input protocol on I2C
|
||||
|
||||
//CFG-I2COUTPROT: Output protocol configuration of the I2C interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_I2COUTPROT_UBX = 0x10720001; // Flag to indicate if UBX should be an output protocol on I2C
|
||||
const uint32_t UBLOX_CFG_I2COUTPROT_NMEA = 0x10720002; // Flag to indicate if NMEA should be an output protocol on I2C
|
||||
const uint32_t UBLOX_CFG_I2COUTPROT_RTCM3X = 0x10720004; // Flag to indicate if RTCM3X should be an output protocol on I2C
|
||||
|
||||
//CFG-INFMSG: Information message configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_INFMSG_UBX_I2C = 0x20920001; // Information message enable flags for the UBX protocol on the I2C interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_UBX_UART1 = 0x20920002; // Information message enable flags for the UBX protocol on the UART1 interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_UBX_UART2 = 0x20920003; // Information message enable flags for the UBX protocol on the UART2 interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_UBX_USB = 0x20920004; // Information message enable flags for the UBX protocol on the USB interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_UBX_SPI = 0x20920005; // Information message enable flags for the UBX protocol on the SPI interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_NMEA_I2C = 0x20920006; // Information message enable flags for the NMEA protocol on the I2C interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_NMEA_UART1 = 0x20920007; // Information message enable flags for the NMEA protocol on the UART1 interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_NMEA_UART2 = 0x20920008; // Information message enable flags for the NMEA protocol on the UART2 interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_NMEA_USB = 0x20920009; // Information message enable flags for the NMEA protocol on the USB interface
|
||||
const uint32_t UBLOX_CFG_INFMSG_NMEA_SPI = 0x2092000a; // Information message enable flags for the NMEA protocol on the SPI interface
|
||||
|
||||
//CFG-ITFM: Jamming and interference monitor configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_ITFM_BBTHRESHOLD = 0x20410001; // Broadband jamming detection threshold
|
||||
const uint32_t UBLOX_CFG_ITFM_CWTHRESHOLD = 0x20410002; // CW jamming detection threshold
|
||||
const uint32_t UBLOX_CFG_ITFM_ENABLE = 0x1041000d; // Enable interference detection
|
||||
const uint32_t UBLOX_CFG_ITFM_ANTSETTING = 0x20410010; // Antenna setting
|
||||
const uint32_t UBLOX_CFG_ITFM_ENABLE_AUX = 0x10410013; // Scan auxiliary bands
|
||||
|
||||
//CFG-LOGFILTER: Data logger configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_RECORD_ENA = 0x10de0002; // Recording enabled
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_ONCE_PER_WAKE_UP_ENA = 0x10de0003; // Once per wake up
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_APPLY_ALL_FILTERS = 0x10de0004; // Apply all filter settings
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_MIN_INTERVAL = 0x30de0005; // Minimum time interval between loggedpositions
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_TIME_THRS = 0x30de0006; // Time threshold
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_SPEED_THRS = 0x30de0007; // Speed threshold
|
||||
const uint32_t UBLOX_CFG_LOGFILTER_POSITION_THRS = 0x40de0008; // Position threshold
|
||||
|
||||
//CFG-MOT: Motion detector configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_MOT_GNSSSPEED_THRS = 0x20250038; // GNSS speed threshold below which platform is considered as stationary (a.k.a. static hold threshold)
|
||||
const uint32_t UBLOX_CFG_MOT_GNSSDIST_THRS = 0x3025003b; // Distance above which GNSS-based stationary motion is exit (a.k.a. static hold distance threshold)
|
||||
|
||||
// CFG-MSGOUT: Message output configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
// For each message and port a separate output rate (per second, per epoch) can be configured.
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_DTM_I2C = 0x209100a6; //Output rate of the NMEA-GX-DTM message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_DTM_SPI = 0x209100aa; //Output rate of the NMEA-GX-DTM message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_DTM_UART1 = 0x209100a7; //Output rate of the NMEA-GX-DTM message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_DTM_UART2 = 0x209100a8; //Output rate of the NMEA-GX-DTM message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_DTM_USB = 0x209100a9; //Output rate of the NMEA-GX-DTM message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GBS_I2C = 0x209100dd; //Output rate of the NMEA-GX-GBS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GBS_SPI = 0x209100e1; //Output rate of the NMEA-GX-GBS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GBS_UART1 = 0x209100de; //Output rate of the NMEA-GX-GBS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GBS_UART2 = 0x209100df; //Output rate of the NMEA-GX-GBS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GBS_USB = 0x209100e0; //Output rate of the NMEA-GX-GBS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GGA_I2C = 0x209100ba; //Output rate of the NMEA-GX-GGA message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GGA_SPI = 0x209100be; //Output rate of the NMEA-GX-GGA message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GGA_UART1 = 0x209100bb; //Output rate of the NMEA-GX-GGA message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GGA_UART2 = 0x209100bc; //Output rate of the NMEA-GX-GGA message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GGA_USB = 0x209100bd; //Output rate of the NMEA-GX-GGA message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GLL_I2C = 0x209100c9; //Output rate of the NMEA-GX-GLL message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GLL_SPI = 0x209100cd; //Output rate of the NMEA-GX-GLL message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GLL_UART1 = 0x209100ca; //Output rate of the NMEA-GX-GLL message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GLL_UART2 = 0x209100cb; //Output rate of the NMEA-GX-GLL message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GLL_USB = 0x209100cc; //Output rate of the NMEA-GX-GLL message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GNS_I2C = 0x209100b5; //Output rate of the NMEA-GX-GNS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GNS_SPI = 0x209100b9; //Output rate of the NMEA-GX-GNS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GNS_UART1 = 0x209100b6; //Output rate of the NMEA-GX-GNS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GNS_UART2 = 0x209100b7; //Output rate of the NMEA-GX-GNS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GNS_USB = 0x209100b8; //Output rate of the NMEA-GX-GNS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GRS_I2C = 0x209100ce; //Output rate of the NMEA-GX-GRS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GRS_SPI = 0x209100d2; //Output rate of the NMEA-GX-GRS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GRS_UART1 = 0x209100cf; //Output rate of the NMEA-GX-GRS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GRS_UART2 = 0x209100d0; //Output rate of the NMEA-GX-GRS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GRS_USB = 0x209100d1; //Output rate of the NMEA-GX-GRS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSA_I2C = 0x209100bf; //Output rate of the NMEA-GX-GSA message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSA_SPI = 0x209100c3; //Output rate of the NMEA-GX-GSA message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSA_UART1 = 0x209100c0; //Output rate of the NMEA-GX-GSA message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSA_UART2 = 0x209100c1; //Output rate of the NMEA-GX-GSA message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSA_USB = 0x209100c2; //Output rate of the NMEA-GX-GSA message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GST_I2C = 0x209100d3; //Output rate of the NMEA-GX-GST message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GST_SPI = 0x209100d7; //Output rate of the NMEA-GX-GST message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GST_UART1 = 0x209100d4; //Output rate of the NMEA-GX-GST message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GST_UART2 = 0x209100d5; //Output rate of the NMEA-GX-GST message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GST_USB = 0x209100d6; //Output rate of the NMEA-GX-GST message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSV_I2C = 0x209100c4; //Output rate of the NMEA-GX-GSV message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSV_SPI = 0x209100c8; //Output rate of the NMEA-GX-GSV message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSV_UART1 = 0x209100c5; //Output rate of the NMEA-GX-GSV message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSV_UART2 = 0x209100c6; //Output rate of the NMEA-GX-GSV message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_GSV_USB = 0x209100c7; //Output rate of the NMEA-GX-GSV message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RLM_I2C = 0x20910400; //Output rate of the NMEA-GX-RLM message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RLM_SPI = 0x20910404; //Output rate of the NMEA-GX-RLM message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RLM_UART1 = 0x20910401; //Output rate of the NMEA-GX-RLM message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RLM_UART2 = 0x20910402; //Output rate of the NMEA-GX-RLM message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RLM_USB = 0x20910403; //Output rate of the NMEA-GX-RLM message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RMC_I2C = 0x209100ab; //Output rate of the NMEA-GX-RMC message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RMC_SPI = 0x209100af; //Output rate of the NMEA-GX-RMC message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RMC_UART1 = 0x209100ac; //Output rate of the NMEA-GX-RMC message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RMC_UART2 = 0x209100ad; //Output rate of the NMEA-GX-RMC message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_RMC_USB = 0x209100ae; //Output rate of the NMEA-GX-RMC message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VLW_I2C = 0x209100e7; //Output rate of the NMEA-GX-VLW message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VLW_SPI = 0x209100eb; //Output rate of the NMEA-GX-VLW message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VLW_UART1 = 0x209100e8; //Output rate of the NMEA-GX-VLW message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VLW_UART2 = 0x209100e9; //Output rate of the NMEA-GX-VLW message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VLW_USB = 0x209100ea; //Output rate of the NMEA-GX-VLW message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VTG_I2C = 0x209100b0; //Output rate of the NMEA-GX-VTG message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VTG_SPI = 0x209100b4; //Output rate of the NMEA-GX-VTG message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VTG_UART1 = 0x209100b1; //Output rate of the NMEA-GX-VTG message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VTG_UART2 = 0x209100b2; //Output rate of the NMEA-GX-VTG message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_VTG_USB = 0x209100b3; //Output rate of the NMEA-GX-VTG message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_ZDA_I2C = 0x209100d8; //Output rate of the NMEA-GX-ZDA message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_ZDA_SPI = 0x209100dc; //Output rate of the NMEA-GX-ZDA message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_ZDA_UART1 = 0x209100d9; //Output rate of the NMEA-GX-ZDA message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_ZDA_UART2 = 0x209100da; //Output rate of the NMEA-GX-ZDA message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_NMEA_ID_ZDA_USB = 0x209100db; //Output rate of the NMEA-GX-ZDA message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYP_I2C = 0x209100ec; //Output rate of the NMEA-GX-PUBX00 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYP_SPI = 0x209100f0; //Output rate of the NMEA-GX-PUBX00 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYP_UART1 = 0x209100ed; //Output rate of the NMEA-GX-PUBX00 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYP_UART2 = 0x209100ee; //Output rate of the NMEA-GX-PUBX00 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYP_USB = 0x209100ef; //Output rate of the NMEA-GX-PUBX00 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYS_I2C = 0x209100f1; //Output rate of the NMEA-GX-PUBX03 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYS_SPI = 0x209100f5; //Output rate of the NMEA-GX-PUBX03 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYS_UART1 = 0x209100f2; //Output rate of the NMEA-GX-PUBX03 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYS_UART2 = 0x209100f3; //Output rate of the NMEA-GX-PUBX03 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYS_USB = 0x209100f4; //Output rate of the NMEA-GX-PUBX03 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYT_I2C = 0x209100f6; //Output rate of the NMEA-GX-PUBX04 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYT_SPI = 0x209100fa; //Output rate of the NMEA-GX-PUBX04 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYT_UART1 = 0x209100f7; //Output rate of the NMEA-GX-PUBX04 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYT_UART2 = 0x209100f8; //Output rate of the NMEA-GX-PUBX04 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_PUBX_ID_POLYT_USB = 0x209100f9; //Output rate of the NMEA-GX-PUBX04 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1005_I2C = 0x209102bd; //Output rate of the RTCM-3X-TYPE1005 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1005_SPI = 0x209102c1; //Output rate of the RTCM-3X-TYPE1005 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1005_UART1 = 0x209102be;//Output rate of the RTCM-3X-TYPE1005 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1005_UART2 = 0x209102bf;//Output rate of the RTCM-3X-TYPE1005 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1005_USB = 0x209102c0; //Output rate of the RTCM-3X-TYPE1005 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1074_I2C = 0x2091035e; //Output rate of the RTCM-3X-TYPE1074 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1074_SPI = 0x20910362; //Output rate of the RTCM-3X-TYPE1074 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1074_UART1 = 0x2091035f;//Output rate of the RTCM-3X-TYPE1074 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1074_UART2 = 0x20910360;//Output rate of the RTCM-3X-TYPE1074 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1074_USB = 0x20910361; //Output rate of the RTCM-3X-TYPE1074 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1077_I2C = 0x209102cc; //Output rate of the RTCM-3X-TYPE1077 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1077_SPI = 0x209102d0; //Output rate of the RTCM-3X-TYPE1077 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1077_UART1 = 0x209102cd;//Output rate of the RTCM-3X-TYPE1077 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1077_UART2 = 0x209102ce;//Output rate of the RTCM-3X-TYPE1077 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1077_USB = 0x209102cf; //Output rate of the RTCM-3X-TYPE1077 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1084_I2C = 0x20910363; //Output rate of the RTCM-3X-TYPE1084 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1084_SPI = 0x20910367; //Output rate of the RTCM-3X-TYPE1084 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1084_UART1 = 0x20910364;//Output rate of the RTCM-3X-TYPE1084 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1084_UART2 = 0x20910365;//Output rate of the RTCM-3X-TYPE1084 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1084_USB = 0x20910366; //Output rate of the RTCM-3X-TYPE1084 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1087_I2C = 0x209102d1; //Output rate of the RTCM-3X-TYPE1087 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1087_SPI = 0x209102d5; //Output rate of the RTCM-3X-TYPE1087 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1087_UART1 = 0x209102d2;//Output rate of the RTCM-3X-TYPE1087 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1087_UART2 = 0x209102d3;//Output rate of the RTCM-3X-TYPE1087 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1087_USB = 0x209102d4; //Output rate of the RTCM-3X-TYPE1087 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1094_I2C = 0x20910368; //Output rate of the RTCM-3X-TYPE1094 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1094_SPI = 0x2091036c; //Output rate of the RTCM-3X-TYPE1094 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1094_UART1 = 0x20910369;//Output rate of the RTCM-3X-TYPE1094 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1094_UART2 = 0x2091036a;//Output rate of the RTCM-3X-TYPE1094 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1094_USB = 0x2091036b; //Output rate of the RTCM-3X-TYPE1094 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1097_I2C = 0x20910318; //Output rate of the RTCM-3X-TYPE1097 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1097_SPI = 0x2091031c; //Output rate of the RTCM-3X-TYPE1097 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1097_UART1 = 0x20910319;//Output rate of the RTCM-3X-TYPE1097 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1097_UART2 = 0x2091031a;//Output rate of the RTCM-3X-TYPE1097 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1097_USB = 0x2091031b; //Output rate of the RTCM-3X-TYPE1097 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1124_I2C = 0x2091036d; //Output rate of the RTCM-3X-TYPE1124 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1124_SPI = 0x20910371; //Output rate of the RTCM-3X-TYPE1124 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1124_UART1 = 0x2091036e;//Output rate of the RTCM-3X-TYPE1124 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1124_UART2 = 0x2091036f;//Output rate of the RTCM-3X-TYPE1124 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1124_USB = 0x20910370; //Output rate of the RTCM-3X-TYPE1124 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1127_I2C = 0x209102d6; //Output rate of the RTCM-3X-TYPE1127 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1127_SPI = 0x209102da; //Output rate of the RTCM-3X-TYPE1127 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1127_UART1 = 0x209102d7;//Output rate of the RTCM-3X-TYPE1127 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1127_UART2 = 0x209102d8;//Output rate of the RTCM-3X-TYPE1127 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1127_USB = 0x209102d9; //Output rate of the RTCM-3X-TYPE1127 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1230_I2C = 0x20910303; //Output rate of the RTCM-3X-TYPE1230 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1230_SPI = 0x20910307; //Output rate of the RTCM-3X-TYPE1230 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1230_UART1 = 0x20910304;//Output rate of the RTCM-3X-TYPE1230 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1230_UART2 = 0x20910305;//Output rate of the RTCM-3X-TYPE1230 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE1230_USB = 0x20910306; //Output rate of the RTCM-3X-TYPE1230 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_0_I2C = 0x209102fe;//Output rate of the RTCM-3X-TYPE4072_0 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_0_SPI = 0x20910302;//Output rate of the RTCM-3X-TYPE4072_0 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_0_UART1 = 0x209102ff; //Output rate of the RTCM-3X-TYPE4072_0 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_0_UART2 = 0x20910300; //Output rate of the RTCM-3X-TYPE4072_0 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_0_USB = 0x20910301;//Output rate of the RTCM-3X-TYPE4072_0 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_1_I2C = 0x20910381;//Output rate of the RTCM-3X-TYPE4072_1 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_1_SPI = 0x20910385;//Output rate of the RTCM-3X-TYPE4072_1 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_1_UART1 = 0x20910382; //Output rate of the RTCM-3X-TYPE4072_1 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_1_UART2 = 0x20910383; //Output rate of the RTCM-3X-TYPE4072_1 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_RTCM_3X_TYPE4072_1_USB = 0x20910384;//Output rate of the RTCM-3X-TYPE4072_1 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_LOG_INFO_I2C = 0x20910259; //Output rate of the UBX-LOG-INFO message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_LOG_INFO_SPI = 0x2091025d; //Output rate of the UBX-LOG-INFO message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_LOG_INFO_UART1 = 0x2091025a; //Output rate of the UBX-LOG-INFO message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_LOG_INFO_UART2 = 0x2091025b; //Output rate of the UBX-LOG-INFO message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_LOG_INFO_USB = 0x2091025c; //Output rate of the UBX-LOG-INFO message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_COMMS_I2C = 0x2091034f; //Output rate of the UBX-MON-COMMS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_COMMS_SPI = 0x20910353; //Output rate of the UBX-MON-COMMS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_COMMS_UART1 = 0x20910350; //Output rate of the UBX-MON-COMMS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_COMMS_UART2 = 0x20910351; //Output rate of the UBX-MON-COMMS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_COMMS_USB = 0x20910352; //Output rate of the UBX-MON-COMMS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW2_I2C = 0x209101b9; //Output rate of the UBX-MON-HW2 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW2_SPI = 0x209101bd; //Output rate of the UBX-MON-HW2 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW2_UART1 = 0x209101ba; //Output rate of the UBX-MON-HW2 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW2_UART2 = 0x209101bb; //Output rate of the UBX-MON-HW2 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW2_USB = 0x209101bc; //Output rate of the UBX-MON-HW2 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW3_I2C = 0x20910354; //Output rate of the UBX-MON-HW3 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW3_SPI = 0x20910358; //Output rate of the UBX-MON-HW3 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW3_UART1 = 0x20910355; //Output rate of the UBX-MON-HW3 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW3_UART2 = 0x20910356; //Output rate of the UBX-MON-HW3 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW3_USB = 0x20910357; //Output rate of the UBX-MON-HW3 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW_I2C = 0x209101b4; //Output rate of the UBX-MON-HW message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW_SPI = 0x209101b8; //Output rate of the UBX-MON-HW message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW_UART1 = 0x209101b5; //Output rate of the UBX-MON-HW message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW_UART2 = 0x209101b6; //Output rate of the UBX-MON-HW message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_HW_USB = 0x209101b7; //Output rate of the UBX-MON-HW message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_IO_I2C = 0x209101a5; //Output rate of the UBX-MON-IO message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_IO_SPI = 0x209101a9; //Output rate of the UBX-MON-IO message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_IO_UART1 = 0x209101a6; //Output rate of the UBX-MON-IO message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_IO_UART2 = 0x209101a7; //Output rate of the UBX-MON-IO message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_IO_USB = 0x209101a8; //Output rate of the UBX-MON-IO message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_MSGPP_I2C = 0x20910196; //Output rate of the UBX-MON-MSGPP message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_MSGPP_SPI = 0x2091019a; //Output rate of the UBX-MON-MSGPP message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_MSGPP_UART1 = 0x20910197; //Output rate of the UBX-MON-MSGPP message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_MSGPP_UART2 = 0x20910198; //Output rate of the UBX-MON-MSGPP message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_MSGPP_USB = 0x20910199; //Output rate of the UBX-MON-MSGPP message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RF_I2C = 0x20910359; //Output rate of the UBX-MON-RF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RF_SPI = 0x2091035d; //Output rate of the UBX-MON-RF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RF_UART1 = 0x2091035a; //Output rate of the UBX-MON-RF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RF_UART2 = 0x2091035b; //Output rate of the UBX-MON-RF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RF_USB = 0x2091035c; // Output rate of the UBX-MON-RF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXBUF_I2C = 0x209101a0; // Output rate of the UBX-MON-RXBUF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXBUF_SPI = 0x209101a4; // Output rate of the UBX-MON-RXBUF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXBUF_UART1 = 0x209101a1; // Output rate of the UBX-MON-RXBUF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXBUF_UART2 = 0x209101a2; // Output rate of the UBX-MON-RXBUF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXBUF_USB = 0x209101a3; // Output rate of the UBX-MON-RXBUF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXR_I2C = 0x20910187; // Output rate of the UBX-MON-RXR message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXR_SPI = 0x2091018b; // Output rate of the UBX-MON-RXR message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXR_UART1 = 0x20910188; // Output rate of the UBX-MON-RXR message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXR_UART2 = 0x20910189; // Output rate of the UBX-MON-RXR message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_RXR_USB = 0x2091018a; // Output rate of the UBX-MON-RXR message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_SPAN_I2C = 0x2091038b; // Output rate of the UBX-MON-SPAN message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_SPAN_SPI = 0x2091038f; // Output rate of the UBX-MON-SPAN message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_SPAN_UART1 = 0x2091038c; // Output rate of the UBX-MON-SPAN message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_SPAN_UART2 = 0x2091038d; // Output rate of the UBX-MON-SPAN message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_SPAN_USB = 0x2091038e; // Output rate of the UBX-MON-SPAN message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_TXBUF_I2C = 0x2091019b; // Output rate of the UBX-MON-TXBUF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_TXBUF_SPI = 0x2091019f; // Output rate of the UBX-MON-TXBUF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_TXBUF_UART1 = 0x2091019c; // Output rate of the UBX-MON-TXBUF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_TXBUF_UART2 = 0x2091019d; // Output rate of the UBX-MON-TXBUF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_MON_TXBUF_USB = 0x2091019e; // Output rate of the UBX-MON-TXBUF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ATT_I2C = 0x2091001f; // Output rate of the UBX_NAV_ATT message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ATT_SPI = 0x20910023; // Output rate of the UBX_NAV_ATT message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ATT_UART1 = 0x20910020; // Output rate of the UBX_NAV_ATT message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ATT_UART2 = 0x20910021; // Output rate of the UBX_NAV_ATT message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ATT_USB = 0x20910022; // Output rate of the UBX_NAV_ATT message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_CLOCK_I2C = 0x20910065; // Output rate of the UBX-NAV-CLOCK message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_CLOCK_SPI = 0x20910069; // Output rate of the UBX-NAV-CLOCK message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_CLOCK_UART1 = 0x20910066; // Output rate of the UBX-NAV-CLOCK message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_CLOCK_UART2 = 0x20910067; // Output rate of the UBX-NAV-CLOCK message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_CLOCK_USB = 0x20910068; // Output rate of the UBX-NAV-CLOCK message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_DOP_I2C = 0x20910038; // Output rate of the UBX-NAV-DOP message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_DOP_SPI = 0x2091003c; // Output rate of the UBX-NAV-DOP message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_DOP_UART1 = 0x20910039; // Output rate of the UBX-NAV-DOP message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_DOP_UART2 = 0x2091003a; // Output rate of the UBX-NAV-DOP message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_DOP_USB = 0x2091003b; // Output rate of the UBX-NAV-DOP message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_EOE_I2C = 0x2091015f; // Output rate of the UBX-NAV-EOE message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_EOE_SPI = 0x20910163; // Output rate of the UBX-NAV-EOE message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_EOE_UART1 = 0x20910160; // Output rate of the UBX-NAV-EOE message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_EOE_UART2 = 0x20910161; // Output rate of the UBX-NAV-EOE message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_EOE_USB = 0x20910162; // Output rate of the UBX-NAV-EOE message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_GEOFENCE_I2C = 0x209100a1; // Output rate of the UBX-NAV-GEOFENCE message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_GEOFENCE_SPI = 0x209100a5; // Output rate of the UBX-NAV-GEOFENCE message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_GEOFENCE_UART1 = 0x209100a2;// Output rate of the UBX-NAV-GEOFENCE message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_GEOFENCE_UART2 = 0x209100a3;// Output rate of the UBX-NAV-GEOFENCE message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_GEOFENCE_USB = 0x209100a4; // Output rate of the UBX-NAV-GEOFENCE message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSECEF_I2C = 0x2091002e;// Output rate of the UBX-NAV-HPPOSECEF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSECEF_SPI = 0x20910032;// Output rate of the UBX-NAV-HPPOSECEF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSECEF_UART1 = 0x2091002f;// Output rate of the UBX-NAV-HPPOSECEF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSECEF_UART2 = 0x20910030;// Output rate of the UBX-NAV-HPPOSECEF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB = 0x20910031;// Output rate of the UBX-NAV-HPPOSECEF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSLLH_I2C = 0x20910033; // Output rate of the UBX-NAV-HPPOSLLH message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSLLH_SPI = 0x20910037; // Output rate of the UBX-NAV-HPPOSLLH message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSLLH_UART1 = 0x20910034;// Output rate of the UBX-NAV-HPPOSLLH message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSLLH_UART2 = 0x20910035;// Output rate of the UBX-NAV-HPPOSLLH message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB = 0x20910036; // Output rate of the UBX-NAV-HPPOSLLH message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ODO_I2C = 0x2091007e; // Output rate of the UBX-NAV-ODO message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ODO_SPI = 0x20910082; // Output rate of the UBX-NAV-ODO message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ODO_UART1 = 0x2091007f; // Output rate of the UBX-NAV-ODO message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ODO_UART2 = 0x20910080; // Output rate of the UBX-NAV-ODO message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ODO_USB = 0x20910081; // Output rate of the UBX-NAV-ODO message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ORB_I2C = 0x20910010; // Output rate of the UBX-NAV-ORB message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ORB_SPI = 0x20910014; // Output rate of the UBX-NAV-ORB message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ORB_UART1 = 0x20910011; // Output rate of the UBX-NAV-ORB message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ORB_UART2 = 0x20910012; // Output rate of the UBX-NAV-ORB message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_ORB_USB = 0x20910013; // Output rate of the UBX-NAV-ORB message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSECEF_I2C = 0x20910024; // Output rate of the UBX-NAV-POSECEF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSECEF_SPI = 0x20910028; // Output rate of the UBX-NAV-POSECEF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSECEF_UART1 = 0x20910025;// Output rate of the UBX-NAV-POSECEF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSECEF_UART2 = 0x20910026;// Output rate of the UBX-NAV-POSECEF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSECEF_USB = 0x20910027; // Output rate of the UBX-NAV-POSECEF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSLLH_I2C = 0x20910029; // Output rate of the UBX-NAV-POSLLH message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSLLH_SPI = 0x2091002d; // Output rate of the UBX-NAV-POSLLH message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSLLH_UART1 = 0x2091002a; // Output rate of the UBX-NAV-POSLLH message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSLLH_UART2 = 0x2091002b; // Output rate of the UBX-NAV-POSLLH message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_POSLLH_USB = 0x2091002c; // Output rate of the UBX-NAV-POSLLH message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_PVT_I2C = 0x20910006; // Output rate of the UBX-NAV-PVT message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_PVT_SPI = 0x2091000a; // Output rate of the UBX-NAV-PVT message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_PVT_UART1 = 0x20910007; // Output rate of the UBX-NAV-PVT message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_PVT_UART2 = 0x20910008; // Output rate of the UBX-NAV-PVT message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_PVT_USB = 0x20910009; // Output rate of the UBX-NAV-PVT message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_RELPOSNED_I2C = 0x2091008d; // Output rate of the UBX-NAV-RELPOSNED message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_RELPOSNED_SPI = 0x20910091;// Output rate of the UBX-NAV-RELPOSNED message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_RELPOSNED_UART1 = 0x2091008e;// Output rate of the UBX-NAV-RELPOSNED message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_RELPOSNED_UART2 = 0x2091008f;// Output rate of the UBX-NAV-RELPOSNED message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_RELPOSNED_USB = 0x20910090;// Output rate of the UBX-NAV-RELPOSNED message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SAT_I2C = 0x20910015; // Output rate of the UBX-NAV-SAT message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SAT_SPI = 0x20910019; // Output rate of the UBX-NAV-SAT message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SAT_UART1 = 0x20910016; // Output rate of the UBX-NAV-SAT message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SAT_UART2 = 0x20910017; // Output rate of the UBX-NAV-SAT message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SAT_USB = 0x20910018; // Output rate of the UBX-NAV-SAT message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SBAS_I2C = 0x2091006a; // Output rate of the UBX-NAV-SBAS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SBAS_SPI = 0x2091006e; // Output rate of the UBX-NAV-SBAS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SBAS_UART1 = 0x2091006b; // Output rate of the UBX-NAV-SBAS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SBAS_UART2 = 0x2091006c; // Output rate of the UBX-NAV-SBAS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SBAS_USB = 0x2091006d; // Output rate of the UBX-NAV-SBAS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SIG_I2C = 0x20910345; // Output rate of the UBX-NAV-SIG message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SIG_SPI = 0x20910349; // Output rate of the UBX-NAV-SIG message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SIG_UART1 = 0x20910346; // Output rate of the UBX-NAV-SIG message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SIG_UART2 = 0x20910347; // Output rate of the UBX-NAV-SIG message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SIG_USB = 0x20910348; // Output rate of the UBX-NAV-SIG message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SLAS_I2C = 0x20910336; // Output rate of the UBX-NAV-SLAS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SLAS_SPI = 0x2091033a; // Output rate of the UBX-NAV-SLAS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SLAS_UART1 = 0x20910337; // Output rate of the UBX-NAV-SLAS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SLAS_UART2 = 0x20910338; // Output rate of the UBX-NAV-SLAS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SLAS_USB = 0x20910339; // Output rate of the UBX-NAV-SLAS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_STATUS_I2C = 0x2091001a; // Output rate of the UBX-NAV-STATUS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_STATUS_SPI = 0x2091001e; // Output rate of the UBX-NAV-STATUS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_STATUS_UART1 = 0x2091001b; // Output rate of the UBX-NAV-STATUS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_STATUS_UART2 = 0x2091001c; // Output rate of the UBX-NAV-STATUS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_STATUS_USB = 0x2091001d; // Output rate of the UBX-NAV-STATUS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SVIN_I2C = 0x20910088; // Output rate of the UBX-NAV-SVIN message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SVIN_SPI = 0x2091008c; // Output rate of the UBX-NAV-SVIN message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SVIN_UART1 = 0x20910089; // Output rate of the UBX-NAV-SVIN message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SVIN_UART2 = 0x2091008a; // Output rate of the UBX-NAV-SVIN message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_SVIN_USB = 0x2091008b; // Output rate of the UBX-NAV-SVIN message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEBDS_I2C = 0x20910051; // Output rate of the UBX-NAV-TIMEBDS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEBDS_SPI = 0x20910055; // Output rate of the UBX-NAV-TIMEBDS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEBDS_UART1 = 0x20910052;// Output rate of the UBX-NAV-TIMEBDS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEBDS_UART2 = 0x20910053;// Output rate of the UBX-NAV-TIMEBDS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEBDS_USB = 0x20910054; // Output rate of the UBX-NAV-TIMEBDS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGAL_I2C = 0x20910056; // Output rate of the UBX-NAV-TIMEGAL message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGAL_SPI = 0x2091005a; // Output rate of the UBX-NAV-TIMEGAL message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGAL_UART1 = 0x20910057;// Output rate of the UBX-NAV-TIMEGAL message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGAL_UART2 = 0x20910058;// Output rate of the UBX-NAV-TIMEGAL message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGAL_USB = 0x20910059; // Output rate of the UBX-NAV-TIMEGAL message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGLO_I2C = 0x2091004c; // Output rate of the UBX-NAV-TIMEGLO message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGLO_SPI = 0x20910050; // Output rate of the UBX-NAV-TIMEGLO message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGLO_UART1 = 0x2091004d;// Output rate of the UBX-NAV-TIMEGLO message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGLO_UART2 = 0x2091004e;// Output rate of the UBX-NAV-TIMEGLO message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGLO_USB = 0x2091004f; // Output rate of the UBX-NAV-TIMEGLO message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGPS_I2C = 0x20910047; // Output rate of the UBX-NAV-TIMEGPS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGPS_SPI = 0x2091004b; // Output rate of the UBX-NAV-TIMEGPS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGPS_UART1 = 0x20910048;// Output rate of the UBX-NAV-TIMEGPS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGPS_UART2 = 0x20910049;// Output rate of the UBX-NAV-TIMEGPS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEGPS_USB = 0x2091004a; // Output rate of the UBX-NAV-TIMEGPS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMELS_I2C = 0x20910060; // Output rate of the UBX-NAV-TIMELS message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMELS_SPI = 0x20910064; // Output rate of the UBX-NAV-TIMELS message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMELS_UART1 = 0x20910061; // Output rate of the UBX-NAV-TIMELS message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMELS_UART2 = 0x20910062; // Output rate of the UBX-NAV-TIMELS message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMELS_USB = 0x20910063; // Output rate of the UBX-NAV-TIMELS message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_I2C = 0x20910386; // Output rate of the UBX-NAV-TIMEQZSSmessage on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_SPI = 0x2091038a; // Output rate of the UBX-NAV-TIMEQZSSmessage on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART1 = 0x20910387;// Output rate of the UBX-NAV-TIMEQZSSmessage on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_UART2 = 0x20910388;// Output rate of the UBX-NAV-TIMEQZSSmessage on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEQZSS_USB = 0x20910389; // Output rate of the UBX-NAV-TIMEQZSSmessage on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_I2C = 0x2091005b; // Output rate of the UBX-NAV-TIMEUTC message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_SPI = 0x2091005f; // Output rate of the UBX-NAV-TIMEUTC message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_UART1 = 0x2091005c;// Output rate of the UBX-NAV-TIMEUTC message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_UART2 = 0x2091005d;// Output rate of the UBX-NAV-TIMEUTC message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_TIMEUTC_USB = 0x2091005e; // Output rate of the UBX-NAV-TIMEUTC message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELECEF_I2C = 0x2091003d; // Output rate of the UBX-NAV-VELECEF message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELECEF_SPI = 0x20910041; // Output rate of the UBX-NAV-VELECEF message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELECEF_UART1 = 0x2091003e;// Output rate of the UBX-NAV-VELECEF message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELECEF_UART2 = 0x2091003f;// Output rate of the UBX-NAV-VELECEF message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELECEF_USB = 0x20910040; // Output rate of the UBX-NAV-VELECEF message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELNED_I2C = 0x20910042; // Output rate of the UBX-NAV-VELNED message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELNED_SPI = 0x20910046; // Output rate of the UBX-NAV-VELNED message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELNED_UART1 = 0x20910043; // Output rate of the UBX-NAV-VELNED message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELNED_UART2 = 0x20910044; // Output rate of the UBX-NAV-VELNED message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_NAV_VELNED_USB = 0x20910045; // Output rate of the UBX-NAV-VELNED message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_MEASX_I2C = 0x20910204; // Output rate of the UBX-RXM-MEASX message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_MEASX_SPI = 0x20910208; // Output rate of the UBX-RXM-MEASX message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_MEASX_UART1 = 0x20910205; // Output rate of the UBX-RXM-MEASX message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_MEASX_UART2 = 0x20910206; // Output rate of the UBX-RXM-MEASX message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_MEASX_USB = 0x20910207; // Output rate of the UBX-RXM-MEASX message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RAWX_I2C = 0x209102a4; // Output rate of the UBX-RXM-RAWX message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RAWX_SPI = 0x209102a8; // Output rate of the UBX-RXM-RAWX message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RAWX_UART1 = 0x209102a5; // Output rate of the UBX-RXM-RAWX message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RAWX_UART2 = 0x209102a6; // Output rate of the UBX-RXM-RAWX message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RAWX_USB = 0x209102a7; // Output rate of the UBX-RXM-RAWX message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RLM_I2C = 0x2091025e; // Output rate of the UBX-RXM-RLM message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RLM_SPI = 0x20910262; // Output rate of the UBX-RXM-RLM message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RLM_UART1 = 0x2091025f; // Output rate of the UBX-RXM-RLM message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RLM_UART2 = 0x20910260; // Output rate of the UBX-RXM-RLM message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RLM_USB = 0x20910261; // Output rate of the UBX-RXM-RLM message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RTCM_I2C = 0x20910268; // Output rate of the UBX-RXM-RTCM message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RTCM_SPI = 0x2091026c; // Output rate of the UBX-RXM-RTCM message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RTCM_UART1 = 0x20910269; // Output rate of the UBX-RXM-RTCM message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RTCM_UART2 = 0x2091026a; // Output rate of the UBX-RXM-RTCM message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_RTCM_USB = 0x2091026b; // Output rate of the UBX-RXM-RTCM message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_SFRBX_I2C = 0x20910231; // Output rate of the UBX-RXM-SFRBX message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_SFRBX_SPI = 0x20910235; // Output rate of the UBX-RXM-SFRBX message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_SFRBX_UART1 = 0x20910232; // Output rate of the UBX-RXM-SFRBX message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_SFRBX_UART2 = 0x20910233; // Output rate of the UBX-RXM-SFRBX message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_RXM_SFRBX_USB = 0x20910234; // Output rate of the UBX-RXM-SFRBX message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_I2C = 0x20910178; // Output rate of the UBX-TIM-TM2 message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_SPI = 0x2091017c; // Output rate of the UBX-TIM-TM2 message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_UART1 = 0x20910179; // Output rate of the UBX-TIM-TM2 message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_UART2 = 0x2091017a; // Output rate of the UBX-TIM-TM2 message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TM2_USB = 0x2091017b; // Output rate of the UBX-TIM-TM2 message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TP_I2C = 0x2091017d; // Output rate of the UBX-TIM-TP message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TP_SPI = 0x20910181; // Output rate of the UBX-TIM-TP message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TP_UART1 = 0x2091017e; // Output rate of the UBX-TIM-TP message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TP_UART2 = 0x2091017f; // Output rate of the UBX-TIM-TP message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_TP_USB = 0x20910180; // Output rate of the UBX-TIM-TP message on port USB
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_VRFY_I2C = 0x20910092; // Output rate of the UBX-TIM-VRFY message on port I2C
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_VRFY_SPI = 0x20910096; // Output rate of the UBX-TIM-VRFY message on port SPI
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_VRFY_UART1 = 0x20910093; // Output rate of the UBX-TIM-VRFY message on port UART1
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_VRFY_UART2 = 0x20910094; // Output rate of the UBX-TIM-VRFY message on port UART2
|
||||
const uint32_t UBLOX_CFG_MSGOUT_UBX_TIM_VRFY_USB = 0x20910095; // Output rate of the UBX-TIM-VRFY message on port USB
|
||||
|
||||
//CFG-NAVHPG: High precision navigation configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_NAVHPG_DGNSSMODE = 0x20140011; // Differential corrections mode
|
||||
|
||||
//CFG-NAVSPG: Standard precision navigation configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_NAVSPG_FIXMODE = 0x20110011; // Position fix mode
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INIFIX3D = 0x10110013; // Initial fix must be a 3D fix
|
||||
const uint32_t UBLOX_CFG_NAVSPG_WKNROLLOVER = 0x30110017; // GPS week rollover number
|
||||
const uint32_t UBLOX_CFG_NAVSPG_UTCSTANDARD = 0x2011001c; // UTC standard to be used
|
||||
const uint32_t UBLOX_CFG_NAVSPG_DYNMODEL = 0x20110021; // Dynamic platform model
|
||||
const uint32_t UBLOX_CFG_NAVSPG_ACKAIDING = 0x10110025; // Acknowledge assistance input messages
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USE_USRDAT = 0x10110061; // Use user geodetic datum parameters
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_MAJA = 0x50110062; // Geodetic datum semi-major axis
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_FLAT = 0x50110063; // Geodetic datum 1.0 flattening
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_DX = 0x40110064; // Geodetic datum X axis shift at the origin
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_DY = 0x40110065; // Geodetic datum Y axis shift at the origin
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_DZ = 0x40110066; // Geodetic datum Z axis shift at the origin
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_ROTX = 0x40110067; // arcsec Geodetic datum rotation about the X axis
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_ROTY = 0x40110068; // arcsec Geodetic datum rotation about the Y axis
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_ROTZ = 0x40110069; // arcsec Geodetic datum rotation about the Z axis
|
||||
const uint32_t UBLOX_CFG_NAVSPG_USRDAT_SCALE = 0x4011006a; // ppm Geodetic datum scale factor
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_MINSVS = 0x201100a1; // Minimum number of satellites for navigation
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_MAXSVS = 0x201100a2; // Maximum number of satellites for navigation
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_MINCNO = 0x201100a3; // Minimum satellite signal level for navigation
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_MINELEV = 0x201100a4; // Minimum elevation for a GNSS satellite to be used in navigation
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_NCNOTHRS = 0x201100aa; // Number of satellites required to have C/N0 above const uint32_t UBLOX_CFG_NAVSPG-INFIL_CNOTHRS for a fix to be attempted
|
||||
const uint32_t UBLOX_CFG_NAVSPG_INFIL_CNOTHRS = 0x201100ab; // C/N0 threshold for deciding whether to attempt a fix
|
||||
const uint32_t UBLOX_CFG_NAVSPG_OUTFIL_PDOP = 0x301100b1; // Output filter position DOP mask (threshold)
|
||||
const uint32_t UBLOX_CFG_NAVSPG_OUTFIL_TDOP = 0x301100b2; // Output filter time DOP mask (threshold)
|
||||
const uint32_t UBLOX_CFG_NAVSPG_OUTFIL_PACC = 0x301100b3; // Output filter position accuracy mask (threshold)
|
||||
const uint32_t UBLOX_CFG_NAVSPG_OUTFIL_TACC = 0x301100b4; // Output filter time accuracy mask (threshold)
|
||||
const uint32_t UBLOX_CFG_NAVSPG_OUTFIL_FACC = 0x301100b5; // Output filter frequency accuracy mask (threshold)
|
||||
const uint32_t UBLOX_CFG_NAVSPG_CONSTR_ALT = 0x401100c1; // Fixed altitude (mean sea level) for 2D fix mode
|
||||
const uint32_t UBLOX_CFG_NAVSPG_CONSTR_ALTVAR = 0x401100c2; // Fixed altitude variance for 2D mode
|
||||
const uint32_t UBLOX_CFG_NAVSPG_CONSTR_DGNSSTO = 0x201100c4; // DGNSS timeout
|
||||
|
||||
//CFG-NMEA: NMEA protocol configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_NMEA_PROTVER = 0x20930001; // NMEA protocol version
|
||||
const uint32_t UBLOX_CFG_NMEA_MAXSVS = 0x20930002; // Maximum number of SVs to report per Talker ID
|
||||
const uint32_t UBLOX_CFG_NMEA_COMPAT = 0x10930003; // Enable compatibility mode
|
||||
const uint32_t UBLOX_CFG_NMEA_CONSIDER = 0x10930004; // Enable considering mode
|
||||
const uint32_t UBLOX_CFG_NMEA_LIMIT82 = 0x10930005; // Enable strict limit to 82 characters maximum NMEA message length
|
||||
const uint32_t UBLOX_CFG_NMEA_HIGHPREC = 0x10930006; // Enable high precision mode
|
||||
const uint32_t UBLOX_CFG_NMEA_SVNUMBERING = 0x20930007; // Display configuration for SVs that do not have value defined in NMEA
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_GPS = 0x10930011; // Disable reporting of GPS satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_SBAS = 0x10930012; // Disable reporting of SBAS satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_GAL = 0x10930013; // Disable reporting of Galileo satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_QZSS = 0x10930015; // Disable reporting of QZSS satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_GLO = 0x10930016; // Disable reporting of GLONASS satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_FILT_BDS = 0x10930017; // Disable reporting of BeiDou satellites
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_INVFIX = 0x10930021; // Enable position output for failed or invalid fixes
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_MSKFIX = 0x10930022; // Enable position output for invalid fixes
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_INVTIME = 0x10930023; // Enable time output for invalid times
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_INVDATE = 0x10930024; // Enable date output for invalid dates
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_ONLYGPS = 0x10930025; // Restrict output to GPS satellites only
|
||||
const uint32_t UBLOX_CFG_NMEA_OUT_FROZENCOG = 0x10930026; // Enable course over ground output even if it is frozen
|
||||
const uint32_t UBLOX_CFG_NMEA_MAINTALKERID = 0x20930031; // Main Talker ID
|
||||
const uint32_t UBLOX_CFG_NMEA_GSVTALKERID = 0x20930032; // Talker ID for GSV NMEA messages
|
||||
const uint32_t UBLOX_CFG_NMEA_BDSTALKERID = 0x30930033; // BeiDou Talker ID
|
||||
|
||||
//CFG-ODO: Odometer and low-speed course over ground filter
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_ODO_USE_ODO = 0x10220001; // Use odometer
|
||||
const uint32_t UBLOX_CFG_ODO_USE_COG = 0x10220002; // Use low-speed course over ground filter
|
||||
const uint32_t UBLOX_CFG_ODO_OUTLPVEL = 0x10220003; // Output low-pass filtered velocity
|
||||
const uint32_t UBLOX_CFG_ODO_OUTLPCOG = 0x10220004; // Output low-pass filtered course over ground (heading)
|
||||
const uint32_t UBLOX_CFG_ODO_PROFILE = 0x20220005; // Odometer profile configuration
|
||||
const uint32_t UBLOX_CFG_ODO_COGMAXSPEED = 0x20220021; // Upper speed limit for low-speed course over ground filter
|
||||
const uint32_t UBLOX_CFG_ODO_COGMAXPOSACC = 0x20220022; // Maximum acceptable position accuracy for computing low-speed filtered course over ground
|
||||
const uint32_t UBLOX_CFG_ODO_VELLPGAIN = 0x20220031; // Velocity low-pass filter level
|
||||
const uint32_t UBLOX_CFG_ODO_COGLPGAIN = 0x20220032; // Course over ground low-pass filter level (at speed < 8 m/s)
|
||||
|
||||
//CFG-QZSS: QZSS system configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_QZSS_USE_SLAS_DGNSS = 0x10370005; // Apply QZSS SLAS DGNSS corrections
|
||||
const uint32_t UBLOX_CFG_QZSS_USE_SLAS_TESTMODE = 0x10370006; // Use QZSS SLAS data when it is in test mode (SLAS msg 0)
|
||||
const uint32_t UBLOX_CFG_QZSS_USE_SLAS_RAIM_UNCORR = 0x10370007; // Raim out measurements that are not corrected by QZSS SLAS, if at least 5 measurements are corrected
|
||||
|
||||
//CFG-RATE: Navigation and measurement rate configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_RATE_MEAS = 0x30210001; // Nominal time between GNSS measurements
|
||||
const uint32_t UBLOX_CFG_RATE_NAV = 0x30210002; // Ratio of number of measurements to number of navigation solutions
|
||||
const uint32_t UBLOX_CFG_RATE_TIMEREF = 0x20210003; // Time system to which measurements are aligned
|
||||
|
||||
//CFG-RINV: Remote inventory
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_RINV_DUMP = 0x10c70001; // Dump data at startup
|
||||
const uint32_t UBLOX_CFG_RINV_BINARY = 0x10c70002; // Data is binary
|
||||
const uint32_t UBLOX_CFG_RINV_DATA_SIZE = 0x20c70003; // Size of data
|
||||
const uint32_t UBLOX_CFG_RINV_CHUNK0 = 0x50c70004; // Data bytes 1-8 (LSB)
|
||||
const uint32_t UBLOX_CFG_RINV_CHUNK1 = 0x50c70005; // Data bytes 9-16
|
||||
const uint32_t UBLOX_CFG_RINV_CHUNK2 = 0x50c70006; // Data bytes 17-240x44434241.
|
||||
const uint32_t UBLOX_CFG_RINV_CHUNK3 = 0x50c70007; // Data bytes 25-30 (MSB)
|
||||
|
||||
//CFG-RTCM: RTCM protocol configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_RTCM_DF003_OUT = 0x30090001; // RTCM DF003 (Reference station ID) output value
|
||||
const uint32_t UBLOX_CFG_RTCM_DF003_IN = 0x30090008; // RTCM DF003 (Reference station ID) input value
|
||||
const uint32_t UBLOX_CFG_RTCM_DF003_IN_FILTER = 0x20090009; // RTCM input filter configuration based on RTCM DF003 (Reference station ID) value
|
||||
|
||||
//CFG-SBAS: SBAS configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_SBAS_USE_TESTMODE = 0x10360002; // Use SBAS data when it is in test mode (SBAS msg 0)
|
||||
const uint32_t UBLOX_CFG_SBAS_USE_RANGING = 0x10360003; // Use SBAS GEOs as a ranging source (for navigation)
|
||||
const uint32_t UBLOX_CFG_SBAS_USE_DIFFCORR = 0x10360004; // Use SBAS differential corrections
|
||||
const uint32_t UBLOX_CFG_SBAS_USE_INTEGRITY = 0x10360005; // Use SBAS integrity information
|
||||
const uint32_t UBLOX_CFG_SBAS_PRNSCANMASK = 0x50360006; // SBAS PRN search configuration
|
||||
|
||||
//CFG-SIGNAL: Satellite systems (GNSS) signal configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GPS_ENA = 0x1031001f; // GPS enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GPS_L1CA_ENA = 0x10310001; // GPS L1C/A
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GPS_L2C_ENA = 0x10310003; // GPS L2C (only on u-blox F9 platform products)
|
||||
const uint32_t UBLOX_CFG_SIGNAL_SBAS_ENA = 0x10310020; // SBAS enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_SBAS_L1CA_ENA = 0x10310005; // SBAS L1C/A
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GAL_ENA = 0x10310021; // Galileo enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GAL_E1_ENA = 0x10310007; // Galileo E1
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GAL_E5B_ENA = 0x1031000a; // Galileo E5b (only on u-blox F9 platform products)
|
||||
const uint32_t UBLOX_CFG_SIGNAL_BDS_ENA = 0x10310022; // BeiDou Enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_BDS_B1_ENA = 0x1031000d; // BeiDou B1I
|
||||
const uint32_t UBLOX_CFG_SIGNAL_BDS_B2_ENA = 0x1031000e; // BeiDou B2I (only on u-blox F9 platform products)
|
||||
const uint32_t UBLOX_CFG_SIGNAL_QZSS_ENA = 0x10310024; // QZSS enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_QZSS_L1CA_ENA = 0x10310012; // QZSS L1C/A
|
||||
const uint32_t UBLOX_CFG_SIGNAL_QZSS_L1S_ENA = 0x10310014; // QZSS L1S
|
||||
const uint32_t UBLOX_CFG_SIGNAL_QZSS_L2C_ENA = 0x10310015; // QZSS L2C (only on u-blox F9 platform products)
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GLO_ENA = 0x10310025; // GLONASS enable
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GLO_L1_ENA = 0x10310018; // GLONASS L1
|
||||
const uint32_t UBLOX_CFG_SIGNAL_GLO_L2_ENA = 0x1031001a; // GLONASS L2 (only on u-blox F9 platform products)
|
||||
|
||||
//CFG-SPI: Configuration of the SPI interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_SPI_MAXFF = 0x20640001; // Number of bytes containing 0xFF to receive before switching off reception. Range: 0 (mechanism off) - 63
|
||||
const uint32_t UBLOX_CFG_SPI_CPOLARITY = 0x10640002; // Clock polarity select: 0: Active Hight Clock, SCLK idles low, 1: Active Low Clock, SCLK idles high
|
||||
const uint32_t UBLOX_CFG_SPI_CPHASE = 0x10640003; // Clock phase select: 0: Data captured on first edge of SCLK, 1: Data captured on second edge of SCLK
|
||||
const uint32_t UBLOX_CFG_SPI_EXTENDEDTIMEOUT = 0x10640005; // Flag to disable timeouting the interface after 1.5s
|
||||
const uint32_t UBLOX_CFG_SPI_ENABLED = 0x10640006; // Flag to indicate if the SPI interface should be enabled
|
||||
|
||||
//CFG-SPIINPROT: Input protocol configuration of the SPI interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_SPIINPROT_UBX = 0x10790001; // Flag to indicate if UBX should be an input protocol on SPI
|
||||
const uint32_t UBLOX_CFG_SPIINPROT_NMEA = 0x10790002; // Flag to indicate if NMEA should be an input protocol on SPI
|
||||
const uint32_t UBLOX_CFG_SPIINPROT_RTCM3X = 0x10790004; // Flag to indicate if RTCM3X should be an input protocol on SPI
|
||||
|
||||
//CFG-SPIOUTPROT: Output protocol configuration of the SPI interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_SPIOUTPROT_UBX = 0x107a0001; // Flag to indicate if UBX should be an output protocol on SPI
|
||||
const uint32_t UBLOX_CFG_SPIOUTPROT_NMEA = 0x107a0002; // Flag to indicate if NMEA should be an output protocol on SPI
|
||||
const uint32_t UBLOX_CFG_SPIOUTPROT_RTCM3X = 0x107a0004; // Flag to indicate if RTCM3X should be an output protocol on SPI
|
||||
|
||||
//CFG-TMODE: Time mode configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_TMODE_MODE = 0x20030001; // Receiver mode
|
||||
const uint32_t UBLOX_CFG_TMODE_POS_TYPE = 0x20030002; // Determines whether the ARP position is given in ECEF or LAT/LON/HEIGHT?
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_X = 0x40030003; // ECEF X coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_Y = 0x40030004; // ECEF Y coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_Z = 0x40030005; // ECEF Z coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_X_HP = 0x20030006; // High-precision ECEF X coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_Y_HP = 0x20030007; // High-precision ECEF Y coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_ECEF_Z_HP = 0x20030008; // High-precision ECEF Z coordinate of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_LAT = 0x40030009; // Latitude of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_LON = 0x4003000a; // Longitude of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_HEIGHT = 0x4003000b; // Height of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_LAT_HP = 0x2003000c; // High-precision latitude of the ARP position
|
||||
const uint32_t UBLOX_CFG_TMODE_LON_HP = 0x2003000d; // High-precision longitude of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_HEIGHT_HP = 0x2003000e; // High-precision height of the ARP position.
|
||||
const uint32_t UBLOX_CFG_TMODE_FIXED_POS_ACC = 0x4003000f; // Fixed position 3D accuracy
|
||||
const uint32_t UBLOX_CFG_TMODE_SVIN_MIN_DUR = 0x40030010; // Survey-in minimum duration
|
||||
const uint32_t UBLOX_CFG_TMODE_SVIN_ACC_LIMIT = 0x40030011; // Survey-in position accuracy limit
|
||||
|
||||
//CFG-TP: Timepulse configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_TP_PULSE_DEF = 0x20050023; // Determines whether the time pulse is interpreted as frequency or period
|
||||
const uint32_t UBLOX_CFG_TP_PULSE_LENGTH_DEF = 0x20050030; // Determines whether the time pulse length is interpreted as length[us] or pulse ratio[%]
|
||||
const uint32_t UBLOX_CFG_TP_FREQ_TP1 = 0x40050024; // Time pulse frequency (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_FREQ_LOCK_TP1 = 0x40050025; // Time pulse frequency when locked to GNSS time (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_LEN_TP1 = 0x40050004; // Time pulse length (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_LEN_LOCK_TP1 = 0x40050005; // Time pulse length when locked to GNSS time (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_DUTY_TP1 = 0x5005002a; // Time pulse duty cycle (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_DUTY_LOCK_TP1 = 0x5005002b; // Time pulse duty cycle when locked to GNSS time (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_USER_DELAY_TP1 = 0x40050006; // User-configurable time pulse delay (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_TP1_ENA = 0x10050007; // Enable the first timepulse
|
||||
const uint32_t UBLOX_CFG_TP_SYNC_GNSS_TP1 = 0x10050008; // Sync time pulse to GNSS time or local clock (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_USE_LOCKED_TP1 = 0x10050009; // Use locked parameters when possible (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_ALIGN_TO_TOW_TP1 = 0x1005000a; // Align time pulse to top of second (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_POL_TP1 = 0x1005000b; // Set time pulse polarity (TP1)
|
||||
const uint32_t UBLOX_CFG_TP_TIMEGRID_TP1 = 0x2005000c; // Time grid to use (TP1)
|
||||
|
||||
//CFG-TXREADY: TX ready configuration
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_TXREADY_ENABLED = 0x10a20001; // Flag to indicate if TX ready pin mechanism should be enabled
|
||||
const uint32_t UBLOX_CFG_TXREADY_POLARITY = 0x10a20002; // The polarity of the TX ready pin: false:high- active, true:low-active
|
||||
const uint32_t UBLOX_CFG_TXREADY_PIN = 0x20a20003; // Pin number to use for the TX ready functionality
|
||||
const uint32_t UBLOX_CFG_TXREADY_THRESHOLD = 0x30a20004; // Amount of data that should be ready on the interface before triggering the TX ready pin
|
||||
const uint32_t UBLOX_CFG_TXREADY_INTERFACE = 0x20a20005; // Interface where the TX ready feature should be linked to
|
||||
|
||||
//CFG-UART1: Configuration of the UART1 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART1_BAUDRATE = 0x40520001; // The baud rate that should be configured on the UART1
|
||||
const uint32_t UBLOX_CFG_UART1_STOPBITS = 0x20520002; // Number of stopbits that should be used on UART1
|
||||
const uint32_t UBLOX_CFG_UART1_DATABITS = 0x20520003; // Number of databits that should be used on UART1
|
||||
const uint32_t UBLOX_CFG_UART1_PARITY = 0x20520004; // Parity mode that should be used on UART1
|
||||
const uint32_t UBLOX_CFG_UART1_ENABLED = 0x10520005; // Flag to indicate if the UART1 should be enabled
|
||||
|
||||
//CFG-UART1INPROT: Input protocol configuration of the UART1 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART1INPROT_UBX = 0x10730001; // Flag to indicate if UBX should be an input protocol on UART1
|
||||
const uint32_t UBLOX_CFG_UART1INPROT_NMEA = 0x10730002; // Flag to indicate if NMEA should be an input protocol on UART1
|
||||
const uint32_t UBLOX_CFG_UART1INPROT_RTCM3X = 0x10730004; // Flag to indicate if RTCM3X should be an input protocol on UART1
|
||||
|
||||
//CFG-UART1OUTPROT: Output protocol configuration of the UART1 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART1OUTPROT_UBX = 0x10740001; // Flag to indicate if UBX should be an output protocol on UART1
|
||||
const uint32_t UBLOX_CFG_UART1OUTPROT_NMEA = 0x10740002; // Flag to indicate if NMEA should be an output protocol on UART1
|
||||
const uint32_t UBLOX_CFG_UART1OUTPROT_RTCM3X = 0x10740004; // Flag to indicate if RTCM3X should be an output protocol on UART1
|
||||
|
||||
//CFG-UART2: Configuration of the UART2 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART2_BAUDRATE = 0x40530001; // The baud rate that should be configured on the UART2
|
||||
const uint32_t UBLOX_CFG_UART2_STOPBITS = 0x20530002; // Number of stopbits that should be used on UART2
|
||||
const uint32_t UBLOX_CFG_UART2_DATABITS = 0x20530003; // Number of databits that should be used on UART2
|
||||
const uint32_t UBLOX_CFG_UART2_PARITY = 0x20530004; // Parity mode that should be used on UART2
|
||||
const uint32_t UBLOX_CFG_UART2_ENABLED = 0x10530005; // Flag to indicate if the UART2 should be enabled
|
||||
const uint32_t UBLOX_CFG_UART2_REMAP = 0x10530006; // UART2 Remapping
|
||||
|
||||
//CFG-UART2INPROT: Input protocol configuration of the UART2 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART2INPROT_UBX = 0x10750001; // Flag to indicate if UBX should be an input protocol on UART2
|
||||
const uint32_t UBLOX_CFG_UART2INPROT_NMEA = 0x10750002; // Flag to indicate if NMEA should be an input protocol on UART2
|
||||
const uint32_t UBLOX_CFG_UART2INPROT_RTCM3X = 0x10750004; // Flag to indicate if RTCM3X should be an input protocol on UART2
|
||||
|
||||
//CFG-UART2OUTPROT: Output protocol configuration of the UART2 interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_UART2OUTPROT_UBX = 0x10760001; // Flag to indicate if UBX should be an output protocol on UART2
|
||||
const uint32_t UBLOX_CFG_UART2OUTPROT_NMEA = 0x10760002; // Flag to indicate if NMEA should be an output protocol on UART2
|
||||
const uint32_t UBLOX_CFG_UART2OUTPROT_RTCM3X = 0x10760004; // Flag to indicate if RTCM3X should be an output protocol on UART2
|
||||
|
||||
//CFG-USB: Configuration of the USB interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_USB_ENABLED = 0x10650001; // Flag to indicate if the USB interface should be enabled
|
||||
const uint32_t UBLOX_CFG_USB_SELFPOW = 0x10650002; // Self-powered device
|
||||
const uint32_t UBLOX_CFG_USB_VENDOR_ID = 0x3065000a; // Vendor ID
|
||||
const uint32_t UBLOX_CFG_USB_PRODUCT_ID = 0x3065000b; // Vendor ID
|
||||
const uint32_t UBLOX_CFG_USB_POWER = 0x3065000c; // Power consumption
|
||||
const uint32_t UBLOX_CFG_USB_VENDOR_STR0 = 0x5065000d; // Vendor string characters 0-7
|
||||
const uint32_t UBLOX_CFG_USB_VENDOR_STR1 = 0x5065000e; // Vendor string characters 8-15
|
||||
const uint32_t UBLOX_CFG_USB_VENDOR_STR2 = 0x5065000f; // Vendor string characters 16-23
|
||||
const uint32_t UBLOX_CFG_USB_VENDOR_STR3 = 0x50650010; // Vendor string characters 24-31
|
||||
const uint32_t UBLOX_CFG_USB_PRODUCT_STR0 = 0x50650011; // Product string characters 0-7
|
||||
const uint32_t UBLOX_CFG_USB_PRODUCT_STR1 = 0x50650012; // Product string characters 8-15
|
||||
const uint32_t UBLOX_CFG_USB_PRODUCT_STR2 = 0x50650013; // Product string characters 16-23
|
||||
const uint32_t UBLOX_CFG_USB_PRODUCT_STR3 = 0x50650014; // Product string characters 24-31
|
||||
const uint32_t UBLOX_CFG_USB_SERIAL_NO_STR0 = 0x50650015; // Serial number string characters 0-7
|
||||
const uint32_t UBLOX_CFG_USB_SERIAL_NO_STR1 = 0x50650016; // Serial number string characters 8-15
|
||||
const uint32_t UBLOX_CFG_USB_SERIAL_NO_STR2 = 0x50650017; // Serial number string characters 16-23
|
||||
const uint32_t UBLOX_CFG_USB_SERIAL_NO_STR3 = 0x50650018; // Serial number string characters 24-31
|
||||
|
||||
//CFG-USBINPROT: Input protocol configuration of the USB interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_USBINPROT_UBX = 0x10770001; // Flag to indicate if UBX should be an input protocol on USB
|
||||
const uint32_t UBLOX_CFG_USBINPROT_NMEA = 0x10770002; // Flag to indicate if NMEA should be an input protocol on USB
|
||||
const uint32_t UBLOX_CFG_USBINPROT_RTCM3X = 0x10770004; // Flag to indicate if RTCM3X should be an input protocol on USB
|
||||
|
||||
//CFG-USBOUTPROT: Output protocol configuration of the USB interface
|
||||
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||||
const uint32_t UBLOX_CFG_USBOUTPROT_UBX = 0x10780001; // Flag to indicate if UBX should be an output protocol on USB
|
||||
const uint32_t UBLOX_CFG_USBOUTPROT_NMEA = 0x10780002; // Flag to indicate if NMEA should be an output protocol on USB
|
||||
const uint32_t UBLOX_CFG_USBOUTPROT_RTCM3X = 0x10780004; // Flag to indicate if RTCM3X should be an output protocol on USB
|
||||
|
||||
#endif
|
1809
lib/axp192/axp20x.cpp
Normal file
852
lib/axp192/axp20x.h
Normal file
@ -0,0 +1,852 @@
|
||||
/////////////////////////////////////////////////////////////////
|
||||
/*
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 lewis he
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
axp20x.h - Arduino library for X-Power AXP202 chip.
|
||||
Created by Lewis he on April 1, 2019.
|
||||
github:https://github.com/lewisxhe/AXP202X_Libraries
|
||||
*/
|
||||
/////////////////////////////////////////////////////////////////
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <Wire.h>
|
||||
|
||||
// #define AXP_DEBUG_PORT Serial
|
||||
#ifdef AXP_DEBUG_PORT
|
||||
#define AXP_DEBUG(fmt, ...) AXP_DEBUG_PORT.printf_P((PGM_P)PSTR(fmt), ##__VA_ARGS__)
|
||||
#else
|
||||
#define AXP_DEBUG(...)
|
||||
#endif
|
||||
|
||||
#ifndef RISING
|
||||
#define RISING 0x01
|
||||
#endif
|
||||
|
||||
#ifndef FALLING
|
||||
#define FALLING 0x02
|
||||
#endif
|
||||
|
||||
#ifdef _BV
|
||||
#undef _BV
|
||||
#endif
|
||||
#define _BV(b) (1ULL << (b))
|
||||
|
||||
//! Error Code
|
||||
#define AXP_PASS (0)
|
||||
#define AXP_FAIL (-1)
|
||||
#define AXP_INVALID (-2)
|
||||
#define AXP_NOT_INIT (-3)
|
||||
#define AXP_NOT_SUPPORT (-4)
|
||||
#define AXP_ARG_INVALID (-5)
|
||||
|
||||
//! Chip Address
|
||||
#define AXP202_SLAVE_ADDRESS (0x35)
|
||||
#define AXP192_SLAVE_ADDRESS (0x34)
|
||||
#define AXP173_SLAVE_ADDRESS (0x34)
|
||||
|
||||
//! Chip ID
|
||||
#define AXP202_CHIP_ID 0x41
|
||||
#define AXP192_CHIP_ID 0x03
|
||||
#define AXP173_CHIP_ID 0xAD //!Axp173 does not have a chip ID, given a custom ID
|
||||
|
||||
//! Logic states
|
||||
#define AXP202_ON 1
|
||||
#define AXP202_OFF 0
|
||||
|
||||
//! REG MAP
|
||||
#define AXP202_STATUS (0x00)
|
||||
#define AXP202_MODE_CHGSTATUS (0x01)
|
||||
#define AXP202_OTG_STATUS (0x02)
|
||||
#define AXP202_IC_TYPE (0x03)
|
||||
#define AXP202_DATA_BUFFER1 (0x04)
|
||||
#define AXP202_DATA_BUFFER2 (0x05)
|
||||
#define AXP202_DATA_BUFFER3 (0x06)
|
||||
#define AXP202_DATA_BUFFER4 (0x07)
|
||||
#define AXP202_DATA_BUFFER5 (0x08)
|
||||
#define AXP202_DATA_BUFFER6 (0x09)
|
||||
#define AXP202_DATA_BUFFER7 (0x0A)
|
||||
#define AXP202_DATA_BUFFER8 (0x0B)
|
||||
#define AXP202_DATA_BUFFER9 (0x0C)
|
||||
#define AXP202_DATA_BUFFERA (0x0D)
|
||||
#define AXP202_DATA_BUFFERB (0x0E)
|
||||
#define AXP202_DATA_BUFFERC (0x0F)
|
||||
#define AXP202_LDO234_DC23_CTL (0x12)
|
||||
#define AXP202_DC2OUT_VOL (0x23)
|
||||
#define AXP202_LDO3_DC2_DVM (0x25)
|
||||
#define AXP202_DC3OUT_VOL (0x27)
|
||||
#define AXP202_LDO24OUT_VOL (0x28)
|
||||
#define AXP202_LDO3OUT_VOL (0x29)
|
||||
#define AXP202_IPS_SET (0x30)
|
||||
#define AXP202_VOFF_SET (0x31)
|
||||
#define AXP202_OFF_CTL (0x32)
|
||||
#define AXP202_CHARGE1 (0x33)
|
||||
#define AXP202_CHARGE2 (0x34)
|
||||
#define AXP202_BACKUP_CHG (0x35)
|
||||
#define AXP202_POK_SET (0x36)
|
||||
#define AXP202_DCDC_FREQSET (0x37)
|
||||
#define AXP202_VLTF_CHGSET (0x38)
|
||||
#define AXP202_VHTF_CHGSET (0x39)
|
||||
#define AXP202_APS_WARNING1 (0x3A)
|
||||
#define AXP202_APS_WARNING2 (0x3B)
|
||||
#define AXP202_TLTF_DISCHGSET (0x3C)
|
||||
#define AXP202_THTF_DISCHGSET (0x3D)
|
||||
#define AXP202_DCDC_MODESET (0x80)
|
||||
#define AXP202_ADC_EN1 (0x82)
|
||||
#define AXP202_ADC_EN2 (0x83)
|
||||
#define AXP202_ADC_SPEED (0x84)
|
||||
#define AXP202_ADC_INPUTRANGE (0x85)
|
||||
#define AXP202_ADC_IRQ_RETFSET (0x86)
|
||||
#define AXP202_ADC_IRQ_FETFSET (0x87)
|
||||
#define AXP202_TIMER_CTL (0x8A)
|
||||
#define AXP202_VBUS_DET_SRP (0x8B)
|
||||
#define AXP202_HOTOVER_CTL (0x8F)
|
||||
#define AXP202_GPIO0_CTL (0x90)
|
||||
#define AXP202_GPIO0_VOL (0x91)
|
||||
#define AXP202_GPIO1_CTL (0x92)
|
||||
#define AXP202_GPIO2_CTL (0x93)
|
||||
#define AXP202_GPIO012_SIGNAL (0x94)
|
||||
#define AXP202_GPIO3_CTL (0x95)
|
||||
#define AXP202_INTEN1 (0x40)
|
||||
#define AXP202_INTEN2 (0x41)
|
||||
#define AXP202_INTEN3 (0x42)
|
||||
#define AXP202_INTEN4 (0x43)
|
||||
#define AXP202_INTEN5 (0x44)
|
||||
#define AXP202_INTSTS1 (0x48)
|
||||
#define AXP202_INTSTS2 (0x49)
|
||||
#define AXP202_INTSTS3 (0x4A)
|
||||
#define AXP202_INTSTS4 (0x4B)
|
||||
#define AXP202_INTSTS5 (0x4C)
|
||||
|
||||
//Irq control register
|
||||
#define AXP192_INTEN1 (0x40)
|
||||
#define AXP192_INTEN2 (0x41)
|
||||
#define AXP192_INTEN3 (0x42)
|
||||
#define AXP192_INTEN4 (0x43)
|
||||
#define AXP192_INTEN5 (0x4A)
|
||||
//Irq status register
|
||||
#define AXP192_INTSTS1 (0x44)
|
||||
#define AXP192_INTSTS2 (0x45)
|
||||
#define AXP192_INTSTS3 (0x46)
|
||||
#define AXP192_INTSTS4 (0x47)
|
||||
#define AXP192_INTSTS5 (0x4D)
|
||||
|
||||
#define AXP192_DC1_VLOTAGE (0x26)
|
||||
#define AXP192_LDO23OUT_VOL (0x28)
|
||||
#define AXP192_GPIO0_CTL (0x90)
|
||||
#define AXP192_GPIO0_VOL (0x91)
|
||||
#define AXP192_GPIO1_CTL (0X92)
|
||||
#define AXP192_GPIO2_CTL (0x93)
|
||||
#define AXP192_GPIO012_SIGNAL (0x94)
|
||||
#define AXP192_GPIO34_CTL (0x95)
|
||||
|
||||
|
||||
|
||||
/* axp 192/202 adc data register */
|
||||
#define AXP202_BAT_AVERVOL_H8 (0x78)
|
||||
#define AXP202_BAT_AVERVOL_L4 (0x79)
|
||||
#define AXP202_BAT_AVERCHGCUR_H8 (0x7A)
|
||||
#define AXP202_BAT_AVERCHGCUR_L4 (0x7B)
|
||||
#define AXP202_BAT_AVERCHGCUR_L5 (0x7B)
|
||||
#define AXP202_ACIN_VOL_H8 (0x56)
|
||||
#define AXP202_ACIN_VOL_L4 (0x57)
|
||||
#define AXP202_ACIN_CUR_H8 (0x58)
|
||||
#define AXP202_ACIN_CUR_L4 (0x59)
|
||||
#define AXP202_VBUS_VOL_H8 (0x5A)
|
||||
#define AXP202_VBUS_VOL_L4 (0x5B)
|
||||
#define AXP202_VBUS_CUR_H8 (0x5C)
|
||||
#define AXP202_VBUS_CUR_L4 (0x5D)
|
||||
#define AXP202_INTERNAL_TEMP_H8 (0x5E)
|
||||
#define AXP202_INTERNAL_TEMP_L4 (0x5F)
|
||||
#define AXP202_TS_IN_H8 (0x62)
|
||||
#define AXP202_TS_IN_L4 (0x63)
|
||||
#define AXP202_GPIO0_VOL_ADC_H8 (0x64)
|
||||
#define AXP202_GPIO0_VOL_ADC_L4 (0x65)
|
||||
#define AXP202_GPIO1_VOL_ADC_H8 (0x66)
|
||||
#define AXP202_GPIO1_VOL_ADC_L4 (0x67)
|
||||
|
||||
#define AXP202_BAT_AVERDISCHGCUR_H8 (0x7C)
|
||||
#define AXP202_BAT_AVERDISCHGCUR_L5 (0x7D)
|
||||
#define AXP202_APS_AVERVOL_H8 (0x7E)
|
||||
#define AXP202_APS_AVERVOL_L4 (0x7F)
|
||||
#define AXP202_INT_BAT_CHGCUR_H8 (0xA0)
|
||||
#define AXP202_INT_BAT_CHGCUR_L4 (0xA1)
|
||||
#define AXP202_EXT_BAT_CHGCUR_H8 (0xA2)
|
||||
#define AXP202_EXT_BAT_CHGCUR_L4 (0xA3)
|
||||
#define AXP202_INT_BAT_DISCHGCUR_H8 (0xA4)
|
||||
#define AXP202_INT_BAT_DISCHGCUR_L4 (0xA5)
|
||||
#define AXP202_EXT_BAT_DISCHGCUR_H8 (0xA6)
|
||||
#define AXP202_EXT_BAT_DISCHGCUR_L4 (0xA7)
|
||||
#define AXP202_BAT_CHGCOULOMB3 (0xB0)
|
||||
#define AXP202_BAT_CHGCOULOMB2 (0xB1)
|
||||
#define AXP202_BAT_CHGCOULOMB1 (0xB2)
|
||||
#define AXP202_BAT_CHGCOULOMB0 (0xB3)
|
||||
#define AXP202_BAT_DISCHGCOULOMB3 (0xB4)
|
||||
#define AXP202_BAT_DISCHGCOULOMB2 (0xB5)
|
||||
#define AXP202_BAT_DISCHGCOULOMB1 (0xB6)
|
||||
#define AXP202_BAT_DISCHGCOULOMB0 (0xB7)
|
||||
#define AXP202_COULOMB_CTL (0xB8)
|
||||
#define AXP202_BAT_POWERH8 (0x70)
|
||||
#define AXP202_BAT_POWERM8 (0x71)
|
||||
#define AXP202_BAT_POWERL8 (0x72)
|
||||
|
||||
#define AXP202_VREF_TEM_CTRL (0xF3)
|
||||
#define AXP202_BATT_PERCENTAGE (0xB9)
|
||||
|
||||
/* bit definitions for AXP events, irq event */
|
||||
/* AXP202 */
|
||||
#define AXP202_IRQ_USBLO (1)
|
||||
#define AXP202_IRQ_USBRE (2)
|
||||
#define AXP202_IRQ_USBIN (3)
|
||||
#define AXP202_IRQ_USBOV (4)
|
||||
#define AXP202_IRQ_ACRE (5)
|
||||
#define AXP202_IRQ_ACIN (6)
|
||||
#define AXP202_IRQ_ACOV (7)
|
||||
|
||||
#define AXP202_IRQ_TEMLO (8)
|
||||
#define AXP202_IRQ_TEMOV (9)
|
||||
#define AXP202_IRQ_CHAOV (10)
|
||||
#define AXP202_IRQ_CHAST (11)
|
||||
#define AXP202_IRQ_BATATOU (12)
|
||||
#define AXP202_IRQ_BATATIN (13)
|
||||
#define AXP202_IRQ_BATRE (14)
|
||||
#define AXP202_IRQ_BATIN (15)
|
||||
|
||||
#define AXP202_IRQ_POKLO (16)
|
||||
#define AXP202_IRQ_POKSH (17)
|
||||
#define AXP202_IRQ_LDO3LO (18)
|
||||
#define AXP202_IRQ_DCDC3LO (19)
|
||||
#define AXP202_IRQ_DCDC2LO (20)
|
||||
#define AXP202_IRQ_CHACURLO (22)
|
||||
#define AXP202_IRQ_ICTEMOV (23)
|
||||
|
||||
#define AXP202_IRQ_EXTLOWARN2 (24)
|
||||
#define AXP202_IRQ_EXTLOWARN1 (25)
|
||||
#define AXP202_IRQ_SESSION_END (26)
|
||||
#define AXP202_IRQ_SESS_AB_VALID (27)
|
||||
#define AXP202_IRQ_VBUS_UN_VALID (28)
|
||||
#define AXP202_IRQ_VBUS_VALID (29)
|
||||
#define AXP202_IRQ_PDOWN_BY_NOE (30)
|
||||
#define AXP202_IRQ_PUP_BY_NOE (31)
|
||||
|
||||
#define AXP202_IRQ_GPIO0TG (32)
|
||||
#define AXP202_IRQ_GPIO1TG (33)
|
||||
#define AXP202_IRQ_GPIO2TG (34)
|
||||
#define AXP202_IRQ_GPIO3TG (35)
|
||||
#define AXP202_IRQ_PEKFE (37)
|
||||
#define AXP202_IRQ_PEKRE (38)
|
||||
#define AXP202_IRQ_TIMER (39)
|
||||
|
||||
//Signal Capture
|
||||
#define AXP202_BATT_VOLTAGE_STEP (1.1F)
|
||||
#define AXP202_BATT_DISCHARGE_CUR_STEP (0.5F)
|
||||
#define AXP202_BATT_CHARGE_CUR_STEP (0.5F)
|
||||
#define AXP202_ACIN_VOLTAGE_STEP (1.7F)
|
||||
#define AXP202_ACIN_CUR_STEP (0.625F)
|
||||
#define AXP202_VBUS_VOLTAGE_STEP (1.7F)
|
||||
#define AXP202_VBUS_CUR_STEP (0.375F)
|
||||
#define AXP202_INTERNAL_TEMP_STEP (0.1F)
|
||||
#define AXP202_APS_VOLTAGE_STEP (1.4F)
|
||||
#define AXP202_TS_PIN_OUT_STEP (0.8F)
|
||||
#define AXP202_GPIO0_STEP (0.5F)
|
||||
#define AXP202_GPIO1_STEP (0.5F)
|
||||
// AXP192 only
|
||||
#define AXP202_GPIO2_STEP (0.5F)
|
||||
#define AXP202_GPIO3_STEP (0.5F)
|
||||
|
||||
// AXP173
|
||||
#define AXP173_EXTEN_DC2_CTL (0x10)
|
||||
#define AXP173_CTL_DC2_BIT (0)
|
||||
#define AXP173_CTL_EXTEN_BIT (2)
|
||||
#define AXP173_DC1_VLOTAGE (0x26)
|
||||
#define AXP173_LDO4_VLOTAGE (0x27)
|
||||
|
||||
#define FORCED_OPEN_DCDC3(x) (x |= (AXP202_ON << AXP202_DCDC3))
|
||||
#define BIT_MASK(x) (1 << x)
|
||||
#define IS_OPEN(reg, channel) (bool)(reg & BIT_MASK(channel))
|
||||
|
||||
enum {
|
||||
AXP202_EXTEN = 0,
|
||||
AXP202_DCDC3 = 1,
|
||||
AXP202_LDO2 = 2,
|
||||
AXP202_LDO4 = 3,
|
||||
AXP202_DCDC2 = 4,
|
||||
AXP202_LDO3 = 6,
|
||||
AXP202_OUTPUT_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
AXP192_DCDC1 = 0,
|
||||
AXP192_DCDC3 = 1,
|
||||
AXP192_LDO2 = 2,
|
||||
AXP192_LDO3 = 3,
|
||||
AXP192_DCDC2 = 4,
|
||||
AXP192_EXTEN = 6,
|
||||
AXP192_OUTPUT_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
AXP173_DCDC1 = 0,
|
||||
AXP173_LDO4 = 1,
|
||||
AXP173_LDO2 = 2,
|
||||
AXP173_LDO3 = 3,
|
||||
AXP173_DCDC2 = 4,
|
||||
AXP173_EXTEN = 6,
|
||||
AXP173_OUTPUT_MAX,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
AXP202_STARTUP_TIME_128MS,
|
||||
AXP202_STARTUP_TIME_3S,
|
||||
AXP202_STARTUP_TIME_1S,
|
||||
AXP202_STARTUP_TIME_2S,
|
||||
} axp202_startup_time_t;
|
||||
|
||||
typedef enum {
|
||||
AXP192_STARTUP_TIME_128MS,
|
||||
AXP192_STARTUP_TIME_512MS,
|
||||
AXP192_STARTUP_TIME_1S,
|
||||
AXP192_STARTUP_TIME_2S,
|
||||
} axp192_startup_time_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_LONGPRESS_TIME_1S,
|
||||
AXP_LONGPRESS_TIME_1S5,
|
||||
AXP_LONGPRESS_TIME_2S,
|
||||
AXP_LONGPRESS_TIME_2S5,
|
||||
} axp_loonPress_time_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_POWER_OFF_TIME_4S,
|
||||
AXP_POWER_OFF_TIME_65,
|
||||
AXP_POWER_OFF_TIME_8S,
|
||||
AXP_POWER_OFF_TIME_16S,
|
||||
} axp_poweroff_time_t;
|
||||
|
||||
//REG 33H: Charging control 1 Charging target-voltage setting
|
||||
typedef enum {
|
||||
AXP202_TARGET_VOL_4_1V,
|
||||
AXP202_TARGET_VOL_4_15V,
|
||||
AXP202_TARGET_VOL_4_2V,
|
||||
AXP202_TARGET_VOL_4_36V
|
||||
} axp_chargeing_vol_t;
|
||||
|
||||
//REG 82H: ADC Enable 1 register Parameter
|
||||
typedef enum {
|
||||
AXP202_BATT_VOL_ADC1 = 1 << 7,
|
||||
AXP202_BATT_CUR_ADC1 = 1 << 6,
|
||||
AXP202_ACIN_VOL_ADC1 = 1 << 5,
|
||||
AXP202_ACIN_CUR_ADC1 = 1 << 4,
|
||||
AXP202_VBUS_VOL_ADC1 = 1 << 3,
|
||||
AXP202_VBUS_CUR_ADC1 = 1 << 2,
|
||||
AXP202_APS_VOL_ADC1 = 1 << 1,
|
||||
AXP202_TS_PIN_ADC1 = 1 << 0
|
||||
} axp_adc1_func_t;
|
||||
|
||||
// REG 83H: ADC Enable 2 register Parameter
|
||||
typedef enum {
|
||||
AXP202_TEMP_MONITORING_ADC2 = 1 << 7,
|
||||
AXP202_GPIO1_FUNC_ADC2 = 1 << 3,
|
||||
AXP202_GPIO0_FUNC_ADC2 = 1 << 2
|
||||
} axp_adc2_func_t;
|
||||
|
||||
typedef enum {
|
||||
AXP202_LDO3_MODE_LDO,
|
||||
AXP202_LDO3_MODE_DCIN
|
||||
} axp202_ldo3_mode_t;
|
||||
|
||||
|
||||
|
||||
typedef enum {
|
||||
//! IRQ1 REG 40H
|
||||
AXP202_VBUS_VHOLD_LOW_IRQ = _BV(1), //VBUS is available, but lower than V HOLD, IRQ enable
|
||||
AXP202_VBUS_REMOVED_IRQ = _BV(2), //VBUS removed, IRQ enable
|
||||
AXP202_VBUS_CONNECT_IRQ = _BV(3), //VBUS connected, IRQ enable
|
||||
AXP202_VBUS_OVER_VOL_IRQ = _BV(4), //VBUS over-voltage, IRQ enable
|
||||
AXP202_ACIN_REMOVED_IRQ = _BV(5), //ACIN removed, IRQ enable
|
||||
AXP202_ACIN_CONNECT_IRQ = _BV(6), //ACIN connected, IRQ enable
|
||||
AXP202_ACIN_OVER_VOL_IRQ = _BV(7), //ACIN over-voltage, IRQ enable
|
||||
|
||||
//! IRQ2 REG 41H
|
||||
AXP202_BATT_LOW_TEMP_IRQ = _BV(8), //Battery low-temperature, IRQ enable
|
||||
AXP202_BATT_OVER_TEMP_IRQ = _BV(9), //Battery over-temperature, IRQ enable
|
||||
AXP202_CHARGING_FINISHED_IRQ = _BV(10), //Charge finished, IRQ enable
|
||||
AXP202_CHARGING_IRQ = _BV(11), //Be charging, IRQ enable
|
||||
AXP202_BATT_EXIT_ACTIVATE_IRQ = _BV(12), //Exit battery activate mode, IRQ enable
|
||||
AXP202_BATT_ACTIVATE_IRQ = _BV(13), //Battery activate mode, IRQ enable
|
||||
AXP202_BATT_REMOVED_IRQ = _BV(14), //Battery removed, IRQ enable
|
||||
AXP202_BATT_CONNECT_IRQ = _BV(15), //Battery connected, IRQ enable
|
||||
|
||||
//! IRQ3 REG 42H
|
||||
AXP202_PEK_LONGPRESS_IRQ = _BV(16), //PEK long press, IRQ enable
|
||||
AXP202_PEK_SHORTPRESS_IRQ = _BV(17), //PEK short press, IRQ enable
|
||||
AXP202_LDO3_LOW_VOL_IRQ = _BV(18), //LDO3output voltage is lower than the set value, IRQ enable
|
||||
AXP202_DC3_LOW_VOL_IRQ = _BV(19), //DC-DC3output voltage is lower than the set value, IRQ enable
|
||||
AXP202_DC2_LOW_VOL_IRQ = _BV(20), //DC-DC2 output voltage is lower than the set value, IRQ enable
|
||||
//**Reserved and unchangeable BIT 5
|
||||
AXP202_CHARGE_LOW_CUR_IRQ = _BV(22), //Charge current is lower than the set current, IRQ enable
|
||||
AXP202_CHIP_TEMP_HIGH_IRQ = _BV(23), //AXP202 internal over-temperature, IRQ enable
|
||||
|
||||
//! IRQ4 REG 43H
|
||||
AXP202_APS_LOW_VOL_LEVEL2_IRQ = _BV(24), //APS low-voltage, IRQ enable(LEVEL2)
|
||||
APX202_APS_LOW_VOL_LEVEL1_IRQ = _BV(25), //APS low-voltage, IRQ enable(LEVEL1)
|
||||
AXP202_VBUS_SESSION_END_IRQ = _BV(26), //VBUS Session End IRQ enable
|
||||
AXP202_VBUS_SESSION_AB_IRQ = _BV(27), //VBUS Session A/B IRQ enable
|
||||
AXP202_VBUS_INVALID_IRQ = _BV(28), //VBUS invalid, IRQ enable
|
||||
AXP202_VBUS_VAILD_IRQ = _BV(29), //VBUS valid, IRQ enable
|
||||
AXP202_NOE_OFF_IRQ = _BV(30), //N_OE shutdown, IRQ enable
|
||||
AXP202_NOE_ON_IRQ = _BV(31), //N_OE startup, IRQ enable
|
||||
|
||||
//! IRQ5 REG 44H
|
||||
AXP202_GPIO0_EDGE_TRIGGER_IRQ = _BV(32), //GPIO0 input edge trigger, IRQ enable
|
||||
AXP202_GPIO1_EDGE_TRIGGER_IRQ = _BV(33), //GPIO1input edge trigger or ADC input, IRQ enable
|
||||
AXP202_GPIO2_EDGE_TRIGGER_IRQ = _BV(34), //GPIO2input edge trigger, IRQ enable
|
||||
AXP202_GPIO3_EDGE_TRIGGER_IRQ = _BV(35), //GPIO3 input edge trigger, IRQ enable
|
||||
//**Reserved and unchangeable BIT 4
|
||||
AXP202_PEK_FALLING_EDGE_IRQ = _BV(37), //PEK press falling edge, IRQ enable
|
||||
AXP202_PEK_RISING_EDGE_IRQ = _BV(38), //PEK press rising edge, IRQ enable
|
||||
AXP202_TIMER_TIMEOUT_IRQ = _BV(39), //Timer timeout, IRQ enable
|
||||
|
||||
AXP202_ALL_IRQ = (0xFFFFFFFFFFULL)
|
||||
} axp_irq_t;
|
||||
|
||||
typedef enum {
|
||||
AXP202_LDO4_1250MV,
|
||||
AXP202_LDO4_1300MV,
|
||||
AXP202_LDO4_1400MV,
|
||||
AXP202_LDO4_1500MV,
|
||||
AXP202_LDO4_1600MV,
|
||||
AXP202_LDO4_1700MV,
|
||||
AXP202_LDO4_1800MV,
|
||||
AXP202_LDO4_1900MV,
|
||||
AXP202_LDO4_2000MV,
|
||||
AXP202_LDO4_2500MV,
|
||||
AXP202_LDO4_2700MV,
|
||||
AXP202_LDO4_2800MV,
|
||||
AXP202_LDO4_3000MV,
|
||||
AXP202_LDO4_3100MV,
|
||||
AXP202_LDO4_3200MV,
|
||||
AXP202_LDO4_3300MV,
|
||||
AXP202_LDO4_MAX,
|
||||
} axp_ldo4_table_t;
|
||||
|
||||
typedef enum {
|
||||
AXP202_LDO5_1800MV,
|
||||
AXP202_LDO5_2500MV,
|
||||
AXP202_LDO5_2800MV,
|
||||
AXP202_LDO5_3000MV,
|
||||
AXP202_LDO5_3100MV,
|
||||
AXP202_LDO5_3300MV,
|
||||
AXP202_LDO5_3400MV,
|
||||
AXP202_LDO5_3500MV,
|
||||
} axp_ldo5_table_t;
|
||||
|
||||
typedef enum {
|
||||
AXP20X_LED_OFF,
|
||||
AXP20X_LED_BLINK_1HZ,
|
||||
AXP20X_LED_BLINK_4HZ,
|
||||
AXP20X_LED_LOW_LEVEL,
|
||||
} axp_chgled_mode_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_ADC_SAMPLING_RATE_25HZ = 0,
|
||||
AXP_ADC_SAMPLING_RATE_50HZ = 1,
|
||||
AXP_ADC_SAMPLING_RATE_100HZ = 2,
|
||||
AXP_ADC_SAMPLING_RATE_200HZ = 3,
|
||||
} axp_adc_sampling_rate_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_TS_PIN_CURRENT_20UA = 0,
|
||||
AXP_TS_PIN_CURRENT_40UA = 1,
|
||||
AXP_TS_PIN_CURRENT_60UA = 2,
|
||||
AXP_TS_PIN_CURRENT_80UA = 3,
|
||||
} axp_ts_pin_current_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_TS_PIN_FUNCTION_BATT = 0,
|
||||
AXP_TS_PIN_FUNCTION_ADC = 1,
|
||||
} axp_ts_pin_function_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_TS_PIN_MODE_DISABLE = 0,
|
||||
AXP_TS_PIN_MODE_CHARGING = 1,
|
||||
AXP_TS_PIN_MODE_SAMPLING = 2,
|
||||
AXP_TS_PIN_MODE_ENABLE = 3,
|
||||
} axp_ts_pin_mode_t;
|
||||
|
||||
//! Only AXP192 and AXP202 have gpio function
|
||||
typedef enum {
|
||||
AXP_GPIO_0,
|
||||
AXP_GPIO_1,
|
||||
AXP_GPIO_2,
|
||||
AXP_GPIO_3,
|
||||
AXP_GPIO_4,
|
||||
} axp_gpio_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_IO_OUTPUT_LOW_MODE,
|
||||
AXP_IO_OUTPUT_HIGH_MODE,
|
||||
AXP_IO_INPUT_MODE,
|
||||
AXP_IO_LDO_MODE,
|
||||
AXP_IO_ADC_MODE,
|
||||
AXP_IO_FLOATING_MODE,
|
||||
AXP_IO_OPEN_DRAIN_OUTPUT_MODE,
|
||||
AXP_IO_PWM_OUTPUT_MODE,
|
||||
AXP_IO_EXTERN_CHARGING_CTRL_MODE,
|
||||
} axp_gpio_mode_t;
|
||||
|
||||
typedef enum {
|
||||
AXP_IRQ_NONE,
|
||||
AXP_IRQ_RISING,
|
||||
AXP_IRQ_FALLING,
|
||||
AXP_IRQ_DOUBLE_EDGE,
|
||||
} axp_gpio_irq_t;
|
||||
|
||||
|
||||
typedef enum {
|
||||
AXP192_GPIO_1V8,
|
||||
AXP192_GPIO_1V9,
|
||||
AXP192_GPIO_2V0,
|
||||
AXP192_GPIO_2V1,
|
||||
AXP192_GPIO_2V2,
|
||||
AXP192_GPIO_2V3,
|
||||
AXP192_GPIO_2V4,
|
||||
AXP192_GPIO_2V5,
|
||||
AXP192_GPIO_2V6,
|
||||
AXP192_GPIO_2V7,
|
||||
AXP192_GPIO_2V8,
|
||||
AXP192_GPIO_2V9,
|
||||
AXP192_GPIO_3V0,
|
||||
AXP192_GPIO_3V1,
|
||||
AXP192_GPIO_3V2,
|
||||
AXP192_GPIO_3V3,
|
||||
} axp192_gpio_voltage_t;
|
||||
|
||||
typedef enum {
|
||||
AXP1XX_CHARGE_CUR_100MA,
|
||||
AXP1XX_CHARGE_CUR_190MA,
|
||||
AXP1XX_CHARGE_CUR_280MA,
|
||||
AXP1XX_CHARGE_CUR_360MA,
|
||||
AXP1XX_CHARGE_CUR_450MA,
|
||||
AXP1XX_CHARGE_CUR_550MA,
|
||||
AXP1XX_CHARGE_CUR_630MA,
|
||||
AXP1XX_CHARGE_CUR_700MA,
|
||||
AXP1XX_CHARGE_CUR_780MA,
|
||||
AXP1XX_CHARGE_CUR_880MA,
|
||||
AXP1XX_CHARGE_CUR_960MA,
|
||||
AXP1XX_CHARGE_CUR_1000MA,
|
||||
AXP1XX_CHARGE_CUR_1080MA,
|
||||
AXP1XX_CHARGE_CUR_1160MA,
|
||||
AXP1XX_CHARGE_CUR_1240MA,
|
||||
AXP1XX_CHARGE_CUR_1320MA,
|
||||
} axp1xx_charge_current_t;
|
||||
|
||||
typedef uint8_t (*axp_com_fptr_t)(uint8_t dev_addr, uint8_t reg_addr, uint8_t *data, uint8_t len);
|
||||
|
||||
|
||||
/**
|
||||
* A common baseclass for any component that can provide a battery charge level
|
||||
*/
|
||||
class HasBatteryLevel {
|
||||
public:
|
||||
/**
|
||||
* Battery state of charge, from 0 to 100 or -1 for unknown
|
||||
*/
|
||||
virtual int getBattPercentage() { return -1; }
|
||||
|
||||
/**
|
||||
* The raw voltage of the battery or NAN if unknown
|
||||
*/
|
||||
virtual float getBattVoltage() { return NAN; }
|
||||
|
||||
/**
|
||||
* return true if there is a battery installed in this unit
|
||||
*/
|
||||
virtual bool isBatteryConnect() { return false; }
|
||||
|
||||
virtual bool isVBUSPlug() { return false; }
|
||||
virtual bool isChargeing() { return false; }
|
||||
};
|
||||
|
||||
class AXP20X_Class : public HasBatteryLevel
|
||||
{
|
||||
public:
|
||||
int begin(TwoWire &port = Wire, uint8_t addr = AXP202_SLAVE_ADDRESS, bool isAxp173 = false);
|
||||
int begin(axp_com_fptr_t read_cb, axp_com_fptr_t write_cb, uint8_t addr = AXP202_SLAVE_ADDRESS, bool isAxp173 = false);
|
||||
|
||||
// Power Output Control
|
||||
int setPowerOutPut(uint8_t ch, bool en);
|
||||
|
||||
bool isBatteryConnect();
|
||||
bool isChargeing();
|
||||
bool isLDO2Enable();
|
||||
bool isLDO3Enable();
|
||||
bool isLDO4Enable();
|
||||
bool isDCDC3Enable();
|
||||
bool isDCDC2Enable();
|
||||
bool isChargeingEnable();
|
||||
bool isVBUSPlug();
|
||||
bool isExtenEnable();
|
||||
|
||||
//Only axp192 chip
|
||||
bool isDCDC1Enable();
|
||||
|
||||
|
||||
//IRQ Status
|
||||
bool isAcinOverVoltageIRQ();
|
||||
bool isAcinPlugInIRQ();
|
||||
bool isAcinRemoveIRQ();
|
||||
bool isVbusOverVoltageIRQ();
|
||||
bool isVbusPlugInIRQ();
|
||||
bool isVbusRemoveIRQ();
|
||||
bool isVbusLowVHOLDIRQ();
|
||||
|
||||
bool isBattPlugInIRQ();
|
||||
bool isBattRemoveIRQ();
|
||||
bool isBattEnterActivateIRQ();
|
||||
bool isBattExitActivateIRQ();
|
||||
bool isChargingIRQ();
|
||||
bool isChargingDoneIRQ();
|
||||
bool isBattTempLowIRQ();
|
||||
bool isBattTempHighIRQ();
|
||||
|
||||
bool isPEKShortPressIRQ();
|
||||
bool isPEKLongtPressIRQ();
|
||||
bool isTimerTimeoutIRQ();
|
||||
|
||||
//! Group4 ADC data
|
||||
float getAcinVoltage();
|
||||
float getAcinCurrent();
|
||||
float getVbusVoltage();
|
||||
float getVbusCurrent();
|
||||
float getTemp();
|
||||
float getTSTemp();
|
||||
float getGPIO0Voltage();
|
||||
float getGPIO1Voltage();
|
||||
float getBattInpower();
|
||||
float getBattVoltage();
|
||||
float getBattChargeCurrent();
|
||||
float getBattDischargeCurrent();
|
||||
float getSysIPSOUTVoltage();
|
||||
uint32_t getBattChargeCoulomb();
|
||||
uint32_t getBattDischargeCoulomb();
|
||||
float getSettingChargeCurrent();
|
||||
|
||||
int setChargingTargetVoltage(axp_chargeing_vol_t param);
|
||||
int enableChargeing(bool en);
|
||||
|
||||
int adc1Enable(uint16_t params, bool en);
|
||||
int adc2Enable(uint16_t params, bool en);
|
||||
|
||||
int setTScurrent(axp_ts_pin_current_t current);
|
||||
int setTSfunction(axp_ts_pin_function_t func);
|
||||
int setTSmode(axp_ts_pin_mode_t mode);
|
||||
|
||||
|
||||
int setTimer(uint8_t minutes);
|
||||
int offTimer();
|
||||
int clearTimerStatus();
|
||||
/**
|
||||
* param: axp202_startup_time_t or axp192_startup_time_t
|
||||
*/
|
||||
int setStartupTime(uint8_t param);
|
||||
|
||||
/**
|
||||
* param: axp_loonPress_time_t
|
||||
*/
|
||||
int setlongPressTime(uint8_t param);
|
||||
|
||||
/**
|
||||
* @param param: axp_poweroff_time_t
|
||||
*/
|
||||
int setShutdownTime(uint8_t param);
|
||||
|
||||
int setTimeOutShutdown(bool en);
|
||||
|
||||
int shutdown();
|
||||
|
||||
/**
|
||||
* params: axp_irq_t
|
||||
*/
|
||||
int enableIRQ(uint64_t params, bool en);
|
||||
int readIRQ();
|
||||
void clearIRQ();
|
||||
|
||||
int setDCDC1Voltage(uint16_t mv); //! Only AXP192 support and AXP173
|
||||
// return mv
|
||||
uint16_t getDCDC1Voltage(); //! Only AXP192 support and AXP173
|
||||
|
||||
// -----------------
|
||||
|
||||
/*
|
||||
!! Chip resource table
|
||||
| CHIP | AXP173 | AXP192 | AXP202 |
|
||||
| -------- | ---------------- | ---------------- | ---------------- |
|
||||
| DC1 | 0v7~3v5 /1200mA | 0v7~3v5 /1200mA | X |
|
||||
| DC2 | 0v7~2v275/1600mA | 0v7~2v275/1600mA | 0v7~2v275/1600mA |
|
||||
| DC3 | X | 0v7~3v5 /700mA | 0v7~3v5 /1200mA |
|
||||
| LDO1 | 3v3 /30mA | 3v3 /30mA | 3v3 /30mA |
|
||||
| LDO2 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 1v8~3v3 /200mA |
|
||||
| LDO3 | 1v8~3v3 /200mA | 1v8~3v3 /200mA | 0v7~3v3 /200mA |
|
||||
| LDO4 | 0v7~3v5 /500mA | X | 1v8~3v3 /200mA |
|
||||
| LDO5/IO0 | X | 1v8~3v3 /50mA | 1v8~3v3 /50mA |
|
||||
*/
|
||||
int setDCDC2Voltage(uint16_t mv);
|
||||
uint16_t getDCDC2Voltage();
|
||||
|
||||
int setDCDC3Voltage(uint16_t mv);
|
||||
uint16_t getDCDC3Voltage();
|
||||
|
||||
int setLDO2Voltage(uint16_t mv);
|
||||
uint16_t getLDO2Voltage();
|
||||
|
||||
int setLDO3Voltage(uint16_t mv);
|
||||
uint16_t getLDO3Voltage();
|
||||
|
||||
|
||||
int setLDO4Voltage(axp_ldo4_table_t param); //! Only axp202 support
|
||||
int setLDO4Voltage(uint16_t mv); //! Only axp173 support
|
||||
|
||||
// return mv
|
||||
uint16_t getLDO4Voltage(); //! Only axp173/axp202 support
|
||||
|
||||
|
||||
/**
|
||||
* @param mode: axp_chgled_mode_t
|
||||
*/
|
||||
int setChgLEDMode(axp_chgled_mode_t mode);
|
||||
int setChgLEDModeCharging();
|
||||
|
||||
/**
|
||||
* @param mode: axp202_ldo3_mode_t
|
||||
*/
|
||||
int setLDO3Mode(uint8_t mode); //! Only AXP202 support
|
||||
|
||||
int getBattPercentage();
|
||||
|
||||
int debugCharging();
|
||||
int debugStatus();
|
||||
int limitingOff();
|
||||
|
||||
int setAdcSamplingRate(axp_adc_sampling_rate_t rate);
|
||||
uint8_t getAdcSamplingRate();
|
||||
float getCoulombData();
|
||||
uint8_t getCoulombRegister();
|
||||
int setCoulombRegister(uint8_t val);
|
||||
int EnableCoulombcounter(void);
|
||||
int DisableCoulombcounter(void);
|
||||
int StopCoulombcounter(void);
|
||||
int ClearCoulombcounter(void);
|
||||
|
||||
|
||||
int setGPIOMode(axp_gpio_t gpio, axp_gpio_mode_t mode);
|
||||
int setGPIOIrq(axp_gpio_t gpio, axp_gpio_irq_t irq);
|
||||
int setLDO5Voltage(axp_ldo5_table_t vol);
|
||||
|
||||
int gpioWrite(axp_gpio_t gpio, uint8_t vol);
|
||||
int gpioRead(axp_gpio_t gpio);
|
||||
|
||||
// When the chip is axp192 / 173, the allowed values are 0 ~ 15, corresponding to the axp1xx_charge_current_t enumeration
|
||||
// When the chip is axp202 allows maximum charging current of 1800mA, minimum 300mA
|
||||
int getChargeControlCur();
|
||||
int setChargeControlCur(uint16_t mA);
|
||||
|
||||
private:
|
||||
uint16_t _getRegistH8L5(uint8_t regh8, uint8_t regl5)
|
||||
{
|
||||
uint8_t hv, lv;
|
||||
_readByte(regh8, 1, &hv);
|
||||
_readByte(regl5, 1, &lv);
|
||||
return (hv << 5) | (lv & 0x1F);
|
||||
}
|
||||
|
||||
uint16_t _getRegistResult(uint8_t regh8, uint8_t regl4)
|
||||
{
|
||||
uint8_t hv, lv;
|
||||
_readByte(regh8, 1, &hv);
|
||||
_readByte(regl4, 1, &lv);
|
||||
return (hv << 4) | (lv & 0x0F);
|
||||
}
|
||||
|
||||
int _readByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
|
||||
{
|
||||
if (_read_cb != nullptr) {
|
||||
return _read_cb(_address, reg, data, nbytes);
|
||||
}
|
||||
if (nbytes == 0 || !data)
|
||||
return -1;
|
||||
_i2cPort->beginTransmission(_address);
|
||||
_i2cPort->write(reg);
|
||||
_i2cPort->endTransmission();
|
||||
_i2cPort->requestFrom(_address, nbytes);
|
||||
uint8_t index = 0;
|
||||
while (_i2cPort->available())
|
||||
data[index++] = _i2cPort->read();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _writeByte(uint8_t reg, uint8_t nbytes, uint8_t *data)
|
||||
{
|
||||
if (_write_cb != nullptr) {
|
||||
return _write_cb(_address, reg, data, nbytes);
|
||||
}
|
||||
if (nbytes == 0 || !data)
|
||||
return -1;
|
||||
_i2cPort->beginTransmission(_address);
|
||||
_i2cPort->write(reg);
|
||||
for (uint8_t i = 0; i < nbytes; i++) {
|
||||
_i2cPort->write(data[i]);
|
||||
}
|
||||
_i2cPort->endTransmission();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _setGpioInterrupt(uint8_t *val, int mode, bool en);
|
||||
int _axp_probe();
|
||||
int _axp_irq_mask(axp_gpio_irq_t irq);
|
||||
|
||||
int _axp192_gpio_set(axp_gpio_t gpio, axp_gpio_mode_t mode);
|
||||
int _axp192_gpio_0_select( axp_gpio_mode_t mode);
|
||||
int _axp192_gpio_1_select( axp_gpio_mode_t mode);
|
||||
int _axp192_gpio_3_select( axp_gpio_mode_t mode);
|
||||
int _axp192_gpio_4_select( axp_gpio_mode_t mode);
|
||||
|
||||
int _axp202_gpio_set(axp_gpio_t gpio, axp_gpio_mode_t mode);
|
||||
int _axp202_gpio_0_select( axp_gpio_mode_t mode);
|
||||
int _axp202_gpio_1_select( axp_gpio_mode_t mode);
|
||||
int _axp202_gpio_2_select( axp_gpio_mode_t mode);
|
||||
int _axp202_gpio_3_select( axp_gpio_mode_t mode);
|
||||
int _axp202_gpio_irq_set(axp_gpio_t gpio, axp_gpio_irq_t irq);
|
||||
int _axp202_gpio_write(axp_gpio_t gpio, uint8_t val);
|
||||
int _axp202_gpio_read(axp_gpio_t gpio);
|
||||
|
||||
|
||||
static const uint8_t startupParams[], longPressParams[], shutdownParams[], targetVolParams[];
|
||||
static uint8_t _outputReg;
|
||||
uint8_t _address, _irq[5], _chip_id, _gpio[4];
|
||||
bool _init = false;
|
||||
axp_com_fptr_t _read_cb = nullptr;
|
||||
axp_com_fptr_t _write_cb = nullptr;
|
||||
TwoWire *_i2cPort;
|
||||
bool _isAxp173;
|
||||
};
|
241
lib/lvgl_esp32_drivers/lvgl_helpers.c
Normal file
@ -0,0 +1,241 @@
|
||||
/**
|
||||
* @file lvgl_helpers.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "sdkconfig.h"
|
||||
#include "lv_conf.h"
|
||||
#include "lvgl_helpers.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#include "lvgl_tft/disp_spi.h"
|
||||
#include "lvgl_touch/tp_spi.h"
|
||||
|
||||
#include "lvgl_spi_conf.h"
|
||||
#include "lvgl_i2c_conf.h"
|
||||
|
||||
#include "driver/i2c.h"
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "src/lv_core/lv_refr.h"
|
||||
#else
|
||||
#include "lvgl/src/lv_core/lv_refr.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
#define TAG "lvgl_helpers"
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
/* Interface and driver initialization */
|
||||
void lvgl_driver_init(void)
|
||||
{
|
||||
ESP_LOGI(TAG, "Display hor size: %d, ver size: %d", LV_HOR_RES_MAX, LV_VER_RES_MAX);
|
||||
ESP_LOGI(TAG, "Display buffer size: %d", DISP_BUF_SIZE);
|
||||
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
ESP_LOGI(TAG, "Initializing SPI master for FT81X");
|
||||
|
||||
lvgl_spi_driver_init(TFT_SPI_HOST,
|
||||
DISP_SPI_MISO, DISP_SPI_MOSI, DISP_SPI_CLK,
|
||||
SPI_BUS_MAX_TRANSFER_SZ, 1,
|
||||
DISP_SPI_IO2, DISP_SPI_IO3);
|
||||
|
||||
disp_spi_add_device(TFT_SPI_HOST);
|
||||
disp_driver_init();
|
||||
|
||||
#if defined (CONFIG_LV_TOUCH_CONTROLLER_FT81X)
|
||||
touch_driver_init();
|
||||
#endif
|
||||
|
||||
return;
|
||||
#endif
|
||||
|
||||
#if defined (SHARED_SPI_BUS)
|
||||
ESP_LOGI(TAG, "Initializing shared SPI master");
|
||||
|
||||
lvgl_spi_driver_init(TFT_SPI_HOST,
|
||||
TP_SPI_MISO, DISP_SPI_MOSI, DISP_SPI_CLK,
|
||||
SPI_BUS_MAX_TRANSFER_SZ, 1,
|
||||
-1, -1);
|
||||
|
||||
disp_spi_add_device(TFT_SPI_HOST);
|
||||
tp_spi_add_device(TOUCH_SPI_HOST);
|
||||
|
||||
disp_driver_init();
|
||||
touch_driver_init();
|
||||
|
||||
return;
|
||||
#endif
|
||||
|
||||
#if defined (SHARED_I2C_BUS)
|
||||
ESP_LOGI(TAG, "Initializing shared I2C master");
|
||||
|
||||
lvgl_i2c_driver_init(DISP_I2C_PORT,
|
||||
DISP_I2C_SDA, DISP_I2C_SCL,
|
||||
DISP_I2C_SPEED_HZ);
|
||||
|
||||
disp_driver_init();
|
||||
touch_driver_init();
|
||||
|
||||
return;
|
||||
#endif
|
||||
|
||||
/* Display controller initialization */
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI
|
||||
ESP_LOGI(TAG, "Initializing SPI master for display");
|
||||
|
||||
lvgl_spi_driver_init(TFT_SPI_HOST,
|
||||
DISP_SPI_MISO, DISP_SPI_MOSI, DISP_SPI_CLK,
|
||||
SPI_BUS_MAX_TRANSFER_SZ, 1,
|
||||
DISP_SPI_IO2, DISP_SPI_IO3);
|
||||
|
||||
disp_spi_add_device(TFT_SPI_HOST);
|
||||
|
||||
disp_driver_init();
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_PROTOCOL_I2C)
|
||||
ESP_LOGI(TAG, "Initializing I2C master for display");
|
||||
/* Init the i2c master on the display driver code */
|
||||
lvgl_i2c_driver_init(DISP_I2C_PORT,
|
||||
DISP_I2C_SDA, DISP_I2C_SCL,
|
||||
DISP_I2C_SPEED_HZ);
|
||||
|
||||
disp_driver_init();
|
||||
#else
|
||||
#error "No protocol defined for display controller"
|
||||
#endif
|
||||
|
||||
/* Touch controller initialization */
|
||||
#if CONFIG_LV_TOUCH_CONTROLLER != TOUCH_CONTROLLER_NONE
|
||||
#if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_SPI)
|
||||
ESP_LOGI(TAG, "Initializing SPI master for touch");
|
||||
|
||||
lvgl_spi_driver_init(TOUCH_SPI_HOST,
|
||||
TP_SPI_MISO, TP_SPI_MOSI, TP_SPI_CLK,
|
||||
0 /* Defaults to 4094 */, 2,
|
||||
-1, -1);
|
||||
|
||||
tp_spi_add_device(TOUCH_SPI_HOST);
|
||||
|
||||
touch_driver_init();
|
||||
#elif defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_I2C)
|
||||
ESP_LOGI(TAG, "Initializing I2C master for touch");
|
||||
|
||||
lvgl_i2c_driver_init(TOUCH_I2C_PORT,
|
||||
TOUCH_I2C_SDA, TOUCH_I2C_SCL,
|
||||
TOUCH_I2C_SPEED_HZ);
|
||||
|
||||
touch_driver_init();
|
||||
#elif defined (CONFIG_LV_TOUCH_DRIVER_ADC)
|
||||
touch_driver_init();
|
||||
#elif defined (CONFIG_LV_TOUCH_DRIVER_DISPLAY)
|
||||
touch_driver_init();
|
||||
#else
|
||||
#error "No protocol defined for touch controller"
|
||||
#endif
|
||||
#else
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Config the i2c master
|
||||
*
|
||||
* This should init the i2c master to be used on display and touch controllers.
|
||||
* So we should be able to know if the display and touch controllers shares the
|
||||
* same i2c master.
|
||||
*/
|
||||
bool lvgl_i2c_driver_init(int port, int sda_pin, int scl_pin, int speed_hz)
|
||||
{
|
||||
esp_err_t err;
|
||||
|
||||
ESP_LOGI(TAG, "Initializing I2C master port %d...", port);
|
||||
ESP_LOGI(TAG, "SDA pin: %d, SCL pin: %d, Speed: %d (Hz)",
|
||||
sda_pin, scl_pin, speed_hz);
|
||||
|
||||
i2c_config_t conf = {
|
||||
.mode = I2C_MODE_MASTER,
|
||||
.sda_io_num = sda_pin,
|
||||
.sda_pullup_en = GPIO_PULLUP_ENABLE,
|
||||
.scl_io_num = scl_pin,
|
||||
.scl_pullup_en = GPIO_PULLUP_ENABLE,
|
||||
.master.clk_speed = speed_hz,
|
||||
};
|
||||
|
||||
ESP_LOGI(TAG, "Setting I2C master configuration...");
|
||||
err = i2c_param_config(port, &conf);
|
||||
assert(ESP_OK == err);
|
||||
|
||||
ESP_LOGI(TAG, "Installing I2C master driver...");
|
||||
err = i2c_driver_install(port,
|
||||
I2C_MODE_MASTER,
|
||||
0, 0 /*I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE */,
|
||||
0 /* intr_alloc_flags */);
|
||||
assert(ESP_OK == err);
|
||||
|
||||
return ESP_OK != err;
|
||||
}
|
||||
|
||||
/* Initialize spi bus master */
|
||||
bool lvgl_spi_driver_init(int host,
|
||||
int miso_pin, int mosi_pin, int sclk_pin,
|
||||
int max_transfer_sz,
|
||||
int dma_channel,
|
||||
int quadwp_pin, int quadhd_pin)
|
||||
{
|
||||
#if defined (CONFIG_IDF_TARGET_ESP32)
|
||||
assert((SPI_HOST <= host) && (VSPI_HOST >= host));
|
||||
const char *spi_names[] = {
|
||||
"SPI_HOST", "HSPI_HOST", "VSPI_HOST"
|
||||
};
|
||||
#elif defined (CONFIG_IDF_TARGET_ESP32S2)
|
||||
assert((SPI_HOST <= host) && (HSPI_HOST >= host));
|
||||
const char *spi_names[] = {
|
||||
"SPI_HOST", "", ""
|
||||
};
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Configuring SPI host %s (%d)", spi_names[host], host);
|
||||
ESP_LOGI(TAG, "MISO pin: %d, MOSI pin: %d, SCLK pin: %d, IO2/WP pin: %d, IO3/HD pin: %d",
|
||||
miso_pin, mosi_pin, sclk_pin, quadwp_pin, quadhd_pin);
|
||||
|
||||
ESP_LOGI(TAG, "Max transfer size: %d (bytes)", max_transfer_sz);
|
||||
|
||||
spi_bus_config_t buscfg = {
|
||||
.miso_io_num = miso_pin,
|
||||
.mosi_io_num = mosi_pin,
|
||||
.sclk_io_num = sclk_pin,
|
||||
.quadwp_io_num = quadwp_pin,
|
||||
.quadhd_io_num = quadhd_pin,
|
||||
.max_transfer_sz = max_transfer_sz
|
||||
};
|
||||
|
||||
ESP_LOGI(TAG, "Initializing SPI bus...");
|
||||
esp_err_t ret = spi_bus_initialize(host, &buscfg, dma_channel);
|
||||
assert(ret == ESP_OK);
|
||||
|
||||
return ESP_OK != ret;
|
||||
}
|
||||
|
85
lib/lvgl_esp32_drivers/lvgl_helpers.h
Normal file
@ -0,0 +1,85 @@
|
||||
/**
|
||||
* @file lvgl_helpers.h
|
||||
*/
|
||||
|
||||
#ifndef LVGL_HELPERS_H
|
||||
#define LVGL_HELPERS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "lvgl_spi_conf.h"
|
||||
#include "lvgl_tft/disp_driver.h"
|
||||
#include "lvgl_touch/touch_driver.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789)
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
#define DISP_BUF_SIZE (CONFIG_LV_DISPLAY_WIDTH*CONFIG_LV_DISPLAY_HEIGHT)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 64)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
#define DISP_BUF_SIZE (CONFIG_LV_DISPLAY_WIDTH*CONFIG_LV_DISPLAY_HEIGHT)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
#define DISP_BUF_LINES 40
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * DISP_BUF_LINES)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820)
|
||||
#define DISP_BUF_SIZE (CONFIG_LV_DISPLAY_HEIGHT * IL3820_COLUMNS)
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01)
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
|
||||
#define DISP_BUF_SIZE ((CONFIG_LV_DISPLAY_HEIGHT * CONFIG_LV_DISPLAY_WIDTH) / 8) // 5KB
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D)
|
||||
#define DISP_BUF_SIZE ((CONFIG_LV_DISPLAY_HEIGHT * CONFIG_LV_DISPLAY_WIDTH) / 8) // 2888 bytes
|
||||
#else
|
||||
#error "No display controller selected"
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/* Initialize detected SPI and I2C bus and devices */
|
||||
void lvgl_driver_init(void);
|
||||
|
||||
/* Initialize SPI master */
|
||||
bool lvgl_spi_driver_init(int host, int miso_pin, int mosi_pin, int sclk_pin,
|
||||
int max_transfer_sz, int dma_channel, int quadwp_pin, int quadhd_pin);
|
||||
/* Initialize I2C master */
|
||||
bool lvgl_i2c_driver_init(int port, int sda_pin, int scl_pin, int speed);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* LVGL_HELPERS_H */
|
116
lib/lvgl_esp32_drivers/lvgl_i2c_conf.h
Normal file
@ -0,0 +1,116 @@
|
||||
/**
|
||||
* @file lvgl_i2c_config.h
|
||||
*/
|
||||
|
||||
#ifndef LVGL_I2C_CONF_H
|
||||
#define LVGL_I2C_CONF_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/* TODO: Define the I2C bus clock based on the selected display or touch
|
||||
* controllers. */
|
||||
|
||||
/* Do both display and touch controllers uses I2C? */
|
||||
#if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_I2C) && \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_PROTOCOL_I2C)
|
||||
|
||||
#if defined (CONFIG_LV_DISPLAY_I2C_PORT_0) && \
|
||||
defined (CONFIG_LV_TOUCH_I2C_PORT_0)
|
||||
#define SHARED_I2C_PORT
|
||||
#define DISP_I2C_PORT I2C_NUM_0
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_DISPLAY_I2C_PORT_1) && \
|
||||
defined (CONFIG_LV_TOUCH_I2C_PORT_1)
|
||||
#define SHARED_I2C_PORT
|
||||
#define DISP_I2C_PORT I2C_NUM_1
|
||||
#endif
|
||||
|
||||
#if !defined (SHARED_I2C_PORT)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined (SHARED_I2C_PORT)
|
||||
/* If the port is shared the display and touch controllers must use the same
|
||||
* SCL and SDA pins, otherwise let the user know with an error. */
|
||||
#if (CONFIG_LV_DISP_PIN_SDA != CONFIG_LV_TOUCH_I2C_SDA) || \
|
||||
(CONFIG_LV_DISP_PIN_SCL != CONFIG_LV_TOUCH_I2C_SCL)
|
||||
#error "To share I2C port you need to choose the same SDA and SCL pins on both display and touch configurations"
|
||||
#endif
|
||||
|
||||
#define DISP_I2C_SDA CONFIG_LV_DISP_PIN_SDA
|
||||
#define DISP_I2C_SCL CONFIG_LV_DISP_PIN_SCL
|
||||
#define DISP_I2C_ORIENTATION TFT_ORIENTATION_LANDSCAPE
|
||||
|
||||
/* Setting the I2C speed to the slowest one */
|
||||
#if DISP_I2C_SPEED_HZ < TOUCH_I2C_SPEED_HZ
|
||||
#define DISP_I2C_SPEED_HZ 400000 /* DISP_I2C_SPEED_HZ */
|
||||
#else
|
||||
#define DISP_I2C_SPEED_HZ 400000 /* DISP_I2C_SPEED_HZ */
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
/* lets check if the touch controller uses I2C... */
|
||||
#if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_I2C)
|
||||
#if defined (CONFIG_LV_TOUCH_I2C_PORT_0)
|
||||
#define TOUCH_I2C_PORT I2C_NUM_0
|
||||
#else
|
||||
#define TOUCH_I2C_PORT I2C_NUM_1
|
||||
#endif
|
||||
#define TOUCH_I2C_SDA CONFIG_LV_TOUCH_I2C_SDA
|
||||
#define TOUCH_I2C_SCL CONFIG_LV_TOUCH_I2C_SCL
|
||||
#define TOUCH_I2C_SPEED_HZ 400000
|
||||
#endif
|
||||
|
||||
/* lets check if the display controller uses I2C... */
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_PROTOCOL_I2C)
|
||||
#if defined (CONFIG_LV_DISPLAY_I2C_PORT_0)
|
||||
#define DISP_I2C_PORT I2C_NUM_0
|
||||
#else
|
||||
#define DISP_I2C_PORT I2C_NUM_1
|
||||
#endif
|
||||
|
||||
#define DISP_I2C_SDA CONFIG_LV_DISP_PIN_SDA
|
||||
#define DISP_I2C_SCL CONFIG_LV_DISP_PIN_SCL
|
||||
#define DISP_I2C_ORIENTATION TFT_ORIENTATION_LANDSCAPE
|
||||
#define DISP_I2C_SPEED_HZ 400000
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*LVGL_I2C_CONF_H*/
|
198
lib/lvgl_esp32_drivers/lvgl_spi_conf.h
Normal file
@ -0,0 +1,198 @@
|
||||
/**
|
||||
* @file lvgl_spi_conf.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LVGL_SPI_CONF_H
|
||||
#define LVGL_SPI_CONF_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
// DISPLAY PINS
|
||||
#define DISP_SPI_MOSI CONFIG_LV_DISP_SPI_MOSI
|
||||
#if defined (CONFIG_LV_DISPLAY_USE_SPI_MISO)
|
||||
#define DISP_SPI_MISO CONFIG_LV_DISP_SPI_MISO
|
||||
#define DISP_SPI_INPUT_DELAY_NS CONFIG_LV_DISP_SPI_INPUT_DELAY_NS
|
||||
#else
|
||||
#define DISP_SPI_MISO (-1)
|
||||
#define DISP_SPI_INPUT_DELAY_NS (0)
|
||||
#endif
|
||||
#if defined(CONFIG_LV_DISP_SPI_IO2)
|
||||
#define DISP_SPI_IO2 CONFIG_LV_DISP_SPI_IO2
|
||||
#else
|
||||
#define DISP_SPI_IO2 (-1)
|
||||
#endif
|
||||
#if defined(CONFIG_LV_DISP_SPI_IO3)
|
||||
#define DISP_SPI_IO3 CONFIG_LV_DISP_SPI_IO3
|
||||
#else
|
||||
#define DISP_SPI_IO3 (-1)
|
||||
#endif
|
||||
#define DISP_SPI_CLK CONFIG_LV_DISP_SPI_CLK
|
||||
#if defined (CONFIG_LV_DISPLAY_USE_SPI_CS)
|
||||
#define DISP_SPI_CS CONFIG_LV_DISP_SPI_CS
|
||||
#else
|
||||
#define DISP_SPI_CS (-1)
|
||||
#endif
|
||||
|
||||
/* Define TOUCHPAD PINS when selecting a touch controller */
|
||||
#if !defined (CONFIG_LV_TOUCH_CONTROLLER_NONE)
|
||||
|
||||
/* Handle FT81X special case */
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X) && \
|
||||
defined (CONFIG_LV_TOUCH_CONTROLLER_FT81X)
|
||||
|
||||
#define TP_SPI_MOSI CONFIG_LV_DISP_SPI_MOSI
|
||||
#define TP_SPI_MISO CONFIG_LV_DISP_SPI_MISO
|
||||
#define TP_SPI_CLK CONFIG_LV_DISP_SPI_CLK
|
||||
#define TP_SPI_CS CONFIG_LV_DISP_SPI_CS
|
||||
#else
|
||||
#define TP_SPI_MOSI CONFIG_LV_TOUCH_SPI_MOSI
|
||||
#define TP_SPI_MISO CONFIG_LV_TOUCH_SPI_MISO
|
||||
#define TP_SPI_CLK CONFIG_LV_TOUCH_SPI_CLK
|
||||
#define TP_SPI_CS CONFIG_LV_TOUCH_SPI_CS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define ENABLE_TOUCH_INPUT CONFIG_LV_ENABLE_TOUCH
|
||||
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_SPI_HSPI)
|
||||
#define TFT_SPI_HOST HSPI_HOST
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI_VSPI)
|
||||
#define TFT_SPI_HOST VSPI_HOST
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI_FSPI)
|
||||
#define TFT_SPI_HOST FSPI_HOST
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_SPI_HALF_DUPLEX)
|
||||
#define DISP_SPI_HALF_DUPLEX
|
||||
#else
|
||||
#define DISP_SPI_FULL_DUPLEX
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_SPI_TRANS_MODE_DIO)
|
||||
#define DISP_SPI_TRANS_MODE_DIO
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_SPI_TRANS_MODE_QIO)
|
||||
#define DISP_SPI_TRANS_MODE_QIO
|
||||
#else
|
||||
#define DISP_SPI_TRANS_MODE_SIO
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_HSPI)
|
||||
#define TOUCH_SPI_HOST HSPI_HOST
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_VSPI)
|
||||
#define TOUCH_SPI_HOST VSPI_HOST
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_SPI_FSPI)
|
||||
#define TOUCH_SPI_HOST FSPI_HOST
|
||||
#endif
|
||||
|
||||
/* Handle the FT81X Special case */
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
|
||||
#if defined (CONFIG_LV_TOUCH_CONTROLLER_FT81X)
|
||||
#define SHARED_SPI_BUS
|
||||
#else
|
||||
/* Empty */
|
||||
#endif
|
||||
|
||||
#else
|
||||
// Detect the use of a shared SPI Bus and verify the user specified the same SPI bus for both touch and tft
|
||||
#if defined (CONFIG_LV_TOUCH_DRIVER_PROTOCOL_SPI) && TP_SPI_MOSI == DISP_SPI_MOSI && TP_SPI_CLK == DISP_SPI_CLK
|
||||
#if TFT_SPI_HOST != TOUCH_SPI_HOST
|
||||
#error You must specify the same SPI host (HSPI, VSPI or FSPI) for both display and touch driver
|
||||
#endif
|
||||
|
||||
#define SHARED_SPI_BUS
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488)
|
||||
|
||||
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 3)
|
||||
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820) || \
|
||||
defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
|
||||
|
||||
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 2)
|
||||
|
||||
#else
|
||||
#define SPI_BUS_MAX_TRANSFER_SZ (DISP_BUF_SIZE * 2)
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_TFT_USE_CUSTOM_SPI_CLK_DIVIDER)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ ((80 * 1000 * 1000) / CONFIG_LV_TFT_CUSTOM_SPI_CLK_DIVIDER)
|
||||
#else
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (20*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (26*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (8*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (16*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (20*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (32*1000*1000)
|
||||
#else
|
||||
#define SPI_TFT_CLOCK_SPEED_HZ (40*1000*1000)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789)
|
||||
#define SPI_TFT_SPI_MODE (2)
|
||||
#else
|
||||
#define SPI_TFT_SPI_MODE (0)
|
||||
#endif
|
||||
|
||||
/* Touch driver */
|
||||
#if (CONFIG_LV_TOUCH_CONTROLLER == TOUCH_CONTROLLER_STMPE610)
|
||||
#define SPI_TOUCH_CLOCK_SPEED_HZ (1*1000*1000)
|
||||
#define SPI_TOUCH_SPI_MODE (1)
|
||||
#else
|
||||
#define SPI_TOUCH_CLOCK_SPEED_HZ (2*1000*1000)
|
||||
#define SPI_TOUCH_SPI_MODE (0)
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*LVGL_SPI_CONF_H*/
|
53
lib/lvgl_esp32_drivers/lvgl_tft/CMakeLists.txt
Normal file
@ -0,0 +1,53 @@
|
||||
if(ESP_PLATFORM)
|
||||
|
||||
set(SOURCES "disp_driver.c")
|
||||
|
||||
# Include only the source file of the selected
|
||||
# display controller.
|
||||
if(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341)
|
||||
list(APPEND SOURCES "ili9341.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481)
|
||||
list(APPEND SOURCES "ili9481.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486)
|
||||
list(APPEND SOURCES "ili9486.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488)
|
||||
list(APPEND SOURCES "ili9488.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789)
|
||||
list(APPEND SOURCES "st7789.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S)
|
||||
list(APPEND SOURCES "st7735s.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357)
|
||||
list(APPEND SOURCES "hx8357.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107)
|
||||
list(APPEND SOURCES "sh1107.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306)
|
||||
list(APPEND SOURCES "ssd1306.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
list(APPEND SOURCES "EVE_commands.c")
|
||||
list(APPEND SOURCES "FT81x.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820)
|
||||
list(APPEND SOURCES "il3820.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A)
|
||||
list(APPEND SOURCES "jd79653a.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D)
|
||||
list(APPEND SOURCES "uc8151d.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875)
|
||||
list(APPEND SOURCES "ra8875.c")
|
||||
elseif(CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01)
|
||||
list(APPEND SOURCES "GC9A01.c")
|
||||
else()
|
||||
message("DISPLAY CONTROLLER NOT DEFINED")
|
||||
endif()
|
||||
|
||||
if(CONFIG_LV_TFT_DISPLAY_PROTOCOL_SPI)
|
||||
list(APPEND SOURCES "disp_spi.c")
|
||||
endif()
|
||||
|
||||
# Print the included source files
|
||||
message("SOURCES contents: " "${SOURCES}")
|
||||
|
||||
idf_component_register(SRCS ${SOURCES}
|
||||
INCLUDE_DIRS .
|
||||
REQUIRES lvgl)
|
||||
|
||||
endif()
|
842
lib/lvgl_esp32_drivers/lvgl_tft/EVE.h
Normal file
@ -0,0 +1,842 @@
|
||||
/*
|
||||
@file EVE.h
|
||||
@brief Contains FT80x/FT81x/BT81x API definitions
|
||||
@version 4.1 LvGL edition
|
||||
@date 2020-04-15
|
||||
@author Rudolph Riedel, David Jade
|
||||
|
||||
@section LICENSE
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016-2020 Rudolph Riedel and David Jade
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@section History
|
||||
|
||||
4.1 LvGL edition
|
||||
|
||||
- This version is a heavily modified version of the MIT licensed FT81x code from https://github.com/RudolphRiedel/FT800-FT813
|
||||
This version is based on a fork by David Jade that added native SPI DMA support and stripped out non-ESP32 code.
|
||||
It has also been trimmed down to suit LvGL's needs. Extra features can be enabled by defining FT81X_FULL
|
||||
*/
|
||||
|
||||
#if defined (ESP_PLATFORM)
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "EVE_config.h"
|
||||
|
||||
#ifndef EVE_H_
|
||||
#define EVE_H_
|
||||
|
||||
|
||||
#define DL_CLEAR 0x26000000UL /* requires OR'd arguments */
|
||||
#define DL_CLEAR_RGB 0x02000000UL /* requires OR'd arguments */
|
||||
#define DL_COLOR_RGB 0x04000000UL /* requires OR'd arguments */
|
||||
#define DL_POINT_SIZE 0x0D000000UL /* requires OR'd arguments */
|
||||
#define DL_END 0x21000000UL
|
||||
#define DL_BEGIN 0x1F000000UL /* requires OR'd arguments */
|
||||
#define DL_DISPLAY 0x00000000UL
|
||||
|
||||
#define CLR_COL 0x4
|
||||
#define CLR_STN 0x2
|
||||
#define CLR_TAG 0x1
|
||||
|
||||
/* SPI SIO/DIO/QIO tranfer widths */
|
||||
#define SPI_WIDTH_SIO 0x0
|
||||
#define SPI_WIDTH_DIO 0x1
|
||||
#define SPI_WIDTH_QIO 0x2
|
||||
|
||||
|
||||
/* Host commands */
|
||||
#define EVE_ACTIVE 0x00 /* place FT8xx in active state */
|
||||
#define EVE_STANDBY 0x41 /* place FT8xx in Standby (clk running) */
|
||||
#define EVE_SLEEP 0x42 /* place FT8xx in Sleep (clk off) */
|
||||
#define EVE_PWRDOWN 0x50 /* place FT8xx in Power Down (core off) */
|
||||
#define EVE_CLKEXT 0x44 /* select external clock source */
|
||||
#define EVE_CLKINT 0x48 /* select internal clock source */
|
||||
#define EVE_CORERST 0x68 /* reset core - all registers default and processors reset */
|
||||
#define EVE_CLK48M 0x62 /* select 48MHz PLL output */
|
||||
#define EVE_CLK36M 0x61 /* select 36MHz PLL output */
|
||||
|
||||
|
||||
/* defines used for graphics commands */
|
||||
#define EVE_NEVER 0UL
|
||||
#define EVE_LESS 1UL
|
||||
#define EVE_LEQUAL 2UL
|
||||
#define EVE_GREATER 3UL
|
||||
#define EVE_GEQUAL 4UL
|
||||
#define EVE_EQUAL 5UL
|
||||
#define EVE_NOTEQUAL 6UL
|
||||
#define EVE_ALWAYS 7UL
|
||||
|
||||
|
||||
/* Bitmap formats */
|
||||
#define EVE_ARGB1555 0UL
|
||||
#define EVE_L1 1UL
|
||||
#define EVE_L4 2UL
|
||||
#define EVE_L8 3UL
|
||||
#define EVE_RGB332 4UL
|
||||
#define EVE_ARGB2 5UL
|
||||
#define EVE_ARGB4 6UL
|
||||
#define EVE_RGB565 7UL
|
||||
#define EVE_PALETTED 8UL
|
||||
#define EVE_TEXT8X8 9UL
|
||||
#define EVE_TEXTVGA 10UL
|
||||
#define EVE_BARGRAPH 11UL
|
||||
|
||||
|
||||
/* Bitmap filter types */
|
||||
#define EVE_NEAREST 0UL
|
||||
#define EVE_BILINEAR 1UL
|
||||
|
||||
|
||||
/* Bitmap wrap types */
|
||||
#define EVE_BORDER 0UL
|
||||
#define EVE_REPEAT 1UL
|
||||
|
||||
|
||||
/* Stencil defines */
|
||||
#define EVE_KEEP 1UL
|
||||
#define EVE_REPLACE 2UL
|
||||
#define EVE_INCR 3UL
|
||||
#define EVE_DECR 4UL
|
||||
#define EVE_INVERT 5UL
|
||||
|
||||
|
||||
/* Graphics display list swap defines */
|
||||
#define EVE_DLSWAP_DONE 0UL
|
||||
#define EVE_DLSWAP_LINE 1UL
|
||||
#define EVE_DLSWAP_FRAME 2UL
|
||||
|
||||
|
||||
/* Interrupt bits */
|
||||
#define EVE_INT_SWAP 0x01
|
||||
#define EVE_INT_TOUCH 0x02
|
||||
#define EVE_INT_TAG 0x04
|
||||
#define EVE_INT_SOUND 0x08
|
||||
#define EVE_INT_PLAYBACK 0x10
|
||||
#define EVE_INT_CMDEMPTY 0x20
|
||||
#define EVE_INT_CMDFLAG 0x40
|
||||
#define EVE_INT_CONVCOMPLETE 0x80
|
||||
|
||||
|
||||
/* Touch mode */
|
||||
#define EVE_TMODE_OFF 0
|
||||
#define EVE_TMODE_ONESHOT 1
|
||||
#define EVE_TMODE_FRAME 2
|
||||
#define EVE_TMODE_CONTINUOUS 3
|
||||
|
||||
|
||||
/* Alpha blending */
|
||||
#define EVE_ZERO 0UL
|
||||
#define EVE_ONE 1UL
|
||||
#define EVE_SRC_ALPHA 2UL
|
||||
#define EVE_DST_ALPHA 3UL
|
||||
#define EVE_ONE_MINUS_SRC_ALPHA 4UL
|
||||
#define EVE_ONE_MINUS_DST_ALPHA 5UL
|
||||
|
||||
|
||||
/* Graphics primitives */
|
||||
#define EVE_BITMAPS 1UL
|
||||
#define EVE_POINTS 2UL
|
||||
#define EVE_LINES 3UL
|
||||
#define EVE_LINE_STRIP 4UL
|
||||
#define EVE_EDGE_STRIP_R 5UL
|
||||
#define EVE_EDGE_STRIP_L 6UL
|
||||
#define EVE_EDGE_STRIP_A 7UL
|
||||
#define EVE_EDGE_STRIP_B 8UL
|
||||
#define EVE_RECTS 9UL
|
||||
|
||||
|
||||
/* Widget command */
|
||||
#define EVE_OPT_MONO 1
|
||||
#define EVE_OPT_NODL 2
|
||||
#define EVE_OPT_FLAT 256
|
||||
#define EVE_OPT_CENTERX 512
|
||||
#define EVE_OPT_CENTERY 1024
|
||||
#define EVE_OPT_CENTER (EVE_OPT_CENTERX | EVE_OPT_CENTERY)
|
||||
#define EVE_OPT_NOBACK 4096
|
||||
#define EVE_OPT_NOTICKS 8192
|
||||
#define EVE_OPT_NOHM 16384
|
||||
#define EVE_OPT_NOPOINTER 16384
|
||||
#define EVE_OPT_NOSECS 32768
|
||||
#define EVE_OPT_NOHANDS 49152
|
||||
#define EVE_OPT_RIGHTX 2048
|
||||
#define EVE_OPT_SIGNED 256
|
||||
|
||||
|
||||
/* Defines related to inbuilt font */
|
||||
#define EVE_NUMCHAR_PERFONT (128L) /* number of font characters per bitmap handle */
|
||||
#define EVE_FONT_TABLE_SIZE (148L) /* size of the font table - utilized for loopup by the graphics engine */
|
||||
#define EVE_FONT_TABLE_POINTER (0xFFFFCUL) /* pointer to the inbuilt font tables starting from bitmap handle 16 */
|
||||
|
||||
|
||||
/* Audio sample type defines */
|
||||
#define EVE_LINEAR_SAMPLES 0UL /* 8bit signed samples */
|
||||
#define EVE_ULAW_SAMPLES 1UL /* 8bit ulaw samples */
|
||||
#define EVE_ADPCM_SAMPLES 2UL /* 4bit ima adpcm samples */
|
||||
|
||||
|
||||
/* Synthesized sound */
|
||||
#define EVE_SILENCE 0x00
|
||||
#define EVE_SQUAREWAVE 0x01
|
||||
#define EVE_SINEWAVE 0x02
|
||||
#define EVE_SAWTOOTH 0x03
|
||||
#define EVE_TRIANGLE 0x04
|
||||
#define EVE_BEEPING 0x05
|
||||
#define EVE_ALARM 0x06
|
||||
#define EVE_WARBLE 0x07
|
||||
#define EVE_CAROUSEL 0x08
|
||||
#define EVE_PIPS(n) (0x0F + (n))
|
||||
#define EVE_HARP 0x40
|
||||
#define EVE_XYLOPHONE 0x41
|
||||
#define EVE_TUBA 0x42
|
||||
#define EVE_GLOCKENSPIEL 0x43
|
||||
#define EVE_ORGAN 0x44
|
||||
#define EVE_TRUMPET 0x45
|
||||
#define EVE_PIANO 0x46
|
||||
#define EVE_CHIMES 0x47
|
||||
#define EVE_MUSICBOX 0x48
|
||||
#define EVE_BELL 0x49
|
||||
#define EVE_CLICK 0x50
|
||||
#define EVE_SWITCH 0x51
|
||||
#define EVE_COWBELL 0x52
|
||||
#define EVE_NOTCH 0x53
|
||||
#define EVE_HIHAT 0x54
|
||||
#define EVE_KICKDRUM 0x55
|
||||
#define EVE_POP 0x56
|
||||
#define EVE_CLACK 0x57
|
||||
#define EVE_CHACK 0x58
|
||||
#define EVE_MUTE 0x60
|
||||
#define EVE_UNMUTE 0x61
|
||||
|
||||
|
||||
/* Synthesized sound frequencies, midi note */
|
||||
#define EVE_MIDI_A0 21
|
||||
#define EVE_MIDI_A_0 22
|
||||
#define EVE_MIDI_B0 23
|
||||
#define EVE_MIDI_C1 24
|
||||
#define EVE_MIDI_C_1 25
|
||||
#define EVE_MIDI_D1 26
|
||||
#define EVE_MIDI_D_1 27
|
||||
#define EVE_MIDI_E1 28
|
||||
#define EVE_MIDI_F1 29
|
||||
#define EVE_MIDI_F_1 30
|
||||
#define EVE_MIDI_G1 31
|
||||
#define EVE_MIDI_G_1 32
|
||||
#define EVE_MIDI_A1 33
|
||||
#define EVE_MIDI_A_1 34
|
||||
#define EVE_MIDI_B1 35
|
||||
#define EVE_MIDI_C2 36
|
||||
#define EVE_MIDI_C_2 37
|
||||
#define EVE_MIDI_D2 38
|
||||
#define EVE_MIDI_D_2 39
|
||||
#define EVE_MIDI_E2 40
|
||||
#define EVE_MIDI_F2 41
|
||||
#define EVE_MIDI_F_2 42
|
||||
#define EVE_MIDI_G2 43
|
||||
#define EVE_MIDI_G_2 44
|
||||
#define EVE_MIDI_A2 45
|
||||
#define EVE_MIDI_A_2 46
|
||||
#define EVE_MIDI_B2 47
|
||||
#define EVE_MIDI_C3 48
|
||||
#define EVE_MIDI_C_3 49
|
||||
#define EVE_MIDI_D3 50
|
||||
#define EVE_MIDI_D_3 51
|
||||
#define EVE_MIDI_E3 52
|
||||
#define EVE_MIDI_F3 53
|
||||
#define EVE_MIDI_F_3 54
|
||||
#define EVE_MIDI_G3 55
|
||||
#define EVE_MIDI_G_3 56
|
||||
#define EVE_MIDI_A3 57
|
||||
#define EVE_MIDI_A_3 58
|
||||
#define EVE_MIDI_B3 59
|
||||
#define EVE_MIDI_C4 60
|
||||
#define EVE_MIDI_C_4 61
|
||||
#define EVE_MIDI_D4 62
|
||||
#define EVE_MIDI_D_4 63
|
||||
#define EVE_MIDI_E4 64
|
||||
#define EVE_MIDI_F4 65
|
||||
#define EVE_MIDI_F_4 66
|
||||
#define EVE_MIDI_G4 67
|
||||
#define EVE_MIDI_G_4 68
|
||||
#define EVE_MIDI_A4 69
|
||||
#define EVE_MIDI_A_4 70
|
||||
#define EVE_MIDI_B4 71
|
||||
#define EVE_MIDI_C5 72
|
||||
#define EVE_MIDI_C_5 73
|
||||
#define EVE_MIDI_D5 74
|
||||
#define EVE_MIDI_D_5 75
|
||||
#define EVE_MIDI_E5 76
|
||||
#define EVE_MIDI_F5 77
|
||||
#define EVE_MIDI_F_5 78
|
||||
#define EVE_MIDI_G5 79
|
||||
#define EVE_MIDI_G_5 80
|
||||
#define EVE_MIDI_A5 81
|
||||
#define EVE_MIDI_A_5 82
|
||||
#define EVE_MIDI_B5 83
|
||||
#define EVE_MIDI_C6 84
|
||||
#define EVE_MIDI_C_6 85
|
||||
#define EVE_MIDI_D6 86
|
||||
#define EVE_MIDI_D_6 87
|
||||
#define EVE_MIDI_E6 88
|
||||
#define EVE_MIDI_F6 89
|
||||
#define EVE_MIDI_F_6 90
|
||||
#define EVE_MIDI_G6 91
|
||||
#define EVE_MIDI_G_6 92
|
||||
#define EVE_MIDI_A6 93
|
||||
#define EVE_MIDI_A_6 94
|
||||
#define EVE_MIDI_B6 95
|
||||
#define EVE_MIDI_C7 96
|
||||
#define EVE_MIDI_C_7 97
|
||||
#define EVE_MIDI_D7 98
|
||||
#define EVE_MIDI_D_7 99
|
||||
#define EVE_MIDI_E7 100
|
||||
#define EVE_MIDI_F7 101
|
||||
#define EVE_MIDI_F_7 102
|
||||
#define EVE_MIDI_G7 103
|
||||
#define EVE_MIDI_G_7 104
|
||||
#define EVE_MIDI_A7 105
|
||||
#define EVE_MIDI_A_7 106
|
||||
#define EVE_MIDI_B7 107
|
||||
#define EVE_MIDI_C8 108
|
||||
|
||||
|
||||
/* GPIO bits */
|
||||
#define EVE_GPIO0 0
|
||||
#define EVE_GPIO1 1 /* default gpio pin for audio shutdown, 1 - enable, 0 - disable */
|
||||
#define EVE_GPIO7 7 /* default gpio pin for display enable, 1 - enable, 0 - disable */
|
||||
|
||||
|
||||
/* Display rotation */
|
||||
#define EVE_DISPLAY_0 0 /* 0 degrees rotation */
|
||||
#define EVE_DISPLAY_180 1 /* 180 degrees rotation */
|
||||
|
||||
|
||||
/* commands common to EVE/EVE2/EVE3 */
|
||||
#define CMD_APPEND 0xFFFFFF1E
|
||||
#define CMD_BGCOLOR 0xFFFFFF09
|
||||
#define CMD_BUTTON 0xFFFFFF0D
|
||||
#define CMD_CALIBRATE 0xFFFFFF15
|
||||
#define CMD_CLOCK 0xFFFFFF14
|
||||
#define CMD_COLDSTART 0xFFFFFF32
|
||||
#define CMD_DIAL 0xFFFFFF2D
|
||||
#define CMD_DLSTART 0xFFFFFF00
|
||||
#define CMD_FGCOLOR 0xFFFFFF0A
|
||||
#define CMD_GAUGE 0xFFFFFF13
|
||||
#define CMD_GETMATRIX 0xFFFFFF33
|
||||
#define CMD_GETPROPS 0xFFFFFF25
|
||||
#define CMD_GETPTR 0xFFFFFF23
|
||||
#define CMD_GRADCOLOR 0xFFFFFF34
|
||||
#define CMD_GRADIENT 0xFFFFFF0B
|
||||
#define CMD_INFLATE 0xFFFFFF22
|
||||
#define CMD_INTERRUPT 0xFFFFFF02
|
||||
#define CMD_KEYS 0xFFFFFF0E
|
||||
#define CMD_LOADIDENTITY 0xFFFFFF26
|
||||
#define CMD_LOADIMAGE 0xFFFFFF24
|
||||
#define CMD_LOGO 0xFFFFFF31
|
||||
#define CMD_MEMCPY 0xFFFFFF1D
|
||||
#define CMD_MEMCRC 0xFFFFFF18
|
||||
#define CMD_MEMSET 0xFFFFFF1B
|
||||
#define CMD_MEMWRITE 0xFFFFFF1A
|
||||
#define CMD_MEMZERO 0xFFFFFF1C
|
||||
#define CMD_NUMBER 0xFFFFFF2E
|
||||
#define CMD_PROGRESS 0xFFFFFF0F
|
||||
#define CMD_REGREAD 0xFFFFFF19
|
||||
#define CMD_ROTATE 0xFFFFFF29
|
||||
#define CMD_SCALE 0xFFFFFF28
|
||||
#define CMD_SCREENSAVER 0xFFFFFF2F
|
||||
#define CMD_SCROLLBAR 0xFFFFFF11
|
||||
#define CMD_SETFONT 0xFFFFFF2B
|
||||
#define CMD_SETMATRIX 0xFFFFFF2A
|
||||
#define CMD_SKETCH 0xFFFFFF30
|
||||
#define CMD_SLIDER 0xFFFFFF10
|
||||
#define CMD_SNAPSHOT 0xFFFFFF1F
|
||||
#define CMD_SPINNER 0xFFFFFF16
|
||||
#define CMD_STOP 0xFFFFFF17
|
||||
#define CMD_SWAP 0xFFFFFF01
|
||||
#define CMD_TEXT 0xFFFFFF0C
|
||||
#define CMD_TOGGLE 0xFFFFFF12
|
||||
#define CMD_TRACK 0xFFFFFF2C
|
||||
#define CMD_TRANSLATE 0xFFFFFF27
|
||||
|
||||
|
||||
/* the following are undocumented commands that therefore should not be used */
|
||||
#if 0
|
||||
#define CMD_CRC 0xFFFFFF03
|
||||
#define CMD_HAMMERAUX 0xFFFFFF04
|
||||
#define CMD_MARCH 0xFFFFFF05
|
||||
#define CMD_IDCT 0xFFFFFF06
|
||||
#define CMD_EXECUTE 0xFFFFFF07
|
||||
#define CMD_GETPOINT 0xFFFFFF08
|
||||
#define CMD_TOUCH_TRANSFORM 0xFFFFFF20
|
||||
#endif
|
||||
|
||||
|
||||
/* FT8xx graphics engine specific macros useful for static display list generation */
|
||||
#define ALPHA_FUNC(func,ref) ((9UL<<24)|(((func)&7UL)<<8)|(((ref)&255UL)<<0))
|
||||
#define BEGIN(prim) ((31UL<<24)|(((prim)&15UL)<<0))
|
||||
#define BITMAP_HANDLE(handle) ((5UL<<24)|(((handle)&31UL)<<0))
|
||||
#define BITMAP_LAYOUT(format,linestride,height) ((7UL<<24)|(((format)&31UL)<<19)|(((linestride)&1023UL)<<9)|(((height)&511UL)<<0))
|
||||
#define BITMAP_SIZE(filter,wrapx,wrapy,width,height) ((8UL<<24)|(((filter)&1UL)<<20)|(((wrapx)&1UL)<<19)|(((wrapy)&1UL)<<18)|(((width)&511UL)<<9)|(((height)&511UL)<<0))
|
||||
#define BITMAP_TRANSFORM_A(a) ((21UL<<24)|(((a)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_B(b) ((22UL<<24)|(((b)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_C(c) ((23UL<<24)|(((c)&16777215UL)<<0))
|
||||
#define BITMAP_TRANSFORM_D(d) ((24UL<<24)|(((d)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_E(e) ((25UL<<24)|(((e)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_F(f) ((26UL<<24)|(((f)&16777215UL)<<0))
|
||||
#define BLEND_FUNC(src,dst) ((11UL<<24)|(((src)&7UL)<<3)|(((dst)&7UL)<<0))
|
||||
#define CALL(dest) ((29UL<<24)|(((dest)&65535UL)<<0))
|
||||
#define CELL(cell) ((6UL<<24)|(((cell)&127UL)<<0))
|
||||
#define CLEAR(c,s,t) ((38UL<<24)|(((c)&1UL)<<2)|(((s)&1UL)<<1)|(((t)&1UL)<<0))
|
||||
#define CLEAR_COLOR_A(alpha) ((15UL<<24)|(((alpha)&255UL)<<0))
|
||||
#define CLEAR_COLOR_RGB(red,green,blue) ((2UL<<24)|(((red)&255UL)<<16)|(((green)&255UL)<<8)|(((blue)&255UL)<<0))
|
||||
#define CLEAR_STENCIL(s) ((17UL<<24)|(((s)&255UL)<<0))
|
||||
#define CLEAR_TAG(s) ((18UL<<24)|(((s)&255UL)<<0))
|
||||
#define COLOR_A(alpha) ((16UL<<24)|(((alpha)&255UL)<<0))
|
||||
#define COLOR_MASK(r,g,b,a) ((32UL<<24)|(((r)&1UL)<<3)|(((g)&1UL)<<2)|(((b)&1UL)<<1)|(((a)&1UL)<<0))
|
||||
#define COLOR_RGB(red,green,blue) ((4UL<<24)|(((red)&255UL)<<16)|(((green)&255UL)<<8)|(((blue)&255UL)<<0))
|
||||
/* #define DISPLAY() ((0UL<<24)) */
|
||||
#define END() ((33UL<<24))
|
||||
#define JUMP(dest) ((30UL<<24)|(((dest)&65535UL)<<0))
|
||||
#define LINE_WIDTH(width) ((14UL<<24)|(((width)&4095UL)<<0))
|
||||
#define MACRO(m) ((37UL<<24)|(((m)&1UL)<<0))
|
||||
#define POINT_SIZE(size) ((13UL<<24)|(((size)&8191UL)<<0))
|
||||
#define RESTORE_CONTEXT() ((35UL<<24))
|
||||
#define RETURN() ((36UL<<24))
|
||||
#define SAVE_CONTEXT() ((34UL<<24))
|
||||
#define STENCIL_FUNC(func,ref,mask) ((10UL<<24)|(((func)&7UL)<<16)|(((ref)&255UL)<<8)|(((mask)&255UL)<<0))
|
||||
#define STENCIL_MASK(mask) ((19UL<<24)|(((mask)&255UL)<<0))
|
||||
#define STENCIL_OP(sfail,spass) ((12UL<<24)|(((sfail)&7UL)<<3)|(((spass)&7UL)<<0))
|
||||
#define TAG(s) ((3UL<<24)|(((s)&255UL)<<0))
|
||||
#define TAG_MASK(mask) ((20UL<<24)|(((mask)&1UL)<<0))
|
||||
#define VERTEX2F(x,y) ((1UL<<30)|(((x)&32767UL)<<15)|(((y)&32767UL)<<0))
|
||||
#define VERTEX2II(x,y,handle,cell) ((2UL<<30)|(((x)&511UL)<<21)|(((y)&511UL)<<12)|(((handle)&31UL)<<7)|(((cell)&127UL)<<0))
|
||||
|
||||
|
||||
/* ----------------- BT81x exclusive definitions -----------------*/
|
||||
#if defined (BT81X_ENABLE)
|
||||
|
||||
#define EVE_GLFORMAT 31UL /* used with BITMAP_LAYOUT to indicate bitmap-format is specified by BITMAP_EXT_FORMAT */
|
||||
|
||||
#define DL_BITMAP_EXT_FORMAT 0x2E000000 /* requires OR'd arguments */
|
||||
|
||||
/* extended Bitmap formats */
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_4x4_KHR 37808UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_5x4_KHR 37809UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_5x5_KHR 37810UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_6x5_KHR 37811UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_6x6_KHR 37812UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_8x5_KHR 37813UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_8x6_KHR 37814UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_8x8_KHR 37815UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_10x5_KHR 37816UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_10x6_KHR 37817UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_10x8_KHR 37818UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_10x10_KHR 37819UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_12x10_KHR 37820UL
|
||||
#define EVE_COMPRESSED_RGBA_ASTC_12x12_KHR 37821UL
|
||||
|
||||
|
||||
#define EVE_RAM_ERR_REPORT 0x309800UL /* max 128 bytes null terminated string */
|
||||
#define EVE_RAM_FLASH 0x800000UL
|
||||
#define EVE_RAM_FLASH_POSTBLOB 0x801000UL
|
||||
|
||||
#define EVE_OPT_FLASH 64UL
|
||||
#define EVE_OPT_FORMAT 4096UL
|
||||
#define EVE_OPT_FILL 8192UL
|
||||
|
||||
|
||||
/* additional commands for BT81x */
|
||||
#define CMD_BITMAP_TRANSFORM 0xFFFFFF21
|
||||
#define CMD_SYNC 0xFFFFFF42 /* does not need a dedicated function, just use EVE_cmd_dl(CMD_SYNC) */
|
||||
#define CMD_FLASHERASE 0xFFFFFF44 /* does not need a dedicated function, just use EVE_cmd_dl(CMD_FLASHERASE) */
|
||||
#define CMD_FLASHWRITE 0xFFFFFF45
|
||||
#define CMD_FLASHREAD 0xFFFFFF46
|
||||
#define CMD_FLASHUPDATE 0xFFFFFF47
|
||||
#define CMD_FLASHDETACH 0xFFFFFF48 /* does not need a dedicated function, just use EVE_cmd_dl(CMD_FLASHDETACH) */
|
||||
#define CMD_FLASHATTACH 0xFFFFFF49 /* does not need a dedicated function, just use EVE_cmd_dl(CMD_FLASHATTACH) */
|
||||
#define CMD_FLASHFAST 0xFFFFFF4A
|
||||
#define CMD_FLASHSPIDESEL 0xFFFFFF4B /* does not need a dedicated function, just use EVE_cmd_dl(CMD_FLASHSPIDESEL) */
|
||||
#define CMD_FLASHSPITX 0xFFFFFF4C
|
||||
#define CMD_FLASHSPIRX 0xFFFFFF4D
|
||||
#define CMD_FLASHSOURCE 0xFFFFFF4E
|
||||
#define CMD_CLEARCACHE 0xFFFFFF4F /* does not need a dedicated function, just use EVE_cmd_dl(CMD_CLEARCACHE) */
|
||||
#define CMD_INFLATE2 0xFFFFFF50
|
||||
#define CMD_ROTATEAROUND 0xFFFFFF51
|
||||
#define CMD_RESETFONTS 0xFFFFFF52 /* does not need a dedicated function, just use EVE_cmd_dl(CMD_RESETFONTS) */
|
||||
#define CMD_ANIMSTART 0xFFFFFF53
|
||||
#define CMD_ANIMSTOP 0xFFFFFF54
|
||||
#define CMD_ANIMXY 0xFFFFFF55
|
||||
#define CMD_ANIMDRAW 0xFFFFFF56
|
||||
#define CMD_GRADIENTA 0xFFFFFF57
|
||||
#define CMD_FILLWIDTH 0xFFFFFF58
|
||||
#define CMD_APPENDF 0xFFFFFF59
|
||||
#define CMD_ANIMFRAME 0xFFFFFF5A
|
||||
#define CMD_VIDEOSTARTF 0xFFFFFF5F /* does not need a dedicated function, just use EVE_cmd_dl(CMD_VIDEOSTARTF) */
|
||||
|
||||
#if 0
|
||||
/* some undocumented commands for BT81x */
|
||||
#define CMD_NOP 0xFFFFFF5B
|
||||
#define CMD_SHA1 0xFFFFFF5C
|
||||
#define CMD_HMAC 0xFFFFFF5D
|
||||
#define CMD_LAST_ 0xFFFFFF5E
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* additional registers for BT81x */
|
||||
#define REG_ADAPTIVE_FRAMERATE 0x30257cUL
|
||||
#define REG_PLAYBACK_PAUSE 0x3025ecUL
|
||||
#define REG_FLASH_STATUS 0x3025f0UL
|
||||
#define REG_FLASH_SIZE 0x309024UL
|
||||
#define REG_PLAY_CONTROL 0x30914eUL
|
||||
#define REG_COPRO_PATCH_DTR 0x309162UL
|
||||
|
||||
|
||||
/* BT81x graphics engine specific macros */
|
||||
#define BITMAP_EXT_FORMAT(format) ((46UL<<24)|(((format)&65535UL)<<0))
|
||||
#define BITMAP_SWIZZLE(r,g,b,a) ((47UL<<24)|(((r)&7UL)<<9)|(((g)&7UL)<<6)|(((b)&7UL)<<3)|(((a)&7UL)<<0))
|
||||
#define BITMAP_SOURCE2(flash_or_ram, addr) ((1UL<<24)|((flash_or_ram) << 23)|(((addr)&8388607UL)<<0))
|
||||
#define INT_FRR() ((48UL<<24))
|
||||
|
||||
#undef BITMAP_TRANSFORM_A
|
||||
#undef BITMAP_TRANSFORM_B
|
||||
#undef BITMAP_TRANSFORM_D
|
||||
#undef BITMAP_TRANSFORM_E
|
||||
|
||||
#define BITMAP_TRANSFORM_A_EXT(p,v) ((21UL<<24)|(((p)&1UL)<<17)|(((v)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_B_EXT(p,v) ((22UL<<24)|(((p)&1UL)<<17)|(((v)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_D_EXT(p,v) ((24UL<<24)|(((p)&1UL)<<17)|(((v)&131071UL)<<0))
|
||||
#define BITMAP_TRANSFORM_E_EXT(p,v) ((25UL<<24)|(((p)&1UL)<<17)|(((v)&131071UL)<<0))
|
||||
|
||||
#define BITMAP_TRANSFORM_A(a) BITMAP_TRANSFORM_A_EXT(0,a)
|
||||
#define BITMAP_TRANSFORM_B(b) BITMAP_TRANSFORM_B_EXT(0,b)
|
||||
#define BITMAP_TRANSFORM_D(d) BITMAP_TRANSFORM_D_EXT(0,d)
|
||||
#define BITMAP_TRANSFORM_E(e) BITMAP_TRANSFORM_E_EXT(0,e)
|
||||
|
||||
#endif
|
||||
|
||||
/* ----------------- FT81x / BT81x exclusive definitions -----------------*/
|
||||
#if defined (FT81X_ENABLE)
|
||||
|
||||
|
||||
/* Host commands */
|
||||
#define EVE_CLKSEL 0x61 /* configure system clock */
|
||||
#define EVE_RST_PULSE 0x68 /* reset core - all registers default and processors reset */
|
||||
#define EVE_PINDRIVE 0x70 /* setup drive strength for various pins */
|
||||
#define EVE_PIN_PD_STATE 0x71 /* setup how pins behave during power down */
|
||||
|
||||
|
||||
/* Memory definitions */
|
||||
#define EVE_RAM_G 0x000000UL
|
||||
#define EVE_ROM_CHIPID 0x0C0000UL
|
||||
#define EVE_ROM_FONT 0x1E0000UL
|
||||
#define EVE_ROM_FONT_ADDR 0x2FFFFCUL
|
||||
#define EVE_RAM_DL 0x300000UL
|
||||
#define EVE_RAM_REG 0x302000UL
|
||||
#define EVE_RAM_CMD 0x308000UL
|
||||
|
||||
|
||||
/* Memory buffer sizes */
|
||||
#define EVE_RAM_G_SIZE 1024*1024L
|
||||
#define EVE_CMDFIFO_SIZE 4*1024L
|
||||
#define EVE_RAM_DL_SIZE 8*1024L
|
||||
|
||||
|
||||
/* various additional defines for FT81x */
|
||||
#define EVE_ADC_DIFFERENTIAL 1UL
|
||||
#define EVE_ADC_SINGLE_ENDED 0UL
|
||||
|
||||
#define EVE_INT_G8 18UL
|
||||
#define EVE_INT_L8C 12UL
|
||||
#define EVE_INT_VGA 13UL
|
||||
|
||||
#define EVE_OPT_MEDIAFIFO 16UL
|
||||
#define EVE_OPT_FULLSCREEN 8UL
|
||||
#define EVE_OPT_NOTEAR 4UL
|
||||
#define EVE_OPT_SOUND 32UL
|
||||
|
||||
#define EVE_PALETTED565 14UL
|
||||
#define EVE_PALETTED4444 15UL
|
||||
#define EVE_PALETTED8 16UL
|
||||
#define EVE_L2 17UL
|
||||
|
||||
|
||||
/* additional commands for FT81x */
|
||||
#define CMD_MEDIAFIFO 0xFFFFFF39
|
||||
#define CMD_PLAYVIDEO 0xFFFFFF3A
|
||||
#define CMD_ROMFONT 0xFFFFFF3F
|
||||
#define CMD_SETBASE 0xFFFFFF38
|
||||
#define CMD_SETBITMAP 0xFFFFFF43
|
||||
#define CMD_SETFONT2 0xFFFFFF3B
|
||||
#define CMD_SETROTATE 0xFFFFFF36
|
||||
#define CMD_SETSCRATCH 0xFFFFFF3C
|
||||
#define CMD_SNAPSHOT2 0xFFFFFF37
|
||||
#define CMD_VIDEOFRAME 0xFFFFFF41
|
||||
#define CMD_VIDEOSTART 0xFFFFFF40
|
||||
|
||||
|
||||
/* the following are undocumented commands that therefore should not be used */
|
||||
#if 0
|
||||
#define CMD_CSKETCH 0xFFFFFF35
|
||||
#define CMD_INT_RAMSHARED 0xFFFFFF3D
|
||||
#define CMD_INT_SWLOADIMAGE 0xFFFFFF3E
|
||||
#endif
|
||||
|
||||
|
||||
/* Register definitions */
|
||||
#define REG_ANA_COMP 0x302184UL /* only listed in datasheet */
|
||||
#define REG_BIST_EN 0x302174UL /* only listed in datasheet */
|
||||
#define REG_CLOCK 0x302008UL
|
||||
#define REG_CMDB_SPACE 0x302574UL
|
||||
#define REG_CMDB_WRITE 0x302578UL
|
||||
#define REG_CMD_DL 0x302100UL
|
||||
#define REG_CMD_READ 0x3020f8UL
|
||||
#define REG_CMD_WRITE 0x3020fcUL
|
||||
#define REG_CPURESET 0x302020UL
|
||||
#define REG_CSPREAD 0x302068UL
|
||||
#define REG_CTOUCH_EXTENDED 0x302108UL
|
||||
#define REG_CTOUCH_TOUCH0_XY 0x302124UL /* only listed in datasheet */
|
||||
#define REG_CTOUCH_TOUCH4_X 0x30216cUL
|
||||
#define REG_CTOUCH_TOUCH4_Y 0x302120UL
|
||||
#define REG_CTOUCH_TOUCH1_XY 0x30211cUL
|
||||
#define REG_CTOUCH_TOUCH2_XY 0x30218cUL
|
||||
#define REG_CTOUCH_TOUCH3_XY 0x302190UL
|
||||
#define REG_TOUCH_CONFIG 0x302168UL
|
||||
#define REG_DATESTAMP 0x302564UL /* only listed in datasheet */
|
||||
#define REG_DITHER 0x302060UL
|
||||
#define REG_DLSWAP 0x302054UL
|
||||
#define REG_FRAMES 0x302004UL
|
||||
#define REG_FREQUENCY 0x30200cUL
|
||||
#define REG_GPIO 0x302094UL
|
||||
#define REG_GPIOX 0x30209cUL
|
||||
#define REG_GPIOX_DIR 0x302098UL
|
||||
#define REG_GPIO_DIR 0x302090UL
|
||||
#define REG_HCYCLE 0x30202cUL
|
||||
#define REG_HOFFSET 0x302030UL
|
||||
#define REG_HSIZE 0x302034UL
|
||||
#define REG_HSYNC0 0x302038UL
|
||||
#define REG_HSYNC1 0x30203cUL
|
||||
#define REG_ID 0x302000UL
|
||||
#define REG_INT_EN 0x3020acUL
|
||||
#define REG_INT_FLAGS 0x3020a8UL
|
||||
#define REG_INT_MASK 0x3020b0UL
|
||||
#define REG_MACRO_0 0x3020d8UL
|
||||
#define REG_MACRO_1 0x3020dcUL
|
||||
#define REG_MEDIAFIFO_READ 0x309014UL /* only listed in programmers guide */
|
||||
#define REG_MEDIAFIFO_WRITE 0x309018UL /* only listed in programmers guide */
|
||||
#define REG_OUTBITS 0x30205cUL
|
||||
#define REG_PCLK 0x302070UL
|
||||
#define REG_PCLK_POL 0x30206cUL
|
||||
#define REG_PLAY 0x30208cUL
|
||||
#define REG_PLAYBACK_FORMAT 0x3020c4UL
|
||||
#define REG_PLAYBACK_FREQ 0x3020c0UL
|
||||
#define REG_PLAYBACK_LENGTH 0x3020b8UL
|
||||
#define REG_PLAYBACK_LOOP 0x3020c8UL
|
||||
#define REG_PLAYBACK_PLAY 0x3020ccUL
|
||||
#define REG_PLAYBACK_READPTR 0x3020bcUL
|
||||
#define REG_PLAYBACK_START 0x3020b4UL
|
||||
#define REG_PWM_DUTY 0x3020d4UL
|
||||
#define REG_PWM_HZ 0x3020d0UL
|
||||
#define REG_RENDERMODE 0x302010UL /* only listed in datasheet */
|
||||
#define REG_ROTATE 0x302058UL
|
||||
#define REG_SNAPFORMAT 0x30201cUL /* only listed in datasheet */
|
||||
#define REG_SNAPSHOT 0x302018UL /* only listed in datasheet */
|
||||
#define REG_SNAPY 0x302014UL /* only listed in datasheet */
|
||||
#define REG_SOUND 0x302088UL
|
||||
#define REG_SPI_WIDTH 0x302188UL /* listed with false offset in programmers guide V1.1 */
|
||||
#define REG_SWIZZLE 0x302064UL
|
||||
#define REG_TAG 0x30207cUL
|
||||
#define REG_TAG_X 0x302074UL
|
||||
#define REG_TAG_Y 0x302078UL
|
||||
#define REG_TAP_CRC 0x302024UL /* only listed in datasheet */
|
||||
#define REG_TAP_MASK 0x302028UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_ADC_MODE 0x302108UL
|
||||
#define REG_TOUCH_CHARGE 0x30210cUL
|
||||
#define REG_TOUCH_DIRECT_XY 0x30218cUL
|
||||
#define REG_TOUCH_DIRECT_Z1Z2 0x302190UL
|
||||
#define REG_TOUCH_MODE 0x302104UL
|
||||
#define REG_TOUCH_OVERSAMPLE 0x302114UL
|
||||
#define REG_TOUCH_RAW_XY 0x30211cUL
|
||||
#define REG_TOUCH_RZ 0x302120UL
|
||||
#define REG_TOUCH_RZTHRESH 0x302118UL
|
||||
#define REG_TOUCH_SCREEN_XY 0x302124UL
|
||||
#define REG_TOUCH_SETTLE 0x302110UL
|
||||
#define REG_TOUCH_TAG 0x30212cUL
|
||||
#define REG_TOUCH_TAG1 0x302134UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG1_XY 0x302130UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG2 0x30213cUL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG2_XY 0x302138UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG3 0x302144UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG3_XY 0x302140UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG4 0x30214cUL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG4_XY 0x302148UL /* only listed in datasheet */
|
||||
#define REG_TOUCH_TAG_XY 0x302128UL
|
||||
#define REG_TOUCH_TRANSFORM_A 0x302150UL
|
||||
#define REG_TOUCH_TRANSFORM_B 0x302154UL
|
||||
#define REG_TOUCH_TRANSFORM_C 0x302158UL
|
||||
#define REG_TOUCH_TRANSFORM_D 0x30215cUL
|
||||
#define REG_TOUCH_TRANSFORM_E 0x302160UL
|
||||
#define REG_TOUCH_TRANSFORM_F 0x302164UL
|
||||
#define REG_TRACKER 0x309000UL /* only listed in programmers guide */
|
||||
#define REG_TRACKER_1 0x309004UL /* only listed in programmers guide */
|
||||
#define REG_TRACKER_2 0x309008UL /* only listed in programmers guide */
|
||||
#define REG_TRACKER_3 0x30900cUL /* only listed in programmers guide */
|
||||
#define REG_TRACKER_4 0x309010UL /* only listed in programmers guide */
|
||||
#define REG_TRIM 0x302180UL
|
||||
#define REG_VCYCLE 0x302040UL
|
||||
#define REG_VOFFSET 0x302044UL
|
||||
#define REG_VOL_PB 0x302080UL
|
||||
#define REG_VOL_SOUND 0x302084UL
|
||||
#define REG_VSIZE 0x302048UL
|
||||
#define REG_VSYNC0 0x30204cUL
|
||||
#define REG_VSYNC1 0x302050UL
|
||||
|
||||
#if 0
|
||||
#define REG_BUSYBITS 0x3020e8UL /* only listed as "reserved" in datasheet */
|
||||
#define REG_CRC 0x302178UL /* only listed as "reserved" in datasheet */
|
||||
#define REG_SPI_EARLY_TX 0x30217cUL /* only listed as "reserved" in datasheet */
|
||||
#define REG_ROMSUB_SEL 0x3020f0UL /* only listed as "reserved" in datasheet */
|
||||
#define REG_TOUCH_FAULT 0x302170UL /* only listed as "reserved" in datasheet */
|
||||
#endif
|
||||
|
||||
|
||||
/* FT81x graphics engine specific macros useful for static display list generation */
|
||||
|
||||
/* beware, these are different to FTDIs implementation as these take the original values as parameters and not only the upper bits */
|
||||
#define BITMAP_LAYOUT_H(linestride,height) ((40UL<<24)|((((linestride&0xC00)>>10)&3UL)<<2)|((((height&0x600)>>9)&3UL)<<0))
|
||||
#define BITMAP_SIZE_H(width,height) ((41UL<<24)|((((width&0x600)>>9)&3UL)<<2)|((((height&0x600)>>9)&3UL)<<0))
|
||||
|
||||
#define BITMAP_SOURCE(addr) ((1UL<<24)|(((addr)&4194303UL)<<0))
|
||||
//#define NOP() ((45UL<<24))
|
||||
#define PALETTE_SOURCE(addr) ((42UL<<24)|(((addr)&4194303UL)<<0))
|
||||
#define SCISSOR_SIZE(width,height) ((28UL<<24)|(((width)&4095UL)<<12)|(((height)&4095UL)<<0))
|
||||
#define SCISSOR_XY(x,y) ((27UL<<24)|(((x)&2047UL)<<11)|(((y)&2047UL)<<0))
|
||||
#define VERTEX_FORMAT(frac) ((39UL<<24)|(((frac)&7UL)<<0))
|
||||
#define VERTEX_TRANSLATE_X(x) ((43UL<<24)|(((x)&131071UL)<<0))
|
||||
#define VERTEX_TRANSLATE_Y(y) ((44UL<<24)|(((y)&131071UL)<<0))
|
||||
|
||||
|
||||
|
||||
/* ----------------- FT80x exclusive definitions -----------------*/
|
||||
#else
|
||||
|
||||
/* Memory definitions */
|
||||
#define EVE_RAM_G 0x000000UL
|
||||
#define EVE_ROM_CHIPID 0x0C0000UL
|
||||
#define EVE_ROM_FONT 0x0BB23CUL
|
||||
#define EVE_ROM_FONT_ADDR 0x0FFFFCUL
|
||||
#define EVE_RAM_DL 0x100000UL
|
||||
#define EVE_RAM_PAL 0x102000UL
|
||||
#define EVE_RAM_CMD 0x108000UL
|
||||
#define EVE_RAM_SCREENSHOT 0x1C2000UL
|
||||
|
||||
|
||||
/* Memory buffer sizes */
|
||||
#define EVE_RAM_G_SIZE 256*1024L
|
||||
#define EVE_CMDFIFO_SIZE 4*1024L
|
||||
#define EVE_RAM_DL_SIZE 8*1024L
|
||||
#define EVE_RAM_PAL_SIZE 1*1024L
|
||||
|
||||
|
||||
/* Register definitions */
|
||||
#define REG_ID 0x102400UL
|
||||
#define REG_FRAMES 0x102404UL
|
||||
#define REG_CLOCK 0x102408UL
|
||||
#define REG_FREQUENCY 0x10240CUL
|
||||
#define REG_SCREENSHOT_EN 0x102410UL
|
||||
#define REG_SCREENSHOT_Y 0x102414UL
|
||||
#define REG_SCREENSHOT_START 0x102418UL
|
||||
#define REG_CPURESET 0x10241CUL
|
||||
#define REG_TAP_CRC 0x102420UL
|
||||
#define REG_TAP_MASK 0x102424UL
|
||||
#define REG_HCYCLE 0x102428UL
|
||||
#define REG_HOFFSET 0x10242CUL
|
||||
#define REG_HSIZE 0x102430UL
|
||||
#define REG_HSYNC0 0x102434UL
|
||||
#define REG_HSYNC1 0x102438UL
|
||||
#define REG_VCYCLE 0x10243CUL
|
||||
#define REG_VOFFSET 0x102440UL
|
||||
#define REG_VSIZE 0x102444UL
|
||||
#define REG_VSYNC0 0x102448UL
|
||||
#define REG_VSYNC1 0x10244CUL
|
||||
#define REG_DLSWAP 0x102450UL
|
||||
#define REG_ROTATE 0x102454UL
|
||||
#define REG_OUTBITS 0x102458UL
|
||||
#define REG_DITHER 0x10245CUL
|
||||
#define REG_SWIZZLE 0x102460UL
|
||||
#define REG_CSPREAD 0x102464UL
|
||||
#define REG_PCLK_POL 0x102468UL
|
||||
#define REG_PCLK 0x10246CUL
|
||||
#define REG_TAG_X 0x102470UL
|
||||
#define REG_TAG_Y 0x102474UL
|
||||
#define REG_TAG 0x102478UL
|
||||
#define REG_VOL_PB 0x10247CUL
|
||||
#define REG_VOL_SOUND 0x102480UL
|
||||
#define REG_SOUND 0x102484UL
|
||||
#define REG_PLAY 0x102488UL
|
||||
#define REG_GPIO_DIR 0x10248CUL
|
||||
#define REG_GPIO 0x102490UL
|
||||
#define REG_INT_FLAGS 0x102498UL
|
||||
#define REG_INT_EN 0x10249CUL
|
||||
#define REG_INT_MASK 0x1024A0UL
|
||||
#define REG_PLAYBACK_START 0x1024A4UL
|
||||
#define REG_PLAYBACK_LENGTH 0x1024A8UL
|
||||
#define REG_PLAYBACK_READPTR 0x1024ACUL
|
||||
#define REG_PLAYBACK_FREQ 0x1024B0UL
|
||||
#define REG_PLAYBACK_FORMAT 0x1024B4UL
|
||||
#define REG_PLAYBACK_LOOP 0x1024B8UL
|
||||
#define REG_PLAYBACK_PLAY 0x1024BCUL
|
||||
#define REG_PWM_HZ 0x1024C0UL
|
||||
#define REG_PWM_DUTY 0x1024C4UL
|
||||
#define REG_MACRO_0 0x1024C8UL
|
||||
#define REG_MACRO_1 0x1024CCUL
|
||||
#define REG_SCREENSHOT_BUSY 0x1024D8UL
|
||||
#define REG_CMD_READ 0x1024E4UL
|
||||
#define REG_CMD_WRITE 0x1024E8UL
|
||||
#define REG_CMD_DL 0x1024ECUL
|
||||
#define REG_TOUCH_MODE 0x1024F0UL
|
||||
#define REG_TOUCH_ADC_MODE 0x1024F4UL
|
||||
#define REG_TOUCH_CHARGE 0x1024F8UL
|
||||
#define REG_TOUCH_SETTLE 0x1024FCUL
|
||||
#define REG_TOUCH_OVERSAMPLE 0x102500UL
|
||||
#define REG_TOUCH_RZTHRESH 0x102504UL
|
||||
#define REG_TOUCH_RAW_XY 0x102508UL
|
||||
#define REG_TOUCH_RZ 0x10250CUL
|
||||
#define REG_TOUCH_SCREEN_XY 0x102510UL
|
||||
#define REG_TOUCH_TAG_XY 0x102514UL
|
||||
#define REG_TOUCH_TAG 0x102518UL
|
||||
#define REG_TOUCH_TRANSFORM_A 0x10251CUL
|
||||
#define REG_TOUCH_TRANSFORM_B 0x102520UL
|
||||
#define REG_TOUCH_TRANSFORM_C 0x102524UL
|
||||
#define REG_TOUCH_TRANSFORM_D 0x102528UL
|
||||
#define REG_TOUCH_TRANSFORM_E 0x10252CUL
|
||||
#define REG_TOUCH_TRANSFORM_F 0x102530UL
|
||||
#define REG_SCREENSHOT_READ 0x102554UL
|
||||
#define REG_TRIM 0x10256CUL
|
||||
#define REG_TOUCH_DIRECT_XY 0x102574UL
|
||||
#define REG_TOUCH_DIRECT_Z1Z2 0x102578UL
|
||||
#define REG_TRACKER 0x109000UL
|
||||
|
||||
/* FT80x graphics engine specific macros useful for static display list generation */
|
||||
#define BITMAP_SOURCE(addr) ((1UL<<24)|(((addr)&1048575UL)<<0))
|
||||
#define SCISSOR_SIZE(width,height) ((28UL<<24)|(((width)&1023UL)<<10)|(((height)&1023UL)<<0))
|
||||
#define SCISSOR_XY(x,y) ((27UL<<24)|(((x)&511UL)<<9)|(((y)&511UL)<<0))
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* EVE_H_ */
|
2314
lib/lvgl_esp32_drivers/lvgl_tft/EVE_commands.c
Normal file
204
lib/lvgl_esp32_drivers/lvgl_tft/EVE_commands.h
Normal file
@ -0,0 +1,204 @@
|
||||
/*
|
||||
@file EVE_commands.h
|
||||
@brief contains FT8xx / BT8xx function prototypes
|
||||
@version 4.1 LvGL edition
|
||||
@date 2020-04-13
|
||||
@author Rudolph Riedel, David Jade
|
||||
|
||||
@section LICENSE
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016-2020 Rudolph Riedel and David Jade
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
@section History
|
||||
|
||||
4.1 LvGL edition
|
||||
|
||||
- This version is a heavily modified version of the MIT licensed FT81x code from https://github.com/RudolphRiedel/FT800-FT813
|
||||
This version is based on a fork by David Jade that added native SPI DMA support and stripped out non-ESP32 code.
|
||||
It has also been trimmed down to suit LvGL's needs. Extra features can be enabled by defining FT81X_FULL
|
||||
*/
|
||||
|
||||
#include "EVE.h"
|
||||
|
||||
#ifndef EVE_COMMANDS_H_
|
||||
#define EVE_COMMANDS_H_
|
||||
|
||||
#define BLOCK_TRANSFER_SIZE 3840 // block transfer size when write data to CMD buffer
|
||||
|
||||
void DELAY_MS(uint16_t ms);
|
||||
void EVE_pdn_set(void);
|
||||
void EVE_pdn_clear(void);
|
||||
void spi_acquire();
|
||||
void spi_release();
|
||||
|
||||
void EVE_cmdWrite(uint8_t command, uint8_t parameter);
|
||||
|
||||
uint8_t EVE_memRead8(uint32_t ftAddress);
|
||||
uint16_t EVE_memRead16(uint32_t ftAddress);
|
||||
uint32_t EVE_memRead32(uint32_t ftAddress);
|
||||
|
||||
void EVE_memWrite8(uint32_t ftAddress, uint8_t ftData8);
|
||||
void EVE_memWrite16(uint32_t ftAddress, uint16_t ftData16);
|
||||
void EVE_memWrite32(uint32_t ftAddress, uint32_t ftData32);
|
||||
|
||||
void EVE_memWrite_buffer(uint32_t ftAddress, const uint8_t *data, uint32_t len, bool LvGL_Flush);
|
||||
|
||||
uint8_t EVE_busy(void);
|
||||
|
||||
void EVE_get_cmdoffset(void);
|
||||
|
||||
|
||||
/* commands to operate on memory: */
|
||||
void EVE_cmd_memzero(uint32_t ptr, uint32_t num);
|
||||
void EVE_cmd_memset(uint32_t ptr, uint8_t value, uint32_t num);
|
||||
void EVE_cmd_memwrite(uint32_t dest, uint32_t num, const uint8_t *data);
|
||||
void EVE_cmd_memcpy(uint32_t dest, uint32_t src, uint32_t num);
|
||||
|
||||
#if FT81X_FULL
|
||||
void block_transfer(const uint8_t *data, uint32_t len);
|
||||
/* commands for loading image data into FT8xx memory: */
|
||||
void EVE_cmd_inflate(uint32_t ptr, const uint8_t *data, uint16_t len);
|
||||
void EVE_cmd_loadimage(uint32_t ptr, uint32_t options, const uint8_t *data, uint16_t len);
|
||||
|
||||
#if defined (FT81X_ENABLE)
|
||||
void EVE_cmd_mediafifo(uint32_t ptr, uint32_t size);
|
||||
#endif
|
||||
#endif // FT81X_FULL
|
||||
|
||||
void EVE_cmd_start(void);
|
||||
void EVE_cmd_execute(void);
|
||||
|
||||
void EVE_start_cmd_burst(void);
|
||||
void EVE_end_cmd_burst(void);
|
||||
|
||||
void EVE_cmd_dl(uint32_t command);
|
||||
|
||||
|
||||
#if FT81X_FULL
|
||||
/* EVE3 commands */
|
||||
#if defined (BT81X_ENABLE)
|
||||
|
||||
void EVE_cmd_flashwrite(uint32_t ptr, uint32_t num, const uint8_t *data);
|
||||
void EVE_cmd_flashread(uint32_t dest, uint32_t src, uint32_t num);
|
||||
void EVE_cmd_flashupdate(uint32_t dest, uint32_t src, uint32_t num);
|
||||
void EVE_cmd_flasherase(void);
|
||||
void EVE_cmd_flashattach(void);
|
||||
void EVE_cmd_flashdetach(void);
|
||||
void EVE_cmd_flashspidesel(void);
|
||||
uint32_t EVE_cmd_flashfast(void);
|
||||
void EVE_cmd_flashspitx(uint32_t num, const uint8_t *data);
|
||||
void EVE_cmd_flashspirx(uint32_t dest, uint32_t num);
|
||||
void EVE_cmd_flashsource(uint32_t ptr);
|
||||
|
||||
void EVE_cmd_inflate2(uint32_t ptr, uint32_t options, const uint8_t *data, uint16_t len);
|
||||
void EVE_cmd_rotatearound(int32_t x0, int32_t y0, int32_t angle, int32_t scale);
|
||||
void EVE_cmd_animstart(int32_t ch, uint32_t aoptr, uint32_t loop);
|
||||
void EVE_cmd_animstop(int32_t ch);
|
||||
void EVE_cmd_animxy(int32_t ch, int16_t x0, int16_t y0);
|
||||
void EVE_cmd_animdraw(int32_t ch);
|
||||
void EVE_cmd_animframe(int16_t x0, int16_t y0, uint32_t aoptr, uint32_t frame);
|
||||
void EVE_cmd_gradienta(int16_t x0, int16_t y0, uint32_t argb0, int16_t x1, int16_t y1, uint32_t argb1);
|
||||
void EVE_cmd_fillwidth(uint32_t s);
|
||||
void EVE_cmd_appendf(uint32_t ptr, uint32_t num);
|
||||
|
||||
uint8_t EVE_init_flash(void);
|
||||
#endif
|
||||
|
||||
|
||||
/* commands to draw graphics objects: */
|
||||
|
||||
#if defined (BT81X_ENABLE)
|
||||
void EVE_cmd_text_var(int16_t x0, int16_t y0, int16_t font, uint16_t options, const char* text, uint8_t numargs, ...);
|
||||
void EVE_cmd_button_var(int16_t x0, int16_t y0, int16_t w0, int16_t h0, int16_t font, uint16_t options, const char* text, uint8_t num_args, ...);
|
||||
void EVE_cmd_toggle_var(int16_t x0, int16_t y0, int16_t w0, int16_t font, uint16_t options, uint16_t state, const char* text, uint8_t num_args, ...);
|
||||
#endif
|
||||
|
||||
void EVE_cmd_text(int16_t x0, int16_t y0, int16_t font, uint16_t options, const char* text);
|
||||
void EVE_cmd_button(int16_t x0, int16_t y0, int16_t w0, int16_t h0, int16_t font, uint16_t options, const char* text);
|
||||
void EVE_cmd_clock(int16_t x0, int16_t y0, int16_t r0, uint16_t options, uint16_t hours, uint16_t minutes, uint16_t seconds, uint16_t millisecs);
|
||||
void EVE_color_rgb(uint8_t red, uint8_t green, uint8_t blue);
|
||||
void EVE_cmd_bgcolor(uint32_t color);
|
||||
void EVE_cmd_fgcolor(uint32_t color);
|
||||
void EVE_cmd_gradcolor(uint32_t color);
|
||||
void EVE_cmd_gauge(int16_t x0, int16_t y0, int16_t r0, uint16_t options, uint16_t major, uint16_t minor, uint16_t val, uint16_t range);
|
||||
void EVE_cmd_gradient(int16_t x0, int16_t y0, uint32_t rgb0, int16_t x1, int16_t y1, uint32_t rgb1);
|
||||
void EVE_cmd_keys(int16_t x0, int16_t y0, int16_t w0, int16_t h0, int16_t font, uint16_t options, const char* text);
|
||||
void EVE_cmd_progress(int16_t x0, int16_t y0, int16_t w0, int16_t h0, uint16_t options, uint16_t val, uint16_t range);
|
||||
void EVE_cmd_scrollbar(int16_t x0, int16_t y0, int16_t w0, int16_t h0, uint16_t options, uint16_t val, uint16_t size, uint16_t range);
|
||||
void EVE_cmd_slider(int16_t x1, int16_t y1, int16_t w1, int16_t h1, uint16_t options, uint16_t val, uint16_t range);
|
||||
void EVE_cmd_dial(int16_t x0, int16_t y0, int16_t r0, uint16_t options, uint16_t val);
|
||||
void EVE_cmd_toggle(int16_t x0, int16_t y0, int16_t w0, int16_t font, uint16_t options, uint16_t state, const char* text);
|
||||
void EVE_cmd_number(int16_t x0, int16_t y0, int16_t font, uint16_t options, int32_t number);
|
||||
#endif // FT81X_FULL
|
||||
|
||||
#if defined (FT81X_ENABLE)
|
||||
#if FT81X_FULL
|
||||
void EVE_cmd_setbase(uint32_t base);
|
||||
#endif
|
||||
void EVE_cmd_setbitmap(uint32_t addr, uint16_t fmt, uint16_t width, uint16_t height);
|
||||
#endif
|
||||
|
||||
|
||||
#if FT81X_FULL
|
||||
void EVE_cmd_append(uint32_t ptr, uint32_t num);
|
||||
|
||||
|
||||
/* commands for setting the bitmap transform matrix: */
|
||||
void EVE_cmd_getmatrix(int32_t a, int32_t b, int32_t c, int32_t d, int32_t e, int32_t f);
|
||||
void EVE_cmd_translate(int32_t tx, int32_t ty);
|
||||
void EVE_cmd_scale(int32_t sx, int32_t sy);
|
||||
void EVE_cmd_rotate(int32_t ang);
|
||||
|
||||
|
||||
/* other commands: */
|
||||
void EVE_cmd_calibrate(void);
|
||||
void EVE_cmd_interrupt(uint32_t ms);
|
||||
void EVE_cmd_setfont(uint32_t font, uint32_t ptr);
|
||||
#if defined (FT81X_ENABLE)
|
||||
void EVE_cmd_romfont(uint32_t font, uint32_t romslot);
|
||||
void EVE_cmd_setfont2(uint32_t font, uint32_t ptr, uint32_t firstchar);
|
||||
void EVE_cmd_setrotate(uint32_t r);
|
||||
void EVE_cmd_setscratch(uint32_t handle);
|
||||
#endif
|
||||
void EVE_cmd_sketch(int16_t x0, int16_t y0, uint16_t w0, uint16_t h0, uint32_t ptr, uint16_t format);
|
||||
void EVE_cmd_snapshot(uint32_t ptr);
|
||||
#if defined (FT81X_ENABLE)
|
||||
void EVE_cmd_snapshot2(uint32_t fmt, uint32_t ptr, int16_t x0, int16_t y0, int16_t w0, int16_t h0);
|
||||
#endif
|
||||
void EVE_cmd_spinner(int16_t x0, int16_t y0, uint16_t style, uint16_t scale);
|
||||
void EVE_cmd_track(int16_t x0, int16_t y0, int16_t w0, int16_t h0, int16_t tag);
|
||||
|
||||
|
||||
/* commands that return values by writing to the command-fifo */
|
||||
uint32_t EVE_cmd_memcrc(uint32_t ptr, uint32_t num);
|
||||
uint32_t EVE_cmd_getptr(void);
|
||||
uint32_t EVE_cmd_regread(uint32_t ptr);
|
||||
void EVE_LIB_GetProps(uint32_t *pointer, uint32_t *width, uint32_t *height);
|
||||
|
||||
|
||||
/* meta-commands, sequences of several display-list entries condensed into simpler to use functions at the price of some overhead */
|
||||
void EVE_cmd_point(int16_t x0, int16_t y0, uint16_t size);
|
||||
void EVE_cmd_line(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t w0);
|
||||
void EVE_cmd_rect(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t corner);
|
||||
|
||||
void EVE_calibrate_manual(uint16_t height);
|
||||
#endif // FT81X_FULL
|
||||
|
||||
|
||||
/* startup FT8xx: */
|
||||
uint8_t EVE_init(void);
|
||||
|
||||
#endif /* EVE_COMMANDS_H_ */
|
1047
lib/lvgl_esp32_drivers/lvgl_tft/EVE_config.h
Normal file
352
lib/lvgl_esp32_drivers/lvgl_tft/FT81x.c
Normal file
@ -0,0 +1,352 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "driver/gpio.h"
|
||||
|
||||
#include "FT81x.h"
|
||||
|
||||
#include "EVE.h"
|
||||
#include "EVE_commands.h"
|
||||
|
||||
/* some pre-definded colors */
|
||||
#define RED 0xff0000UL
|
||||
#define ORANGE 0xffa500UL
|
||||
#define GREEN 0x00ff00UL
|
||||
#define BLUE 0x0000ffUL
|
||||
#define BLUE_1 0x5dade2L
|
||||
#define YELLOW 0xffff00UL
|
||||
#define PINK 0xff00ffUL
|
||||
#define PURPLE 0x800080UL
|
||||
#define WHITE 0xffffffUL
|
||||
#define BLACK 0x000000UL
|
||||
|
||||
/* memory-map defines */
|
||||
#define SCREEN_BITMAP_ADDR 0x00000000 // full screen buffer (0x00000000 - 0x000BBE40)
|
||||
|
||||
uint8_t tft_active = 0;
|
||||
|
||||
void touch_calibrate(void)
|
||||
{
|
||||
|
||||
/* send pre-recorded touch calibration values, depending on the display the code is compiled for */
|
||||
|
||||
#if defined (EVE_CFAF240400C1_030SC)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x0000ed11);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x00001139);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff76809);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x00000000);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00010690);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xfffadf2e);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_CFAF320240F_035T)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x00005614);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x0000009e);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff43422);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x0000001d);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0xffffbda4);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x00f8f2ef);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_CFAF480128A0_039TC)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x00010485);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x0000017f);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfffb0bd3);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x00000073);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0000e293);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x00069904);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_CFAF800480E0_050SC)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000107f9);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0xffffff8c);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff451ae);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x000000d2);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0000feac);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xfffcfaaf);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_PAF90)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x00000159);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x0001019c);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff93625);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x00010157);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00000000);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x0000c101);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_RiTFT43)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000062cd);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0xfffffe45);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff45e0a);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x000001a3);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00005b33);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xFFFbb870);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_EVE2_38)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x00007bed);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x000001b0);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfff60aa5);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x00000095);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0xffffdcda);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x00829c08);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_EVE2_35G)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000109E4);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x000007A6);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xFFEC1EBA);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x0000072C);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0001096A);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xFFF469CF);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_EVE2_43G)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x0000a1ff);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x00000680);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xffe54cc2);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0xffffff53);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0000912c);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xfffe628d);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_EVE2_50G)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000109E4);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x000007A6);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xFFEC1EBA);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x0000072C);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0001096A);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xFFF469CF);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_EVE2_70G)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000105BC);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0xFFFFFA8A);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0x00004670);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0xFFFFFF75);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00010074);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xFFFF14C8);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_NHD_35)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x0000f78b);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x00000427);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfffcedf8);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0xfffffba4);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x0000f756);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x0009279e);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_RVT70)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000074df);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x000000e6);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xfffd5474);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0x000001af);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00007e79);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0xffe9a63c);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_FT811CB_HY50HD)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 66353);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 712);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 4293876677);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 4294966157);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 67516);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 418276);
|
||||
#endif
|
||||
|
||||
#if defined (EVE_ADAM101)
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_A, 0x000101E3);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_B, 0x00000114);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_C, 0xFFF5EEBA);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_D, 0xFFFFFF5E);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_E, 0x00010226);
|
||||
EVE_memWrite32(REG_TOUCH_TRANSFORM_F, 0x0000C783);
|
||||
#endif
|
||||
|
||||
/* activate this if you are using a module for the first time or if you need to re-calibrate it */
|
||||
/* write down the numbers on the screen and either place them in one of the pre-defined blocks above or make a new block */
|
||||
// Note: requires FT81x_FULL to be defined
|
||||
#if 0
|
||||
/* calibrate touch and displays values to screen */
|
||||
EVE_cmd_dl(CMD_DLSTART);
|
||||
EVE_cmd_dl(DL_CLEAR_RGB | BLACK);
|
||||
EVE_cmd_dl(DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);
|
||||
EVE_cmd_text((EVE_HSIZE/2), 50, 26, EVE_OPT_CENTER, "Please tap on the dot.");
|
||||
EVE_cmd_calibrate();
|
||||
EVE_cmd_dl(DL_DISPLAY);
|
||||
EVE_cmd_dl(CMD_SWAP);
|
||||
EVE_cmd_execute();
|
||||
|
||||
uint32_t touch_a, touch_b, touch_c, touch_d, touch_e, touch_f;
|
||||
|
||||
touch_a = EVE_memRead32(REG_TOUCH_TRANSFORM_A);
|
||||
touch_b = EVE_memRead32(REG_TOUCH_TRANSFORM_B);
|
||||
touch_c = EVE_memRead32(REG_TOUCH_TRANSFORM_C);
|
||||
touch_d = EVE_memRead32(REG_TOUCH_TRANSFORM_D);
|
||||
touch_e = EVE_memRead32(REG_TOUCH_TRANSFORM_E);
|
||||
touch_f = EVE_memRead32(REG_TOUCH_TRANSFORM_F);
|
||||
|
||||
EVE_cmd_dl(CMD_DLSTART);
|
||||
EVE_cmd_dl(DL_CLEAR_RGB | BLACK);
|
||||
EVE_cmd_dl(DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);
|
||||
EVE_cmd_dl(TAG(0));
|
||||
|
||||
EVE_cmd_text(5, 15, 26, 0, "TOUCH_TRANSFORM_A:");
|
||||
EVE_cmd_text(5, 30, 26, 0, "TOUCH_TRANSFORM_B:");
|
||||
EVE_cmd_text(5, 45, 26, 0, "TOUCH_TRANSFORM_C:");
|
||||
EVE_cmd_text(5, 60, 26, 0, "TOUCH_TRANSFORM_D:");
|
||||
EVE_cmd_text(5, 75, 26, 0, "TOUCH_TRANSFORM_E:");
|
||||
EVE_cmd_text(5, 90, 26, 0, "TOUCH_TRANSFORM_F:");
|
||||
|
||||
#if defined (FT81X_ENABLE)
|
||||
EVE_cmd_setbase(16L); /* FT81x only */
|
||||
EVE_cmd_number(310, 15, 26, EVE_OPT_RIGHTX|8, touch_a);
|
||||
EVE_cmd_number(310, 30, 26, EVE_OPT_RIGHTX|8, touch_b);
|
||||
EVE_cmd_number(310, 45, 26, EVE_OPT_RIGHTX|8, touch_c);
|
||||
EVE_cmd_number(310, 60, 26, EVE_OPT_RIGHTX|8, touch_d);
|
||||
EVE_cmd_number(310, 75, 26, EVE_OPT_RIGHTX|8, touch_e);
|
||||
EVE_cmd_number(310, 90, 26, EVE_OPT_RIGHTX|8, touch_f);
|
||||
#else
|
||||
EVE_cmd_number(310, 15, 26, EVE_OPT_RIGHTX, touch_a);
|
||||
EVE_cmd_number(310, 30, 26, EVE_OPT_RIGHTX, touch_b);
|
||||
EVE_cmd_number(310, 45, 26, EVE_OPT_RIGHTX, touch_c);
|
||||
EVE_cmd_number(310, 60, 26, EVE_OPT_RIGHTX, touch_d);
|
||||
EVE_cmd_number(310, 75, 26, EVE_OPT_RIGHTX, touch_e);
|
||||
EVE_cmd_number(310, 90, 26, EVE_OPT_RIGHTX, touch_f);
|
||||
#endif
|
||||
|
||||
EVE_cmd_dl(DL_DISPLAY); /* instruct the graphics processor to show the list */
|
||||
EVE_cmd_dl(CMD_SWAP); /* make this list active */
|
||||
EVE_cmd_execute();
|
||||
|
||||
while(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// set up a display list for a fullscreen writable bitmap
|
||||
void TFT_bitmap_display(void)
|
||||
{
|
||||
if(tft_active != 0)
|
||||
{
|
||||
EVE_start_cmd_burst(); /* start writing to the cmd-fifo as one stream of bytes, only sending the address once */
|
||||
|
||||
EVE_cmd_dl(CMD_DLSTART); /* start the display list */
|
||||
|
||||
EVE_cmd_dl(DL_CLEAR_RGB | BLACK); /* set the default clear color to black */
|
||||
EVE_cmd_dl(DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG); /* clear the screen - this and the previous prevent artifacts between lists, Attributes are the color, stencil and tag buffers */
|
||||
|
||||
EVE_cmd_dl(TAG(0));
|
||||
|
||||
// fullscreen bitmap for memory-mapped direct access
|
||||
EVE_cmd_dl(TAG(20));
|
||||
#ifdef FT81X_ARGB4
|
||||
EVE_cmd_setbitmap(SCREEN_BITMAP_ADDR, EVE_ARGB4, EVE_HSIZE, EVE_VSIZE);
|
||||
#else
|
||||
EVE_cmd_setbitmap(SCREEN_BITMAP_ADDR, EVE_RGB565, EVE_HSIZE, EVE_VSIZE);
|
||||
#endif
|
||||
EVE_cmd_dl(DL_BEGIN | EVE_BITMAPS);
|
||||
EVE_cmd_dl(VERTEX2F(0, 0));
|
||||
EVE_cmd_dl(DL_END);
|
||||
|
||||
EVE_cmd_dl(TAG(0));
|
||||
|
||||
EVE_cmd_dl(DL_DISPLAY); /* instruct the graphics processor to show the list */
|
||||
|
||||
EVE_cmd_dl(CMD_SWAP); /* make this list active */
|
||||
|
||||
EVE_end_cmd_burst(); /* stop writing to the cmd-fifo */
|
||||
|
||||
EVE_cmd_start(); /* order the command co-processor to start processing its FIFO queue but do not wait for completion */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FT81x_init(void)
|
||||
{
|
||||
gpio_pad_select_gpio(EVE_PDN);
|
||||
gpio_set_level(EVE_CS, 1);
|
||||
gpio_set_direction(EVE_PDN, GPIO_MODE_OUTPUT);
|
||||
|
||||
spi_acquire();
|
||||
|
||||
if(EVE_init())
|
||||
{
|
||||
tft_active = 1;
|
||||
|
||||
EVE_memWrite8(REG_PWM_DUTY, 0x30); /* setup backlight, range is from 0 = off to 0x80 = max */
|
||||
|
||||
touch_calibrate();
|
||||
|
||||
EVE_cmd_memset(SCREEN_BITMAP_ADDR, BLACK, SCREEN_BUFFER_SIZE); // clear screen buffer
|
||||
EVE_cmd_execute();
|
||||
|
||||
TFT_bitmap_display(); // set DL for fullscreen bitmap display
|
||||
}
|
||||
|
||||
spi_release();
|
||||
}
|
||||
|
||||
|
||||
// write fullscreen bitmap directly
|
||||
void TFT_WriteScreen(uint8_t* Bitmap)
|
||||
{
|
||||
EVE_memWrite_buffer(SCREEN_BITMAP_ADDR, Bitmap, SCREEN_BUFFER_SIZE, false);
|
||||
}
|
||||
|
||||
|
||||
// write bitmap directly, line-by-line
|
||||
void TFT_WriteBitmap(uint8_t* Bitmap, uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height)
|
||||
{
|
||||
// calc base address
|
||||
uint32_t addr = SCREEN_BITMAP_ADDR + (Y * BYTES_PER_LINE) + (X * BYTES_PER_PIXEL);
|
||||
|
||||
// can we do a fast full width block transfer?
|
||||
if(X == 0 && Width == EVE_HSIZE)
|
||||
{
|
||||
#ifdef FT81X_ARGB4
|
||||
uint32_t *ptr32 = (uint32_t *)Bitmap;
|
||||
uint16_t *ptr16 = (uint16_t *)Bitmap;
|
||||
for (uint16_t i = 0; i < Width*Height; i++)
|
||||
{
|
||||
uint32_t c = *ptr32;
|
||||
*ptr16 = ((c & 0xF0000000)>>16) | ((c & 0x00F00000)>>12) | ((c & 0x0000F000)>>8) | ((c & 0x000000F0)>>4);
|
||||
ptr16++;
|
||||
ptr32++;
|
||||
}
|
||||
#endif
|
||||
|
||||
EVE_memWrite_buffer(addr, Bitmap, (Height * BYTES_PER_LINE), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// line by line mode
|
||||
#ifdef FT81X_ARGB4
|
||||
uint32_t *ptr32 = (uint32_t *)Bitmap;
|
||||
uint16_t *ptr16 = (uint16_t *)Bitmap;
|
||||
#endif
|
||||
uint32_t bpl = Width * BYTES_PER_PIXEL;
|
||||
for (uint16_t i = 0; i < Height; i++)
|
||||
{
|
||||
#ifdef FT81X_ARGB4
|
||||
for (uint16_t j = 0; j < Width; j++)
|
||||
{
|
||||
uint32_t c = *ptr32;
|
||||
*ptr16 = ((c & 0xF0000000)>>16) | ((c & 0x00F00000)>>12) | ((c & 0x0000F000)>>8) | ((c & 0x000000F0)>>4);
|
||||
ptr16++;
|
||||
ptr32++;
|
||||
}
|
||||
#endif
|
||||
EVE_memWrite_buffer(addr, Bitmap + (i * bpl), bpl, (i == Height - 1));
|
||||
addr += BYTES_PER_LINE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LittlevGL flush callback
|
||||
void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map)
|
||||
{
|
||||
TFT_WriteBitmap((uint8_t*)color_map, area->x1, area->y1, lv_area_get_width(area), lv_area_get_height(area));
|
||||
}
|
17
lib/lvgl_esp32_drivers/lvgl_tft/FT81x.h
Normal file
@ -0,0 +1,17 @@
|
||||
#ifndef FT81X_H_
|
||||
#define FT81X_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
void FT81x_init(void);
|
||||
|
||||
void FT81x_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
|
||||
#endif /* FT81X_H_ */
|
65
lib/lvgl_esp32_drivers/lvgl_tft/GC9A01.h
Normal file
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef GC9A01_H
|
||||
#define GC9A01_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define GC9A01_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define GC9A01_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define GC9A01_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define GC9A01_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define GC9A01_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define GC9A01_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
#define GC9A01_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void GC9A01_init(void);
|
||||
void GC9A01_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void GC9A01_enable_backlight(bool backlight);
|
||||
void GC9A01_sleep_in(void);
|
||||
void GC9A01_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*GC9A01_H*/
|
1000
lib/lvgl_esp32_drivers/lvgl_tft/Kconfig
Normal file
4
lib/lvgl_esp32_drivers/lvgl_tft/component.mk
Normal file
@ -0,0 +1,4 @@
|
||||
# TFT drivers
|
||||
|
||||
COMPONENT_SRCDIRS := .
|
||||
COMPONENT_ADD_INCLUDEDIRS := .
|
107
lib/lvgl_esp32_drivers/lvgl_tft/disp_driver.c
Normal file
@ -0,0 +1,107 @@
|
||||
/**
|
||||
* @file disp_driver.c
|
||||
*/
|
||||
|
||||
#include "disp_driver.h"
|
||||
#include "disp_spi.h"
|
||||
|
||||
void disp_driver_init(void)
|
||||
{
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
ili9341_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481
|
||||
ili9481_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488
|
||||
ili9488_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789
|
||||
st7789_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
|
||||
st7735s_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357
|
||||
hx8357_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
|
||||
ili9486_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
sh1107_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
ssd1306_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X
|
||||
FT81x_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820
|
||||
il3820_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||
ra8875_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01
|
||||
GC9A01_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A
|
||||
jd79653a_init();
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map)
|
||||
{
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
ili9341_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481
|
||||
ili9481_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488
|
||||
ili9488_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789
|
||||
st7789_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
|
||||
st7735s_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357
|
||||
hx8357_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
|
||||
ili9486_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
sh1107_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
ssd1306_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X
|
||||
FT81x_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820
|
||||
il3820_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||
ra8875_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01
|
||||
GC9A01_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A
|
||||
jd79653a_lv_fb_flush(drv, area, color_map);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_lv_fb_flush(drv, area, color_map);
|
||||
#endif
|
||||
}
|
||||
|
||||
void disp_driver_rounder(lv_disp_drv_t * disp_drv, lv_area_t * area)
|
||||
{
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
ssd1306_rounder(disp_drv, area);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
sh1107_rounder(disp_drv, area);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820
|
||||
il3820_rounder(disp_drv, area);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A
|
||||
jd79653a_lv_rounder_cb(disp_drv, area);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_lv_rounder_cb(disp_drv, area);
|
||||
#endif
|
||||
}
|
||||
|
||||
void disp_driver_set_px(lv_disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa)
|
||||
{
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
ssd1306_set_px_cb(disp_drv, buf, buf_w, x, y, color, opa);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
sh1107_set_px_cb(disp_drv, buf, buf_w, x, y, color, opa);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820
|
||||
il3820_set_px_cb(disp_drv, buf, buf_w, x, y, color, opa);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A
|
||||
jd79653a_lv_set_fb_cb(disp_drv, buf, buf_w, x, y, color, opa);
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
uc8151d_lv_set_fb_cb(disp_drv, buf, buf_w, x, y, color, opa);
|
||||
#endif
|
||||
}
|
86
lib/lvgl_esp32_drivers/lvgl_tft/disp_driver.h
Normal file
@ -0,0 +1,86 @@
|
||||
/**
|
||||
* @file disp_driver.h
|
||||
*/
|
||||
|
||||
#ifndef DISP_DRIVER_H
|
||||
#define DISP_DRIVER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#if defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9341
|
||||
#include "ili9341.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9481
|
||||
#include "ili9481.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9488
|
||||
#include "ili9488.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7789
|
||||
#include "st7789.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ST7735S
|
||||
#include "st7735s.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_HX8357
|
||||
#include "hx8357.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_ILI9486
|
||||
#include "ili9486.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SH1107
|
||||
#include "sh1107.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_SSD1306
|
||||
#include "ssd1306.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X
|
||||
#include "FT81x.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_IL3820
|
||||
#include "il3820.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875
|
||||
#include "ra8875.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_GC9A01
|
||||
#include "GC9A01.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_JD79653A
|
||||
#include "jd79653a.h"
|
||||
#elif defined CONFIG_LV_TFT_DISPLAY_CONTROLLER_UC8151D
|
||||
#include "uc8151d.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
/* Initialize display */
|
||||
void disp_driver_init(void);
|
||||
|
||||
/* Display flush callback */
|
||||
void disp_driver_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
|
||||
/* Display rounder callback, used with monochrome dispays */
|
||||
void disp_driver_rounder(lv_disp_drv_t * disp_drv, lv_area_t * area);
|
||||
|
||||
/* Display set_px callback, used with monochrome dispays */
|
||||
void disp_driver_set_px(lv_disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*DISP_DRIVER_H*/
|
320
lib/lvgl_esp32_drivers/lvgl_tft/disp_spi.c
Normal file
@ -0,0 +1,320 @@
|
||||
/**
|
||||
* @file disp_spi.c
|
||||
*
|
||||
*/
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "esp_system.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/spi_master.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#define TAG "disp_spi"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <freertos/FreeRTOS.h>
|
||||
#include <freertos/semphr.h>
|
||||
#include <freertos/task.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#include "disp_spi.h"
|
||||
#include "disp_driver.h"
|
||||
|
||||
#include "../lvgl_helpers.h"
|
||||
#include "../lvgl_spi_conf.h"
|
||||
|
||||
/******************************************************************************
|
||||
* Notes about DMA spi_transaction_ext_t structure pooling
|
||||
*
|
||||
* An xQueue is used to hold a pool of reusable SPI spi_transaction_ext_t
|
||||
* structures that get used for all DMA SPI transactions. While an xQueue may
|
||||
* seem like overkill it is an already built-in RTOS feature that comes at
|
||||
* little cost. xQueues are also ISR safe if it ever becomes necessary to
|
||||
* access the pool in the ISR callback.
|
||||
*
|
||||
* When a DMA request is sent, a transaction structure is removed from the
|
||||
* pool, filled out, and passed off to the esp32 SPI driver. Later, when
|
||||
* servicing pending SPI transaction results, the transaction structure is
|
||||
* recycled back into the pool for later reuse. This matches the DMA SPI
|
||||
* transaction life cycle requirements of the esp32 SPI driver.
|
||||
*
|
||||
* When polling or synchronously sending SPI requests, and as required by the
|
||||
* esp32 SPI driver, all pending DMA transactions are first serviced. Then the
|
||||
* polling SPI request takes place.
|
||||
*
|
||||
* When sending an asynchronous DMA SPI request, if the pool is empty, some
|
||||
* small percentage of pending transactions are first serviced before sending
|
||||
* any new DMA SPI transactions. Not too many and not too few as this balance
|
||||
* controls DMA transaction latency.
|
||||
*
|
||||
* It is therefore not the design that all pending transactions must be
|
||||
* serviced and placed back into the pool with DMA SPI requests - that
|
||||
* will happen eventually. The pool just needs to contain enough to float some
|
||||
* number of in-flight SPI requests to speed up the overall DMA SPI data rate
|
||||
* and reduce transaction latency. If however a display driver uses some
|
||||
* polling SPI requests or calls disp_wait_for_pending_transactions() directly,
|
||||
* the pool will reach the full state more often and speed up DMA queuing.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define SPI_TRANSACTION_POOL_SIZE 50 /* maximum number of DMA transactions simultaneously in-flight */
|
||||
|
||||
/* DMA Transactions to reserve before queueing additional DMA transactions. A 1/10th seems to be a good balance. Too many (or all) and it will increase latency. */
|
||||
#define SPI_TRANSACTION_POOL_RESERVE_PERCENTAGE 10
|
||||
#if SPI_TRANSACTION_POOL_SIZE >= SPI_TRANSACTION_POOL_RESERVE_PERCENTAGE
|
||||
#define SPI_TRANSACTION_POOL_RESERVE (SPI_TRANSACTION_POOL_SIZE / SPI_TRANSACTION_POOL_RESERVE_PERCENTAGE)
|
||||
#else
|
||||
#define SPI_TRANSACTION_POOL_RESERVE 1 /* defines minimum size */
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
static void IRAM_ATTR spi_ready (spi_transaction_t *trans);
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
static spi_host_device_t spi_host;
|
||||
static spi_device_handle_t spi;
|
||||
static QueueHandle_t TransactionPool = NULL;
|
||||
static transaction_cb_t chained_post_cb;
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
void disp_spi_add_device_config(spi_host_device_t host, spi_device_interface_config_t *devcfg)
|
||||
{
|
||||
spi_host=host;
|
||||
chained_post_cb=devcfg->post_cb;
|
||||
devcfg->post_cb=spi_ready;
|
||||
esp_err_t ret=spi_bus_add_device(host, devcfg, &spi);
|
||||
assert(ret==ESP_OK);
|
||||
}
|
||||
|
||||
void disp_spi_add_device(spi_host_device_t host)
|
||||
{
|
||||
disp_spi_add_device_with_speed(host, SPI_TFT_CLOCK_SPEED_HZ);
|
||||
}
|
||||
|
||||
void disp_spi_add_device_with_speed(spi_host_device_t host, int clock_speed_hz)
|
||||
{
|
||||
ESP_LOGI(TAG, "Adding SPI device");
|
||||
ESP_LOGI(TAG, "Clock speed: %dHz, mode: %d, CS pin: %d",
|
||||
clock_speed_hz, SPI_TFT_SPI_MODE, DISP_SPI_CS);
|
||||
|
||||
spi_device_interface_config_t devcfg={
|
||||
.clock_speed_hz = clock_speed_hz,
|
||||
.mode = SPI_TFT_SPI_MODE,
|
||||
.spics_io_num=DISP_SPI_CS, // CS pin
|
||||
.input_delay_ns=DISP_SPI_INPUT_DELAY_NS,
|
||||
.queue_size=SPI_TRANSACTION_POOL_SIZE,
|
||||
.pre_cb=NULL,
|
||||
.post_cb=NULL,
|
||||
#if defined(DISP_SPI_HALF_DUPLEX)
|
||||
.flags = SPI_DEVICE_NO_DUMMY | SPI_DEVICE_HALFDUPLEX, /* dummy bits should be explicitly handled via DISP_SPI_VARIABLE_DUMMY as needed */
|
||||
#else
|
||||
#if defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_FT81X)
|
||||
.flags = 0,
|
||||
#elif defined (CONFIG_LV_TFT_DISPLAY_CONTROLLER_RA8875)
|
||||
.flags = SPI_DEVICE_NO_DUMMY,
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
disp_spi_add_device_config(host, &devcfg);
|
||||
|
||||
/* create the transaction pool and fill it with ptrs to spi_transaction_ext_t to reuse */
|
||||
if(TransactionPool == NULL) {
|
||||
TransactionPool = xQueueCreate(SPI_TRANSACTION_POOL_SIZE, sizeof(spi_transaction_ext_t*));
|
||||
assert(TransactionPool != NULL);
|
||||
for (size_t i = 0; i < SPI_TRANSACTION_POOL_SIZE; i++)
|
||||
{
|
||||
spi_transaction_ext_t* pTransaction = (spi_transaction_ext_t*)heap_caps_malloc(sizeof(spi_transaction_ext_t), MALLOC_CAP_DMA);
|
||||
assert(pTransaction != NULL);
|
||||
memset(pTransaction, 0, sizeof(spi_transaction_ext_t));
|
||||
xQueueSend(TransactionPool, &pTransaction, portMAX_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void disp_spi_change_device_speed(int clock_speed_hz)
|
||||
{
|
||||
if (clock_speed_hz <= 0) {
|
||||
clock_speed_hz = SPI_TFT_CLOCK_SPEED_HZ;
|
||||
}
|
||||
ESP_LOGI(TAG, "Changing SPI device clock speed: %d", clock_speed_hz);
|
||||
disp_spi_remove_device();
|
||||
disp_spi_add_device_with_speed(spi_host, clock_speed_hz);
|
||||
}
|
||||
|
||||
void disp_spi_remove_device()
|
||||
{
|
||||
/* Wait for previous pending transaction results */
|
||||
disp_wait_for_pending_transactions();
|
||||
|
||||
esp_err_t ret=spi_bus_remove_device(spi);
|
||||
assert(ret==ESP_OK);
|
||||
}
|
||||
|
||||
void disp_spi_transaction(const uint8_t *data, size_t length,
|
||||
disp_spi_send_flag_t flags, uint8_t *out,
|
||||
uint64_t addr, uint8_t dummy_bits)
|
||||
{
|
||||
if (0 == length) {
|
||||
return;
|
||||
}
|
||||
|
||||
spi_transaction_ext_t t = {0};
|
||||
|
||||
/* transaction length is in bits */
|
||||
t.base.length = length * 8;
|
||||
|
||||
if (length <= 4 && data != NULL) {
|
||||
t.base.flags = SPI_TRANS_USE_TXDATA;
|
||||
memcpy(t.base.tx_data, data, length);
|
||||
} else {
|
||||
t.base.tx_buffer = data;
|
||||
}
|
||||
|
||||
if (flags & DISP_SPI_RECEIVE) {
|
||||
assert(out != NULL && (flags & (DISP_SPI_SEND_POLLING | DISP_SPI_SEND_SYNCHRONOUS)));
|
||||
t.base.rx_buffer = out;
|
||||
|
||||
#if defined(DISP_SPI_HALF_DUPLEX)
|
||||
t.base.rxlength = t.base.length;
|
||||
t.base.length = 0; /* no MOSI phase in half-duplex reads */
|
||||
#else
|
||||
t.base.rxlength = 0; /* in full-duplex mode, zero means same as tx length */
|
||||
#endif
|
||||
}
|
||||
|
||||
if (flags & DISP_SPI_ADDRESS_8) {
|
||||
t.address_bits = 8;
|
||||
} else if (flags & DISP_SPI_ADDRESS_16) {
|
||||
t.address_bits = 16;
|
||||
} else if (flags & DISP_SPI_ADDRESS_24) {
|
||||
t.address_bits = 24;
|
||||
} else if (flags & DISP_SPI_ADDRESS_32) {
|
||||
t.address_bits = 32;
|
||||
}
|
||||
if (t.address_bits) {
|
||||
t.base.addr = addr;
|
||||
t.base.flags |= SPI_TRANS_VARIABLE_ADDR;
|
||||
}
|
||||
|
||||
#if defined(DISP_SPI_HALF_DUPLEX)
|
||||
if (flags & DISP_SPI_MODE_DIO) {
|
||||
t.base.flags |= SPI_TRANS_MODE_DIO;
|
||||
} else if (flags & DISP_SPI_MODE_QIO) {
|
||||
t.base.flags |= SPI_TRANS_MODE_QIO;
|
||||
}
|
||||
|
||||
if (flags & DISP_SPI_MODE_DIOQIO_ADDR) {
|
||||
t.base.flags |= SPI_TRANS_MODE_DIOQIO_ADDR;
|
||||
}
|
||||
|
||||
if ((flags & DISP_SPI_VARIABLE_DUMMY) && dummy_bits) {
|
||||
t.dummy_bits = dummy_bits;
|
||||
t.base.flags |= SPI_TRANS_VARIABLE_DUMMY;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Save flags for pre/post transaction processing */
|
||||
t.base.user = (void *) flags;
|
||||
|
||||
/* Poll/Complete/Queue transaction */
|
||||
if (flags & DISP_SPI_SEND_POLLING) {
|
||||
disp_wait_for_pending_transactions(); /* before polling, all previous pending transactions need to be serviced */
|
||||
spi_device_polling_transmit(spi, (spi_transaction_t *) &t);
|
||||
} else if (flags & DISP_SPI_SEND_SYNCHRONOUS) {
|
||||
disp_wait_for_pending_transactions(); /* before synchronous queueing, all previous pending transactions need to be serviced */
|
||||
spi_device_transmit(spi, (spi_transaction_t *) &t);
|
||||
} else {
|
||||
|
||||
/* if necessary, ensure we can queue new transactions by servicing some previous transactions */
|
||||
if(uxQueueMessagesWaiting(TransactionPool) == 0) {
|
||||
spi_transaction_t *presult;
|
||||
while(uxQueueMessagesWaiting(TransactionPool) < SPI_TRANSACTION_POOL_RESERVE) {
|
||||
if (spi_device_get_trans_result(spi, &presult, 1) == ESP_OK) {
|
||||
xQueueSend(TransactionPool, &presult, portMAX_DELAY); /* back to the pool to be reused */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
spi_transaction_ext_t *pTransaction = NULL;
|
||||
xQueueReceive(TransactionPool, &pTransaction, portMAX_DELAY);
|
||||
memcpy(pTransaction, &t, sizeof(t));
|
||||
if (spi_device_queue_trans(spi, (spi_transaction_t *) pTransaction, portMAX_DELAY) != ESP_OK) {
|
||||
xQueueSend(TransactionPool, &pTransaction, portMAX_DELAY); /* send failed transaction back to the pool to be reused */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void disp_wait_for_pending_transactions(void)
|
||||
{
|
||||
spi_transaction_t *presult;
|
||||
|
||||
while(uxQueueMessagesWaiting(TransactionPool) < SPI_TRANSACTION_POOL_SIZE) { /* service until the transaction reuse pool is full again */
|
||||
if (spi_device_get_trans_result(spi, &presult, 1) == ESP_OK) {
|
||||
xQueueSend(TransactionPool, &presult, portMAX_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void disp_spi_acquire(void)
|
||||
{
|
||||
esp_err_t ret = spi_device_acquire_bus(spi, portMAX_DELAY);
|
||||
assert(ret == ESP_OK);
|
||||
}
|
||||
|
||||
void disp_spi_release(void)
|
||||
{
|
||||
spi_device_release_bus(spi);
|
||||
}
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
static void IRAM_ATTR spi_ready(spi_transaction_t *trans)
|
||||
{
|
||||
disp_spi_send_flag_t flags = (disp_spi_send_flag_t) trans->user;
|
||||
|
||||
if (flags & DISP_SPI_SIGNAL_FLUSH) {
|
||||
lv_disp_t * disp = NULL;
|
||||
|
||||
#if (LVGL_VERSION_MAJOR >= 7)
|
||||
disp = _lv_refr_get_disp_refreshing();
|
||||
#else /* Before v7 */
|
||||
disp = lv_refr_get_disp_refreshing();
|
||||
#endif
|
||||
|
||||
lv_disp_flush_ready(&disp->driver);
|
||||
}
|
||||
|
||||
if (chained_post_cb) {
|
||||
chained_post_cb(trans);
|
||||
}
|
||||
}
|
||||
|
81
lib/lvgl_esp32_drivers/lvgl_tft/disp_spi.h
Normal file
@ -0,0 +1,81 @@
|
||||
/**
|
||||
* @file disp_spi.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef DISP_SPI_H
|
||||
#define DISP_SPI_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <driver/spi_master.h>
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
typedef enum _disp_spi_send_flag_t {
|
||||
DISP_SPI_SEND_QUEUED = 0x00000000,
|
||||
DISP_SPI_SEND_POLLING = 0x00000001,
|
||||
DISP_SPI_SEND_SYNCHRONOUS = 0x00000002,
|
||||
DISP_SPI_SIGNAL_FLUSH = 0x00000004,
|
||||
DISP_SPI_RECEIVE = 0x00000008,
|
||||
DISP_SPI_CMD_8 = 0x00000010, /* Reserved */
|
||||
DISP_SPI_CMD_16 = 0x00000020, /* Reserved */
|
||||
DISP_SPI_ADDRESS_8 = 0x00000040,
|
||||
DISP_SPI_ADDRESS_16 = 0x00000080,
|
||||
DISP_SPI_ADDRESS_24 = 0x00000100,
|
||||
DISP_SPI_ADDRESS_32 = 0x00000200,
|
||||
DISP_SPI_MODE_DIO = 0x00000400,
|
||||
DISP_SPI_MODE_QIO = 0x00000800,
|
||||
DISP_SPI_MODE_DIOQIO_ADDR = 0x00001000,
|
||||
DISP_SPI_VARIABLE_DUMMY = 0x00002000,
|
||||
} disp_spi_send_flag_t;
|
||||
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
void disp_spi_add_device(spi_host_device_t host);
|
||||
void disp_spi_add_device_config(spi_host_device_t host, spi_device_interface_config_t *devcfg);
|
||||
void disp_spi_add_device_with_speed(spi_host_device_t host, int clock_speed_hz);
|
||||
void disp_spi_change_device_speed(int clock_speed_hz);
|
||||
void disp_spi_remove_device();
|
||||
|
||||
/* Important!
|
||||
All buffers should also be 32-bit aligned and DMA capable to prevent extra allocations and copying.
|
||||
When DMA reading (even in polling mode) the ESP32 always read in 4-byte chunks even if less is requested.
|
||||
Extra space will be zero filled. Always ensure the out buffer is large enough to hold at least 4 bytes!
|
||||
*/
|
||||
void disp_spi_transaction(const uint8_t *data, size_t length,
|
||||
disp_spi_send_flag_t flags, uint8_t *out, uint64_t addr, uint8_t dummy_bits);
|
||||
|
||||
void disp_wait_for_pending_transactions(void);
|
||||
void disp_spi_acquire(void);
|
||||
void disp_spi_release(void);
|
||||
|
||||
static inline void disp_spi_send_data(uint8_t *data, size_t length) {
|
||||
disp_spi_transaction(data, length, DISP_SPI_SEND_POLLING, NULL, 0, 0);
|
||||
}
|
||||
|
||||
static inline void disp_spi_send_colors(uint8_t *data, size_t length) {
|
||||
disp_spi_transaction(data, length,
|
||||
DISP_SPI_SEND_QUEUED | DISP_SPI_SIGNAL_FLUSH,
|
||||
NULL, 0, 0);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*DISP_SPI_H*/
|
151
lib/lvgl_esp32_drivers/lvgl_tft/hx8357.h
Normal file
@ -0,0 +1,151 @@
|
||||
/**
|
||||
* @file HX8357.h
|
||||
*
|
||||
* Roughly based on the Adafruit_HX8357_Library
|
||||
*
|
||||
* This library should work with:
|
||||
* Adafruit 3.5" TFT 320x480 + Touchscreen Breakout
|
||||
* http://www.adafruit.com/products/2050
|
||||
*
|
||||
* Adafruit TFT FeatherWing - 3.5" 480x320 Touchscreen for Feathers
|
||||
* https://www.adafruit.com/product/3651
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef HX8357_H
|
||||
#define HX8357_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define HX8357_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define HX8357_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define HX8357_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define HX8357_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define HX8357_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define HX8357_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
// if text/images are backwards, try setting this to 1
|
||||
#define HX8357_INVERT_DISPLAY CONFIG_LV_INVERT_DISPLAY
|
||||
|
||||
|
||||
/*******************
|
||||
* HX8357B/D REGS
|
||||
*********************/
|
||||
#define HX8357D 0xD ///< Our internal const for D type
|
||||
#define HX8357B 0xB ///< Our internal const for B type
|
||||
|
||||
#define HX8357_TFTWIDTH 320 ///< 320 pixels wide
|
||||
#define HX8357_TFTHEIGHT 480 ///< 480 pixels tall
|
||||
|
||||
#define HX8357_NOP 0x00 ///< No op
|
||||
#define HX8357_SWRESET 0x01 ///< software reset
|
||||
#define HX8357_RDDID 0x04 ///< Read ID
|
||||
#define HX8357_RDDST 0x09 ///< (unknown)
|
||||
|
||||
#define HX8357_RDPOWMODE 0x0A ///< Read power mode Read power mode
|
||||
#define HX8357_RDMADCTL 0x0B ///< Read MADCTL
|
||||
#define HX8357_RDCOLMOD 0x0C ///< Column entry mode
|
||||
#define HX8357_RDDIM 0x0D ///< Read display image mode
|
||||
#define HX8357_RDDSDR 0x0F ///< Read dosplay signal mode
|
||||
|
||||
#define HX8357_SLPIN 0x10 ///< Enter sleep mode
|
||||
#define HX8357_SLPOUT 0x11 ///< Exit sleep mode
|
||||
#define HX8357B_PTLON 0x12 ///< Partial mode on
|
||||
#define HX8357B_NORON 0x13 ///< Normal mode
|
||||
|
||||
#define HX8357_INVOFF 0x20 ///< Turn off invert
|
||||
#define HX8357_INVON 0x21 ///< Turn on invert
|
||||
#define HX8357_DISPOFF 0x28 ///< Display on
|
||||
#define HX8357_DISPON 0x29 ///< Display off
|
||||
|
||||
#define HX8357_CASET 0x2A ///< Column addr set
|
||||
#define HX8357_PASET 0x2B ///< Page addr set
|
||||
#define HX8357_RAMWR 0x2C ///< Write VRAM
|
||||
#define HX8357_RAMRD 0x2E ///< Read VRAm
|
||||
|
||||
#define HX8357B_PTLAR 0x30 ///< (unknown)
|
||||
#define HX8357_TEON 0x35 ///< Tear enable on
|
||||
#define HX8357_TEARLINE 0x44 ///< (unknown)
|
||||
#define HX8357_MADCTL 0x36 ///< Memory access control
|
||||
#define HX8357_COLMOD 0x3A ///< Color mode
|
||||
|
||||
#define HX8357_SETOSC 0xB0 ///< Set oscillator
|
||||
#define HX8357_SETPWR1 0xB1 ///< Set power control
|
||||
#define HX8357B_SETDISPLAY 0xB2 ///< Set display mode
|
||||
#define HX8357_SETRGB 0xB3 ///< Set RGB interface
|
||||
#define HX8357D_SETCOM 0xB6 ///< Set VCOM voltage
|
||||
|
||||
#define HX8357B_SETDISPMODE 0xB4 ///< Set display mode
|
||||
#define HX8357D_SETCYC 0xB4 ///< Set display cycle reg
|
||||
#define HX8357B_SETOTP 0xB7 ///< Set OTP memory
|
||||
#define HX8357D_SETC 0xB9 ///< Enable extension command
|
||||
|
||||
#define HX8357B_SET_PANEL_DRIVING 0xC0 ///< Set panel drive mode
|
||||
#define HX8357D_SETSTBA 0xC0 ///< Set source option
|
||||
#define HX8357B_SETDGC 0xC1 ///< Set DGC settings
|
||||
#define HX8357B_SETID 0xC3 ///< Set ID
|
||||
#define HX8357B_SETDDB 0xC4 ///< Set DDB
|
||||
#define HX8357B_SETDISPLAYFRAME 0xC5 ///< Set display frame
|
||||
#define HX8357B_GAMMASET 0xC8 ///< Set Gamma correction
|
||||
#define HX8357B_SETCABC 0xC9 ///< Set CABC
|
||||
#define HX8357_SETPANEL 0xCC ///< Set Panel
|
||||
|
||||
#define HX8357B_SETPOWER 0xD0 ///< Set power control
|
||||
#define HX8357B_SETVCOM 0xD1 ///< Set VCOM
|
||||
#define HX8357B_SETPWRNORMAL 0xD2 ///< Set power normal
|
||||
|
||||
#define HX8357B_RDID1 0xDA ///< Read ID #1
|
||||
#define HX8357B_RDID2 0xDB ///< Read ID #2
|
||||
#define HX8357B_RDID3 0xDC ///< Read ID #3
|
||||
#define HX8357B_RDID4 0xDD ///< Read ID #4
|
||||
|
||||
#define HX8357D_SETGAMMA 0xE0 ///< Set Gamma
|
||||
|
||||
#define HX8357B_SETGAMMA 0xC8 ///< Set Gamma
|
||||
#define HX8357B_SETPANELRELATED 0xE9 ///< Set panel related
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void hx8357_init(void);
|
||||
void hx8357_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void hx8357_enable_backlight(bool backlight);
|
||||
void hx8357_set_rotation(uint8_t r);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*HX8357_H*/
|
113
lib/lvgl_esp32_drivers/lvgl_tft/il3820.h
Normal file
@ -0,0 +1,113 @@
|
||||
/**
|
||||
* @file il3820.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef IL3820_H
|
||||
#define IL3820_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "sdkconfig.h"
|
||||
|
||||
/* Values for Waveshare 2.9inch e-Paper Module, this values shouldn't be
|
||||
* swapped to change display orientation */
|
||||
#define EPD_PANEL_WIDTH CONFIG_LV_DISPLAY_WIDTH /* 128 */
|
||||
#define EPD_PANEL_HEIGHT CONFIG_LV_DISPLAY_HEIGHT /* 296 */
|
||||
|
||||
/* 128 = panel width */
|
||||
#define IL3820_COLUMNS (EPD_PANEL_WIDTH / 8)
|
||||
|
||||
#define IL3820_DC_PIN CONFIG_LV_DISP_PIN_DC
|
||||
#define IL3820_RST_PIN CONFIG_LV_DISP_PIN_RST
|
||||
#define IL3820_BUSY_PIN CONFIG_LV_DISP_PIN_BUSY
|
||||
#define IL3820_BUSY_LEVEL 1
|
||||
|
||||
/* IL3820 commands */
|
||||
#define IL3820_CMD_GDO_CTRL 0x01
|
||||
#define IL3820_CMD_GDV_CTRL 0x03
|
||||
#define IL3820_CMD_SDV_CTRL 0x04
|
||||
#define IL3820_CMD_SOFTSTART 0x0c
|
||||
#define IL3820_CMD_GSCAN_START 0x0f
|
||||
#define IL3820_CMD_SLEEP_MODE 0x10
|
||||
#define IL3820_CMD_ENTRY_MODE 0x11
|
||||
#define IL3820_CMD_SW_RESET 0x12
|
||||
#define IL3820_CMD_TSENS_CTRL 0x1a
|
||||
#define IL3820_CMD_MASTER_ACTIVATION 0x20
|
||||
#define IL3820_CMD_UPDATE_CTRL1 0x21
|
||||
#define IL3820_CMD_UPDATE_CTRL2 0x22
|
||||
#define IL3820_CMD_WRITE_RAM 0x24
|
||||
#define IL3820_CMD_WRITE_RED_RAM 0x26
|
||||
#define IL3820_CMD_VCOM_SENSE 0x28
|
||||
#define IL3820_CMD_VCOM_SENSE_DURATON 0x29
|
||||
#define IL3820_CMD_PRGM_VCOM_OTP 0x2a
|
||||
#define IL3820_CMD_VCOM_VOLTAGE 0x2c
|
||||
#define IL3820_CMD_PRGM_WS_OTP 0x30
|
||||
#define IL3820_CMD_UPDATE_LUT 0x32
|
||||
#define IL3820_CMD_PRGM_OTP_SELECTION 0x36
|
||||
#define IL3820_CMD_OTP_SELECTION_CTRL 0x37
|
||||
#define IL3820_CMD_DUMMY_LINE 0x3a
|
||||
#define IL3820_CMD_GATE_LINE_WIDTH 0x3b
|
||||
#define IL3820_CMD_BWF_CTRL 0x3c
|
||||
#define IL3820_CMD_RAM_XPOS_CTRL 0x44
|
||||
#define IL3820_CMD_RAM_YPOS_CTRL 0x45
|
||||
#define IL3820_CMD_RAM_XPOS_CNTR 0x4e
|
||||
#define IL3820_CMD_RAM_YPOS_CNTR 0x4f
|
||||
#define IL3820_CMD_TERMINATE_FRAME_RW 0xff
|
||||
|
||||
/* Data entry sequence modes */
|
||||
#define IL3820_DATA_ENTRY_MASK 0x07
|
||||
#define IL3820_DATA_ENTRY_XDYDX 0x00
|
||||
#define IL3820_DATA_ENTRY_XIYDX 0x01
|
||||
#define IL3820_DATA_ENTRY_XDYIX 0x02
|
||||
#define IL3820_DATA_ENTRY_XIYIX 0x03
|
||||
#define IL3820_DATA_ENTRY_XDYDY 0x04
|
||||
#define IL3820_DATA_ENTRY_XIYDY 0x05
|
||||
#define IL3820_DATA_ENTRY_XDYIY 0x06
|
||||
#define IL3820_DATA_ENTRY_XIYIY 0x07
|
||||
|
||||
/* Options for display update */
|
||||
#define IL3820_CTRL1_INITIAL_UPDATE_LL 0x00
|
||||
#define IL3820_CTRL1_INITIAL_UPDATE_LH 0x01
|
||||
#define IL3820_CTRL1_INITIAL_UPDATE_HL 0x02
|
||||
#define IL3820_CTRL1_INITIAL_UPDATE_HH 0x03
|
||||
|
||||
/* Options for display update sequence */
|
||||
#define IL3820_CTRL2_ENABLE_CLK 0x80
|
||||
#define IL3820_CTRL2_ENABLE_ANALOG 0x40
|
||||
#define IL3820_CTRL2_TO_INITIAL 0x08
|
||||
#define IL3820_CTRL2_TO_PATTERN 0x04
|
||||
#define IL3820_CTRL2_DISABLE_ANALOG 0x02
|
||||
#define IL3820_CTRL2_DISABLE_CLK 0x01
|
||||
|
||||
#define IL3820_SLEEP_MODE_DSM 0x01
|
||||
#define IL3820_SLEEP_MODE_PON 0x00
|
||||
|
||||
/* time constants in ms */
|
||||
#define IL3820_RESET_DELAY 20
|
||||
#define IL3820_BUSY_DELAY 1
|
||||
// normal wait time max 200ms
|
||||
#define IL3820_WAIT 20
|
||||
|
||||
void il3820_init(void);
|
||||
void il3820_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
void il3820_fullflush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
void il3820_rounder(struct _disp_drv_t * disp_drv, lv_area_t *area);
|
||||
void il3820_set_px_cb(struct _disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y, lv_color_t color, lv_opa_t opa);
|
||||
void il3820_sleep_in(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __IL3820_REGS_H__ */
|
||||
|
65
lib/lvgl_esp32_drivers/lvgl_tft/ili9341.h
Normal file
@ -0,0 +1,65 @@
|
||||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ILI9341_H
|
||||
#define ILI9341_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9341_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9341_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9341_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9341_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ILI9341_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ILI9341_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
#define ILI9341_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ili9341_init(void);
|
||||
void ili9341_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void ili9341_enable_backlight(bool backlight);
|
||||
void ili9341_sleep_in(void);
|
||||
void ili9341_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*ILI9341_H*/
|
130
lib/lvgl_esp32_drivers/lvgl_tft/ili9481.h
Normal file
@ -0,0 +1,130 @@
|
||||
/**
|
||||
* @file ili9481.h
|
||||
*/
|
||||
|
||||
#ifndef ILI9481_H
|
||||
#define ILI9481_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9481_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9481_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9481_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9481_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
#define ILI9481_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
#define ILI9481_DISPLAY_ORIENTATION CONFIG_LV_DISPLAY_ORIENTATION
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ILI9481_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ILI9481_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
/*******************
|
||||
* ILI9481 REGS
|
||||
*********************/
|
||||
|
||||
/* MIPI DCS Type1 */
|
||||
#define ILI9481_CMD_NOP 0x00
|
||||
#define ILI9481_CMD_SOFTWARE_RESET 0x01
|
||||
#define ILI9481_CMD_READ_DISP_POWER_MODE 0x0A
|
||||
#define ILI9481_CMD_READ_DISP_MADCTRL 0x0B // bits 7:3 only
|
||||
#define ILI9481_CMD_READ_DISP_PIXEL_FORMAT 0x0C
|
||||
#define ILI9481_CMD_READ_DISP_IMAGE_MODE 0x0D
|
||||
#define ILI9481_CMD_READ_DISP_SIGNAL_MODE 0x0E
|
||||
#define ILI9481_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F // bits 7:6 only
|
||||
#define ILI9481_CMD_ENTER_SLEEP_MODE 0x10
|
||||
#define ILI9481_CMD_SLEEP_OUT 0x11
|
||||
#define ILI9481_CMD_PARTIAL_MODE_ON 0x12
|
||||
#define ILI9481_CMD_NORMAL_DISP_MODE_ON 0x13
|
||||
#define ILI9481_CMD_DISP_INVERSION_OFF 0x20
|
||||
#define ILI9481_CMD_DISP_INVERSION_ON 0x21
|
||||
#define ILI9481_CMD_DISPLAY_OFF 0x28
|
||||
#define ILI9481_CMD_DISPLAY_ON 0x29
|
||||
#define ILI9481_CMD_COLUMN_ADDRESS_SET 0x2A
|
||||
#define ILI9481_CMD_PAGE_ADDRESS_SET 0x2B
|
||||
#define ILI9481_CMD_MEMORY_WRITE 0x2C
|
||||
#define ILI9481_CMD_MEMORY_READ 0x2E
|
||||
#define ILI9481_CMD_PARTIAL_AREA 0x30
|
||||
#define ILI9481_CMD_VERT_SCROLL_DEFINITION 0x33
|
||||
#define ILI9481_CMD_TEARING_EFFECT_LINE_OFF 0x34
|
||||
#define ILI9481_CMD_TEARING_EFFECT_LINE_ON 0x35
|
||||
#define ILI9481_CMD_MEMORY_ACCESS_CONTROL 0x36 // bits 7:3,1:0 only
|
||||
#define ILI9481_CMD_VERT_SCROLL_START_ADDRESS 0x37
|
||||
#define ILI9481_CMD_IDLE_MODE_OFF 0x38
|
||||
#define ILI9481_CMD_IDLE_MODE_ON 0x39
|
||||
#define ILI9481_CMD_COLMOD_PIXEL_FORMAT_SET 0x3A
|
||||
#define ILI9481_CMD_WRITE_MEMORY_CONTINUE 0x3C
|
||||
#define ILI9481_CMD_READ_MEMORY_CONTINUE 0x3E
|
||||
#define ILI9481_CMD_SET_TEAR_SCANLINE 0x44
|
||||
#define ILI9481_CMD_GET_SCANLINE 0x45
|
||||
|
||||
#define ILI9481_DDB_START 0xA1
|
||||
#define ILI9481_DDB_CONTINUE 0xA8
|
||||
|
||||
/* other */
|
||||
#define ILI9481_CMD_ACCESS_PROTECT 0xB0
|
||||
#define ILI9481_CMD_LOW_POWER_CONTROL 0xB1
|
||||
#define ILI9481_CMD_FRAME_MEMORY_ACCESS 0xB3
|
||||
#define ILI9481_CMD_DISPLAY_MODE 0xB4
|
||||
#define ILI9481_CMD_DEVICE_CODE 0xBF
|
||||
|
||||
#define ILI9481_CMD_PANEL_DRIVE 0xC0
|
||||
#define ILI9481_CMD_DISP_TIMING_NORMAL 0xC1
|
||||
#define ILI9481_CMD_DISP_TIMING_PARTIAL 0xC2
|
||||
#define ILI9481_CMD_DISP_TIMING_IDLE 0xC3
|
||||
#define ILI9481_CMD_FRAME_RATE 0xC5
|
||||
#define ILI9481_CMD_INTERFACE_CONTROL 0xC6
|
||||
#define ILI9481_CMD_GAMMA_SETTING 0xC8
|
||||
|
||||
#define ILI9481_CMD_POWER_SETTING 0xD0
|
||||
#define ILI9481_CMD_VCOM_CONTROL 0xD1
|
||||
#define ILI9481_CMD_POWER_CONTROL_NORMAL 0xD2
|
||||
#define ILI9481_CMD_POWER_CONTROL_IDEL 0xD3
|
||||
#define ILI9481_CMD_POWER_CONTROL_PARTIAL 0xD4
|
||||
|
||||
#define ILI9481_CMD_NVMEM_WRITE 0xE0
|
||||
#define ILI9481_CMD_NVMEM_PROTECTION_KEY 0xE1
|
||||
#define ILI9481_CMD_NVMEM_STATUS_READ 0xE2
|
||||
#define ILI9481_CMD_NVMEM_PROTECTION 0xE3
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ili9481_init(void);
|
||||
void ili9481_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void ili9481_enable_backlight(bool backlight);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*ILI9481_H*/
|
61
lib/lvgl_esp32_drivers/lvgl_tft/ili9486.h
Normal file
@ -0,0 +1,61 @@
|
||||
/**
|
||||
* @file ili9486.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ILI9486_H
|
||||
#define ILI9486_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9486_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9486_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9486_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9486_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ILI9486_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ILI9486_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ili9486_init(void);
|
||||
void ili9486_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void ili9486_enable_backlight(bool backlight);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* ILI9486_H*/
|
167
lib/lvgl_esp32_drivers/lvgl_tft/ili9488.h
Normal file
@ -0,0 +1,167 @@
|
||||
/**
|
||||
* @file ili9488.h
|
||||
*/
|
||||
|
||||
#ifndef ILI9844_H
|
||||
#define ILI9844_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define ILI9488_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ILI9488_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ILI9488_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ILI9488_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ILI9488_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ILI9488_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
/*******************
|
||||
* ILI9488 REGS
|
||||
*********************/
|
||||
|
||||
/* Level 1 Commands (from the display Datasheet) */
|
||||
#define ILI9488_CMD_NOP 0x00
|
||||
#define ILI9488_CMD_SOFTWARE_RESET 0x01
|
||||
#define ILI9488_CMD_READ_DISP_ID 0x04
|
||||
#define ILI9488_CMD_READ_ERROR_DSI 0x05
|
||||
#define ILI9488_CMD_READ_DISP_STATUS 0x09
|
||||
#define ILI9488_CMD_READ_DISP_POWER_MODE 0x0A
|
||||
#define ILI9488_CMD_READ_DISP_MADCTRL 0x0B
|
||||
#define ILI9488_CMD_READ_DISP_PIXEL_FORMAT 0x0C
|
||||
#define ILI9488_CMD_READ_DISP_IMAGE_MODE 0x0D
|
||||
#define ILI9488_CMD_READ_DISP_SIGNAL_MODE 0x0E
|
||||
#define ILI9488_CMD_READ_DISP_SELF_DIAGNOSTIC 0x0F
|
||||
#define ILI9488_CMD_ENTER_SLEEP_MODE 0x10
|
||||
#define ILI9488_CMD_SLEEP_OUT 0x11
|
||||
#define ILI9488_CMD_PARTIAL_MODE_ON 0x12
|
||||
#define ILI9488_CMD_NORMAL_DISP_MODE_ON 0x13
|
||||
#define ILI9488_CMD_DISP_INVERSION_OFF 0x20
|
||||
#define ILI9488_CMD_DISP_INVERSION_ON 0x21
|
||||
#define ILI9488_CMD_PIXEL_OFF 0x22
|
||||
#define ILI9488_CMD_PIXEL_ON 0x23
|
||||
#define ILI9488_CMD_DISPLAY_OFF 0x28
|
||||
#define ILI9488_CMD_DISPLAY_ON 0x29
|
||||
#define ILI9488_CMD_COLUMN_ADDRESS_SET 0x2A
|
||||
#define ILI9488_CMD_PAGE_ADDRESS_SET 0x2B
|
||||
#define ILI9488_CMD_MEMORY_WRITE 0x2C
|
||||
#define ILI9488_CMD_MEMORY_READ 0x2E
|
||||
#define ILI9488_CMD_PARTIAL_AREA 0x30
|
||||
#define ILI9488_CMD_VERT_SCROLL_DEFINITION 0x33
|
||||
#define ILI9488_CMD_TEARING_EFFECT_LINE_OFF 0x34
|
||||
#define ILI9488_CMD_TEARING_EFFECT_LINE_ON 0x35
|
||||
#define ILI9488_CMD_MEMORY_ACCESS_CONTROL 0x36
|
||||
#define ILI9488_CMD_VERT_SCROLL_START_ADDRESS 0x37
|
||||
#define ILI9488_CMD_IDLE_MODE_OFF 0x38
|
||||
#define ILI9488_CMD_IDLE_MODE_ON 0x39
|
||||
#define ILI9488_CMD_COLMOD_PIXEL_FORMAT_SET 0x3A
|
||||
#define ILI9488_CMD_WRITE_MEMORY_CONTINUE 0x3C
|
||||
#define ILI9488_CMD_READ_MEMORY_CONTINUE 0x3E
|
||||
#define ILI9488_CMD_SET_TEAR_SCANLINE 0x44
|
||||
#define ILI9488_CMD_GET_SCANLINE 0x45
|
||||
#define ILI9488_CMD_WRITE_DISPLAY_BRIGHTNESS 0x51
|
||||
#define ILI9488_CMD_READ_DISPLAY_BRIGHTNESS 0x52
|
||||
#define ILI9488_CMD_WRITE_CTRL_DISPLAY 0x53
|
||||
#define ILI9488_CMD_READ_CTRL_DISPLAY 0x54
|
||||
#define ILI9488_CMD_WRITE_CONTENT_ADAPT_BRIGHTNESS 0x55
|
||||
#define ILI9488_CMD_READ_CONTENT_ADAPT_BRIGHTNESS 0x56
|
||||
#define ILI9488_CMD_WRITE_MIN_CAB_LEVEL 0x5E
|
||||
#define ILI9488_CMD_READ_MIN_CAB_LEVEL 0x5F
|
||||
#define ILI9488_CMD_READ_ABC_SELF_DIAG_RES 0x68
|
||||
#define ILI9488_CMD_READ_ID1 0xDA
|
||||
#define ILI9488_CMD_READ_ID2 0xDB
|
||||
#define ILI9488_CMD_READ_ID3 0xDC
|
||||
|
||||
/* Level 2 Commands (from the display Datasheet) */
|
||||
#define ILI9488_CMD_INTERFACE_MODE_CONTROL 0xB0
|
||||
#define ILI9488_CMD_FRAME_RATE_CONTROL_NORMAL 0xB1
|
||||
#define ILI9488_CMD_FRAME_RATE_CONTROL_IDLE_8COLOR 0xB2
|
||||
#define ILI9488_CMD_FRAME_RATE_CONTROL_PARTIAL 0xB3
|
||||
#define ILI9488_CMD_DISPLAY_INVERSION_CONTROL 0xB4
|
||||
#define ILI9488_CMD_BLANKING_PORCH_CONTROL 0xB5
|
||||
#define ILI9488_CMD_DISPLAY_FUNCTION_CONTROL 0xB6
|
||||
#define ILI9488_CMD_ENTRY_MODE_SET 0xB7
|
||||
#define ILI9488_CMD_BACKLIGHT_CONTROL_1 0xB9
|
||||
#define ILI9488_CMD_BACKLIGHT_CONTROL_2 0xBA
|
||||
#define ILI9488_CMD_HS_LANES_CONTROL 0xBE
|
||||
#define ILI9488_CMD_POWER_CONTROL_1 0xC0
|
||||
#define ILI9488_CMD_POWER_CONTROL_2 0xC1
|
||||
#define ILI9488_CMD_POWER_CONTROL_NORMAL_3 0xC2
|
||||
#define ILI9488_CMD_POWER_CONTROL_IDEL_4 0xC3
|
||||
#define ILI9488_CMD_POWER_CONTROL_PARTIAL_5 0xC4
|
||||
#define ILI9488_CMD_VCOM_CONTROL_1 0xC5
|
||||
#define ILI9488_CMD_CABC_CONTROL_1 0xC6
|
||||
#define ILI9488_CMD_CABC_CONTROL_2 0xC8
|
||||
#define ILI9488_CMD_CABC_CONTROL_3 0xC9
|
||||
#define ILI9488_CMD_CABC_CONTROL_4 0xCA
|
||||
#define ILI9488_CMD_CABC_CONTROL_5 0xCB
|
||||
#define ILI9488_CMD_CABC_CONTROL_6 0xCC
|
||||
#define ILI9488_CMD_CABC_CONTROL_7 0xCD
|
||||
#define ILI9488_CMD_CABC_CONTROL_8 0xCE
|
||||
#define ILI9488_CMD_CABC_CONTROL_9 0xCF
|
||||
#define ILI9488_CMD_NVMEM_WRITE 0xD0
|
||||
#define ILI9488_CMD_NVMEM_PROTECTION_KEY 0xD1
|
||||
#define ILI9488_CMD_NVMEM_STATUS_READ 0xD2
|
||||
#define ILI9488_CMD_READ_ID4 0xD3
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_1 0xD7
|
||||
#define ILI9488_CMD_READ_ID_VERSION 0xD8
|
||||
#define ILI9488_CMD_POSITIVE_GAMMA_CORRECTION 0xE0
|
||||
#define ILI9488_CMD_NEGATIVE_GAMMA_CORRECTION 0xE1
|
||||
#define ILI9488_CMD_DIGITAL_GAMMA_CONTROL_1 0xE2
|
||||
#define ILI9488_CMD_DIGITAL_GAMMA_CONTROL_2 0xE3
|
||||
#define ILI9488_CMD_SET_IMAGE_FUNCTION 0xE9
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_2 0xF2
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_3 0xF7
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_4 0xF8
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_5 0xF9
|
||||
#define ILI9488_CMD_SPI_READ_SETTINGS 0xFB
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_6 0xFC
|
||||
#define ILI9488_CMD_ADJUST_CONTROL_7 0xFF
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
typedef struct {
|
||||
uint8_t red;
|
||||
uint8_t green;
|
||||
uint8_t blue;
|
||||
} lv_color_custom_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ili9488_init(void);
|
||||
void ili9488_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void ili9488_enable_backlight(bool backlight);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*ILI9488_H*/
|
36
lib/lvgl_esp32_drivers/lvgl_tft/jd79653a.h
Normal file
@ -0,0 +1,36 @@
|
||||
/**
|
||||
* @file il3820.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef JD79653A_H
|
||||
#define JD79653A_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
void jd79653a_init();
|
||||
void jd79653a_deep_sleep();
|
||||
|
||||
void jd79653a_lv_set_fb_cb(struct _disp_drv_t * disp_drv, uint8_t* buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa);
|
||||
void jd79653a_lv_rounder_cb(struct _disp_drv_t * disp_drv, lv_area_t *area);
|
||||
void jd79653a_lv_fb_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
|
||||
void jd79653a_fb_set_full_color(uint8_t color);
|
||||
void jd79653a_fb_full_update(uint8_t *data, size_t len);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif // JD79653A_H
|
118
lib/lvgl_esp32_drivers/lvgl_tft/ra8875.h
Normal file
@ -0,0 +1,118 @@
|
||||
/**
|
||||
* @file ra8875.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef RA8875_H
|
||||
#define RA8875_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define RA8875_RST CONFIG_LV_DISP_PIN_RST
|
||||
|
||||
// System & Configuration Registers
|
||||
#define RA8875_REG_PWRR (0x01) // Power and Display Control Register (PWRR)
|
||||
#define RA8875_REG_MRWC (0x02) // Memory Read/Write Command (MRWC)
|
||||
#define RA8875_REG_PCSR (0x04) // Pixel Clock Setting Register (PCSR)
|
||||
#define RA8875_REG_SYSR (0x10) // System Configuration Register (SYSR)
|
||||
#define RA8875_REG_HDWR (0x14) // LCD Horizontal Display Width Register (HDWR)
|
||||
#define RA8875_REG_HNDFTR (0x15) // Horizontal Non-Display Period Fine Tuning Option Register (HNDFTR)
|
||||
#define RA8875_REG_HNDR (0x16) // LCD Horizontal Non-Display Period Register (HNDR)
|
||||
#define RA8875_REG_HSTR (0x17) // HSYNC Start Position Register (HSTR)
|
||||
#define RA8875_REG_HPWR (0x18) // HSYNC Pulse Width Register (HPWR)
|
||||
#define RA8875_REG_VDHR0 (0x19) // LCD Vertical Display Height Register (VDHR0)
|
||||
#define RA8875_REG_VDHR1 (0x1A) // LCD Vertical Display Height Register (VDHR1)
|
||||
#define RA8875_REG_VNDR0 (0x1B) // LCD Vertical Non-Display Period Register (VNDR0)
|
||||
#define RA8875_REG_VNDR1 (0x1C) // LCD Vertical Non-Display Period Register (VNDR1)
|
||||
#define RA8875_REG_VSTR0 (0x1D) // VSYNC Start Position Register (VSTR0)
|
||||
#define RA8875_REG_VSTR1 (0x1E) // VSYNC Start Position Register (VSTR1)
|
||||
#define RA8875_REG_VPWR (0x1F) // VSYNC Pulse Width Register (VPWR)
|
||||
|
||||
// LCD Display Control Registers
|
||||
#define RA8875_REG_DPCR (0x20) // Display Configuration Register (DPCR)
|
||||
|
||||
// Active Window & Scroll Window Setting Registers
|
||||
#define RA8875_REG_HSAW0 (0x30) // Horizontal Start Point 0 of Active Window (HSAW0)
|
||||
#define RA8875_REG_HSAW1 (0x31) // Horizontal Start Point 1 of Active Window (HSAW1)
|
||||
#define RA8875_REG_VSAW0 (0x32) // Vertical Start Point 0 of Active Window (VSAW0)
|
||||
#define RA8875_REG_VSAW1 (0x33) // Vertical Start Point 1 of Active Window (VSAW1)
|
||||
#define RA8875_REG_HEAW0 (0x34) // Horizontal End Point 0 of Active Window (HEAW0)
|
||||
#define RA8875_REG_HEAW1 (0x35) // Horizontal End Point 1 of Active Window (HEAW1)
|
||||
#define RA8875_REG_VEAW0 (0x36) // Vertical End Point 0 of Active Window (VEAW0)
|
||||
#define RA8875_REG_VEAW1 (0x37) // Vertical End Point 1 of Active Window (VEAW1)
|
||||
|
||||
// Cursor Setting Registers
|
||||
#define RA8875_REG_MWCR0 (0x40) // Memory Write Control Register 0 (MWCR0)
|
||||
#define RA8875_REG_MWCR1 (0x41) // Memory Write Control Register 1 (MWCR1)
|
||||
#define RA8875_REG_CURH0 (0x46) // Memory Write Cursor Horizontal Position Register 0 (CURH0)
|
||||
#define RA8875_REG_CURH1 (0x47) // Memory Write Cursor Horizontal Position Register 1 (CURH1)
|
||||
#define RA8875_REG_CURV0 (0x48) // Memory Write Cursor Vertical Position Register 0 (CURV0)
|
||||
#define RA8875_REG_CURV1 (0x49) // Memory Write Cursor Vertical Position Register 1 (CURV1)
|
||||
|
||||
// Block Transfer Engine(BTE) Control Registers
|
||||
#define RA8875_REG_LTPR0 (0x52) // Layer Transparency Register 0 (LTPR0)
|
||||
#define RA8875_REG_LTPR1 (0x53) // Layer Transparency Register 1 (LTPR1)
|
||||
|
||||
// Touch Panel Control Registers
|
||||
#define RA8875_REG_TPCR0 (0x70) // Touch Panel Control Register 0 (TPCR0)
|
||||
#define RA8875_REG_TPCR1 (0x71) // Touch Panel Control Register 1 (TPCR1)
|
||||
#define RA8875_REG_TPXH (0x72) // Touch Panel X High Byte Data Register (TPXH)
|
||||
#define RA8875_REG_TPYH (0x73) // Touch Panel Y High Byte Data Register (TPYH)
|
||||
#define RA8875_REG_TPXYL (0x74) // Touch Panel X/Y Low Byte Data Register (TPXYL)
|
||||
|
||||
// PLL Setting Registers
|
||||
#define RA8875_REG_PLLC1 (0x88) // PLL Control Register 1 (PLLC1)
|
||||
#define RA8875_REG_PLLC2 (0x89) // PLL Control Register 2 (PLLC2)
|
||||
|
||||
// Memory Clear Register
|
||||
#define RA8875_REG_MCLR (0x8E) // Memory Clear Control Register (MCLR)
|
||||
|
||||
// Interrupt Control Registers
|
||||
#define RA8875_REG_INTC1 (0xF0) // Interrupt Control Register1 (INTC1)
|
||||
#define RA8875_REG_INTC2 (0xF1) // Interrupt Control Register1 (INTC2)
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void ra8875_init(void);
|
||||
void ra8875_enable_backlight(bool backlight);
|
||||
void ra8875_enable_display(bool enable);
|
||||
void ra8875_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
|
||||
void ra8875_sleep_in(void);
|
||||
void ra8875_sleep_out(void);
|
||||
|
||||
uint8_t ra8875_read_cmd(uint8_t cmd);
|
||||
void ra8875_write_cmd(uint8_t cmd, uint8_t data);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*RA8875_H*/
|
55
lib/lvgl_esp32_drivers/lvgl_tft/sh1107.h
Normal file
@ -0,0 +1,55 @@
|
||||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SH1107_H
|
||||
#define SH1107_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define SH1107_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define SH1107_RST CONFIG_LV_DISP_PIN_RST
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void sh1107_init(void);
|
||||
void sh1107_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void sh1107_rounder(struct _disp_drv_t * disp_drv, lv_area_t *area);
|
||||
void sh1107_set_px_cb(struct _disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa);
|
||||
void sh1107_sleep_in(void);
|
||||
void sh1107_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*SH1107_H*/
|
57
lib/lvgl_esp32_drivers/lvgl_tft/ssd1306.h
Normal file
@ -0,0 +1,57 @@
|
||||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef SSD1306_H
|
||||
#define SSD1306_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define SSD1306_SDA CONFIG_LV_DISP_PIN_SDA
|
||||
#define SSD1306_SCL CONFIG_LV_DISP_PIN_SCL
|
||||
#define SSD1306_DISPLAY_ORIENTATION TFT_ORIENTATION_LANDSCAPE
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
void ssd1306_init(void);
|
||||
void ssd1306_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void ssd1306_rounder(struct _disp_drv_t * disp_drv, lv_area_t *area);
|
||||
void ssd1306_set_px_cb(struct _disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa);
|
||||
|
||||
void ssd1306_sleep_in(void);
|
||||
void ssd1306_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*SSD1306_H*/
|
149
lib/lvgl_esp32_drivers/lvgl_tft/st7735s.h
Normal file
@ -0,0 +1,149 @@
|
||||
/**
|
||||
* @file lv_templ.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef ST7735S_H
|
||||
#define ST7735S_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
// #define DISP_BUF_SIZE (CONFIG_LV_DISPLAY_WIDTH*CONFIG_LV_DISPLAY_HEIGHT)
|
||||
#define DISP_BUF_SIZE (LV_HOR_RES_MAX * 40)
|
||||
|
||||
#define ST7735S_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ST7735S_RST CONFIG_LV_DISP_PIN_RST
|
||||
|
||||
#define AXP192_SDA CONFIG_LV_AXP192_PIN_SDA
|
||||
#define AXP192_SCL CONFIG_LV_AXP192_PIN_SCL
|
||||
|
||||
#define ST7735S_INVERT_COLORS CONFIG_LV_INVERT_COLORS
|
||||
|
||||
// Defines are taken from
|
||||
// https://raw.githubusercontent.com/m5stack/M5StickC/master/src/utility/ST7735_Defines.h
|
||||
// and are modified to fit to the M5StickC device, and are taken from
|
||||
// https://github.com/adafruit/Adafruit-ST7735-Library
|
||||
//
|
||||
#define ST7735_GREENTAB160x80 // For 160 x 80 display (BGR, inverted, 26 / 1 offset)
|
||||
#define COLSTART 26
|
||||
#define ROWSTART 1
|
||||
|
||||
// Delay between some initialisation commands
|
||||
#define TFT_INIT_DELAY 0x80
|
||||
|
||||
#define TFT_NOP 0x00
|
||||
#define TFT_SWRST 0x01
|
||||
|
||||
#define TFT_CASET 0x2A
|
||||
#define TFT_PASET 0x2B
|
||||
#define TFT_RAMWR 0x2C
|
||||
|
||||
#define TFT_RAMRD 0x2E
|
||||
#define TFT_IDXRD 0x00
|
||||
|
||||
#define TFT_MADCTL 0x36
|
||||
#define TFT_MAD_MY 0x80
|
||||
#define TFT_MAD_MX 0x40
|
||||
#define TFT_MAD_MV 0x20
|
||||
#define TFT_MAD_ML 0x10
|
||||
#define TFT_MAD_BGR 0x08
|
||||
#define TFT_MAD_MH 0x04
|
||||
#define TFT_MAD_RGB 0x00
|
||||
|
||||
#define TFT_INVOFF 0x20
|
||||
#define TFT_INVON 0x21
|
||||
|
||||
// ST7735 specific commands used in init
|
||||
#define ST7735_NOP 0x00
|
||||
#define ST7735_SWRESET 0x01
|
||||
#define ST7735_RDDID 0x04
|
||||
#define ST7735_RDDST 0x09
|
||||
|
||||
#define ST7735_SLPIN 0x10
|
||||
#define ST7735_SLPOUT 0x11
|
||||
#define ST7735_PTLON 0x12
|
||||
#define ST7735_NORON 0x13
|
||||
|
||||
#define ST7735_INVOFF 0x20
|
||||
#define ST7735_INVON 0x21
|
||||
#define ST7735_DISPOFF 0x28
|
||||
#define ST7735_DISPON 0x29
|
||||
#define ST7735_CASET 0x2A
|
||||
#define ST7735_RASET 0x2B
|
||||
#define ST7735_RAMWR 0x2C
|
||||
#define ST7735_RAMRD 0x2E
|
||||
|
||||
#define ST7735_PTLAR 0x30
|
||||
#define ST7735_VSCRDEF 0x33
|
||||
#define ST7735_COLMOD 0x3A
|
||||
#define ST7735_MADCTL 0x36
|
||||
#define ST7735_VSCRSADD 0x37
|
||||
|
||||
#define ST7735_FRMCTR1 0xB1
|
||||
#define ST7735_FRMCTR2 0xB2
|
||||
#define ST7735_FRMCTR3 0xB3
|
||||
#define ST7735_INVCTR 0xB4
|
||||
#define ST7735_DISSET5 0xB6
|
||||
|
||||
#define ST7735_PWCTR1 0xC0
|
||||
#define ST7735_PWCTR2 0xC1
|
||||
#define ST7735_PWCTR3 0xC2
|
||||
#define ST7735_PWCTR4 0xC3
|
||||
#define ST7735_PWCTR5 0xC4
|
||||
#define ST7735_VMCTR1 0xC5
|
||||
|
||||
#define ST7735_RDID1 0xDA
|
||||
#define ST7735_RDID2 0xDB
|
||||
#define ST7735_RDID3 0xDC
|
||||
#define ST7735_RDID4 0xDD
|
||||
|
||||
#define ST7735_PWCTR6 0xFC
|
||||
|
||||
#define ST7735_GMCTRP1 0xE0
|
||||
#define ST7735_GMCTRN1 0xE1
|
||||
|
||||
#define ST77XX_MADCTL_MY 0x80
|
||||
#define ST77XX_MADCTL_MX 0x40
|
||||
#define ST77XX_MADCTL_MV 0x20
|
||||
#define ST77XX_MADCTL_ML 0x10
|
||||
#define ST77XX_MADCTL_RGB 0x00
|
||||
#define ST77XX_MADCTL_BGR 0x08
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
|
||||
void st7735s_init(void);
|
||||
void st7735s_flush(lv_disp_drv_t * drv, const lv_area_t * area, lv_color_t * color_map);
|
||||
void st7735s_enable_backlight(bool backlight);
|
||||
void st7735s_sleep_in(void);
|
||||
void st7735s_sleep_out(void);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*ST7735S_H*/
|
120
lib/lvgl_esp32_drivers/lvgl_tft/st7789.h
Normal file
@ -0,0 +1,120 @@
|
||||
/**
|
||||
* @file st7789.h
|
||||
*
|
||||
* Mostly taken from lbthomsen/esp-idf-littlevgl github.
|
||||
*/
|
||||
|
||||
#ifndef ST7789_H
|
||||
#define ST7789_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
#include "../lvgl_helpers.h"
|
||||
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#define ST7789_DC CONFIG_LV_DISP_PIN_DC
|
||||
#define ST7789_RST CONFIG_LV_DISP_PIN_RST
|
||||
#define ST7789_BCKL CONFIG_LV_DISP_PIN_BCKL
|
||||
|
||||
#define ST7789_ENABLE_BACKLIGHT_CONTROL CONFIG_LV_ENABLE_BACKLIGHT_CONTROL
|
||||
|
||||
#if CONFIG_LV_BACKLIGHT_ACTIVE_LVL
|
||||
#define ST7789_BCKL_ACTIVE_LVL 1
|
||||
#else
|
||||
#define ST7789_BCKL_ACTIVE_LVL 0
|
||||
#endif
|
||||
|
||||
/* ST7789 commands */
|
||||
#define ST7789_NOP 0x00
|
||||
#define ST7789_SWRESET 0x01
|
||||
#define ST7789_RDDID 0x04
|
||||
#define ST7789_RDDST 0x09
|
||||
|
||||
#define ST7789_RDDPM 0x0A // Read display power mode
|
||||
#define ST7789_RDD_MADCTL 0x0B // Read display MADCTL
|
||||
#define ST7789_RDD_COLMOD 0x0C // Read display pixel format
|
||||
#define ST7789_RDDIM 0x0D // Read display image mode
|
||||
#define ST7789_RDDSM 0x0E // Read display signal mode
|
||||
#define ST7789_RDDSR 0x0F // Read display self-diagnostic result (ST7789V)
|
||||
|
||||
#define ST7789_SLPIN 0x10
|
||||
#define ST7789_SLPOUT 0x11
|
||||
#define ST7789_PTLON 0x12
|
||||
#define ST7789_NORON 0x13
|
||||
|
||||
#define ST7789_INVOFF 0x20
|
||||
#define ST7789_INVON 0x21
|
||||
#define ST7789_GAMSET 0x26 // Gamma set
|
||||
#define ST7789_DISPOFF 0x28
|
||||
#define ST7789_DISPON 0x29
|
||||
#define ST7789_CASET 0x2A
|
||||
#define ST7789_RASET 0x2B
|
||||
#define ST7789_RAMWR 0x2C
|
||||
#define ST7789_RGBSET 0x2D // Color setting for 4096, 64K and 262K colors
|
||||
#define ST7789_RAMRD 0x2E
|
||||
|
||||
#define ST7789_PTLAR 0x30
|
||||
#define ST7789_VSCRDEF 0x33 // Vertical scrolling definition (ST7789V)
|
||||
#define ST7789_TEOFF 0x34 // Tearing effect line off
|
||||
#define ST7789_TEON 0x35 // Tearing effect line on
|
||||
#define ST7789_MADCTL 0x36 // Memory data access control
|
||||
#define ST7789_IDMOFF 0x38 // Idle mode off
|
||||
#define ST7789_IDMON 0x39 // Idle mode on
|
||||
#define ST7789_RAMWRC 0x3C // Memory write continue (ST7789V)
|
||||
#define ST7789_RAMRDC 0x3E // Memory read continue (ST7789V)
|
||||
#define ST7789_COLMOD 0x3A
|
||||
|
||||
#define ST7789_RAMCTRL 0xB0 // RAM control
|
||||
#define ST7789_RGBCTRL 0xB1 // RGB control
|
||||
#define ST7789_PORCTRL 0xB2 // Porch control
|
||||
#define ST7789_FRCTRL1 0xB3 // Frame rate control
|
||||
#define ST7789_PARCTRL 0xB5 // Partial mode control
|
||||
#define ST7789_GCTRL 0xB7 // Gate control
|
||||
#define ST7789_GTADJ 0xB8 // Gate on timing adjustment
|
||||
#define ST7789_DGMEN 0xBA // Digital gamma enable
|
||||
#define ST7789_VCOMS 0xBB // VCOMS setting
|
||||
#define ST7789_LCMCTRL 0xC0 // LCM control
|
||||
#define ST7789_IDSET 0xC1 // ID setting
|
||||
#define ST7789_VDVVRHEN 0xC2 // VDV and VRH command enable
|
||||
#define ST7789_VRHS 0xC3 // VRH set
|
||||
#define ST7789_VDVSET 0xC4 // VDV setting
|
||||
#define ST7789_VCMOFSET 0xC5 // VCOMS offset set
|
||||
#define ST7789_FRCTR2 0xC6 // FR Control 2
|
||||
#define ST7789_CABCCTRL 0xC7 // CABC control
|
||||
#define ST7789_REGSEL1 0xC8 // Register value section 1
|
||||
#define ST7789_REGSEL2 0xCA // Register value section 2
|
||||
#define ST7789_PWMFRSEL 0xCC // PWM frequency selection
|
||||
#define ST7789_PWCTRL1 0xD0 // Power control 1
|
||||
#define ST7789_VAPVANEN 0xD2 // Enable VAP/VAN signal output
|
||||
#define ST7789_CMD2EN 0xDF // Command 2 enable
|
||||
#define ST7789_PVGAMCTRL 0xE0 // Positive voltage gamma control
|
||||
#define ST7789_NVGAMCTRL 0xE1 // Negative voltage gamma control
|
||||
#define ST7789_DGMLUTR 0xE2 // Digital gamma look-up table for red
|
||||
#define ST7789_DGMLUTB 0xE3 // Digital gamma look-up table for blue
|
||||
#define ST7789_GATECTRL 0xE4 // Gate control
|
||||
#define ST7789_SPI2EN 0xE7 // SPI2 enable
|
||||
#define ST7789_PWCTRL2 0xE8 // Power control 2
|
||||
#define ST7789_EQCTRL 0xE9 // Equalize time control
|
||||
#define ST7789_PROMCTRL 0xEC // Program control
|
||||
#define ST7789_PROMEN 0xFA // Program mode enable
|
||||
#define ST7789_NVMSET 0xFC // NVM setting
|
||||
#define ST7789_PROMACT 0xFE // Program action
|
||||
|
||||
void st7789_init(void);
|
||||
void st7789_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
void st7789_enable_backlight(bool backlight);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* ST7789_H */
|
39
lib/lvgl_esp32_drivers/lvgl_tft/uc8151d.h
Normal file
@ -0,0 +1,39 @@
|
||||
/**
|
||||
@file uc8151d.h
|
||||
@brief GoodDisplay GDEW0154M09 e-paper display w/ FitiPower JD79653A
|
||||
@version 1.0
|
||||
@date 2020-08-28
|
||||
@author Jackson Ming Hu <huming2207@gmail.com>
|
||||
|
||||
|
||||
@section LICENSE
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Jackson Ming Hu
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef LVGL_DEMO_UC8151D_H
|
||||
#define LVGL_DEMO_UC8151D_H
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
void uc8151d_init();
|
||||
void uc8151d_lv_set_fb_cb(struct _disp_drv_t *disp_drv, uint8_t *buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y,
|
||||
lv_color_t color, lv_opa_t opa);
|
||||
|
||||
void uc8151d_lv_rounder_cb(struct _disp_drv_t *disp_drv, lv_area_t *area);
|
||||
void uc8151d_lv_fb_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map);
|
||||
|
||||
#endif //LVGL_DEMO_UC8151D_H
|
52
lib/lvgl_esp32_drivers/lvgl_touch/touch_driver.h
Normal file
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* @file touch_driver.h
|
||||
*/
|
||||
|
||||
#ifndef TOUCH_DRIVER_H
|
||||
#define TOUCH_DRIVER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_LV_TOUCH_CONTROLLER_XPT2046)
|
||||
#include "xpt2046.h"
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_FT6X06)
|
||||
#include "ft6x36.h"
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_STMPE610)
|
||||
#include "stmpe610.h"
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_ADCRAW)
|
||||
#include "adcraw.h"
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_FT81X)
|
||||
#include "FT81x.h"
|
||||
#elif defined (CONFIG_LV_TOUCH_CONTROLLER_RA8875)
|
||||
#include "ra8875_touch.h"
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
void touch_driver_init(void);
|
||||
bool touch_driver_read(lv_indev_drv_t *drv, lv_indev_data_t *data);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* TOUCH_DRIVER_H */
|
||||
|
36
lib/lvgl_esp32_drivers/lvgl_touch/tp_i2c.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright © 2020 Wolfgang Christl
|
||||
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
* software and associated documentation files (the “Software”), to deal in the Software
|
||||
* without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||
* publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
|
||||
* to whom the Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all copies or
|
||||
* substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
* PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef __TS_H
|
||||
#define __TS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
esp_err_t i2c_master_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __TS_H */
|
45
lib/lvgl_esp32_drivers/lvgl_touch/tp_spi.h
Normal file
@ -0,0 +1,45 @@
|
||||
/**
|
||||
* @file tp_spi.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TP_SPI_H
|
||||
#define TP_SPI_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdint.h>
|
||||
#include <driver/spi_master.h>
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
**********************/
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
void tp_spi_add_device(spi_host_device_t host);
|
||||
void tp_spi_add_device_config(spi_host_device_t host, spi_device_interface_config_t *config);
|
||||
void tp_spi_xchg(uint8_t* data_send, uint8_t* data_recv, uint8_t byte_count);
|
||||
void tp_spi_write_reg(uint8_t* data, uint8_t byte_count);
|
||||
void tp_spi_read_reg(uint8_t reg, uint8_t* data, uint8_t byte_count);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /*TP_SPI_H*/
|
89
maps/bin/astc_conv.py
Normal file
@ -0,0 +1,89 @@
|
||||
# uncompyle6 version 3.7.4
|
||||
# Python bytecode 3.7 (3394)
|
||||
# Decompiled from: Python 3.7.5 (tags/v3.7.5:5c02a39a0b, Oct 15 2019, 00:11:34) [MSC v.1916 64 bit (AMD64)]
|
||||
# Embedded file name: astc_conv.py
|
||||
from PIL import Image, ImageChops
|
||||
import array, tempfile, os, struct
|
||||
|
||||
def astc_dims(fmt):
|
||||
if isinstance(fmt, int):
|
||||
return astc_dims({37808:'COMPRESSED_RGBA_ASTC_4x4_KHR',
|
||||
37809:'COMPRESSED_RGBA_ASTC_5x4_KHR',
|
||||
37810:'COMPRESSED_RGBA_ASTC_5x5_KHR',
|
||||
37811:'COMPRESSED_RGBA_ASTC_6x5_KHR',
|
||||
37812:'COMPRESSED_RGBA_ASTC_6x6_KHR',
|
||||
37813:'COMPRESSED_RGBA_ASTC_8x5_KHR',
|
||||
37814:'COMPRESSED_RGBA_ASTC_8x6_KHR',
|
||||
37815:'COMPRESSED_RGBA_ASTC_8x8_KHR',
|
||||
37816:'COMPRESSED_RGBA_ASTC_10x5_KHR',
|
||||
37817:'COMPRESSED_RGBA_ASTC_10x6_KHR',
|
||||
37818:'COMPRESSED_RGBA_ASTC_10x8_KHR',
|
||||
37819:'COMPRESSED_RGBA_ASTC_10x10_KHR',
|
||||
37820:'COMPRESSED_RGBA_ASTC_12x10_KHR',
|
||||
37821:'COMPRESSED_RGBA_ASTC_12x12_KHR'}[fmt])
|
||||
dims = str(fmt).split('_')[3]
|
||||
return [int(c) for c in dims.split('x')]
|
||||
|
||||
|
||||
def tile(f):
|
||||
_, w, h, _, iw, _, ih, _, _, _ = struct.unpack('<IBBBHBHBHB', f.read(16))
|
||||
bw, bh = (iw + (w - 1)) // w, (ih + (h - 1)) // h
|
||||
d = f.read()
|
||||
return (bw, bh, tile2(d, bw, bh))
|
||||
|
||||
|
||||
def tile2(d, bw, bh):
|
||||
assert len(d) == 16 * bw * bh
|
||||
fe = [d[i:i + 16] for i in range(0, len(d), 16)]
|
||||
assert len(fe) == bw * bh
|
||||
r = []
|
||||
for j in range(0, bh - 1, 2):
|
||||
for i in range(0, bw, 2):
|
||||
if i < bw - 1:
|
||||
r += [
|
||||
fe[(bw * j + i)],
|
||||
fe[(bw * (j + 1) + i)],
|
||||
fe[(bw * (j + 1) + (i + 1))],
|
||||
fe[(bw * j + (i + 1))]]
|
||||
else:
|
||||
r += [
|
||||
fe[(bw * j + i)],
|
||||
fe[(bw * (j + 1) + i)]]
|
||||
|
||||
if bh & 1:
|
||||
r += fe[bw * (bh - 1):]
|
||||
assert len(r) == bh * bw
|
||||
return (b'').join(r)
|
||||
|
||||
|
||||
def pad(im, mult):
|
||||
w = (im.size[0] + (mult - 1)) // mult * mult
|
||||
n = Image.new('RGBA', (w, im.size[1]))
|
||||
n.paste(im, (0, 0))
|
||||
return n
|
||||
|
||||
|
||||
def round_up(n, d):
|
||||
return d * ((n + d - 1) // d)
|
||||
|
||||
|
||||
def convert(im, fmt='COMPRESSED_RGBA_ASTC_4x4_KHR', effort='thorough', astc_encode='astcenc', astc_opt=''):
|
||||
w, h = astc_dims(fmt)
|
||||
ni = Image.new('RGBA', (round_up(im.size[0], w), round_up(im.size[1], h)))
|
||||
ni.paste(im, (0, 0))
|
||||
png = tempfile.NamedTemporaryFile(delete=False)
|
||||
#ni.transpose(Image.FLIP_TOP_BOTTOM).save(png, 'png')
|
||||
ni.save(png, 'png')
|
||||
png.close()
|
||||
astc = tempfile.NamedTemporaryFile(suffix='.astc',delete=False)
|
||||
os.system('"%s" -cl %s %s %dx%d -%s -silent %s' % (astc_encode, png.name, astc.name, w, h, effort, astc_opt))
|
||||
bw, bh, d0 = tile(open(astc.name, 'rb'))
|
||||
astc.close()
|
||||
if os.path.exists(astc.name):
|
||||
os.unlink(astc.name)
|
||||
if os.path.exists(png.name):
|
||||
os.unlink(png.name)
|
||||
stride = 16 * bw
|
||||
dd = array.array('B', d0)
|
||||
return (
|
||||
stride, ni.size, dd)
|
1
maps/bin/build_image.bat
Normal file
@ -0,0 +1 @@
|
||||
C:\Applications\Python37\python build_image.py maps.bin zulu24.bin picasso.bin
|
79
maps/bin/build_image.py
Normal file
@ -0,0 +1,79 @@
|
||||
import json
|
||||
import msgpack
|
||||
import struct
|
||||
import sys
|
||||
import os.path
|
||||
import io
|
||||
from os import path
|
||||
|
||||
def pad(o, m):
|
||||
if m>0 :
|
||||
barray = bytearray(m)
|
||||
for i in range(0,m):
|
||||
barray[i] = 0xFF
|
||||
o.write(barray)
|
||||
return
|
||||
|
||||
|
||||
def alignFile(o, position, aligment):
|
||||
m = position % aligment
|
||||
if m>0 :
|
||||
m = aligment-m
|
||||
barray = bytearray(m)
|
||||
for i in range(0,m):
|
||||
barray[i] = 0xFF
|
||||
o.write(barray)
|
||||
return m
|
||||
|
||||
|
||||
def main():
|
||||
output = sys.argv[1]
|
||||
maps = []
|
||||
maps_meta = []
|
||||
position = 0
|
||||
with io.open(output, 'wb') as o:
|
||||
for i, arg in enumerate(sys.argv):
|
||||
if i>1:
|
||||
maps.append(arg)
|
||||
for map in maps:
|
||||
with open(map, mode='rb') as file:
|
||||
mapContent = file.read()
|
||||
with open(map+'.json') as f:
|
||||
mapMeta = json.load(f)
|
||||
mapMeta["base_address"] = position
|
||||
o.write(mapContent)
|
||||
position += len(mapContent)
|
||||
position += alignFile(o,position,4096)
|
||||
maps_meta.append(mapMeta)
|
||||
|
||||
with io.open(output+'.json', 'w') as f:
|
||||
f.write(json.dumps(maps_meta,indent=6))
|
||||
|
||||
with io.open(output+'.dat', 'wb') as f:
|
||||
cnt = len(maps_meta)
|
||||
f.write(struct.pack('<b',cnt))
|
||||
i = 0
|
||||
pos = 1+cnt*60
|
||||
for map in maps_meta:
|
||||
f.seek(pos)
|
||||
baseAddress = map['base_address']
|
||||
f.write(struct.pack('<b',len(map['tile_matrix'])))
|
||||
for zl in map['tile_matrix']:
|
||||
b = zl['bounds']
|
||||
ps = zl['pixel_size']
|
||||
ts = zl['tile_size']
|
||||
f.write(struct.pack('<H4f4f',int(zl['id']),b[0],b[1],b[2],b[3],ps[0],ps[1],ts[0],ts[1]))
|
||||
f.write(struct.pack('<H',len(zl['images'])))
|
||||
for image in zl['images']:
|
||||
s = image['size']
|
||||
b = image['bounds']
|
||||
f.write(struct.pack('<2I6H2f4f',image['address']+baseAddress,image['image_size'],s[0],s[1],image['image_stride'],image['image_fmt'],image['x'],image['y'],b[2]-b[0],b[1]-b[3],b[0],b[1],b[2],b[3]))
|
||||
endPos = f.seek(0,io.SEEK_CUR)
|
||||
|
||||
f.seek(1+i*60)
|
||||
b = map['bounds']
|
||||
f.write(struct.pack('<32s4fIII',bytes(map['name'], 'utf-8'),b[0],b[1],b[2],b[3],map['base_address'],pos,endPos-pos))
|
||||
pos = endPos
|
||||
i+=1
|
||||
|
||||
main()
|
2
maps/bin/build_map.bat
Normal file
@ -0,0 +1,2 @@
|
||||
C:\Applications\Python37\python build_map.py ../zulu24/zulu24/ zulu24.bin
|
||||
C:\Applications\Python37\python build_map.py ../picasso/tiles/ picasso.bin
|
121
maps/bin/build_map.py
Normal file
@ -0,0 +1,121 @@
|
||||
import json
|
||||
import sys
|
||||
import os.path
|
||||
import io
|
||||
import astc_conv
|
||||
from os import path
|
||||
from PIL import Image
|
||||
|
||||
def pad(o, m):
|
||||
if m>0 :
|
||||
barray = bytearray(m)
|
||||
for i in range(0,m):
|
||||
barray[i] = 0xFF
|
||||
o.write(barray)
|
||||
return
|
||||
|
||||
|
||||
def alignFile(o, position, aligment):
|
||||
m = position % aligment
|
||||
if m>0 :
|
||||
m = aligment-m
|
||||
barray = bytearray(m)
|
||||
for i in range(0,m):
|
||||
barray[i] = 0xFF
|
||||
o.write(barray)
|
||||
return m
|
||||
|
||||
|
||||
def loadImage(filenameBase,x,y):
|
||||
filename = filenameBase+str(x)+'/'+str(y)+'.png'
|
||||
if path.exists(filename):
|
||||
im=Image.open(filename)
|
||||
return im
|
||||
return None
|
||||
|
||||
def main():
|
||||
folder = sys.argv[1]
|
||||
output = sys.argv[2]
|
||||
print('Processing '+folder)
|
||||
tmeta = {}
|
||||
position = 0
|
||||
with open(folder+'/metadata.json') as f:
|
||||
meta = json.load(f)
|
||||
tmeta['name'] = meta['name']
|
||||
tmeta['bounds'] = [meta['extent'][0],meta['extent'][3],meta['extent'][2],meta['extent'][1]]
|
||||
tmeta['tile_matrix'] = []
|
||||
with io.open(output, 'wb') as o:
|
||||
for zl in meta['tile_matrix']:
|
||||
zitem = {}
|
||||
zitem['id'] = zl['id']
|
||||
zitem['bounds'] = [zl['origin'][0],zl['origin'][1],zl['extent'][2],zl['extent'][1]]
|
||||
zitem['images'] = []
|
||||
zitem['pixel_size'] = zl['pixel_size']
|
||||
zitem['tile_size'] = [zl['pixel_size'][0]*zl['tile_size'][0],zl['pixel_size'][1]*zl['tile_size'][1]]
|
||||
xc = zl['origin'][0]
|
||||
yc = zl['origin'][1]
|
||||
xp = zl['pixel_size'][0]
|
||||
yp = zl['pixel_size'][1]
|
||||
fmt = 37808
|
||||
hasImages = False
|
||||
if zl['matrix_size'][0]*zl['matrix_size'][1] >=8:
|
||||
fmt = 37812
|
||||
for x in range(zl['matrix_size'][0]):
|
||||
for y in range(zl['matrix_size'][1]):
|
||||
filenameBase = folder+'/'+zl['id']+'/'
|
||||
filename = filenameBase+str(x)+'/'+str(y)+'.png'
|
||||
if path.exists(filename):
|
||||
im=Image.open(filename)
|
||||
expand = 1
|
||||
nim = Image.new('RGBA',(im.size[0]+expand*2,im.size[1]+expand*2))
|
||||
nim.putalpha(0)
|
||||
nim.paste(im,(expand,expand))
|
||||
|
||||
pim = loadImage(filenameBase,x,y-1)
|
||||
if pim!=None:
|
||||
nim.paste(pim.crop((0,pim.size[1]-expand,pim.size[0],pim.size[1])),(expand,0))
|
||||
|
||||
pim = loadImage(filenameBase,x,y+1)
|
||||
if pim!=None:
|
||||
nim.paste(pim.crop((0,0,pim.size[0],expand)),(expand,nim.size[1]-expand))
|
||||
|
||||
pim = loadImage(filenameBase,x-1,y)
|
||||
if pim!=None:
|
||||
nim.paste(pim.crop((pim.size[0]-expand,0,pim.size[0],pim.size[1])),(0,expand))
|
||||
|
||||
pim = loadImage(filenameBase,x+1,y)
|
||||
if pim!=None:
|
||||
nim.paste(pim.crop((0,0,expand,pim.size[1])),(nim.size[0]-expand,expand))
|
||||
|
||||
rsize = im.size
|
||||
im = nim
|
||||
stride,asize,astc = astc_conv.convert(im,fmt)
|
||||
if len(astc)>0:
|
||||
hasImages = True
|
||||
fileinfo = {}
|
||||
fileinfo['size'] = im.size
|
||||
fileinfo['bounds'] = [xc+x*rsize[0]*xp-xp*expand,yc+y*rsize[1]*yp-yp*expand,xc+(x+1)*rsize[0]*xp+xp*expand,yc+(y+1)*rsize[1]*yp+yp*expand]
|
||||
fileinfo['x'] = x
|
||||
fileinfo['y'] = y
|
||||
fileinfo['address'] = position
|
||||
fileinfo['image_stride'] = stride
|
||||
fileinfo['image_size'] = len(astc)
|
||||
fileinfo['image_fmt'] = fmt
|
||||
o.write(astc)
|
||||
with open(filename+'.bin','wb') as f:
|
||||
f.write(astc)
|
||||
position += len(astc)
|
||||
pad(o,64)
|
||||
position += 64
|
||||
position += alignFile(o,position,64)
|
||||
zitem['images'].append(fileinfo)
|
||||
if hasImages==True:
|
||||
tmeta['tile_matrix'].append(zitem)
|
||||
alignFile(o,position,4096)
|
||||
with io.open(output+'.json', 'w', encoding='utf-8') as f:
|
||||
f.write(json.dumps(tmeta, indent=4))
|
||||
|
||||
|
||||
|
||||
|
||||
main()
|
36
maps/bin/calc_tiles.py
Normal file
@ -0,0 +1,36 @@
|
||||
import json
|
||||
import sys
|
||||
import os.path
|
||||
import io
|
||||
from os import path
|
||||
from PIL import Image
|
||||
|
||||
def main():
|
||||
folder = sys.argv[1]
|
||||
print('Processing '+folder)
|
||||
with open(folder+'/metadata.json') as f:
|
||||
meta = json.load(f)
|
||||
for zl in meta['tile_matrix']:
|
||||
xc = zl['origin'][0]
|
||||
yc = zl['origin'][1]
|
||||
xp = zl['pixel_size'][0]
|
||||
yp = zl['pixel_size'][1]
|
||||
for x in range(zl['matrix_size'][0]):
|
||||
yc = zl['origin'][1]
|
||||
for y in range(zl['matrix_size'][1]):
|
||||
filename = folder+'/'+zl['id']+'/'+str(x)+'/'+str(y)+'.png'
|
||||
if path.exists(filename):
|
||||
fileprops = {}
|
||||
im=Image.open(filename)
|
||||
fileprops['size'] = im.size
|
||||
fileprops['bounds'] = [xc,yc,xc+im.size[0]*xp,yc+im.size[1]*yp]
|
||||
xn = xc + im.size[0]*xp
|
||||
yc = yc + im.size[1]*yp
|
||||
with io.open(filename+'.json', 'w', encoding='utf-8') as f:
|
||||
f.write(json.dumps(fileprops, ensure_ascii=False))
|
||||
xc = xn
|
||||
|
||||
|
||||
|
||||
|
||||
main()
|
338
maps/bin/map_image_tool.py
Normal file
@ -0,0 +1,338 @@
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
import os.path
|
||||
import io
|
||||
from os import path
|
||||
import serial
|
||||
import time
|
||||
import struct
|
||||
import ntpath
|
||||
|
||||
show_r = False
|
||||
PMC_SCREEN_FLASH_START = 1
|
||||
PMC_SCREEN_FLASH_START_RESPONSE=2
|
||||
PMC_SCREEN_FLASH_END =3
|
||||
PMC_SCREEN_FLASH_WRITE =4
|
||||
PMC_SCREEN_FLASH_WRITE_COMPRESSED =14
|
||||
PMC_SCREEN_FLASH_READ =5
|
||||
PMC_SCREEN_FLASH_READ_RESPONSE =6
|
||||
PMC_SCREEN_FLASH_META_START =7
|
||||
PMC_SCREEN_FLASH_META_DATA =8
|
||||
PMC_SCREEN_FLASH_META_END =9
|
||||
PMC_SCREEN_FLASH_FILE_START =10
|
||||
PMC_SCREEN_FLASH_FILE_DATA =11
|
||||
PMC_SCREEN_FLASH_FILE_END =12
|
||||
|
||||
PMC_SCREEN_FLASH_EXIT =99
|
||||
PMC_SCREEN_FLASH_ACK =100
|
||||
PMC_SCREEN_FLASH_ERR =101
|
||||
SERIAL_APP_1=0x85
|
||||
SERIAL_APP_2=0x3B
|
||||
SERIAL_APP_3=0xDE
|
||||
SERIAL_APP_4=0x02
|
||||
|
||||
def csum(dd,extra):
|
||||
result = extra & 0xFF
|
||||
for b in dd:
|
||||
result ^= (b & 0xFF)
|
||||
return result
|
||||
|
||||
def readPacket(ser,timeout=2):
|
||||
global show_r
|
||||
packet = bytearray([])
|
||||
readState = 0
|
||||
size = 0
|
||||
startTime = time.time()
|
||||
while True:
|
||||
if ser.inWaiting()>0:
|
||||
b = ser.read(1)[0]
|
||||
if(show_r==True):
|
||||
print(hex(b), end ="", flush=True)
|
||||
#print(bytearray([b]).decode('ascii'), end ="", flush=True)
|
||||
if readState==0:
|
||||
if b==SERIAL_APP_1:
|
||||
readState = 1
|
||||
elif readState==1:
|
||||
if b==SERIAL_APP_2:
|
||||
readState = 2
|
||||
else:
|
||||
readState = 0
|
||||
elif readState==2:
|
||||
if b==SERIAL_APP_3:
|
||||
readState = 3
|
||||
else:
|
||||
readState = 0
|
||||
elif readState==3:
|
||||
if b==SERIAL_APP_4:
|
||||
readState = 4
|
||||
else:
|
||||
readState = 0
|
||||
elif readState==4:
|
||||
size = b
|
||||
readState = 5
|
||||
elif readState==5:
|
||||
size = size + (b<<8)
|
||||
if size<8192:
|
||||
readState = 6
|
||||
else:
|
||||
readState = 0
|
||||
elif readState==6:
|
||||
if len(packet)<(size-1):
|
||||
packet.extend([b])
|
||||
else:
|
||||
cs = csum(packet,0)
|
||||
if b==cs:
|
||||
return packet
|
||||
else:
|
||||
print('BAD CS '+hex(cs)+' '+hex(b)+' '+packet.hex())
|
||||
return bytearray([])
|
||||
else:
|
||||
time.sleep(0.001)
|
||||
if(time.time()-startTime)>=timeout:
|
||||
print('Timeout')
|
||||
#show_r = True
|
||||
return bytearray([])
|
||||
|
||||
return bytearray([])
|
||||
|
||||
def createSerialPacket(cmd,dd):
|
||||
result = bytearray([SERIAL_APP_1,SERIAL_APP_2,SERIAL_APP_3,SERIAL_APP_4])
|
||||
s = len(dd)+2
|
||||
result.extend([s & 0xFF,(s>>8) & 0xFF,cmd])
|
||||
result.extend(dd)
|
||||
result.extend([csum(dd,cmd)])
|
||||
#print(result.hex())
|
||||
return result
|
||||
|
||||
|
||||
def writeImage(ser,imagedata,metadata):
|
||||
print("Writing image...")
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_START,bytearray([])))
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]==PMC_SCREEN_FLASH_START_RESPONSE:
|
||||
s = struct.Struct('<BI')
|
||||
resp = s.unpack(packet)
|
||||
print("Start flash result "+str(resp[1]))
|
||||
if resp[1]==0:
|
||||
print("Writing flash")
|
||||
cnt = int(len(imagedata)/4096)
|
||||
sector = bytearray(4096+6)
|
||||
sector[0] = 00
|
||||
sector[1] = 0x10
|
||||
for i in range(cnt):
|
||||
for j in range(4096):
|
||||
if(j%2==0):
|
||||
sector[j+6] = imagedata[i*4096+j] ^ 0xAA
|
||||
else:
|
||||
sector[j+6] = imagedata[i*4096+j] ^ 0x55
|
||||
address = 4096+i*4096
|
||||
sector[2] = address & 0xFF
|
||||
sector[3] = (address >> 8) & 0xFF
|
||||
sector[4] = (address >> 16) & 0xFF
|
||||
sector[5] = (address >> 24) & 0xFF
|
||||
while 1:
|
||||
print("Sector "+str(cnt)+"/"+str(i)+".", end ="", flush=True)
|
||||
packet = createSerialPacket(PMC_SCREEN_FLASH_WRITE_COMPRESSED,sector)
|
||||
spackets = [packet[i:i+1512] for i in range(0, len(packet), 1512)]
|
||||
#spackets = [packet[i:i+32] for i in range(0, len(packet), 32)]
|
||||
for p in spackets:
|
||||
ser.write(p)
|
||||
ser.flush()
|
||||
time.sleep(0.0001)
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]!=PMC_SCREEN_FLASH_ACK:
|
||||
print("ERR "+hex(packet[1]))
|
||||
else:
|
||||
print("OK")
|
||||
break
|
||||
time.sleep(0.02)
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_END,bytearray([])))
|
||||
readPacket(ser)
|
||||
else:
|
||||
print("Error")
|
||||
print("Writing meta...")
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_META_START,bytearray([])))
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]==PMC_SCREEN_FLASH_ACK:
|
||||
|
||||
cnt = len(metadata)
|
||||
i = 0
|
||||
while cnt>0:
|
||||
if cnt>512:
|
||||
s = 512
|
||||
else:
|
||||
s = cnt
|
||||
cnt -= s
|
||||
sector = metadata[i:(i+s)]
|
||||
while 1:
|
||||
print("Sector "+str(i)+".", end ="", flush=True)
|
||||
packet = createSerialPacket(PMC_SCREEN_FLASH_META_DATA,sector)
|
||||
ser.write(packet)
|
||||
ser.flush()
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]!=PMC_SCREEN_FLASH_ACK:
|
||||
print("ERR")
|
||||
else:
|
||||
print("OK")
|
||||
break
|
||||
time.sleep(0.01)
|
||||
i += s
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_META_END,bytearray([])))
|
||||
packet = readPacket(ser)
|
||||
else:
|
||||
print("Error")
|
||||
|
||||
print("Done.")
|
||||
return
|
||||
|
||||
def writeFile(ser,imagedata,filename):
|
||||
print("Writing file...")
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_FILE_START,bytearray(filename.encode())+ b'\x00'))
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]==PMC_SCREEN_FLASH_ACK:
|
||||
|
||||
cnt = len(imagedata)
|
||||
i = 0
|
||||
while cnt>0:
|
||||
if cnt>512:
|
||||
s = 512
|
||||
else:
|
||||
s = cnt
|
||||
cnt -= s
|
||||
sector = imagedata[i:(i+s)]
|
||||
while 1:
|
||||
print("Sector "+str(i)+".", end ="", flush=True)
|
||||
packet = createSerialPacket(PMC_SCREEN_FLASH_FILE_DATA,sector)
|
||||
ser.write(packet)
|
||||
ser.flush()
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]!=PMC_SCREEN_FLASH_ACK:
|
||||
print("ERR")
|
||||
else:
|
||||
print("OK")
|
||||
break
|
||||
time.sleep(0.01)
|
||||
i += s
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_FILE_END,bytearray([])))
|
||||
packet = readPacket(ser)
|
||||
else:
|
||||
print("Error")
|
||||
|
||||
print("Done.")
|
||||
return
|
||||
|
||||
def readImage(ser,size):
|
||||
print("Reading image...")
|
||||
result = bytearray([])
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_START,bytearray([])))
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]==PMC_SCREEN_FLASH_START_RESPONSE:
|
||||
s = struct.Struct('<BI')
|
||||
resp = s.unpack(packet)
|
||||
print("Start flash result "+str(resp[1]))
|
||||
if resp[1]==0:
|
||||
print("Reading flash")
|
||||
cnt = int(size*1024/4096)
|
||||
sector = bytearray(6)
|
||||
sector[0] = 00
|
||||
sector[1] = 0x10
|
||||
for i in range(cnt):
|
||||
address = 4096+i*4096
|
||||
sector[2] = address & 0xFF
|
||||
sector[3] = (address >> 8) & 0xFF
|
||||
sector[4] = (address >> 16) & 0xFF
|
||||
sector[5] = (address >> 24) & 0xFF
|
||||
while 1:
|
||||
print("Sector "+str(i)+".", end ="", flush=True)
|
||||
packet = createSerialPacket(PMC_SCREEN_FLASH_READ,sector)
|
||||
ser.write(packet)
|
||||
packet = readPacket(ser)
|
||||
if len(packet)>0:
|
||||
if packet[0]!=PMC_SCREEN_FLASH_READ_RESPONSE:
|
||||
print("ERR")
|
||||
else:
|
||||
print("OK")
|
||||
result.extend(packet[1:])
|
||||
break
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_END,bytearray([])))
|
||||
else:
|
||||
print("Error")
|
||||
print("Done.")
|
||||
return result
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description='Airsoft Tracker Maps Image Tool')
|
||||
parser.add_argument('image', help='Image file name')
|
||||
parser.add_argument('-c','--comm', required=False, help='COM port')
|
||||
parser.add_argument('-r','--read',action='store_true', help='Read image')
|
||||
parser.add_argument('-s','--size',type=int, default=16*1024, help='Read size in KB')
|
||||
parser.add_argument('-w','--wfile',action='store_true', help='Write file')
|
||||
args = parser.parse_args()
|
||||
comm = args.comm
|
||||
if not comm:
|
||||
print("Looking for COM port")
|
||||
import serial.tools.list_ports as list_ports
|
||||
for each_port in reversed(sorted(list_ports.comports())):
|
||||
if each_port[1].find("Silicon Labs")>=0:
|
||||
comm = each_port[0]
|
||||
print("Comm port found "+comm)
|
||||
break
|
||||
|
||||
imagefile = args.image
|
||||
readSize = args.size
|
||||
ser = serial.Serial(comm,baudrate=115200)
|
||||
ser.set_buffer_size(rx_size = 8192, tx_size=256)
|
||||
|
||||
print("Connecting", end ="", flush=True)
|
||||
while True:
|
||||
if ser.inWaiting()>0:
|
||||
ser.read(ser.inWaiting())
|
||||
print(".", end ="", flush=True)
|
||||
values = bytearray([0x92,0x5A])
|
||||
ser.write(values)
|
||||
startTime = time.time()
|
||||
while (time.time()-startTime)<2:
|
||||
if ser.inWaiting()>0:
|
||||
b = ser.read(1)[0]
|
||||
#print(bytearray([b]).decode('ascii'), end ="", flush=True)
|
||||
if b==0x07:
|
||||
print("")
|
||||
print("Connected")
|
||||
time.sleep(0.01)
|
||||
values = bytearray([0x07])
|
||||
ser.write(values)
|
||||
ser.baudrate = 921600
|
||||
time.sleep(1)
|
||||
|
||||
if args.read==True:
|
||||
imagedata = readImage(ser,readSize)
|
||||
with open(imagefile,"wb") as f:
|
||||
f.write(imagedata)
|
||||
else:
|
||||
if args.wfile==True:
|
||||
with open(imagefile,"rb") as f:
|
||||
imagedata = f.read()
|
||||
writeFile(ser,imagedata,ntpath.basename(imagefile))
|
||||
else:
|
||||
with open(imagefile,"rb") as f:
|
||||
imagedata = f.read()
|
||||
with open(imagefile+'.dat',"rb") as f:
|
||||
metadata = f.read()
|
||||
writeImage(ser,imagedata,metadata)
|
||||
|
||||
ser.write(createSerialPacket(PMC_SCREEN_FLASH_EXIT,bytearray([])))
|
||||
return
|
||||
else:
|
||||
time.sleep(0.01)
|
||||
|
||||
|
||||
main()
|
2948
maps/bin/maps.bin.json
Normal file
1832
maps/bin/picasso.bin.json
Normal file
1
maps/bin/read_image.bat
Normal file
@ -0,0 +1 @@
|
||||
C:\Applications\Python37\python map_image_tool.py -c COM22 maps_old.bin -r -s 1024
|
1
maps/bin/write_image.bat
Normal file
@ -0,0 +1 @@
|
||||
C:\Applications\Python37\python map_image_tool.py maps.bin
|
2
maps/bin/write_points.bat
Normal file
@ -0,0 +1,2 @@
|
||||
C:\Applications\Python37\python map_image_tool.py ../zulu24/p_zulu24.json -w
|
||||
C:\Applications\Python37\python map_image_tool.py ../picasso/p_picasso.json -w
|
1112
maps/bin/zulu24.bin.json
Normal file
13
maps/picasso/p_picasso.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"points": [
|
||||
{ "type": 0, "color": 16776960, "name": "Office", "coordinates": [ -74.91830945685942,39.73604280105904 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Beach", "coordinates": [ -74.91917130906181,39.73630893810271 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Kill Box", "coordinates": [ -74.91902077980406,39.7355752412219 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Zero", "coordinates": [ -74.9189932630288,39.73718782439224 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Ridge", "coordinates": [ -74.91831533834912,39.73829361377636 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Calypso", "coordinates": [ -74.91990159096781,39.73872089766842 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Maze", "coordinates": [ -74.91634869800787,39.73697446559213 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Congo", "coordinates": [ -74.91602222829101,39.73763561652714 ] },
|
||||
{ "type": 0, "color": 16776960, "name": "Trenches", "coordinates": [ -74.91581248157634,39.73862186136292 ] }
|
||||
]
|
||||
}
|
BIN
maps/picasso/picasso.tif
Normal file
32
maps/picasso/picasso.tif.aux.xml
Normal file
@ -0,0 +1,32 @@
|
||||
<PAMDataset>
|
||||
<PAMRasterBand band="1">
|
||||
<Metadata>
|
||||
<MDI key="STATISTICS_APPROXIMATE">YES</MDI>
|
||||
<MDI key="STATISTICS_MAXIMUM">255</MDI>
|
||||
<MDI key="STATISTICS_MEAN">37.088994056078</MDI>
|
||||
<MDI key="STATISTICS_MINIMUM">0</MDI>
|
||||
<MDI key="STATISTICS_STDDEV">23.597758036199</MDI>
|
||||
<MDI key="STATISTICS_VALID_PERCENT">100</MDI>
|
||||
</Metadata>
|
||||
</PAMRasterBand>
|
||||
<PAMRasterBand band="2">
|
||||
<Metadata>
|
||||
<MDI key="STATISTICS_APPROXIMATE">YES</MDI>
|
||||
<MDI key="STATISTICS_MAXIMUM">255</MDI>
|
||||
<MDI key="STATISTICS_MEAN">38.660669983202</MDI>
|
||||
<MDI key="STATISTICS_MINIMUM">0</MDI>
|
||||
<MDI key="STATISTICS_STDDEV">22.602363004851</MDI>
|
||||
<MDI key="STATISTICS_VALID_PERCENT">100</MDI>
|
||||
</Metadata>
|
||||
</PAMRasterBand>
|
||||
<PAMRasterBand band="3">
|
||||
<Metadata>
|
||||
<MDI key="STATISTICS_APPROXIMATE">YES</MDI>
|
||||
<MDI key="STATISTICS_MAXIMUM">255</MDI>
|
||||
<MDI key="STATISTICS_MEAN">28.796404574234</MDI>
|
||||
<MDI key="STATISTICS_MINIMUM">0</MDI>
|
||||
<MDI key="STATISTICS_STDDEV">19.640798405489</MDI>
|
||||
<MDI key="STATISTICS_VALID_PERCENT">100</MDI>
|
||||
</Metadata>
|
||||
</PAMRasterBand>
|
||||
</PAMDataset>
|
BIN
maps/picasso/tiles/1/0/0.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
maps/picasso/tiles/1/0/0.png.bin
Normal file
BIN
maps/picasso/tiles/1/0/1.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
maps/picasso/tiles/1/0/1.png.bin
Normal file
BIN
maps/picasso/tiles/1/0/2.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
maps/picasso/tiles/1/0/2.png.bin
Normal file
BIN
maps/picasso/tiles/1/1/0.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
maps/picasso/tiles/1/1/0.png.bin
Normal file
BIN
maps/picasso/tiles/1/1/1.png
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
maps/picasso/tiles/1/1/1.png.bin
Normal file
BIN
maps/picasso/tiles/1/1/2.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
maps/picasso/tiles/1/1/2.png.bin
Normal file
BIN
maps/picasso/tiles/2/0/0.png
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
maps/picasso/tiles/2/0/0.png.bin
Normal file
BIN
maps/picasso/tiles/2/0/1.png
Normal file
After Width: | Height: | Size: 109 KiB |