Merge branch 'master' of http://82.64.196.164/git/Th3maz1ng/W800_Smart_Watch
6
.gitignore
vendored
@ -1,5 +1,9 @@
|
||||
#Exclude the W800 SDK bin folder from the the git repository
|
||||
src/W800 SDK v1.00.08/bin/
|
||||
src/W800_SDK_v1.00.10/bin/
|
||||
src/W800_SDK_v1.00.10/tools/w800/wm_getver.exe
|
||||
src/W800_SDK_v1.00.10/tools/w800/w800_secboot.img
|
||||
|
||||
src/W800_SDK_v1.00.10/.vscode/
|
||||
|
||||
#Exclude the lvgl simulator bin and obj folders from the the git repository
|
||||
src/lvgl_win_sim/lv_port_win_codeblocks/bin
|
||||
|
2
LICENSE
@ -1,4 +1,4 @@
|
||||
MIT No Attribution Copyright <YEARr> <COPYRIGHT HOLDER>
|
||||
MIT W800 SmartWatch Copyright 2023 Anatole SCHRAMM-HENRY
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
168
README.md
@ -9,14 +9,83 @@ So let's go !
|
||||
The W800 is a pretty interesting chip with impressive characteristics for its price (around 1$) :
|
||||
### Core :
|
||||
* 32bit XT804 CPU
|
||||
* 240 Mhz frequency
|
||||
* 240 Mhz max clock
|
||||
|
||||
### Memory :
|
||||
* 2 MB on chip flash
|
||||
* 288 KB RAM
|
||||
* 288 KB RAM, ~130 KB available to the user
|
||||
|
||||
### Wireless connectivity :
|
||||
* Bluetooth EDR(Classic) and BLE 4.2
|
||||
* WiFi 2.4Ghz 802.11 b/g/n
|
||||
|
||||
### SDK & OS
|
||||
* FreeRTOS v10.4.1
|
||||
* BLE stack : NimBLE
|
||||
* TCP IP stack : lwip v2.1.3
|
||||
|
||||
## Getting started :
|
||||
### So, you'd like to try this project yourself ?
|
||||
### Here are the steps to follow, in order to build the firmware and flash the board :
|
||||
#### On Windows :
|
||||
1) Start by cloning this repository.
|
||||
**Put it in a path that doesn't contain any spaces** ie : "C:\Users\Bob\Desktop\projects" for example.
|
||||
2) Once cloning is done, you will need to install the [MSYS2](https://www.msys2.org/) tool/environment. This tool is needed to compile the project using **Make**.
|
||||
3) Open a terminal by clicking on the **MSYS2** icon and execute the following commands to prepare the environment :
|
||||
1) Update packages :
|
||||
```bash
|
||||
pacman -Syu
|
||||
```
|
||||
2) Install make :
|
||||
```bash
|
||||
pacman -S msys/make
|
||||
```
|
||||
3) Install automake :
|
||||
```bash
|
||||
pacman -S msys/automake
|
||||
```
|
||||
4) Install autoconf :
|
||||
```bash
|
||||
pacman -S msys/autoconf
|
||||
```
|
||||
5) Install gcc :
|
||||
```bash
|
||||
pacman -S msys/gcc
|
||||
```
|
||||
6) Install git :
|
||||
```bash
|
||||
pacman -S msys/git
|
||||
```
|
||||
7) Install utils needed for menuconfig :
|
||||
```bash
|
||||
pacman -S msys/ncurses-devel
|
||||
pacman -S msys/gettext-devel
|
||||
```
|
||||
4) You now, need to download the toolchain required to compile and link the app [here](http://82.157.145.101/download/toolkits/winnermicro/w806/csky-elfabiv2-tools-mingw-minilibc-20210423.tar.gz) and extract it somewhere you remember on your hardrive.
|
||||
5) Now, go back to the MSYS terminal window and move to the **src/W800_SDK_v1.00.10/** directory which is located in the cloned repository, using the **cd** command.
|
||||
6) Then, execute the **make menuconfig** command, this should greet you with a crude configuration window.
|
||||
Move to the **Toolchain Configuration -->** option using the arrows and hit enter.
|
||||
Using the same controls, move to the **toolchain path** and **set the location** to where you extracted the toolchain in step 4.
|
||||
7) To be able to flash the board, you will also need to set the used com port in the **Download Configuration --->** option.
|
||||
**TIPS : set the download rate to : 2000000**, this should speed up the flashing process.
|
||||
8) Now save your configuration and exit.
|
||||
9) Finally, type :
|
||||
```bash
|
||||
#This will remove all builded object to start from a clean environment (Needed only once)
|
||||
make distclean
|
||||
|
||||
#This will only compile the library part of the firmware
|
||||
make lib
|
||||
|
||||
#This will compile the actual firmware using the libraries and produce the .bin file
|
||||
make
|
||||
|
||||
#This will flash the board using the previously generated .bin file
|
||||
make down
|
||||
|
||||
#This will do both previous commands in one (build and flash)
|
||||
make flash
|
||||
```
|
||||
|
||||
## Sensors :
|
||||
The goal is to embed the following sensors in the watch :
|
||||
@ -40,7 +109,7 @@ Possible choices :
|
||||
* ~~A piezo buzzer~~ : dropped, maybe in next version.
|
||||
|
||||
## Power source :
|
||||
* 1 cell lipo 450 mAh battery.
|
||||
* A single 450 mAh cell lipo battery.
|
||||
* A charge/discharge controller.
|
||||
|
||||
## Screen + touch element :
|
||||
@ -57,7 +126,7 @@ using a magnetic 4 pin plug.
|
||||
|------------|----------|------|----------|-------------|--------------|---------|
|
||||
||PB_20|I/O|**UART0_RX**/PWM1/UART1_CTS/I²C_SCL|U/D|**USB/Serial TX flash pin**||
|
||||
||PB_19|I/O|**UART0_TX**/PWM0/UART1_RTS/**I²C_SDA**|U/D|**USB/Serial RX flash pin** and **BMA456, Touch Panel, HMC5883L and BMP280 SDA pins**||
|
||||
||WAKEUP|I|**External Wake Up Pin**|D|**BMA456 IRQ line** and **Touch Panel IRQ line** through NAND Gate|The chip is waken up when the pin is HIGH|
|
||||
||WAKEUP|I|**External Wake Up Pin**|D|**BMA456 IRQ 1 line** and **Touch Panel IRQ line** through NAND Gate|The chip is waken up when the pin is HIGH|
|
||||
||RESET|I|Reset Pin|D|**Micro switch** and **USB/Serial RTS pin**||
|
||||
||XTAL_OUT|O|External crystal output||||
|
||||
||XTAL_IN|I|External crystal input||||
|
||||
@ -89,49 +158,55 @@ using a magnetic 4 pin plug.
|
||||
||PB_11|**I/O**|I²S_DO/MMC_D3/HSPI_DO/SDIO_D3|U/D|**BMA456 IRQ 2 line**||
|
||||
||GND|P|Ground (Central Pad)||||
|
||||
|
||||
## What is done/working so far :
|
||||
|
||||
## What is done/working so far - HARDWARE :
|
||||
* Schematic :
|
||||
* First version of the schematic is done an available [here](design/Kicad/W800_Smart_Watch/W800_Smart_Watch.pdf).
|
||||
* 2 layer PCB version 1.0 design is done based on the schematic. Waiting for the PCBs from JLCPCB.
|
||||
* Wake up interrupts handling :
|
||||
* Wrist tilt MCU wake up working
|
||||
* LCD touch wake up
|
||||
* MCU sleep feature :
|
||||
* Sleep and Standby modes working but implemented in a crude way.
|
||||
Can and should be improved.
|
||||
* PIFA antenna tested, performance isn't the best but it is working well for what it will be used for (BLE).
|
||||
|
||||
## What is done/working so far - SOFTWARE :
|
||||
* LVGL 8.3.3 running on the SOC using DMA.
|
||||
* Supported LCD drivers :
|
||||
* ILI9341 in 4-line serial mode (8 bits) with D/C pin
|
||||
* ST7789 in 4-line serial mode (8 bits) with D/C pin
|
||||
* GC9A01 in 4-line serial mode (8 bits) with D/C pin
|
||||
* Supported LCD touch screen :
|
||||
* CST816D capacitive touch ic.
|
||||
* Three screens designed and working with LVGL :
|
||||
* CST816D I2C capacitive touch ic.
|
||||
* Four screens designed and working with LVGL :
|
||||
* 1 watch face based on a casio watch.
|
||||
* 1 menu list screen with icons.
|
||||
* 1 menu screen with a list of icons.
|
||||
* 1 setting screen with basic settings (date and time + display brightness) (work in progress).
|
||||
* 1 compass application using the QMC5883L.
|
||||
* Debug UART on PB_2 (output only)
|
||||
* Wake up interrupts handling :
|
||||
* Wrist tilt MCU wake up working
|
||||
* LCD touch wake up
|
||||
* Sensors/Actuators :
|
||||
* QMC5883L driver working
|
||||
* BMA456 driver working
|
||||
* BMP280 driver working (temperature + pressure)
|
||||
* BMP280 driver working (temperature + pressure + altitude)
|
||||
* Battery voltage sense using ADC is working
|
||||
* Vibration motor controlled by PWM working
|
||||
* Update the W800 SDK from version 1.00.08 to version 1.00.10 released in January of 2023.
|
||||
|
||||
|
||||
## To do - HARDWARE:
|
||||
* [ ] Add the MAX30102 Heart Rate Monitor to the current design.
|
||||
* [ ] Fix the issue with the DW01A chip, should be as easy as to replace the 100nf C12 cap with a lower value, let's say 80nf.
|
||||
## To do - SOFTWARE
|
||||
* [X] Finish to design the settings page.
|
||||
* [X] Implement watch settings persistency using the integrated flash memory
|
||||
* [ ] Implement a good algorithm to handle adaptiv MCU clock
|
||||
to save power
|
||||
* Drivers:
|
||||
* [ ] Write/port the MAX30102 Heart Rate Monitor driver to the project.
|
||||
* [ ] Add a wake up alarm app (using the vibration motor).
|
||||
* [ ] Add BLE functionality.
|
||||
|
||||
## To do :
|
||||
* Write I2C drivers for the :
|
||||
* [X] BMA456
|
||||
* [X] Wrist tilt detection
|
||||
* [X] BMP280
|
||||
* [X] Temperature
|
||||
* [X] Pressure
|
||||
* [X] QMC5883L
|
||||
* [X] Write the init sequence for the GC9A01 LCD driver.
|
||||
* [X] Make LCD display + touch work.
|
||||
* [X] Design and test battery voltage sensing circuit -> voltage divider bridge because ADC input can sense 2.5V Max.
|
||||
* [ ] Finish to design the settings page.
|
||||
* [ ] Implement a good algorithm to handle adaptiv MCU clock to save power
|
||||
* [X] Test the charge circuit.
|
||||
* [X] Handle watch auto sleep feature with wake up on screen touch + wrist tilt (POC could be improved).
|
||||
* Design and test the :
|
||||
* [X] vibration motor circuit
|
||||
* [X] Draw the schematic, the first revision of the schematic is available [here](design/Kicad/W800_Smart_Watch/W800_Smart_Watch.pdf).
|
||||
* [X] Design the PCB (routing, placement etc..) on a 2 layer PCB - done.
|
||||
* [ ] Update the W800 SDK from version 1.00.08 to version 1.00.10 released in January of 2023.
|
||||
|
||||
## Achieved power consumption recap:
|
||||
(Need to work on sleep current :-( )
|
||||
@ -151,3 +226,32 @@ using a magnetic 4 pin plug.
|
||||
|
||||
### The back :
|
||||

|
||||
|
||||
## Update 21/03/2023 : PCBs were received from JLCPCB and this what they look like :
|
||||

|
||||

|
||||
|
||||
## And the watch running :
|
||||

|
||||
|
||||
### **Almost everything works :**
|
||||
* BMA456 ✓
|
||||
* BMP280 ✓
|
||||
* QMC5883L ✓
|
||||
* Screen + touch panel ✓
|
||||
* CH340E for chip programming ✓
|
||||
* Vibration motor ✓
|
||||
* Charge IC ✓
|
||||
|
||||
### **To sort out :**
|
||||
* DW01A chip not driving the double N mosfet as expected :-(
|
||||
* Round lipo battery not having the capacity advertised, will have to change it :-(
|
||||
|
||||
## Next steps :
|
||||
* Finish to design and print the casing.
|
||||
* Find an other battery 450 mAh or bigger would be great.
|
||||
* Add BLE.
|
||||
* Write and release a usable firmware for every day use.
|
||||
|
||||
|
||||
## If you are interested by the project or if you just want to say hi, you can contact me at the email address : bugreport[at]laposte.net .
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -29,17 +29,17 @@ G04 Aperture macros list*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10C,1.000000*%
|
||||
%ADD11RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||
%ADD12RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
|
||||
%ADD13RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD14RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
|
||||
%ADD15RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*%
|
||||
%ADD16RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
||||
%ADD17R,1.200000X1.500000*%
|
||||
%ADD18RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD19RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD20RoundRect,0.150000X0.150000X-0.512500X0.150000X0.512500X-0.150000X0.512500X-0.150000X-0.512500X0*%
|
||||
%ADD10RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||
%ADD11RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
|
||||
%ADD12RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD13RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
|
||||
%ADD14RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*%
|
||||
%ADD15RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
||||
%ADD16R,1.200000X1.500000*%
|
||||
%ADD17RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD18RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD19RoundRect,0.150000X0.150000X-0.512500X0.150000X0.512500X-0.150000X0.512500X-0.150000X-0.512500X0*%
|
||||
%ADD20C,1.000000*%
|
||||
%ADD21RoundRect,0.150000X-0.587500X-0.150000X0.587500X-0.150000X0.587500X0.150000X-0.587500X0.150000X0*%
|
||||
%ADD22RoundRect,0.200000X0.275000X-0.200000X0.275000X0.200000X-0.275000X0.200000X-0.275000X-0.200000X0*%
|
||||
%ADD23RoundRect,0.225000X0.225000X0.250000X-0.225000X0.250000X-0.225000X-0.250000X0.225000X-0.250000X0*%
|
||||
@ -57,60 +57,57 @@ G04 Aperture macros list end*
|
||||
%ADD35RoundRect,0.250000X0.450000X-0.262500X0.450000X0.262500X-0.450000X0.262500X-0.450000X-0.262500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X153000000Y-98200000D03*
|
||||
X147000000Y-94200000D03*
|
||||
X147000000Y-98800000D03*
|
||||
X147000000Y-91940000D03*
|
||||
D11*
|
||||
X161516000Y-115316000D03*
|
||||
X160556000Y-115316000D03*
|
||||
D12*
|
||||
D11*
|
||||
X159512000Y-87120000D03*
|
||||
X159512000Y-88140000D03*
|
||||
D13*
|
||||
D12*
|
||||
X167100000Y-93775000D03*
|
||||
X167100000Y-92225000D03*
|
||||
D14*
|
||||
D13*
|
||||
X163068000Y-89210000D03*
|
||||
X163068000Y-90170000D03*
|
||||
D15*
|
||||
D14*
|
||||
X157734000Y-106116380D03*
|
||||
X157734000Y-104216380D03*
|
||||
D16*
|
||||
D15*
|
||||
X162605000Y-93680000D03*
|
||||
X162605000Y-92720000D03*
|
||||
X163621000Y-93680000D03*
|
||||
X163621000Y-92720000D03*
|
||||
D17*
|
||||
D16*
|
||||
X169530000Y-106190000D03*
|
||||
X164330000Y-106190000D03*
|
||||
D18*
|
||||
D17*
|
||||
X160780000Y-110490000D03*
|
||||
X161800000Y-110490000D03*
|
||||
D19*
|
||||
D18*
|
||||
X145354000Y-86360000D03*
|
||||
X146304000Y-86360000D03*
|
||||
X147254000Y-86360000D03*
|
||||
X147254000Y-88635000D03*
|
||||
X145354000Y-88635000D03*
|
||||
D18*
|
||||
D17*
|
||||
X161542000Y-96520000D03*
|
||||
X162562000Y-96520000D03*
|
||||
D14*
|
||||
D13*
|
||||
X159258000Y-115344000D03*
|
||||
X159258000Y-116304000D03*
|
||||
D20*
|
||||
D19*
|
||||
X157922000Y-113405500D03*
|
||||
X156972000Y-113405500D03*
|
||||
X156022000Y-113405500D03*
|
||||
X156022000Y-111130500D03*
|
||||
X157922000Y-111130500D03*
|
||||
D16*
|
||||
D15*
|
||||
X159258000Y-113510000D03*
|
||||
X159258000Y-112550000D03*
|
||||
D12*
|
||||
D11*
|
||||
X161563000Y-92690000D03*
|
||||
X161563000Y-93710000D03*
|
||||
D20*
|
||||
X147000000Y-91940000D03*
|
||||
D21*
|
||||
X165632500Y-103490000D03*
|
||||
X165632500Y-101590000D03*
|
||||
@ -141,7 +138,7 @@ X146472000Y-111236000D03*
|
||||
D25*
|
||||
X160782000Y-114302000D03*
|
||||
X160782000Y-113282000D03*
|
||||
D12*
|
||||
D11*
|
||||
X143690000Y-91610000D03*
|
||||
X143690000Y-92630000D03*
|
||||
X144730000Y-90050000D03*
|
||||
@ -152,30 +149,30 @@ X152670000Y-111250000D03*
|
||||
D24*
|
||||
X143156400Y-107746800D03*
|
||||
X142136400Y-107746800D03*
|
||||
D12*
|
||||
D11*
|
||||
X154686000Y-112774000D03*
|
||||
X154686000Y-113794000D03*
|
||||
D27*
|
||||
X148590000Y-112334000D03*
|
||||
X148590000Y-114234000D03*
|
||||
D16*
|
||||
D15*
|
||||
X166370000Y-112748000D03*
|
||||
X166370000Y-111788000D03*
|
||||
D11*
|
||||
D10*
|
||||
X161262000Y-117348000D03*
|
||||
X160302000Y-117348000D03*
|
||||
D28*
|
||||
X164084000Y-114614000D03*
|
||||
X164084000Y-109414000D03*
|
||||
D10*
|
||||
D20*
|
||||
X149250400Y-105664000D03*
|
||||
D25*
|
||||
X164637000Y-93710000D03*
|
||||
X164637000Y-92690000D03*
|
||||
D14*
|
||||
D13*
|
||||
X162052000Y-89210000D03*
|
||||
X162052000Y-90170000D03*
|
||||
D12*
|
||||
D11*
|
||||
X166370000Y-108710000D03*
|
||||
X166370000Y-109730000D03*
|
||||
D29*
|
||||
@ -187,15 +184,19 @@ X152746000Y-118985000D03*
|
||||
D31*
|
||||
X150246000Y-115210000D03*
|
||||
X154046000Y-115210000D03*
|
||||
D10*
|
||||
D20*
|
||||
X155041600Y-105664000D03*
|
||||
D24*
|
||||
X149606000Y-109728000D03*
|
||||
X148586000Y-109728000D03*
|
||||
D20*
|
||||
X147000000Y-98800000D03*
|
||||
D32*
|
||||
X160274000Y-96012000D03*
|
||||
X158374000Y-96012000D03*
|
||||
X159324000Y-94137000D03*
|
||||
D20*
|
||||
X153000000Y-98200000D03*
|
||||
D24*
|
||||
X163832000Y-103886000D03*
|
||||
X162812000Y-103886000D03*
|
||||
@ -205,27 +206,29 @@ X161800000Y-87120000D03*
|
||||
D33*
|
||||
X155222000Y-102616000D03*
|
||||
X156182000Y-102616000D03*
|
||||
D16*
|
||||
D15*
|
||||
X161290000Y-106018000D03*
|
||||
X161290000Y-105058000D03*
|
||||
D14*
|
||||
D13*
|
||||
X159258000Y-110518000D03*
|
||||
X159258000Y-111478000D03*
|
||||
D34*
|
||||
X139860000Y-107160000D03*
|
||||
X139860000Y-109260000D03*
|
||||
D14*
|
||||
D13*
|
||||
X150114000Y-112324000D03*
|
||||
X150114000Y-113284000D03*
|
||||
D24*
|
||||
X149606000Y-110744000D03*
|
||||
X148586000Y-110744000D03*
|
||||
D12*
|
||||
D11*
|
||||
X164100000Y-89190000D03*
|
||||
X164100000Y-90210000D03*
|
||||
D15*
|
||||
D14*
|
||||
X159766000Y-106116380D03*
|
||||
X159766000Y-104216380D03*
|
||||
D20*
|
||||
X147000000Y-94200000D03*
|
||||
D35*
|
||||
X169926000Y-103425000D03*
|
||||
X169926000Y-101600000D03*
|
||||
@ -235,12 +238,12 @@ X164050000Y-101780000D03*
|
||||
D34*
|
||||
X143240000Y-112710000D03*
|
||||
X143240000Y-114810000D03*
|
||||
D10*
|
||||
X140700183Y-114698941D03*
|
||||
X139626728Y-113419647D03*
|
||||
X138553272Y-112140353D03*
|
||||
D20*
|
||||
X137479817Y-110861059D03*
|
||||
D19*
|
||||
X138553272Y-112140353D03*
|
||||
X139626728Y-113419647D03*
|
||||
X140700183Y-114698941D03*
|
||||
D18*
|
||||
X155514000Y-116210500D03*
|
||||
X156464000Y-116210500D03*
|
||||
X157414000Y-116210500D03*
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -227,10 +227,10 @@ D33*
|
||||
X143240000Y-112710000D03*
|
||||
X143240000Y-114810000D03*
|
||||
D35*
|
||||
X140700183Y-114698941D03*
|
||||
X139626728Y-113419647D03*
|
||||
X138553272Y-112140353D03*
|
||||
X137479817Y-110861059D03*
|
||||
X138553272Y-112140353D03*
|
||||
X139626728Y-113419647D03*
|
||||
X140700183Y-114698941D03*
|
||||
D18*
|
||||
X155514000Y-116210500D03*
|
||||
X156464000Y-116210500D03*
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Legend,Bot*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -29,23 +29,23 @@ G04 Aperture macros list*
|
||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||
G04 Aperture macros list end*
|
||||
%ADD10C,0.300000*%
|
||||
%ADD10C,0.150000*%
|
||||
%ADD11C,0.213592*%
|
||||
%ADD12C,0.200000*%
|
||||
%ADD13C,0.150000*%
|
||||
%ADD12C,0.300000*%
|
||||
%ADD13C,0.200000*%
|
||||
%ADD14C,0.120000*%
|
||||
%ADD15C,0.250000*%
|
||||
%ADD16C,1.000000*%
|
||||
%ADD17RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||
%ADD18RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
|
||||
%ADD19RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD20RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
|
||||
%ADD21RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*%
|
||||
%ADD22RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
||||
%ADD23R,1.200000X1.500000*%
|
||||
%ADD24RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD25RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD26RoundRect,0.150000X0.150000X-0.512500X0.150000X0.512500X-0.150000X0.512500X-0.150000X-0.512500X0*%
|
||||
%ADD16RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||
%ADD17RoundRect,0.135000X-0.185000X0.135000X-0.185000X-0.135000X0.185000X-0.135000X0.185000X0.135000X0*%
|
||||
%ADD18RoundRect,0.225000X0.250000X-0.225000X0.250000X0.225000X-0.250000X0.225000X-0.250000X-0.225000X0*%
|
||||
%ADD19RoundRect,0.140000X-0.170000X0.140000X-0.170000X-0.140000X0.170000X-0.140000X0.170000X0.140000X0*%
|
||||
%ADD20RoundRect,0.250000X0.475000X-0.250000X0.475000X0.250000X-0.475000X0.250000X-0.475000X-0.250000X0*%
|
||||
%ADD21RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
||||
%ADD22R,1.200000X1.500000*%
|
||||
%ADD23RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||
%ADD24RoundRect,0.150000X-0.150000X0.512500X-0.150000X-0.512500X0.150000X-0.512500X0.150000X0.512500X0*%
|
||||
%ADD25RoundRect,0.150000X0.150000X-0.512500X0.150000X0.512500X-0.150000X0.512500X-0.150000X-0.512500X0*%
|
||||
%ADD26C,1.000000*%
|
||||
%ADD27RoundRect,0.150000X-0.587500X-0.150000X0.587500X-0.150000X0.587500X0.150000X-0.587500X0.150000X0*%
|
||||
%ADD28RoundRect,0.200000X0.275000X-0.200000X0.275000X0.200000X-0.275000X0.200000X-0.275000X-0.200000X0*%
|
||||
%ADD29RoundRect,0.225000X0.225000X0.250000X-0.225000X0.250000X-0.225000X-0.250000X0.225000X-0.250000X0*%
|
||||
@ -63,6 +63,243 @@ G04 Aperture macros list end*
|
||||
%ADD41RoundRect,0.250000X0.450000X-0.262500X0.450000X0.262500X-0.450000X0.262500X-0.450000X-0.262500X0*%
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X150638095Y-90052380D02*
|
||||
X150019047Y-90052380D01*
|
||||
X150352380Y-90433333D01*
|
||||
X150209523Y-90433333D01*
|
||||
X150114285Y-90480952D01*
|
||||
X150066666Y-90528571D01*
|
||||
X150019047Y-90623809D01*
|
||||
X150019047Y-90861904D01*
|
||||
X150066666Y-90957142D01*
|
||||
X150114285Y-91004761D01*
|
||||
X150209523Y-91052380D01*
|
||||
X150495238Y-91052380D01*
|
||||
X150590476Y-91004761D01*
|
||||
X150638095Y-90957142D01*
|
||||
X149733333Y-90052380D02*
|
||||
X149400000Y-91052380D01*
|
||||
X149066666Y-90052380D01*
|
||||
X148828571Y-90052380D02*
|
||||
X148209523Y-90052380D01*
|
||||
X148542857Y-90433333D01*
|
||||
X148400000Y-90433333D01*
|
||||
X148304761Y-90480952D01*
|
||||
X148257142Y-90528571D01*
|
||||
X148209523Y-90623809D01*
|
||||
X148209523Y-90861904D01*
|
||||
X148257142Y-90957142D01*
|
||||
X148304761Y-91004761D01*
|
||||
X148400000Y-91052380D01*
|
||||
X148685714Y-91052380D01*
|
||||
X148780952Y-91004761D01*
|
||||
X148828571Y-90957142D01*
|
||||
X150600476Y-94604761D02*
|
||||
X150457619Y-94652380D01*
|
||||
X150219523Y-94652380D01*
|
||||
X150124285Y-94604761D01*
|
||||
X150076666Y-94557142D01*
|
||||
X150029047Y-94461904D01*
|
||||
X150029047Y-94366666D01*
|
||||
X150076666Y-94271428D01*
|
||||
X150124285Y-94223809D01*
|
||||
X150219523Y-94176190D01*
|
||||
X150410000Y-94128571D01*
|
||||
X150505238Y-94080952D01*
|
||||
X150552857Y-94033333D01*
|
||||
X150600476Y-93938095D01*
|
||||
X150600476Y-93842857D01*
|
||||
X150552857Y-93747619D01*
|
||||
X150505238Y-93700000D01*
|
||||
X150410000Y-93652380D01*
|
||||
X150171904Y-93652380D01*
|
||||
X150029047Y-93700000D01*
|
||||
X149029047Y-94557142D02*
|
||||
X149076666Y-94604761D01*
|
||||
X149219523Y-94652380D01*
|
||||
X149314761Y-94652380D01*
|
||||
X149457619Y-94604761D01*
|
||||
X149552857Y-94509523D01*
|
||||
X149600476Y-94414285D01*
|
||||
X149648095Y-94223809D01*
|
||||
X149648095Y-94080952D01*
|
||||
X149600476Y-93890476D01*
|
||||
X149552857Y-93795238D01*
|
||||
X149457619Y-93700000D01*
|
||||
X149314761Y-93652380D01*
|
||||
X149219523Y-93652380D01*
|
||||
X149076666Y-93700000D01*
|
||||
X149029047Y-93747619D01*
|
||||
X148124285Y-94652380D02*
|
||||
X148600476Y-94652380D01*
|
||||
X148600476Y-93652380D01*
|
||||
X152014285Y-98604761D02*
|
||||
X151871428Y-98652380D01*
|
||||
X151633333Y-98652380D01*
|
||||
X151538095Y-98604761D01*
|
||||
X151490476Y-98557142D01*
|
||||
X151442857Y-98461904D01*
|
||||
X151442857Y-98366666D01*
|
||||
X151490476Y-98271428D01*
|
||||
X151538095Y-98223809D01*
|
||||
X151633333Y-98176190D01*
|
||||
X151823809Y-98128571D01*
|
||||
X151919047Y-98080952D01*
|
||||
X151966666Y-98033333D01*
|
||||
X152014285Y-97938095D01*
|
||||
X152014285Y-97842857D01*
|
||||
X151966666Y-97747619D01*
|
||||
X151919047Y-97700000D01*
|
||||
X151823809Y-97652380D01*
|
||||
X151585714Y-97652380D01*
|
||||
X151442857Y-97700000D01*
|
||||
X151014285Y-98652380D02*
|
||||
X151014285Y-97652380D01*
|
||||
X150776190Y-97652380D01*
|
||||
X150633333Y-97700000D01*
|
||||
X150538095Y-97795238D01*
|
||||
X150490476Y-97890476D01*
|
||||
X150442857Y-98080952D01*
|
||||
X150442857Y-98223809D01*
|
||||
X150490476Y-98414285D01*
|
||||
X150538095Y-98509523D01*
|
||||
X150633333Y-98604761D01*
|
||||
X150776190Y-98652380D01*
|
||||
X151014285Y-98652380D01*
|
||||
X150061904Y-98366666D02*
|
||||
X149585714Y-98366666D01*
|
||||
X150157142Y-98652380D02*
|
||||
X149823809Y-97652380D01*
|
||||
X149490476Y-98652380D01*
|
||||
X156301904Y-107662380D02*
|
||||
X156301904Y-106662380D01*
|
||||
X156063809Y-106662380D01*
|
||||
X155920952Y-106710000D01*
|
||||
X155825714Y-106805238D01*
|
||||
X155778095Y-106900476D01*
|
||||
X155730476Y-107090952D01*
|
||||
X155730476Y-107233809D01*
|
||||
X155778095Y-107424285D01*
|
||||
X155825714Y-107519523D01*
|
||||
X155920952Y-107614761D01*
|
||||
X156063809Y-107662380D01*
|
||||
X156301904Y-107662380D01*
|
||||
X154968571Y-107138571D02*
|
||||
X154825714Y-107186190D01*
|
||||
X154778095Y-107233809D01*
|
||||
X154730476Y-107329047D01*
|
||||
X154730476Y-107471904D01*
|
||||
X154778095Y-107567142D01*
|
||||
X154825714Y-107614761D01*
|
||||
X154920952Y-107662380D01*
|
||||
X155301904Y-107662380D01*
|
||||
X155301904Y-106662380D01*
|
||||
X154968571Y-106662380D01*
|
||||
X154873333Y-106710000D01*
|
||||
X154825714Y-106757619D01*
|
||||
X154778095Y-106852857D01*
|
||||
X154778095Y-106948095D01*
|
||||
X154825714Y-107043333D01*
|
||||
X154873333Y-107090952D01*
|
||||
X154968571Y-107138571D01*
|
||||
X155301904Y-107138571D01*
|
||||
X153778095Y-106710000D02*
|
||||
X153873333Y-106662380D01*
|
||||
X154016190Y-106662380D01*
|
||||
X154159047Y-106710000D01*
|
||||
X154254285Y-106805238D01*
|
||||
X154301904Y-106900476D01*
|
||||
X154349523Y-107090952D01*
|
||||
X154349523Y-107233809D01*
|
||||
X154301904Y-107424285D01*
|
||||
X154254285Y-107519523D01*
|
||||
X154159047Y-107614761D01*
|
||||
X154016190Y-107662380D01*
|
||||
X153920952Y-107662380D01*
|
||||
X153778095Y-107614761D01*
|
||||
X153730476Y-107567142D01*
|
||||
X153730476Y-107233809D01*
|
||||
X153920952Y-107233809D01*
|
||||
X150011904Y-106710000D02*
|
||||
X150107142Y-106662380D01*
|
||||
X150250000Y-106662380D01*
|
||||
X150392857Y-106710000D01*
|
||||
X150488095Y-106805238D01*
|
||||
X150535714Y-106900476D01*
|
||||
X150583333Y-107090952D01*
|
||||
X150583333Y-107233809D01*
|
||||
X150535714Y-107424285D01*
|
||||
X150488095Y-107519523D01*
|
||||
X150392857Y-107614761D01*
|
||||
X150250000Y-107662380D01*
|
||||
X150154761Y-107662380D01*
|
||||
X150011904Y-107614761D01*
|
||||
X149964285Y-107567142D01*
|
||||
X149964285Y-107233809D01*
|
||||
X150154761Y-107233809D01*
|
||||
X149535714Y-107662380D02*
|
||||
X149535714Y-106662380D01*
|
||||
X148964285Y-107662380D01*
|
||||
X148964285Y-106662380D01*
|
||||
X148488095Y-107662380D02*
|
||||
X148488095Y-106662380D01*
|
||||
X148250000Y-106662380D01*
|
||||
X148107142Y-106710000D01*
|
||||
X148011904Y-106805238D01*
|
||||
X147964285Y-106900476D01*
|
||||
X147916666Y-107090952D01*
|
||||
X147916666Y-107233809D01*
|
||||
X147964285Y-107424285D01*
|
||||
X148011904Y-107519523D01*
|
||||
X148107142Y-107614761D01*
|
||||
X148250000Y-107662380D01*
|
||||
X148488095Y-107662380D01*
|
||||
X147161904Y-100100000D02*
|
||||
X147257142Y-100052380D01*
|
||||
X147400000Y-100052380D01*
|
||||
X147542857Y-100100000D01*
|
||||
X147638095Y-100195238D01*
|
||||
X147685714Y-100290476D01*
|
||||
X147733333Y-100480952D01*
|
||||
X147733333Y-100623809D01*
|
||||
X147685714Y-100814285D01*
|
||||
X147638095Y-100909523D01*
|
||||
X147542857Y-101004761D01*
|
||||
X147400000Y-101052380D01*
|
||||
X147304761Y-101052380D01*
|
||||
X147161904Y-101004761D01*
|
||||
X147114285Y-100957142D01*
|
||||
X147114285Y-100623809D01*
|
||||
X147304761Y-100623809D01*
|
||||
X146685714Y-101052380D02*
|
||||
X146685714Y-100052380D01*
|
||||
X146114285Y-101052380D01*
|
||||
X146114285Y-100052380D01*
|
||||
X145638095Y-101052380D02*
|
||||
X145638095Y-100052380D01*
|
||||
X145400000Y-100052380D01*
|
||||
X145257142Y-100100000D01*
|
||||
X145161904Y-100195238D01*
|
||||
X145114285Y-100290476D01*
|
||||
X145066666Y-100480952D01*
|
||||
X145066666Y-100623809D01*
|
||||
X145114285Y-100814285D01*
|
||||
X145161904Y-100909523D01*
|
||||
X145257142Y-101004761D01*
|
||||
X145400000Y-101052380D01*
|
||||
X145638095Y-101052380D01*
|
||||
D11*
|
||||
X141946796Y-112010000D02*
|
||||
G75*
|
||||
G03*
|
||||
X141946796Y-112010000I-106796J0D01*
|
||||
G01*
|
||||
X154986796Y-115070000D02*
|
||||
G75*
|
||||
G03*
|
||||
X154986796Y-115070000I-106796J0D01*
|
||||
G01*
|
||||
D12*
|
||||
X154414285Y-97207142D02*
|
||||
X154200000Y-97278571D01*
|
||||
X153842857Y-97278571D01*
|
||||
@ -178,18 +415,7 @@ X142271428Y-96278571D01*
|
||||
X142485714Y-96278571D01*
|
||||
X142628571Y-96350000D01*
|
||||
X142700000Y-96421428D01*
|
||||
D11*
|
||||
X141946796Y-112010000D02*
|
||||
G75*
|
||||
G03*
|
||||
X141946796Y-112010000I-106796J0D01*
|
||||
G01*
|
||||
X154986796Y-115070000D02*
|
||||
G75*
|
||||
G03*
|
||||
X154986796Y-115070000I-106796J0D01*
|
||||
G01*
|
||||
D12*
|
||||
D13*
|
||||
X169384552Y-108488171D02*
|
||||
X169241695Y-108535790D01*
|
||||
X169194076Y-108583409D01*
|
||||
@ -218,7 +444,7 @@ X167955980Y-108011980D01*
|
||||
X167622647Y-108726266D01*
|
||||
X167289314Y-108011980D01*
|
||||
X167289314Y-109011980D01*
|
||||
D10*
|
||||
D12*
|
||||
X154472400Y-102293028D02*
|
||||
X154400971Y-102221600D01*
|
||||
X154258114Y-102150171D01*
|
||||
@ -444,7 +670,7 @@ X149019285Y-100097084D01*
|
||||
X148938333Y-99935179D01*
|
||||
X148857380Y-99854227D01*
|
||||
X148695476Y-99773274D01*
|
||||
D12*
|
||||
D13*
|
||||
X155737123Y-85170666D02*
|
||||
X155260933Y-85170666D01*
|
||||
X155832361Y-85456380D02*
|
||||
@ -622,14 +848,14 @@ X150260933Y-88676380D01*
|
||||
X150594266Y-87676380D02*
|
||||
X150260933Y-88200190D01*
|
||||
X149927600Y-87676380D01*
|
||||
D13*
|
||||
D10*
|
||||
X151206152Y-119705428D02*
|
||||
X150444247Y-119705428D01*
|
||||
X150825200Y-120086380D02*
|
||||
X150825200Y-119324476D01*
|
||||
X153898552Y-119705428D02*
|
||||
X153136647Y-119705428D01*
|
||||
D12*
|
||||
D13*
|
||||
X161685219Y-109723180D02*
|
||||
X162018552Y-109246990D01*
|
||||
X162256647Y-109723180D02*
|
||||
@ -667,7 +893,7 @@ X160447123Y-108723180D02*
|
||||
X159875695Y-108723180D01*
|
||||
X160161409Y-109723180D02*
|
||||
X160161409Y-108723180D01*
|
||||
D13*
|
||||
D10*
|
||||
X163057142Y-114733333D02*
|
||||
X163104761Y-114685714D01*
|
||||
X163152380Y-114542857D01*
|
||||
@ -2045,10 +2271,25 @@ X144334285Y-115538095D01*
|
||||
X144381904Y-115680952D01*
|
||||
X144953333Y-116252380D01*
|
||||
X144334285Y-116252380D01*
|
||||
X136077739Y-108599845D02*
|
||||
X135494086Y-109089588D01*
|
||||
X136030784Y-109136543D02*
|
||||
X135541041Y-108552891D01*
|
||||
X141837739Y-112659845D02*
|
||||
X141254086Y-113149588D01*
|
||||
X141790784Y-113196543D02*
|
||||
X141301041Y-112612891D01*
|
||||
X141201415Y-112168194D02*
|
||||
X140558627Y-111402150D01*
|
||||
X140376236Y-111555195D01*
|
||||
X140297410Y-111683500D01*
|
||||
X140285671Y-111817674D01*
|
||||
X140310411Y-111921240D01*
|
||||
X140396368Y-112097762D01*
|
||||
X140488195Y-112207197D01*
|
||||
X140647109Y-112322501D01*
|
||||
X140744805Y-112364849D01*
|
||||
X140878980Y-112376587D01*
|
||||
X141019024Y-112321239D01*
|
||||
X141201415Y-112168194D01*
|
||||
X142417739Y-116249845D02*
|
||||
X141834086Y-116739588D01*
|
||||
X141125633Y-110450278D02*
|
||||
X140482845Y-109684234D01*
|
||||
X140300454Y-109837278D01*
|
||||
@ -2064,46 +2305,11 @@ X140943242Y-110603323D01*
|
||||
X141125633Y-110450278D01*
|
||||
X140114717Y-110801239D02*
|
||||
X139531064Y-111290982D01*
|
||||
X142417739Y-116249845D02*
|
||||
X141834086Y-116739588D01*
|
||||
X141201415Y-112168194D02*
|
||||
X140558627Y-111402150D01*
|
||||
X140376236Y-111555195D01*
|
||||
X140297410Y-111683500D01*
|
||||
X140285671Y-111817674D01*
|
||||
X140310411Y-111921240D01*
|
||||
X140396368Y-112097762D01*
|
||||
X140488195Y-112207197D01*
|
||||
X140647109Y-112322501D01*
|
||||
X140744805Y-112364849D01*
|
||||
X140878980Y-112376587D01*
|
||||
X141019024Y-112321239D01*
|
||||
X141201415Y-112168194D01*
|
||||
X141837739Y-112659845D02*
|
||||
X141254086Y-113149588D01*
|
||||
X141790784Y-113196543D02*
|
||||
X141301041Y-112612891D01*
|
||||
X136077739Y-108599845D02*
|
||||
X135494086Y-109089588D01*
|
||||
X136030784Y-109136543D02*
|
||||
X135541041Y-108552891D01*
|
||||
D14*
|
||||
X153700000Y-98200000D02*
|
||||
G75*
|
||||
G03*
|
||||
X153700000Y-98200000I-700000J0D01*
|
||||
G01*
|
||||
X147700000Y-94200000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-94200000I-700000J0D01*
|
||||
G01*
|
||||
X147700000Y-98800000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-98800000I-700000J0D01*
|
||||
G01*
|
||||
X147700000Y-91940000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-91940000I-700000J0D01*
|
||||
G01*
|
||||
X161143836Y-114956000D02*
|
||||
X160928164Y-114956000D01*
|
||||
X161143836Y-115676000D02*
|
||||
@ -2176,6 +2382,11 @@ X161943000Y-93046359D02*
|
||||
X161943000Y-93353641D01*
|
||||
X161183000Y-93046359D02*
|
||||
X161183000Y-93353641D01*
|
||||
X147700000Y-91940000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-91940000I-700000J0D01*
|
||||
G01*
|
||||
X166570000Y-100980000D02*
|
||||
X165920000Y-100980000D01*
|
||||
X166570000Y-104100000D02*
|
||||
@ -2200,7 +2411,7 @@ X151510000Y-112927641D02*
|
||||
X151510000Y-112620359D01*
|
||||
X150750000Y-112927641D02*
|
||||
X150750000Y-112620359D01*
|
||||
D13*
|
||||
D10*
|
||||
X142597000Y-108561000D02*
|
||||
X145947000Y-108561000D01*
|
||||
X142597000Y-111686000D02*
|
||||
@ -2281,7 +2492,7 @@ X155017602Y-96598727D02*
|
||||
X155170105Y-96751230D01*
|
||||
X155526719Y-96089610D02*
|
||||
X155679222Y-96242113D01*
|
||||
D13*
|
||||
D10*
|
||||
X150546000Y-119090000D02*
|
||||
X150046000Y-119090000D01*
|
||||
X150046000Y-116090000D02*
|
||||
@ -2308,6 +2519,11 @@ X149249641Y-110108000D02*
|
||||
X148942359Y-110108000D01*
|
||||
X149249641Y-109348000D02*
|
||||
X148942359Y-109348000D01*
|
||||
X147700000Y-98800000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-98800000I-700000J0D01*
|
||||
G01*
|
||||
X157764000Y-95074500D02*
|
||||
X157764000Y-94424500D01*
|
||||
X160884000Y-95074500D02*
|
||||
@ -2316,6 +2532,11 @@ X157764000Y-95074500D02*
|
||||
X157764000Y-95724500D01*
|
||||
X160884000Y-95074500D02*
|
||||
X160884000Y-96749500D01*
|
||||
X153700000Y-98200000D02*
|
||||
G75*
|
||||
G03*
|
||||
X153700000Y-98200000I-700000J0D01*
|
||||
G01*
|
||||
X163475641Y-103506000D02*
|
||||
X163168359Y-103506000D01*
|
||||
X163475641Y-104266000D02*
|
||||
@ -2358,6 +2579,11 @@ X159031000Y-105427632D02*
|
||||
X159031000Y-104905128D01*
|
||||
X160501000Y-105427632D02*
|
||||
X160501000Y-104905128D01*
|
||||
X147700000Y-94200000D02*
|
||||
G75*
|
||||
G03*
|
||||
X147700000Y-94200000I-700000J0D01*
|
||||
G01*
|
||||
X169191000Y-102739564D02*
|
||||
X169191000Y-102285436D01*
|
||||
X170661000Y-102739564D02*
|
||||
@ -2372,14 +2598,14 @@ X142390000Y-112260000D02*
|
||||
X144090000Y-112260000D01*
|
||||
X144090000Y-112260000D02*
|
||||
X144090000Y-114810000D01*
|
||||
X135752805Y-110358610D02*
|
||||
X140895106Y-116486965D01*
|
||||
X140895106Y-116486965D02*
|
||||
X142427195Y-115201390D01*
|
||||
X142427195Y-115201390D02*
|
||||
X137284894Y-109073035D01*
|
||||
X137284894Y-109073035D02*
|
||||
X135752805Y-110358610D01*
|
||||
X142427195Y-115201390D02*
|
||||
X137284894Y-109073035D01*
|
||||
X140895106Y-116486965D02*
|
||||
X142427195Y-115201390D01*
|
||||
X135752805Y-110358610D02*
|
||||
X140895106Y-116486965D01*
|
||||
X158024000Y-117348000D02*
|
||||
X158024000Y-116548000D01*
|
||||
X154904000Y-117348000D02*
|
||||
@ -2390,60 +2616,57 @@ X154904000Y-117348000D02*
|
||||
X154904000Y-115548000D01*
|
||||
%LPC*%
|
||||
D16*
|
||||
X153000000Y-98200000D03*
|
||||
X147000000Y-94200000D03*
|
||||
X147000000Y-98800000D03*
|
||||
X147000000Y-91940000D03*
|
||||
D17*
|
||||
X161516000Y-115316000D03*
|
||||
X160556000Y-115316000D03*
|
||||
D18*
|
||||
D17*
|
||||
X159512000Y-87120000D03*
|
||||
X159512000Y-88140000D03*
|
||||
D19*
|
||||
D18*
|
||||
X167100000Y-93775000D03*
|
||||
X167100000Y-92225000D03*
|
||||
D20*
|
||||
D19*
|
||||
X163068000Y-89210000D03*
|
||||
X163068000Y-90170000D03*
|
||||
D21*
|
||||
D20*
|
||||
X157734000Y-106116380D03*
|
||||
X157734000Y-104216380D03*
|
||||
D22*
|
||||
D21*
|
||||
X162605000Y-93680000D03*
|
||||
X162605000Y-92720000D03*
|
||||
X163621000Y-93680000D03*
|
||||
X163621000Y-92720000D03*
|
||||
D23*
|
||||
D22*
|
||||
X169530000Y-106190000D03*
|
||||
X164330000Y-106190000D03*
|
||||
D24*
|
||||
D23*
|
||||
X160780000Y-110490000D03*
|
||||
X161800000Y-110490000D03*
|
||||
D25*
|
||||
D24*
|
||||
X145354000Y-86360000D03*
|
||||
X146304000Y-86360000D03*
|
||||
X147254000Y-86360000D03*
|
||||
X147254000Y-88635000D03*
|
||||
X145354000Y-88635000D03*
|
||||
D24*
|
||||
D23*
|
||||
X161542000Y-96520000D03*
|
||||
X162562000Y-96520000D03*
|
||||
D20*
|
||||
D19*
|
||||
X159258000Y-115344000D03*
|
||||
X159258000Y-116304000D03*
|
||||
D26*
|
||||
D25*
|
||||
X157922000Y-113405500D03*
|
||||
X156972000Y-113405500D03*
|
||||
X156022000Y-113405500D03*
|
||||
X156022000Y-111130500D03*
|
||||
X157922000Y-111130500D03*
|
||||
D22*
|
||||
D21*
|
||||
X159258000Y-113510000D03*
|
||||
X159258000Y-112550000D03*
|
||||
D18*
|
||||
D17*
|
||||
X161563000Y-92690000D03*
|
||||
X161563000Y-93710000D03*
|
||||
D26*
|
||||
X147000000Y-91940000D03*
|
||||
D27*
|
||||
X165632500Y-103490000D03*
|
||||
X165632500Y-101590000D03*
|
||||
@ -2474,7 +2697,7 @@ X146472000Y-111236000D03*
|
||||
D31*
|
||||
X160782000Y-114302000D03*
|
||||
X160782000Y-113282000D03*
|
||||
D18*
|
||||
D17*
|
||||
X143690000Y-91610000D03*
|
||||
X143690000Y-92630000D03*
|
||||
X144730000Y-90050000D03*
|
||||
@ -2485,30 +2708,30 @@ X152670000Y-111250000D03*
|
||||
D30*
|
||||
X143156400Y-107746800D03*
|
||||
X142136400Y-107746800D03*
|
||||
D18*
|
||||
D17*
|
||||
X154686000Y-112774000D03*
|
||||
X154686000Y-113794000D03*
|
||||
D33*
|
||||
X148590000Y-112334000D03*
|
||||
X148590000Y-114234000D03*
|
||||
D22*
|
||||
D21*
|
||||
X166370000Y-112748000D03*
|
||||
X166370000Y-111788000D03*
|
||||
D17*
|
||||
D16*
|
||||
X161262000Y-117348000D03*
|
||||
X160302000Y-117348000D03*
|
||||
D34*
|
||||
X164084000Y-114614000D03*
|
||||
X164084000Y-109414000D03*
|
||||
D16*
|
||||
D26*
|
||||
X149250400Y-105664000D03*
|
||||
D31*
|
||||
X164637000Y-93710000D03*
|
||||
X164637000Y-92690000D03*
|
||||
D20*
|
||||
D19*
|
||||
X162052000Y-89210000D03*
|
||||
X162052000Y-90170000D03*
|
||||
D18*
|
||||
D17*
|
||||
X166370000Y-108710000D03*
|
||||
X166370000Y-109730000D03*
|
||||
D35*
|
||||
@ -2520,15 +2743,19 @@ X152746000Y-118985000D03*
|
||||
D37*
|
||||
X150246000Y-115210000D03*
|
||||
X154046000Y-115210000D03*
|
||||
D16*
|
||||
D26*
|
||||
X155041600Y-105664000D03*
|
||||
D30*
|
||||
X149606000Y-109728000D03*
|
||||
X148586000Y-109728000D03*
|
||||
D26*
|
||||
X147000000Y-98800000D03*
|
||||
D38*
|
||||
X160274000Y-96012000D03*
|
||||
X158374000Y-96012000D03*
|
||||
X159324000Y-94137000D03*
|
||||
D26*
|
||||
X153000000Y-98200000D03*
|
||||
D30*
|
||||
X163832000Y-103886000D03*
|
||||
X162812000Y-103886000D03*
|
||||
@ -2538,27 +2765,29 @@ X161800000Y-87120000D03*
|
||||
D39*
|
||||
X155222000Y-102616000D03*
|
||||
X156182000Y-102616000D03*
|
||||
D22*
|
||||
D21*
|
||||
X161290000Y-106018000D03*
|
||||
X161290000Y-105058000D03*
|
||||
D20*
|
||||
D19*
|
||||
X159258000Y-110518000D03*
|
||||
X159258000Y-111478000D03*
|
||||
D40*
|
||||
X139860000Y-107160000D03*
|
||||
X139860000Y-109260000D03*
|
||||
D20*
|
||||
D19*
|
||||
X150114000Y-112324000D03*
|
||||
X150114000Y-113284000D03*
|
||||
D30*
|
||||
X149606000Y-110744000D03*
|
||||
X148586000Y-110744000D03*
|
||||
D18*
|
||||
D17*
|
||||
X164100000Y-89190000D03*
|
||||
X164100000Y-90210000D03*
|
||||
D21*
|
||||
D20*
|
||||
X159766000Y-106116380D03*
|
||||
X159766000Y-104216380D03*
|
||||
D26*
|
||||
X147000000Y-94200000D03*
|
||||
D41*
|
||||
X169926000Y-103425000D03*
|
||||
X169926000Y-101600000D03*
|
||||
@ -2568,12 +2797,12 @@ X164050000Y-101780000D03*
|
||||
D40*
|
||||
X143240000Y-112710000D03*
|
||||
X143240000Y-114810000D03*
|
||||
D16*
|
||||
X140700183Y-114698941D03*
|
||||
X139626728Y-113419647D03*
|
||||
X138553272Y-112140353D03*
|
||||
D26*
|
||||
X137479817Y-110861059D03*
|
||||
D25*
|
||||
X138553272Y-112140353D03*
|
||||
X139626728Y-113419647D03*
|
||||
X140700183Y-114698941D03*
|
||||
D24*
|
||||
X155514000Y-116210500D03*
|
||||
X156464000Y-116210500D03*
|
||||
X157414000Y-116210500D03*
|
||||
|
@ -1,11 +1,11 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Profile,NP*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||
G04 #@! TF.FilePolarity,Negative*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Paste,Top*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -1,12 +1,12 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
||||
G04 #@! TF.CreationDate,2023-02-26T11:53:10+01:00*
|
||||
G04 #@! TF.CreationDate,2023-03-04T08:18:26+01:00*
|
||||
G04 #@! TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||
G04 #@! TF.SameCoordinates,Original*
|
||||
G04 #@! TF.FileFunction,Legend,Top*
|
||||
G04 #@! TF.FilePolarity,Positive*
|
||||
%FSLAX46Y46*%
|
||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:10*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:26*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*%
|
||||
%TF.CreationDate,2023-02-26T11:53:20+01:00*%
|
||||
%TF.CreationDate,2023-03-04T08:18:30+01:00*%
|
||||
%TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Drillmap*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX45Y45*%
|
||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:20*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:30*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
|
@ -71,7 +71,7 @@ endobj
|
||||
10 0 obj
|
||||
<<
|
||||
/Producer (KiCad PDF)
|
||||
/CreationDate (D:20230226115323)
|
||||
/CreationDate (D:20230304081832)
|
||||
/Creator (PCBNEW)
|
||||
/Title (W800_Smart_Watch-NPTH-drl_map.pdf)
|
||||
>>
|
||||
|
@ -1,7 +1,7 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.10)} date Sun Feb 26 11:53:23 2023
|
||||
; DRILL file {KiCad (6.0.10)} date Sat Mar 4 08:18:32 2023
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2023-02-26T11:53:23+01:00
|
||||
; #@! TF.CreationDate,2023-03-04T08:18:32+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.10)
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
|
@ -1,12 +1,12 @@
|
||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*%
|
||||
%TF.CreationDate,2023-02-26T11:53:20+01:00*%
|
||||
%TF.CreationDate,2023-03-04T08:18:30+01:00*%
|
||||
%TF.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*%
|
||||
%TF.SameCoordinates,Original*%
|
||||
%TF.FileFunction,Drillmap*%
|
||||
%TF.FilePolarity,Positive*%
|
||||
%FSLAX45Y45*%
|
||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-02-26 11:53:20*
|
||||
G04 Created by KiCad (PCBNEW (6.0.10)) date 2023-03-04 08:18:30*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -243,6 +243,10 @@ X14435000Y-10130000D02*
|
||||
X14465000Y-10160000D01*
|
||||
X14465000Y-10130000D02*
|
||||
X14435000Y-10160000D01*
|
||||
X14458000Y-9287000D02*
|
||||
X14488000Y-9317000D01*
|
||||
X14488000Y-9287000D02*
|
||||
X14458000Y-9317000D01*
|
||||
X14463000Y-10018000D02*
|
||||
X14493000Y-10048000D01*
|
||||
X14493000Y-10018000D02*
|
||||
@ -255,22 +259,22 @@ X14463000Y-10589500D02*
|
||||
X14493000Y-10619500D01*
|
||||
X14493000Y-10589500D02*
|
||||
X14463000Y-10619500D01*
|
||||
X14469000Y-9254000D02*
|
||||
X14499000Y-9284000D01*
|
||||
X14499000Y-9254000D02*
|
||||
X14469000Y-9284000D01*
|
||||
X14464000Y-9165000D02*
|
||||
X14494000Y-9195000D01*
|
||||
X14494000Y-9165000D02*
|
||||
X14464000Y-9195000D01*
|
||||
X14483000Y-10374000D02*
|
||||
X14513000Y-10404000D01*
|
||||
X14513000Y-10374000D02*
|
||||
X14483000Y-10404000D01*
|
||||
X14488400Y-9179800D02*
|
||||
X14518400Y-9209800D01*
|
||||
X14518400Y-9179800D02*
|
||||
X14488400Y-9209800D01*
|
||||
X14513800Y-10957800D02*
|
||||
X14543800Y-10987800D01*
|
||||
X14543800Y-10957800D02*
|
||||
X14513800Y-10987800D01*
|
||||
X14517000Y-8426000D02*
|
||||
X14547000Y-8456000D01*
|
||||
X14547000Y-8426000D02*
|
||||
X14517000Y-8456000D01*
|
||||
X14526500Y-9637000D02*
|
||||
X14556500Y-9667000D01*
|
||||
X14556500Y-9637000D02*
|
||||
@ -299,6 +303,10 @@ X14555000Y-9373000D02*
|
||||
X14585000Y-9403000D01*
|
||||
X14585000Y-9373000D02*
|
||||
X14555000Y-9403000D01*
|
||||
X14563000Y-9252000D02*
|
||||
X14593000Y-9282000D01*
|
||||
X14593000Y-9252000D02*
|
||||
X14563000Y-9282000D01*
|
||||
X14564000Y-10379000D02*
|
||||
X14594000Y-10409000D01*
|
||||
X14594000Y-10379000D02*
|
||||
@ -387,6 +395,10 @@ X14718000Y-10795000D02*
|
||||
X14748000Y-10825000D01*
|
||||
X14748000Y-10795000D02*
|
||||
X14718000Y-10825000D01*
|
||||
X14741000Y-9584000D02*
|
||||
X14771000Y-9614000D01*
|
||||
X14771000Y-9584000D02*
|
||||
X14741000Y-9614000D01*
|
||||
X14746000Y-10389000D02*
|
||||
X14776000Y-10419000D01*
|
||||
X14776000Y-10389000D02*
|
||||
@ -395,10 +407,6 @@ X14755100Y-8455900D02*
|
||||
X14785100Y-8485900D01*
|
||||
X14785100Y-8455900D02*
|
||||
X14755100Y-8485900D01*
|
||||
X14767000Y-9578000D02*
|
||||
X14797000Y-9608000D01*
|
||||
X14797000Y-9578000D02*
|
||||
X14767000Y-9608000D01*
|
||||
X14767800Y-10932400D02*
|
||||
X14797800Y-10962400D01*
|
||||
X14797800Y-10932400D02*
|
||||
@ -435,6 +443,10 @@ X14793200Y-10157700D02*
|
||||
X14823200Y-10187700D01*
|
||||
X14823200Y-10157700D02*
|
||||
X14793200Y-10187700D01*
|
||||
X14816000Y-9646000D02*
|
||||
X14846000Y-9676000D01*
|
||||
X14846000Y-9646000D02*
|
||||
X14816000Y-9676000D01*
|
||||
X14825000Y-10389000D02*
|
||||
X14855000Y-10419000D01*
|
||||
X14855000Y-10389000D02*
|
||||
@ -523,10 +535,6 @@ X15064000Y-8679000D02*
|
||||
X15094000Y-8709000D01*
|
||||
X15094000Y-8679000D02*
|
||||
X15064000Y-8709000D01*
|
||||
X15072600Y-9357600D02*
|
||||
X15102600Y-9387600D01*
|
||||
X15102600Y-9357600D02*
|
||||
X15072600Y-9387600D01*
|
||||
X15072600Y-10856200D02*
|
||||
X15102600Y-10886200D01*
|
||||
X15102600Y-10856200D02*
|
||||
@ -559,6 +567,10 @@ X15111000Y-10171000D02*
|
||||
X15141000Y-10201000D01*
|
||||
X15141000Y-10171000D02*
|
||||
X15111000Y-10201000D01*
|
||||
X15122000Y-9360000D02*
|
||||
X15152000Y-9390000D01*
|
||||
X15152000Y-9360000D02*
|
||||
X15122000Y-9390000D01*
|
||||
X15143050Y-9052800D02*
|
||||
X15173050Y-9082800D01*
|
||||
X15173050Y-9052800D02*
|
||||
@ -855,6 +867,10 @@ X15733000Y-11465800D02*
|
||||
X15763000Y-11495800D01*
|
||||
X15763000Y-11465800D02*
|
||||
X15733000Y-11495800D01*
|
||||
X15752000Y-8381000D02*
|
||||
X15782000Y-8411000D01*
|
||||
X15782000Y-8381000D02*
|
||||
X15752000Y-8411000D01*
|
||||
X15758400Y-9814800D02*
|
||||
X15788400Y-9844800D01*
|
||||
X15788400Y-9814800D02*
|
||||
@ -867,10 +883,6 @@ X15783800Y-9332200D02*
|
||||
X15813800Y-9362200D01*
|
||||
X15813800Y-9332200D02*
|
||||
X15783800Y-9362200D01*
|
||||
X15800000Y-8383000D02*
|
||||
X15830000Y-8413000D01*
|
||||
X15830000Y-8383000D02*
|
||||
X15800000Y-8413000D01*
|
||||
X15809200Y-9713200D02*
|
||||
X15839200Y-9743200D01*
|
||||
X15839200Y-9713200D02*
|
||||
@ -1239,6 +1251,10 @@ X16750450Y-9100000D02*
|
||||
X16780450Y-9130000D01*
|
||||
X16780450Y-9100000D02*
|
||||
X16750450Y-9130000D01*
|
||||
X16755000Y-9981000D02*
|
||||
X16785000Y-10011000D01*
|
||||
X16785000Y-9981000D02*
|
||||
X16755000Y-10011000D01*
|
||||
X16790150Y-10932400D02*
|
||||
X16820150Y-10962400D01*
|
||||
X16820150Y-10932400D02*
|
||||
@ -1725,27 +1741,11 @@ X17278333Y-12652619D01*
|
||||
X17268810Y-12681190D01*
|
||||
X17154524Y-12795476D01*
|
||||
X17278333Y-12795476D01*
|
||||
X17402143Y-12595476D02*
|
||||
X17421190Y-12595476D01*
|
||||
X17440238Y-12605000D01*
|
||||
X17449762Y-12614524D01*
|
||||
X17459286Y-12633571D01*
|
||||
X17468810Y-12671667D01*
|
||||
X17468810Y-12719286D01*
|
||||
X17459286Y-12757381D01*
|
||||
X17449762Y-12776428D01*
|
||||
X17440238Y-12785952D01*
|
||||
X17421190Y-12795476D01*
|
||||
X17402143Y-12795476D01*
|
||||
X17383095Y-12785952D01*
|
||||
X17373571Y-12776428D01*
|
||||
X17364048Y-12757381D01*
|
||||
X17354524Y-12719286D01*
|
||||
X17354524Y-12671667D01*
|
||||
X17364048Y-12633571D01*
|
||||
X17373571Y-12614524D01*
|
||||
X17383095Y-12605000D01*
|
||||
X17402143Y-12595476D01*
|
||||
X17449762Y-12662143D02*
|
||||
X17449762Y-12795476D01*
|
||||
X17402143Y-12585952D02*
|
||||
X17354524Y-12728809D01*
|
||||
X17478333Y-12728809D01*
|
||||
X17706905Y-12795476D02*
|
||||
X17706905Y-12595476D01*
|
||||
X17792619Y-12795476D02*
|
||||
|
@ -1,7 +1,7 @@
|
||||
M48
|
||||
; DRILL file {KiCad (6.0.10)} date Sun Feb 26 11:53:23 2023
|
||||
; DRILL file {KiCad (6.0.10)} date Sat Mar 4 08:18:32 2023
|
||||
; FORMAT={-:-/ absolute / metric / decimal}
|
||||
; #@! TF.CreationDate,2023-02-26T11:53:23+01:00
|
||||
; #@! TF.CreationDate,2023-03-04T08:18:32+01:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.10)
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
@ -69,13 +69,14 @@ X144.145Y-98.425
|
||||
X144.23Y-108.42
|
||||
X144.272Y-110.896
|
||||
X144.5Y-101.45
|
||||
X144.73Y-93.02
|
||||
X144.78Y-100.33
|
||||
X144.78Y-104.775
|
||||
X144.78Y-106.045
|
||||
X144.84Y-92.69
|
||||
X144.79Y-91.8
|
||||
X144.98Y-103.89
|
||||
X145.034Y-91.948
|
||||
X145.288Y-109.728
|
||||
X145.32Y-84.41
|
||||
X145.415Y-96.52
|
||||
X145.415Y-97.79
|
||||
X145.415Y-99.06
|
||||
@ -83,6 +84,7 @@ X145.415Y-105.41
|
||||
X145.542Y-101.473
|
||||
X145.669Y-118.364
|
||||
X145.7Y-93.88
|
||||
X145.78Y-92.67
|
||||
X145.79Y-103.94
|
||||
X145.879Y-90.192
|
||||
X146.05Y-100.33
|
||||
@ -105,9 +107,9 @@ X147.193Y-117.83
|
||||
X147.32Y-101.67
|
||||
X147.32Y-106.68
|
||||
X147.33Y-108.1
|
||||
X147.56Y-95.99
|
||||
X147.61Y-104.04
|
||||
X147.701Y-84.709
|
||||
X147.82Y-95.93
|
||||
X147.828Y-109.474
|
||||
X147.828Y-119.38
|
||||
X147.955Y-99.695
|
||||
@ -117,6 +119,7 @@ X148.0Y-118.618
|
||||
X148.005Y-84.101
|
||||
X148.082Y-90.932
|
||||
X148.082Y-101.727
|
||||
X148.31Y-96.61
|
||||
X148.4Y-104.04
|
||||
X148.463Y-89.916
|
||||
X148.54Y-93.4
|
||||
@ -139,7 +142,6 @@ X150.368Y-118.11
|
||||
X150.41Y-101.59
|
||||
X150.724Y-106.782
|
||||
X150.79Y-86.94
|
||||
X150.876Y-93.726
|
||||
X150.876Y-108.712
|
||||
X150.876Y-109.474
|
||||
X150.879Y-110.179
|
||||
@ -148,6 +150,7 @@ X150.927Y-106.07
|
||||
X150.99Y-86.03
|
||||
X151.003Y-113.919
|
||||
X151.26Y-101.86
|
||||
X151.37Y-93.75
|
||||
X151.581Y-90.678
|
||||
X151.638Y-110.998
|
||||
X151.76Y-87.729
|
||||
@ -222,10 +225,10 @@ X157.131Y-109.633
|
||||
X157.2Y-95.7
|
||||
X157.275Y-107.687
|
||||
X157.48Y-114.808
|
||||
X157.67Y-83.96
|
||||
X157.734Y-98.298
|
||||
X157.861Y-112.268
|
||||
X157.988Y-93.472
|
||||
X158.15Y-83.98
|
||||
X158.242Y-97.282
|
||||
X158.27Y-109.72
|
||||
X158.339Y-89.505
|
||||
@ -318,6 +321,7 @@ X167.4Y-103.47
|
||||
X167.589Y-105.258
|
||||
X167.589Y-106.883
|
||||
X167.654Y-91.15
|
||||
X167.7Y-99.96
|
||||
X168.052Y-109.474
|
||||
X168.092Y-94.408
|
||||
X168.2Y-92.2
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer": 36,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_nets": [],
|
||||
@ -62,7 +62,7 @@
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "000d3fc_ffffffff",
|
||||
"visible_layers": "000d37c_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"meta": {
|
||||
|
@ -45,7 +45,7 @@
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"45_degree_only": false,
|
||||
"min_clearance": 0.3
|
||||
"min_clearance": 0.0
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
|
@ -2365,7 +2365,6 @@
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(junction (at 165.1 29.21) (diameter 0) (color 0 0 0 0)
|
||||
(uuid 0052d37e-e6de-4b27-bd9a-838024e8b8c2)
|
||||
)
|
||||
@ -4621,7 +4620,7 @@
|
||||
(property "Reference" "D1" (id 0) (at 20.32 137.16 90)
|
||||
(effects (font (size 1.27 1.27)) (justify right))
|
||||
)
|
||||
(property "Value" "GBLC05" (id 1) (at 17.78 140.97 90)
|
||||
(property "Value" "GBLC05" (id 1) (at 16.51 139.7 90)
|
||||
(effects (font (size 1.27 1.27)) (justify right))
|
||||
)
|
||||
(property "Footprint" "ICs:D_SOD-323" (id 2) (at 25.4 138.43 0)
|
||||
|
BIN
documentation/Display V2/SPEC LH128R-IC15-TP VER A (SPI)+Tp.pdf
Normal file
6
src/W800_SDK_v1.00.10/.vscode/settings.json
vendored
@ -1,6 +0,0 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"wm_include.h": "c",
|
||||
"freertos.h": "c"
|
||||
}
|
||||
}
|
@ -33,6 +33,8 @@ COMPONENTS_$(TARGET) = \
|
||||
$(TOP_DIR)/app/libuser$(LIB_EXT) \
|
||||
$(TOP_DIR)/app/app_drivers/libappdrivers$(LIB_EXT) \
|
||||
$(TOP_DIR)/app/persistency/libpersistency$(LIB_EXT) \
|
||||
$(TOP_DIR)/app/translation/libtranslation$(LIB_EXT) \
|
||||
$(TOP_DIR)/app/translation/libble$(LIB_EXT) \
|
||||
$(TOP_DIR)/lvgl/liblvgl$(LIB_EXT)
|
||||
|
||||
ifeq ($(USE_LIB), 0)
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef APPCONFIG_H
|
||||
#define APPCONFIG_H
|
||||
#ifndef APP_CONFIG_H
|
||||
#define APP_CONFIG_H
|
||||
|
||||
#include "wm_gpio.h"
|
||||
|
||||
@ -8,6 +8,18 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Defines for which platform to compile the firmware for :
|
||||
*
|
||||
* SMART_WATCH_BREADBOARD : the smart watch dev hardware which is on a breadboard
|
||||
* SMART_WATCH_PCB : the smart watch using the PCB
|
||||
*
|
||||
*/
|
||||
#define SMART_WATCH_BREADBOARD (0)
|
||||
#define SMART_WATCH_PCB (1)
|
||||
|
||||
#define HARDWARE_PLATFORM SMART_WATCH_PCB
|
||||
|
||||
/**
|
||||
* @brief Define which kind of logs to display :
|
||||
*
|
||||
@ -31,6 +43,7 @@
|
||||
* @brief i2c
|
||||
*
|
||||
*/
|
||||
#define I2C_CLOCK_SPEED (300000) // 300 kHz seems to be the maximum achievable clock speed before the touch IC behaves funky
|
||||
#define I2C_SCL WM_IO_PA_01
|
||||
#define I2C_SDA WM_IO_PB_19
|
||||
|
||||
@ -66,6 +79,13 @@
|
||||
*/
|
||||
#define BATTERY_VOLTAGE_DIVIDER_ENABLE WM_IO_PB_05
|
||||
|
||||
/**
|
||||
* @brief battery controller IC charged and charging status pins
|
||||
*
|
||||
*/
|
||||
#define BATTERY_CONTROLLER_CHARGING_STATUS WM_IO_PB_03
|
||||
#define BATTERY_CONTROLLER_CHARGED_STATUS WM_IO_PB_04
|
||||
|
||||
/**
|
||||
* @brief battery voltage adc input pin : WM_IO_PA_04 = channel 1
|
||||
*
|
||||
@ -79,4 +99,6 @@
|
||||
#define VIBRATION_MOTOR_ENABLE WM_IO_PB_00
|
||||
#define VIBRATION_MOTOR_PWM_CHANNEL (0)
|
||||
|
||||
#endif //APPCONFIG_H
|
||||
#define BLE_DEVICE_NAME "MDBT42Q_W800SW"
|
||||
|
||||
#endif //APP_CONFIG_H
|
@ -78,7 +78,11 @@ const uint8_t gc9a01_init_seq[] = {
|
||||
0x02, 0, 0x8E, 0xFF,
|
||||
0x02, 0, 0x8F, 0xFF,
|
||||
0x03, 0, 0xB6, 0x00, 0x00,
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
0x02, 0, 0x36, 0x88,
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
0x02, 0, 0x36, 0x48,
|
||||
#endif
|
||||
0x02, 0, 0x3A, 0x55,
|
||||
0x05, 0, 0x90, 0x08, 0x08, 0x08, 0x08,
|
||||
0x02, 0, 0xBD, 0x06,
|
||||
@ -378,7 +382,6 @@ void lcd_set_backlight(LCDConfig_t * const LCDConfig, uint8_t brightness)
|
||||
tls_gpio_cfg(LCDConfig->LCDPWMBacklightPin, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||
tls_gpio_write(LCDConfig->LCDPWMBacklightPin, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void lcd_hardware_reset(LCDConfig_t * const LCDConfig)
|
||||
@ -416,7 +419,7 @@ void lcd_sleep(LCDConfig_t *const LCDConfig, bool state)
|
||||
lcd_set_data_command(LCDConfig, LCD_DATA);
|
||||
}
|
||||
|
||||
void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_t orientation)
|
||||
void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_e orientation)
|
||||
{
|
||||
if(!LCDConfig) return;
|
||||
|
||||
@ -434,6 +437,7 @@ void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_t orientation)
|
||||
|
||||
switch(orientation)
|
||||
{
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
case LCD_ORIENTATION_90:
|
||||
mmc_sdio_driver_write_one(0xE8);
|
||||
break;
|
||||
@ -445,6 +449,19 @@ void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_t orientation)
|
||||
break;
|
||||
default: //Is default orientation eg : 0
|
||||
mmc_sdio_driver_write_one(0x88);
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
case LCD_ORIENTATION_90:
|
||||
mmc_sdio_driver_write_one(0x28);
|
||||
break;
|
||||
case LCD_ORIENTATION_180:
|
||||
mmc_sdio_driver_write_one(0x88);
|
||||
break;
|
||||
case LCD_ORIENTATION_270:
|
||||
mmc_sdio_driver_write_one(0xE8);
|
||||
break;
|
||||
default: //Is default orientation eg : 0
|
||||
mmc_sdio_driver_write_one(0x48);
|
||||
#endif
|
||||
}
|
||||
|
||||
lcd_set_cs(LCDConfig, LCD_RELEASED);
|
||||
@ -505,5 +522,8 @@ static void lcd_set_cs(LCDConfig_t * const LCDConfig, LCDSelect_e selected)
|
||||
|
||||
static void lcd_set_data_command(LCDConfig_t * const LCDConfig, LCDDataCommand_e dataCommand)
|
||||
{
|
||||
// We wait for the mmc sdio driver to be ready before changing the LCD access mode
|
||||
mmc_sdio_driver_blocking_wait_bus_free();
|
||||
|
||||
tls_gpio_write(LCDConfig->LCDDataCommandPin, dataCommand);
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ typedef enum LCDOrientation
|
||||
LCD_ORIENTATION_90,
|
||||
LCD_ORIENTATION_180,
|
||||
LCD_ORIENTATION_270,
|
||||
} LCDOrientation_t;
|
||||
} LCDOrientation_e;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
@ -62,7 +62,7 @@ typedef struct LCDConfig
|
||||
enum tls_io_name LCDResetPin;
|
||||
DrawFinishedCb_t drawFinishedCb;
|
||||
void *cbArg;
|
||||
LCDOrientation_t LCDOrientation;
|
||||
LCDOrientation_e LCDOrientation;
|
||||
} LCDConfig_t;
|
||||
|
||||
/**
|
||||
@ -139,8 +139,12 @@ void lcd_sleep(LCDConfig_t * const LCDConfig, bool state);
|
||||
* @brief Sets the LCD orientation.
|
||||
*
|
||||
* @param LCDConfig a pointer to a user allocated LCDConfig_t structure
|
||||
* @param orientation the value of the orientation to set
|
||||
* @param orientation the value of the orientation to set :
|
||||
* - LCD_ORIENTATION_DEFAULT or LCD_ORIENTATION_0
|
||||
* - LCD_ORIENTATION_90
|
||||
* - LCD_ORIENTATION_180
|
||||
* - LCD_ORIENTATION_270
|
||||
*/
|
||||
void lcd_orientation(LCDConfig_t * const LCDConfig, LCDOrientation_t orientation);
|
||||
void lcd_orientation(LCDConfig_t * const LCDConfig, LCDOrientation_e orientation);
|
||||
|
||||
#endif //LCD_H
|
@ -99,7 +99,7 @@ void mmc_sdio_driver_write_dma_async(uint32_t *data, uint32_t dataLengthInBytes)
|
||||
void mmc_sdio_driver_write_one(uint8_t data)
|
||||
{
|
||||
/* Wait for MMC device to be ready to send the data */
|
||||
while (SDIO_HOST->MMC_IO & 0x01);
|
||||
mmc_sdio_driver_blocking_wait_bus_free();
|
||||
|
||||
SDIO_HOST->BUF_CTL = 0x4820;
|
||||
SDIO_HOST->DATA_BUF[0] = (uint32_t)data;
|
||||
@ -107,19 +107,25 @@ void mmc_sdio_driver_write_one(uint8_t data)
|
||||
/* Start the transfer */
|
||||
SDIO_HOST->MMC_IO = 0x01;
|
||||
/* Wait for MMC device to be done sending the data */
|
||||
while (SDIO_HOST->MMC_IO & 0x01);
|
||||
mmc_sdio_driver_blocking_wait_bus_free();
|
||||
}
|
||||
|
||||
void mmc_sdio_driver_write(const uint8_t *data, uint16_t dataLengthInBytes)
|
||||
{
|
||||
/* Wait for MMC device to be ready to send the data */
|
||||
while (SDIO_HOST->MMC_IO & 0x01);
|
||||
mmc_sdio_driver_blocking_wait_bus_free();
|
||||
|
||||
SDIO_HOST->BUF_CTL = 0x4820;
|
||||
memcpy((void *)SDIO_HOST->DATA_BUF, (void *)data, dataLengthInBytes);
|
||||
SDIO_HOST->MMC_BYTECNTL = dataLengthInBytes;
|
||||
/* Start the transfer */
|
||||
SDIO_HOST->MMC_IO = 0x01;
|
||||
|
||||
/* Wait for MMC device to be done sending the data */
|
||||
mmc_sdio_driver_blocking_wait_bus_free();
|
||||
}
|
||||
|
||||
void mmc_sdio_driver_blocking_wait_bus_free(void)
|
||||
{
|
||||
while (SDIO_HOST->MMC_IO & 0x01);
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ void mmc_sdio_driver_periph_init(DMATransferDoneCb_t DMATransferDoneCb, void *ar
|
||||
* @param dataLengthInBytes the size in bytes of the data to transfer.
|
||||
* Maximum length is 65535 bytes.
|
||||
*/
|
||||
void mmc_sdio_driver_write_dma_async(uint32_t *data, u32 dataLengthInBytes);
|
||||
void mmc_sdio_driver_write_dma_async(uint32_t *data, uint32_t dataLengthInBytes);
|
||||
|
||||
/**
|
||||
* @brief Sends one byte of data to the slave
|
||||
@ -43,4 +43,10 @@ void mmc_sdio_driver_write_one(uint8_t data);
|
||||
*/
|
||||
void mmc_sdio_driver_write(const uint8_t *data, uint16_t dataLengthInBytes);
|
||||
|
||||
/**
|
||||
* @brief Performs a busy wait until the data bus is free for us to use.
|
||||
*
|
||||
*/
|
||||
void mmc_sdio_driver_blocking_wait_bus_free(void);
|
||||
|
||||
#endif //MMC_SDIO_H
|
@ -6,19 +6,107 @@
|
||||
#include "wm_timer.h"
|
||||
#include "wm_pwm.h"
|
||||
|
||||
#define INTERRUPT_POLICY (0)
|
||||
#define POLL_POLICY (1)
|
||||
|
||||
#define BATTERY_CONTROLLER_STATUS_DETECTION_POLICY INTERRUPT_POLICY
|
||||
|
||||
/* Battery voltage and ADC */
|
||||
static int8_t _adc_offset = 0;
|
||||
|
||||
/* Vibration motor timer */
|
||||
static uint8_t _vibration_motor_timer_id = WM_TIMER_ID_INVALID;
|
||||
|
||||
/* Battery charge controller status */
|
||||
static battery_controller_status_e _battery_fsm = BATTERY_CONTROLLER_STATUS_DISCHARGING;
|
||||
static BatteryControllerStatusChangeCb_t _BatteryControllerStatusChangeCb = NULL;
|
||||
|
||||
static void vibration_motor_timer_irq_cb(void *p)
|
||||
{
|
||||
(void)p;
|
||||
tls_pwm_stop(VIBRATION_MOTOR_PWM_CHANNEL);
|
||||
tls_gpio_cfg(VIBRATION_MOTOR_ENABLE, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||
tls_gpio_write(VIBRATION_MOTOR_ENABLE, 0);
|
||||
APP_LOG_DEBUG("Vibration stopped");
|
||||
}
|
||||
|
||||
#if BATTERY_CONTROLLER_STATUS_DETECTION_POLICY == POLL_POLICY
|
||||
static uint8_t _battery_status_timer_id = WM_TIMER_ID_INVALID;
|
||||
|
||||
static void battery_status_timer_irq_cb(void *p)
|
||||
{
|
||||
bool charging = tls_gpio_read(BATTERY_CONTROLLER_CHARGING_STATUS) == 0;
|
||||
bool charged = tls_gpio_read(BATTERY_CONTROLLER_CHARGED_STATUS) == 0;
|
||||
|
||||
battery_controller_status_e old_battery_status = _battery_fsm;
|
||||
|
||||
if(charging && !charged)
|
||||
_battery_fsm = BATTERY_CONTROLLER_STATUS_CHARGING;
|
||||
else if(!charging && charged)
|
||||
_battery_fsm = BATTERY_CONTROLLER_STATUS_CHARGED;
|
||||
else if (!charging && !charged)
|
||||
_battery_fsm = BATTERY_CONTROLLER_STATUS_DISCHARGING;
|
||||
else
|
||||
_battery_fsm = BATTERY_CONTROLLER_STATUS_ERROR;
|
||||
|
||||
if(old_battery_status != _battery_fsm)
|
||||
{
|
||||
// Let's call a user registered callback here
|
||||
APP_LOG_INFO("Battery status changed from %s to %s",
|
||||
battery_controller_status_2_str(old_battery_status),
|
||||
battery_controller_status_2_str(_battery_fsm));
|
||||
|
||||
if(_BatteryControllerStatusChangeCb) _BatteryControllerStatusChangeCb(old_battery_status, _battery_fsm);
|
||||
}
|
||||
}
|
||||
#elif BATTERY_CONTROLLER_STATUS_DETECTION_POLICY == INTERRUPT_POLICY
|
||||
static void battery_controller_irq_cb(void *p)
|
||||
{
|
||||
enum tls_io_name gpio_pin = (enum tls_io_name)p;
|
||||
|
||||
if(BATTERY_CONTROLLER_CHARGING_STATUS == gpio_pin)
|
||||
{
|
||||
tls_clr_gpio_irq_status(BATTERY_CONTROLLER_CHARGING_STATUS);
|
||||
}
|
||||
if(BATTERY_CONTROLLER_CHARGED_STATUS == gpio_pin)
|
||||
{
|
||||
tls_clr_gpio_irq_status(BATTERY_CONTROLLER_CHARGED_STATUS);
|
||||
}
|
||||
|
||||
bool charging = tls_gpio_read(BATTERY_CONTROLLER_CHARGING_STATUS) == 0;
|
||||
bool charged = tls_gpio_read(BATTERY_CONTROLLER_CHARGED_STATUS) == 0;
|
||||
|
||||
battery_controller_status_e old_battery_status = _battery_fsm;
|
||||
|
||||
switch(old_battery_status)
|
||||
{
|
||||
case BATTERY_CONTROLLER_STATUS_CHARGING:
|
||||
if(charged) _battery_fsm = BATTERY_CONTROLLER_STATUS_CHARGED;
|
||||
else if(!charged && !charging) _battery_fsm = BATTERY_CONTROLLER_STATUS_DISCHARGING;
|
||||
break;
|
||||
case BATTERY_CONTROLLER_STATUS_CHARGED:
|
||||
if(!charged && !charging) _battery_fsm = BATTERY_CONTROLLER_STATUS_DISCHARGING;
|
||||
break;
|
||||
case BATTERY_CONTROLLER_STATUS_DISCHARGING:
|
||||
if(charging) _battery_fsm = BATTERY_CONTROLLER_STATUS_CHARGING;
|
||||
break;
|
||||
default:
|
||||
_battery_fsm = BATTERY_CONTROLLER_STATUS_DISCHARGING;
|
||||
break;
|
||||
}
|
||||
|
||||
if(old_battery_status != _battery_fsm)
|
||||
{
|
||||
// Let's call a user registered callback here
|
||||
APP_LOG_INFO("Battery status changed from %s to : %s, IRQ : %u",
|
||||
battery_controller_status_2_str(old_battery_status),
|
||||
battery_controller_status_2_str(_battery_fsm),
|
||||
gpio_pin);
|
||||
|
||||
if(_BatteryControllerStatusChangeCb) _BatteryControllerStatusChangeCb(old_battery_status, _battery_fsm);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void watch_peripherals_io_init(void)
|
||||
{
|
||||
/* We initialize the ADC input as well as the gpio used to enabled the voltage divider bridge */
|
||||
@ -29,6 +117,36 @@ static void watch_peripherals_io_init(void)
|
||||
/* We initialize the output pin for the vibration motor enable pin */
|
||||
tls_gpio_cfg(VIBRATION_MOTOR_ENABLE, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||
tls_gpio_write(VIBRATION_MOTOR_ENABLE, 0);
|
||||
|
||||
/* We initialize the pins used to read the battery controller IC charging and charged statuses */
|
||||
tls_gpio_cfg(BATTERY_CONTROLLER_CHARGED_STATUS, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);
|
||||
tls_gpio_cfg(BATTERY_CONTROLLER_CHARGING_STATUS, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_FLOATING);
|
||||
|
||||
#if BATTERY_CONTROLLER_STATUS_DETECTION_POLICY == INTERRUPT_POLICY
|
||||
tls_gpio_isr_register(BATTERY_CONTROLLER_CHARGED_STATUS, &(battery_controller_irq_cb), (int*) BATTERY_CONTROLLER_CHARGED_STATUS);
|
||||
tls_gpio_irq_enable(BATTERY_CONTROLLER_CHARGED_STATUS, WM_GPIO_IRQ_TRIG_DOUBLE_EDGE); // Enabled when level is changing edge
|
||||
|
||||
tls_gpio_isr_register(BATTERY_CONTROLLER_CHARGING_STATUS, &(battery_controller_irq_cb), (int*) BATTERY_CONTROLLER_CHARGING_STATUS);
|
||||
tls_gpio_irq_enable(BATTERY_CONTROLLER_CHARGING_STATUS, WM_GPIO_IRQ_TRIG_DOUBLE_EDGE); // Enabled when level is changing edge
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef CASE_RETURN_STR
|
||||
#define CASE_RETURN_STR(const) case const: return #const;
|
||||
#endif
|
||||
|
||||
const char *battery_controller_status_2_str(battery_controller_status_e status)
|
||||
{
|
||||
switch(status)
|
||||
{
|
||||
CASE_RETURN_STR(BATTERY_CONTROLLER_STATUS_CHARGING)
|
||||
CASE_RETURN_STR(BATTERY_CONTROLLER_STATUS_DISCHARGING)
|
||||
CASE_RETURN_STR(BATTERY_CONTROLLER_STATUS_CHARGED)
|
||||
CASE_RETURN_STR(BATTERY_CONTROLLER_STATUS_ERROR)
|
||||
|
||||
default:
|
||||
return "Unknown Battery Status";
|
||||
}
|
||||
}
|
||||
|
||||
void watch_peripherals_init(int8_t adcOffset)
|
||||
@ -39,7 +157,7 @@ void watch_peripherals_init(int8_t adcOffset)
|
||||
/* Prevent multiple init call !*/
|
||||
if(WM_TIMER_ID_INVALID == _vibration_motor_timer_id)
|
||||
{
|
||||
/* Let's initialize the timer w'll use to stop the vibration motor */
|
||||
/* Let's initialize the timer we'll use to stop the vibration motor */
|
||||
struct tls_timer_cfg vibration_motor_timer_cfg =
|
||||
{
|
||||
.arg = NULL,
|
||||
@ -51,11 +169,35 @@ void watch_peripherals_init(int8_t adcOffset)
|
||||
_vibration_motor_timer_id = tls_timer_create(&vibration_motor_timer_cfg);
|
||||
|
||||
if(WM_TIMER_ID_INVALID == _vibration_motor_timer_id)
|
||||
APP_LOG_ERROR("Failed to create timer");
|
||||
APP_LOG_ERROR("Failed to create vibration motor timer");
|
||||
}
|
||||
#if BATTERY_CONTROLLER_STATUS_DETECTION_POLICY == POLL_POLICY
|
||||
if(WM_TIMER_ID_INVALID == _battery_status_timer_id)
|
||||
{
|
||||
struct tls_timer_cfg battery_status_timer_cfg =
|
||||
{
|
||||
.arg = NULL,
|
||||
.callback = &(battery_status_timer_irq_cb),
|
||||
.unit = TLS_TIMER_UNIT_MS,
|
||||
.is_repeat = true,
|
||||
.timeout = 200
|
||||
};
|
||||
_battery_status_timer_id = tls_timer_create(&battery_status_timer_cfg);
|
||||
|
||||
if(WM_TIMER_ID_INVALID == _battery_status_timer_id)
|
||||
APP_LOG_ERROR("Failed to create battery status timer");
|
||||
else
|
||||
tls_timer_start(_battery_status_timer_id);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
uint16_t watch_peripherals_get_battery_voltage(Battery_Unit_e unit)
|
||||
void watch_peripherals_register_battery_controller_status_change_cb(BatteryControllerStatusChangeCb_t BatteryControllerStatusChangeCb)
|
||||
{
|
||||
_BatteryControllerStatusChangeCb = BatteryControllerStatusChangeCb;
|
||||
}
|
||||
|
||||
uint16_t watch_peripherals_get_battery_voltage(battery_unit_e unit)
|
||||
{
|
||||
tls_gpio_write(BATTERY_VOLTAGE_DIVIDER_ENABLE, 1);
|
||||
int batteryVoltage = adc_get_inputVolt(BATTERY_VOLTAGE_ADC_CHANNEL, 1, 1) * 2 + _adc_offset;
|
||||
@ -63,10 +205,10 @@ uint16_t watch_peripherals_get_battery_voltage(Battery_Unit_e unit)
|
||||
|
||||
switch (unit)
|
||||
{
|
||||
case Battery_Unit_mV:
|
||||
case battery_unit_mv:
|
||||
return batteryVoltage < 0 ? 0 : batteryVoltage;
|
||||
break;
|
||||
case Battery_Unit_percent:
|
||||
case battery_unit_percent:
|
||||
return battery_voltage_to_percentage(batteryVoltage < 0 ? 0 : batteryVoltage);
|
||||
break;
|
||||
default:
|
||||
@ -94,9 +236,15 @@ uint8_t battery_voltage_to_percentage(uint16_t voltage_in_mV)
|
||||
return (i+1) * 5;
|
||||
}
|
||||
|
||||
battery_controller_status_e watch_peripherals_get_battery_controller_status(void)
|
||||
{
|
||||
return _battery_fsm;
|
||||
}
|
||||
|
||||
void watch_peripherals_vibrate(uint8_t strength, uint32_t durationMs)
|
||||
{
|
||||
APP_LOG_DEBUG("Vibration started");
|
||||
/* No need to do anything if the duration is 0 or if the strength is 0 */
|
||||
if(!strength || !durationMs) return;
|
||||
/* We start the timer which will stop the vibration after durationMs time */
|
||||
tls_timer_change(_vibration_motor_timer_id, durationMs);
|
||||
wm_pwm0_config(VIBRATION_MOTOR_ENABLE);
|
||||
@ -104,3 +252,15 @@ void watch_peripherals_vibrate(uint8_t strength, uint32_t durationMs)
|
||||
tls_pwm_duty_set(VIBRATION_MOTOR_PWM_CHANNEL, strength);
|
||||
tls_timer_start(_vibration_motor_timer_id);
|
||||
}
|
||||
|
||||
void watch_peripherals_set_brightness(uint8_t brightness)
|
||||
{
|
||||
extern LCDConfig_t LCDConfig;
|
||||
lcd_set_backlight(&LCDConfig, brightness);
|
||||
}
|
||||
|
||||
void watch_peripherals_set_orientation(LCDOrientation_e orientation)
|
||||
{
|
||||
extern LCDConfig_t LCDConfig;
|
||||
lcd_orientation(&LCDConfig, orientation);
|
||||
}
|
||||
|
@ -4,13 +4,32 @@
|
||||
*/
|
||||
#ifndef WATCH_PERIPHERALS_H
|
||||
#define WATCH_PERIPHERALS_H
|
||||
#include "lcd.h"
|
||||
#include "wm_type_def.h"
|
||||
|
||||
typedef enum Battery_Unit
|
||||
typedef enum battery_unit
|
||||
{
|
||||
Battery_Unit_mV = 0,
|
||||
Battery_Unit_percent
|
||||
} Battery_Unit_e;
|
||||
battery_unit_mv = 0,
|
||||
battery_unit_percent
|
||||
} battery_unit_e;
|
||||
|
||||
typedef enum battery_controller_status
|
||||
{
|
||||
BATTERY_CONTROLLER_STATUS_DISCHARGING = 0,
|
||||
BATTERY_CONTROLLER_STATUS_CHARGING,
|
||||
BATTERY_CONTROLLER_STATUS_CHARGED,
|
||||
BATTERY_CONTROLLER_STATUS_ERROR
|
||||
} battery_controller_status_e;
|
||||
|
||||
typedef void (*BatteryControllerStatusChangeCb_t)(battery_controller_status_e old, battery_controller_status_e new);
|
||||
|
||||
/**
|
||||
* @brief Helper function to easily print the battery status enumeration name
|
||||
*
|
||||
* @param status the enumeration value for which to get the name
|
||||
* @return const char* a string representing the enumeration value
|
||||
*/
|
||||
const char *battery_controller_status_2_str(battery_controller_status_e status);
|
||||
|
||||
/**
|
||||
* @brief Inits the watch peripherals driver.
|
||||
@ -20,6 +39,14 @@ typedef enum Battery_Unit
|
||||
*/
|
||||
void watch_peripherals_init(int8_t adcOffset);
|
||||
|
||||
/**
|
||||
* @brief Registers the user provided callback function to notify the battery controller status change event
|
||||
* @note This function should be as short as possible, do not call LVGL functions in it.
|
||||
*
|
||||
* @param BatteryStatusChangeCb a pointer to the function having the right definition.
|
||||
*/
|
||||
void watch_peripherals_register_battery_controller_status_change_cb(BatteryControllerStatusChangeCb_t BatteryStatusChangeCb);
|
||||
|
||||
/**
|
||||
* @brief Reads and returns the current battery voltage in mV or it's corresponding capacity in percentage.
|
||||
* This function takes into account the adcOffset parameter provided in the @ref watch_peripherals_init
|
||||
@ -29,7 +56,7 @@ void watch_peripherals_init(int8_t adcOffset);
|
||||
* @param unit the unit of the data to be returned : mV or corresponding capacity in percentage
|
||||
* @return uint16_t the voltage in mV or the battery left capacity in %
|
||||
*/
|
||||
uint16_t watch_peripherals_get_battery_voltage(Battery_Unit_e unit);
|
||||
uint16_t watch_peripherals_get_battery_voltage(battery_unit_e unit);
|
||||
|
||||
/**
|
||||
* @brief Converts the given battery voltage to the corresponding battery capacity for a single cell LiPo only (4.2V to 3.2V)
|
||||
@ -39,6 +66,14 @@ uint16_t watch_peripherals_get_battery_voltage(Battery_Unit_e unit);
|
||||
*/
|
||||
uint8_t battery_voltage_to_percentage(uint16_t voltage_in_mV);
|
||||
|
||||
/**
|
||||
* @brief Returns the current battery controller IC status.
|
||||
* It can be one of the following :
|
||||
*
|
||||
* @return battery_controller_status_e BATTERY_CHARGING, BATTERY_CHARGED, BATTERY_DISCHARGING and BATTERY_ERROR.
|
||||
*/
|
||||
battery_controller_status_e watch_peripherals_get_battery_controller_status(void);
|
||||
|
||||
/**
|
||||
* @brief Triggers the vibration motor to vibrate at the provided strength for the set duration in ms.
|
||||
*
|
||||
@ -47,4 +82,22 @@ uint8_t battery_voltage_to_percentage(uint16_t voltage_in_mV);
|
||||
*/
|
||||
void watch_peripherals_vibrate(uint8_t strength, uint32_t durationMs);
|
||||
|
||||
/**
|
||||
* @brief Sets the brightness of the LCD display
|
||||
*
|
||||
* @param brightness from 0 (backlight off) to 255 backlight fully on
|
||||
*/
|
||||
void watch_peripherals_set_brightness(uint8_t brightness);
|
||||
|
||||
/**
|
||||
* @brief Sets the orientation of the LCD display
|
||||
*
|
||||
* @param orientation the value of the orientation to set :
|
||||
* - LCD_ORIENTATION_DEFAULT or LCD_ORIENTATION_0
|
||||
* - LCD_ORIENTATION_90
|
||||
* - LCD_ORIENTATION_180
|
||||
* - LCD_ORIENTATION_270
|
||||
*/
|
||||
void watch_peripherals_set_orientation(LCDOrientation_e orientation);
|
||||
|
||||
#endif //WATCH_PERIPHERALS_H
|
@ -1,5 +1,5 @@
|
||||
#ifndef APPLOG_H
|
||||
#define APPLOG_G
|
||||
#ifndef APP_LOG_H
|
||||
#define APP_LOG_G
|
||||
|
||||
#include "app_common.h"
|
||||
#include "app_config.h"
|
||||
@ -34,4 +34,4 @@
|
||||
#define APP_LOG_DEBUG(message, ...) do{}while(0)
|
||||
#endif
|
||||
|
||||
#endif //APPLOG_H
|
||||
#endif //APP_LOG_H
|
||||
|
15
src/W800_SDK_v1.00.10/app/ble/Makefile
Normal file
@ -0,0 +1,15 @@
|
||||
TOP_DIR = ../..
|
||||
sinclude $(TOP_DIR)/tools/w800/conf.mk
|
||||
|
||||
ifndef PDIR
|
||||
GEN_LIBS = libble$(LIB_EXT)
|
||||
endif
|
||||
|
||||
#DEFINES +=
|
||||
|
||||
sinclude $(TOP_DIR)/tools/w800/rules.mk
|
||||
|
||||
INCLUDES := $(INCLUDES) -I $(PDIR)include
|
||||
|
||||
PDIR := ../$(PDIR)
|
||||
sinclude $(PDIR)Makefile
|
91
src/W800_SDK_v1.00.10/app/ble/ble_modem.c
Normal file
@ -0,0 +1,91 @@
|
||||
#include "ble_modem.h"
|
||||
#include "app_common.h"
|
||||
#include "host/ble_hs.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "wm_bt_def.h"
|
||||
#include "wm_bt_app.h"
|
||||
#include "wm_bt_util.h"
|
||||
#include "ble_service.h"
|
||||
|
||||
//Is needed for the BT off workaround
|
||||
#include "wm_wifi.h"
|
||||
|
||||
bool ble_modem_on(bool startService)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
bool serviceStartSuccess = true;
|
||||
uint8_t uart_no = 0xFF;
|
||||
tls_appl_trace_level = TLS_BT_LOG_VERBOSE; //Should be set with a config define
|
||||
|
||||
if(bt_adapter_state == WM_BT_STATE_ON) {
|
||||
TLS_BT_APPL_TRACE_VERBOSE("ble modem already on"NEW_LINE);
|
||||
return true;
|
||||
}
|
||||
|
||||
TLS_BT_APPL_TRACE_DEBUG("ble modem running, uart_no=%d, log_level=%d"NEW_LINE, uart_no,
|
||||
tls_appl_trace_level);
|
||||
status = tls_bt_init(uart_no);
|
||||
|
||||
if((status != BLE_HS_ENOERR) && (status != BLE_HS_EALREADY)) {
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, tls_bt_init ret:%s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
|
||||
// Start the ble service if it was asked and if it is not yet started
|
||||
if(startService && !ble_service_is_started())
|
||||
serviceStartSuccess = ble_service_start();
|
||||
|
||||
return ((status == BLE_HS_ENOERR || status == BLE_HS_EALREADY) && serviceStartSuccess) ? true : false;
|
||||
}
|
||||
|
||||
bool ble_modem_off(void)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
bool serviceStopSuccess = true;
|
||||
TLS_BT_APPL_TRACE_DEBUG("ble modem off"NEW_LINE);
|
||||
|
||||
if(bt_adapter_state == WM_BT_STATE_OFF)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("ble modem already off"NEW_LINE);
|
||||
return TLS_BT_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if(ble_service_is_started())
|
||||
{
|
||||
serviceStopSuccess = ble_service_stop();
|
||||
}
|
||||
|
||||
// Let's make a busy wait on the status of the ble service:
|
||||
uint8_t timeout = 0;
|
||||
while(ble_service_is_started())
|
||||
{
|
||||
tls_os_time_delay(pdMS_TO_TICKS(5));
|
||||
|
||||
// Service is stuck ? waiting up to 300 ms for it to stop
|
||||
if(++timeout > 60)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_service_stop timeout "NEW_LINE, __FUNCTION__);
|
||||
return serviceStopSuccess;
|
||||
}
|
||||
};
|
||||
|
||||
status = tls_bt_deinit();
|
||||
|
||||
if((status != BLE_HS_ENOERR) && (status != BLE_HS_EALREADY)) {
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, tls_bt_deinit ret:%s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
|
||||
if(status != BLE_HS_EALREADY)
|
||||
{
|
||||
//Starting a wifi scan really stops the BT modem ?? Why ? I don't know
|
||||
tls_wifi_scan();
|
||||
}
|
||||
|
||||
return ((status == BLE_HS_ENOERR || status == BLE_HS_EALREADY) && serviceStopSuccess) ? true : false;
|
||||
}
|
||||
|
||||
bool is_ble_modem_on(void)
|
||||
{
|
||||
if(bt_adapter_state == WM_BT_STATE_OFF || bt_system_action != WM_BT_SYSTEM_ACTION_IDLE)
|
||||
return false;
|
||||
return true;
|
||||
}
|
32
src/W800_SDK_v1.00.10/app/ble/ble_modem.h
Normal file
@ -0,0 +1,32 @@
|
||||
#ifndef BLE_MODEM_H
|
||||
#define BLE_MODEM_H
|
||||
|
||||
#include "wm_type_def.h"
|
||||
|
||||
/**
|
||||
* @brief Turns the BLE modem on
|
||||
*
|
||||
* @param startService to start the ble service when turning the modem on
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_modem_on(bool startService);
|
||||
|
||||
/**
|
||||
* @brief Turns the BLE modem off
|
||||
* @note If the ble service was started, then it will automatically be turned off with the modem
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_modem_off(void);
|
||||
|
||||
/**
|
||||
* @brief Find out if the modem is turned on or not
|
||||
*
|
||||
* @return true if turned on
|
||||
* @return false if turned off
|
||||
*/
|
||||
bool is_ble_modem_on(void);
|
||||
|
||||
#endif //BLE_MODEM_H
|
788
src/W800_SDK_v1.00.10/app/ble/ble_service.c
Normal file
@ -0,0 +1,788 @@
|
||||
#include "ble_service.h"
|
||||
#include "app_common.h"
|
||||
#include "ble_modem.h"
|
||||
#include "host/ble_hs.h"
|
||||
#include "services/gap/ble_svc_gap.h"
|
||||
#include "wm_bt_util.h"
|
||||
#include "bluetooth_sig_values.h"
|
||||
|
||||
#define USABLE_DEFAULT_MTU (20) //23 - 3 of header bytes
|
||||
|
||||
/* ble service internal workings attributes */
|
||||
static volatile ble_service_state_e _ble_service_state = BLE_SERVICE_MODE_STOPPED;
|
||||
static nus_data_rx_fn_t _ble_service_nus_data_rx_cb = NULL;
|
||||
static ble_service_state_change_fn_t _ble_service_state_change_cb = NULL;
|
||||
|
||||
/* Connection handle to the connected device : only one simultaneous connection */
|
||||
static uint16_t ble_device_conn_handle = BLE_HS_CONN_HANDLE_NONE;
|
||||
static uint16_t usable_mtu = USABLE_DEFAULT_MTU;
|
||||
|
||||
/**
|
||||
* @brief Structure used to store the various data to carry out a chunked notification or indication data transfer
|
||||
*
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint16_t length; // The length of the data being sent
|
||||
uint16_t offset; // The offset used to be ableto send the next chunk of data in the array
|
||||
uint16_t sent_chunk_size; // The size of the chunk sent
|
||||
const uint8_t *data; // The address of the data to send
|
||||
bool transfer_in_progress; // Is a transfer already in progress ?
|
||||
} data_being_sent_t;
|
||||
|
||||
// Only one transfer of a type () can occur at any given time
|
||||
static data_being_sent_t notification_data = {.data = NULL, .length = 0, .offset = 0, .transfer_in_progress = false};
|
||||
static data_being_sent_t indication_data = {.data = NULL, .length = 0, .offset = 0, .transfer_in_progress = false};
|
||||
|
||||
static struct ble_gap_event_listener ble_gap_event_listener;
|
||||
|
||||
static int battery_level_char_access_cb(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg);
|
||||
static uint16_t battery_level_char_handle = 0;
|
||||
static uint8_t battery_level_value = 42;
|
||||
|
||||
|
||||
static int gatt_nus_char_access_cb(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg);
|
||||
static const ble_uuid128_t gatt_nus_service_uuid = BLE_UUID128_INIT(0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x01, 0x00, 0x40, 0x6E);
|
||||
|
||||
static uint16_t gatt_nus_char_rx_handle = 0;
|
||||
static const ble_uuid128_t gatt_nus_char_rx_uuid = BLE_UUID128_INIT(0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x02, 0x00, 0x40, 0x6E);
|
||||
|
||||
static uint16_t gatt_nus_char_tx_handle = 0;
|
||||
static const ble_uuid128_t gatt_nus_char_tx_uuid = BLE_UUID128_INIT(0x9E, 0xCA, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x03, 0x00, 0x40, 0x6E);
|
||||
|
||||
static struct ble_gatt_svc_def gatt_svc[] =
|
||||
{
|
||||
{
|
||||
.type = BLE_GATT_SVC_TYPE_PRIMARY,
|
||||
.uuid = BLE_UUID16_DECLARE(BLE_DEVICE_ADV_SERVICE),
|
||||
.characteristics = (struct ble_gatt_chr_def[])
|
||||
{
|
||||
{
|
||||
.uuid = BLE_UUID16_DECLARE(0x2A19),
|
||||
.val_handle = &battery_level_char_handle,
|
||||
.access_cb = &(battery_level_char_access_cb),
|
||||
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_NOTIFY
|
||||
},
|
||||
{
|
||||
.uuid = NULL
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.type = BLE_GATT_SVC_TYPE_PRIMARY,
|
||||
.uuid = &gatt_nus_service_uuid.u,
|
||||
.characteristics = (struct ble_gatt_chr_def[])
|
||||
{
|
||||
{
|
||||
.uuid = &gatt_nus_char_rx_uuid.u,
|
||||
.val_handle = &gatt_nus_char_rx_handle,
|
||||
.access_cb = &(gatt_nus_char_access_cb),
|
||||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_WRITE_NO_RSP
|
||||
}
|
||||
,
|
||||
{
|
||||
.uuid = &gatt_nus_char_tx_uuid.u,
|
||||
.val_handle = &gatt_nus_char_tx_handle,
|
||||
.access_cb = &(gatt_nus_char_access_cb),
|
||||
.flags = BLE_GATT_CHR_F_NOTIFY
|
||||
}
|
||||
,
|
||||
{
|
||||
.uuid = NULL
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
.type = BLE_GATT_SVC_TYPE_END
|
||||
}
|
||||
};
|
||||
|
||||
static bool ble_service_define_gatt(const struct ble_gatt_svc_def *gatt_svc);
|
||||
static bool ble_service_advertise(bool enable);
|
||||
static int ble_gap_event_cb(struct ble_gap_event *event, void *arg);
|
||||
static int ble_advertise_gap_event_cb(struct ble_gap_event *event, void *arg);
|
||||
static void print_conn_desc(const struct ble_gap_conn_desc *desc);
|
||||
// Raw because it doesn't handle payload fragmentation if mtu size is smaller than the payload size
|
||||
static bool ble_service_send_raw_custom_notification(uint16_t characteristic_handle, const uint8_t *data, uint16_t length);
|
||||
static bool ble_service_send_custom_notification(uint16_t characteristic_handle, data_being_sent_t * const data);
|
||||
static void reset_data_being_sent(data_being_sent_t * const data);
|
||||
|
||||
// Needed to get the reponse after a mtu exchange request
|
||||
static int ble_gatt_mtu_cb(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t mtu, void *arg);
|
||||
|
||||
const char *ble_service_state_2_str(ble_service_state_e state)
|
||||
{
|
||||
switch(state) {
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_STOPPED)
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_IDLE)
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_ADVERTISING)
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_CONNECTED)
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_INDICATING)
|
||||
CASE_RETURN_STR(BLE_SERVICE_MODE_EXITING)
|
||||
default:
|
||||
return "unkown ble service state";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* PUBLIC FUNCTION DEFINITION
|
||||
*/
|
||||
|
||||
bool ble_service_start(void)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
// 1 We first check if the BLE service is stopped
|
||||
if(_ble_service_state != BLE_SERVICE_MODE_STOPPED)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble service already running (%s)"NEW_LINE, __FUNCTION__, ble_service_state_2_str(_ble_service_state));
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2 We check if the BLE MODEM is turned on
|
||||
if(!is_ble_modem_on())
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble modem is not turned on"NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 3 We set our device name and appearance
|
||||
if((status = ble_svc_gap_device_name_set(BLE_DEVICE_NAME)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_svc_gap_device_name_set "NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
|
||||
if((status = ble_svc_gap_device_appearance_set(BLE_DEVICE_APPEARANCE)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_svc_gap_device_appearance_set "NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
|
||||
// 4 We register our gatt (service structure)
|
||||
if(!ble_service_define_gatt(gatt_svc))
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, failed to define gatt"NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
// 5 We register a gap event handler callback
|
||||
if((status = ble_gap_event_listener_register(&ble_gap_event_listener, &(ble_gap_event_cb), NULL)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gap_event_listener_register %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 6 We are now ready to make all registered services available to peers
|
||||
if((status = ble_gatts_start()) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gatts_start failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
// 7 Finally we can start advertising
|
||||
if(!ble_service_advertise(true))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
_ble_service_state = BLE_SERVICE_MODE_ADVERTISING;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ble_service_stop(void)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
// 1 We first check if the BLE service is not stopped
|
||||
if(_ble_service_state == BLE_SERVICE_MODE_STOPPED)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble service already stopped"NEW_LINE, __FUNCTION__);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 2 We check if the BLE MODEM is turned on
|
||||
if(!is_ble_modem_on())
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble modem is not turned on"NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
switch(_ble_service_state)
|
||||
{
|
||||
case BLE_SERVICE_MODE_CONNECTED:
|
||||
case BLE_SERVICE_MODE_INDICATING:
|
||||
status = ble_gap_terminate(ble_device_conn_handle, BLE_ERR_REM_USER_CONN_TERM);
|
||||
if(status == BLE_HS_ENOERR)
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_EXITING;
|
||||
}
|
||||
else //BLE_HS_EDISABLED || BLE_HS_ENOTCONN or any other error
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_terminate %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
_ble_service_state = BLE_SERVICE_MODE_STOPPED;
|
||||
//Unregister gap event listener
|
||||
if((status = ble_gap_event_listener_unregister(&ble_gap_event_listener)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_event_listener_unregister %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case BLE_SERVICE_MODE_ADVERTISING:
|
||||
if(!ble_service_advertise(false))
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_service_advertise failed to stop"NEW_LINE, __FUNCTION__);
|
||||
}
|
||||
else
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_STOPPED;
|
||||
//Unregister gap event listener
|
||||
if((status = ble_gap_event_listener_unregister(&ble_gap_event_listener)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_event_listener_unregister %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: //Just to keep compiler happy since BLE_SERVICE_MODE_STOPPED is rulled out earlier
|
||||
break;
|
||||
}
|
||||
|
||||
if(_ble_service_state == BLE_SERVICE_MODE_STOPPED)
|
||||
{
|
||||
// We finally clean the gatt registered services
|
||||
if((status = ble_gatts_reset()) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gatts_reset %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ble_service_is_started(void)
|
||||
{
|
||||
return _ble_service_state != BLE_SERVICE_MODE_STOPPED;
|
||||
}
|
||||
|
||||
bool ble_service_is_device_connected(void)
|
||||
{
|
||||
return _ble_service_state == BLE_SERVICE_MODE_CONNECTED;
|
||||
}
|
||||
|
||||
void ble_service_register_state_change_cb(ble_service_state_change_fn_t ble_service_state_change_cb)
|
||||
{
|
||||
_ble_service_state_change_cb = ble_service_state_change_cb;
|
||||
}
|
||||
|
||||
ble_service_state_e ble_service_get_state(void)
|
||||
{
|
||||
return _ble_service_state;
|
||||
}
|
||||
|
||||
bool ble_service_update_connection_parameters(
|
||||
uint16_t itvl_min,
|
||||
uint16_t itvl_max,
|
||||
uint16_t latency,
|
||||
uint16_t supervision_timeout,
|
||||
uint16_t min_ce_len,
|
||||
uint16_t max_ce_len)
|
||||
{
|
||||
if(BLE_HS_CONN_HANDLE_NONE == ble_device_conn_handle)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, no active connection" NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
struct ble_gap_upd_params gap_params_to_apply = {0};
|
||||
gap_params_to_apply.itvl_min = itvl_min;
|
||||
gap_params_to_apply.itvl_max = itvl_max;
|
||||
gap_params_to_apply.latency = latency;
|
||||
gap_params_to_apply.supervision_timeout = supervision_timeout;
|
||||
gap_params_to_apply.min_ce_len = min_ce_len;
|
||||
gap_params_to_apply.max_ce_len = max_ce_len;
|
||||
|
||||
if ((status = ble_gap_update_params(ble_device_conn_handle, &gap_params_to_apply)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gap_update_params failed %s" NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ble_service_request_mtu_exchange(void)
|
||||
{
|
||||
if(BLE_HS_CONN_HANDLE_NONE == ble_device_conn_handle)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, no active connection" NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
if((status = ble_gattc_exchange_mtu(ble_device_conn_handle, &(ble_gatt_mtu_cb), NULL)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gattc_exchange_mtu %s" NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ble_service_send_nus_data(const uint8_t *data, uint16_t length)
|
||||
{
|
||||
// The NUS is TX is using notifications
|
||||
if(notification_data.transfer_in_progress)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, a transfer is already in progress"NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
notification_data.transfer_in_progress = true;
|
||||
notification_data.data = data;
|
||||
notification_data.length = length;
|
||||
|
||||
return ble_service_send_custom_notification(gatt_nus_char_tx_handle, ¬ification_data);
|
||||
}
|
||||
|
||||
void ble_service_register_nus_data_rx_cb(nus_data_rx_fn_t nus_data_rx_cb)
|
||||
{
|
||||
_ble_service_nus_data_rx_cb = nus_data_rx_cb;
|
||||
}
|
||||
/**
|
||||
* PRIVATE FUNCTION DEFINITION
|
||||
* Used for the internal workings of the service
|
||||
*/
|
||||
|
||||
static bool ble_service_send_raw_custom_notification(uint16_t characteristic_handle, const uint8_t *data, uint16_t length)
|
||||
{
|
||||
if(BLE_HS_CONN_HANDLE_NONE == ble_device_conn_handle)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, no active connection" NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!data || !length)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, no data" NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
int status = BLE_HS_ENOERR;
|
||||
struct os_mbuf *om_buf = ble_hs_mbuf_from_flat(data, length);
|
||||
|
||||
if(!om_buf)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_hs_mbuf_from_flat" NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
if((status = ble_gattc_notify_custom(ble_device_conn_handle, characteristic_handle, om_buf)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_hs_mbuf_from_flat %s" NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool ble_service_send_custom_notification(uint16_t characteristic_handle, data_being_sent_t * const notif_data)
|
||||
{
|
||||
if(!notif_data)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, notif_data is NULL"NEW_LINE, __FUNCTION__);
|
||||
return false;
|
||||
}
|
||||
|
||||
// We compute the maximum size of the data we can send:
|
||||
uint16_t remaining_data_to_send = notif_data->length - notif_data->offset;
|
||||
notif_data->sent_chunk_size = remaining_data_to_send <= usable_mtu ? remaining_data_to_send : usable_mtu;
|
||||
|
||||
if(!ble_service_send_raw_custom_notification(characteristic_handle, ¬if_data->data[notif_data->offset], notif_data->sent_chunk_size))
|
||||
{
|
||||
//Transfer failed :
|
||||
reset_data_being_sent(notif_data);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int ble_gatt_mtu_cb(uint16_t conn_handle, const struct ble_gatt_error *error, uint16_t mtu, void *arg)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_DEBUG("ble_gatt_mtu_cb"NEW_LINE);
|
||||
|
||||
switch(error->status)
|
||||
{
|
||||
case 0:
|
||||
TLS_BT_APPL_TRACE_DEBUG("mtu exchange complete: conn_handle=%d mtu=%d"NEW_LINE,
|
||||
conn_handle, mtu);
|
||||
usable_mtu = mtu - 3;
|
||||
break;
|
||||
default:
|
||||
TLS_BT_APPL_TRACE_ERROR("Update MTU failed...error->status=%d"NEW_LINE, error->status);
|
||||
break;
|
||||
}
|
||||
|
||||
return BLE_HS_ENOERR;
|
||||
}
|
||||
|
||||
static bool ble_service_define_gatt(const struct ble_gatt_svc_def *gatt_svc)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
if((status = ble_gatts_count_cfg(gatt_svc)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gatts_count_cfg failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
if((status = ble_gatts_add_svcs(gatt_svc)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gatts_add_svcs failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
return status == BLE_HS_ENOERR ? true : false;
|
||||
}
|
||||
|
||||
static bool ble_service_advertise(bool enable)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
|
||||
if(enable)
|
||||
{
|
||||
struct ble_hs_adv_fields advertisement_fields = {0};
|
||||
uint8_t own_addr_type = BLE_OWN_ADDR_RANDOM;
|
||||
|
||||
advertisement_fields.flags = BLE_HS_ADV_F_DISC_GEN | BLE_HS_ADV_F_BREDR_UNSUP;
|
||||
|
||||
advertisement_fields.appearance = ble_svc_gap_device_appearance();
|
||||
advertisement_fields.appearance_is_present = 1;
|
||||
|
||||
// Set the name of a watch supported by GB
|
||||
#ifdef GADGETBRIDGE_SUPPORT
|
||||
static const char dev_name[12] = "Bangle.js 2";
|
||||
advertisement_fields.name = (uint8_t *)dev_name;//ble_svc_gap_device_name();
|
||||
advertisement_fields.name_len = 11;//strlen(ble_svc_gap_device_name());
|
||||
#else
|
||||
advertisement_fields.name = (uint8_t *)ble_svc_gap_device_name();
|
||||
advertisement_fields.name_len = strlen(ble_svc_gap_device_name());
|
||||
#endif
|
||||
|
||||
advertisement_fields.name_is_complete = 1;
|
||||
|
||||
advertisement_fields.uuids16 = (ble_uuid16_t[])
|
||||
{
|
||||
BLE_UUID16_INIT(BLE_DEVICE_ADV_SERVICE)
|
||||
};
|
||||
advertisement_fields.num_uuids16 = 1;
|
||||
advertisement_fields.uuids16_is_complete = 1;
|
||||
|
||||
// Lets apply the advertisement data
|
||||
if((status = ble_gap_adv_set_fields(&advertisement_fields)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gap_adv_set_fields failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
|
||||
// We the device address
|
||||
uint8_t device_addr[6] = {0};
|
||||
extern int tls_get_bt_mac_addr(u8 *mac);
|
||||
tls_get_bt_mac_addr(device_addr);
|
||||
|
||||
// Make sure the the device address is compliant with the random address specification :
|
||||
device_addr[5] |= 0xC0;
|
||||
|
||||
if((status = ble_hs_id_set_rnd(device_addr)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_hs_id_set_rnd failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("addr type : %s"NEW_LINE"device addr : %02X:%02X:%02X:%02X:%02X:%02X"NEW_LINE,
|
||||
tls_bt_addr_type_2_str(own_addr_type),
|
||||
device_addr[5],
|
||||
device_addr[4],
|
||||
device_addr[3],
|
||||
device_addr[2],
|
||||
device_addr[1],
|
||||
device_addr[0]);
|
||||
}
|
||||
|
||||
// We are now ready to configure the advertisement parameters
|
||||
struct ble_gap_adv_params advertisement_params = {0};
|
||||
|
||||
advertisement_params.conn_mode = BLE_GAP_CONN_MODE_UND;
|
||||
advertisement_params.disc_mode = BLE_GAP_DISC_MODE_GEN;
|
||||
|
||||
advertisement_params.itvl_min = 160;
|
||||
advertisement_params.itvl_max = 160; //160 / 0.625 = 100 ms
|
||||
advertisement_params.filter_policy = 0;
|
||||
advertisement_params.channel_map = 0; // Use sane default
|
||||
advertisement_params.high_duty_cycle = 0;
|
||||
|
||||
if((status = ble_gap_adv_start(BLE_OWN_ADDR_RANDOM, NULL, BLE_HS_FOREVER, &advertisement_params, &(ble_advertise_gap_event_cb), NULL)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gap_adv_start failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((status = ble_gap_adv_stop()) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gap_adv_stop failed : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// This is the brain of the ble service, here we handle all the possible GAP events
|
||||
static int ble_gap_event_cb(struct ble_gap_event *event, void *arg)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
struct ble_gap_conn_desc desc;
|
||||
bool error = false;
|
||||
|
||||
TLS_BT_APPL_TRACE_EVENT("ble_gap_event_cb : %s"NEW_LINE, tls_bt_gap_evt_2_str(event->type));
|
||||
|
||||
switch(event->type)
|
||||
{
|
||||
case BLE_GAP_EVENT_CONNECT:
|
||||
if(event->connect.status == BLE_HS_ENOERR)
|
||||
{
|
||||
if((status = ble_gap_conn_find(event->connect.conn_handle, &desc)) == BLE_HS_ENOERR)
|
||||
{
|
||||
print_conn_desc(&desc);
|
||||
if(desc.role == BLE_GAP_ROLE_SLAVE)
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_CONNECTED;
|
||||
usable_mtu = USABLE_DEFAULT_MTU;
|
||||
ble_device_conn_handle = event->connect.conn_handle;
|
||||
|
||||
//We call the state change callback if registered
|
||||
if(_ble_service_state_change_cb)_ble_service_state_change_cb(_ble_service_state);
|
||||
}
|
||||
else
|
||||
{
|
||||
error = true;
|
||||
if((status = ble_gap_terminate(event->connect.conn_handle, BLE_ERR_REM_USER_CONN_TERM)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_terminate %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error = true;
|
||||
}
|
||||
|
||||
//Resume advertising :
|
||||
if(error)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("Remote device failed to connect, advertise again"NEW_LINE);
|
||||
if(!ble_service_advertise(true))
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_IDLE;
|
||||
return BLE_HS_EUNKNOWN;
|
||||
}
|
||||
_ble_service_state = BLE_SERVICE_MODE_ADVERTISING;
|
||||
}
|
||||
break;
|
||||
case BLE_GAP_EVENT_DISCONNECT:
|
||||
if(event->disconnect.conn.role != BLE_GAP_ROLE_SLAVE) return 0;
|
||||
|
||||
TLS_BT_APPL_TRACE_DEBUG("Server disconnect reason=%d[0x%02x],state=%s"NEW_LINE, event->disconnect.reason,event->disconnect.reason-0x200,
|
||||
ble_service_state_2_str(_ble_service_state));
|
||||
|
||||
// Don't forget to invalidate the connection handle :
|
||||
ble_device_conn_handle = BLE_HS_CONN_HANDLE_NONE;
|
||||
|
||||
if(_ble_service_state == BLE_SERVICE_MODE_EXITING)
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_STOPPED;
|
||||
|
||||
if((status = ble_gap_event_listener_unregister(&ble_gap_event_listener)) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_event_listener_unregister %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
|
||||
// We finally clean the gatt registered services
|
||||
if((status = ble_gatts_reset()) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, ble_gatts_reset %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Let's advertise again
|
||||
TLS_BT_APPL_TRACE_VERBOSE("Service disconnect event, advertise again"NEW_LINE);
|
||||
if(!ble_service_advertise(true))
|
||||
{
|
||||
_ble_service_state = BLE_SERVICE_MODE_IDLE;
|
||||
return BLE_HS_EUNKNOWN;
|
||||
}
|
||||
_ble_service_state = BLE_SERVICE_MODE_ADVERTISING;
|
||||
}
|
||||
|
||||
//We call the state change callback if registered
|
||||
if(_ble_service_state_change_cb)_ble_service_state_change_cb(_ble_service_state);
|
||||
break;
|
||||
case BLE_GAP_EVENT_CONN_UPDATE:
|
||||
TLS_BT_APPL_TRACE_DEBUG("Conn update status : %d"NEW_LINE, event->conn_update.status);
|
||||
if((status = ble_gap_conn_find(event->connect.conn_handle, &desc)) == BLE_HS_ENOERR)
|
||||
{
|
||||
print_conn_desc(&desc);
|
||||
}
|
||||
else
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, ble_gap_conn_find %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
break;
|
||||
case BLE_GAP_EVENT_SUBSCRIBE:
|
||||
TLS_BT_APPL_TRACE_VERBOSE("Attr handle : %u"NEW_LINE
|
||||
"cur_indicate : %u"NEW_LINE
|
||||
"prev_indicate : %u"NEW_LINE
|
||||
"cur_notify : %u"NEW_LINE
|
||||
"prev_notify : %u"NEW_LINE,
|
||||
event->subscribe.attr_handle,
|
||||
event->subscribe.cur_indicate,
|
||||
event->subscribe.prev_indicate,
|
||||
event->subscribe.cur_notify,
|
||||
event->subscribe.prev_notify
|
||||
);
|
||||
break;
|
||||
case BLE_GAP_EVENT_MTU:
|
||||
TLS_BT_APPL_TRACE_VERBOSE("MTU update : %u"NEW_LINE, event->mtu.value);
|
||||
usable_mtu = event->mtu.value - 3;
|
||||
break;
|
||||
case BLE_GAP_EVENT_NOTIFY_TX:
|
||||
if(event->notify_tx.indication == 0) // Notification
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("Type : notification"NEW_LINE);
|
||||
if(event->notify_tx.status != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("%s, notify_tx notification error %d, transfer in progress : %u"NEW_LINE, __FUNCTION__, event->notify_tx.status, notification_data.transfer_in_progress);
|
||||
reset_data_being_sent(¬ification_data);
|
||||
return BLE_HS_EUNKNOWN;
|
||||
}
|
||||
|
||||
TLS_BT_APPL_TRACE_DEBUG("transfer : %u"NEW_LINE"length : %u"NEW_LINE"offset : %u"NEW_LINE,
|
||||
notification_data.transfer_in_progress,
|
||||
notification_data.length,
|
||||
notification_data.offset);
|
||||
|
||||
// We update the offset :
|
||||
notification_data.offset += notification_data.sent_chunk_size;
|
||||
|
||||
if(notification_data.offset < notification_data.length) // Still data to send ?
|
||||
{
|
||||
if(!ble_service_send_custom_notification(event->notify_tx.attr_handle, ¬ification_data))
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("Failed to send next notification chunk, aborting"NEW_LINE);
|
||||
reset_data_being_sent(¬ification_data);
|
||||
return BLE_HS_EUNKNOWN;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("last data chunk sent, end of the transfer"NEW_LINE);
|
||||
// All data have been sent, end of the transfer
|
||||
reset_data_being_sent(¬ification_data);
|
||||
}
|
||||
}
|
||||
else // Indication
|
||||
{
|
||||
TLS_BT_APPL_TRACE_WARNING("Indication not yet handled"NEW_LINE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
TLS_BT_APPL_TRACE_WARNING("unhandled event !"NEW_LINE);
|
||||
}
|
||||
|
||||
return BLE_HS_ENOERR;
|
||||
}
|
||||
|
||||
static int ble_advertise_gap_event_cb(struct ble_gap_event *event, void *arg)
|
||||
{
|
||||
return BLE_HS_ENOERR;
|
||||
}
|
||||
|
||||
static int battery_level_char_access_cb(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg)
|
||||
{
|
||||
int status = BLE_HS_ENOERR;
|
||||
TLS_BT_APPL_TRACE_EVENT("battery_level_char_access_cb op : %s"NEW_LINE, tls_bt_access_opt_2_str(ctxt->op));
|
||||
switch(ctxt->op)
|
||||
{
|
||||
case BLE_GATT_ACCESS_OP_READ_CHR:
|
||||
if(attr_handle == battery_level_char_handle)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("battery level reading"NEW_LINE);
|
||||
if((status = os_mbuf_append(ctxt->om, &battery_level_value, sizeof(battery_level_value))) != BLE_HS_ENOERR)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_ERROR("%s, battery level os_mbuf : %s"NEW_LINE, __FUNCTION__, tls_bt_rc_2_str(status));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
TLS_BT_APPL_TRACE_WARNING("unhandled operation !"NEW_LINE);
|
||||
}
|
||||
|
||||
return BLE_HS_ENOERR;
|
||||
}
|
||||
|
||||
static int gatt_nus_char_access_cb(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg)
|
||||
{
|
||||
//TLS_BT_APPL_TRACE_EVENT("gatt_nus_char_access_cb op : %s"NEW_LINE, tls_bt_access_opt_2_str(ctxt->op));
|
||||
switch(ctxt->op)
|
||||
{
|
||||
case BLE_GATT_ACCESS_OP_WRITE_CHR:
|
||||
{
|
||||
struct os_mbuf *om_buf = ctxt->om;
|
||||
while(om_buf)
|
||||
{
|
||||
// Call the nus rx cb function if one is registered
|
||||
if(_ble_service_nus_data_rx_cb)
|
||||
_ble_service_nus_data_rx_cb(om_buf->om_data, om_buf->om_len);
|
||||
|
||||
om_buf = SLIST_NEXT(om_buf, om_next);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
TLS_BT_APPL_TRACE_WARNING("unhandled operation !"NEW_LINE);
|
||||
}
|
||||
|
||||
return BLE_HS_ENOERR;
|
||||
}
|
||||
|
||||
static void print_conn_desc(const struct ble_gap_conn_desc *desc)
|
||||
{
|
||||
TLS_BT_APPL_TRACE_VERBOSE("conn_handle : %u"NEW_LINE"conn_itvl : %u"NEW_LINE"conn_latency : %u"NEW_LINE"master_clock_accuracy : %u"NEW_LINE"role : %s"NEW_LINE"supervision_timeout : %u"NEW_LINE
|
||||
"encrypted : %u"NEW_LINE"authenticated : %u"NEW_LINE"bonded : %u"NEW_LINE,
|
||||
desc->conn_handle,
|
||||
desc->conn_itvl,
|
||||
desc->conn_latency,
|
||||
desc->master_clock_accuracy,
|
||||
desc->role == BLE_GAP_ROLE_MASTER ? "MASTER" : "SLAVE",
|
||||
desc->supervision_timeout,
|
||||
desc->sec_state.encrypted,
|
||||
desc->sec_state.authenticated,
|
||||
desc->sec_state.bonded);
|
||||
}
|
||||
|
||||
static void reset_data_being_sent(data_being_sent_t * const data)
|
||||
{
|
||||
if(data)
|
||||
{
|
||||
memset(data, 0, sizeof(data_being_sent_t));
|
||||
}
|
||||
}
|
126
src/W800_SDK_v1.00.10/app/ble/ble_service.h
Normal file
@ -0,0 +1,126 @@
|
||||
#ifndef BLE_SERVICE_H
|
||||
#define BLE_SERVICE_H
|
||||
|
||||
#include "wm_type_def.h"
|
||||
|
||||
#ifndef CASE_RETURN_STR
|
||||
#define CASE_RETURN_STR(const) case const: return #const;
|
||||
#endif
|
||||
|
||||
typedef void (*nus_data_rx_fn_t)(const uint8_t *data, uint16_t length);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
BLE_SERVICE_MODE_STOPPED = 0x00,
|
||||
BLE_SERVICE_MODE_IDLE,
|
||||
BLE_SERVICE_MODE_ADVERTISING,
|
||||
BLE_SERVICE_MODE_CONNECTED,
|
||||
BLE_SERVICE_MODE_INDICATING,
|
||||
BLE_SERVICE_MODE_EXITING
|
||||
} ble_service_state_e;
|
||||
|
||||
typedef void (*ble_service_state_change_fn_t)(ble_service_state_e service_state);
|
||||
|
||||
/**
|
||||
* @brief Resturns the corresponding enum name as a string
|
||||
*
|
||||
* @param state the enum value
|
||||
* @return const char* the enum name as a string
|
||||
*/
|
||||
const char *ble_service_state_2_str(ble_service_state_e state);
|
||||
|
||||
/**
|
||||
* @brief Configures and starts the BLE service
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_service_start(void);
|
||||
|
||||
/**
|
||||
* @brief Deinits and stops the BLE service
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_service_stop(void);
|
||||
|
||||
/**
|
||||
* @brief Check whether the ble service is running or not
|
||||
*
|
||||
* @return true if it is running
|
||||
* @return false if it is stopped
|
||||
*/
|
||||
bool ble_service_is_started(void);
|
||||
|
||||
/**
|
||||
* @brief Check whether a device is connected to the ble service or not
|
||||
*
|
||||
* @return true if a device is connected
|
||||
* @return false if no device is connected
|
||||
*/
|
||||
bool ble_service_is_device_connected(void);
|
||||
|
||||
/**
|
||||
* @brief Registers a callback function called every time the state of the BLE service changes.
|
||||
* For example, you can register a callback to know if a device connected to the service, or disconnected
|
||||
*
|
||||
* @param ble_service_state_change_cb the function to register as the callback. The ble_service_state parameter is set to the new state.
|
||||
*/
|
||||
void ble_service_register_state_change_cb(ble_service_state_change_fn_t ble_service_state_change_cb);
|
||||
|
||||
/**
|
||||
* @brief Returns the current state of the ble service
|
||||
*
|
||||
* @return ble_service_state_e
|
||||
*/
|
||||
ble_service_state_e ble_service_get_state(void);
|
||||
|
||||
/**
|
||||
* @brief Asks to update the current connection parameters
|
||||
* /!\ A connection should be already active before calling this function.
|
||||
*
|
||||
* @param itvl_min Minimum value for connection interval in 1.25ms units
|
||||
* @param itvl_max Maximum value for connection interval in 1.25ms units
|
||||
* @param latency Connection latency
|
||||
* @param supervision_timeout Supervision timeout in 10ms units
|
||||
* @param min_ce_len Minimum length of connection event in 0.625ms units
|
||||
* @param max_ce_len Maximum length of connection event in 0.625ms units
|
||||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool ble_service_update_connection_parameters(
|
||||
uint16_t itvl_min,
|
||||
uint16_t itvl_max,
|
||||
uint16_t latency,
|
||||
uint16_t supervision_timeout,
|
||||
uint16_t min_ce_len,
|
||||
uint16_t max_ce_len);
|
||||
|
||||
/**
|
||||
* @brief Requests a MTU (Maximum Transmission Unit) update in order to hopefully, get something bigger than 20 bytes ...
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_service_request_mtu_exchange(void);
|
||||
|
||||
/**
|
||||
* @brief Sends the provided payload of size length using the NUS (Nordic UART Service) TX characteristic
|
||||
*
|
||||
* @param data the data to send through the NUS
|
||||
* @param length the lenght in byte of the data to send
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool ble_service_send_nus_data(const uint8_t *data, uint16_t length);
|
||||
|
||||
/**
|
||||
* @brief Registers a function which will be called every time data is received by the nus rx
|
||||
* @note To unregister a callback, simply pass NULL to the function
|
||||
*
|
||||
* @param nus_data_rx_cb a pointer to the function to call of type nus_data_rx_fn_t
|
||||
*/
|
||||
void ble_service_register_nus_data_rx_cb(nus_data_rx_fn_t nus_data_rx_cb);
|
||||
|
||||
#endif //BLE_APP_H
|
8
src/W800_SDK_v1.00.10/app/ble/bluetooth_sig_values.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef BLUETOOTH_SIG_VALUES_H
|
||||
#define BLUETOOTH_SIG_VALUES_H
|
||||
|
||||
#define BLE_DEVICE_APPEARANCE (0x00C2) //Smart Watch
|
||||
|
||||
#define BLE_DEVICE_ADV_SERVICE (0x180F) //Battery Service
|
||||
|
||||
#endif //BLUETOOTH_SIG_VALUES_H
|
8
src/W800_SDK_v1.00.10/app/firmware_version.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef FIRMWARE_VERSION_H
|
||||
#define FIRMWARE_VERSION_H
|
||||
|
||||
#define FIRMWARE_VERSION "0.0.1" //Firmware creation
|
||||
#define FIRMWARE_TIME_DATE (__TIME__" "__DATE__)
|
||||
|
||||
|
||||
#endif //FIRMWARE_VERSION_H
|
@ -1,16 +1,58 @@
|
||||
#include "lvgl.h"
|
||||
|
||||
/***
|
||||
* It is needed to have a reference on two header_titles because when
|
||||
* switching from one screen using a header to an other screen which is also using one
|
||||
* the header of the new screen will be created BEFORE the header of the previous screen
|
||||
* is deleted ...
|
||||
*/
|
||||
|
||||
/* A reference to the current and previous header title */
|
||||
static lv_obj_t *header_title[2] = {NULL, NULL};
|
||||
/* Pointer to the header_title to use */
|
||||
lv_obj_t **header_title_p = &header_title[0];
|
||||
|
||||
|
||||
static void cleanup_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t **header_title_deleted_p = e->user_data;
|
||||
*header_title_deleted_p = NULL;
|
||||
LV_LOG_USER("header_title cleanup");
|
||||
}
|
||||
|
||||
void common_screen_header_component(lv_obj_t *parent, const char * title, lv_coord_t height)
|
||||
{
|
||||
if(header_title[0] == NULL)
|
||||
header_title_p = &header_title[0];
|
||||
else if(header_title[1] == NULL)
|
||||
header_title_p = &header_title[1];
|
||||
else
|
||||
{
|
||||
LV_LOG_ERROR("no free header_title");
|
||||
return;
|
||||
}
|
||||
|
||||
lv_obj_t *header = lv_obj_create(parent);
|
||||
lv_obj_set_style_bg_color(header, lv_color_make(129, 141,181), LV_PART_MAIN);
|
||||
lv_obj_set_size(header, lv_disp_get_hor_res(NULL), height);
|
||||
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_border_width(header, 0, LV_PART_MAIN);
|
||||
lv_obj_clear_flag(header, LV_OBJ_FLAG_SCROLLABLE);
|
||||
|
||||
lv_obj_t *header_title = lv_label_create(header);
|
||||
lv_label_set_text_static(header_title, title);
|
||||
lv_obj_set_style_text_color(header_title, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_font(header_title, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
lv_obj_set_align(header_title, LV_ALIGN_CENTER);
|
||||
*header_title_p = lv_label_create(header);
|
||||
lv_label_set_text_static(*header_title_p, title);
|
||||
lv_obj_set_style_text_align(*header_title_p, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(*header_title_p, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_font(*header_title_p, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
lv_obj_set_width(*header_title_p, 150);
|
||||
lv_obj_set_align(*header_title_p, LV_ALIGN_CENTER);
|
||||
lv_label_set_long_mode(*header_title_p, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
||||
/* Once the current header_title is destroyed, mark it as NULL to prevent any crashes when trying to change it's title */
|
||||
lv_obj_add_event_cb(*header_title_p, &(cleanup_event_cb), LV_EVENT_DELETE, header_title_p);
|
||||
}
|
||||
|
||||
void common_screen_header_update_title(const char * title)
|
||||
{
|
||||
if(!*header_title_p)return;
|
||||
lv_label_set_text_static(*header_title_p, title);
|
||||
}
|
||||
|
@ -3,6 +3,20 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
|
||||
/**
|
||||
* @brief Adds a screen header with the defined title to the screen passed as parent with the provided height.
|
||||
*
|
||||
* @param parent the screen to which the header will be added
|
||||
* @param title a string used as the header's title
|
||||
* @param height the height in pixel of the header
|
||||
*/
|
||||
void common_screen_header_component(lv_obj_t *parent, const char * title, lv_coord_t height);
|
||||
|
||||
/**
|
||||
* @brief Updates the current title of displayed screen header
|
||||
*
|
||||
* @param title a string used as the new header's title
|
||||
*/
|
||||
void common_screen_header_update_title(const char * title);
|
||||
|
||||
#endif //COMMON_SCREEN_COMPONENTS_H
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "lvgl.h"
|
||||
#include "compass_screen.h"
|
||||
#include "menu_screen.h"
|
||||
#include "app_config.h"
|
||||
|
||||
static const char *cardinals[] =
|
||||
{
|
||||
@ -71,9 +72,13 @@ static void rotate_cardinal(CompassCardinal_t *cardinal, uint16_t azimuth)
|
||||
{
|
||||
lv_coord_t rotated_x, rotated_y;
|
||||
float azimuth_in_rads = (float)azimuth*M_PI/180.0;
|
||||
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
rotated_x = (float)(cardinal->position.x-120+cardinal->offset.x)*cos(azimuth_in_rads) - (float)(cardinal->position.y-120+cardinal->offset.y)*sin(azimuth_in_rads) + 120-cardinal->offset.x;
|
||||
rotated_y = (float)(cardinal->position.y-120+cardinal->offset.y)*cos(azimuth_in_rads) + (float)(cardinal->position.x-120+cardinal->offset.x)*sin(azimuth_in_rads) + 120-cardinal->offset.y;
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
rotated_x = (float)(cardinal->position.x-120+cardinal->offset.x)*cos(azimuth_in_rads) + (float)(cardinal->position.y-120+cardinal->offset.y)*sin(azimuth_in_rads) + 120-cardinal->offset.x;
|
||||
rotated_y = (float)(cardinal->position.y-120+cardinal->offset.y)*cos(azimuth_in_rads) - (float)(cardinal->position.x-120+cardinal->offset.x)*sin(azimuth_in_rads) + 120-cardinal->offset.y;
|
||||
#endif
|
||||
lv_obj_set_pos(cardinal->label, rotated_x, rotated_y);
|
||||
}
|
||||
|
||||
@ -102,7 +107,11 @@ void compass_screen_set_azimuth(CompassScreen_t * const compassScreen, uint16_t
|
||||
|
||||
//We make sure the azimuth is in the right range ie 0 to 359
|
||||
azimuth %= 360;
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
uint16_t azimuthAdjusted = 359 - azimuth;
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
uint16_t azimuthAdjusted = azimuth;
|
||||
#endif
|
||||
|
||||
uint8_t index;
|
||||
|
||||
@ -129,7 +138,11 @@ void compass_screen_set_azimuth(CompassScreen_t * const compassScreen, uint16_t
|
||||
|
||||
//Rotate each cardinal with the current azimuth
|
||||
rotate_cardinal(&compassScreen->northCardinal, azimuth);
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
lv_img_set_angle(compassScreen->northMarker, azimuth*10);
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
lv_img_set_angle(compassScreen->northMarker, -azimuth*10);
|
||||
#endif
|
||||
//lv_meter_set_scale_range(compassScreen->compassGraduation.meter, compassScreen->compassGraduation.scale, 0, 330, 330, azimuth-90);
|
||||
|
||||
rotate_cardinal(&compassScreen->eastCardinal, azimuth);
|
||||
|
@ -17,18 +17,18 @@
|
||||
#include "watch_peripherals.h"
|
||||
#include "watch_settings.h"
|
||||
|
||||
#include "ble_modem.h"
|
||||
#include "ble_service.h"
|
||||
|
||||
static void date_time_cb(struct tm * const dateTime)
|
||||
{
|
||||
if(!dateTime)return;
|
||||
tls_get_rtc(dateTime);
|
||||
//APP_LOG_DEBUG("RTC time : %d:%d:%d", dateTime->tm_hour, dateTime->tm_min, dateTime->tm_sec);
|
||||
}
|
||||
|
||||
static uint8_t battery_percentage = 100;
|
||||
static uint8_t battery_indicator_cb(void)
|
||||
{
|
||||
return battery_percentage;
|
||||
}
|
||||
static void _perform_deferred_display_wake_up_set_sleeping(void);
|
||||
static void _perform_deferred_display_wake_up_set_timestamp(void);
|
||||
static void _perform_deferred_display_wake_up(uint8_t deferred_time_in_ms);
|
||||
|
||||
WatchFace_t watchFace;
|
||||
MenuScreen_t menuScreen;
|
||||
@ -39,69 +39,238 @@ struct bma4_dev bma;
|
||||
struct bma4_accel_config accel_conf;
|
||||
struct bma456w_wrist_wear_wakeup_params setting;
|
||||
struct bma4_int_pin_config pin_config;
|
||||
uint16_t int_status;
|
||||
|
||||
static void setBrightness(uint8_t brightness)
|
||||
static struct
|
||||
{
|
||||
extern LCDConfig_t LCDConfig;
|
||||
lcd_set_backlight(&LCDConfig, brightness);
|
||||
uint16_t int_status;
|
||||
bool battery_controller_status;
|
||||
} _interrupts_statuses = {.int_status = 0, .battery_controller_status = false};
|
||||
|
||||
static struct
|
||||
{
|
||||
uint16_t battery_voltage;
|
||||
uint8_t battery_percentage;
|
||||
} _battery_stats = {.battery_voltage = 0, .battery_percentage = 100};
|
||||
|
||||
/* This call back is automatically called by the watch face when it wants to refresh the battery */
|
||||
static void battery_indicator_cb(uint8_t *levelInPercent, BatteryState_e *batteryState)
|
||||
{
|
||||
*levelInPercent = _battery_stats.battery_percentage;
|
||||
*batteryState = watch_peripherals_get_battery_controller_status();
|
||||
}
|
||||
|
||||
static void setBrightnessCb(uint8_t brightness)
|
||||
static void battery_controller_status_on_change_cb(battery_controller_status_e old, battery_controller_status_e new)
|
||||
{
|
||||
|
||||
persistency_get_settings()->display.brightness = brightness;
|
||||
setBrightness(brightness);
|
||||
_interrupts_statuses.battery_controller_status = true;
|
||||
}
|
||||
|
||||
static void setGetBrightnessCb(uint8_t *brightness, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*brightness = persistency_get_settings()->display.display_brightness;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Updates the settings in the watch settings structure
|
||||
watch_settings_display_set_brightness(*brightness);
|
||||
|
||||
// Physically apply the setting to the hardware
|
||||
watch_peripherals_set_brightness(*brightness);
|
||||
}
|
||||
}
|
||||
|
||||
static void setTimeCb(uint8_t hour, uint8_t minute, uint8_t second, uint8_t day, uint8_t month, uint8_t year)
|
||||
static void setTimeCb(uint8_t *hour, uint8_t *minute, uint8_t *second, uint8_t *day, uint8_t *month, uint8_t *year, SettingMode_e mode)
|
||||
{
|
||||
struct tm timeToSet;
|
||||
|
||||
//First we get the current time from the RTC
|
||||
tls_get_rtc(&timeToSet);
|
||||
|
||||
if(hour != 0xFF)
|
||||
timeToSet.tm_hour = hour;
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*hour = timeToSet.tm_hour;
|
||||
*minute = timeToSet.tm_min;
|
||||
*second = timeToSet.tm_sec;
|
||||
*day = timeToSet.tm_mday;
|
||||
*month = timeToSet.tm_mon;
|
||||
*year = timeToSet.tm_year;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(*hour != 0xFF)
|
||||
timeToSet.tm_hour = *hour;
|
||||
|
||||
if(minute != 0xFF)
|
||||
timeToSet.tm_min = minute;
|
||||
if(*minute != 0xFF)
|
||||
timeToSet.tm_min = *minute;
|
||||
|
||||
if(second != 0xFF)
|
||||
timeToSet.tm_sec = second;
|
||||
if(*second != 0xFF)
|
||||
timeToSet.tm_sec = *second;
|
||||
|
||||
if(day != 0xFF)
|
||||
timeToSet.tm_mday = day;
|
||||
if(*day != 0xFF)
|
||||
timeToSet.tm_mday = *day;
|
||||
|
||||
if(month != 0xFF)
|
||||
timeToSet.tm_mon = month;
|
||||
if(*month != 0xFF)
|
||||
timeToSet.tm_mon = *month;
|
||||
|
||||
if(year != 0xFF)
|
||||
timeToSet.tm_year = year + 100;
|
||||
if(*year != 0xFF)
|
||||
timeToSet.tm_year = *year;
|
||||
|
||||
tls_set_rtc(&timeToSet);
|
||||
tls_set_rtc(&timeToSet);
|
||||
}
|
||||
}
|
||||
|
||||
static void setTimeoutCb(uint8_t timeout)
|
||||
static void setDisplayVibrationDuration(uint8_t *duration, SettingMode_e mode)
|
||||
{
|
||||
persistency_get_settings()->display.sleep_timeout = timeout;
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*duration = persistency_get_settings()->display.display_vibrate_on_touch_duration;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_display_set_vibrate_on_touch_duration(*duration);
|
||||
}
|
||||
}
|
||||
|
||||
static void setOrientationCb(uint8_t orientation)
|
||||
static void setDisplayVibrationStrength(uint8_t *strength, SettingMode_e mode)
|
||||
{
|
||||
extern LCDConfig_t LCDConfig;
|
||||
lcd_orientation(&LCDConfig, orientation);
|
||||
persistency_get_settings()->display.orientation = orientation;
|
||||
// Forces to redraw the full screen to avoid strange artifact
|
||||
lv_obj_invalidate(lv_scr_act());
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*strength = persistency_get_settings()->display.display_vibrate_on_touch_strength;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_display_set_vibrate_on_touch_strength(*strength);
|
||||
}
|
||||
}
|
||||
|
||||
static void setTimeoutCb(uint8_t *timeout, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*timeout = persistency_get_settings()->display.display_delay_before_sleep;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_display_set_delay_before_sleep(*timeout);
|
||||
}
|
||||
}
|
||||
|
||||
static void setOrientationCb(uint8_t *orientation, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*orientation = persistency_get_settings()->display.display_orientation;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_display_set_orientation(*orientation);
|
||||
watch_peripherals_set_orientation(*orientation);
|
||||
// Forces to redraw the full screen to avoid strange artifacts
|
||||
lv_obj_invalidate(lv_scr_act());
|
||||
}
|
||||
}
|
||||
|
||||
static void setBLEEnabledCb(bool *enabled, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*enabled = persistency_get_settings()->connectivity.connectivity_ble_enabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_connectivity_set_ble_enabled(*enabled);
|
||||
//Let's turn the BLE on or OFF here
|
||||
if(*enabled)
|
||||
{
|
||||
if(!ble_modem_on(true))
|
||||
APP_LOG_ERROR("Failed to start BLE modem with service");
|
||||
else
|
||||
watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_ON);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!ble_modem_off())
|
||||
APP_LOG_ERROR("Failed to stop BLE modem with service");
|
||||
else
|
||||
watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* This may never get implemented due to power consumption */
|
||||
static void setWiFiEnabledCb(bool *enabled, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*enabled = persistency_get_settings()->connectivity.connectivity_wifi_enabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_connectivity_set_wifi_enabled(*enabled);
|
||||
}
|
||||
}
|
||||
|
||||
static void setLanguageCb(uint8_t *language, SettingMode_e mode)
|
||||
{
|
||||
if(SETTING_MODE_GET == mode)
|
||||
{
|
||||
*language = persistency_get_settings()->languageAndUI.language;
|
||||
}
|
||||
else
|
||||
{
|
||||
watch_settings_language_and_UI_set_language(*language);
|
||||
}
|
||||
}
|
||||
|
||||
static void getBLEDeviceNameCb(const char **dev_name)
|
||||
{
|
||||
*dev_name = BLE_DEVICE_NAME;
|
||||
}
|
||||
|
||||
static void getBatteryVoltageCb(uint16_t *battery_voltage)
|
||||
{
|
||||
*battery_voltage = _battery_stats.battery_voltage;
|
||||
}
|
||||
|
||||
static void saveSettingsToFlashCb(void)
|
||||
{
|
||||
/*if(!persistency_save_settings_to_flash())
|
||||
{
|
||||
APP_LOG_ERROR("Failed to save watch settings to flash");
|
||||
}*/
|
||||
}
|
||||
|
||||
static void performFactoryResetCb()
|
||||
{
|
||||
// Reload factory settings
|
||||
persistency_factory_reset();
|
||||
|
||||
if(!persistency_save_settings_to_flash())
|
||||
{
|
||||
APP_LOG_ERROR("Failed to save factory reset settings to flash");
|
||||
return;
|
||||
}
|
||||
|
||||
// We do a hardware reset of the watch
|
||||
tls_sys_reset();
|
||||
}
|
||||
|
||||
SettingsScreenAPIInterface_t settingsScreenAPIInterface =
|
||||
{
|
||||
.setBrightnessSettingsCb = setBrightnessCb,
|
||||
.setTimeSettingsCb = setTimeCb,
|
||||
.setTimeoutSettingsCb = setTimeoutCb,
|
||||
.setOrientationSettingsCb = setOrientationCb,
|
||||
.setTimeSettingsCb = &(setTimeCb),
|
||||
.setBrightnessSettingsCb = &(setGetBrightnessCb),
|
||||
.setTimeoutSettingsCb = &(setTimeoutCb),
|
||||
.setDisplayVibrationDurationSettingsCb = &(setDisplayVibrationDuration),
|
||||
.setDisplayVibrationStrengthSettingsCb = &(setDisplayVibrationStrength),
|
||||
.setOrientationSettingsCb = &(setOrientationCb),
|
||||
.setBLEEnabledSettingsCb = &(setBLEEnabledCb),
|
||||
.setWiFiEnabledSettingsCb = &(setWiFiEnabledCb),
|
||||
.setLanguageSettingsCb = &(setLanguageCb),
|
||||
.getBLEDeviceNameCb = &(getBLEDeviceNameCb),
|
||||
.getBatteryVoltageCb = &(getBatteryVoltageCb),
|
||||
.saveSettingsCb = &(saveSettingsToFlashCb),
|
||||
.factoryResetCb = &(performFactoryResetCb),
|
||||
};
|
||||
|
||||
static uint16_t angle_with_offset(uint16_t angle, uint16_t offset)
|
||||
@ -133,6 +302,32 @@ static void delay_us(uint32_t period, void *intf_ptr)
|
||||
tls_os_time_delay(pdMS_TO_TICKS(period / 1000));
|
||||
}
|
||||
|
||||
static void ble_service_nus_data_rx_cb(const uint8_t *data, uint16_t length)
|
||||
{
|
||||
for (uint16_t i = 0; i < length; i++)
|
||||
{
|
||||
if (data[i] < 32)
|
||||
printf("[%u]", data[i]);
|
||||
else
|
||||
printf("%c", data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void ble_service_state_change_cb(ble_service_state_e ble_service_state)
|
||||
{
|
||||
switch(ble_service_state)
|
||||
{
|
||||
case BLE_SERVICE_MODE_CONNECTED:
|
||||
watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_CONNECTED);
|
||||
break;
|
||||
case BLE_SERVICE_MODE_ADVERTISING:
|
||||
watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_ON);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void scan_result_cb(void)
|
||||
{
|
||||
size_t buffer_size = sizeof(struct tls_scan_bss_format2_t) + sizeof(struct tls_bss_info_format2_t) * 10;
|
||||
@ -170,9 +365,41 @@ static void scan_result_cb(void)
|
||||
tls_mem_free(buffer);
|
||||
}
|
||||
|
||||
extern LCDConfig_t LCDConfig;
|
||||
|
||||
void gfx_task(void *param)
|
||||
{
|
||||
APP_LOG_TRACE("starting");
|
||||
APP_LOG_TRACE("GFX task starting");
|
||||
|
||||
/* Init and load watch settings using the persistency layer */
|
||||
persistency_init();
|
||||
|
||||
if(!persistency_load_settings_from_flash())
|
||||
{
|
||||
APP_LOG_ERROR("Failed to retrieve watch settings from flash");
|
||||
}
|
||||
|
||||
//persistency_debug();
|
||||
|
||||
/* Let's init the watch peripherals driver (vibration motor + battery voltage sense) */
|
||||
watch_peripherals_init(27);
|
||||
watch_peripherals_register_battery_controller_status_change_cb(&(battery_controller_status_on_change_cb));
|
||||
|
||||
/* Make the first battery voltage reading here */
|
||||
_battery_stats.battery_voltage = watch_peripherals_get_battery_voltage(battery_unit_mv);
|
||||
_battery_stats.battery_percentage = battery_voltage_to_percentage(_battery_stats.battery_voltage);
|
||||
|
||||
/* Check whether the RTC is running or not, if not, then the board was reset
|
||||
So we start the RTC */
|
||||
if(!tls_is_rtc_running())
|
||||
{
|
||||
struct tm curr_time = {
|
||||
.tm_mday = 1,
|
||||
.tm_mon = 1,
|
||||
.tm_year = 22, // Starting from 2000
|
||||
};
|
||||
tls_set_rtc(&curr_time);
|
||||
}
|
||||
|
||||
/* Initialize the lvgl library and peripherals (display and input device)*/
|
||||
lv_init();
|
||||
@ -194,9 +421,7 @@ void gfx_task(void *param)
|
||||
lv_scr_load(watchFace.display);
|
||||
|
||||
/* Let's init the I2C interface */
|
||||
i2c_init(I2C_SDA, I2C_SCL, 100000);
|
||||
|
||||
uint8_t aliveCounter = 0;
|
||||
i2c_init(I2C_SDA, I2C_SCL, I2C_CLOCK_SPEED);
|
||||
|
||||
/* Init the magnetometer */
|
||||
if(!QMC5883L_init())
|
||||
@ -269,7 +494,7 @@ void gfx_task(void *param)
|
||||
else
|
||||
APP_LOG_INFO("BMA456 accel en failed");
|
||||
|
||||
bma456w_feature_enable(BMA456W_WRIST_WEAR_WAKEUP, 1, &bma);
|
||||
bma456w_feature_enable(BMA456W_WRIST_WEAR_WAKEUP, BMA4_ENABLE, &bma);
|
||||
|
||||
bma456w_get_wrist_wear_wakeup_param_config(&setting, &bma);
|
||||
|
||||
@ -296,23 +521,26 @@ void gfx_task(void *param)
|
||||
else
|
||||
APP_LOG_INFO("BMA456 set pin conf failed");
|
||||
|
||||
/* Let's init the watch peripherals driver (vibration motor + battery voltage sense) */
|
||||
watch_peripherals_init(27);
|
||||
/* Make the first battery voltage reading here */
|
||||
uint16_t battery_voltage = watch_peripherals_get_battery_voltage(Battery_Unit_mV);
|
||||
battery_percentage = battery_voltage_to_percentage(battery_voltage);
|
||||
watch_face_set_battery_indicator(&watchFace, battery_percentage);
|
||||
/* Configure BMA's step counter */
|
||||
if(bma456w_feature_enable(BMA456W_STEP_CNTR, BMA4_ENABLE, &bma) == BMA4_OK)
|
||||
APP_LOG_INFO("BMA456 step cnter feature enable ok");
|
||||
else
|
||||
APP_LOG_INFO("BMA456 step cnter feature enable failed");
|
||||
|
||||
/* Configure and register BLE stack and services callbacks */
|
||||
ble_service_register_nus_data_rx_cb(&(ble_service_nus_data_rx_cb));
|
||||
ble_service_register_state_change_cb(&(ble_service_state_change_cb));
|
||||
|
||||
/* Once we are done with the initializing steps we
|
||||
don't forget to turn the backlight on ! */
|
||||
setBrightness(persistency_get_settings()->display.brightness);
|
||||
watch_peripherals_set_brightness(persistency_get_settings()->display.display_brightness);
|
||||
|
||||
/* Enable WiFi hotspot scanning for antenna performance test purposes */
|
||||
tls_wifi_scan_result_cb_register(&(scan_result_cb));
|
||||
//tls_wifi_scan_result_cb_register(&(scan_result_cb));
|
||||
|
||||
extern LCDConfig_t LCDConfig;
|
||||
float temperature = 0;
|
||||
float pressure = 0;
|
||||
uint32_t update_tick = 0;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
@ -336,38 +564,44 @@ void gfx_task(void *param)
|
||||
}
|
||||
|
||||
|
||||
uint8_t rslt = bma456w_read_int_status(&int_status, &bma);
|
||||
uint8_t rslt = bma456w_read_int_status(&_interrupts_statuses.int_status, &bma);
|
||||
if(rslt != BMA4_OK)
|
||||
APP_LOG_DEBUG("Failed to read int status");
|
||||
APP_LOG_DEBUG("Failed to read int status");
|
||||
|
||||
if((BMA4_OK == rslt) && (int_status & BMA456W_WRIST_WEAR_WAKEUP_INT))
|
||||
if((BMA4_OK == rslt) && (_interrupts_statuses.int_status & BMA456W_WRIST_WEAR_WAKEUP_INT))
|
||||
{
|
||||
APP_LOG_DEBUG("Wrist tilt");
|
||||
}
|
||||
|
||||
if(++aliveCounter % 200 == 0)
|
||||
if(lv_tick_elaps(update_tick) > 5000)
|
||||
{
|
||||
uint32_t steps = 0;
|
||||
if(bma456w_step_counter_output(&steps, &bma) != BMA4_OK)
|
||||
APP_LOG_DEBUG("Failed to read step counts");
|
||||
|
||||
watch_face_set_step_count_indicator(&watchFace, steps);
|
||||
|
||||
pressure = BMP280_get_pressure(&temperature);
|
||||
BMP280_trigger_measurement();
|
||||
battery_voltage = watch_peripherals_get_battery_voltage(Battery_Unit_mV);
|
||||
battery_percentage = battery_voltage_to_percentage(battery_voltage);
|
||||
APP_LOG_DEBUG("GFX thread, temp : %0.2f °C, press : %0.2f hPa, bat : %u mV <-> %u %%",
|
||||
_battery_stats.battery_voltage = watch_peripherals_get_battery_voltage(battery_unit_mv);
|
||||
_battery_stats.battery_percentage = battery_voltage_to_percentage(_battery_stats.battery_voltage);
|
||||
APP_LOG_DEBUG("GFX thread, temp : %0.2f °C, press : %0.2f hPa, battery(%s) : %u mV <-> %u %%",
|
||||
temperature,
|
||||
pressure/100,
|
||||
battery_voltage,
|
||||
battery_percentage);
|
||||
battery_controller_status_2_str(watch_peripherals_get_battery_controller_status()),
|
||||
_battery_stats.battery_voltage,
|
||||
_battery_stats.battery_percentage);
|
||||
|
||||
//APP_LOG_DEBUG("Scanning WiFi : %d", tls_wifi_scan());
|
||||
|
||||
aliveCounter = 0;
|
||||
update_tick = lv_tick_get();
|
||||
}
|
||||
|
||||
/* Handle inactivity periods : */
|
||||
if( persistency_get_settings()->display.sleep_timeout != 0 &&
|
||||
lv_disp_get_inactive_time(NULL) > (persistency_get_settings()->display.sleep_timeout * 1000))
|
||||
if( persistency_get_settings()->display.display_delay_before_sleep != 0 &&
|
||||
lv_disp_get_inactive_time(NULL) > (persistency_get_settings()->display.display_delay_before_sleep * 5 * 1000))
|
||||
{
|
||||
// First, we disable the display backlight and we set all the peripherals in their low power mode
|
||||
setBrightness(0);
|
||||
watch_peripherals_set_brightness(0);
|
||||
//lcd_on(&LCDConfig, false);
|
||||
lcd_sleep(&LCDConfig, true);
|
||||
QMC5883L_set_power_mode(Standby);
|
||||
@ -384,9 +618,14 @@ void gfx_task(void *param)
|
||||
QMC5883L_set_power_mode(Continuous);
|
||||
//lcd_on(&LCDConfig, true);
|
||||
lcd_sleep(&LCDConfig, false);
|
||||
setBrightness(persistency_get_settings()->display.brightness);
|
||||
//watch_peripherals_set_brightness(persistency_get_settings()->display.display_brightness);
|
||||
//lcd_on(&LCDConfig, false);
|
||||
_perform_deferred_display_wake_up_set_timestamp();
|
||||
}
|
||||
|
||||
/* Will wake the display up after some ms to avoid seeing the second hand jumping */
|
||||
_perform_deferred_display_wake_up(30);
|
||||
|
||||
/* Throttle CPU freq down when inactive to save power or to increase responsiveness */
|
||||
tls_sys_clk clk;
|
||||
tls_sys_clk_get(&clk);
|
||||
@ -406,5 +645,37 @@ void gfx_task(void *param)
|
||||
APP_LOG_DEBUG("CPU 160Mhz");
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle any interrupts status */
|
||||
if(_interrupts_statuses.battery_controller_status)
|
||||
{
|
||||
_interrupts_statuses.battery_controller_status = false;
|
||||
//Let's refresh the battery percentage as well:
|
||||
_battery_stats.battery_voltage = watch_peripherals_get_battery_voltage(battery_unit_mv);
|
||||
_battery_stats.battery_percentage = battery_voltage_to_percentage(_battery_stats.battery_voltage);
|
||||
watch_face_set_battery_indicator(&watchFace, _battery_stats.battery_percentage, watch_peripherals_get_battery_controller_status());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* This handling logic should be moved somewhere ! I just don't know where yet ... */
|
||||
static uint32_t _ticks = 0;
|
||||
static bool _was_sleeping = false;
|
||||
|
||||
static void _perform_deferred_display_wake_up_set_timestamp(void)
|
||||
{
|
||||
_ticks = lv_tick_get();
|
||||
_was_sleeping = true;
|
||||
}
|
||||
|
||||
static void _perform_deferred_display_wake_up(uint8_t deferred_time_in_ms)
|
||||
{
|
||||
if(_was_sleeping && lv_tick_elaps(_ticks) > deferred_time_in_ms)
|
||||
{
|
||||
_was_sleeping = false;
|
||||
lcd_on(&LCDConfig, true);
|
||||
watch_peripherals_set_brightness(persistency_get_settings()->display.display_brightness);
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@
|
||||
#include "settings_screen.h"
|
||||
#include "watch_face.h"
|
||||
#include "compass_screen.h"
|
||||
#include "translation.h"
|
||||
|
||||
#define array_size(array) (sizeof(array)/sizeof(array[0]))
|
||||
|
||||
@ -60,10 +61,11 @@ void menu_screen_init(MenuScreen_t * const menuScreen)
|
||||
static void menu_screen_add_item(lv_obj_t *scroll_item_container, uint8_t position, const lv_img_dsc_t *itemImg,const char *itemTitle, lv_event_cb_t itemClickEventCb)
|
||||
{
|
||||
//We add the image button with the icon of the item
|
||||
lv_obj_t *item_btn = lv_imgbtn_create(scroll_item_container);
|
||||
lv_obj_t *item_btn = lv_img_create(scroll_item_container);
|
||||
lv_obj_set_size(item_btn, itemImg->header.w, itemImg->header.h);
|
||||
lv_obj_add_flag(item_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_set_pos(item_btn, 42, 52 * position);
|
||||
lv_imgbtn_set_src(item_btn, LV_IMGBTN_STATE_RELEASED, NULL, itemImg, NULL);
|
||||
lv_img_set_src(item_btn, itemImg);
|
||||
lv_obj_add_event_cb(item_btn, itemClickEventCb, LV_EVENT_CLICKED, (void *)(uint32_t)position);
|
||||
|
||||
//We add the click-able label with the title of the item
|
||||
@ -105,12 +107,12 @@ void menu_screen_create(MenuScreen_t * const menuScreen)
|
||||
menuScreen->display = lv_obj_create(NULL);
|
||||
|
||||
//We add the screen header
|
||||
common_screen_header_component(menuScreen->display, "Menu", 65);
|
||||
common_screen_header_component(menuScreen->display, "Menu", 50);
|
||||
|
||||
lv_obj_t *scroll_item_container = lv_obj_create(menuScreen->display);
|
||||
lv_obj_set_style_bg_color(scroll_item_container, lv_color_make(0xFF,0xFF,0xFF), LV_PART_MAIN);
|
||||
lv_obj_set_size(scroll_item_container, lv_pct(100), 240-65);
|
||||
lv_obj_set_pos(scroll_item_container, 0, 65);
|
||||
lv_obj_set_size(scroll_item_container, lv_pct(100), 240-50);
|
||||
lv_obj_set_pos(scroll_item_container, 0, 50);
|
||||
lv_obj_set_style_pad_all(scroll_item_container, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_pad_top(scroll_item_container, 10, LV_PART_MAIN);
|
||||
lv_obj_set_style_pad_bottom(scroll_item_container, 20, LV_PART_MAIN);
|
||||
@ -118,14 +120,14 @@ void menu_screen_create(MenuScreen_t * const menuScreen)
|
||||
lv_obj_set_style_border_width(scroll_item_container, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_pad_right(scroll_item_container, 15, LV_PART_SCROLLBAR);
|
||||
|
||||
menu_screen_add_item(scroll_item_container, 0, &watch_menu_clock_icon, "Watch", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 1, &watch_menu_compass_icon, "Compass", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 2, &watch_menu_alarm_icon, "Alarm", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 0, &watch_menu_clock_icon, translation_get_word(TRANSLATION_WATCH), &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 1, &watch_menu_compass_icon, translation_get_word(TRANSLATION_COMPASS), &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 2, &watch_menu_alarm_icon, translation_get_word(TRANSLATION_ALARM), &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 3, &watch_menu_messages_icon, "Text messages", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 4, &watch_menu_mail_icon, "Mails", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 5, &watch_menu_dialer_icon, "Phone", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 6, &watch_menu_contacts_icon, "Contacts", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 7, &watch_menu_settings_icon, "Settings", &(menu_item_cb));
|
||||
menu_screen_add_item(scroll_item_container, 7, &watch_menu_settings_icon, translation_get_word(TRANSLATION_SETTINGS), &(menu_item_cb));
|
||||
|
||||
//We register the event callback to handle the cleanup
|
||||
lv_obj_add_event_cb(menuScreen->display, &(cleanup_event_cb), LV_EVENT_DELETE, menuScreen);
|
||||
|
@ -3,24 +3,73 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
|
||||
typedef enum SettingMode
|
||||
{
|
||||
SETTING_MODE_GET = 0,
|
||||
SETTING_MODE_SET
|
||||
} SettingMode_e;
|
||||
|
||||
typedef struct SettingsScreenAPIInterface
|
||||
{
|
||||
void (*setBrightnessSettingsCb)(uint8_t brightness);
|
||||
void (*setTimeSettingsCb)(uint8_t hour, uint8_t minute, uint8_t second, uint8_t day, uint8_t month, uint8_t year);
|
||||
void (*setTimeoutSettingsCb)(uint8_t timeout);
|
||||
void (*setOrientationSettingsCb)(uint8_t orientation);
|
||||
void (*setTimeSettingsCb)(uint8_t *hour, uint8_t *minute, uint8_t *second, uint8_t *day, uint8_t *month, uint8_t *year, SettingMode_e mode);
|
||||
void (*setBrightnessSettingsCb)(uint8_t *brightness, SettingMode_e mode);
|
||||
void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode);
|
||||
void (*setOrientationSettingsCb)(uint8_t *orientation, SettingMode_e mode);
|
||||
void (*setWristTiltSettingsCb)(bool *enabled, SettingMode_e mode);
|
||||
void (*setDisplayVibrationDurationSettingsCb)(uint8_t *duration, SettingMode_e mode);
|
||||
void (*setDisplayVibrationStrengthSettingsCb)(uint8_t *strength, SettingMode_e mode);
|
||||
void (*setBLEEnabledSettingsCb)(bool *enabled, SettingMode_e mode);
|
||||
void (*setWiFiEnabledSettingsCb)(bool *enabled, SettingMode_e mode);
|
||||
void (*setLanguageSettingsCb)(uint8_t *language, SettingMode_e mode);
|
||||
void (*getBLEDeviceNameCb)(const char **dev_name);
|
||||
void (*getBatteryVoltageCb)(uint16_t *battery_voltage);
|
||||
void (*saveSettingsCb)(void);
|
||||
void (*factoryResetCb)(void);
|
||||
} SettingsScreenAPIInterface_t;
|
||||
|
||||
typedef struct SettingsScreen
|
||||
{
|
||||
SettingsScreenAPIInterface_t settingsScreenAPIInterface;
|
||||
/* Menu list items */
|
||||
lv_obj_t *time_and_date_item;
|
||||
lv_obj_t *display_item;
|
||||
lv_obj_t *notifications_item;
|
||||
lv_obj_t *connectivity_item;
|
||||
lv_obj_t *language_item;
|
||||
lv_obj_t *about_item;
|
||||
|
||||
lv_obj_t *side_screen;
|
||||
|
||||
/* Menu widgets */
|
||||
lv_obj_t *hour_roller;
|
||||
lv_obj_t *minute_roller;
|
||||
lv_obj_t *second_roller;
|
||||
lv_obj_t *checkbox_time_12H;
|
||||
lv_obj_t *checkbox_time_24H;
|
||||
lv_obj_t *day_roller;
|
||||
lv_obj_t *month_roller;
|
||||
lv_obj_t *year_roller;
|
||||
lv_obj_t *wrist_tilt_switch;
|
||||
lv_obj_t *ble_switch;
|
||||
lv_obj_t *wifi_switch;
|
||||
|
||||
struct
|
||||
{
|
||||
lv_obj_t *current_time_label;
|
||||
char current_time_text[20];
|
||||
} currentTime;
|
||||
|
||||
struct
|
||||
{
|
||||
lv_obj_t *batteryVoltageLabel;
|
||||
char batteryVoltageText[8];
|
||||
} batteryVoltage;
|
||||
|
||||
/* Main screen */
|
||||
lv_obj_t *display;
|
||||
|
||||
/* Other */
|
||||
lv_timer_t *about_refresh_timer;
|
||||
} SettingsScreen_t;
|
||||
|
||||
void settings_screen_init(SettingsScreen_t * const settingsScreen);
|
||||
@ -31,6 +80,4 @@ void settings_screen_create(SettingsScreen_t * const settingsScreen);
|
||||
|
||||
void settings_screen_destroy(SettingsScreen_t * const settingsScreen);
|
||||
|
||||
void settings_screen(void);
|
||||
|
||||
#endif //SETTINGS_SCREEN_H
|
||||
|
@ -4,6 +4,27 @@
|
||||
#include <stdio.h>
|
||||
#include "app_log.h"
|
||||
|
||||
LV_IMG_DECLARE(battery_low_icon)
|
||||
LV_IMG_DECLARE(battery_charging_icon)
|
||||
LV_IMG_DECLARE(battery_charged_icon)
|
||||
|
||||
static void _set_bluetooth_indicator(WatchFace_t * const watchFace)
|
||||
{
|
||||
switch(watchFace->bluetoothIndicator.bluetoothState)
|
||||
{
|
||||
case BLUETOOTH_STATE_ON:
|
||||
lv_obj_set_style_img_recolor_opa(watchFace->bluetoothIndicator.bluetoothIcon, 185, LV_PART_MAIN);
|
||||
lv_obj_clear_flag(watchFace->bluetoothIndicator.bluetoothIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
break;
|
||||
case BLUETOOTH_STATE_CONNECTED:
|
||||
lv_obj_set_style_img_recolor_opa(watchFace->bluetoothIndicator.bluetoothIcon, 0, LV_PART_MAIN);
|
||||
lv_obj_clear_flag(watchFace->bluetoothIndicator.bluetoothIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
break;
|
||||
default:
|
||||
lv_obj_add_flag(watchFace->bluetoothIndicator.bluetoothIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
static void gesture_event_cb(lv_event_t * e)
|
||||
{
|
||||
WatchFace_t *watchFace = e->user_data;
|
||||
@ -17,6 +38,7 @@ static void gesture_event_cb(lv_event_t * e)
|
||||
case LV_DIR_RIGHT:
|
||||
LV_LOG_USER("GESTURE : RIGHT");
|
||||
// We delete the timer
|
||||
lv_timer_del(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
lv_timer_del(watchFace->handAnimationTimer);
|
||||
// We create the menu screen and switch to it
|
||||
extern MenuScreen_t menuScreen;
|
||||
@ -60,11 +82,17 @@ static void update_watch_hands_angles(WatchFace_t * const watchFace, uint8_t inc
|
||||
|
||||
//Don't forget to update the day date window
|
||||
sprintf(watchFace->dateWindow.dateWindowText, "%s%d", watchFace->dateTime.tm_mday < 10 ? " " : "", watchFace->dateTime.tm_mday);
|
||||
lv_obj_invalidate(watchFace->dateWindow.dateWindowWidget);
|
||||
lv_label_set_text_static(watchFace->dateWindow.dateWindowWidget, watchFace->dateWindow.dateWindowText);
|
||||
|
||||
APP_LOG_DEBUG("Syncing time");
|
||||
|
||||
if(watchFace->batteryIndicatorCb)
|
||||
watch_face_set_battery_indicator(watchFace, watchFace->batteryIndicatorCb());
|
||||
{
|
||||
uint8_t levelInPercent = 0;
|
||||
BatteryState_e batteryState = BATTERY_STATE_DISCHARGING;
|
||||
watchFace->batteryIndicatorCb(&levelInPercent, &batteryState);
|
||||
watch_face_set_battery_indicator(watchFace, levelInPercent, batteryState);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -93,6 +121,57 @@ static void hand_timer_anim_cb(lv_timer_t *timer)
|
||||
update_watch_hands_angles(watchFace, 12);
|
||||
}
|
||||
|
||||
static void battery_timer_anim_cb(lv_timer_t *timer)
|
||||
{
|
||||
WatchFace_t *watchFace = timer->user_data;
|
||||
|
||||
if(lv_obj_has_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN))
|
||||
{
|
||||
lv_obj_clear_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
lv_obj_add_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
static void set_battery_state_icon(WatchFace_t * const watchFace)
|
||||
{
|
||||
switch(watchFace->batteryIndicator.batteryState)
|
||||
{
|
||||
case BATTERY_STATE_CHARGING:
|
||||
lv_timer_pause(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
lv_obj_clear_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_img_set_src(watchFace->batteryIndicator.batteryIcon, &battery_charging_icon);
|
||||
break;
|
||||
case BATTERY_STATE_CHARGED:
|
||||
lv_timer_pause(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
lv_obj_clear_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_img_set_src(watchFace->batteryIndicator.batteryIcon, &battery_charged_icon);
|
||||
break;
|
||||
default:
|
||||
lv_obj_add_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_img_set_src(watchFace->batteryIndicator.batteryIcon, &battery_low_icon);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void hide_hour_and_minutes_hand_cb(lv_event_t *e)
|
||||
{
|
||||
WatchFace_t *watchFace = e->user_data;
|
||||
|
||||
if(lv_obj_has_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN))
|
||||
{
|
||||
lv_obj_clear_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_clear_flag(watchFace->minuteHand.handImg, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
lv_obj_add_flag(watchFace->hourHand.handImg, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(watchFace->minuteHand.handImg, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
void watch_face_init(WatchFace_t * const watchFace)
|
||||
{
|
||||
if(!watchFace)
|
||||
@ -101,6 +180,7 @@ void watch_face_init(WatchFace_t * const watchFace)
|
||||
return;
|
||||
}
|
||||
memset(watchFace, 0, sizeof(WatchFace_t));
|
||||
strcpy(watchFace->stepCounter.text, "0");
|
||||
}
|
||||
|
||||
void watch_face_register_date_time_cb(WatchFace_t * const watchFace, DateTimeCb_t dateTimeCb)
|
||||
@ -139,7 +219,8 @@ void watch_face_create(WatchFace_t * const watchFace)
|
||||
LV_IMG_DECLARE(watch_casio_minute_hand_asset)
|
||||
LV_IMG_DECLARE(watch_casio_second_hand_asset)
|
||||
LV_IMG_DECLARE(watch_casio_medium_hand_asset)
|
||||
LV_IMG_DECLARE(watch_casio_small_hand_asset)
|
||||
//LV_IMG_DECLARE(watch_casio_small_hand_asset)
|
||||
LV_IMG_DECLARE(bluetooth_icon)
|
||||
|
||||
//We create our parent screen :
|
||||
if(watchFace->display)
|
||||
@ -148,34 +229,35 @@ void watch_face_create(WatchFace_t * const watchFace)
|
||||
lv_obj_del(watchFace->display);
|
||||
watchFace->display = NULL;
|
||||
}
|
||||
watchFace->display = lv_obj_create(NULL);
|
||||
//Our display is the watch face image :
|
||||
watchFace->display = lv_img_create(NULL);
|
||||
lv_img_set_src(watchFace->display, &watch_casio_face_asset);
|
||||
lv_obj_set_style_bg_color(watchFace->display, lv_color_black(), LV_PART_MAIN);
|
||||
//We load our assets :
|
||||
lv_obj_t *watchFaceImg = lv_img_create(watchFace->display);
|
||||
lv_img_set_src(watchFaceImg, &watch_casio_face_asset);
|
||||
lv_obj_add_event_cb(watchFace->display, &(hide_hour_and_minutes_hand_cb), LV_EVENT_LONG_PRESSED, watchFace);
|
||||
|
||||
lv_obj_t *smallHandImg = lv_img_create(watchFace->display);
|
||||
//We load our other assets :
|
||||
/*lv_obj_t *smallHandImg = lv_img_create(watchFace->display);
|
||||
lv_img_set_src(smallHandImg, &watch_casio_small_hand_asset);
|
||||
lv_obj_set_pos(smallHandImg, 69, 98);
|
||||
lv_img_set_pivot(smallHandImg, 4, 20);
|
||||
lv_img_set_pivot(smallHandImg, 4, 20);*/
|
||||
|
||||
//Battery arc is created here
|
||||
if(watchFace->batteryIndicator.battery_arc)
|
||||
if(watchFace->batteryIndicator.batteryArc)
|
||||
{
|
||||
LV_LOG_ERROR("battery_arc should be NULL here !");
|
||||
lv_obj_del(watchFace->batteryIndicator.battery_arc);
|
||||
watchFace->batteryIndicator.battery_arc = NULL;
|
||||
LV_LOG_ERROR("batteryArc should be NULL here !");
|
||||
lv_obj_del(watchFace->batteryIndicator.batteryArc);
|
||||
watchFace->batteryIndicator.batteryArc = NULL;
|
||||
}
|
||||
|
||||
watchFace->batteryIndicator.battery_arc = lv_arc_create(watchFace->display);
|
||||
lv_obj_remove_style(watchFace->batteryIndicator.battery_arc, NULL, LV_PART_KNOB);
|
||||
lv_obj_clear_flag(watchFace->batteryIndicator.battery_arc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_set_size(watchFace->batteryIndicator.battery_arc, 60, 60);
|
||||
lv_obj_align(watchFace->batteryIndicator.battery_arc, LV_ALIGN_CENTER, -1, 45);
|
||||
lv_obj_set_style_arc_width(watchFace->batteryIndicator.battery_arc, 5, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_width(watchFace->batteryIndicator.battery_arc, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.battery_arc, lv_color_make(228, 233, 236), LV_PART_INDICATOR);
|
||||
lv_arc_set_value(watchFace->batteryIndicator.battery_arc, 100);
|
||||
watchFace->batteryIndicator.batteryArc = lv_arc_create(watchFace->display);
|
||||
lv_obj_remove_style(watchFace->batteryIndicator.batteryArc, NULL, LV_PART_KNOB);
|
||||
lv_obj_clear_flag(watchFace->batteryIndicator.batteryArc, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_set_size(watchFace->batteryIndicator.batteryArc, 60, 60);
|
||||
lv_obj_align(watchFace->batteryIndicator.batteryArc, LV_ALIGN_CENTER, -1, 45);
|
||||
lv_obj_set_style_arc_width(watchFace->batteryIndicator.batteryArc, 5, LV_PART_INDICATOR);
|
||||
lv_obj_set_style_arc_width(watchFace->batteryIndicator.batteryArc, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.batteryArc, lv_color_make(228, 233, 236), LV_PART_INDICATOR);
|
||||
lv_arc_set_value(watchFace->batteryIndicator.batteryArc, 100);
|
||||
|
||||
if(watchFace->batteryIndicator.label)
|
||||
{
|
||||
@ -188,9 +270,57 @@ void watch_face_create(WatchFace_t * const watchFace)
|
||||
strcpy(watchFace->batteryIndicator.text, "100 %");
|
||||
lv_label_set_text_static(watchFace->batteryIndicator.label, watchFace->batteryIndicator.text);
|
||||
lv_obj_set_style_text_color(watchFace->batteryIndicator.label, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_align_to(watchFace->batteryIndicator.label, watchFace->batteryIndicator.battery_arc, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_align_to(watchFace->batteryIndicator.label, watchFace->batteryIndicator.batteryArc, LV_ALIGN_CENTER, 0, -5);
|
||||
|
||||
// Battery icon is created here
|
||||
if(watchFace->batteryIndicator.batteryIcon)
|
||||
{
|
||||
LV_LOG_ERROR("batteryIcon should be NULL here !");
|
||||
lv_obj_del(watchFace->batteryIndicator.batteryIcon);
|
||||
watchFace->batteryIndicator.batteryIcon = NULL;
|
||||
}
|
||||
|
||||
watchFace->batteryIndicator.batteryIcon = lv_img_create(watchFace->display);
|
||||
set_battery_state_icon(watchFace);
|
||||
lv_img_set_zoom(watchFace->batteryIndicator.batteryIcon, 141);
|
||||
lv_obj_align_to(watchFace->batteryIndicator.batteryIcon, watchFace->batteryIndicator.label, LV_ALIGN_OUT_BOTTOM_MID, 0, -9);
|
||||
|
||||
if(watchFace->batteryIndicator.lowBatteryAnimationTimer)
|
||||
{
|
||||
LV_LOG_ERROR("battery animation timer should be NULL here !");
|
||||
lv_timer_del(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
watchFace->batteryIndicator.lowBatteryAnimationTimer = NULL;
|
||||
}
|
||||
watchFace->batteryIndicator.lowBatteryAnimationTimer = lv_timer_create(&(battery_timer_anim_cb), 500, watchFace);
|
||||
lv_timer_pause(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
|
||||
// Bluetooth status icon is created here
|
||||
if(watchFace->bluetoothIndicator.bluetoothIcon)
|
||||
{
|
||||
LV_LOG_ERROR("bluetoothIcon be NULL here !");
|
||||
lv_obj_del(watchFace->bluetoothIndicator.bluetoothIcon);
|
||||
watchFace->bluetoothIndicator.bluetoothIcon = NULL;
|
||||
}
|
||||
watchFace->bluetoothIndicator.bluetoothIcon = lv_img_create(watchFace->display);
|
||||
lv_img_set_src(watchFace->bluetoothIndicator.bluetoothIcon, &bluetooth_icon);
|
||||
lv_img_set_zoom(watchFace->bluetoothIndicator.bluetoothIcon, 128);
|
||||
lv_obj_add_flag(watchFace->bluetoothIndicator.bluetoothIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_set_style_img_recolor(watchFace->bluetoothIndicator.bluetoothIcon, lv_palette_main(LV_PALETTE_GREY), LV_PART_MAIN);
|
||||
lv_obj_align_to(watchFace->bluetoothIndicator.bluetoothIcon, watchFace->batteryIndicator.batteryArc, LV_ALIGN_OUT_LEFT_BOTTOM, -9, 0);
|
||||
_set_bluetooth_indicator(watchFace);
|
||||
|
||||
// StepCounter label is created here
|
||||
if(watchFace->stepCounter.label)
|
||||
{
|
||||
LV_LOG_ERROR("stepCounter should be NULL here !");
|
||||
lv_obj_del(watchFace->stepCounter.label);
|
||||
watchFace->stepCounter.label = NULL;
|
||||
}
|
||||
|
||||
watchFace->stepCounter.label = lv_label_create(watchFace->display);
|
||||
lv_label_set_text_static(watchFace->stepCounter.label, watchFace->stepCounter.text);
|
||||
lv_obj_set_style_text_color(watchFace->stepCounter.label, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_set_pos(watchFace->stepCounter.label, 63, 111);
|
||||
|
||||
if(watchFace->mediumHand24h.handImg)
|
||||
{
|
||||
@ -259,6 +389,9 @@ void watch_face_create(WatchFace_t * const watchFace)
|
||||
//We set the appropriate angles to each of the hands
|
||||
update_watch_hands_angles(watchFace, 0);
|
||||
|
||||
//Don't forget to make the background image clickable to be able to use gestures on it.
|
||||
lv_obj_add_flag(watchFace->display, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
//We register the event callback to handle gestures
|
||||
lv_obj_add_event_cb(watchFace->display, &(gesture_event_cb), LV_EVENT_GESTURE, watchFace);
|
||||
//We register the event callback to handle the cleanup
|
||||
@ -275,20 +408,7 @@ void watch_face_create(WatchFace_t * const watchFace)
|
||||
watchFace->handAnimationTimer = lv_timer_create(&(hand_timer_anim_cb), 199, watchFace);
|
||||
}
|
||||
|
||||
void watch_face_force_sync(WatchFace_t *const watchFace)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!watchFace->display) return;
|
||||
|
||||
update_watch_hands_angles(watchFace, 0);
|
||||
}
|
||||
|
||||
void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t percentage)
|
||||
void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t levelInPercent, BatteryState_e batteryState)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
@ -300,18 +420,73 @@ void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t per
|
||||
|
||||
lv_color_t arc_color = lv_color_make(228, 233, 236);
|
||||
|
||||
if(percentage <= 10)
|
||||
if(levelInPercent <= 10)
|
||||
arc_color = lv_color_make(228, 33, 81);
|
||||
else if(percentage <= 30)
|
||||
else if(levelInPercent <= 30)
|
||||
arc_color = lv_color_make(247, 148, 29);
|
||||
else if(percentage <= 50)
|
||||
else if(levelInPercent <= 50)
|
||||
arc_color = lv_color_make(226, 175, 58);
|
||||
|
||||
lv_arc_set_value(watchFace->batteryIndicator.battery_arc, percentage);
|
||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.battery_arc, arc_color, LV_PART_INDICATOR);
|
||||
sprintf(watchFace->batteryIndicator.text, "%u %%", percentage);
|
||||
lv_arc_set_value(watchFace->batteryIndicator.batteryArc, levelInPercent);
|
||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.batteryArc, arc_color, LV_PART_INDICATOR);
|
||||
sprintf(watchFace->batteryIndicator.text, "%u %%", levelInPercent);
|
||||
lv_label_set_text_static(watchFace->batteryIndicator.label, watchFace->batteryIndicator.text);
|
||||
lv_obj_align_to(watchFace->batteryIndicator.label, watchFace->batteryIndicator.battery_arc, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_align_to(watchFace->batteryIndicator.label, watchFace->batteryIndicator.batteryArc, LV_ALIGN_CENTER, 0, -5);
|
||||
|
||||
//We save the new battery state only if it's different, this allows to have a trigger when it changes :
|
||||
if(watchFace->batteryIndicator.batteryState != batteryState)
|
||||
{
|
||||
watchFace->batteryIndicator.batteryState = batteryState;
|
||||
set_battery_state_icon(watchFace);
|
||||
}
|
||||
|
||||
//Finally we check if it's time to show the battery low indicator by enabling it's timer
|
||||
if(levelInPercent <= 10 && watchFace->batteryIndicator.batteryState == BATTERY_STATE_DISCHARGING)
|
||||
{
|
||||
lv_timer_resume(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
}
|
||||
else if(watchFace->batteryIndicator.batteryState == BATTERY_STATE_DISCHARGING)
|
||||
{
|
||||
lv_timer_pause(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||
lv_obj_add_flag(watchFace->batteryIndicator.batteryIcon, LV_OBJ_FLAG_HIDDEN);
|
||||
}
|
||||
}
|
||||
|
||||
void watch_face_set_bluetooth_indicator(WatchFace_t * const watchFace, BluetoothState_e bluetoothState)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return;
|
||||
}
|
||||
|
||||
if(watchFace->bluetoothIndicator.bluetoothState == bluetoothState) return;
|
||||
|
||||
watchFace->bluetoothIndicator.bluetoothState = bluetoothState;
|
||||
|
||||
if(!watchFace->display) return;
|
||||
|
||||
_set_bluetooth_indicator(watchFace);
|
||||
}
|
||||
|
||||
void watch_face_set_step_count_indicator(WatchFace_t * const watchFace, uint32_t step_count)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return;
|
||||
}
|
||||
|
||||
if(step_count < 1000)
|
||||
sprintf(watchFace->stepCounter.text, "%u", step_count);
|
||||
else if(step_count < 9996)
|
||||
sprintf(watchFace->stepCounter.text, "%.2fk", step_count/1000.0);
|
||||
else
|
||||
sprintf(watchFace->stepCounter.text, "%.1fk", step_count/1000.0);
|
||||
|
||||
if(!watchFace->display) return;
|
||||
|
||||
lv_label_set_text_static(watchFace->stepCounter.label, watchFace->stepCounter.text);
|
||||
}
|
||||
|
||||
void watch_face_destroy(WatchFace_t * const watchFace)
|
||||
@ -329,7 +504,34 @@ void watch_face_destroy(WatchFace_t * const watchFace)
|
||||
watchFace->minuteHand.handImg = NULL;
|
||||
watchFace->secondHand.handImg = NULL;
|
||||
watchFace->mediumHand24h.handImg = NULL;
|
||||
watchFace->batteryIndicator.battery_arc = NULL;
|
||||
watchFace->batteryIndicator.batteryArc = NULL;
|
||||
watchFace->batteryIndicator.label = NULL;
|
||||
watchFace->batteryIndicator.batteryIcon = NULL;
|
||||
watchFace->batteryIndicator.lowBatteryAnimationTimer = NULL;
|
||||
watchFace->stepCounter.label = NULL;
|
||||
watchFace->bluetoothIndicator.bluetoothIcon = NULL;
|
||||
}
|
||||
|
||||
void watch_face_force_sync(WatchFace_t *const watchFace)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!watchFace->display) return;
|
||||
|
||||
update_watch_hands_angles(watchFace, 0);
|
||||
}
|
||||
|
||||
bool watch_face_is_in_use(WatchFace_t * const watchFace)
|
||||
{
|
||||
if(!watchFace)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return false;
|
||||
}
|
||||
|
||||
return watchFace->display != NULL;
|
||||
}
|
||||
|
@ -4,8 +4,23 @@
|
||||
#include "lvgl.h"
|
||||
#include <time.h>
|
||||
|
||||
typedef enum BatteryState
|
||||
{
|
||||
BATTERY_STATE_DISCHARGING = 0,
|
||||
BATTERY_STATE_CHARGING,
|
||||
BATTERY_STATE_CHARGED,
|
||||
} BatteryState_e;
|
||||
|
||||
typedef enum BluetoothState
|
||||
{
|
||||
BLUETOOTH_STATE_OFF = 0,
|
||||
BLUETOOTH_STATE_ON,
|
||||
BLUETOOTH_STATE_CONNECTED
|
||||
} BluetoothState_e;
|
||||
|
||||
typedef void (*DateTimeCb_t)(struct tm * const dateTime);
|
||||
typedef uint8_t (*BatteryIndicatorCb_t)(void);
|
||||
|
||||
typedef void (*BatteryIndicatorCb_t)(uint8_t *levelInPercent, BatteryState_e *batteryState);
|
||||
|
||||
typedef struct DateWindow
|
||||
{
|
||||
@ -22,10 +37,25 @@ typedef struct WatchHand
|
||||
typedef struct BatteryIndicator
|
||||
{
|
||||
lv_obj_t *label;
|
||||
lv_obj_t *battery_arc;
|
||||
lv_obj_t *batteryArc;
|
||||
lv_obj_t *batteryIcon;
|
||||
lv_timer_t *lowBatteryAnimationTimer;
|
||||
char text[7];
|
||||
BatteryState_e batteryState:2;
|
||||
} BatteryIndicator_t;
|
||||
|
||||
typedef struct BluetoothIndicator
|
||||
{
|
||||
lv_obj_t *bluetoothIcon;
|
||||
BluetoothState_e bluetoothState;
|
||||
} BluetoothIndicator_t;
|
||||
|
||||
typedef struct StepCounter
|
||||
{
|
||||
lv_obj_t *label;
|
||||
char text[7];
|
||||
} StepCounter_t;
|
||||
|
||||
/* Watch face context object */
|
||||
typedef struct WatchFace
|
||||
{
|
||||
@ -39,7 +69,8 @@ typedef struct WatchFace
|
||||
lv_obj_t *display;
|
||||
DateWindow_t dateWindow;
|
||||
BatteryIndicator_t batteryIndicator;
|
||||
|
||||
StepCounter_t stepCounter;
|
||||
BluetoothIndicator_t bluetoothIndicator;
|
||||
struct tm dateTime;
|
||||
} WatchFace_t;
|
||||
|
||||
@ -76,7 +107,31 @@ void watch_face_create(WatchFace_t * const watchFace);
|
||||
* @param watchFace a pointer to the watch face context structure.
|
||||
* @param percentage the value to set the indicator to in percent.
|
||||
*/
|
||||
void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t percentage);
|
||||
|
||||
/**
|
||||
* @brief Sets the battery level in percent as well as it's current state to draw on the watch face.
|
||||
*
|
||||
* @param watchFace a pointer to the watch face context structure.
|
||||
* @param levelInPercent the level to set the indicator to in percent.
|
||||
* @param batteryState the current state of the battery : BATTERY_STATE_DISCHARGING, BATTERY_STATE_CHARGING or BATTERY_STATE_CHARGED
|
||||
*/
|
||||
void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t levelInPercent, BatteryState_e batteryState);
|
||||
|
||||
/**
|
||||
* @brief Sets the current bluetooth state to display on the watch face
|
||||
*
|
||||
* @param watchFace a pointer to the watch face context structure.
|
||||
* @param bluetoothState the state of the bluetooth modem to show, can be : BLUETOOTH_STATE_OFF, BLUETOOTH_STATE_ON or BLUETOOTH_STATE_CONNECTED
|
||||
*/
|
||||
void watch_face_set_bluetooth_indicator(WatchFace_t * const watchFace, BluetoothState_e bluetoothState);
|
||||
|
||||
/**
|
||||
* @brief Shows the current step count passed as parameter on the watch face.
|
||||
*
|
||||
* @param watchFace a pointer to the watch face context structure.
|
||||
* @param step_count the step count to show on the watch face.
|
||||
*/
|
||||
void watch_face_set_step_count_indicator(WatchFace_t * const watchFace, uint32_t step_count);
|
||||
|
||||
/**
|
||||
* @brief Forces the watch face to sync up with the RTC by calling the provided date_time_cb
|
||||
@ -85,6 +140,15 @@ void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t per
|
||||
*/
|
||||
void watch_face_force_sync(WatchFace_t * const watchFace);
|
||||
|
||||
/**
|
||||
* @brief Returns true if the watch face screen is currently being used and displayed.
|
||||
*
|
||||
* @param watchFace a pointer to the watch face context structure.
|
||||
* @return true if the watch face screen is being used
|
||||
* @return false if the watch face screen is not being used/displayed currently
|
||||
*/
|
||||
bool watch_face_is_in_use(WatchFace_t * const watchFace);
|
||||
|
||||
/**
|
||||
* @brief Frees all resources used by the WatchFace object
|
||||
*
|
||||
|
@ -38,9 +38,13 @@ void user_task_main(void *param)
|
||||
if(buf)
|
||||
{
|
||||
UBaseType_t writtenSize = vTaskList((char *)buf, 800);
|
||||
APP_LOG_INFO("Available RAM (bytes)/Total RAM (bytes) : %u/%u"NEW_LINE"Reset reason : %d"NEW_LINE"Clk : apb(%u), cpu(%u), wlan(%u)"NEW_LINE"Tasks (%lu) :"NEW_LINE,
|
||||
tls_mem_get_avail_heapsize(),
|
||||
total_mem_size,
|
||||
APP_LOG_INFO("Available RAM (bytes)/Total RAM (bytes) : %u/%u"NEW_LINE
|
||||
"FreeRTOS free heap/total heap : %u/%u byte(s)"NEW_LINE
|
||||
"Reset reason : %d"NEW_LINE
|
||||
"Clk : apb(%u), cpu(%u), wlan(%u)"NEW_LINE
|
||||
"Tasks (%lu) :"NEW_LINE,
|
||||
tls_mem_get_avail_heapsize(), total_mem_size,
|
||||
xPortGetFreeHeapSize(), configTOTAL_HEAP_SIZE,
|
||||
tls_sys_get_reboot_reason(),
|
||||
clk.apbclk, clk.cpuclk, clk.wlanclk,
|
||||
writtenSize);
|
||||
|
@ -1,13 +1,210 @@
|
||||
#include "watch_settings.h"
|
||||
#include "wm_internal_flash.h"
|
||||
#include "app_log.h"
|
||||
#include "translation.h"
|
||||
|
||||
/* WatchSetting object with default values */
|
||||
static WatchSettings_t watchSettings =
|
||||
/**
|
||||
* @brief WatchSetting object with default values.
|
||||
*
|
||||
* @note Used to restore factory settings for example or as default values when first start.
|
||||
*/
|
||||
static const WatchSettings_t defaultWatchSettings =
|
||||
{
|
||||
.timeAndDate = {.hour_format = 0, .date_format = 0, .automatic_time_and_date = 0},
|
||||
.display = {.brightness = 255, .sleep_timeout = 0,},
|
||||
|
||||
.first_time_init = false,
|
||||
.timeAndDate = {
|
||||
.time_and_date_hour_format = 0,
|
||||
.time_and_date_date_format = 0,
|
||||
.time_and_date_automatic = 0,
|
||||
},
|
||||
.display = {
|
||||
.display_brightness = 200,
|
||||
.display_delay_before_sleep = 0,
|
||||
.display_orientation = LCD_ORIENTATION_DEFAULT,
|
||||
.display_vibrate_on_touch_duration = 0,
|
||||
.display_vibrate_on_touch_strength = 6,
|
||||
.display_wrist_wakeup = true,
|
||||
},
|
||||
.notification = {
|
||||
.notification_vibration_duration = 3,
|
||||
.notification_vibration_strength = 6,
|
||||
.vibrate_on_email = true,
|
||||
.vibrate_on_sms = true,
|
||||
},
|
||||
.connectivity = {
|
||||
.connectivity_ble_enabled = false,
|
||||
.connectivity_wifi_enabled = false,
|
||||
},
|
||||
.languageAndUI = {
|
||||
.language = TRANSLATION_ENGLISH,
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Actual watchSettings object which can change and lives in RAM memory.
|
||||
*
|
||||
*/
|
||||
static WatchSettings_t watchSettings;
|
||||
|
||||
/**
|
||||
* @brief Internal variable used to know if something has to be saved or not because some settings changed.
|
||||
*
|
||||
* @note This is designed to prevent excessive wear and tear on the flash.
|
||||
*
|
||||
*/
|
||||
static bool _params_changed = false;
|
||||
|
||||
void watch_settings_time_and_date_set_hour_format(bool hour_24H_format)
|
||||
{
|
||||
watchSettings.timeAndDate.time_and_date_hour_format = hour_24H_format;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_time_and_date_set_date_format(uint8_t date_format)
|
||||
{
|
||||
watchSettings.timeAndDate.time_and_date_date_format = date_format;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_time_and_date_set_automatic(bool automatic)
|
||||
{
|
||||
watchSettings.timeAndDate.time_and_date_automatic = automatic;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_brightness(uint8_t brightness)
|
||||
{
|
||||
watchSettings.display.display_brightness = brightness;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_delay_before_sleep(uint8_t delay)
|
||||
{
|
||||
watchSettings.display.display_delay_before_sleep = delay;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_orientation(LCDOrientation_e orientation)
|
||||
{
|
||||
watchSettings.display.display_orientation = orientation;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_wrist_wakeup(bool wakeup)
|
||||
{
|
||||
watchSettings.display.display_wrist_wakeup = wakeup;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_vibrate_on_touch_strength(uint8_t level)
|
||||
{
|
||||
watchSettings.display.display_vibrate_on_touch_strength = level;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_display_set_vibrate_on_touch_duration(uint8_t duration)
|
||||
{
|
||||
watchSettings.display.display_vibrate_on_touch_duration = duration;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_notification_set_vibration_strength(uint8_t level)
|
||||
{
|
||||
watchSettings.notification.notification_vibration_strength = level;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_notification_set_vibration_duration(uint8_t duration)
|
||||
{
|
||||
watchSettings.notification.notification_vibration_duration = duration;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_connectivity_set_ble_enabled(bool enabled)
|
||||
{
|
||||
watchSettings.connectivity.connectivity_ble_enabled = enabled;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_connectivity_set_wifi_enabled(bool enabled)
|
||||
{
|
||||
watchSettings.connectivity.connectivity_wifi_enabled = enabled;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void watch_settings_language_and_UI_set_language(TranslationLanguage_e language)
|
||||
{
|
||||
watchSettings.languageAndUI.language = language;
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void persistency_init(void)
|
||||
{
|
||||
memcpy(&watchSettings, &defaultWatchSettings, sizeof(WatchSettings_t));
|
||||
}
|
||||
|
||||
WatchSettings_t *persistency_get_settings(void)
|
||||
{
|
||||
return &watchSettings;
|
||||
}
|
||||
|
||||
bool persistency_save_settings_to_flash(void)
|
||||
{
|
||||
if(!_params_changed)
|
||||
{
|
||||
APP_LOG_INFO("Nothing to save, no params changed");
|
||||
return true;
|
||||
}
|
||||
|
||||
uint8_t status = TLS_FLS_STATUS_OK;
|
||||
if(TLS_FLS_STATUS_OK != (status = tls_fls_write(WATCH_SETTINGS_FLASH_STORAGE_ADDRESS, (uint8_t *) &watchSettings, sizeof watchSettings)))
|
||||
{
|
||||
APP_LOG_ERROR("Failed to write settings to flash : %u", status);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Don't forget to reset the state variable here
|
||||
_params_changed = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool persistency_load_settings_from_flash(void)
|
||||
{
|
||||
uint8_t status = TLS_FLS_STATUS_OK;
|
||||
if(TLS_FLS_STATUS_OK != (status = tls_fls_read(WATCH_SETTINGS_FLASH_STORAGE_ADDRESS, (uint8_t *) &watchSettings, sizeof watchSettings)))
|
||||
{
|
||||
APP_LOG_ERROR("Failed to read settings to flash : %u", status);
|
||||
return false;
|
||||
}
|
||||
|
||||
// If it is the first time that we read the settings from flash,
|
||||
// we load the factory ones instead and we save'em.
|
||||
if(watchSettings.first_time_init)
|
||||
{
|
||||
persistency_factory_reset();
|
||||
return persistency_save_settings_to_flash();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void persistency_factory_reset(void)
|
||||
{
|
||||
memcpy(&watchSettings, &defaultWatchSettings, sizeof(WatchSettings_t));
|
||||
_params_changed = true;
|
||||
}
|
||||
|
||||
void persistency_debug(void)
|
||||
{
|
||||
uint32_t *p = (uint32_t *)&watchSettings;
|
||||
APP_LOG_DEBUG("%u %u %u %u %u %u",
|
||||
p[0],
|
||||
p[1],
|
||||
p[2],
|
||||
p[3],
|
||||
p[4],
|
||||
p[5]);
|
||||
}
|
||||
|
@ -2,48 +2,228 @@
|
||||
#define WATCH_SETTINGS_H
|
||||
|
||||
#include "wm_type_def.h"
|
||||
#include "lcd.h"
|
||||
#include "translation.h"
|
||||
|
||||
/* Time and Date Settings */
|
||||
/**
|
||||
* @brief The address in flash storage where the settings are saved
|
||||
*
|
||||
*/
|
||||
#define WATCH_SETTINGS_FLASH_STORAGE_ADDRESS (0x1E0000)
|
||||
|
||||
/**
|
||||
* @brief Time and Date Settings
|
||||
*
|
||||
*/
|
||||
typedef struct TimeAndDate
|
||||
{
|
||||
uint32_t hour_format:1;
|
||||
uint32_t date_format:2;
|
||||
uint32_t automatic_time_and_date:1;
|
||||
uint32_t time_and_date_hour_format:1,
|
||||
time_and_date_date_format:2,
|
||||
time_and_date_automatic:1;
|
||||
} TimeAndDate_t;
|
||||
|
||||
/* Display Settings */
|
||||
/**
|
||||
* @brief Display Settings
|
||||
*
|
||||
*/
|
||||
typedef struct Display
|
||||
{
|
||||
uint8_t brightness;
|
||||
uint8_t sleep_timeout;
|
||||
uint8_t orientation:2;
|
||||
uint32_t display_brightness:8,
|
||||
display_delay_before_sleep:4,
|
||||
display_orientation:2,
|
||||
display_wrist_wakeup:1,
|
||||
display_vibrate_on_touch_strength:3,
|
||||
display_vibrate_on_touch_duration:3;
|
||||
} Display_t;
|
||||
|
||||
/* Connectivity Settings */
|
||||
/**
|
||||
* @brief Notification Settings
|
||||
*
|
||||
*/
|
||||
typedef struct Notification
|
||||
{
|
||||
uint32_t vibrate_on_sms:1,
|
||||
vibrate_on_email:1,
|
||||
notification_vibration_strength:3,
|
||||
notification_vibration_duration:3;
|
||||
} Notification_t;
|
||||
|
||||
/**
|
||||
* @brief Connectivity Settings
|
||||
*
|
||||
*/
|
||||
typedef struct Connectivity
|
||||
{
|
||||
|
||||
uint32_t connectivity_ble_enabled:1,
|
||||
connectivity_wifi_enabled:1;
|
||||
} Connectivity_t;
|
||||
|
||||
/* Language and UI Settings */
|
||||
/**
|
||||
* @brief Language and UI Settings
|
||||
*
|
||||
* @note Languages : English, French and German will be available
|
||||
*
|
||||
*/
|
||||
typedef struct LanguageAndUI
|
||||
{
|
||||
|
||||
uint32_t language:3;
|
||||
} LanguageAndUI_t;
|
||||
|
||||
/* Main setting structure */
|
||||
/**
|
||||
* @brief Main setting structure
|
||||
*
|
||||
*/
|
||||
typedef struct WatchSettings
|
||||
{
|
||||
uint32_t first_time_init:1;
|
||||
TimeAndDate_t timeAndDate;
|
||||
Display_t display;
|
||||
Notification_t notification;
|
||||
Connectivity_t connectivity;
|
||||
LanguageAndUI_t languageAndUI;
|
||||
} WatchSettings_t;
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param hour_24H_format
|
||||
*/
|
||||
void watch_settings_time_and_date_set_hour_format(bool hour_24H_format);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param date_format
|
||||
*/
|
||||
void watch_settings_time_and_date_set_date_format(uint8_t date_format);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param automatic
|
||||
*/
|
||||
void watch_settings_time_and_date_set_automatic(bool automatic);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param brightness
|
||||
*/
|
||||
void watch_settings_display_set_brightness(uint8_t brightness);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param delay
|
||||
*/
|
||||
void watch_settings_display_set_delay_before_sleep(uint8_t delay);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param orientation
|
||||
*/
|
||||
void watch_settings_display_set_orientation(LCDOrientation_e orientation);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param wakeup
|
||||
*/
|
||||
void watch_settings_display_set_wrist_wakeup(bool wakeup);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param level
|
||||
*/
|
||||
void watch_settings_display_set_vibrate_on_touch_strength(uint8_t level);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
void watch_settings_display_set_vibrate_on_touch_duration(uint8_t duration);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param level
|
||||
*/
|
||||
void watch_settings_notification_set_vibration_strength(uint8_t level);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param duration
|
||||
*/
|
||||
void watch_settings_notification_set_vibration_duration(uint8_t duration);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param enabled
|
||||
*/
|
||||
void watch_settings_connectivity_set_ble_enabled(bool enabled);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param enabled
|
||||
*/
|
||||
void watch_settings_connectivity_set_wifi_enabled(bool enabled);
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
* @param language
|
||||
*/
|
||||
void watch_settings_language_and_UI_set_language(TranslationLanguage_e language);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Initializes the persistency layer. Must be called first before any other persistency API functions.
|
||||
*
|
||||
*/
|
||||
void persistency_init(void);
|
||||
|
||||
/**
|
||||
* @brief Returns the watchSettings structure living in RAM
|
||||
*
|
||||
* @return WatchSettings_t* a pointer to the WatchSettings structure
|
||||
*/
|
||||
WatchSettings_t *persistency_get_settings(void);
|
||||
|
||||
bool persistency_save_settings(void);
|
||||
/**
|
||||
* @brief Writes the current watchSettings settings to flash
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool persistency_save_settings_to_flash(void);
|
||||
|
||||
bool persistency_load_settings(void);
|
||||
/**
|
||||
* @brief Reads the stored settings in the flash to put them in the watchSettings object
|
||||
* which lives in RAM.
|
||||
* @note If it is the first time that the settings are read from flash, this will also write default settings to it.
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
bool persistency_load_settings_from_flash(void);
|
||||
|
||||
/**
|
||||
* @brief Reloads every settings of the watchSettings data structure with their default value.
|
||||
* @note The call to this function DOES NOT save the new settings to flash.
|
||||
* Call @ref persistency_save_settings_to_flash for that.
|
||||
*
|
||||
* @return true on success
|
||||
* @return false on failure
|
||||
*/
|
||||
void persistency_factory_reset(void);
|
||||
|
||||
void persistency_debug(void);
|
||||
|
||||
#endif //WATCH_SETTINGS_H
|
15
src/W800_SDK_v1.00.10/app/translation/Makefile
Normal file
@ -0,0 +1,15 @@
|
||||
TOP_DIR = ../..
|
||||
sinclude $(TOP_DIR)/tools/w800/conf.mk
|
||||
|
||||
ifndef PDIR
|
||||
GEN_LIBS = libtranslation$(LIB_EXT)
|
||||
endif
|
||||
|
||||
#DEFINES +=
|
||||
|
||||
sinclude $(TOP_DIR)/tools/w800/rules.mk
|
||||
|
||||
INCLUDES := $(INCLUDES) -I $(PDIR)include
|
||||
|
||||
PDIR := ../$(PDIR)
|
||||
sinclude $(PDIR)Makefile
|
39
src/W800_SDK_v1.00.10/app/translation/translation.c
Normal file
@ -0,0 +1,39 @@
|
||||
#include "wm_type_def.h"
|
||||
#include "translation.h"
|
||||
#include "watch_settings.h"
|
||||
|
||||
static const char * const translation_dictionary[][TRANSLATED_LANGUAGES_COUNT] =
|
||||
{
|
||||
[TRANSLATION_WATCH] = {
|
||||
[TRANSLATION_FRENCH] = "Montre",
|
||||
[TRANSLATION_GERMAN] = "Uhr",
|
||||
[TRANSLATION_ENGLISH]= "Watch"
|
||||
},
|
||||
[TRANSLATION_ALARM] = {
|
||||
[TRANSLATION_FRENCH] = "Reveil",
|
||||
[TRANSLATION_GERMAN] = "Wecker",
|
||||
[TRANSLATION_ENGLISH]= "Alarm"
|
||||
},
|
||||
[TRANSLATION_COMPASS] = {
|
||||
[TRANSLATION_FRENCH] = "Boussole",
|
||||
[TRANSLATION_GERMAN] = "Kompass",
|
||||
[TRANSLATION_ENGLISH]= "Compass"
|
||||
},
|
||||
[TRANSLATION_ALTIMETER] = {
|
||||
[TRANSLATION_FRENCH] = "Altimetre",
|
||||
[TRANSLATION_GERMAN] = "Hohenmesser",
|
||||
[TRANSLATION_ENGLISH]= "Altimeter"
|
||||
},
|
||||
[TRANSLATION_SETTINGS] = {
|
||||
[TRANSLATION_FRENCH] = "Parametres",
|
||||
[TRANSLATION_GERMAN] = "Einstellungen",
|
||||
[TRANSLATION_ENGLISH]= "Settings"
|
||||
},
|
||||
};
|
||||
|
||||
const char *translation_get_word(TranslationWord_e word)
|
||||
{
|
||||
uint8_t word_count = sizeof translation_dictionary / sizeof(*translation_dictionary);
|
||||
uint8_t language = persistency_get_settings()->languageAndUI.language;
|
||||
return translation_dictionary[word % word_count][language % TRANSLATED_LANGUAGES_COUNT];
|
||||
}
|
24
src/W800_SDK_v1.00.10/app/translation/translation.h
Normal file
@ -0,0 +1,24 @@
|
||||
#ifndef TRANSLATION_H
|
||||
#define TRANSLATION_H
|
||||
|
||||
#define TRANSLATED_LANGUAGES_COUNT (3)
|
||||
|
||||
typedef enum TranslationLanguage
|
||||
{
|
||||
TRANSLATION_FRENCH = 0,
|
||||
TRANSLATION_GERMAN,
|
||||
TRANSLATION_ENGLISH
|
||||
} TranslationLanguage_e;
|
||||
|
||||
typedef enum TranslationWord
|
||||
{
|
||||
TRANSLATION_WATCH = 0,
|
||||
TRANSLATION_ALARM,
|
||||
TRANSLATION_COMPASS,
|
||||
TRANSLATION_ALTIMETER,
|
||||
TRANSLATION_SETTINGS
|
||||
} TranslationWord_e;
|
||||
|
||||
const char * translation_get_word(TranslationWord_e word);
|
||||
|
||||
#endif //TRANSLATION_H
|
@ -58,6 +58,18 @@ void tls_set_rtc(struct tm *tblock);
|
||||
*/
|
||||
void tls_get_rtc(struct tm *tblock);
|
||||
|
||||
/** NOT PART OF THE OFFICIAL SDK **/
|
||||
|
||||
/**
|
||||
* @brief Checks if the RTC peripheral is running or not
|
||||
*
|
||||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool tls_is_rtc_running(void);
|
||||
|
||||
/**********************************/
|
||||
|
||||
/**
|
||||
* @brief This function is used to register pmu rtc interrupt
|
||||
*
|
||||
|
@ -24,7 +24,7 @@
|
||||
#define TLS_CONFIG_ONLY_FACTORY_ATCMD CFG_OFF
|
||||
|
||||
/**Host Interface&Command**/
|
||||
#define TLS_CONFIG_HOSTIF CFG_ON
|
||||
#define TLS_CONFIG_HOSTIF CFG_OFF
|
||||
#define TLS_CONFIG_AT_CMD (CFG_ON && TLS_CONFIG_HOSTIF)
|
||||
#define TLS_CONFIG_RI_CMD (CFG_ON && TLS_CONFIG_HOSTIF)
|
||||
#define TLS_CONFIG_RMMS (CFG_ON && TLS_CONFIG_HOSTIF)
|
||||
@ -36,15 +36,15 @@
|
||||
|
||||
/** SOCKET CONFIG **/
|
||||
#define TLS_CONFIG_SOCKET_STD CFG_ON
|
||||
#define TLS_CONFIG_SOCKET_RAW CFG_ON
|
||||
#define TLS_CONFIG_SOCKET_RAW CFG_OFF
|
||||
#define TLS_CONFIG_CMD_USE_RAW_SOCKET (CFG_ON && TLS_CONFIG_SOCKET_RAW)
|
||||
#define TLS_CONFIG_CMD_NET_USE_LIST_FTR CFG_ON
|
||||
#define TLS_CONFIG_CMD_NET_USE_LIST_FTR CFG_OFF
|
||||
|
||||
|
||||
|
||||
#define TLS_CONFIG_HARD_CRYPTO CFG_ON
|
||||
#define TLS_CONFIG_HARD_CRYPTO CFG_OFF
|
||||
|
||||
#define TLS_CONFIG_NTO CFG_ON
|
||||
#define TLS_CONFIG_NTO CFG_OFF
|
||||
#define TLS_CONFIG_CRYSTAL_24M CFG_OFF
|
||||
|
||||
/** HTTP CLIENT **/
|
||||
@ -54,17 +54,17 @@ HTTPS Lib
|
||||
SSL LIB
|
||||
CRYPTO
|
||||
*/
|
||||
#define TLS_CONFIG_HTTP_CLIENT (CFG_ON)
|
||||
#define TLS_CONFIG_HTTP_CLIENT (CFG_OFF)
|
||||
#define TLS_CONFIG_HTTP_CLIENT_PROXY CFG_OFF
|
||||
#define TLS_CONFIG_HTTP_CLIENT_AUTH_BASIC CFG_OFF
|
||||
#define TLS_CONFIG_HTTP_CLIENT_AUTH_DIGEST CFG_OFF
|
||||
#define TLS_CONFIG_HTTP_CLIENT_AUTH (TLS_CONFIG_HTTP_CLIENT_AUTH_BASIC || TLS_CONFIG_HTTP_CLIENT_AUTH_DIGEST)
|
||||
#define TLS_CONFIG_HTTP_CLIENT_SECURE (CFG_ON && (TLS_CONFIG_USE_POLARSSL || TLS_CONFIG_USE_MBEDTLS))
|
||||
#define TLS_CONFIG_HTTP_CLIENT_TASK (CFG_ON && TLS_CONFIG_HTTP_CLIENT)
|
||||
#define TLS_CONFIG_HTTP_CLIENT_SECURE (CFG_OFF && (TLS_CONFIG_USE_POLARSSL || TLS_CONFIG_USE_MBEDTLS))
|
||||
#define TLS_CONFIG_HTTP_CLIENT_TASK (CFG_OFF && TLS_CONFIG_HTTP_CLIENT)
|
||||
|
||||
/*MatrixSSL will be used except one of the following two Macros is CFG_ON*/
|
||||
#define TLS_CONFIG_USE_POLARSSL CFG_OFF
|
||||
#define TLS_CONFIG_USE_MBEDTLS CFG_ON
|
||||
#define TLS_CONFIG_USE_MBEDTLS CFG_OFF
|
||||
|
||||
#define TLS_CONFIG_SERVER_SIDE_SSL (CFG_ON && TLS_CONFIG_HTTP_CLIENT_SECURE && TLS_CONFIG_USE_MBEDTLS) /*MUST configure TLS_CONFIG_HTTP_CLIENT_SECURE CFG_ON */
|
||||
|
||||
@ -73,7 +73,7 @@ CRYPTO
|
||||
#define TLS_CONFIG_IGMP CFG_ON
|
||||
|
||||
|
||||
#define TLS_CONFIG_NTP CFG_ON
|
||||
#define TLS_CONFIG_NTP CFG_OFF
|
||||
|
||||
#if NIMBLE_FTR
|
||||
#define TLS_CONFIG_BLE CFG_ON
|
||||
|
@ -49,7 +49,7 @@
|
||||
#define LV_MEM_CUSTOM 0
|
||||
#if LV_MEM_CUSTOM == 0
|
||||
/*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
|
||||
#define LV_MEM_SIZE (40 * 1024U) /*[bytes]*/
|
||||
#define LV_MEM_SIZE (30 * 1024U) /*[bytes]*/
|
||||
|
||||
/*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
|
||||
#define LV_MEM_ADR 0 /*0: unused*/
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "lcd.h"
|
||||
#include "CST816D.h"
|
||||
#include "watch_peripherals.h"
|
||||
#include "watch_settings.h"
|
||||
|
||||
#include "app_log.h"
|
||||
|
||||
@ -50,17 +51,22 @@ static void touch_panel_isr(void *arg)
|
||||
CST816D_read_touch_event(p);
|
||||
}
|
||||
|
||||
void touch_panel_feedback_cb(struct _lv_indev_drv_t *lv_indev_drv, uint8_t lv_event_code)
|
||||
static void touch_panel_feedback_cb(struct _lv_indev_drv_t *lv_indev_drv, uint8_t lv_event_code)
|
||||
{
|
||||
(void)lv_indev_drv;
|
||||
|
||||
uint16_t vibration_strength = persistency_get_settings()->display.display_vibrate_on_touch_strength*32;
|
||||
uint32_t vibration_duration_ms = 0;
|
||||
if(persistency_get_settings()->display.display_vibrate_on_touch_duration)
|
||||
vibration_duration_ms = persistency_get_settings()->display.display_vibrate_on_touch_duration*50 + 50;
|
||||
|
||||
switch(lv_event_code)
|
||||
{
|
||||
case LV_EVENT_LONG_PRESSED:
|
||||
watch_peripherals_vibrate(255, 200);
|
||||
watch_peripherals_vibrate(255, vibration_duration_ms);
|
||||
break;
|
||||
case LV_EVENT_PRESSED:
|
||||
watch_peripherals_vibrate(200, 200);
|
||||
watch_peripherals_vibrate(vibration_strength > 255 ? 255 : vibration_strength, vibration_duration_ms);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -135,6 +141,7 @@ static void touchpad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data)
|
||||
// Set the last pressed coordinates taking into account the current display orientation
|
||||
switch(LCDConfig.LCDOrientation)
|
||||
{
|
||||
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||
case LCD_ORIENTATION_90:
|
||||
data->point.x = 239-last_y;
|
||||
data->point.y = last_x;
|
||||
@ -151,6 +158,24 @@ static void touchpad_read(lv_indev_drv_t * indev_drv, lv_indev_data_t * data)
|
||||
data->point.x = 239-last_x;
|
||||
data->point.y = 239-last_y;
|
||||
break;
|
||||
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||
case LCD_ORIENTATION_90:
|
||||
data->point.x = last_y;
|
||||
data->point.y = 239-last_x;
|
||||
break;
|
||||
case LCD_ORIENTATION_180:
|
||||
data->point.x = 239-last_x;
|
||||
data->point.y = 239-last_y;
|
||||
break;
|
||||
case LCD_ORIENTATION_270:
|
||||
data->point.x = 239-last_y;
|
||||
data->point.y = last_x;
|
||||
break;
|
||||
default:
|
||||
data->point.x = last_x;
|
||||
data->point.y = last_y;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -82,6 +82,13 @@ void tls_get_rtc(struct tm *tblock)
|
||||
tblock->tm_sec = ctrl1 & 0x0000003f;
|
||||
}
|
||||
|
||||
bool tls_is_rtc_running(void)
|
||||
{
|
||||
int ctrl2 = tls_reg_read32(HR_PMU_RTC_CTRL2);
|
||||
|
||||
return ctrl2 & (1 << 16) ? true : false;
|
||||
}
|
||||
|
||||
void PMU_RTC_IRQHandler(void)
|
||||
{
|
||||
tls_reg_write32(HR_PMU_INTERRUPT_SRC, BIT(4)); /* clear rtc interrupt */
|
||||
|
@ -95,7 +95,7 @@ void _mutex_release (u32 *mutex)
|
||||
u8 *TaskStartStk = NULL;
|
||||
tls_os_task_t tststarthdl = NULL;
|
||||
|
||||
#define TASK_USERMAIN_STK_SIZE 1024
|
||||
#define TASK_USERMAIN_STK_SIZE 512
|
||||
u8 *TaskUsermainStk = NULL;
|
||||
tls_os_task_t tstusermainhdl = NULL;
|
||||
|
||||
|
@ -167,14 +167,14 @@ tls_bt_init(uint8_t uart_idx)
|
||||
ble_hs_cfg.gatts_register_cb = on_svr_register_cb;
|
||||
ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
|
||||
/* Initialize all packages. */
|
||||
nimble_port_init();
|
||||
nimble_port_init(); // 7 k ram gone --> 112691
|
||||
/*Application levels code entry*/
|
||||
tls_ble_gap_init();
|
||||
tls_bt_util_init();
|
||||
tls_ble_gap_init(); // 0k ram gone
|
||||
tls_bt_util_init(); // 0k ram gone
|
||||
/*Initialize the vuart interface and enable controller*/
|
||||
ble_hci_vuart_init(uart_idx);
|
||||
ble_hci_vuart_init(uart_idx); // 47k gone --> 65423
|
||||
/* As the last thing, process events from default event queue. */
|
||||
tls_nimble_start();
|
||||
tls_nimble_start(); // 3k gone --> 62175
|
||||
|
||||
while(bt_adapter_state == WM_BT_STATE_OFF) {
|
||||
tls_os_time_delay(10);
|
||||
|
@ -15,6 +15,11 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** NOT PART OF THE OFFICIAL SDK **/
|
||||
int tls_bt_init(uint8_t uart_idx);
|
||||
int tls_bt_deinit(void);
|
||||
/**********************************/
|
||||
|
||||
|
||||
typedef enum {
|
||||
WM_BT_SYSTEM_ACTION_IDLE,
|
||||
|
@ -109,9 +109,6 @@ const char *tls_bt_gap_evt_2_str(uint32_t event)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#define BLE_HS_ENOERR 0
|
||||
|
||||
const char *tls_bt_rc_2_str(uint32_t event)
|
||||
{
|
||||
switch(event) {
|
||||
@ -153,7 +150,33 @@ const char *tls_bt_rc_2_str(uint32_t event)
|
||||
}
|
||||
}
|
||||
|
||||
const char *tls_bt_addr_type_2_str(uint8_t addr_type)
|
||||
{
|
||||
switch(addr_type)
|
||||
{
|
||||
CASE_RETURN_STR(BLE_OWN_ADDR_PUBLIC)
|
||||
CASE_RETURN_STR(BLE_OWN_ADDR_RANDOM)
|
||||
CASE_RETURN_STR(BLE_OWN_ADDR_RPA_PUBLIC_DEFAULT)
|
||||
CASE_RETURN_STR(BLE_OWN_ADDR_RPA_RANDOM_DEFAULT)
|
||||
|
||||
default:
|
||||
return "unknown addr_type";
|
||||
}
|
||||
}
|
||||
|
||||
const char *tls_bt_access_opt_2_str(uint8_t op)
|
||||
{
|
||||
switch(op)
|
||||
{
|
||||
CASE_RETURN_STR(BLE_GATT_ACCESS_OP_READ_CHR)
|
||||
CASE_RETURN_STR(BLE_GATT_ACCESS_OP_WRITE_CHR)
|
||||
CASE_RETURN_STR(BLE_GATT_ACCESS_OP_READ_DSC)
|
||||
CASE_RETURN_STR(BLE_GATT_ACCESS_OP_WRITE_DSC)
|
||||
|
||||
default:
|
||||
return "unknown operation type";
|
||||
}
|
||||
}
|
||||
|
||||
static void async_evt_func(struct ble_npl_event *ev)
|
||||
{
|
||||
|
@ -47,12 +47,15 @@ extern tls_bt_log_level_t tls_appl_trace_level;
|
||||
#define TLS_BT_APPL_TRACE_EVENT(...)
|
||||
#define TLS_BT_APPL_TRACE_DEBUG(...)
|
||||
#define TLS_BT_APPL_TRACE_VERBOSE(...)
|
||||
|
||||
#endif
|
||||
|
||||
#define BLE_HS_ENOERR 0
|
||||
|
||||
void tls_bt_log(uint32_t trace_set_mask, const char *fmt_str, ...);
|
||||
const char *tls_bt_gap_evt_2_str(uint32_t event);
|
||||
const char *tls_bt_rc_2_str(uint32_t event);
|
||||
const char *tls_bt_addr_type_2_str(uint8_t addr_type);
|
||||
const char *tls_bt_access_opt_2_str(uint8_t op);
|
||||
|
||||
extern int tls_bt_util_init(void);
|
||||
extern int tls_bt_util_deinit(void);
|
||||
|
@ -61,11 +61,11 @@
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_MSYS_1_BLOCK_COUNT
|
||||
#define MYNEWT_VAL_MSYS_1_BLOCK_COUNT (24)
|
||||
#define MYNEWT_VAL_MSYS_1_BLOCK_COUNT (10)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_MSYS_1_BLOCK_SIZE
|
||||
#define MYNEWT_VAL_MSYS_1_BLOCK_SIZE (292)
|
||||
#define MYNEWT_VAL_MSYS_1_BLOCK_SIZE (100) // Default 292
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT
|
||||
@ -425,7 +425,7 @@
|
||||
|
||||
/*** @apache-mynewt-nimble/nimble/host */
|
||||
#ifndef MYNEWT_VAL_BLE_ATT_PREFERRED_MTU
|
||||
#define MYNEWT_VAL_BLE_ATT_PREFERRED_MTU (512)
|
||||
#define MYNEWT_VAL_BLE_ATT_PREFERRED_MTU (256) // 512
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO
|
||||
@ -925,7 +925,7 @@
|
||||
|
||||
/*** @apache-mynewt-nimble/nimble/transport/socket */
|
||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_COUNT
|
||||
#define MYNEWT_VAL_BLE_ACL_BUF_COUNT (36)
|
||||
#define MYNEWT_VAL_BLE_ACL_BUF_COUNT (8) // Default 36
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_SIZE
|
||||
@ -947,11 +947,11 @@
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT
|
||||
#define MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT (16)
|
||||
#define MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT (5) // Default 16
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT
|
||||
#define MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT (96)
|
||||
#define MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT (5) // Default 96
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_SOCK_CLI_SYSINIT_STAGE
|
||||
|
@ -17,7 +17,7 @@ void tls_nimble_start(void)
|
||||
{
|
||||
tls_host_task_stack_ptr = (void *)tls_mem_alloc(MYNEWT_VAL(OS_HS_STACK_SIZE) * sizeof(uint32_t));
|
||||
assert(tls_host_task_stack_ptr != NULL);
|
||||
tls_os_task_create(&tls_host_task_hdl, "bth",
|
||||
tls_os_task_create(&tls_host_task_hdl, "ble_svc",
|
||||
nimble_host_task,
|
||||
(void *)0,
|
||||
(void *)tls_host_task_stack_ptr,
|
||||
|
@ -77,7 +77,7 @@
|
||||
#define configTICK_RATE_HZ ( ( portTickType ) 500u )
|
||||
#define configMAX_PRIORITIES (63)
|
||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 256 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) 12 * 1024 )
|
||||
#define configTOTAL_HEAP_SIZE ( ( size_t ) 4 * 1024 )
|
||||
#define configMAX_TASK_NAME_LEN ( 10 ) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define configUSE_TRACE_FACILITY 1
|
||||
#define configUSE_16_BIT_TICKS 0
|
||||
|
@ -43,20 +43,22 @@ INCLUDES += -I $(TOP_DIR)/src/os/rtos/include
|
||||
|
||||
INCLUDES += -I $(TOP_DIR)/src/app/factorycmd
|
||||
INCLUDES += -I $(TOP_DIR)/src/app/bleapp
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_include
|
||||
|
||||
INCLUDES += -I $(TOP_DIR)/app
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/lcd
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/mmc_sdio
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/i2c
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/watch_peripherals
|
||||
INCLUDES += -I $(TOP_DIR)/app/persistency
|
||||
INCLUDES += -I $(TOP_DIR)/app/app_include
|
||||
INCLUDES += -I $(TOP_DIR)/app/ble
|
||||
INCLUDES += -I $(TOP_DIR)/app/gfx
|
||||
INCLUDES += -I $(TOP_DIR)/app
|
||||
INCLUDES += -I $(TOP_DIR)/app/persistency
|
||||
INCLUDES += -I $(TOP_DIR)/app/translation
|
||||
|
||||
#lvgl include
|
||||
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_v8.3
|
||||
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_port
|
||||
|
||||
|
||||
#nimble host
|
||||
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/ext/tinycrypt/include
|
||||
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/nimble/host/include
|
||||
|
@ -44,6 +44,9 @@
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="altimeter_screen.h" />
|
||||
<Unit filename="altimeter_screen_assets.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="common_screen_components.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
@ -55,9 +58,7 @@
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="compass_screen.h" />
|
||||
<Unit filename="hour_hand.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="firmware_version.h" />
|
||||
<Unit filename="lv_conf.h" />
|
||||
<Unit filename="lv_drivers/display/ILI9341.h" />
|
||||
<Unit filename="lv_drivers/display/R61581.h" />
|
||||
@ -1648,13 +1649,7 @@
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="menu_screen.h" />
|
||||
<Unit filename="minute_hand.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="rsrc/hour_hand.png" />
|
||||
<Unit filename="second_hand.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="settings_screen.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
@ -1666,9 +1661,6 @@
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="watch_face.h" />
|
||||
<Unit filename="watch_img.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="watch_mask.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
|
@ -2,24 +2,39 @@
|
||||
<CodeBlocks_layout_file>
|
||||
<FileVersion major="1" minor="0" />
|
||||
<ActiveTarget name="Debug" />
|
||||
<File name="lvgl\src\misc\lv_types.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\core\lv_obj_style_gen.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1969" topLine="47" />
|
||||
<Cursor1 position="29532" topLine="612" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font_montserrat_30.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\font\lv_symbol_def.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="869" topLine="0" />
|
||||
<Cursor1 position="1135" topLine="14" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\lv_api_map.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\core\lv_disp.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="722" topLine="32" />
|
||||
<Cursor1 position="7126" topLine="230" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\indev\keyboard.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lv_drivers\win_drv.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="440" topLine="14" />
|
||||
<Cursor1 position="585" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\spinbox\lv_spinbox.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="4262" topLine="120" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_pos.c" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="10562" topLine="336" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="compass_assets.c" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="143" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_style.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -27,39 +42,44 @@
|
||||
<Cursor1 position="9059" topLine="238" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\roller\lv_roller.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\list\lv_list.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="715" topLine="26" />
|
||||
<Cursor1 position="721" topLine="16" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\win32drv\win32drv.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="menu_screen.c" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="524" topLine="954" />
|
||||
<Cursor1 position="3627" topLine="67" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_pos.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\lvgl.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7730" topLine="167" />
|
||||
<Cursor1 position="0" topLine="138" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\draw\lv_draw_rect.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\demos\widgets\assets\img_demo_widgets_avatar.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="539" topLine="9" />
|
||||
<Cursor1 position="1282774" topLine="472" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="menu_screen.c" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\label\lv_label.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1391" topLine="23" />
|
||||
<Cursor1 position="1299" topLine="36" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="compass_screen.c" open="1" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\core\lv_disp.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6408" topLine="136" />
|
||||
<Cursor1 position="615" topLine="25" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\demos\widgets\lv_demo_widgets.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\misc\lv_types.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="456" topLine="6" />
|
||||
<Cursor1 position="1969" topLine="47" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="firmware_version.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="160" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_indev_scroll.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -67,29 +87,44 @@
|
||||
<Cursor1 position="14405" topLine="323" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_face.c" open="1" top="1" tabpos="11" split="0" active="1" splitpos="702" zoom_1="-1" zoom_2="-1">
|
||||
<File name="altimeter_screen.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3268" topLine="76" />
|
||||
<Cursor1 position="1028" topLine="30" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\menu\lv_menu.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\examples\widgets\menu\lv_example_menu_5.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8169" topLine="288" />
|
||||
<Cursor1 position="7631" topLine="141" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\lv_conf_template.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\roller\lv_roller.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="56" />
|
||||
<Cursor1 position="715" topLine="26" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\win32drv\win32drv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\core\lv_obj.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="15" />
|
||||
<Cursor1 position="7842" topLine="283" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="common_screen_components.c" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\examples\widgets\bar\lv_example_bar_6.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="246" topLine="0" />
|
||||
<Cursor1 position="181" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\draw\lv_draw_img.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5230" topLine="191" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_timer.h" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="635" topLine="36" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_event.h" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5517" topLine="93" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\imgbtn\lv_imgbtn.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -97,14 +132,141 @@
|
||||
<Cursor1 position="2184" topLine="61" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_area.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\layouts\flex\lv_flex.c" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1789" topLine="60" />
|
||||
<Cursor1 position="3097" topLine="74" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\imgbtn\lv_imgbtn.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2129" topLine="53" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="compass_screen.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1253" topLine="18" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_face.c" open="1" top="0" tabpos="1" split="0" active="1" splitpos="702" zoom_1="-1" zoom_2="-1">
|
||||
<Cursor>
|
||||
<Cursor1 position="649" topLine="389" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_indev.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3034" topLine="107" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\demos\widgets\lv_demo_widgets.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="456" topLine="6" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_tree.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1234" topLine="139" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_color.c" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6907" topLine="258" />
|
||||
<Cursor1 position="10782" topLine="316" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_timer.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5053" topLine="144" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_tree.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2082" topLine="62" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\indev\keyboard.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="440" topLine="14" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\menu\lv_menu.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3321" topLine="109" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drv_conf.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6602" topLine="208" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="common_screen_components.c" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="498" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_anim.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3835" topLine="68" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="settings_screen.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="527" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\img\lv_img.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1863" topLine="59" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_refr.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2447" topLine="75" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5535" topLine="120" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_casio_assets.c" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3791697" topLine="77" />
|
||||
</Cursor>
|
||||
<Folding>
|
||||
<Collapse line="8" />
|
||||
<Collapse line="994" />
|
||||
<Collapse line="1386" />
|
||||
<Collapse line="1915" />
|
||||
<Collapse line="2436" />
|
||||
<Collapse line="2584" />
|
||||
<Collapse line="2752" />
|
||||
<Collapse line="2969" />
|
||||
<Collapse line="3186" />
|
||||
<Collapse line="3403" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_scroll.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1988" topLine="67" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\demos\widgets\lv_demo_widgets.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2825" topLine="122" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8074" topLine="159" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="compass_screen.c" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6172" topLine="154" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_area.h" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1789" topLine="74" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_style.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -117,210 +279,24 @@
|
||||
<Cursor1 position="1563" topLine="27" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\examples\widgets\menu\lv_example_menu_5.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7631" topLine="141" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_log.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1509" topLine="59" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="settings_screen.h" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="860" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\label\lv_label.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1299" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\libs\ffmpeg\lv_ffmpeg.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5784" topLine="170" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_symbol_def.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1135" topLine="14" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_class.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3011" topLine="100" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_anim.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3835" topLine="68" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_class.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1857" topLine="35" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="altimeter_screen.h" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\hal\lv_hal_disp.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="151" topLine="6" />
|
||||
<Cursor1 position="11123" topLine="327" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_disp.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="615" topLine="25" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\examples\widgets\bar\lv_example_bar_6.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="181" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_style_gen.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="28878" topLine="605" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\layouts\flex\lv_flex.c" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3097" topLine="74" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_log.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2557" topLine="68" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_refr.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2447" topLine="75" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\demos\widgets\assets\img_demo_widgets_avatar.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1282774" topLine="472" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_disp.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7136" topLine="245" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\hal\lv_hal_disp.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="823" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_scroll.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="12525" topLine="363" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font_montserrat_12.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="22" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_color.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6812" topLine="211" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="menu_screen.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="menu_screen.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="48" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\img\lv_img.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lv_drivers\win32drv\win32drv.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7018" topLine="202" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_style_gen.c" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18315" topLine="576" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_img.c" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="4150889" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\menu\lv_menu.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3706" topLine="117" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="settings_screen.c" open="0" top="0" tabpos="8" split="2" active="1" splitpos="513" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5410" topLine="32" />
|
||||
<Cursor2 position="10475" topLine="18" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drv_conf.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6602" topLine="208" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2767" topLine="86" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="altimeter_screen.c" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1511" topLine="33" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="main.c" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2252" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_casio_assets.c" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3451942" topLine="1065" />
|
||||
</Cursor>
|
||||
<Folding>
|
||||
<Collapse line="8" />
|
||||
<Collapse line="995" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="lv_drivers\display\monitor.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="289" topLine="31" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font_fmt_txt.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_menu_icons.c" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="951965" topLine="439" />
|
||||
</Cursor>
|
||||
<Folding>
|
||||
<Collapse line="2" />
|
||||
<Collapse line="195" />
|
||||
<Collapse line="388" />
|
||||
<Collapse line="581" />
|
||||
<Collapse line="774" />
|
||||
<Collapse line="967" />
|
||||
<Collapse line="1546" />
|
||||
<Collapse line="1729" />
|
||||
<Collapse line="1739" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="lv_drivers\lv_drv_conf_template.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="10670" topLine="390" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\list\lv_list.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1261" topLine="45" />
|
||||
<Cursor1 position="524" topLine="954" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\hal\lv_hal_indev.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -328,74 +304,59 @@
|
||||
<Cursor1 position="5065" topLine="123" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\layouts\grid\lv_grid.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\libs\ffmpeg\lv_ffmpeg.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="579" topLine="17" />
|
||||
<Cursor1 position="5784" topLine="170" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_tree.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lv_drivers\display\monitor.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1234" topLine="34" />
|
||||
<Cursor1 position="289" topLine="31" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_scroll.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="altimeter_screen.c" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="624" topLine="31" />
|
||||
<Cursor1 position="13638" topLine="409" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="common_screen_components.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\lv_api_map.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="229" topLine="0" />
|
||||
<Cursor1 position="722" topLine="32" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\list\lv_list.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\draw\lv_img_buf.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="402" topLine="16" />
|
||||
<Cursor1 position="6210" topLine="113" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_event.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="common_screen_components.h" open="1" top="1" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7293" topLine="150" />
|
||||
<Cursor1 position="215" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\win_drv.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\font\lv_font_montserrat_30.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="585" topLine="0" />
|
||||
<Cursor1 position="869" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="compass_screen.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="main.c" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1253" topLine="23" />
|
||||
<Cursor1 position="1457" topLine="45" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_timer.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\menu\lv_menu.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1085" topLine="33" />
|
||||
<Cursor1 position="3706" topLine="117" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\demos\widgets\lv_demo_widgets.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lv_drivers\lv_drv_conf_template.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2825" topLine="122" />
|
||||
<Cursor1 position="10670" topLine="390" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\layouts\flex\lv_flex.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="settings_screen.c" open="1" top="0" tabpos="4" split="0" active="1" splitpos="513" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="950" topLine="43" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_indev.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3034" topLine="107" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1873" topLine="48" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_face.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="989" topLine="16" />
|
||||
<Cursor1 position="4139" topLine="82" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\hal\lv_hal_indev.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -403,34 +364,64 @@
|
||||
<Cursor1 position="3566" topLine="102" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\draw\lv_img_buf.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\misc\lv_log.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="610" topLine="17" />
|
||||
<Cursor1 position="2557" topLine="68" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\label\lv_label.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="5535" topLine="120" />
|
||||
<Cursor1 position="5648" topLine="194" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\layouts\flex\lv_flex.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="950" topLine="43" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font_montserrat_12.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="22" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\font\lv_font_fmt_txt.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_log.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1509" topLine="59" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_drivers\win32drv\win32drv.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="15" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_class.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3011" topLine="100" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lv_conf.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="12839" topLine="299" />
|
||||
<Cursor1 position="12839" topLine="10" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_pos.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\chart\lv_chart.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="29967" topLine="918" />
|
||||
<Cursor1 position="11658" topLine="336" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="minute_hand.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\hal\lv_hal_disp.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="52426" topLine="414" />
|
||||
<Cursor1 position="823" topLine="24" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\imgbtn\lv_imgbtn.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\widgets\img\lv_img.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2129" topLine="53" />
|
||||
<Cursor1 position="4439" topLine="123" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\tileview\lv_tileview.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -442,9 +433,79 @@
|
||||
<Collapse line="995" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="lvgl\src\hal\lv_hal_disp.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="lvgl\src\core\lv_obj_style_gen.c" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11123" topLine="327" />
|
||||
<Cursor1 position="19855" topLine="604" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_face.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="713" topLine="33" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="altimeter_screen_assets.c" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="96342" topLine="161" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\misc\lv_color.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8562" topLine="290" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\lv_conf_template.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="56" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\widgets\list\lv_list.c" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="2" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2391" topLine="74" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\draw\lv_draw_rect.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="539" topLine="9" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_scroll.c" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="12525" topLine="363" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="watch_menu_icons.c" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="869291" topLine="156" />
|
||||
</Cursor>
|
||||
<Folding>
|
||||
<Collapse line="2" />
|
||||
<Collapse line="185" />
|
||||
<Collapse line="195" />
|
||||
<Collapse line="378" />
|
||||
<Collapse line="388" />
|
||||
<Collapse line="571" />
|
||||
<Collapse line="581" />
|
||||
<Collapse line="764" />
|
||||
<Collapse line="774" />
|
||||
<Collapse line="957" />
|
||||
<Collapse line="967" />
|
||||
<Collapse line="1150" />
|
||||
<Collapse line="1160" />
|
||||
<Collapse line="1343" />
|
||||
<Collapse line="1353" />
|
||||
<Collapse line="1536" />
|
||||
<Collapse line="1546" />
|
||||
<Collapse line="1729" />
|
||||
</Folding>
|
||||
</File>
|
||||
<File name="lvgl\src\layouts\grid\lv_grid.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="579" topLine="17" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="lvgl\src\core\lv_obj_pos.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7730" topLine="167" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
@ -1,7 +1,19 @@
|
||||
#include <stdio.h>
|
||||
#include "altimeter_screen.h"
|
||||
#include "menu_screen.h"
|
||||
|
||||
static void gesture_event_cb(lv_event_t * e)
|
||||
static void create_pressure_content(AltimeterScreen_t * const altimeterScreen);
|
||||
static void create_altitude_content(AltimeterScreen_t * const altimeterScreen);
|
||||
static void create_altitude_setting_content(AltimeterScreen_t * const altimeterScreen);
|
||||
|
||||
static void destroy_pressure_content(AltimeterScreen_t * const altimeterScreen);
|
||||
static void destroy_altitude_content(AltimeterScreen_t * const altimeterScreen);
|
||||
static void destroy_altitude_setting_content(AltimeterScreen_t * const altimeterScreen);
|
||||
|
||||
static void update_min_and_max_pressure_data(AltimeterScreen_t * const altimeterScreen, float minPressure, float maxPressure);
|
||||
|
||||
|
||||
static void gesture_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
@ -22,38 +34,234 @@ static void gesture_event_cb(lv_event_t * e)
|
||||
break;
|
||||
case LV_DIR_TOP:
|
||||
LV_LOG_USER("GESTURE : TOP");
|
||||
if(altimeterScreen->displayedView != ALTITUDE_VIEW && altimeterScreen->displayedView != ALTITUDE_SETTING_VIEW)
|
||||
{
|
||||
destroy_pressure_content(altimeterScreen);
|
||||
create_altitude_content(altimeterScreen);
|
||||
altimeterScreen->displayedView = ALTITUDE_VIEW;
|
||||
}
|
||||
break;
|
||||
case LV_DIR_BOTTOM:
|
||||
LV_LOG_USER("GESTURE : BOTTOM");
|
||||
if(altimeterScreen->displayedView != PRESSURE_VIEW && altimeterScreen->displayedView != ALTITUDE_SETTING_VIEW)
|
||||
{
|
||||
destroy_altitude_content(altimeterScreen);
|
||||
create_pressure_content(altimeterScreen);
|
||||
altimeterScreen->displayedView = PRESSURE_VIEW;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LV_LOG_USER("GESTURE : %u", gesture);
|
||||
}
|
||||
}
|
||||
|
||||
static void cleanup_event_cb(lv_event_t * e)
|
||||
/*static lv_chart_cursor_t * cursor;
|
||||
static void chart_event_cb(lv_event_t * e)
|
||||
{
|
||||
static int32_t last_id = -1;
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
if(code == LV_EVENT_VALUE_CHANGED)
|
||||
{
|
||||
last_id = lv_chart_get_pressed_point(obj);
|
||||
if(last_id != LV_CHART_POINT_NONE)
|
||||
{
|
||||
lv_chart_set_cursor_point(obj, cursor, NULL, last_id);
|
||||
}
|
||||
}
|
||||
else if(code == LV_EVENT_DRAW_PART_END)
|
||||
{
|
||||
lv_obj_draw_part_dsc_t * dsc = lv_event_get_draw_part_dsc(e);
|
||||
if(!lv_obj_draw_part_check_type(dsc, &lv_chart_class, LV_CHART_DRAW_PART_CURSOR)) return;
|
||||
if(dsc->p1 == NULL || dsc->p2 == NULL || dsc->p1->y != dsc->p2->y || last_id < 0) return;
|
||||
|
||||
lv_coord_t * data_array = altimeterScreen->pressure_data_points;
|
||||
lv_coord_t v = data_array[last_id];
|
||||
char buf[16];
|
||||
lv_snprintf(buf, sizeof(buf), "%d", v);
|
||||
|
||||
lv_point_t size;
|
||||
lv_txt_get_size(&size, buf, LV_FONT_DEFAULT, 0, 0, LV_COORD_MAX, LV_TEXT_FLAG_NONE);
|
||||
|
||||
lv_area_t a;
|
||||
a.y2 = dsc->p1->y - 5;
|
||||
a.y1 = a.y2 - size.y - 10;
|
||||
a.x1 = dsc->p1->x + 10;
|
||||
a.x2 = a.x1 + size.x + 10;
|
||||
|
||||
lv_draw_rect_dsc_t draw_rect_dsc;
|
||||
lv_draw_rect_dsc_init(&draw_rect_dsc);
|
||||
draw_rect_dsc.bg_color = lv_palette_main(LV_PALETTE_BLUE);
|
||||
draw_rect_dsc.radius = 3;
|
||||
|
||||
lv_draw_rect(dsc->draw_ctx, &draw_rect_dsc, &a);
|
||||
|
||||
lv_draw_label_dsc_t draw_label_dsc;
|
||||
lv_draw_label_dsc_init(&draw_label_dsc);
|
||||
draw_label_dsc.color = lv_color_white();
|
||||
a.x1 += 5;
|
||||
a.x2 -= 5;
|
||||
a.y1 += 5;
|
||||
a.y2 -= 5;
|
||||
lv_draw_label(dsc->draw_ctx, &draw_label_dsc, &a, buf, NULL);
|
||||
}
|
||||
}*/
|
||||
|
||||
static void cleanup_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
altimeter_screen_destroy(altimeterScreen);
|
||||
LV_LOG_USER("cleanup");
|
||||
}
|
||||
|
||||
static void reset_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
update_min_and_max_pressure_data(altimeterScreen, 0.0, 0.0); //NULL to reset
|
||||
memset(altimeterScreen->pressure_data_points, 0, sizeof(altimeterScreen->pressure_data_points));
|
||||
memset(altimeterScreen->pressure_data_points_float, 0, sizeof(altimeterScreen->pressure_data_points_float));
|
||||
|
||||
//Update the chart if it is currently on the screen
|
||||
if(altimeterScreen->pressureChart.chart)
|
||||
{
|
||||
lv_chart_refresh(altimeterScreen->pressureChart.chart);
|
||||
}
|
||||
|
||||
LV_LOG_USER("reset event cb");
|
||||
}
|
||||
|
||||
static void update_altitude_info(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
sprintf(altimeterScreen->mainValue.value_text, "%.1f", altimeterScreen->lastReadAltitude - altimeterScreen->altitudeOffset);
|
||||
sprintf(altimeterScreen->vsiValue.value_unit_text, "VSI : %s%.1f\nm/s", altimeterScreen->vsiFloat > 0 ? "+":"", altimeterScreen->vsiFloat);
|
||||
lv_label_set_text_static(altimeterScreen->mainValue.value, altimeterScreen->mainValue.value_text);
|
||||
lv_label_set_text_static(altimeterScreen->vsiValue.value_unit, altimeterScreen->vsiValue.value_unit_text);
|
||||
}
|
||||
|
||||
static void calibrate_altitude_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
//If an offset was applied we clear it
|
||||
if(altimeterScreen->altitudeOffset)
|
||||
{
|
||||
altimeterScreen->altitudeOffset = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//We compute the offset needed to set the altitude to zero
|
||||
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude;
|
||||
}
|
||||
|
||||
altimeterScreen->vsiFloat = 0;
|
||||
update_altitude_info(altimeterScreen);
|
||||
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
|
||||
|
||||
LV_LOG_USER("calibrate altitude event cb");
|
||||
}
|
||||
|
||||
static void set_altitude_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
destroy_altitude_content(altimeterScreen);
|
||||
//Hide the main value
|
||||
lv_obj_add_flag(altimeterScreen->mainValue.value, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_add_flag(altimeterScreen->mainValue.unit, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
create_altitude_setting_content(altimeterScreen);
|
||||
altimeterScreen->displayedView = ALTITUDE_SETTING_VIEW;
|
||||
|
||||
LV_LOG_USER("set altitude event cb");
|
||||
}
|
||||
|
||||
//Set button clicked on the altitude setting page
|
||||
static void apply_altitude_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
int32_t spinbox_value = lv_spinbox_get_value(altimeterScreen->altitudeOffset_spinbox);
|
||||
|
||||
destroy_altitude_setting_content(altimeterScreen);
|
||||
//Show the main value
|
||||
lv_obj_clear_flag(altimeterScreen->mainValue.value, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_obj_clear_flag(altimeterScreen->mainValue.unit, LV_OBJ_FLAG_HIDDEN);
|
||||
|
||||
create_altitude_content(altimeterScreen);
|
||||
altimeterScreen->displayedView = ALTITUDE_VIEW;
|
||||
|
||||
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude - (spinbox_value / 10.0);
|
||||
|
||||
altimeterScreen->vsiFloat = 0;
|
||||
update_altitude_info(altimeterScreen);
|
||||
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
|
||||
|
||||
LV_LOG_USER("apply altitude event cb");
|
||||
}
|
||||
|
||||
static void lv_spinbox_increment_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||
lv_spinbox_increment(altimeterScreen->altitudeOffset_spinbox);
|
||||
}
|
||||
}
|
||||
|
||||
static void lv_spinbox_decrement_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||
|
||||
lv_event_code_t code = lv_event_get_code(e);
|
||||
if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||
lv_spinbox_decrement(altimeterScreen->altitudeOffset_spinbox);
|
||||
}
|
||||
}
|
||||
|
||||
static void measurements_update_timer_cb(lv_timer_t *timer)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = timer->user_data;
|
||||
if(altimeterScreen->measurementCb)
|
||||
{
|
||||
float temperature, pressure, altitude;
|
||||
float temperature, pressure;
|
||||
LV_LOG_USER("Updating measurements");
|
||||
|
||||
altimeterScreen->measurementCb(&temperature, &pressure, &altitude);
|
||||
altimeterScreen->measurementCb(&temperature, &pressure, &altimeterScreen->lastReadAltitude);
|
||||
|
||||
//Compute and display the VSI
|
||||
//We multiply by 2 because one measurement is done every 0.5 second.
|
||||
altimeterScreen->vsiFloat = (altimeterScreen->lastReadAltitude - altimeterScreen->vsiFloat) * 2;
|
||||
|
||||
switch(altimeterScreen->displayedView)
|
||||
{
|
||||
case ALTITUDE_VIEW:
|
||||
update_altitude_info(altimeterScreen);
|
||||
break;
|
||||
case PRESSURE_VIEW:
|
||||
sprintf(altimeterScreen->mainValue.value_text, "%.2f", pressure);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
|
||||
|
||||
if(altimeterScreen->mainValue.value)
|
||||
{
|
||||
lv_label_set_text_static(altimeterScreen->mainValue.value, altimeterScreen->mainValue.value_text);
|
||||
}
|
||||
|
||||
//Mock up part needs to be changed on embedded target
|
||||
altimeter_screen_shift_chart_pressure_measurement(altimeterScreen, pressure);
|
||||
}
|
||||
else
|
||||
{
|
||||
LV_LOG_USER("measurementCb is NULL, be sure to register a callback !");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen)
|
||||
@ -78,6 +286,50 @@ void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimete
|
||||
altimeterScreen->measurementCb = MeasurementCb;
|
||||
}
|
||||
|
||||
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure)
|
||||
{
|
||||
if(!altimeterScreen)
|
||||
{
|
||||
LV_LOG_ERROR("NULL pointer given !");
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t numberOfDataPoints = sizeof(altimeterScreen->pressure_data_points) / sizeof(altimeterScreen->pressure_data_points[0]);
|
||||
|
||||
memmove(altimeterScreen->pressure_data_points_float, &altimeterScreen->pressure_data_points_float[1], (numberOfDataPoints - 1) * sizeof(altimeterScreen->pressure_data_points_float[0]));
|
||||
altimeterScreen->pressure_data_points_float[numberOfDataPoints-1] = pressure;
|
||||
|
||||
memmove(altimeterScreen->pressure_data_points, &altimeterScreen->pressure_data_points[1], (numberOfDataPoints - 1) * sizeof(altimeterScreen->pressure_data_points[0]));
|
||||
altimeterScreen->pressure_data_points[(numberOfDataPoints - 1)] = pressure;
|
||||
|
||||
uint8_t minIndex = 0, maxIndex = 0;
|
||||
float min = altimeterScreen->pressure_data_points_float[0], max = altimeterScreen->pressure_data_points_float[0];
|
||||
//Recompute the min and max of the series :
|
||||
for(uint8_t i = 1; i < numberOfDataPoints; i++)
|
||||
{
|
||||
if(min > altimeterScreen->pressure_data_points_float[i])
|
||||
{
|
||||
min = altimeterScreen->pressure_data_points_float[i];
|
||||
minIndex = i;
|
||||
}
|
||||
if(max < altimeterScreen->pressure_data_points_float[i])
|
||||
{
|
||||
max = altimeterScreen->pressure_data_points_float[i];
|
||||
maxIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
//Update the chart if it is currently on the screen
|
||||
if(altimeterScreen->pressureChart.chart)
|
||||
{
|
||||
//Set the range of the Y axis of the chart using the min and max
|
||||
lv_chart_set_range(altimeterScreen->pressureChart.chart, LV_CHART_AXIS_PRIMARY_Y, altimeterScreen->pressure_data_points[minIndex], altimeterScreen->pressure_data_points[maxIndex]);
|
||||
lv_chart_refresh(altimeterScreen->pressureChart.chart);
|
||||
}
|
||||
|
||||
update_min_and_max_pressure_data(altimeterScreen, min, max);
|
||||
}
|
||||
|
||||
void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
if(!altimeterScreen)
|
||||
@ -97,13 +349,55 @@ void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen)
|
||||
}
|
||||
|
||||
altimeterScreen->display = lv_obj_create(NULL);
|
||||
lv_obj_set_style_bg_color(altimeterScreen->display, lv_color_make(85, 88, 90), LV_PART_MAIN);
|
||||
lv_obj_set_style_bg_color(altimeterScreen->display, lv_color_make(0xFF,0xFF,0xFF), LV_PART_MAIN);/*
|
||||
lv_obj_set_style_radius(altimeterScreen->display, LV_RADIUS_CIRCLE, LV_PART_MAIN);*/
|
||||
|
||||
lv_obj_t *inner_circle = lv_obj_create(altimeterScreen->display);
|
||||
lv_obj_center(inner_circle);
|
||||
lv_obj_set_size(inner_circle, 210, 210);
|
||||
lv_obj_set_style_radius(inner_circle, LV_RADIUS_CIRCLE, LV_PART_MAIN);
|
||||
if(altimeterScreen->inner_circle)
|
||||
{
|
||||
LV_LOG_ERROR("inner_circle should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->inner_circle);
|
||||
altimeterScreen->inner_circle = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->inner_circle = lv_obj_create(altimeterScreen->display);
|
||||
lv_obj_center(altimeterScreen->inner_circle);
|
||||
lv_obj_set_size(altimeterScreen->inner_circle, 240, 240);
|
||||
lv_obj_set_style_radius(altimeterScreen->inner_circle, LV_RADIUS_CIRCLE, LV_PART_MAIN);
|
||||
lv_obj_set_style_border_color(altimeterScreen->inner_circle, lv_color_make(22, 145, 147), LV_PART_MAIN);
|
||||
lv_obj_set_style_border_width(altimeterScreen->inner_circle, 15, LV_PART_MAIN);
|
||||
|
||||
//Set up common label
|
||||
if(altimeterScreen->mainValue.value || altimeterScreen->mainValue.unit)
|
||||
{
|
||||
LV_LOG_ERROR("value or unit should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->mainValue.value);
|
||||
lv_obj_del(altimeterScreen->mainValue.unit);
|
||||
altimeterScreen->mainValue.value = NULL;
|
||||
altimeterScreen->mainValue.unit = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->mainValue.value = lv_label_create(altimeterScreen->display);
|
||||
lv_obj_set_style_text_font(altimeterScreen->mainValue.value, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
lv_obj_align(altimeterScreen->mainValue.value, LV_ALIGN_TOP_MID, 0, 40);
|
||||
lv_label_set_text_static(altimeterScreen->mainValue.value, altimeterScreen->mainValue.value_text);
|
||||
|
||||
altimeterScreen->mainValue.unit = lv_label_create(altimeterScreen->display);
|
||||
lv_obj_set_style_text_font(altimeterScreen->mainValue.unit, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
|
||||
|
||||
//Setup the right screen content
|
||||
switch(altimeterScreen->displayedView)
|
||||
{
|
||||
case ALTITUDE_VIEW:
|
||||
create_altitude_content(altimeterScreen);
|
||||
break;
|
||||
case PRESSURE_VIEW:
|
||||
create_pressure_content(altimeterScreen);
|
||||
break;
|
||||
default : //We probably left when in setting mode, so force altitude view
|
||||
create_altitude_content(altimeterScreen);
|
||||
altimeterScreen->displayedView = ALTITUDE_VIEW;
|
||||
}
|
||||
|
||||
//We register the event callback to handle gestures
|
||||
lv_obj_add_event_cb(altimeterScreen->display, &(gesture_event_cb), LV_EVENT_GESTURE, altimeterScreen);
|
||||
@ -132,3 +426,184 @@ void altimeter_screen_destroy(AltimeterScreen_t * const altimeterScreen)
|
||||
|
||||
memset(altimeterScreen, 0, offsetof(AltimeterScreen_t, displayedView));
|
||||
}
|
||||
|
||||
static void create_pressure_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
//We declare all the needed assets by the pressure content
|
||||
LV_IMG_DECLARE(watch_asset_reset_icon)
|
||||
|
||||
lv_obj_t *reset_btn = lv_img_create(altimeterScreen->inner_circle);
|
||||
lv_img_set_src(reset_btn, &watch_asset_reset_icon);
|
||||
lv_obj_align(reset_btn, LV_ALIGN_CENTER, 0 ,0);
|
||||
lv_obj_add_flag(reset_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(reset_btn, &(reset_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
|
||||
lv_label_set_text_static(altimeterScreen->mainValue.unit, "hPa");
|
||||
lv_obj_align_to(altimeterScreen->mainValue.unit, altimeterScreen->mainValue.value, LV_ALIGN_CENTER, 0, 25);
|
||||
|
||||
//Set the min and max text
|
||||
if(altimeterScreen->minValue.value_unit || altimeterScreen->maxValue.value_unit)
|
||||
{
|
||||
LV_LOG_ERROR("minValue or maxValue should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->minValue.value_unit);
|
||||
lv_obj_del(altimeterScreen->maxValue.value_unit);
|
||||
altimeterScreen->minValue.value_unit = NULL;
|
||||
altimeterScreen->maxValue.value_unit = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->minValue.value_unit = lv_label_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_style_text_font(altimeterScreen->minValue.value_unit, &lv_font_montserrat_14, LV_PART_MAIN);
|
||||
lv_obj_align(altimeterScreen->minValue.value_unit, LV_ALIGN_BOTTOM_LEFT, 0, -50);
|
||||
sprintf(altimeterScreen->minValue.value_unit_text, "min:\n%.2f hPa", altimeterScreen->minValueFloat);
|
||||
lv_label_set_text_static(altimeterScreen->minValue.value_unit, altimeterScreen->minValue.value_unit_text);
|
||||
|
||||
altimeterScreen->maxValue.value_unit = lv_label_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_style_text_font(altimeterScreen->maxValue.value_unit, &lv_font_montserrat_14, LV_PART_MAIN);
|
||||
lv_obj_align(altimeterScreen->maxValue.value_unit, LV_ALIGN_BOTTOM_RIGHT, 0, -50);
|
||||
lv_obj_set_style_text_align(altimeterScreen->maxValue.value_unit, LV_TEXT_ALIGN_RIGHT, LV_PART_MAIN);
|
||||
sprintf(altimeterScreen->maxValue.value_unit_text, "max:\n%.2f hPa", altimeterScreen->maxValueFloat);
|
||||
lv_label_set_text_static(altimeterScreen->maxValue.value_unit, altimeterScreen->maxValue.value_unit_text);
|
||||
|
||||
//Pressure chart and trend part:
|
||||
if(altimeterScreen->pressureChart.chart)
|
||||
{
|
||||
LV_LOG_ERROR("chart should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->pressureChart.chart);
|
||||
altimeterScreen->pressureChart.chart = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->pressureChart.chart = lv_chart_create(altimeterScreen->inner_circle);
|
||||
lv_obj_align(altimeterScreen->pressureChart.chart, LV_ALIGN_CENTER, 0, 65);
|
||||
lv_obj_set_size(altimeterScreen->pressureChart.chart, 165, 45);
|
||||
lv_chart_set_type(altimeterScreen->pressureChart.chart, LV_CHART_TYPE_LINE);
|
||||
lv_chart_set_point_count(altimeterScreen->pressureChart.chart, sizeof(altimeterScreen->pressure_data_points) / sizeof(altimeterScreen->pressure_data_points[0]));
|
||||
lv_obj_set_style_border_width(altimeterScreen->pressureChart.chart, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_radius(altimeterScreen->pressureChart.chart, 0, LV_PART_MAIN);
|
||||
//cursor = lv_chart_add_cursor(altimeterScreen->pressureChart.chart, lv_palette_main(LV_PALETTE_BLUE), LV_DIR_LEFT | LV_DIR_BOTTOM);
|
||||
lv_chart_series_t *primary_Y_series = lv_chart_add_series(altimeterScreen->pressureChart.chart, lv_color_make(139, 180, 150), LV_CHART_AXIS_PRIMARY_Y);
|
||||
|
||||
lv_chart_set_ext_y_array(altimeterScreen->pressureChart.chart, primary_Y_series, altimeterScreen->pressure_data_points);
|
||||
|
||||
//lv_obj_add_event_cb(altimeterScreen->pressureChart.chart, &(chart_event_cb), LV_EVENT_ALL, altimeterScreen);
|
||||
}
|
||||
|
||||
static void create_altitude_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
//We declare all the needed assets by the pressure content
|
||||
LV_IMG_DECLARE(altimeter_asset_calibration_icon)
|
||||
LV_IMG_DECLARE(watch_menu_settings_icon)
|
||||
|
||||
lv_label_set_text_static(altimeterScreen->mainValue.unit, "m");
|
||||
lv_obj_align_to(altimeterScreen->mainValue.unit, altimeterScreen->mainValue.value, LV_ALIGN_CENTER, 0, 25);
|
||||
|
||||
lv_obj_t *calibration_btn = lv_img_create(altimeterScreen->inner_circle);
|
||||
lv_img_set_src(calibration_btn, &altimeter_asset_calibration_icon);
|
||||
lv_obj_align(calibration_btn, LV_ALIGN_CENTER, 52 ,5);
|
||||
lv_obj_add_flag(calibration_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(calibration_btn, &(calibrate_altitude_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
|
||||
lv_obj_t *setting_btn = lv_img_create(altimeterScreen->inner_circle);
|
||||
lv_img_set_src(setting_btn, &watch_menu_settings_icon);
|
||||
lv_obj_align(setting_btn, LV_ALIGN_CENTER, -52 ,5);
|
||||
lv_obj_add_flag(setting_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(setting_btn, &(set_altitude_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
|
||||
//Create VSI label
|
||||
if(altimeterScreen->vsiValue.value_unit)
|
||||
{
|
||||
LV_LOG_ERROR("vsiValue should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->vsiValue.value_unit);
|
||||
altimeterScreen->vsiValue.value_unit = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->vsiValue.value_unit = lv_label_create(altimeterScreen->inner_circle);
|
||||
lv_obj_align(altimeterScreen->vsiValue.value_unit, LV_ALIGN_BOTTOM_MID, 0, 0);
|
||||
lv_obj_set_style_text_color(altimeterScreen->vsiValue.value_unit, lv_color_make(51, 102, 255), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_font(altimeterScreen->vsiValue.value_unit, &lv_font_montserrat_24, LV_PART_MAIN);
|
||||
lv_obj_set_style_text_align(altimeterScreen->vsiValue.value_unit, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
|
||||
sprintf(altimeterScreen->vsiValue.value_unit_text, "VSI : 0.0\nm/s");
|
||||
lv_label_set_text_static(altimeterScreen->vsiValue.value_unit, altimeterScreen->vsiValue.value_unit_text);
|
||||
}
|
||||
static void create_altitude_setting_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
|
||||
lv_obj_t *desc = lv_label_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_style_text_font(desc, &lv_font_montserrat_16, LV_PART_MAIN);
|
||||
lv_obj_align(desc, LV_ALIGN_CENTER, 0, -45);
|
||||
lv_label_set_text(desc, "Set altitude to :");
|
||||
|
||||
if(altimeterScreen->altitudeOffset_spinbox)
|
||||
{
|
||||
LV_LOG_ERROR("spinner should be NULL here !");
|
||||
lv_obj_del(altimeterScreen->altitudeOffset_spinbox);
|
||||
altimeterScreen->altitudeOffset_spinbox = NULL;
|
||||
}
|
||||
|
||||
altimeterScreen->altitudeOffset_spinbox = lv_spinbox_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_align(altimeterScreen->altitudeOffset_spinbox, LV_ALIGN_CENTER);
|
||||
lv_obj_set_width(altimeterScreen->altitudeOffset_spinbox, lv_pct(50));
|
||||
lv_spinbox_set_digit_format(altimeterScreen->altitudeOffset_spinbox, 5, 4);
|
||||
//Max 9000 and min -1000 since we have a digit after the comma
|
||||
lv_spinbox_set_range(altimeterScreen->altitudeOffset_spinbox, -10000, 90000);
|
||||
lv_spinbox_set_cursor_pos(altimeterScreen->altitudeOffset_spinbox, 3);
|
||||
|
||||
lv_coord_t spinbox_height = lv_obj_get_height(altimeterScreen->altitudeOffset_spinbox);
|
||||
|
||||
lv_obj_t *inc_btn = lv_btn_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_size(inc_btn, spinbox_height, spinbox_height);
|
||||
lv_obj_align_to(inc_btn, altimeterScreen->altitudeOffset_spinbox, LV_ALIGN_OUT_RIGHT_MID, 5, 0);
|
||||
lv_obj_set_style_bg_img_src(inc_btn, LV_SYMBOL_PLUS, LV_PART_MAIN);
|
||||
lv_obj_add_event_cb(inc_btn, &(lv_spinbox_increment_event_cb), LV_EVENT_ALL, altimeterScreen);
|
||||
|
||||
lv_obj_t *dec_btn = lv_btn_create(altimeterScreen->inner_circle);
|
||||
lv_obj_set_size(dec_btn, spinbox_height, spinbox_height);
|
||||
lv_obj_align_to(dec_btn, altimeterScreen->altitudeOffset_spinbox, LV_ALIGN_OUT_LEFT_MID, -5, 0);
|
||||
lv_obj_set_style_bg_img_src(dec_btn, LV_SYMBOL_MINUS, LV_PART_MAIN);
|
||||
lv_obj_add_event_cb(dec_btn, &(lv_spinbox_decrement_event_cb), LV_EVENT_ALL, altimeterScreen);
|
||||
|
||||
lv_obj_t *set_btn = lv_btn_create(altimeterScreen->inner_circle);
|
||||
lv_obj_align(set_btn, LV_ALIGN_CENTER, 0, 50);
|
||||
|
||||
lv_obj_t *set_btn_lbl = lv_label_create(set_btn);
|
||||
lv_label_set_text(set_btn_lbl, "Set");
|
||||
lv_obj_center(set_btn_lbl);
|
||||
lv_obj_add_event_cb(set_btn, &(apply_altitude_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
}
|
||||
|
||||
static void destroy_pressure_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
lv_obj_clean(altimeterScreen->inner_circle);
|
||||
altimeterScreen->maxValue.value_unit = NULL;
|
||||
altimeterScreen->minValue.value_unit = NULL;
|
||||
altimeterScreen->pressureChart.chart = NULL;
|
||||
}
|
||||
|
||||
static void destroy_altitude_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
lv_obj_clean(altimeterScreen->inner_circle);
|
||||
altimeterScreen->vsiValue.value_unit = NULL;
|
||||
}
|
||||
|
||||
static void destroy_altitude_setting_content(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
lv_obj_clean(altimeterScreen->inner_circle);
|
||||
altimeterScreen->altitudeOffset_spinbox = NULL;
|
||||
}
|
||||
|
||||
static void update_min_and_max_pressure_data(AltimeterScreen_t * const altimeterScreen, float minPressure, float maxPressure)
|
||||
{
|
||||
altimeterScreen->minValueFloat = minPressure;
|
||||
altimeterScreen->maxValueFloat = maxPressure;
|
||||
|
||||
if(altimeterScreen->minValue.value_unit)
|
||||
{
|
||||
sprintf(altimeterScreen->minValue.value_unit_text, "min:\n%.2f hPa", altimeterScreen->minValueFloat);
|
||||
lv_label_set_text_static(altimeterScreen->minValue.value_unit, altimeterScreen->minValue.value_unit_text);
|
||||
}
|
||||
|
||||
if(altimeterScreen->maxValue.value_unit)
|
||||
{
|
||||
sprintf(altimeterScreen->maxValue.value_unit_text, "max:\n%.2f hPa", altimeterScreen->maxValueFloat);
|
||||
lv_label_set_text_static(altimeterScreen->maxValue.value_unit, altimeterScreen->maxValue.value_unit_text);
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,8 @@
|
||||
typedef enum DisplayedView
|
||||
{
|
||||
PRESSURE_VIEW = 0,
|
||||
ALTITUDE_VIEW
|
||||
ALTITUDE_VIEW,
|
||||
ALTITUDE_SETTING_VIEW
|
||||
} DisplayedView_e;
|
||||
|
||||
typedef struct MainValue
|
||||
@ -14,34 +15,51 @@ typedef struct MainValue
|
||||
lv_obj_t *value;
|
||||
lv_obj_t *unit;
|
||||
char value_text[10];
|
||||
char value_unit[5];
|
||||
} MainValue_t;
|
||||
|
||||
typedef struct MinMaxValue
|
||||
typedef struct MinMaxVSIValue
|
||||
{
|
||||
lv_obj_t *value_unit;
|
||||
char value_unit_text[20];
|
||||
} MinMaxValue_t;
|
||||
} MinMaxVSIValue_t;
|
||||
|
||||
typedef void(*MeasurementCb_t)(float * const temperature, float * const pressure, float * const altitude);
|
||||
|
||||
typedef struct PressureChart
|
||||
{
|
||||
lv_obj_t *chart;
|
||||
} PressureChart_t;
|
||||
|
||||
typedef struct AltimeterScreen
|
||||
{
|
||||
//Can be erased attributes
|
||||
lv_obj_t *display;
|
||||
lv_obj_t *inner_circle;
|
||||
lv_obj_t *altitudeOffset_spinbox;
|
||||
PressureChart_t pressureChart;
|
||||
lv_timer_t *measurementUpdateTimer;
|
||||
MainValue_t mainValue;
|
||||
MinMaxValue_t minValue;
|
||||
MinMaxValue_t maxValue;
|
||||
MinMaxVSIValue_t minValue;
|
||||
MinMaxVSIValue_t maxValue;
|
||||
MinMaxVSIValue_t vsiValue;
|
||||
float vsiFloat;
|
||||
float lastReadAltitude;
|
||||
//Should not be erased attributes
|
||||
DisplayedView_e displayedView;
|
||||
MeasurementCb_t measurementCb;
|
||||
float minValueFloat;
|
||||
float maxValueFloat;
|
||||
float altitudeOffset;
|
||||
lv_coord_t pressure_data_points[10];
|
||||
float pressure_data_points_float[10];
|
||||
} AltimeterScreen_t;
|
||||
|
||||
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
|
||||
|
||||
void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimeterScreen, MeasurementCb_t MeasurementCb);
|
||||
|
||||
void altimeter_screen_shift_chart_pressure_measurement(AltimeterScreen_t * const altimeterScreen, float pressure);
|
||||
|
||||
void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen);
|
||||
|
||||
void altimeter_screen_destroy(AltimeterScreen_t * const altimeterScreen);
|
||||
|
@ -0,0 +1,194 @@
|
||||
#include "lvgl.h"
|
||||
|
||||
const LV_ATTRIBUTE_LARGE_CONST uint8_t calibration_icon_chroma_map[] = {
|
||||
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
|
||||
/*Pixel format: Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0xbb, 0xbb, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x6e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x4e, 0x72, 0x72, 0x6e, 0x4e, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x76, 0xbf, 0xbf, 0xbf, 0xbf, 0x9b, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x76, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xdf, 0x9b, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x72, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x6e, 0x4e, 0x72, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x97, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
|
||||
0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x6e, 0x4e, 0x72, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x9b, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
|
||||
0xbb, 0xbb, 0xbb, 0xbb, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x6e, 0x4e, 0x6e, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x76, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xbb, 0xbb, 0xbb, 0xbb,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x9b, 0xdf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xbb, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x9b, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0x6e, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x72, 0x97, 0x9b, 0x76, 0x4e, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x6e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x4e, 0x4e, 0x4e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xbb, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xbb, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xbb, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0xb7, 0xb7, 0xbb, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0
|
||||
/*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x97, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x9d, 0x98, 0xa5, 0xb8, 0xa5, 0x97, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x36, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x77, 0x9d, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x97, 0xa5, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x36, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x36, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x76, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2e, 0x53, 0x0d, 0x4b, 0xed, 0x4a, 0xcd, 0x4a, 0x0d, 0x4b, 0x2e, 0x53, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x4b, 0x2e, 0x53, 0xcd, 0x4a, 0x2e, 0x53, 0x31, 0x64, 0x51, 0x6c, 0x8f, 0x5b, 0xcc, 0x4a, 0x0d, 0x53, 0x0d, 0x53, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2e, 0x53, 0xcc, 0x4a, 0xf3, 0x74, 0x5c, 0xa7, 0xfe, 0xaf, 0xfe, 0xb7, 0xbd, 0xaf, 0xd6, 0x85, 0xed, 0x4a, 0x0d, 0x53, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x76, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2d, 0x53, 0xcd, 0x4a, 0xf3, 0x74, 0xfe, 0xb7, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xff, 0xb7, 0x17, 0x8e, 0xed, 0x4a, 0x2e, 0x53, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x4b, 0x2e, 0x53, 0x9c, 0xa7, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfe, 0xb7, 0x31, 0x64, 0xed, 0x4a, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x4e, 0x53, 0xcd, 0x4a, 0x31, 0x64, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfe, 0xb7, 0x75, 0x7d, 0xcc, 0x4a, 0x2e, 0x53, 0xed, 0x4a, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x36, 0x95, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d,
|
||||
0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x4e, 0x53, 0xcc, 0x4a, 0x51, 0x6c, 0xfe, 0xb7, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xdd, 0xaf, 0xfe, 0xb7, 0xb6, 0x85, 0xac, 0x4a, 0x2e, 0x53, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x36, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95,
|
||||
0xd8, 0xa5, 0xd8, 0xa5, 0xd8, 0xa5, 0xb8, 0xa5, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x4e, 0x53, 0xed, 0x4a, 0x8f, 0x5b, 0xdd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfe, 0xb7, 0x92, 0x6c, 0xcd, 0x4a, 0x2e, 0x53, 0xed, 0x4a, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x56, 0x9d, 0xb8, 0xa5, 0xd8, 0xa5, 0xb8, 0xa5, 0xd8, 0xa5,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2d, 0x53, 0xcc, 0x4a, 0xd6, 0x85, 0xff, 0xb7, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfe, 0xb7, 0x1a, 0x9f, 0x0d, 0x53, 0x0d, 0x4b, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x97, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x4b, 0x0d, 0x53, 0xed, 0x4a, 0x17, 0x8e, 0xfe, 0xb7, 0xfe, 0xb7, 0xff, 0xb7, 0xfe, 0xb7, 0xfa, 0x9e, 0x6f, 0x53, 0xed, 0x4a, 0x0d, 0x53, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x97, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x53, 0x0d, 0x53, 0xed, 0x4a, 0x11, 0x64, 0x75, 0x7d, 0x96, 0x85, 0x92, 0x6c, 0x2d, 0x53, 0xed, 0x4a, 0x2e, 0x53, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x56, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x4b, 0x0d, 0x53, 0x2e, 0x53, 0xed, 0x4a, 0xcc, 0x4a, 0xcc, 0x4a, 0xcd, 0x4a, 0x0d, 0x53, 0x2d, 0x53, 0x0d, 0x4b, 0x6f, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x77, 0x9d, 0x36, 0x95, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x0d, 0x4b, 0x0d, 0x4b, 0x0d, 0x4b, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x36, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x95, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xb8, 0xa5, 0x56, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x76, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x76, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x77, 0x9d, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x77, 0x9d, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xb8, 0xa5, 0x97, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0xb8, 0xa5, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x95, 0x56, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xb8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0x56, 0x9d, 0x56, 0x95, 0xd8, 0xa5, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0
|
||||
/*Pixel format: Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 bytes are swapped*/
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0xa5, 0x97, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0xa5, 0x98, 0xa5, 0xb8, 0x9d, 0x97, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x36, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0x9d, 0x77, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0xa5, 0x97, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x95, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x36, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x36, 0x9d, 0x77, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x76, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2e, 0x4b, 0x0d, 0x4a, 0xed, 0x4a, 0xcd, 0x4b, 0x0d, 0x53, 0x2e, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x4b, 0x0d, 0x53, 0x2e, 0x4a, 0xcd, 0x53, 0x2e, 0x64, 0x31, 0x6c, 0x51, 0x5b, 0x8f, 0x4a, 0xcc, 0x53, 0x0d, 0x53, 0x0d, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2e, 0x4a, 0xcc, 0x74, 0xf3, 0xa7, 0x5c, 0xaf, 0xfe, 0xb7, 0xfe, 0xaf, 0xbd, 0x85, 0xd6, 0x4a, 0xed, 0x53, 0x0d, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x76, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2d, 0x4a, 0xcd, 0x74, 0xf3, 0xb7, 0xfe, 0xaf, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xb7, 0xff, 0x8e, 0x17, 0x4a, 0xed, 0x53, 0x2e, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x4b, 0x0d, 0x53, 0x2e, 0xa7, 0x9c, 0xaf, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xb7, 0xfe, 0x64, 0x31, 0x4a, 0xed, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x4e, 0x4a, 0xcd, 0x64, 0x31, 0xaf, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xb7, 0xfe, 0x7d, 0x75, 0x4a, 0xcc, 0x53, 0x2e, 0x4a, 0xed, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x36, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56,
|
||||
0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x4e, 0x4a, 0xcc, 0x6c, 0x51, 0xb7, 0xfe, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xdd, 0xb7, 0xfe, 0x85, 0xb6, 0x4a, 0xac, 0x53, 0x2e, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x36, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56,
|
||||
0xa5, 0xd8, 0xa5, 0xd8, 0xa5, 0xd8, 0xa5, 0xb8, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x97, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x4e, 0x4a, 0xed, 0x5b, 0x8f, 0xaf, 0xdd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xb7, 0xfe, 0x6c, 0x92, 0x4a, 0xcd, 0x53, 0x2e, 0x4a, 0xed, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0xa5, 0xb8, 0xa5, 0xd8, 0xa5, 0xb8, 0xa5, 0xd8,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2d, 0x4a, 0xcc, 0x85, 0xd6, 0xb7, 0xff, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xaf, 0xfd, 0xb7, 0xfe, 0x9f, 0x1a, 0x53, 0x0d, 0x4b, 0x0d, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x97, 0x9d, 0x56, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x4b, 0x0d, 0x53, 0x0d, 0x4a, 0xed, 0x8e, 0x17, 0xb7, 0xfe, 0xb7, 0xfe, 0xb7, 0xff, 0xb7, 0xfe, 0x9e, 0xfa, 0x53, 0x6f, 0x4a, 0xed, 0x53, 0x0d, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0xa5, 0x97, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x0d, 0x53, 0x0d, 0x4a, 0xed, 0x64, 0x11, 0x7d, 0x75, 0x85, 0x96, 0x6c, 0x92, 0x53, 0x2d, 0x4a, 0xed, 0x53, 0x2e, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x95, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x4b, 0x0d, 0x53, 0x0d, 0x53, 0x2e, 0x4a, 0xed, 0x4a, 0xcc, 0x4a, 0xcc, 0x4a, 0xcd, 0x53, 0x0d, 0x53, 0x2d, 0x4b, 0x0d, 0x53, 0x6f, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x53, 0x2e, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x36, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x4b, 0x0d, 0x4b, 0x0d, 0x4b, 0x0d, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x77, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x36, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x95, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0xa5, 0xb8, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x76, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x76, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x95, 0x56, 0x9d, 0x77, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x56, 0x95, 0x56, 0x95, 0x56, 0x9d, 0x77, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0xa5, 0xb8, 0x9d, 0x97, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x77, 0xa5, 0xb8, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x77, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x9d, 0x77, 0x9d, 0x56, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x95, 0x56, 0x95, 0x56, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xb8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x9d, 0x56, 0x95, 0x56, 0xa5, 0xd8, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 32
|
||||
/*Pixel format: Fix 0xFF: 8 bit, Red: 8 bit, Green: 8 bit, Blue: 8 bit*/
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xbf, 0xb5, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xbf, 0xb5, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xad, 0x98, 0xff, 0xb3, 0xa9, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0xbb, 0xb0, 0x9c, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb2, 0xa9, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb9, 0xae, 0x9a, 0xff, 0xbc, 0xb1, 0x9d, 0xff, 0xbc, 0xb2, 0x9d, 0xff, 0xba, 0xb0, 0x9b, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xae, 0xa4, 0x91, 0xff, 0xb4, 0xaa, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb6, 0xac, 0x97, 0xff, 0xc2, 0xb3, 0xa1, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb8, 0xaf, 0x9c, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb2, 0xa8, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb5, 0xac, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb3, 0xa9, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa5, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xaf, 0xa6, 0x92, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xae, 0xa4, 0x91, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xbc, 0xb3, 0x9d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb6, 0xad, 0x98, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb3, 0xa9, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6e, 0x65, 0x4d, 0xff, 0x6e, 0x64, 0x4e, 0xff, 0x6e, 0x65, 0x50, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x95, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xa6, 0x92, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6c, 0x62, 0x4d, 0xff, 0x6a, 0x5f, 0x4b, 0xff, 0x65, 0x5a, 0x48, 0xff, 0x64, 0x59, 0x47, 0xff, 0x68, 0x5e, 0x4a, 0xff, 0x6c, 0x62, 0x4d, 0xff, 0x6a, 0x60, 0x4b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xbf, 0xb4, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6a, 0x61, 0x4b, 0xff, 0x6d, 0x63, 0x4d, 0xff, 0x64, 0x59, 0x47, 0xff, 0x6e, 0x65, 0x4e, 0xff, 0x88, 0x84, 0x61, 0xff, 0x8b, 0x87, 0x64, 0xff, 0x76, 0x6e, 0x54, 0xff, 0x63, 0x58, 0x47, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x6a, 0x5f, 0x4b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb8, 0xae, 0x9a, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa8, 0x93, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xc2, 0xb3, 0xa1, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6d, 0x63, 0x4d, 0xff, 0x63, 0x57, 0x46, 0xff, 0x99, 0x9a, 0x6d, 0xff, 0xde, 0xe9, 0xa0, 0xff, 0xee, 0xff, 0xab, 0xff, 0xf0, 0xff, 0xac, 0xff, 0xe5, 0xf4, 0xa5, 0xff, 0xb2, 0xb8, 0x7f, 0xff, 0x67, 0x5c, 0x49, 0xff, 0x6b, 0x60, 0x4c, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xaa, 0x92, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xac, 0x98, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6b, 0x62, 0x4c, 0xff, 0x64, 0x58, 0x47, 0xff, 0x99, 0x9a, 0x6e, 0xff, 0xf1, 0xff, 0xad, 0xff, 0xee, 0xff, 0xab, 0xff, 0xe9, 0xfc, 0xa7, 0xff, 0xe9, 0xfc, 0xa7, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xf6, 0xff, 0xb1, 0xff, 0xb8, 0xc0, 0x84, 0xff, 0x66, 0x5b, 0x48, 0xff, 0x6c, 0x62, 0x4c, 0xff, 0x6c, 0x62, 0x4d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x93, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xa9, 0x94, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb8, 0xae, 0x9a, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x69, 0x5f, 0x4b, 0xff, 0x6e, 0x65, 0x4e, 0xff, 0xdf, 0xef, 0xa0, 0xff, 0xee, 0xfe, 0xaa, 0xff, 0xe8, 0xfb, 0xa6, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xea, 0xfd, 0xa8, 0xff, 0xe8, 0xfb, 0xa6, 0xff, 0xf1, 0xff, 0xad, 0xff, 0x86, 0x82, 0x60, 0xff, 0x65, 0x5a, 0x48, 0xff, 0x6d, 0x63, 0x4d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xbc, 0xb2, 0x9d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x71, 0x68, 0x50, 0xff, 0x64, 0x58, 0x47, 0xff, 0x88, 0x84, 0x61, 0xff, 0xee, 0xfd, 0xab, 0xff, 0xe8, 0xfc, 0xa6, 0xff, 0xeb, 0xfd, 0xa8, 0xff, 0xea, 0xfd, 0xa8, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xe7, 0xfa, 0xa6, 0xff, 0xf3, 0xfe, 0xaf, 0xff, 0xa9, 0xad, 0x79, 0xff, 0x62, 0x56, 0x45, 0xff, 0x6e, 0x64, 0x4e, 0xff, 0x69, 0x5d, 0x48, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xa5, 0x92, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa8, 0x94, 0xff,
|
||||
0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xbc, 0xb2, 0x9d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x71, 0x68, 0x50, 0xff, 0x63, 0x57, 0x46, 0xff, 0x8b, 0x88, 0x64, 0xff, 0xf0, 0xfe, 0xac, 0xff, 0xe8, 0xfb, 0xa6, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xea, 0xfd, 0xa8, 0xff, 0xe8, 0xf9, 0xa7, 0xff, 0xf3, 0xfe, 0xaf, 0xff, 0xad, 0xb3, 0x7c, 0xff, 0x61, 0x55, 0x44, 0xff, 0x6d, 0x65, 0x4f, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xa5, 0x92, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff,
|
||||
0xc0, 0xb6, 0xa0, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0xbf, 0xb5, 0x9f, 0xff, 0xb5, 0xab, 0x97, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xba, 0xb0, 0x9b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x71, 0x68, 0x50, 0xff, 0x67, 0x5d, 0x4a, 0xff, 0x76, 0x6e, 0x54, 0xff, 0xe6, 0xf6, 0xa5, 0xff, 0xeb, 0xfc, 0xa8, 0xff, 0xea, 0xfd, 0xa8, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xea, 0xfd, 0xa8, 0xff, 0xeb, 0xfe, 0xa9, 0xff, 0xe7, 0xfa, 0xa6, 0xff, 0xf3, 0xff, 0xae, 0xff, 0x92, 0x91, 0x68, 0xff, 0x64, 0x58, 0x47, 0xff, 0x6e, 0x64, 0x4e, 0xff, 0x69, 0x5d, 0x48, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xbd, 0xb3, 0x9e, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0xc0, 0xb5, 0xa0, 0xff, 0xc0, 0xb6, 0xa0, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb5, 0xab, 0x97, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6b, 0x62, 0x4c, 0xff, 0x63, 0x57, 0x46, 0xff, 0xb2, 0xb8, 0x80, 0xff, 0xf6, 0xff, 0xb1, 0xff, 0xe8, 0xfb, 0xa6, 0xff, 0xe8, 0xfb, 0xa7, 0xff, 0xe8, 0xfb, 0xa7, 0xff, 0xe7, 0xfa, 0xa6, 0xff, 0xf3, 0xff, 0xae, 0xff, 0xd2, 0xdf, 0x97, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x6b, 0x60, 0x4b, 0xff, 0x6c, 0x62, 0x4c, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xba, 0xb0, 0x9b, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x67, 0x5c, 0x49, 0xff, 0xb8, 0xc0, 0x84, 0xff, 0xf1, 0xff, 0xad, 0xff, 0xf3, 0xff, 0xaf, 0xff, 0xf4, 0xff, 0xaf, 0xff, 0xf3, 0xff, 0xae, 0xff, 0xd1, 0xdd, 0x96, 0xff, 0x74, 0x6c, 0x53, 0xff, 0x68, 0x5d, 0x4a, 0xff, 0x6a, 0x61, 0x4c, 0xff, 0x70, 0x65, 0x4f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb3, 0xa9, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb8, 0xaf, 0x9c, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x6b, 0x60, 0x4c, 0xff, 0x66, 0x5b, 0x48, 0xff, 0x86, 0x81, 0x5f, 0xff, 0xa9, 0xac, 0x79, 0xff, 0xae, 0xb1, 0x7c, 0xff, 0x92, 0x90, 0x68, 0xff, 0x6b, 0x62, 0x4c, 0xff, 0x68, 0x5d, 0x4a, 0xff, 0x6d, 0x63, 0x4d, 0xff, 0x68, 0x5e, 0x4a, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x92, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb7, 0xad, 0x98, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6a, 0x5f, 0x4b, 0xff, 0x6a, 0x60, 0x4c, 0xff, 0x6c, 0x62, 0x4d, 0xff, 0x66, 0x5b, 0x48, 0xff, 0x62, 0x56, 0x46, 0xff, 0x62, 0x56, 0x45, 0xff, 0x64, 0x59, 0x47, 0xff, 0x6b, 0x61, 0x4c, 0xff, 0x6b, 0x62, 0x4c, 0xff, 0x68, 0x5e, 0x4a, 0xff, 0x75, 0x6a, 0x52, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xbd, 0xb3, 0x9e, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x6c, 0x62, 0x4d, 0xff, 0x6e, 0x64, 0x4e, 0xff, 0x6e, 0x65, 0x4f, 0xff, 0x6e, 0x65, 0x4f, 0xff, 0x6e, 0x64, 0x4e, 0xff, 0x6c, 0x63, 0x4d, 0xff, 0x70, 0x65, 0x4f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xc0, 0xb5, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa5, 0x92, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x69, 0x60, 0x4b, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0xbf, 0xb4, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb7, 0xad, 0x98, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb5, 0xac, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0xc1, 0xb5, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xa6, 0x92, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xad, 0xa4, 0x90, 0xff, 0xc3, 0xb9, 0xa3, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x95, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xc3, 0xb8, 0xa3, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xbc, 0xb3, 0x9d, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb3, 0xaa, 0x97, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xaf, 0xaa, 0x92, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb7, 0xac, 0x98, 0xff, 0xc1, 0xb5, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xad, 0x98, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x94, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb2, 0xa8, 0x95, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xb0, 0xa6, 0x93, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xbf, 0xb4, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xbf, 0xb5, 0x9f, 0xff, 0xb9, 0xaf, 0x9a, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb7, 0xad, 0x99, 0xff, 0xbd, 0xb3, 0x9e, 0xff, 0xc0, 0xb5, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb5, 0xab, 0x97, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb4, 0xaa, 0x96, 0xff, 0xb3, 0xa9, 0x95, 0xff, 0xb5, 0xab, 0x97, 0xff, 0xb2, 0xa8, 0x94, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xbd, 0xb3, 0x9d, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb0, 0xa7, 0x93, 0xff, 0xb0, 0xa6, 0x92, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xbf, 0xb5, 0x9f, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xb1, 0xa8, 0x94, 0xff, 0xb1, 0xa7, 0x93, 0xff, 0xc0, 0xb6, 0xa0, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff,
|
||||
#endif
|
||||
};
|
||||
|
||||
const lv_img_dsc_t altimeter_asset_calibration_icon = {
|
||||
.header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED,
|
||||
.header.always_zero = 0,
|
||||
.header.reserved = 0,
|
||||
.header.w = 42,
|
||||
.header.h = 42,
|
||||
.data_size = 1764 * LV_COLOR_SIZE / 8,
|
||||
.data = calibration_icon_chroma_map,
|
||||
};
|
@ -1,16 +1,58 @@
|
||||
#include "lvgl.h"
|
||||
|
||||
/***
|
||||
* It is needed to have a reference on two header_titles because when
|
||||
* switching from one screen using a header to an other screen which is also using one
|
||||
* the header of the new screen will be created BEFORE the header of the previous screen
|
||||
* is deleted ...
|
||||
*/
|
||||
|
||||
/* A reference to the current and previous header title */
|
||||
static lv_obj_t *header_title[2] = {NULL, NULL};
|
||||
/* Pointer to the header_title to use */
|
||||
lv_obj_t **header_title_p = &header_title[0];
|
||||
|
||||
|
||||
static void cleanup_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t **header_title_deleted_p = e->user_data;
|
||||
*header_title_deleted_p = NULL;
|
||||
LV_LOG_USER("header_title cleanup");
|
||||
}
|
||||
|
||||
void common_screen_header_component(lv_obj_t *parent, const char * title, lv_coord_t height)
|
||||
{
|
||||
if(header_title[0] == NULL)
|
||||
header_title_p = &header_title[0];
|
||||
else if(header_title[1] == NULL)
|
||||
header_title_p = &header_title[1];
|
||||
else
|
||||
{
|
||||
LV_LOG_ERROR("no free header_title");
|
||||
return;
|
||||
}
|
||||
|
||||
lv_obj_t *header = lv_obj_create(parent);
|
||||
lv_obj_set_style_bg_color(header, lv_color_make(129, 141,181), LV_PART_MAIN);
|
||||
lv_obj_set_size(header, lv_disp_get_hor_res(NULL), height);
|
||||
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
||||
lv_obj_set_style_border_width(header, 0, LV_PART_MAIN);
|
||||
lv_obj_clear_flag(header, LV_OBJ_FLAG_SCROLLABLE);
|
||||
|
||||
lv_obj_t *header_title = lv_label_create(header);
|
||||
lv_label_set_text_static(header_title, title);
|
||||
lv_obj_set_style_text_color(header_title, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_font(header_title, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
lv_obj_set_align(header_title, LV_ALIGN_CENTER);
|
||||
*header_title_p = lv_label_create(header);
|
||||
lv_label_set_text_static(*header_title_p, title);
|
||||
lv_obj_set_style_text_align(*header_title_p, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
|
||||
lv_obj_set_style_text_color(*header_title_p, lv_color_white(), LV_PART_MAIN);
|
||||
lv_obj_set_style_text_font(*header_title_p, &lv_font_montserrat_30, LV_PART_MAIN);
|
||||
lv_obj_set_width(*header_title_p, 150);
|
||||
lv_obj_set_align(*header_title_p, LV_ALIGN_CENTER);
|
||||
lv_label_set_long_mode(*header_title_p, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
||||
/* Once the current header_title is destroyed, mark it as NULL to prevent any crashes when trying to change it's title */
|
||||
lv_obj_add_event_cb(*header_title_p, &(cleanup_event_cb), LV_EVENT_DELETE, header_title_p);
|
||||
}
|
||||
|
||||
void common_screen_header_update_title(const char * title)
|
||||
{
|
||||
if(!*header_title_p)return;
|
||||
lv_label_set_text_static(*header_title_p, title);
|
||||
}
|
||||
|
@ -3,6 +3,20 @@
|
||||
|
||||
#include "lvgl.h"
|
||||
|
||||
/**
|
||||
* @brief Adds a screen header with the defined title to the screen passed as parent with the provided height.
|
||||
*
|
||||
* @param parent the screen to which the header will be added
|
||||
* @param title a string used as the header's title
|
||||
* @param height the height in pixel of the header
|
||||
*/
|
||||
void common_screen_header_component(lv_obj_t *parent, const char * title, lv_coord_t height);
|
||||
|
||||
/**
|
||||
* @brief Updates the current title of displayed screen header
|
||||
*
|
||||
* @param title a string used as the new header's title
|
||||
*/
|
||||
void common_screen_header_update_title(const char * title);
|
||||
|
||||
#endif //COMMON_SCREEN_COMPONENTS_H
|
||||
|
@ -0,0 +1,7 @@
|
||||
#ifndef FIRMWARE_VERSION_H
|
||||
#define FIRMWARE_VERSION_H
|
||||
|
||||
#define FIRMWARE_VERSION "0.0.1" //Firmware creation
|
||||
#define FIRMWARE_TIME_DATE (__TIME__" "__DATE__)
|
||||
|
||||
#endif //FIRMWARE_VERSION_H
|
@ -1,338 +0,0 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
#endif
|
||||
|
||||
#ifndef LV_ATTRIBUTE_IMG_HOUR_HAND
|
||||
#define LV_ATTRIBUTE_IMG_HOUR_HAND
|
||||
#endif
|
||||
|
||||
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_HOUR_HAND uint8_t hour_hand_map[] = {
|
||||
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
|
||||
/*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x49, 0xc0, 0x6d, 0xff, 0x49, 0xff, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x49, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xb6, 0x45, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xb7, 0x6f, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x54, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x32, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x39, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xdb, 0xff, 0xb7, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x07, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xdb, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xdb, 0x45, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xdb, 0xff, 0xb7, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0xb6, 0x66, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x49, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x49, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x92, 0xff, 0x92, 0x59, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x49, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x24, 0xff, 0x6d, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xdb, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb7, 0xff, 0xb6, 0x68, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0xb6, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x24, 0x1d, 0x24, 0xd2, 0x24, 0xff, 0x25, 0xff, 0x49, 0xff, 0x6d, 0x35, 0x00, 0x00,
|
||||
0x00, 0x00, 0x92, 0xbd, 0x6d, 0xde, 0x49, 0x56, 0x6e, 0x56, 0x49, 0xc6, 0x49, 0xd9, 0x6d, 0x38,
|
||||
0x00, 0x00, 0xb7, 0xb2, 0x92, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x6c, 0x24, 0x78,
|
||||
0xb7, 0xff, 0xb7, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2f, 0x92, 0xdc,
|
||||
0xb7, 0xff, 0xb7, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x0d, 0x49, 0xaa,
|
||||
0xb6, 0xff, 0x6e, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x40, 0xdb, 0xf1,
|
||||
0x00, 0x00, 0x92, 0xec, 0x49, 0x64, 0x24, 0x11, 0x6e, 0x0c, 0x25, 0x3c, 0x92, 0xa1, 0xdb, 0x79,
|
||||
0x00, 0x00, 0x49, 0x8a, 0x25, 0xea, 0x00, 0xbb, 0x00, 0xb6, 0x49, 0xe6, 0x92, 0xc1, 0x92, 0x1d,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6d, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6e, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x6d, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x6d, 0xff, 0x92, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0x8c, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x6e, 0xbd, 0xdb, 0xff, 0xdb, 0xff, 0xb7, 0xfb, 0xb7, 0x2f, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0
|
||||
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x42, 0xc0, 0xcb, 0x5a, 0xff, 0x8a, 0x52, 0xff, 0xc3, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x10, 0xc0, 0x00, 0x00, 0xff, 0xa2, 0x10, 0xff, 0xa6, 0x31, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0xc0, 0x00, 0x00, 0xff, 0x41, 0x08, 0xff, 0x8e, 0x73, 0xff, 0x92, 0x94, 0x45, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x76, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x35, 0xad, 0xff, 0xd7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x35, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x75, 0xad, 0xff, 0x96, 0xb5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xf3, 0x9c, 0xff, 0x75, 0xad, 0x6f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb2, 0x94, 0xff, 0xb6, 0xb5, 0x54, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x14, 0xa5, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x75, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x76, 0xb5, 0xff, 0xb7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x20, 0x00, 0xff, 0x14, 0xa5, 0xff, 0xd7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x20, 0x00, 0xff, 0xf4, 0xa4, 0xff, 0xd7, 0xbd, 0x32, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x76, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x55, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x96, 0xb5, 0xff, 0xd7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x20, 0x00, 0xff, 0x34, 0xa5, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0xf4, 0xa4, 0xff, 0xd7, 0xbd, 0x39, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xd7, 0xbd, 0xff, 0x96, 0xb5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0xb3, 0x9c, 0xff, 0xb6, 0xb5, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0xb3, 0x9c, 0xff, 0xd7, 0xbd, 0x07, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb6, 0xb5, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0xd3, 0x9c, 0xff, 0xd7, 0xbd, 0x45, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x20, 0x00, 0xff, 0x75, 0xad, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb7, 0xbd, 0xff, 0x55, 0xad, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x41, 0x08, 0xff, 0xd3, 0x9c, 0xff, 0xb3, 0x9c, 0x66, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0xa3, 0x18, 0xff, 0x8a, 0x52, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0xa3, 0x18, 0xff, 0x8a, 0x52, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x61, 0x08, 0xff, 0x51, 0x8c, 0xff, 0x10, 0x84, 0x59, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0xa3, 0x18, 0xff, 0xcb, 0x5a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0xc3, 0x18, 0xff, 0x49, 0x4a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0xa3, 0x18, 0xff, 0xcb, 0x5a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x96, 0xb5, 0xff, 0xf8, 0xc5, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x76, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x96, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x76, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x96, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x76, 0xb5, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0xb6, 0xb5, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x41, 0x08, 0xff, 0x35, 0xad, 0xff, 0xf7, 0xbd, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x41, 0x08, 0xff, 0x96, 0xb5, 0xff, 0xd3, 0x9c, 0x68, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x21, 0x08, 0xff, 0x92, 0x94, 0xff, 0x4d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xe3, 0x18, 0x1d, 0xe4, 0x20, 0xd2, 0xe4, 0x20, 0xff, 0x25, 0x29, 0xff, 0x49, 0x4a, 0xff, 0xaa, 0x52, 0x35, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xef, 0x7b, 0xbd, 0xcb, 0x5a, 0xde, 0xa6, 0x31, 0x56, 0x8e, 0x73, 0x56, 0x29, 0x4a, 0xc6, 0x49, 0x4a, 0xd9, 0xeb, 0x5a, 0x38,
|
||||
0x00, 0x00, 0x00, 0x35, 0xad, 0xb2, 0x10, 0x84, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x4a, 0x6c, 0x04, 0x21, 0x78,
|
||||
0x55, 0xad, 0xff, 0x55, 0xad, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0x2f, 0x8e, 0x73, 0xdc,
|
||||
0x76, 0xb5, 0xff, 0x34, 0xa5, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x29, 0x0d, 0x86, 0x31, 0xaa,
|
||||
0xd3, 0x9c, 0xff, 0x4d, 0x6b, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x5a, 0x40, 0xd7, 0xbd, 0xf1,
|
||||
0x00, 0x00, 0x00, 0x72, 0x94, 0xec, 0xa6, 0x31, 0x64, 0x04, 0x21, 0x11, 0x6d, 0x6b, 0x0c, 0x65, 0x29, 0x3c, 0x31, 0x8c, 0xa1, 0x18, 0xc6, 0x79,
|
||||
0x00, 0x00, 0x00, 0xe7, 0x39, 0x8a, 0x04, 0x21, 0xea, 0x82, 0x10, 0xbb, 0x41, 0x08, 0xb6, 0x69, 0x4a, 0xe6, 0x10, 0x84, 0xc1, 0xae, 0x73, 0x1d,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x0c, 0x63, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x2d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x2d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x2d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x2d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x4d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xc0, 0x20, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x2d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x4d, 0x6b, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xc0, 0x20, 0x00, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x0c, 0x63, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xc0, 0x20, 0x00, 0xff, 0x00, 0x00, 0xff, 0xaa, 0x52, 0xff, 0x10, 0x84, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x08, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x28, 0x42, 0xff, 0x18, 0xc6, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8e, 0x73, 0xbd, 0x18, 0xc6, 0xff, 0xd7, 0xbd, 0xff, 0x96, 0xb5, 0xfb, 0x96, 0xb5, 0x2f, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0
|
||||
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 color bytes are swapped*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0xc0, 0x5a, 0xcb, 0xff, 0x52, 0x8a, 0xff, 0x18, 0xc3, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x62, 0xc0, 0x00, 0x00, 0xff, 0x10, 0xa2, 0xff, 0x31, 0xa6, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x41, 0xff, 0x73, 0x8e, 0xff, 0x94, 0x92, 0x45, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb5, 0x76, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x35, 0xff, 0xbd, 0xd7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x35, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x75, 0xff, 0xb5, 0x96, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x9c, 0xf3, 0xff, 0xad, 0x75, 0x6f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x94, 0xb2, 0xff, 0xb5, 0xb6, 0x54, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xa5, 0x14, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x75, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb5, 0x76, 0xff, 0xbd, 0xb7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x20, 0xff, 0xa5, 0x14, 0xff, 0xbd, 0xd7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x20, 0xff, 0xa4, 0xf4, 0xff, 0xbd, 0xd7, 0x32, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb5, 0x76, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xad, 0x55, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb5, 0x96, 0xff, 0xbd, 0xd7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x20, 0xff, 0xa5, 0x34, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xa4, 0xf4, 0xff, 0xbd, 0xd7, 0x39, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xbd, 0xd7, 0xff, 0xb5, 0x96, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0x9c, 0xb3, 0xff, 0xb5, 0xb6, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0x9c, 0xb3, 0xff, 0xbd, 0xd7, 0x07, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xb5, 0xb6, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0x9c, 0xd3, 0xff, 0xbd, 0xd7, 0x45, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x20, 0xff, 0xad, 0x75, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xbd, 0xb7, 0xff, 0xad, 0x55, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x41, 0xff, 0x9c, 0xd3, 0xff, 0x9c, 0xb3, 0x66, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x18, 0xa3, 0xff, 0x52, 0x8a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x18, 0xa3, 0xff, 0x52, 0x8a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x61, 0xff, 0x8c, 0x51, 0xff, 0x84, 0x10, 0x59, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x18, 0xa3, 0xff, 0x5a, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x18, 0xc3, 0xff, 0x4a, 0x49, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x18, 0xa3, 0xff, 0x5a, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x96, 0xff, 0xc5, 0xf8, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x76, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x96, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x76, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x96, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0x76, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0xb5, 0xb6, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x41, 0xff, 0xad, 0x35, 0xff, 0xbd, 0xf7, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x41, 0xff, 0xb5, 0x96, 0xff, 0x9c, 0xd3, 0x68, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x08, 0x21, 0xff, 0x94, 0x92, 0xff, 0x6b, 0x4d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x18, 0xe3, 0x1d, 0x20, 0xe4, 0xd2, 0x20, 0xe4, 0xff, 0x29, 0x25, 0xff, 0x4a, 0x49, 0xff, 0x52, 0xaa, 0x35, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7b, 0xef, 0xbd, 0x5a, 0xcb, 0xde, 0x31, 0xa6, 0x56, 0x73, 0x8e, 0x56, 0x4a, 0x29, 0xc6, 0x4a, 0x49, 0xd9, 0x5a, 0xeb, 0x38,
|
||||
0x00, 0x00, 0x00, 0xad, 0x35, 0xb2, 0x84, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x49, 0x6c, 0x21, 0x04, 0x78,
|
||||
0xad, 0x55, 0xff, 0xad, 0x55, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0x2f, 0x73, 0x8e, 0xdc,
|
||||
0xb5, 0x76, 0xff, 0xa5, 0x34, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x45, 0x0d, 0x31, 0x86, 0xaa,
|
||||
0x9c, 0xd3, 0xff, 0x6b, 0x4d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0xab, 0x40, 0xbd, 0xd7, 0xf1,
|
||||
0x00, 0x00, 0x00, 0x94, 0x72, 0xec, 0x31, 0xa6, 0x64, 0x21, 0x04, 0x11, 0x6b, 0x6d, 0x0c, 0x29, 0x65, 0x3c, 0x8c, 0x31, 0xa1, 0xc6, 0x18, 0x79,
|
||||
0x00, 0x00, 0x00, 0x39, 0xe7, 0x8a, 0x21, 0x04, 0xea, 0x10, 0x82, 0xbb, 0x08, 0x41, 0xb6, 0x4a, 0x69, 0xe6, 0x84, 0x10, 0xc1, 0x73, 0xae, 0x1d,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x63, 0x0c, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x2d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x2d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x2d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x2d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x4d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x00, 0x20, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x2d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x6b, 0x4d, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x00, 0x20, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0x63, 0x0c, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xc0, 0x00, 0x20, 0xff, 0x00, 0x00, 0xff, 0x52, 0xaa, 0xff, 0x84, 0x10, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0xc0, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x42, 0x28, 0xff, 0xc6, 0x18, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x8e, 0xbd, 0xc6, 0x18, 0xff, 0xbd, 0xd7, 0xff, 0xb5, 0x96, 0xfb, 0xb5, 0x96, 0x2f, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 32
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3e, 0xc0, 0x59, 0x59, 0x59, 0xff, 0x4f, 0x4f, 0x4f, 0xff, 0x18, 0x18, 0x18, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x0d, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x13, 0x13, 0x13, 0xff, 0x32, 0x32, 0x32, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x06, 0x06, 0x06, 0xff, 0x6f, 0x6f, 0x6f, 0xff, 0x90, 0x90, 0x90, 0x45, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xad, 0xad, 0xad, 0xff, 0xc1, 0xc1, 0xc1, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa4, 0xa4, 0xa4, 0xff, 0xb8, 0xb8, 0xb8, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa5, 0xa5, 0xa5, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0xb1, 0xb1, 0xb1, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x9a, 0x9a, 0x9a, 0xff, 0xaa, 0xaa, 0xaa, 0x6f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0xff, 0x92, 0x92, 0x92, 0xff, 0xb3, 0xb3, 0xb3, 0x54, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa0, 0xa0, 0xa0, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa9, 0xa9, 0xa9, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa9, 0xa9, 0xa9, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xa9, 0xa9, 0xa9, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xad, 0xad, 0xad, 0xff, 0xb4, 0xb4, 0xb4, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x02, 0x02, 0x02, 0xff, 0x9f, 0x9f, 0x9f, 0xff, 0xb8, 0xb8, 0xb8, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x02, 0x02, 0x02, 0xff, 0x9c, 0x9c, 0x9c, 0xff, 0xb8, 0xb8, 0xb8, 0x32, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xad, 0xad, 0xad, 0xff, 0xbf, 0xbf, 0xbf, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0xff, 0xaf, 0xaf, 0xaf, 0xff, 0xb6, 0xb6, 0xb6, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x03, 0x03, 0x03, 0xff, 0xa2, 0xa2, 0xa2, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff, 0x9c, 0x9c, 0x9c, 0xff, 0xb7, 0xb7, 0xb7, 0x39, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0xaf, 0xaf, 0xaf, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0x95, 0x95, 0x95, 0xff, 0xb3, 0xb3, 0xb3, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0x95, 0x95, 0x95, 0xff, 0xb6, 0xb6, 0xb6, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0xff, 0xb3, 0xb3, 0xb3, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0x98, 0x98, 0x98, 0xff, 0xb9, 0xb9, 0xb9, 0x45, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x02, 0x02, 0x02, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0xbc, 0xbc, 0xbc, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0xff, 0xb4, 0xb4, 0xb4, 0xff, 0xa8, 0xa8, 0xa8, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x06, 0x06, 0x06, 0xff, 0x97, 0x97, 0x97, 0xff, 0x94, 0x94, 0x94, 0x66, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x15, 0x15, 0x15, 0xff, 0x4e, 0x4e, 0x4e, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x15, 0x15, 0x15, 0xff, 0x4e, 0x4e, 0x4e, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x0a, 0x0a, 0x0a, 0xff, 0x87, 0x87, 0x87, 0xff, 0x7e, 0x7e, 0x7e, 0x59, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x14, 0x14, 0x14, 0xff, 0x57, 0x57, 0x57, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x17, 0x17, 0x17, 0xff, 0x48, 0x48, 0x48, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x15, 0x15, 0x15, 0xff, 0x58, 0x58, 0x58, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff, 0xaf, 0xaf, 0xaf, 0xff, 0xbd, 0xbd, 0xbd, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff, 0xad, 0xad, 0xad, 0xff, 0xc1, 0xc1, 0xc1, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff, 0xae, 0xae, 0xae, 0xff, 0xc1, 0xc1, 0xc1, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0xad, 0xad, 0xad, 0xff, 0xbf, 0xbf, 0xbf, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x04, 0x04, 0x04, 0xff, 0xae, 0xae, 0xae, 0xff, 0xbf, 0xbf, 0xbf, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0xac, 0xac, 0xac, 0xff, 0xbf, 0xbf, 0xbf, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x07, 0x07, 0x07, 0xff, 0xa5, 0xa5, 0xa5, 0xff, 0xba, 0xba, 0xba, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x07, 0x07, 0x07, 0xff, 0xaf, 0xaf, 0xaf, 0xff, 0x98, 0x98, 0x98, 0x68, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x05, 0x05, 0x05, 0xff, 0x91, 0x91, 0x91, 0xff, 0x66, 0x66, 0x66, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1a, 0x1a, 0x1a, 0x1d, 0x1d, 0x1d, 0x1d, 0xd2, 0x1d, 0x1d, 0x1d, 0xff, 0x25, 0x25, 0x25, 0xff, 0x49, 0x49, 0x49, 0xff, 0x52, 0x52, 0x52, 0x35, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b, 0x7b, 0xbd, 0x56, 0x56, 0x56, 0xde, 0x32, 0x32, 0x32, 0x56, 0x6e, 0x6e, 0x6e, 0x56, 0x44, 0x44, 0x44, 0xc6, 0x47, 0x47, 0x47, 0xd9, 0x5b, 0x5b, 0x5b, 0x38,
|
||||
0x00, 0x00, 0x00, 0x00, 0xa5, 0xa5, 0xa5, 0xb2, 0x80, 0x80, 0x80, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x47, 0x47, 0x6c, 0x1e, 0x1e, 0x1e, 0x78,
|
||||
0xa7, 0xa7, 0xa7, 0xff, 0xa9, 0xa9, 0xa9, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x2f, 0x70, 0x70, 0x70, 0xdc,
|
||||
0xac, 0xac, 0xac, 0xff, 0xa3, 0xa3, 0xa3, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x27, 0x27, 0x0d, 0x30, 0x30, 0x30, 0xaa,
|
||||
0x96, 0x96, 0x96, 0xff, 0x69, 0x69, 0x69, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x54, 0x54, 0x40, 0xb6, 0xb6, 0xb6, 0xf1,
|
||||
0x00, 0x00, 0x00, 0x00, 0x8c, 0x8c, 0x8c, 0xec, 0x33, 0x33, 0x33, 0x64, 0x1e, 0x1e, 0x1e, 0x11, 0x6a, 0x6a, 0x6a, 0x0c, 0x2a, 0x2a, 0x2a, 0x3c, 0x85, 0x85, 0x85, 0xa1, 0xbe, 0xbe, 0xbe, 0x79,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3b, 0x3b, 0x3b, 0x8a, 0x20, 0x20, 0x20, 0xea, 0x0f, 0x0f, 0x0f, 0xbb, 0x07, 0x07, 0x07, 0xb6, 0x4b, 0x4b, 0x4b, 0xe6, 0x80, 0x80, 0x80, 0xc1, 0x72, 0x72, 0x72, 0x1d,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x58, 0x58, 0x58, 0xff, 0x5f, 0x5f, 0x5f, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0xc0, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0xff, 0x56, 0x56, 0x56, 0xff, 0x64, 0x64, 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0x64, 0x64, 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0xc0, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0xff, 0x56, 0x56, 0x56, 0xff, 0x64, 0x64, 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0x64, 0x64, 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0xc0, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0x66, 0x66, 0x66, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0xc0, 0x02, 0x02, 0x02, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0x64, 0x64, 0x64, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0xc0, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0xff, 0x56, 0x56, 0x56, 0xff, 0x68, 0x68, 0x68, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0xc0, 0x02, 0x02, 0x02, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0x5f, 0x5f, 0x5f, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0xc0, 0x03, 0x03, 0x03, 0xff, 0x00, 0x00, 0x00, 0xff, 0x53, 0x53, 0x53, 0xff, 0x80, 0x80, 0x80, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0xc0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x43, 0x43, 0x43, 0xff, 0xc1, 0xc1, 0xc1, 0x8c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x6f, 0x6f, 0xbd, 0xbe, 0xbe, 0xbe, 0xff, 0xb6, 0xb6, 0xb6, 0xff, 0xaf, 0xaf, 0xaf, 0xfb, 0xae, 0xae, 0xae, 0x2f, 0x00, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
};
|
||||
|
||||
const lv_img_dsc_t hour_hand = {
|
||||
.header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
|
||||
.header.always_zero = 0,
|
||||
.header.reserved = 0,
|
||||
.header.w = 8,
|
||||
.header.h = 75,
|
||||
.data_size = 600 * LV_IMG_PX_SIZE_ALPHA_BYTE,
|
||||
.data = hour_hand_map,
|
||||
};
|
@ -58,6 +58,15 @@ static void date_time_cb(struct tm * const dateTime)
|
||||
*dateTime = *tm;
|
||||
}
|
||||
|
||||
static void alti_meas_cb(float * const temperature, float * const pressure, float * const altitude)
|
||||
{
|
||||
static float a = 425.5;
|
||||
*temperature = (rand() % 20) + 10;
|
||||
*pressure = (float)rand()/(float)(RAND_MAX) * 50 + 980;
|
||||
a += 2;
|
||||
*altitude = a;//(rand() % 700) + 10.2;
|
||||
}
|
||||
|
||||
WatchFace_t watchFace;
|
||||
MenuScreen_t menuScreen;
|
||||
CompassScreen_t compassScreen;
|
||||
@ -66,6 +75,7 @@ AltimeterScreen_t altimeterScreen;
|
||||
|
||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
|
||||
{
|
||||
srand(time(NULL));
|
||||
/*Initialize LittlevGL*/
|
||||
lv_init();
|
||||
|
||||
@ -89,11 +99,15 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLi
|
||||
settings_screen_init(&settingsScreen);
|
||||
altimeter_screen_init(&altimeterScreen);
|
||||
|
||||
altimeter_screen_register_measurement_cb(&altimeterScreen, &(alti_meas_cb));
|
||||
|
||||
watch_face_register_date_time_cb(&watchFace, &(date_time_cb));
|
||||
watch_face_create(&watchFace);
|
||||
|
||||
lv_scr_load(watchFace.display);
|
||||
|
||||
watch_face_set_step_count(&watchFace, 10258);
|
||||
|
||||
|
||||
//settings_screen();
|
||||
//watch_face();
|
||||
|
@ -81,8 +81,7 @@ static void menu_screen_add_item(lv_obj_t *scroll_item_container, uint8_t positi
|
||||
//lv_obj_t *item_btn = lv_imgbtn_create(scroll_item_container);
|
||||
lv_obj_t *item_btn = lv_img_create(scroll_item_container);
|
||||
lv_obj_set_size(item_btn, itemImg->header.w, itemImg->header.h);
|
||||
lv_obj_add_flag(item_btn, LV_OBJ_FLAG_ADV_HITTEST);
|
||||
lv_obj_add_flag(item_btn, LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_flag(item_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_set_pos(item_btn, 42, 52 * position);
|
||||
//lv_imgbtn_set_src(item_btn, LV_IMGBTN_STATE_RELEASED, NULL, itemImg, NULL);
|
||||
lv_img_set_src(item_btn, itemImg);
|
||||
|
@ -1,438 +0,0 @@
|
||||
#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
|
||||
#include "lvgl.h"
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
#endif
|
||||
|
||||
#ifndef LV_ATTRIBUTE_IMG_MINUTE_HAND
|
||||
#define LV_ATTRIBUTE_IMG_MINUTE_HAND
|
||||
#endif
|
||||
|
||||
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_MINUTE_HAND uint8_t minute_hand_map[] = {
|
||||
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
|
||||
/*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x6d, 0xff, 0x49, 0xff, 0x6e, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xff, 0xff, 0xdb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x49, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6d, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x6e, 0xff, 0xb7, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x49, 0xff, 0x6d, 0xff, 0x92, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x49, 0xff, 0x49, 0x72, 0x00, 0x00, 0x00, 0x00, 0x25, 0xe7, 0xb6, 0xc7,
|
||||
0x49, 0xee, 0x49, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff,
|
||||
0x49, 0xff, 0x92, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x49,
|
||||
0x49, 0xff, 0x92, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff,
|
||||
0x00, 0x00, 0x49, 0xff, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x10, 0xdb, 0xfb,
|
||||
0x00, 0x00, 0x49, 0x2a, 0x24, 0xff, 0x00, 0xf7, 0x00, 0xf7, 0x49, 0xff, 0xb7, 0x2a,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x24, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x24, 0xff, 0x24, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0x00, 0xff, 0x00, 0xff, 0x92, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xb6, 0xff, 0x92, 0xff, 0xdb, 0xff, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0
|
||||
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x52, 0xff, 0x69, 0x4a, 0xff, 0x4d, 0x6b, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10, 0xff, 0x00, 0x00, 0xff, 0xe7, 0x39, 0xff, 0x79, 0xce, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xc7, 0x39, 0xff, 0x79, 0xce, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe7, 0x39, 0xff, 0x79, 0xce, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe7, 0x39, 0xff, 0x7a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe8, 0x41, 0xff, 0x7a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe7, 0x39, 0xff, 0x7a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe8, 0x41, 0xff, 0x7a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe7, 0x39, 0xff, 0x7a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xe8, 0x41, 0xff, 0x7a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x08, 0x42, 0xff, 0x7a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x08, 0x42, 0xff, 0x7a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x08, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x08, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x08, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x28, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x28, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x28, 0x42, 0xff, 0x9a, 0xd6, 0xff, 0xf7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x29, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x29, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x29, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x29, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0xf8, 0xc5, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x29, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0x18, 0xc6, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x49, 0x4a, 0xff, 0xba, 0xd6, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x49, 0x4a, 0xff, 0x9a, 0xd6, 0xff, 0xd7, 0xbd, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x49, 0x4a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x69, 0x4a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x69, 0x4a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8a, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xaa, 0x52, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xab, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xab, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xab, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xcb, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xeb, 0x5a, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xeb, 0x5a, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xeb, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xeb, 0x5a, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xec, 0x62, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xec, 0x62, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xec, 0x62, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xec, 0x62, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x0c, 0x63, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x0c, 0x63, 0xff, 0x59, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x0c, 0x63, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x0c, 0x63, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x2c, 0x63, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x2c, 0x63, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x2d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x2d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x2d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6d, 0x6b, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6e, 0x73, 0xff, 0x79, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x6e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8e, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xae, 0x73, 0xff, 0x7a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x8e, 0x73, 0xff, 0x9a, 0xd6, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0xcf, 0x7b, 0xff, 0x39, 0xce, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x4d, 0x6b, 0xff, 0x75, 0xad, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x08, 0xff, 0x6a, 0x52, 0xff, 0xab, 0x5a, 0xff, 0x8e, 0x73, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x08, 0x42, 0xff, 0x49, 0x4a, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x31, 0xe7, 0xb2, 0x94, 0xc7,
|
||||
0x49, 0x4a, 0xee, 0x69, 0x4a, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x39, 0xff,
|
||||
0x6a, 0x52, 0xff, 0xef, 0x7b, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x31, 0x49,
|
||||
0x28, 0x42, 0xff, 0xef, 0x7b, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x7b, 0xff,
|
||||
0x00, 0x00, 0x00, 0xc7, 0x39, 0xff, 0xc7, 0x39, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x52, 0x10, 0xf8, 0xc5, 0xfb,
|
||||
0x00, 0x00, 0x00, 0x8a, 0x52, 0x2a, 0xc3, 0x18, 0xff, 0x41, 0x08, 0xf7, 0x41, 0x08, 0xf7, 0xa6, 0x31, 0xff, 0x35, 0xad, 0x2a,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0xe3, 0x18, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x10, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x10, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x00, 0x00, 0xff, 0x82, 0x10, 0xff, 0x04, 0x21, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x18, 0xff, 0x20, 0x00, 0xff, 0x82, 0x10, 0xff, 0xe3, 0x18, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x10, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x72, 0x94, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0xff, 0xb3, 0x9c, 0xff, 0x71, 0x8c, 0xff, 0xf7, 0xbd, 0xff, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0
|
||||
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 color bytes are swapped*/
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xaa, 0xff, 0x4a, 0x69, 0xff, 0x6b, 0x4d, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x82, 0xff, 0x00, 0x00, 0xff, 0x39, 0xe7, 0xff, 0xce, 0x79, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x39, 0xc7, 0xff, 0xce, 0x79, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x39, 0xe7, 0xff, 0xce, 0x79, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x39, 0xe7, 0xff, 0xd6, 0x7a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x41, 0xe8, 0xff, 0xd6, 0x7a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x39, 0xe7, 0xff, 0xd6, 0x7a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x41, 0xe8, 0xff, 0xd6, 0x7a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x39, 0xe7, 0xff, 0xd6, 0x7a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x41, 0xe8, 0xff, 0xd6, 0x7a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x08, 0xff, 0xd6, 0x7a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x08, 0xff, 0xd6, 0x7a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x08, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x08, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x08, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x28, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x28, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x42, 0x28, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xf7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x29, 0xff, 0xd6, 0x9a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x29, 0xff, 0xd6, 0x9a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x29, 0xff, 0xd6, 0x9a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xe3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x29, 0xff, 0xd6, 0x9a, 0xff, 0xc5, 0xf8, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x29, 0xff, 0xd6, 0x9a, 0xff, 0xc6, 0x18, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x49, 0xff, 0xd6, 0xba, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x49, 0xff, 0xd6, 0x9a, 0xff, 0xbd, 0xd7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x49, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x69, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x4a, 0x69, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x6a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x6a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x52, 0x8a, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x52, 0xaa, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xab, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xab, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xab, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xcb, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xeb, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xeb, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xeb, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x5a, 0xeb, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x62, 0xec, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x62, 0xec, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x62, 0xec, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x62, 0xec, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x0c, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x0c, 0xff, 0xce, 0x59, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x0c, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x0c, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x2c, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x63, 0x2c, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x2d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x2d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x2d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x6d, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x6e, 0xff, 0xce, 0x79, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x6e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x6e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x8e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x8e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x8e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x8e, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x73, 0xae, 0xff, 0xd6, 0x7a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x73, 0x8e, 0xff, 0xd6, 0x9a, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x7b, 0xcf, 0xff, 0xce, 0x39, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc3, 0xff, 0x00, 0x00, 0xff, 0x6b, 0x4d, 0xff, 0xad, 0x75, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x41, 0xff, 0x52, 0x6a, 0xff, 0x5a, 0xab, 0xff, 0x73, 0x8e, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x42, 0x08, 0xff, 0x4a, 0x49, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x86, 0xe7, 0x94, 0xb2, 0xc7,
|
||||
0x4a, 0x49, 0xee, 0x4a, 0x69, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xc7, 0xff,
|
||||
0x52, 0x6a, 0xff, 0x7b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x66, 0x49,
|
||||
0x42, 0x28, 0xff, 0x7b, 0xef, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xef, 0xff,
|
||||
0x00, 0x00, 0x00, 0x39, 0xc7, 0xff, 0x39, 0xc7, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x8a, 0x10, 0xc5, 0xf8, 0xfb,
|
||||
0x00, 0x00, 0x00, 0x52, 0x8a, 0x2a, 0x18, 0xc3, 0xff, 0x08, 0x41, 0xf7, 0x08, 0x41, 0xf7, 0x31, 0xa6, 0xff, 0xad, 0x35, 0x2a,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x18, 0xe3, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xa2, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xa2, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x00, 0xff, 0x10, 0x82, 0xff, 0x21, 0x04, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa3, 0xff, 0x00, 0x20, 0xff, 0x10, 0x82, 0xff, 0x18, 0xe3, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xa2, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x94, 0x72, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0x4d, 0xff, 0x9c, 0xb3, 0xff, 0x8c, 0x71, 0xff, 0xbd, 0xf7, 0xff, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
#if LV_COLOR_DEPTH == 32
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x53, 0x53, 0xff, 0x4a, 0x4a, 0x4a, 0xff, 0x68, 0x68, 0x68, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3a, 0x3a, 0x3a, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x39, 0x39, 0x39, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3a, 0x3a, 0x3a, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3b, 0x3b, 0x3b, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3c, 0x3c, 0x3c, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3b, 0x3b, 0x3b, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3c, 0x3c, 0x3c, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3b, 0x3b, 0x3b, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3c, 0x3c, 0x3c, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3e, 0x3e, 0x3e, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x3f, 0x3f, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x3f, 0x3f, 0xff, 0xce, 0xce, 0xce, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x41, 0x41, 0x41, 0xff, 0xce, 0xce, 0xce, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x41, 0x41, 0x41, 0xff, 0xce, 0xce, 0xce, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x42, 0x42, 0x42, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x42, 0x42, 0x42, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x43, 0x43, 0x43, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xbb, 0xbb, 0xbb, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x44, 0x44, 0x44, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x45, 0x45, 0x45, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0xff, 0x45, 0x45, 0x45, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x1a, 0x1a, 0xff, 0x00, 0x00, 0x00, 0xff, 0x45, 0x45, 0x45, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xbc, 0xbc, 0xbc, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x44, 0x44, 0x44, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xbe, 0xbe, 0xbe, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x46, 0x46, 0x46, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xb9, 0xb9, 0xb9, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x47, 0x47, 0x47, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xb7, 0xb7, 0xb7, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x49, 0x49, 0x49, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4a, 0x4a, 0x4a, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4b, 0x4b, 0x4b, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4c, 0x4c, 0x4c, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4d, 0x4d, 0x4d, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4e, 0x4e, 0x4e, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4f, 0x4f, 0x4f, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x4f, 0x4f, 0x4f, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x50, 0x50, 0x50, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x51, 0x51, 0x51, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x51, 0x51, 0x51, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x51, 0x51, 0x51, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x51, 0x51, 0x51, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x53, 0x53, 0x53, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x54, 0x54, 0x54, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x55, 0x55, 0x55, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x57, 0x57, 0x57, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x58, 0x58, 0x58, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x59, 0x59, 0x59, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5a, 0x5a, 0x5a, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5b, 0x5b, 0x5b, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5b, 0x5b, 0x5b, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5b, 0x5b, 0x5b, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5c, 0x5c, 0x5c, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5d, 0x5d, 0x5d, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5c, 0x5c, 0x5c, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5d, 0x5d, 0x5d, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5e, 0x5e, 0x5e, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5f, 0x5f, 0x5f, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x5f, 0x5f, 0x5f, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x60, 0x60, 0x60, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x62, 0x62, 0x62, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x63, 0x63, 0x63, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x64, 0x64, 0x64, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0xff, 0x65, 0x65, 0x65, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0xff, 0x65, 0x65, 0x65, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x66, 0x66, 0x66, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x67, 0x67, 0x67, 0xff, 0xca, 0xca, 0xca, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x67, 0x67, 0x67, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x68, 0x68, 0x68, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x68, 0x68, 0x68, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x68, 0x68, 0x68, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x69, 0x69, 0x69, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6a, 0x6a, 0x6a, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6c, 0x6c, 0x6c, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6d, 0x6d, 0x6d, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6d, 0x6d, 0x6d, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x6f, 0x6f, 0x6f, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x70, 0x70, 0x70, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xff, 0x00, 0x00, 0x00, 0xff, 0x70, 0x70, 0x70, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x71, 0x71, 0x71, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x16, 0x16, 0xff, 0x00, 0x00, 0x00, 0xff, 0x72, 0x72, 0x72, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x00, 0x00, 0x00, 0xff, 0x71, 0x71, 0x71, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x01, 0x01, 0x01, 0xff, 0x77, 0x77, 0x77, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x17, 0x17, 0xff, 0x00, 0x00, 0x00, 0xff, 0x66, 0x66, 0x66, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0xff, 0x4d, 0x4d, 0x4d, 0xff, 0x54, 0x54, 0x54, 0xff, 0x70, 0x70, 0x70, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x3f, 0xff, 0x48, 0x48, 0x48, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2e, 0xe7, 0x93, 0x93, 0x93, 0xc7,
|
||||
0x46, 0x46, 0x46, 0xee, 0x4a, 0x4a, 0x4a, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x39, 0x39, 0xff,
|
||||
0x4d, 0x4d, 0x4d, 0xff, 0x7a, 0x7a, 0x7a, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x2d, 0x2d, 0x49,
|
||||
0x42, 0x42, 0x42, 0xff, 0x7a, 0x7a, 0x7a, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7b, 0x7b, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0x39, 0x39, 0x39, 0xff, 0x39, 0x39, 0x39, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x50, 0x50, 0x10, 0xbc, 0xbc, 0xbc, 0xfb,
|
||||
0x00, 0x00, 0x00, 0x00, 0x4f, 0x4f, 0x4f, 0x2a, 0x18, 0x18, 0x18, 0xff, 0x09, 0x09, 0x09, 0xf7, 0x07, 0x07, 0x07, 0xf7, 0x32, 0x32, 0x32, 0xff, 0xa4, 0xa4, 0xa4, 0x2a,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x10, 0x10, 0x10, 0xff, 0x1b, 0x1b, 0x1b, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x13, 0x13, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0e, 0x0e, 0x0e, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x13, 0x13, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0e, 0x0e, 0x0e, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x14, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x0f, 0x0f, 0xff, 0x1f, 0x1f, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x15, 0x15, 0xff, 0x02, 0x02, 0x02, 0xff, 0x10, 0x10, 0x10, 0xff, 0x1b, 0x1b, 0x1b, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x12, 0x12, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x8c, 0x8c, 0x8c, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x68, 0x68, 0xff, 0x94, 0x94, 0x94, 0xff, 0x8b, 0x8b, 0x8b, 0xff, 0xba, 0xba, 0xba, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
#endif
|
||||
};
|
||||
|
||||
const lv_img_dsc_t minute_hand = {
|
||||
.header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
|
||||
.header.always_zero = 0,
|
||||
.header.reserved = 0,
|
||||
.header.w = 7,
|
||||
.header.h = 100,
|
||||
.data_size = 700 * LV_IMG_PX_SIZE_ALPHA_BYTE,
|
||||
.data = minute_hand_map,
|
||||
};
|
After Width: | Height: | Size: 221 B |
After Width: | Height: | Size: 216 B |
After Width: | Height: | Size: 216 B |
After Width: | Height: | Size: 451 B |
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
After Width: | Height: | Size: 81 KiB |