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
|
#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
|
#Exclude the lvgl simulator bin and obj folders from the the git repository
|
||||||
src/lvgl_win_sim/lv_port_win_codeblocks/bin
|
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
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
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$) :
|
The W800 is a pretty interesting chip with impressive characteristics for its price (around 1$) :
|
||||||
### Core :
|
### Core :
|
||||||
* 32bit XT804 CPU
|
* 32bit XT804 CPU
|
||||||
* 240 Mhz frequency
|
* 240 Mhz max clock
|
||||||
|
|
||||||
### Memory :
|
### Memory :
|
||||||
* 2 MB on chip flash
|
* 2 MB on chip flash
|
||||||
* 288 KB RAM
|
* 288 KB RAM, ~130 KB available to the user
|
||||||
|
|
||||||
### Wireless connectivity :
|
### Wireless connectivity :
|
||||||
* Bluetooth EDR(Classic) and BLE 4.2
|
* Bluetooth EDR(Classic) and BLE 4.2
|
||||||
* WiFi 2.4Ghz 802.11 b/g/n
|
* 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 :
|
## Sensors :
|
||||||
The goal is to embed the following sensors in the watch :
|
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.
|
* ~~A piezo buzzer~~ : dropped, maybe in next version.
|
||||||
|
|
||||||
## Power source :
|
## Power source :
|
||||||
* 1 cell lipo 450 mAh battery.
|
* A single 450 mAh cell lipo battery.
|
||||||
* A charge/discharge controller.
|
* A charge/discharge controller.
|
||||||
|
|
||||||
## Screen + touch element :
|
## 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_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**||
|
||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**||
|
||RESET|I|Reset Pin|D|**Micro switch** and **USB/Serial RTS pin**||
|
||||||
||XTAL_OUT|O|External crystal output||||
|
||XTAL_OUT|O|External crystal output||||
|
||||||
||XTAL_IN|I|External crystal input||||
|
||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**||
|
||PB_11|**I/O**|I²S_DO/MMC_D3/HSPI_DO/SDIO_D3|U/D|**BMA456 IRQ 2 line**||
|
||||||
||GND|P|Ground (Central Pad)||||
|
||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.
|
* LVGL 8.3.3 running on the SOC using DMA.
|
||||||
* Supported LCD drivers :
|
* Supported LCD drivers :
|
||||||
* ILI9341 in 4-line serial mode (8 bits) with D/C pin
|
* ILI9341 in 4-line serial mode (8 bits) with D/C pin
|
||||||
* ST7789 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
|
* GC9A01 in 4-line serial mode (8 bits) with D/C pin
|
||||||
* Supported LCD touch screen :
|
* Supported LCD touch screen :
|
||||||
* CST816D capacitive touch ic.
|
* CST816D I2C capacitive touch ic.
|
||||||
* Three screens designed and working with LVGL :
|
* Four screens designed and working with LVGL :
|
||||||
* 1 watch face based on a casio watch.
|
* 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 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)
|
* Debug UART on PB_2 (output only)
|
||||||
* Wake up interrupts handling :
|
|
||||||
* Wrist tilt MCU wake up working
|
|
||||||
* LCD touch wake up
|
|
||||||
* Sensors/Actuators :
|
* Sensors/Actuators :
|
||||||
* QMC5883L driver working
|
* QMC5883L driver working
|
||||||
* BMA456 driver working
|
* BMA456 driver working
|
||||||
* BMP280 driver working (temperature + pressure)
|
* BMP280 driver working (temperature + pressure + altitude)
|
||||||
* Battery voltage sense using ADC is working
|
* Battery voltage sense using ADC is working
|
||||||
* Vibration motor controlled by PWM 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:
|
## Achieved power consumption recap:
|
||||||
(Need to work on sleep current :-( )
|
(Need to work on sleep current :-( )
|
||||||
@ -151,3 +226,32 @@ using a magnetic 4 pin plug.
|
|||||||
|
|
||||||
### The back :
|
### 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.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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Soldermask,Bot*
|
G04 #@! TF.FileFunction,Soldermask,Bot*
|
||||||
G04 #@! TF.FilePolarity,Negative*
|
G04 #@! TF.FilePolarity,Negative*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
@ -29,17 +29,17 @@ G04 Aperture macros list*
|
|||||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||||
G04 Aperture macros list end*
|
G04 Aperture macros list end*
|
||||||
%ADD10C,1.000000*%
|
%ADD10RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||||
%ADD11RoundRect,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.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.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.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.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*%
|
||||||
%ADD16RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
%ADD16R,1.200000X1.500000*%
|
||||||
%ADD17R,1.200000X1.500000*%
|
%ADD17RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||||
%ADD18RoundRect,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.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*%
|
||||||
%ADD20RoundRect,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*%
|
%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*%
|
%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*%
|
%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*%
|
%ADD35RoundRect,0.250000X0.450000X-0.262500X0.450000X0.262500X-0.450000X0.262500X-0.450000X-0.262500X0*%
|
||||||
G04 APERTURE END LIST*
|
G04 APERTURE END LIST*
|
||||||
D10*
|
D10*
|
||||||
X153000000Y-98200000D03*
|
|
||||||
X147000000Y-94200000D03*
|
|
||||||
X147000000Y-98800000D03*
|
|
||||||
X147000000Y-91940000D03*
|
|
||||||
D11*
|
|
||||||
X161516000Y-115316000D03*
|
X161516000Y-115316000D03*
|
||||||
X160556000Y-115316000D03*
|
X160556000Y-115316000D03*
|
||||||
D12*
|
D11*
|
||||||
X159512000Y-87120000D03*
|
X159512000Y-87120000D03*
|
||||||
X159512000Y-88140000D03*
|
X159512000Y-88140000D03*
|
||||||
D13*
|
D12*
|
||||||
X167100000Y-93775000D03*
|
X167100000Y-93775000D03*
|
||||||
X167100000Y-92225000D03*
|
X167100000Y-92225000D03*
|
||||||
D14*
|
D13*
|
||||||
X163068000Y-89210000D03*
|
X163068000Y-89210000D03*
|
||||||
X163068000Y-90170000D03*
|
X163068000Y-90170000D03*
|
||||||
D15*
|
D14*
|
||||||
X157734000Y-106116380D03*
|
X157734000Y-106116380D03*
|
||||||
X157734000Y-104216380D03*
|
X157734000Y-104216380D03*
|
||||||
D16*
|
D15*
|
||||||
X162605000Y-93680000D03*
|
X162605000Y-93680000D03*
|
||||||
X162605000Y-92720000D03*
|
X162605000Y-92720000D03*
|
||||||
X163621000Y-93680000D03*
|
X163621000Y-93680000D03*
|
||||||
X163621000Y-92720000D03*
|
X163621000Y-92720000D03*
|
||||||
D17*
|
D16*
|
||||||
X169530000Y-106190000D03*
|
X169530000Y-106190000D03*
|
||||||
X164330000Y-106190000D03*
|
X164330000Y-106190000D03*
|
||||||
D18*
|
D17*
|
||||||
X160780000Y-110490000D03*
|
X160780000Y-110490000D03*
|
||||||
X161800000Y-110490000D03*
|
X161800000Y-110490000D03*
|
||||||
D19*
|
D18*
|
||||||
X145354000Y-86360000D03*
|
X145354000Y-86360000D03*
|
||||||
X146304000Y-86360000D03*
|
X146304000Y-86360000D03*
|
||||||
X147254000Y-86360000D03*
|
X147254000Y-86360000D03*
|
||||||
X147254000Y-88635000D03*
|
X147254000Y-88635000D03*
|
||||||
X145354000Y-88635000D03*
|
X145354000Y-88635000D03*
|
||||||
D18*
|
D17*
|
||||||
X161542000Y-96520000D03*
|
X161542000Y-96520000D03*
|
||||||
X162562000Y-96520000D03*
|
X162562000Y-96520000D03*
|
||||||
D14*
|
D13*
|
||||||
X159258000Y-115344000D03*
|
X159258000Y-115344000D03*
|
||||||
X159258000Y-116304000D03*
|
X159258000Y-116304000D03*
|
||||||
D20*
|
D19*
|
||||||
X157922000Y-113405500D03*
|
X157922000Y-113405500D03*
|
||||||
X156972000Y-113405500D03*
|
X156972000Y-113405500D03*
|
||||||
X156022000Y-113405500D03*
|
X156022000Y-113405500D03*
|
||||||
X156022000Y-111130500D03*
|
X156022000Y-111130500D03*
|
||||||
X157922000Y-111130500D03*
|
X157922000Y-111130500D03*
|
||||||
D16*
|
D15*
|
||||||
X159258000Y-113510000D03*
|
X159258000Y-113510000D03*
|
||||||
X159258000Y-112550000D03*
|
X159258000Y-112550000D03*
|
||||||
D12*
|
D11*
|
||||||
X161563000Y-92690000D03*
|
X161563000Y-92690000D03*
|
||||||
X161563000Y-93710000D03*
|
X161563000Y-93710000D03*
|
||||||
|
D20*
|
||||||
|
X147000000Y-91940000D03*
|
||||||
D21*
|
D21*
|
||||||
X165632500Y-103490000D03*
|
X165632500Y-103490000D03*
|
||||||
X165632500Y-101590000D03*
|
X165632500Y-101590000D03*
|
||||||
@ -141,7 +138,7 @@ X146472000Y-111236000D03*
|
|||||||
D25*
|
D25*
|
||||||
X160782000Y-114302000D03*
|
X160782000Y-114302000D03*
|
||||||
X160782000Y-113282000D03*
|
X160782000Y-113282000D03*
|
||||||
D12*
|
D11*
|
||||||
X143690000Y-91610000D03*
|
X143690000Y-91610000D03*
|
||||||
X143690000Y-92630000D03*
|
X143690000Y-92630000D03*
|
||||||
X144730000Y-90050000D03*
|
X144730000Y-90050000D03*
|
||||||
@ -152,30 +149,30 @@ X152670000Y-111250000D03*
|
|||||||
D24*
|
D24*
|
||||||
X143156400Y-107746800D03*
|
X143156400Y-107746800D03*
|
||||||
X142136400Y-107746800D03*
|
X142136400Y-107746800D03*
|
||||||
D12*
|
D11*
|
||||||
X154686000Y-112774000D03*
|
X154686000Y-112774000D03*
|
||||||
X154686000Y-113794000D03*
|
X154686000Y-113794000D03*
|
||||||
D27*
|
D27*
|
||||||
X148590000Y-112334000D03*
|
X148590000Y-112334000D03*
|
||||||
X148590000Y-114234000D03*
|
X148590000Y-114234000D03*
|
||||||
D16*
|
D15*
|
||||||
X166370000Y-112748000D03*
|
X166370000Y-112748000D03*
|
||||||
X166370000Y-111788000D03*
|
X166370000Y-111788000D03*
|
||||||
D11*
|
D10*
|
||||||
X161262000Y-117348000D03*
|
X161262000Y-117348000D03*
|
||||||
X160302000Y-117348000D03*
|
X160302000Y-117348000D03*
|
||||||
D28*
|
D28*
|
||||||
X164084000Y-114614000D03*
|
X164084000Y-114614000D03*
|
||||||
X164084000Y-109414000D03*
|
X164084000Y-109414000D03*
|
||||||
D10*
|
D20*
|
||||||
X149250400Y-105664000D03*
|
X149250400Y-105664000D03*
|
||||||
D25*
|
D25*
|
||||||
X164637000Y-93710000D03*
|
X164637000Y-93710000D03*
|
||||||
X164637000Y-92690000D03*
|
X164637000Y-92690000D03*
|
||||||
D14*
|
D13*
|
||||||
X162052000Y-89210000D03*
|
X162052000Y-89210000D03*
|
||||||
X162052000Y-90170000D03*
|
X162052000Y-90170000D03*
|
||||||
D12*
|
D11*
|
||||||
X166370000Y-108710000D03*
|
X166370000Y-108710000D03*
|
||||||
X166370000Y-109730000D03*
|
X166370000Y-109730000D03*
|
||||||
D29*
|
D29*
|
||||||
@ -187,15 +184,19 @@ X152746000Y-118985000D03*
|
|||||||
D31*
|
D31*
|
||||||
X150246000Y-115210000D03*
|
X150246000Y-115210000D03*
|
||||||
X154046000Y-115210000D03*
|
X154046000Y-115210000D03*
|
||||||
D10*
|
D20*
|
||||||
X155041600Y-105664000D03*
|
X155041600Y-105664000D03*
|
||||||
D24*
|
D24*
|
||||||
X149606000Y-109728000D03*
|
X149606000Y-109728000D03*
|
||||||
X148586000Y-109728000D03*
|
X148586000Y-109728000D03*
|
||||||
|
D20*
|
||||||
|
X147000000Y-98800000D03*
|
||||||
D32*
|
D32*
|
||||||
X160274000Y-96012000D03*
|
X160274000Y-96012000D03*
|
||||||
X158374000Y-96012000D03*
|
X158374000Y-96012000D03*
|
||||||
X159324000Y-94137000D03*
|
X159324000Y-94137000D03*
|
||||||
|
D20*
|
||||||
|
X153000000Y-98200000D03*
|
||||||
D24*
|
D24*
|
||||||
X163832000Y-103886000D03*
|
X163832000Y-103886000D03*
|
||||||
X162812000Y-103886000D03*
|
X162812000Y-103886000D03*
|
||||||
@ -205,27 +206,29 @@ X161800000Y-87120000D03*
|
|||||||
D33*
|
D33*
|
||||||
X155222000Y-102616000D03*
|
X155222000Y-102616000D03*
|
||||||
X156182000Y-102616000D03*
|
X156182000Y-102616000D03*
|
||||||
D16*
|
D15*
|
||||||
X161290000Y-106018000D03*
|
X161290000Y-106018000D03*
|
||||||
X161290000Y-105058000D03*
|
X161290000Y-105058000D03*
|
||||||
D14*
|
D13*
|
||||||
X159258000Y-110518000D03*
|
X159258000Y-110518000D03*
|
||||||
X159258000Y-111478000D03*
|
X159258000Y-111478000D03*
|
||||||
D34*
|
D34*
|
||||||
X139860000Y-107160000D03*
|
X139860000Y-107160000D03*
|
||||||
X139860000Y-109260000D03*
|
X139860000Y-109260000D03*
|
||||||
D14*
|
D13*
|
||||||
X150114000Y-112324000D03*
|
X150114000Y-112324000D03*
|
||||||
X150114000Y-113284000D03*
|
X150114000Y-113284000D03*
|
||||||
D24*
|
D24*
|
||||||
X149606000Y-110744000D03*
|
X149606000Y-110744000D03*
|
||||||
X148586000Y-110744000D03*
|
X148586000Y-110744000D03*
|
||||||
D12*
|
D11*
|
||||||
X164100000Y-89190000D03*
|
X164100000Y-89190000D03*
|
||||||
X164100000Y-90210000D03*
|
X164100000Y-90210000D03*
|
||||||
D15*
|
D14*
|
||||||
X159766000Y-106116380D03*
|
X159766000Y-106116380D03*
|
||||||
X159766000Y-104216380D03*
|
X159766000Y-104216380D03*
|
||||||
|
D20*
|
||||||
|
X147000000Y-94200000D03*
|
||||||
D35*
|
D35*
|
||||||
X169926000Y-103425000D03*
|
X169926000Y-103425000D03*
|
||||||
X169926000Y-101600000D03*
|
X169926000Y-101600000D03*
|
||||||
@ -235,12 +238,12 @@ X164050000Y-101780000D03*
|
|||||||
D34*
|
D34*
|
||||||
X143240000Y-112710000D03*
|
X143240000Y-112710000D03*
|
||||||
X143240000Y-114810000D03*
|
X143240000Y-114810000D03*
|
||||||
D10*
|
D20*
|
||||||
X140700183Y-114698941D03*
|
|
||||||
X139626728Y-113419647D03*
|
|
||||||
X138553272Y-112140353D03*
|
|
||||||
X137479817Y-110861059D03*
|
X137479817Y-110861059D03*
|
||||||
D19*
|
X138553272Y-112140353D03*
|
||||||
|
X139626728Y-113419647D03*
|
||||||
|
X140700183Y-114698941D03*
|
||||||
|
D18*
|
||||||
X155514000Y-116210500D03*
|
X155514000Y-116210500D03*
|
||||||
X156464000Y-116210500D03*
|
X156464000Y-116210500D03*
|
||||||
X157414000Y-116210500D03*
|
X157414000Y-116210500D03*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Paste,Bot*
|
G04 #@! TF.FileFunction,Paste,Bot*
|
||||||
G04 #@! TF.FilePolarity,Positive*
|
G04 #@! TF.FilePolarity,Positive*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
@ -227,10 +227,10 @@ D33*
|
|||||||
X143240000Y-112710000D03*
|
X143240000Y-112710000D03*
|
||||||
X143240000Y-114810000D03*
|
X143240000Y-114810000D03*
|
||||||
D35*
|
D35*
|
||||||
X140700183Y-114698941D03*
|
|
||||||
X139626728Y-113419647D03*
|
|
||||||
X138553272Y-112140353D03*
|
|
||||||
X137479817Y-110861059D03*
|
X137479817Y-110861059D03*
|
||||||
|
X138553272Y-112140353D03*
|
||||||
|
X139626728Y-113419647D03*
|
||||||
|
X140700183Y-114698941D03*
|
||||||
D18*
|
D18*
|
||||||
X155514000Y-116210500D03*
|
X155514000Y-116210500D03*
|
||||||
X156464000Y-116210500D03*
|
X156464000Y-116210500D03*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Legend,Bot*
|
G04 #@! TF.FileFunction,Legend,Bot*
|
||||||
G04 #@! TF.FilePolarity,Positive*
|
G04 #@! TF.FilePolarity,Positive*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
@ -29,23 +29,23 @@ G04 Aperture macros list*
|
|||||||
20,1,$1+$1,$6,$7,$8,$9,0*
|
20,1,$1+$1,$6,$7,$8,$9,0*
|
||||||
20,1,$1+$1,$8,$9,$2,$3,0*%
|
20,1,$1+$1,$8,$9,$2,$3,0*%
|
||||||
G04 Aperture macros list end*
|
G04 Aperture macros list end*
|
||||||
%ADD10C,0.300000*%
|
%ADD10C,0.150000*%
|
||||||
%ADD11C,0.213592*%
|
%ADD11C,0.213592*%
|
||||||
%ADD12C,0.200000*%
|
%ADD12C,0.300000*%
|
||||||
%ADD13C,0.150000*%
|
%ADD13C,0.200000*%
|
||||||
%ADD14C,0.120000*%
|
%ADD14C,0.120000*%
|
||||||
%ADD15C,0.250000*%
|
%ADD15C,0.250000*%
|
||||||
%ADD16C,1.000000*%
|
%ADD16RoundRect,0.140000X0.140000X0.170000X-0.140000X0.170000X-0.140000X-0.170000X0.140000X-0.170000X0*%
|
||||||
%ADD17RoundRect,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.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.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.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.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*%
|
||||||
%ADD22RoundRect,0.140000X0.170000X-0.140000X0.170000X0.140000X-0.170000X0.140000X-0.170000X-0.140000X0*%
|
%ADD22R,1.200000X1.500000*%
|
||||||
%ADD23R,1.200000X1.500000*%
|
%ADD23RoundRect,0.135000X-0.135000X-0.185000X0.135000X-0.185000X0.135000X0.185000X-0.135000X0.185000X0*%
|
||||||
%ADD24RoundRect,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.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*%
|
||||||
%ADD26RoundRect,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*%
|
%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*%
|
%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*%
|
%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*%
|
%ADD41RoundRect,0.250000X0.450000X-0.262500X0.450000X0.262500X-0.450000X0.262500X-0.450000X-0.262500X0*%
|
||||||
G04 APERTURE END LIST*
|
G04 APERTURE END LIST*
|
||||||
D10*
|
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*
|
X154414285Y-97207142D02*
|
||||||
X154200000Y-97278571D01*
|
X154200000Y-97278571D01*
|
||||||
X153842857Y-97278571D01*
|
X153842857Y-97278571D01*
|
||||||
@ -178,18 +415,7 @@ X142271428Y-96278571D01*
|
|||||||
X142485714Y-96278571D01*
|
X142485714Y-96278571D01*
|
||||||
X142628571Y-96350000D01*
|
X142628571Y-96350000D01*
|
||||||
X142700000Y-96421428D01*
|
X142700000Y-96421428D01*
|
||||||
D11*
|
D13*
|
||||||
X141946796Y-112010000D02*
|
|
||||||
G75*
|
|
||||||
G03*
|
|
||||||
X141946796Y-112010000I-106796J0D01*
|
|
||||||
G01*
|
|
||||||
X154986796Y-115070000D02*
|
|
||||||
G75*
|
|
||||||
G03*
|
|
||||||
X154986796Y-115070000I-106796J0D01*
|
|
||||||
G01*
|
|
||||||
D12*
|
|
||||||
X169384552Y-108488171D02*
|
X169384552Y-108488171D02*
|
||||||
X169241695Y-108535790D01*
|
X169241695Y-108535790D01*
|
||||||
X169194076Y-108583409D01*
|
X169194076Y-108583409D01*
|
||||||
@ -218,7 +444,7 @@ X167955980Y-108011980D01*
|
|||||||
X167622647Y-108726266D01*
|
X167622647Y-108726266D01*
|
||||||
X167289314Y-108011980D01*
|
X167289314Y-108011980D01*
|
||||||
X167289314Y-109011980D01*
|
X167289314Y-109011980D01*
|
||||||
D10*
|
D12*
|
||||||
X154472400Y-102293028D02*
|
X154472400Y-102293028D02*
|
||||||
X154400971Y-102221600D01*
|
X154400971Y-102221600D01*
|
||||||
X154258114Y-102150171D01*
|
X154258114Y-102150171D01*
|
||||||
@ -444,7 +670,7 @@ X149019285Y-100097084D01*
|
|||||||
X148938333Y-99935179D01*
|
X148938333Y-99935179D01*
|
||||||
X148857380Y-99854227D01*
|
X148857380Y-99854227D01*
|
||||||
X148695476Y-99773274D01*
|
X148695476Y-99773274D01*
|
||||||
D12*
|
D13*
|
||||||
X155737123Y-85170666D02*
|
X155737123Y-85170666D02*
|
||||||
X155260933Y-85170666D01*
|
X155260933Y-85170666D01*
|
||||||
X155832361Y-85456380D02*
|
X155832361Y-85456380D02*
|
||||||
@ -622,14 +848,14 @@ X150260933Y-88676380D01*
|
|||||||
X150594266Y-87676380D02*
|
X150594266Y-87676380D02*
|
||||||
X150260933Y-88200190D01*
|
X150260933Y-88200190D01*
|
||||||
X149927600Y-87676380D01*
|
X149927600Y-87676380D01*
|
||||||
D13*
|
D10*
|
||||||
X151206152Y-119705428D02*
|
X151206152Y-119705428D02*
|
||||||
X150444247Y-119705428D01*
|
X150444247Y-119705428D01*
|
||||||
X150825200Y-120086380D02*
|
X150825200Y-120086380D02*
|
||||||
X150825200Y-119324476D01*
|
X150825200Y-119324476D01*
|
||||||
X153898552Y-119705428D02*
|
X153898552Y-119705428D02*
|
||||||
X153136647Y-119705428D01*
|
X153136647Y-119705428D01*
|
||||||
D12*
|
D13*
|
||||||
X161685219Y-109723180D02*
|
X161685219Y-109723180D02*
|
||||||
X162018552Y-109246990D01*
|
X162018552Y-109246990D01*
|
||||||
X162256647Y-109723180D02*
|
X162256647Y-109723180D02*
|
||||||
@ -667,7 +893,7 @@ X160447123Y-108723180D02*
|
|||||||
X159875695Y-108723180D01*
|
X159875695Y-108723180D01*
|
||||||
X160161409Y-109723180D02*
|
X160161409Y-109723180D02*
|
||||||
X160161409Y-108723180D01*
|
X160161409Y-108723180D01*
|
||||||
D13*
|
D10*
|
||||||
X163057142Y-114733333D02*
|
X163057142Y-114733333D02*
|
||||||
X163104761Y-114685714D01*
|
X163104761Y-114685714D01*
|
||||||
X163152380Y-114542857D01*
|
X163152380Y-114542857D01*
|
||||||
@ -2045,10 +2271,25 @@ X144334285Y-115538095D01*
|
|||||||
X144381904Y-115680952D01*
|
X144381904Y-115680952D01*
|
||||||
X144953333Y-116252380D01*
|
X144953333Y-116252380D01*
|
||||||
X144334285Y-116252380D01*
|
X144334285Y-116252380D01*
|
||||||
X136077739Y-108599845D02*
|
X141837739Y-112659845D02*
|
||||||
X135494086Y-109089588D01*
|
X141254086Y-113149588D01*
|
||||||
X136030784Y-109136543D02*
|
X141790784Y-113196543D02*
|
||||||
X135541041Y-108552891D01*
|
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*
|
X141125633Y-110450278D02*
|
||||||
X140482845Y-109684234D01*
|
X140482845Y-109684234D01*
|
||||||
X140300454Y-109837278D01*
|
X140300454Y-109837278D01*
|
||||||
@ -2064,46 +2305,11 @@ X140943242Y-110603323D01*
|
|||||||
X141125633Y-110450278D01*
|
X141125633Y-110450278D01*
|
||||||
X140114717Y-110801239D02*
|
X140114717Y-110801239D02*
|
||||||
X139531064Y-111290982D01*
|
X139531064Y-111290982D01*
|
||||||
X142417739Y-116249845D02*
|
X136077739Y-108599845D02*
|
||||||
X141834086Y-116739588D01*
|
X135494086Y-109089588D01*
|
||||||
X141201415Y-112168194D02*
|
X136030784Y-109136543D02*
|
||||||
X140558627Y-111402150D01*
|
X135541041Y-108552891D01*
|
||||||
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*
|
|
||||||
D14*
|
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*
|
X161143836Y-114956000D02*
|
||||||
X160928164Y-114956000D01*
|
X160928164Y-114956000D01*
|
||||||
X161143836Y-115676000D02*
|
X161143836Y-115676000D02*
|
||||||
@ -2176,6 +2382,11 @@ X161943000Y-93046359D02*
|
|||||||
X161943000Y-93353641D01*
|
X161943000Y-93353641D01*
|
||||||
X161183000Y-93046359D02*
|
X161183000Y-93046359D02*
|
||||||
X161183000Y-93353641D01*
|
X161183000Y-93353641D01*
|
||||||
|
X147700000Y-91940000D02*
|
||||||
|
G75*
|
||||||
|
G03*
|
||||||
|
X147700000Y-91940000I-700000J0D01*
|
||||||
|
G01*
|
||||||
X166570000Y-100980000D02*
|
X166570000Y-100980000D02*
|
||||||
X165920000Y-100980000D01*
|
X165920000Y-100980000D01*
|
||||||
X166570000Y-104100000D02*
|
X166570000Y-104100000D02*
|
||||||
@ -2200,7 +2411,7 @@ X151510000Y-112927641D02*
|
|||||||
X151510000Y-112620359D01*
|
X151510000Y-112620359D01*
|
||||||
X150750000Y-112927641D02*
|
X150750000Y-112927641D02*
|
||||||
X150750000Y-112620359D01*
|
X150750000Y-112620359D01*
|
||||||
D13*
|
D10*
|
||||||
X142597000Y-108561000D02*
|
X142597000Y-108561000D02*
|
||||||
X145947000Y-108561000D01*
|
X145947000Y-108561000D01*
|
||||||
X142597000Y-111686000D02*
|
X142597000Y-111686000D02*
|
||||||
@ -2281,7 +2492,7 @@ X155017602Y-96598727D02*
|
|||||||
X155170105Y-96751230D01*
|
X155170105Y-96751230D01*
|
||||||
X155526719Y-96089610D02*
|
X155526719Y-96089610D02*
|
||||||
X155679222Y-96242113D01*
|
X155679222Y-96242113D01*
|
||||||
D13*
|
D10*
|
||||||
X150546000Y-119090000D02*
|
X150546000Y-119090000D02*
|
||||||
X150046000Y-119090000D01*
|
X150046000Y-119090000D01*
|
||||||
X150046000Y-116090000D02*
|
X150046000Y-116090000D02*
|
||||||
@ -2308,6 +2519,11 @@ X149249641Y-110108000D02*
|
|||||||
X148942359Y-110108000D01*
|
X148942359Y-110108000D01*
|
||||||
X149249641Y-109348000D02*
|
X149249641Y-109348000D02*
|
||||||
X148942359Y-109348000D01*
|
X148942359Y-109348000D01*
|
||||||
|
X147700000Y-98800000D02*
|
||||||
|
G75*
|
||||||
|
G03*
|
||||||
|
X147700000Y-98800000I-700000J0D01*
|
||||||
|
G01*
|
||||||
X157764000Y-95074500D02*
|
X157764000Y-95074500D02*
|
||||||
X157764000Y-94424500D01*
|
X157764000Y-94424500D01*
|
||||||
X160884000Y-95074500D02*
|
X160884000Y-95074500D02*
|
||||||
@ -2316,6 +2532,11 @@ X157764000Y-95074500D02*
|
|||||||
X157764000Y-95724500D01*
|
X157764000Y-95724500D01*
|
||||||
X160884000Y-95074500D02*
|
X160884000Y-95074500D02*
|
||||||
X160884000Y-96749500D01*
|
X160884000Y-96749500D01*
|
||||||
|
X153700000Y-98200000D02*
|
||||||
|
G75*
|
||||||
|
G03*
|
||||||
|
X153700000Y-98200000I-700000J0D01*
|
||||||
|
G01*
|
||||||
X163475641Y-103506000D02*
|
X163475641Y-103506000D02*
|
||||||
X163168359Y-103506000D01*
|
X163168359Y-103506000D01*
|
||||||
X163475641Y-104266000D02*
|
X163475641Y-104266000D02*
|
||||||
@ -2358,6 +2579,11 @@ X159031000Y-105427632D02*
|
|||||||
X159031000Y-104905128D01*
|
X159031000Y-104905128D01*
|
||||||
X160501000Y-105427632D02*
|
X160501000Y-105427632D02*
|
||||||
X160501000Y-104905128D01*
|
X160501000Y-104905128D01*
|
||||||
|
X147700000Y-94200000D02*
|
||||||
|
G75*
|
||||||
|
G03*
|
||||||
|
X147700000Y-94200000I-700000J0D01*
|
||||||
|
G01*
|
||||||
X169191000Y-102739564D02*
|
X169191000Y-102739564D02*
|
||||||
X169191000Y-102285436D01*
|
X169191000Y-102285436D01*
|
||||||
X170661000Y-102739564D02*
|
X170661000Y-102739564D02*
|
||||||
@ -2372,14 +2598,14 @@ X142390000Y-112260000D02*
|
|||||||
X144090000Y-112260000D01*
|
X144090000Y-112260000D01*
|
||||||
X144090000Y-112260000D02*
|
X144090000Y-112260000D02*
|
||||||
X144090000Y-114810000D01*
|
X144090000Y-114810000D01*
|
||||||
X135752805Y-110358610D02*
|
|
||||||
X140895106Y-116486965D01*
|
|
||||||
X140895106Y-116486965D02*
|
|
||||||
X142427195Y-115201390D01*
|
|
||||||
X142427195Y-115201390D02*
|
|
||||||
X137284894Y-109073035D01*
|
|
||||||
X137284894Y-109073035D02*
|
X137284894Y-109073035D02*
|
||||||
X135752805Y-110358610D01*
|
X135752805Y-110358610D01*
|
||||||
|
X142427195Y-115201390D02*
|
||||||
|
X137284894Y-109073035D01*
|
||||||
|
X140895106Y-116486965D02*
|
||||||
|
X142427195Y-115201390D01*
|
||||||
|
X135752805Y-110358610D02*
|
||||||
|
X140895106Y-116486965D01*
|
||||||
X158024000Y-117348000D02*
|
X158024000Y-117348000D02*
|
||||||
X158024000Y-116548000D01*
|
X158024000Y-116548000D01*
|
||||||
X154904000Y-117348000D02*
|
X154904000Y-117348000D02*
|
||||||
@ -2390,60 +2616,57 @@ X154904000Y-117348000D02*
|
|||||||
X154904000Y-115548000D01*
|
X154904000Y-115548000D01*
|
||||||
%LPC*%
|
%LPC*%
|
||||||
D16*
|
D16*
|
||||||
X153000000Y-98200000D03*
|
|
||||||
X147000000Y-94200000D03*
|
|
||||||
X147000000Y-98800000D03*
|
|
||||||
X147000000Y-91940000D03*
|
|
||||||
D17*
|
|
||||||
X161516000Y-115316000D03*
|
X161516000Y-115316000D03*
|
||||||
X160556000Y-115316000D03*
|
X160556000Y-115316000D03*
|
||||||
D18*
|
D17*
|
||||||
X159512000Y-87120000D03*
|
X159512000Y-87120000D03*
|
||||||
X159512000Y-88140000D03*
|
X159512000Y-88140000D03*
|
||||||
D19*
|
D18*
|
||||||
X167100000Y-93775000D03*
|
X167100000Y-93775000D03*
|
||||||
X167100000Y-92225000D03*
|
X167100000Y-92225000D03*
|
||||||
D20*
|
D19*
|
||||||
X163068000Y-89210000D03*
|
X163068000Y-89210000D03*
|
||||||
X163068000Y-90170000D03*
|
X163068000Y-90170000D03*
|
||||||
D21*
|
D20*
|
||||||
X157734000Y-106116380D03*
|
X157734000Y-106116380D03*
|
||||||
X157734000Y-104216380D03*
|
X157734000Y-104216380D03*
|
||||||
D22*
|
D21*
|
||||||
X162605000Y-93680000D03*
|
X162605000Y-93680000D03*
|
||||||
X162605000Y-92720000D03*
|
X162605000Y-92720000D03*
|
||||||
X163621000Y-93680000D03*
|
X163621000Y-93680000D03*
|
||||||
X163621000Y-92720000D03*
|
X163621000Y-92720000D03*
|
||||||
D23*
|
D22*
|
||||||
X169530000Y-106190000D03*
|
X169530000Y-106190000D03*
|
||||||
X164330000Y-106190000D03*
|
X164330000Y-106190000D03*
|
||||||
D24*
|
D23*
|
||||||
X160780000Y-110490000D03*
|
X160780000Y-110490000D03*
|
||||||
X161800000Y-110490000D03*
|
X161800000Y-110490000D03*
|
||||||
D25*
|
D24*
|
||||||
X145354000Y-86360000D03*
|
X145354000Y-86360000D03*
|
||||||
X146304000Y-86360000D03*
|
X146304000Y-86360000D03*
|
||||||
X147254000Y-86360000D03*
|
X147254000Y-86360000D03*
|
||||||
X147254000Y-88635000D03*
|
X147254000Y-88635000D03*
|
||||||
X145354000Y-88635000D03*
|
X145354000Y-88635000D03*
|
||||||
D24*
|
D23*
|
||||||
X161542000Y-96520000D03*
|
X161542000Y-96520000D03*
|
||||||
X162562000Y-96520000D03*
|
X162562000Y-96520000D03*
|
||||||
D20*
|
D19*
|
||||||
X159258000Y-115344000D03*
|
X159258000Y-115344000D03*
|
||||||
X159258000Y-116304000D03*
|
X159258000Y-116304000D03*
|
||||||
D26*
|
D25*
|
||||||
X157922000Y-113405500D03*
|
X157922000Y-113405500D03*
|
||||||
X156972000Y-113405500D03*
|
X156972000Y-113405500D03*
|
||||||
X156022000Y-113405500D03*
|
X156022000Y-113405500D03*
|
||||||
X156022000Y-111130500D03*
|
X156022000Y-111130500D03*
|
||||||
X157922000Y-111130500D03*
|
X157922000Y-111130500D03*
|
||||||
D22*
|
D21*
|
||||||
X159258000Y-113510000D03*
|
X159258000Y-113510000D03*
|
||||||
X159258000Y-112550000D03*
|
X159258000Y-112550000D03*
|
||||||
D18*
|
D17*
|
||||||
X161563000Y-92690000D03*
|
X161563000Y-92690000D03*
|
||||||
X161563000Y-93710000D03*
|
X161563000Y-93710000D03*
|
||||||
|
D26*
|
||||||
|
X147000000Y-91940000D03*
|
||||||
D27*
|
D27*
|
||||||
X165632500Y-103490000D03*
|
X165632500Y-103490000D03*
|
||||||
X165632500Y-101590000D03*
|
X165632500Y-101590000D03*
|
||||||
@ -2474,7 +2697,7 @@ X146472000Y-111236000D03*
|
|||||||
D31*
|
D31*
|
||||||
X160782000Y-114302000D03*
|
X160782000Y-114302000D03*
|
||||||
X160782000Y-113282000D03*
|
X160782000Y-113282000D03*
|
||||||
D18*
|
D17*
|
||||||
X143690000Y-91610000D03*
|
X143690000Y-91610000D03*
|
||||||
X143690000Y-92630000D03*
|
X143690000Y-92630000D03*
|
||||||
X144730000Y-90050000D03*
|
X144730000Y-90050000D03*
|
||||||
@ -2485,30 +2708,30 @@ X152670000Y-111250000D03*
|
|||||||
D30*
|
D30*
|
||||||
X143156400Y-107746800D03*
|
X143156400Y-107746800D03*
|
||||||
X142136400Y-107746800D03*
|
X142136400Y-107746800D03*
|
||||||
D18*
|
D17*
|
||||||
X154686000Y-112774000D03*
|
X154686000Y-112774000D03*
|
||||||
X154686000Y-113794000D03*
|
X154686000Y-113794000D03*
|
||||||
D33*
|
D33*
|
||||||
X148590000Y-112334000D03*
|
X148590000Y-112334000D03*
|
||||||
X148590000Y-114234000D03*
|
X148590000Y-114234000D03*
|
||||||
D22*
|
D21*
|
||||||
X166370000Y-112748000D03*
|
X166370000Y-112748000D03*
|
||||||
X166370000Y-111788000D03*
|
X166370000Y-111788000D03*
|
||||||
D17*
|
D16*
|
||||||
X161262000Y-117348000D03*
|
X161262000Y-117348000D03*
|
||||||
X160302000Y-117348000D03*
|
X160302000Y-117348000D03*
|
||||||
D34*
|
D34*
|
||||||
X164084000Y-114614000D03*
|
X164084000Y-114614000D03*
|
||||||
X164084000Y-109414000D03*
|
X164084000Y-109414000D03*
|
||||||
D16*
|
D26*
|
||||||
X149250400Y-105664000D03*
|
X149250400Y-105664000D03*
|
||||||
D31*
|
D31*
|
||||||
X164637000Y-93710000D03*
|
X164637000Y-93710000D03*
|
||||||
X164637000Y-92690000D03*
|
X164637000Y-92690000D03*
|
||||||
D20*
|
D19*
|
||||||
X162052000Y-89210000D03*
|
X162052000Y-89210000D03*
|
||||||
X162052000Y-90170000D03*
|
X162052000Y-90170000D03*
|
||||||
D18*
|
D17*
|
||||||
X166370000Y-108710000D03*
|
X166370000Y-108710000D03*
|
||||||
X166370000Y-109730000D03*
|
X166370000Y-109730000D03*
|
||||||
D35*
|
D35*
|
||||||
@ -2520,15 +2743,19 @@ X152746000Y-118985000D03*
|
|||||||
D37*
|
D37*
|
||||||
X150246000Y-115210000D03*
|
X150246000Y-115210000D03*
|
||||||
X154046000Y-115210000D03*
|
X154046000Y-115210000D03*
|
||||||
D16*
|
D26*
|
||||||
X155041600Y-105664000D03*
|
X155041600Y-105664000D03*
|
||||||
D30*
|
D30*
|
||||||
X149606000Y-109728000D03*
|
X149606000Y-109728000D03*
|
||||||
X148586000Y-109728000D03*
|
X148586000Y-109728000D03*
|
||||||
|
D26*
|
||||||
|
X147000000Y-98800000D03*
|
||||||
D38*
|
D38*
|
||||||
X160274000Y-96012000D03*
|
X160274000Y-96012000D03*
|
||||||
X158374000Y-96012000D03*
|
X158374000Y-96012000D03*
|
||||||
X159324000Y-94137000D03*
|
X159324000Y-94137000D03*
|
||||||
|
D26*
|
||||||
|
X153000000Y-98200000D03*
|
||||||
D30*
|
D30*
|
||||||
X163832000Y-103886000D03*
|
X163832000Y-103886000D03*
|
||||||
X162812000Y-103886000D03*
|
X162812000Y-103886000D03*
|
||||||
@ -2538,27 +2765,29 @@ X161800000Y-87120000D03*
|
|||||||
D39*
|
D39*
|
||||||
X155222000Y-102616000D03*
|
X155222000Y-102616000D03*
|
||||||
X156182000Y-102616000D03*
|
X156182000Y-102616000D03*
|
||||||
D22*
|
D21*
|
||||||
X161290000Y-106018000D03*
|
X161290000Y-106018000D03*
|
||||||
X161290000Y-105058000D03*
|
X161290000Y-105058000D03*
|
||||||
D20*
|
D19*
|
||||||
X159258000Y-110518000D03*
|
X159258000Y-110518000D03*
|
||||||
X159258000Y-111478000D03*
|
X159258000Y-111478000D03*
|
||||||
D40*
|
D40*
|
||||||
X139860000Y-107160000D03*
|
X139860000Y-107160000D03*
|
||||||
X139860000Y-109260000D03*
|
X139860000Y-109260000D03*
|
||||||
D20*
|
D19*
|
||||||
X150114000Y-112324000D03*
|
X150114000Y-112324000D03*
|
||||||
X150114000Y-113284000D03*
|
X150114000Y-113284000D03*
|
||||||
D30*
|
D30*
|
||||||
X149606000Y-110744000D03*
|
X149606000Y-110744000D03*
|
||||||
X148586000Y-110744000D03*
|
X148586000Y-110744000D03*
|
||||||
D18*
|
D17*
|
||||||
X164100000Y-89190000D03*
|
X164100000Y-89190000D03*
|
||||||
X164100000Y-90210000D03*
|
X164100000Y-90210000D03*
|
||||||
D21*
|
D20*
|
||||||
X159766000Y-106116380D03*
|
X159766000Y-106116380D03*
|
||||||
X159766000Y-104216380D03*
|
X159766000Y-104216380D03*
|
||||||
|
D26*
|
||||||
|
X147000000Y-94200000D03*
|
||||||
D41*
|
D41*
|
||||||
X169926000Y-103425000D03*
|
X169926000Y-103425000D03*
|
||||||
X169926000Y-101600000D03*
|
X169926000Y-101600000D03*
|
||||||
@ -2568,12 +2797,12 @@ X164050000Y-101780000D03*
|
|||||||
D40*
|
D40*
|
||||||
X143240000Y-112710000D03*
|
X143240000Y-112710000D03*
|
||||||
X143240000Y-114810000D03*
|
X143240000Y-114810000D03*
|
||||||
D16*
|
D26*
|
||||||
X140700183Y-114698941D03*
|
|
||||||
X139626728Y-113419647D03*
|
|
||||||
X138553272Y-112140353D03*
|
|
||||||
X137479817Y-110861059D03*
|
X137479817Y-110861059D03*
|
||||||
D25*
|
X138553272Y-112140353D03*
|
||||||
|
X139626728Y-113419647D03*
|
||||||
|
X140700183Y-114698941D03*
|
||||||
|
D24*
|
||||||
X155514000Y-116210500D03*
|
X155514000Y-116210500D03*
|
||||||
X156464000Y-116210500D03*
|
X156464000Y-116210500D03*
|
||||||
X157414000Y-116210500D03*
|
X157414000Y-116210500D03*
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Profile,NP*
|
G04 #@! TF.FileFunction,Profile,NP*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Soldermask,Top*
|
G04 #@! TF.FileFunction,Soldermask,Top*
|
||||||
G04 #@! TF.FilePolarity,Negative*
|
G04 #@! TF.FilePolarity,Negative*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Paste,Top*
|
G04 #@! TF.FileFunction,Paste,Top*
|
||||||
G04 #@! TF.FilePolarity,Positive*
|
G04 #@! TF.FilePolarity,Positive*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*
|
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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*
|
||||||
G04 #@! TF.SameCoordinates,Original*
|
G04 #@! TF.SameCoordinates,Original*
|
||||||
G04 #@! TF.FileFunction,Legend,Top*
|
G04 #@! TF.FileFunction,Legend,Top*
|
||||||
G04 #@! TF.FilePolarity,Positive*
|
G04 #@! TF.FilePolarity,Positive*
|
||||||
%FSLAX46Y46*%
|
%FSLAX46Y46*%
|
||||||
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*%
|
%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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*%
|
||||||
%TF.SameCoordinates,Original*%
|
%TF.SameCoordinates,Original*%
|
||||||
%TF.FileFunction,Drillmap*%
|
%TF.FileFunction,Drillmap*%
|
||||||
%TF.FilePolarity,Positive*%
|
%TF.FilePolarity,Positive*%
|
||||||
%FSLAX45Y45*%
|
%FSLAX45Y45*%
|
||||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
|
@ -71,7 +71,7 @@ endobj
|
|||||||
10 0 obj
|
10 0 obj
|
||||||
<<
|
<<
|
||||||
/Producer (KiCad PDF)
|
/Producer (KiCad PDF)
|
||||||
/CreationDate (D:20230226115323)
|
/CreationDate (D:20230304081832)
|
||||||
/Creator (PCBNEW)
|
/Creator (PCBNEW)
|
||||||
/Title (W800_Smart_Watch-NPTH-drl_map.pdf)
|
/Title (W800_Smart_Watch-NPTH-drl_map.pdf)
|
||||||
>>
|
>>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
M48
|
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}
|
; 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.GenerationSoftware,Kicad,Pcbnew,(6.0.10)
|
||||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||||
FMAT,2
|
FMAT,2
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
%TF.GenerationSoftware,KiCad,Pcbnew,(6.0.10)*%
|
%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.ProjectId,W800_Smart_Watch,57383030-5f53-46d6-9172-745f57617463,rev?*%
|
||||||
%TF.SameCoordinates,Original*%
|
%TF.SameCoordinates,Original*%
|
||||||
%TF.FileFunction,Drillmap*%
|
%TF.FileFunction,Drillmap*%
|
||||||
%TF.FilePolarity,Positive*%
|
%TF.FilePolarity,Positive*%
|
||||||
%FSLAX45Y45*%
|
%FSLAX45Y45*%
|
||||||
G04 Gerber Fmt 4.5, Leading zero omitted, Abs format (unit mm)*
|
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*%
|
%MOMM*%
|
||||||
%LPD*%
|
%LPD*%
|
||||||
G01*
|
G01*
|
||||||
@ -243,6 +243,10 @@ X14435000Y-10130000D02*
|
|||||||
X14465000Y-10160000D01*
|
X14465000Y-10160000D01*
|
||||||
X14465000Y-10130000D02*
|
X14465000Y-10130000D02*
|
||||||
X14435000Y-10160000D01*
|
X14435000Y-10160000D01*
|
||||||
|
X14458000Y-9287000D02*
|
||||||
|
X14488000Y-9317000D01*
|
||||||
|
X14488000Y-9287000D02*
|
||||||
|
X14458000Y-9317000D01*
|
||||||
X14463000Y-10018000D02*
|
X14463000Y-10018000D02*
|
||||||
X14493000Y-10048000D01*
|
X14493000Y-10048000D01*
|
||||||
X14493000Y-10018000D02*
|
X14493000Y-10018000D02*
|
||||||
@ -255,22 +259,22 @@ X14463000Y-10589500D02*
|
|||||||
X14493000Y-10619500D01*
|
X14493000Y-10619500D01*
|
||||||
X14493000Y-10589500D02*
|
X14493000Y-10589500D02*
|
||||||
X14463000Y-10619500D01*
|
X14463000Y-10619500D01*
|
||||||
X14469000Y-9254000D02*
|
X14464000Y-9165000D02*
|
||||||
X14499000Y-9284000D01*
|
X14494000Y-9195000D01*
|
||||||
X14499000Y-9254000D02*
|
X14494000Y-9165000D02*
|
||||||
X14469000Y-9284000D01*
|
X14464000Y-9195000D01*
|
||||||
X14483000Y-10374000D02*
|
X14483000Y-10374000D02*
|
||||||
X14513000Y-10404000D01*
|
X14513000Y-10404000D01*
|
||||||
X14513000Y-10374000D02*
|
X14513000Y-10374000D02*
|
||||||
X14483000Y-10404000D01*
|
X14483000Y-10404000D01*
|
||||||
X14488400Y-9179800D02*
|
|
||||||
X14518400Y-9209800D01*
|
|
||||||
X14518400Y-9179800D02*
|
|
||||||
X14488400Y-9209800D01*
|
|
||||||
X14513800Y-10957800D02*
|
X14513800Y-10957800D02*
|
||||||
X14543800Y-10987800D01*
|
X14543800Y-10987800D01*
|
||||||
X14543800Y-10957800D02*
|
X14543800Y-10957800D02*
|
||||||
X14513800Y-10987800D01*
|
X14513800Y-10987800D01*
|
||||||
|
X14517000Y-8426000D02*
|
||||||
|
X14547000Y-8456000D01*
|
||||||
|
X14547000Y-8426000D02*
|
||||||
|
X14517000Y-8456000D01*
|
||||||
X14526500Y-9637000D02*
|
X14526500Y-9637000D02*
|
||||||
X14556500Y-9667000D01*
|
X14556500Y-9667000D01*
|
||||||
X14556500Y-9637000D02*
|
X14556500Y-9637000D02*
|
||||||
@ -299,6 +303,10 @@ X14555000Y-9373000D02*
|
|||||||
X14585000Y-9403000D01*
|
X14585000Y-9403000D01*
|
||||||
X14585000Y-9373000D02*
|
X14585000Y-9373000D02*
|
||||||
X14555000Y-9403000D01*
|
X14555000Y-9403000D01*
|
||||||
|
X14563000Y-9252000D02*
|
||||||
|
X14593000Y-9282000D01*
|
||||||
|
X14593000Y-9252000D02*
|
||||||
|
X14563000Y-9282000D01*
|
||||||
X14564000Y-10379000D02*
|
X14564000Y-10379000D02*
|
||||||
X14594000Y-10409000D01*
|
X14594000Y-10409000D01*
|
||||||
X14594000Y-10379000D02*
|
X14594000Y-10379000D02*
|
||||||
@ -387,6 +395,10 @@ X14718000Y-10795000D02*
|
|||||||
X14748000Y-10825000D01*
|
X14748000Y-10825000D01*
|
||||||
X14748000Y-10795000D02*
|
X14748000Y-10795000D02*
|
||||||
X14718000Y-10825000D01*
|
X14718000Y-10825000D01*
|
||||||
|
X14741000Y-9584000D02*
|
||||||
|
X14771000Y-9614000D01*
|
||||||
|
X14771000Y-9584000D02*
|
||||||
|
X14741000Y-9614000D01*
|
||||||
X14746000Y-10389000D02*
|
X14746000Y-10389000D02*
|
||||||
X14776000Y-10419000D01*
|
X14776000Y-10419000D01*
|
||||||
X14776000Y-10389000D02*
|
X14776000Y-10389000D02*
|
||||||
@ -395,10 +407,6 @@ X14755100Y-8455900D02*
|
|||||||
X14785100Y-8485900D01*
|
X14785100Y-8485900D01*
|
||||||
X14785100Y-8455900D02*
|
X14785100Y-8455900D02*
|
||||||
X14755100Y-8485900D01*
|
X14755100Y-8485900D01*
|
||||||
X14767000Y-9578000D02*
|
|
||||||
X14797000Y-9608000D01*
|
|
||||||
X14797000Y-9578000D02*
|
|
||||||
X14767000Y-9608000D01*
|
|
||||||
X14767800Y-10932400D02*
|
X14767800Y-10932400D02*
|
||||||
X14797800Y-10962400D01*
|
X14797800Y-10962400D01*
|
||||||
X14797800Y-10932400D02*
|
X14797800Y-10932400D02*
|
||||||
@ -435,6 +443,10 @@ X14793200Y-10157700D02*
|
|||||||
X14823200Y-10187700D01*
|
X14823200Y-10187700D01*
|
||||||
X14823200Y-10157700D02*
|
X14823200Y-10157700D02*
|
||||||
X14793200Y-10187700D01*
|
X14793200Y-10187700D01*
|
||||||
|
X14816000Y-9646000D02*
|
||||||
|
X14846000Y-9676000D01*
|
||||||
|
X14846000Y-9646000D02*
|
||||||
|
X14816000Y-9676000D01*
|
||||||
X14825000Y-10389000D02*
|
X14825000Y-10389000D02*
|
||||||
X14855000Y-10419000D01*
|
X14855000Y-10419000D01*
|
||||||
X14855000Y-10389000D02*
|
X14855000Y-10389000D02*
|
||||||
@ -523,10 +535,6 @@ X15064000Y-8679000D02*
|
|||||||
X15094000Y-8709000D01*
|
X15094000Y-8709000D01*
|
||||||
X15094000Y-8679000D02*
|
X15094000Y-8679000D02*
|
||||||
X15064000Y-8709000D01*
|
X15064000Y-8709000D01*
|
||||||
X15072600Y-9357600D02*
|
|
||||||
X15102600Y-9387600D01*
|
|
||||||
X15102600Y-9357600D02*
|
|
||||||
X15072600Y-9387600D01*
|
|
||||||
X15072600Y-10856200D02*
|
X15072600Y-10856200D02*
|
||||||
X15102600Y-10886200D01*
|
X15102600Y-10886200D01*
|
||||||
X15102600Y-10856200D02*
|
X15102600Y-10856200D02*
|
||||||
@ -559,6 +567,10 @@ X15111000Y-10171000D02*
|
|||||||
X15141000Y-10201000D01*
|
X15141000Y-10201000D01*
|
||||||
X15141000Y-10171000D02*
|
X15141000Y-10171000D02*
|
||||||
X15111000Y-10201000D01*
|
X15111000Y-10201000D01*
|
||||||
|
X15122000Y-9360000D02*
|
||||||
|
X15152000Y-9390000D01*
|
||||||
|
X15152000Y-9360000D02*
|
||||||
|
X15122000Y-9390000D01*
|
||||||
X15143050Y-9052800D02*
|
X15143050Y-9052800D02*
|
||||||
X15173050Y-9082800D01*
|
X15173050Y-9082800D01*
|
||||||
X15173050Y-9052800D02*
|
X15173050Y-9052800D02*
|
||||||
@ -855,6 +867,10 @@ X15733000Y-11465800D02*
|
|||||||
X15763000Y-11495800D01*
|
X15763000Y-11495800D01*
|
||||||
X15763000Y-11465800D02*
|
X15763000Y-11465800D02*
|
||||||
X15733000Y-11495800D01*
|
X15733000Y-11495800D01*
|
||||||
|
X15752000Y-8381000D02*
|
||||||
|
X15782000Y-8411000D01*
|
||||||
|
X15782000Y-8381000D02*
|
||||||
|
X15752000Y-8411000D01*
|
||||||
X15758400Y-9814800D02*
|
X15758400Y-9814800D02*
|
||||||
X15788400Y-9844800D01*
|
X15788400Y-9844800D01*
|
||||||
X15788400Y-9814800D02*
|
X15788400Y-9814800D02*
|
||||||
@ -867,10 +883,6 @@ X15783800Y-9332200D02*
|
|||||||
X15813800Y-9362200D01*
|
X15813800Y-9362200D01*
|
||||||
X15813800Y-9332200D02*
|
X15813800Y-9332200D02*
|
||||||
X15783800Y-9362200D01*
|
X15783800Y-9362200D01*
|
||||||
X15800000Y-8383000D02*
|
|
||||||
X15830000Y-8413000D01*
|
|
||||||
X15830000Y-8383000D02*
|
|
||||||
X15800000Y-8413000D01*
|
|
||||||
X15809200Y-9713200D02*
|
X15809200Y-9713200D02*
|
||||||
X15839200Y-9743200D01*
|
X15839200Y-9743200D01*
|
||||||
X15839200Y-9713200D02*
|
X15839200Y-9713200D02*
|
||||||
@ -1239,6 +1251,10 @@ X16750450Y-9100000D02*
|
|||||||
X16780450Y-9130000D01*
|
X16780450Y-9130000D01*
|
||||||
X16780450Y-9100000D02*
|
X16780450Y-9100000D02*
|
||||||
X16750450Y-9130000D01*
|
X16750450Y-9130000D01*
|
||||||
|
X16755000Y-9981000D02*
|
||||||
|
X16785000Y-10011000D01*
|
||||||
|
X16785000Y-9981000D02*
|
||||||
|
X16755000Y-10011000D01*
|
||||||
X16790150Y-10932400D02*
|
X16790150Y-10932400D02*
|
||||||
X16820150Y-10962400D01*
|
X16820150Y-10962400D01*
|
||||||
X16820150Y-10932400D02*
|
X16820150Y-10932400D02*
|
||||||
@ -1725,27 +1741,11 @@ X17278333Y-12652619D01*
|
|||||||
X17268810Y-12681190D01*
|
X17268810Y-12681190D01*
|
||||||
X17154524Y-12795476D01*
|
X17154524Y-12795476D01*
|
||||||
X17278333Y-12795476D01*
|
X17278333Y-12795476D01*
|
||||||
X17402143Y-12595476D02*
|
X17449762Y-12662143D02*
|
||||||
X17421190Y-12595476D01*
|
X17449762Y-12795476D01*
|
||||||
X17440238Y-12605000D01*
|
X17402143Y-12585952D02*
|
||||||
X17449762Y-12614524D01*
|
X17354524Y-12728809D01*
|
||||||
X17459286Y-12633571D01*
|
X17478333Y-12728809D01*
|
||||||
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*
|
|
||||||
X17706905Y-12795476D02*
|
X17706905Y-12795476D02*
|
||||||
X17706905Y-12595476D01*
|
X17706905Y-12595476D01*
|
||||||
X17792619Y-12795476D02*
|
X17792619Y-12795476D02*
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
M48
|
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}
|
; 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.GenerationSoftware,Kicad,Pcbnew,(6.0.10)
|
||||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||||
FMAT,2
|
FMAT,2
|
||||||
@ -69,13 +69,14 @@ X144.145Y-98.425
|
|||||||
X144.23Y-108.42
|
X144.23Y-108.42
|
||||||
X144.272Y-110.896
|
X144.272Y-110.896
|
||||||
X144.5Y-101.45
|
X144.5Y-101.45
|
||||||
|
X144.73Y-93.02
|
||||||
X144.78Y-100.33
|
X144.78Y-100.33
|
||||||
X144.78Y-104.775
|
X144.78Y-104.775
|
||||||
X144.78Y-106.045
|
X144.78Y-106.045
|
||||||
X144.84Y-92.69
|
X144.79Y-91.8
|
||||||
X144.98Y-103.89
|
X144.98Y-103.89
|
||||||
X145.034Y-91.948
|
|
||||||
X145.288Y-109.728
|
X145.288Y-109.728
|
||||||
|
X145.32Y-84.41
|
||||||
X145.415Y-96.52
|
X145.415Y-96.52
|
||||||
X145.415Y-97.79
|
X145.415Y-97.79
|
||||||
X145.415Y-99.06
|
X145.415Y-99.06
|
||||||
@ -83,6 +84,7 @@ X145.415Y-105.41
|
|||||||
X145.542Y-101.473
|
X145.542Y-101.473
|
||||||
X145.669Y-118.364
|
X145.669Y-118.364
|
||||||
X145.7Y-93.88
|
X145.7Y-93.88
|
||||||
|
X145.78Y-92.67
|
||||||
X145.79Y-103.94
|
X145.79Y-103.94
|
||||||
X145.879Y-90.192
|
X145.879Y-90.192
|
||||||
X146.05Y-100.33
|
X146.05Y-100.33
|
||||||
@ -105,9 +107,9 @@ X147.193Y-117.83
|
|||||||
X147.32Y-101.67
|
X147.32Y-101.67
|
||||||
X147.32Y-106.68
|
X147.32Y-106.68
|
||||||
X147.33Y-108.1
|
X147.33Y-108.1
|
||||||
|
X147.56Y-95.99
|
||||||
X147.61Y-104.04
|
X147.61Y-104.04
|
||||||
X147.701Y-84.709
|
X147.701Y-84.709
|
||||||
X147.82Y-95.93
|
|
||||||
X147.828Y-109.474
|
X147.828Y-109.474
|
||||||
X147.828Y-119.38
|
X147.828Y-119.38
|
||||||
X147.955Y-99.695
|
X147.955Y-99.695
|
||||||
@ -117,6 +119,7 @@ X148.0Y-118.618
|
|||||||
X148.005Y-84.101
|
X148.005Y-84.101
|
||||||
X148.082Y-90.932
|
X148.082Y-90.932
|
||||||
X148.082Y-101.727
|
X148.082Y-101.727
|
||||||
|
X148.31Y-96.61
|
||||||
X148.4Y-104.04
|
X148.4Y-104.04
|
||||||
X148.463Y-89.916
|
X148.463Y-89.916
|
||||||
X148.54Y-93.4
|
X148.54Y-93.4
|
||||||
@ -139,7 +142,6 @@ X150.368Y-118.11
|
|||||||
X150.41Y-101.59
|
X150.41Y-101.59
|
||||||
X150.724Y-106.782
|
X150.724Y-106.782
|
||||||
X150.79Y-86.94
|
X150.79Y-86.94
|
||||||
X150.876Y-93.726
|
|
||||||
X150.876Y-108.712
|
X150.876Y-108.712
|
||||||
X150.876Y-109.474
|
X150.876Y-109.474
|
||||||
X150.879Y-110.179
|
X150.879Y-110.179
|
||||||
@ -148,6 +150,7 @@ X150.927Y-106.07
|
|||||||
X150.99Y-86.03
|
X150.99Y-86.03
|
||||||
X151.003Y-113.919
|
X151.003Y-113.919
|
||||||
X151.26Y-101.86
|
X151.26Y-101.86
|
||||||
|
X151.37Y-93.75
|
||||||
X151.581Y-90.678
|
X151.581Y-90.678
|
||||||
X151.638Y-110.998
|
X151.638Y-110.998
|
||||||
X151.76Y-87.729
|
X151.76Y-87.729
|
||||||
@ -222,10 +225,10 @@ X157.131Y-109.633
|
|||||||
X157.2Y-95.7
|
X157.2Y-95.7
|
||||||
X157.275Y-107.687
|
X157.275Y-107.687
|
||||||
X157.48Y-114.808
|
X157.48Y-114.808
|
||||||
|
X157.67Y-83.96
|
||||||
X157.734Y-98.298
|
X157.734Y-98.298
|
||||||
X157.861Y-112.268
|
X157.861Y-112.268
|
||||||
X157.988Y-93.472
|
X157.988Y-93.472
|
||||||
X158.15Y-83.98
|
|
||||||
X158.242Y-97.282
|
X158.242Y-97.282
|
||||||
X158.27Y-109.72
|
X158.27Y-109.72
|
||||||
X158.339Y-89.505
|
X158.339Y-89.505
|
||||||
@ -318,6 +321,7 @@ X167.4Y-103.47
|
|||||||
X167.589Y-105.258
|
X167.589Y-105.258
|
||||||
X167.589Y-106.883
|
X167.589Y-106.883
|
||||||
X167.654Y-91.15
|
X167.654Y-91.15
|
||||||
|
X167.7Y-99.96
|
||||||
X168.052Y-109.474
|
X168.052Y-109.474
|
||||||
X168.092Y-94.408
|
X168.092Y-94.408
|
||||||
X168.2Y-92.2
|
X168.2Y-92.2
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"board": {
|
"board": {
|
||||||
"active_layer": 0,
|
"active_layer": 36,
|
||||||
"active_layer_preset": "",
|
"active_layer_preset": "",
|
||||||
"auto_track_width": true,
|
"auto_track_width": true,
|
||||||
"hidden_nets": [],
|
"hidden_nets": [],
|
||||||
@ -62,7 +62,7 @@
|
|||||||
35,
|
35,
|
||||||
36
|
36
|
||||||
],
|
],
|
||||||
"visible_layers": "000d3fc_ffffffff",
|
"visible_layers": "000d37c_ffffffff",
|
||||||
"zone_display_mode": 0
|
"zone_display_mode": 0
|
||||||
},
|
},
|
||||||
"meta": {
|
"meta": {
|
||||||
|
@ -45,7 +45,7 @@
|
|||||||
"silk_text_upright": false,
|
"silk_text_upright": false,
|
||||||
"zones": {
|
"zones": {
|
||||||
"45_degree_only": false,
|
"45_degree_only": false,
|
||||||
"min_clearance": 0.3
|
"min_clearance": 0.0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"diff_pair_dimensions": [
|
"diff_pair_dimensions": [
|
||||||
|
@ -2365,7 +2365,6 @@
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
(junction (at 165.1 29.21) (diameter 0) (color 0 0 0 0)
|
(junction (at 165.1 29.21) (diameter 0) (color 0 0 0 0)
|
||||||
(uuid 0052d37e-e6de-4b27-bd9a-838024e8b8c2)
|
(uuid 0052d37e-e6de-4b27-bd9a-838024e8b8c2)
|
||||||
)
|
)
|
||||||
@ -4621,7 +4620,7 @@
|
|||||||
(property "Reference" "D1" (id 0) (at 20.32 137.16 90)
|
(property "Reference" "D1" (id 0) (at 20.32 137.16 90)
|
||||||
(effects (font (size 1.27 1.27)) (justify right))
|
(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))
|
(effects (font (size 1.27 1.27)) (justify right))
|
||||||
)
|
)
|
||||||
(property "Footprint" "ICs:D_SOD-323" (id 2) (at 25.4 138.43 0)
|
(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/libuser$(LIB_EXT) \
|
||||||
$(TOP_DIR)/app/app_drivers/libappdrivers$(LIB_EXT) \
|
$(TOP_DIR)/app/app_drivers/libappdrivers$(LIB_EXT) \
|
||||||
$(TOP_DIR)/app/persistency/libpersistency$(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)
|
$(TOP_DIR)/lvgl/liblvgl$(LIB_EXT)
|
||||||
|
|
||||||
ifeq ($(USE_LIB), 0)
|
ifeq ($(USE_LIB), 0)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef APPCONFIG_H
|
#ifndef APP_CONFIG_H
|
||||||
#define APPCONFIG_H
|
#define APP_CONFIG_H
|
||||||
|
|
||||||
#include "wm_gpio.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 :
|
* @brief Define which kind of logs to display :
|
||||||
*
|
*
|
||||||
@ -31,6 +43,7 @@
|
|||||||
* @brief i2c
|
* @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_SCL WM_IO_PA_01
|
||||||
#define I2C_SDA WM_IO_PB_19
|
#define I2C_SDA WM_IO_PB_19
|
||||||
|
|
||||||
@ -66,6 +79,13 @@
|
|||||||
*/
|
*/
|
||||||
#define BATTERY_VOLTAGE_DIVIDER_ENABLE WM_IO_PB_05
|
#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
|
* @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_ENABLE WM_IO_PB_00
|
||||||
#define VIBRATION_MOTOR_PWM_CHANNEL (0)
|
#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, 0x8E, 0xFF,
|
||||||
0x02, 0, 0x8F, 0xFF,
|
0x02, 0, 0x8F, 0xFF,
|
||||||
0x03, 0, 0xB6, 0x00, 0x00,
|
0x03, 0, 0xB6, 0x00, 0x00,
|
||||||
|
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||||
0x02, 0, 0x36, 0x88,
|
0x02, 0, 0x36, 0x88,
|
||||||
|
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||||
|
0x02, 0, 0x36, 0x48,
|
||||||
|
#endif
|
||||||
0x02, 0, 0x3A, 0x55,
|
0x02, 0, 0x3A, 0x55,
|
||||||
0x05, 0, 0x90, 0x08, 0x08, 0x08, 0x08,
|
0x05, 0, 0x90, 0x08, 0x08, 0x08, 0x08,
|
||||||
0x02, 0, 0xBD, 0x06,
|
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_cfg(LCDConfig->LCDPWMBacklightPin, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||||
tls_gpio_write(LCDConfig->LCDPWMBacklightPin, 0);
|
tls_gpio_write(LCDConfig->LCDPWMBacklightPin, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lcd_hardware_reset(LCDConfig_t * const LCDConfig)
|
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);
|
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;
|
if(!LCDConfig) return;
|
||||||
|
|
||||||
@ -434,6 +437,7 @@ void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_t orientation)
|
|||||||
|
|
||||||
switch(orientation)
|
switch(orientation)
|
||||||
{
|
{
|
||||||
|
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||||
case LCD_ORIENTATION_90:
|
case LCD_ORIENTATION_90:
|
||||||
mmc_sdio_driver_write_one(0xE8);
|
mmc_sdio_driver_write_one(0xE8);
|
||||||
break;
|
break;
|
||||||
@ -445,6 +449,19 @@ void lcd_orientation(LCDConfig_t *const LCDConfig, LCDOrientation_t orientation)
|
|||||||
break;
|
break;
|
||||||
default: //Is default orientation eg : 0
|
default: //Is default orientation eg : 0
|
||||||
mmc_sdio_driver_write_one(0x88);
|
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);
|
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)
|
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);
|
tls_gpio_write(LCDConfig->LCDDataCommandPin, dataCommand);
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ typedef enum LCDOrientation
|
|||||||
LCD_ORIENTATION_90,
|
LCD_ORIENTATION_90,
|
||||||
LCD_ORIENTATION_180,
|
LCD_ORIENTATION_180,
|
||||||
LCD_ORIENTATION_270,
|
LCD_ORIENTATION_270,
|
||||||
} LCDOrientation_t;
|
} LCDOrientation_e;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
@ -62,7 +62,7 @@ typedef struct LCDConfig
|
|||||||
enum tls_io_name LCDResetPin;
|
enum tls_io_name LCDResetPin;
|
||||||
DrawFinishedCb_t drawFinishedCb;
|
DrawFinishedCb_t drawFinishedCb;
|
||||||
void *cbArg;
|
void *cbArg;
|
||||||
LCDOrientation_t LCDOrientation;
|
LCDOrientation_e LCDOrientation;
|
||||||
} LCDConfig_t;
|
} LCDConfig_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -139,8 +139,12 @@ void lcd_sleep(LCDConfig_t * const LCDConfig, bool state);
|
|||||||
* @brief Sets the LCD orientation.
|
* @brief Sets the LCD orientation.
|
||||||
*
|
*
|
||||||
* @param LCDConfig a pointer to a user allocated LCDConfig_t structure
|
* @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
|
#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)
|
void mmc_sdio_driver_write_one(uint8_t data)
|
||||||
{
|
{
|
||||||
/* Wait for MMC device to be ready to send the 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->BUF_CTL = 0x4820;
|
||||||
SDIO_HOST->DATA_BUF[0] = (uint32_t)data;
|
SDIO_HOST->DATA_BUF[0] = (uint32_t)data;
|
||||||
@ -107,19 +107,25 @@ void mmc_sdio_driver_write_one(uint8_t data)
|
|||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
SDIO_HOST->MMC_IO = 0x01;
|
SDIO_HOST->MMC_IO = 0x01;
|
||||||
/* Wait for MMC device to be done sending the data */
|
/* 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)
|
void mmc_sdio_driver_write(const uint8_t *data, uint16_t dataLengthInBytes)
|
||||||
{
|
{
|
||||||
/* Wait for MMC device to be ready to send the 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->BUF_CTL = 0x4820;
|
||||||
memcpy((void *)SDIO_HOST->DATA_BUF, (void *)data, dataLengthInBytes);
|
memcpy((void *)SDIO_HOST->DATA_BUF, (void *)data, dataLengthInBytes);
|
||||||
SDIO_HOST->MMC_BYTECNTL = dataLengthInBytes;
|
SDIO_HOST->MMC_BYTECNTL = dataLengthInBytes;
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
SDIO_HOST->MMC_IO = 0x01;
|
SDIO_HOST->MMC_IO = 0x01;
|
||||||
|
|
||||||
/* Wait for MMC device to be done sending the data */
|
/* 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);
|
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.
|
* @param dataLengthInBytes the size in bytes of the data to transfer.
|
||||||
* Maximum length is 65535 bytes.
|
* 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
|
* @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);
|
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
|
#endif //MMC_SDIO_H
|
@ -6,19 +6,107 @@
|
|||||||
#include "wm_timer.h"
|
#include "wm_timer.h"
|
||||||
#include "wm_pwm.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;
|
static int8_t _adc_offset = 0;
|
||||||
|
|
||||||
|
/* Vibration motor timer */
|
||||||
static uint8_t _vibration_motor_timer_id = WM_TIMER_ID_INVALID;
|
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)
|
static void vibration_motor_timer_irq_cb(void *p)
|
||||||
{
|
{
|
||||||
(void)p;
|
(void)p;
|
||||||
tls_pwm_stop(VIBRATION_MOTOR_PWM_CHANNEL);
|
tls_pwm_stop(VIBRATION_MOTOR_PWM_CHANNEL);
|
||||||
tls_gpio_cfg(VIBRATION_MOTOR_ENABLE, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
tls_gpio_cfg(VIBRATION_MOTOR_ENABLE, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||||
tls_gpio_write(VIBRATION_MOTOR_ENABLE, 0);
|
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)
|
static void watch_peripherals_io_init(void)
|
||||||
{
|
{
|
||||||
/* We initialize the ADC input as well as the gpio used to enabled the voltage divider bridge */
|
/* 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 */
|
/* 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_cfg(VIBRATION_MOTOR_ENABLE, WM_GPIO_DIR_OUTPUT, WM_GPIO_ATTR_FLOATING);
|
||||||
tls_gpio_write(VIBRATION_MOTOR_ENABLE, 0);
|
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)
|
void watch_peripherals_init(int8_t adcOffset)
|
||||||
@ -39,7 +157,7 @@ void watch_peripherals_init(int8_t adcOffset)
|
|||||||
/* Prevent multiple init call !*/
|
/* Prevent multiple init call !*/
|
||||||
if(WM_TIMER_ID_INVALID == _vibration_motor_timer_id)
|
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 =
|
struct tls_timer_cfg vibration_motor_timer_cfg =
|
||||||
{
|
{
|
||||||
.arg = NULL,
|
.arg = NULL,
|
||||||
@ -51,11 +169,35 @@ void watch_peripherals_init(int8_t adcOffset)
|
|||||||
_vibration_motor_timer_id = tls_timer_create(&vibration_motor_timer_cfg);
|
_vibration_motor_timer_id = tls_timer_create(&vibration_motor_timer_cfg);
|
||||||
|
|
||||||
if(WM_TIMER_ID_INVALID == _vibration_motor_timer_id)
|
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);
|
tls_gpio_write(BATTERY_VOLTAGE_DIVIDER_ENABLE, 1);
|
||||||
int batteryVoltage = adc_get_inputVolt(BATTERY_VOLTAGE_ADC_CHANNEL, 1, 1) * 2 + _adc_offset;
|
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)
|
switch (unit)
|
||||||
{
|
{
|
||||||
case Battery_Unit_mV:
|
case battery_unit_mv:
|
||||||
return batteryVoltage < 0 ? 0 : batteryVoltage;
|
return batteryVoltage < 0 ? 0 : batteryVoltage;
|
||||||
break;
|
break;
|
||||||
case Battery_Unit_percent:
|
case battery_unit_percent:
|
||||||
return battery_voltage_to_percentage(batteryVoltage < 0 ? 0 : batteryVoltage);
|
return battery_voltage_to_percentage(batteryVoltage < 0 ? 0 : batteryVoltage);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -94,9 +236,15 @@ uint8_t battery_voltage_to_percentage(uint16_t voltage_in_mV)
|
|||||||
return (i+1) * 5;
|
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)
|
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 */
|
/* We start the timer which will stop the vibration after durationMs time */
|
||||||
tls_timer_change(_vibration_motor_timer_id, durationMs);
|
tls_timer_change(_vibration_motor_timer_id, durationMs);
|
||||||
wm_pwm0_config(VIBRATION_MOTOR_ENABLE);
|
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_pwm_duty_set(VIBRATION_MOTOR_PWM_CHANNEL, strength);
|
||||||
tls_timer_start(_vibration_motor_timer_id);
|
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
|
#ifndef WATCH_PERIPHERALS_H
|
||||||
#define WATCH_PERIPHERALS_H
|
#define WATCH_PERIPHERALS_H
|
||||||
|
#include "lcd.h"
|
||||||
#include "wm_type_def.h"
|
#include "wm_type_def.h"
|
||||||
|
|
||||||
typedef enum Battery_Unit
|
typedef enum battery_unit
|
||||||
{
|
{
|
||||||
Battery_Unit_mV = 0,
|
battery_unit_mv = 0,
|
||||||
Battery_Unit_percent
|
battery_unit_percent
|
||||||
} Battery_Unit_e;
|
} 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.
|
* @brief Inits the watch peripherals driver.
|
||||||
@ -20,6 +39,14 @@ typedef enum Battery_Unit
|
|||||||
*/
|
*/
|
||||||
void watch_peripherals_init(int8_t adcOffset);
|
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.
|
* @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
|
* 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
|
* @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 %
|
* @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)
|
* @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);
|
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.
|
* @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);
|
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
|
#endif //WATCH_PERIPHERALS_H
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef APPLOG_H
|
#ifndef APP_LOG_H
|
||||||
#define APPLOG_G
|
#define APP_LOG_G
|
||||||
|
|
||||||
#include "app_common.h"
|
#include "app_common.h"
|
||||||
#include "app_config.h"
|
#include "app_config.h"
|
||||||
@ -34,4 +34,4 @@
|
|||||||
#define APP_LOG_DEBUG(message, ...) do{}while(0)
|
#define APP_LOG_DEBUG(message, ...) do{}while(0)
|
||||||
#endif
|
#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"
|
#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)
|
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_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_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_size(header, lv_disp_get_hor_res(NULL), height);
|
||||||
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
||||||
lv_obj_set_style_border_width(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);
|
*header_title_p = lv_label_create(header);
|
||||||
lv_label_set_text_static(header_title, title);
|
lv_label_set_text_static(*header_title_p, title);
|
||||||
lv_obj_set_style_text_color(header_title, lv_color_white(), LV_PART_MAIN);
|
lv_obj_set_style_text_align(*header_title_p, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
|
||||||
lv_obj_set_style_text_font(header_title, &lv_font_montserrat_30, LV_PART_MAIN);
|
lv_obj_set_style_text_color(*header_title_p, lv_color_white(), LV_PART_MAIN);
|
||||||
lv_obj_set_align(header_title, LV_ALIGN_CENTER);
|
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"
|
#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);
|
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
|
#endif //COMMON_SCREEN_COMPONENTS_H
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
#include "lvgl.h"
|
#include "lvgl.h"
|
||||||
#include "compass_screen.h"
|
#include "compass_screen.h"
|
||||||
#include "menu_screen.h"
|
#include "menu_screen.h"
|
||||||
|
#include "app_config.h"
|
||||||
|
|
||||||
static const char *cardinals[] =
|
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;
|
lv_coord_t rotated_x, rotated_y;
|
||||||
float azimuth_in_rads = (float)azimuth*M_PI/180.0;
|
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_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;
|
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);
|
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
|
//We make sure the azimuth is in the right range ie 0 to 359
|
||||||
azimuth %= 360;
|
azimuth %= 360;
|
||||||
|
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||||
uint16_t azimuthAdjusted = 359 - azimuth;
|
uint16_t azimuthAdjusted = 359 - azimuth;
|
||||||
|
#elif HARDWARE_PLATFORM == SMART_WATCH_PCB
|
||||||
|
uint16_t azimuthAdjusted = azimuth;
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t index;
|
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 each cardinal with the current azimuth
|
||||||
rotate_cardinal(&compassScreen->northCardinal, azimuth);
|
rotate_cardinal(&compassScreen->northCardinal, azimuth);
|
||||||
|
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||||
lv_img_set_angle(compassScreen->northMarker, azimuth*10);
|
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);
|
//lv_meter_set_scale_range(compassScreen->compassGraduation.meter, compassScreen->compassGraduation.scale, 0, 330, 330, azimuth-90);
|
||||||
|
|
||||||
rotate_cardinal(&compassScreen->eastCardinal, azimuth);
|
rotate_cardinal(&compassScreen->eastCardinal, azimuth);
|
||||||
|
@ -17,18 +17,18 @@
|
|||||||
#include "watch_peripherals.h"
|
#include "watch_peripherals.h"
|
||||||
#include "watch_settings.h"
|
#include "watch_settings.h"
|
||||||
|
|
||||||
|
#include "ble_modem.h"
|
||||||
|
#include "ble_service.h"
|
||||||
|
|
||||||
static void date_time_cb(struct tm * const dateTime)
|
static void date_time_cb(struct tm * const dateTime)
|
||||||
{
|
{
|
||||||
if(!dateTime)return;
|
if(!dateTime)return;
|
||||||
tls_get_rtc(dateTime);
|
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 void _perform_deferred_display_wake_up_set_sleeping(void);
|
||||||
static uint8_t battery_indicator_cb(void)
|
static void _perform_deferred_display_wake_up_set_timestamp(void);
|
||||||
{
|
static void _perform_deferred_display_wake_up(uint8_t deferred_time_in_ms);
|
||||||
return battery_percentage;
|
|
||||||
}
|
|
||||||
|
|
||||||
WatchFace_t watchFace;
|
WatchFace_t watchFace;
|
||||||
MenuScreen_t menuScreen;
|
MenuScreen_t menuScreen;
|
||||||
@ -39,69 +39,238 @@ struct bma4_dev bma;
|
|||||||
struct bma4_accel_config accel_conf;
|
struct bma4_accel_config accel_conf;
|
||||||
struct bma456w_wrist_wear_wakeup_params setting;
|
struct bma456w_wrist_wear_wakeup_params setting;
|
||||||
struct bma4_int_pin_config pin_config;
|
struct bma4_int_pin_config pin_config;
|
||||||
|
|
||||||
|
static struct
|
||||||
|
{
|
||||||
uint16_t int_status;
|
uint16_t int_status;
|
||||||
|
bool battery_controller_status;
|
||||||
|
} _interrupts_statuses = {.int_status = 0, .battery_controller_status = false};
|
||||||
|
|
||||||
static void setBrightness(uint8_t brightness)
|
static struct
|
||||||
{
|
{
|
||||||
extern LCDConfig_t LCDConfig;
|
uint16_t battery_voltage;
|
||||||
lcd_set_backlight(&LCDConfig, brightness);
|
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)
|
||||||
{
|
{
|
||||||
|
_interrupts_statuses.battery_controller_status = true;
|
||||||
persistency_get_settings()->display.brightness = brightness;
|
|
||||||
setBrightness(brightness);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setTimeCb(uint8_t hour, uint8_t minute, uint8_t second, uint8_t day, uint8_t month, uint8_t year)
|
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, SettingMode_e mode)
|
||||||
{
|
{
|
||||||
struct tm timeToSet;
|
struct tm timeToSet;
|
||||||
|
|
||||||
//First we get the current time from the RTC
|
//First we get the current time from the RTC
|
||||||
tls_get_rtc(&timeToSet);
|
tls_get_rtc(&timeToSet);
|
||||||
|
|
||||||
if(hour != 0xFF)
|
if(SETTING_MODE_GET == mode)
|
||||||
timeToSet.tm_hour = hour;
|
{
|
||||||
|
*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)
|
if(*minute != 0xFF)
|
||||||
timeToSet.tm_min = minute;
|
timeToSet.tm_min = *minute;
|
||||||
|
|
||||||
if(second != 0xFF)
|
if(*second != 0xFF)
|
||||||
timeToSet.tm_sec = second;
|
timeToSet.tm_sec = *second;
|
||||||
|
|
||||||
if(day != 0xFF)
|
if(*day != 0xFF)
|
||||||
timeToSet.tm_mday = day;
|
timeToSet.tm_mday = *day;
|
||||||
|
|
||||||
if(month != 0xFF)
|
if(*month != 0xFF)
|
||||||
timeToSet.tm_mon = month;
|
timeToSet.tm_mon = *month;
|
||||||
|
|
||||||
if(year != 0xFF)
|
if(*year != 0xFF)
|
||||||
timeToSet.tm_year = year + 100;
|
timeToSet.tm_year = *year;
|
||||||
|
|
||||||
tls_set_rtc(&timeToSet);
|
tls_set_rtc(&timeToSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setTimeoutCb(uint8_t timeout)
|
|
||||||
{
|
|
||||||
persistency_get_settings()->display.sleep_timeout = timeout;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setOrientationCb(uint8_t orientation)
|
static void setDisplayVibrationDuration(uint8_t *duration, SettingMode_e mode)
|
||||||
{
|
{
|
||||||
extern LCDConfig_t LCDConfig;
|
if(SETTING_MODE_GET == mode)
|
||||||
lcd_orientation(&LCDConfig, orientation);
|
{
|
||||||
persistency_get_settings()->display.orientation = orientation;
|
*duration = persistency_get_settings()->display.display_vibrate_on_touch_duration;
|
||||||
// Forces to redraw the full screen to avoid strange artifact
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
watch_settings_display_set_vibrate_on_touch_duration(*duration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setDisplayVibrationStrength(uint8_t *strength, SettingMode_e mode)
|
||||||
|
{
|
||||||
|
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());
|
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 =
|
SettingsScreenAPIInterface_t settingsScreenAPIInterface =
|
||||||
{
|
{
|
||||||
.setBrightnessSettingsCb = setBrightnessCb,
|
.setTimeSettingsCb = &(setTimeCb),
|
||||||
.setTimeSettingsCb = setTimeCb,
|
.setBrightnessSettingsCb = &(setGetBrightnessCb),
|
||||||
.setTimeoutSettingsCb = setTimeoutCb,
|
.setTimeoutSettingsCb = &(setTimeoutCb),
|
||||||
.setOrientationSettingsCb = setOrientationCb,
|
.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)
|
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));
|
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)
|
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;
|
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);
|
tls_mem_free(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern LCDConfig_t LCDConfig;
|
||||||
|
|
||||||
void gfx_task(void *param)
|
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)*/
|
/* Initialize the lvgl library and peripherals (display and input device)*/
|
||||||
lv_init();
|
lv_init();
|
||||||
@ -194,9 +421,7 @@ void gfx_task(void *param)
|
|||||||
lv_scr_load(watchFace.display);
|
lv_scr_load(watchFace.display);
|
||||||
|
|
||||||
/* Let's init the I2C interface */
|
/* Let's init the I2C interface */
|
||||||
i2c_init(I2C_SDA, I2C_SCL, 100000);
|
i2c_init(I2C_SDA, I2C_SCL, I2C_CLOCK_SPEED);
|
||||||
|
|
||||||
uint8_t aliveCounter = 0;
|
|
||||||
|
|
||||||
/* Init the magnetometer */
|
/* Init the magnetometer */
|
||||||
if(!QMC5883L_init())
|
if(!QMC5883L_init())
|
||||||
@ -269,7 +494,7 @@ void gfx_task(void *param)
|
|||||||
else
|
else
|
||||||
APP_LOG_INFO("BMA456 accel en failed");
|
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);
|
bma456w_get_wrist_wear_wakeup_param_config(&setting, &bma);
|
||||||
|
|
||||||
@ -296,23 +521,26 @@ void gfx_task(void *param)
|
|||||||
else
|
else
|
||||||
APP_LOG_INFO("BMA456 set pin conf failed");
|
APP_LOG_INFO("BMA456 set pin conf failed");
|
||||||
|
|
||||||
/* Let's init the watch peripherals driver (vibration motor + battery voltage sense) */
|
/* Configure BMA's step counter */
|
||||||
watch_peripherals_init(27);
|
if(bma456w_feature_enable(BMA456W_STEP_CNTR, BMA4_ENABLE, &bma) == BMA4_OK)
|
||||||
/* Make the first battery voltage reading here */
|
APP_LOG_INFO("BMA456 step cnter feature enable ok");
|
||||||
uint16_t battery_voltage = watch_peripherals_get_battery_voltage(Battery_Unit_mV);
|
else
|
||||||
battery_percentage = battery_voltage_to_percentage(battery_voltage);
|
APP_LOG_INFO("BMA456 step cnter feature enable failed");
|
||||||
watch_face_set_battery_indicator(&watchFace, battery_percentage);
|
|
||||||
|
/* 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
|
/* Once we are done with the initializing steps we
|
||||||
don't forget to turn the backlight on ! */
|
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 */
|
/* 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 temperature = 0;
|
||||||
float pressure = 0;
|
float pressure = 0;
|
||||||
|
uint32_t update_tick = 0;
|
||||||
|
|
||||||
for(;;)
|
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)
|
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");
|
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);
|
pressure = BMP280_get_pressure(&temperature);
|
||||||
BMP280_trigger_measurement();
|
BMP280_trigger_measurement();
|
||||||
battery_voltage = watch_peripherals_get_battery_voltage(Battery_Unit_mV);
|
_battery_stats.battery_voltage = watch_peripherals_get_battery_voltage(battery_unit_mv);
|
||||||
battery_percentage = battery_voltage_to_percentage(battery_voltage);
|
_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, bat : %u mV <-> %u %%",
|
APP_LOG_DEBUG("GFX thread, temp : %0.2f °C, press : %0.2f hPa, battery(%s) : %u mV <-> %u %%",
|
||||||
temperature,
|
temperature,
|
||||||
pressure/100,
|
pressure/100,
|
||||||
battery_voltage,
|
battery_controller_status_2_str(watch_peripherals_get_battery_controller_status()),
|
||||||
battery_percentage);
|
_battery_stats.battery_voltage,
|
||||||
|
_battery_stats.battery_percentage);
|
||||||
|
|
||||||
//APP_LOG_DEBUG("Scanning WiFi : %d", tls_wifi_scan());
|
//APP_LOG_DEBUG("Scanning WiFi : %d", tls_wifi_scan());
|
||||||
|
update_tick = lv_tick_get();
|
||||||
aliveCounter = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle inactivity periods : */
|
/* Handle inactivity periods : */
|
||||||
if( persistency_get_settings()->display.sleep_timeout != 0 &&
|
if( persistency_get_settings()->display.display_delay_before_sleep != 0 &&
|
||||||
lv_disp_get_inactive_time(NULL) > (persistency_get_settings()->display.sleep_timeout * 1000))
|
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
|
// 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_on(&LCDConfig, false);
|
||||||
lcd_sleep(&LCDConfig, true);
|
lcd_sleep(&LCDConfig, true);
|
||||||
QMC5883L_set_power_mode(Standby);
|
QMC5883L_set_power_mode(Standby);
|
||||||
@ -384,9 +618,14 @@ void gfx_task(void *param)
|
|||||||
QMC5883L_set_power_mode(Continuous);
|
QMC5883L_set_power_mode(Continuous);
|
||||||
//lcd_on(&LCDConfig, true);
|
//lcd_on(&LCDConfig, true);
|
||||||
lcd_sleep(&LCDConfig, false);
|
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 */
|
/* Throttle CPU freq down when inactive to save power or to increase responsiveness */
|
||||||
tls_sys_clk clk;
|
tls_sys_clk clk;
|
||||||
tls_sys_clk_get(&clk);
|
tls_sys_clk_get(&clk);
|
||||||
@ -406,5 +645,37 @@ void gfx_task(void *param)
|
|||||||
APP_LOG_DEBUG("CPU 160Mhz");
|
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 "settings_screen.h"
|
||||||
#include "watch_face.h"
|
#include "watch_face.h"
|
||||||
#include "compass_screen.h"
|
#include "compass_screen.h"
|
||||||
|
#include "translation.h"
|
||||||
|
|
||||||
#define array_size(array) (sizeof(array)/sizeof(array[0]))
|
#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)
|
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
|
//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_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_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);
|
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
|
//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);
|
menuScreen->display = lv_obj_create(NULL);
|
||||||
|
|
||||||
//We add the screen header
|
//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_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_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_size(scroll_item_container, lv_pct(100), 240-50);
|
||||||
lv_obj_set_pos(scroll_item_container, 0, 65);
|
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_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_top(scroll_item_container, 10, LV_PART_MAIN);
|
||||||
lv_obj_set_style_pad_bottom(scroll_item_container, 20, 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_border_width(scroll_item_container, 0, LV_PART_MAIN);
|
||||||
lv_obj_set_style_pad_right(scroll_item_container, 15, LV_PART_SCROLLBAR);
|
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, 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, "Compass", &(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, "Alarm", &(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, 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, 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, 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, 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
|
//We register the event callback to handle the cleanup
|
||||||
lv_obj_add_event_cb(menuScreen->display, &(cleanup_event_cb), LV_EVENT_DELETE, menuScreen);
|
lv_obj_add_event_cb(menuScreen->display, &(cleanup_event_cb), LV_EVENT_DELETE, menuScreen);
|
||||||
|
@ -3,24 +3,73 @@
|
|||||||
|
|
||||||
#include "lvgl.h"
|
#include "lvgl.h"
|
||||||
|
|
||||||
|
typedef enum SettingMode
|
||||||
|
{
|
||||||
|
SETTING_MODE_GET = 0,
|
||||||
|
SETTING_MODE_SET
|
||||||
|
} SettingMode_e;
|
||||||
|
|
||||||
typedef struct SettingsScreenAPIInterface
|
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, SettingMode_e mode);
|
||||||
void (*setTimeSettingsCb)(uint8_t hour, uint8_t minute, uint8_t second, uint8_t day, uint8_t month, uint8_t year);
|
void (*setBrightnessSettingsCb)(uint8_t *brightness, SettingMode_e mode);
|
||||||
void (*setTimeoutSettingsCb)(uint8_t timeout);
|
void (*setTimeoutSettingsCb)(uint8_t *timeout, SettingMode_e mode);
|
||||||
void (*setOrientationSettingsCb)(uint8_t orientation);
|
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;
|
} SettingsScreenAPIInterface_t;
|
||||||
|
|
||||||
typedef struct SettingsScreen
|
typedef struct SettingsScreen
|
||||||
{
|
{
|
||||||
SettingsScreenAPIInterface_t settingsScreenAPIInterface;
|
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 *hour_roller;
|
||||||
lv_obj_t *minute_roller;
|
lv_obj_t *minute_roller;
|
||||||
lv_obj_t *second_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 *day_roller;
|
||||||
lv_obj_t *month_roller;
|
lv_obj_t *month_roller;
|
||||||
lv_obj_t *year_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;
|
lv_obj_t *display;
|
||||||
|
|
||||||
|
/* Other */
|
||||||
|
lv_timer_t *about_refresh_timer;
|
||||||
} SettingsScreen_t;
|
} SettingsScreen_t;
|
||||||
|
|
||||||
void settings_screen_init(SettingsScreen_t * const settingsScreen);
|
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_destroy(SettingsScreen_t * const settingsScreen);
|
||||||
|
|
||||||
void settings_screen(void);
|
|
||||||
|
|
||||||
#endif //SETTINGS_SCREEN_H
|
#endif //SETTINGS_SCREEN_H
|
||||||
|
@ -4,6 +4,27 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "app_log.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)
|
static void gesture_event_cb(lv_event_t * e)
|
||||||
{
|
{
|
||||||
WatchFace_t *watchFace = e->user_data;
|
WatchFace_t *watchFace = e->user_data;
|
||||||
@ -17,6 +38,7 @@ static void gesture_event_cb(lv_event_t * e)
|
|||||||
case LV_DIR_RIGHT:
|
case LV_DIR_RIGHT:
|
||||||
LV_LOG_USER("GESTURE : RIGHT");
|
LV_LOG_USER("GESTURE : RIGHT");
|
||||||
// We delete the timer
|
// We delete the timer
|
||||||
|
lv_timer_del(watchFace->batteryIndicator.lowBatteryAnimationTimer);
|
||||||
lv_timer_del(watchFace->handAnimationTimer);
|
lv_timer_del(watchFace->handAnimationTimer);
|
||||||
// We create the menu screen and switch to it
|
// We create the menu screen and switch to it
|
||||||
extern MenuScreen_t menuScreen;
|
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
|
//Don't forget to update the day date window
|
||||||
sprintf(watchFace->dateWindow.dateWindowText, "%s%d", watchFace->dateTime.tm_mday < 10 ? " " : "", watchFace->dateTime.tm_mday);
|
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");
|
APP_LOG_DEBUG("Syncing time");
|
||||||
|
|
||||||
if(watchFace->batteryIndicatorCb)
|
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
|
else
|
||||||
{
|
{
|
||||||
@ -93,6 +121,57 @@ static void hand_timer_anim_cb(lv_timer_t *timer)
|
|||||||
update_watch_hands_angles(watchFace, 12);
|
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)
|
void watch_face_init(WatchFace_t * const watchFace)
|
||||||
{
|
{
|
||||||
if(!watchFace)
|
if(!watchFace)
|
||||||
@ -101,6 +180,7 @@ void watch_face_init(WatchFace_t * const watchFace)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memset(watchFace, 0, sizeof(WatchFace_t));
|
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)
|
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_minute_hand_asset)
|
||||||
LV_IMG_DECLARE(watch_casio_second_hand_asset)
|
LV_IMG_DECLARE(watch_casio_second_hand_asset)
|
||||||
LV_IMG_DECLARE(watch_casio_medium_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 :
|
//We create our parent screen :
|
||||||
if(watchFace->display)
|
if(watchFace->display)
|
||||||
@ -148,34 +229,35 @@ void watch_face_create(WatchFace_t * const watchFace)
|
|||||||
lv_obj_del(watchFace->display);
|
lv_obj_del(watchFace->display);
|
||||||
watchFace->display = NULL;
|
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);
|
lv_obj_set_style_bg_color(watchFace->display, lv_color_black(), LV_PART_MAIN);
|
||||||
//We load our assets :
|
lv_obj_add_event_cb(watchFace->display, &(hide_hour_and_minutes_hand_cb), LV_EVENT_LONG_PRESSED, watchFace);
|
||||||
lv_obj_t *watchFaceImg = lv_img_create(watchFace->display);
|
|
||||||
lv_img_set_src(watchFaceImg, &watch_casio_face_asset);
|
|
||||||
|
|
||||||
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_img_set_src(smallHandImg, &watch_casio_small_hand_asset);
|
||||||
lv_obj_set_pos(smallHandImg, 69, 98);
|
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
|
//Battery arc is created here
|
||||||
if(watchFace->batteryIndicator.battery_arc)
|
if(watchFace->batteryIndicator.batteryArc)
|
||||||
{
|
{
|
||||||
LV_LOG_ERROR("battery_arc should be NULL here !");
|
LV_LOG_ERROR("batteryArc should be NULL here !");
|
||||||
lv_obj_del(watchFace->batteryIndicator.battery_arc);
|
lv_obj_del(watchFace->batteryIndicator.batteryArc);
|
||||||
watchFace->batteryIndicator.battery_arc = NULL;
|
watchFace->batteryIndicator.batteryArc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
watchFace->batteryIndicator.battery_arc = lv_arc_create(watchFace->display);
|
watchFace->batteryIndicator.batteryArc = lv_arc_create(watchFace->display);
|
||||||
lv_obj_remove_style(watchFace->batteryIndicator.battery_arc, NULL, LV_PART_KNOB);
|
lv_obj_remove_style(watchFace->batteryIndicator.batteryArc, NULL, LV_PART_KNOB);
|
||||||
lv_obj_clear_flag(watchFace->batteryIndicator.battery_arc, LV_OBJ_FLAG_CLICKABLE);
|
lv_obj_clear_flag(watchFace->batteryIndicator.batteryArc, LV_OBJ_FLAG_CLICKABLE);
|
||||||
lv_obj_set_size(watchFace->batteryIndicator.battery_arc, 60, 60);
|
lv_obj_set_size(watchFace->batteryIndicator.batteryArc, 60, 60);
|
||||||
lv_obj_align(watchFace->batteryIndicator.battery_arc, LV_ALIGN_CENTER, -1, 45);
|
lv_obj_align(watchFace->batteryIndicator.batteryArc, 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.batteryArc, 5, LV_PART_INDICATOR);
|
||||||
lv_obj_set_style_arc_width(watchFace->batteryIndicator.battery_arc, 0, LV_PART_MAIN);
|
lv_obj_set_style_arc_width(watchFace->batteryIndicator.batteryArc, 0, LV_PART_MAIN);
|
||||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.battery_arc, lv_color_make(228, 233, 236), LV_PART_INDICATOR);
|
lv_obj_set_style_arc_color(watchFace->batteryIndicator.batteryArc, lv_color_make(228, 233, 236), LV_PART_INDICATOR);
|
||||||
lv_arc_set_value(watchFace->batteryIndicator.battery_arc, 100);
|
lv_arc_set_value(watchFace->batteryIndicator.batteryArc, 100);
|
||||||
|
|
||||||
if(watchFace->batteryIndicator.label)
|
if(watchFace->batteryIndicator.label)
|
||||||
{
|
{
|
||||||
@ -188,9 +270,57 @@ void watch_face_create(WatchFace_t * const watchFace)
|
|||||||
strcpy(watchFace->batteryIndicator.text, "100 %");
|
strcpy(watchFace->batteryIndicator.text, "100 %");
|
||||||
lv_label_set_text_static(watchFace->batteryIndicator.label, watchFace->batteryIndicator.text);
|
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_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)
|
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
|
//We set the appropriate angles to each of the hands
|
||||||
update_watch_hands_angles(watchFace, 0);
|
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
|
//We register the event callback to handle gestures
|
||||||
lv_obj_add_event_cb(watchFace->display, &(gesture_event_cb), LV_EVENT_GESTURE, watchFace);
|
lv_obj_add_event_cb(watchFace->display, &(gesture_event_cb), LV_EVENT_GESTURE, watchFace);
|
||||||
//We register the event callback to handle the cleanup
|
//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);
|
watchFace->handAnimationTimer = lv_timer_create(&(hand_timer_anim_cb), 199, watchFace);
|
||||||
}
|
}
|
||||||
|
|
||||||
void watch_face_force_sync(WatchFace_t *const watchFace)
|
void watch_face_set_battery_indicator(WatchFace_t * const watchFace, uint8_t levelInPercent, BatteryState_e batteryState)
|
||||||
{
|
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
if(!watchFace)
|
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);
|
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);
|
arc_color = lv_color_make(228, 33, 81);
|
||||||
else if(percentage <= 30)
|
else if(levelInPercent <= 30)
|
||||||
arc_color = lv_color_make(247, 148, 29);
|
arc_color = lv_color_make(247, 148, 29);
|
||||||
else if(percentage <= 50)
|
else if(levelInPercent <= 50)
|
||||||
arc_color = lv_color_make(226, 175, 58);
|
arc_color = lv_color_make(226, 175, 58);
|
||||||
|
|
||||||
lv_arc_set_value(watchFace->batteryIndicator.battery_arc, percentage);
|
lv_arc_set_value(watchFace->batteryIndicator.batteryArc, levelInPercent);
|
||||||
lv_obj_set_style_arc_color(watchFace->batteryIndicator.battery_arc, arc_color, LV_PART_INDICATOR);
|
lv_obj_set_style_arc_color(watchFace->batteryIndicator.batteryArc, arc_color, LV_PART_INDICATOR);
|
||||||
sprintf(watchFace->batteryIndicator.text, "%u %%", percentage);
|
sprintf(watchFace->batteryIndicator.text, "%u %%", levelInPercent);
|
||||||
lv_label_set_text_static(watchFace->batteryIndicator.label, watchFace->batteryIndicator.text);
|
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)
|
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->minuteHand.handImg = NULL;
|
||||||
watchFace->secondHand.handImg = NULL;
|
watchFace->secondHand.handImg = NULL;
|
||||||
watchFace->mediumHand24h.handImg = NULL;
|
watchFace->mediumHand24h.handImg = NULL;
|
||||||
watchFace->batteryIndicator.battery_arc = NULL;
|
watchFace->batteryIndicator.batteryArc = NULL;
|
||||||
watchFace->batteryIndicator.label = 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 "lvgl.h"
|
||||||
#include <time.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 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
|
typedef struct DateWindow
|
||||||
{
|
{
|
||||||
@ -22,10 +37,25 @@ typedef struct WatchHand
|
|||||||
typedef struct BatteryIndicator
|
typedef struct BatteryIndicator
|
||||||
{
|
{
|
||||||
lv_obj_t *label;
|
lv_obj_t *label;
|
||||||
lv_obj_t *battery_arc;
|
lv_obj_t *batteryArc;
|
||||||
|
lv_obj_t *batteryIcon;
|
||||||
|
lv_timer_t *lowBatteryAnimationTimer;
|
||||||
char text[7];
|
char text[7];
|
||||||
|
BatteryState_e batteryState:2;
|
||||||
} BatteryIndicator_t;
|
} 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 */
|
/* Watch face context object */
|
||||||
typedef struct WatchFace
|
typedef struct WatchFace
|
||||||
{
|
{
|
||||||
@ -39,7 +69,8 @@ typedef struct WatchFace
|
|||||||
lv_obj_t *display;
|
lv_obj_t *display;
|
||||||
DateWindow_t dateWindow;
|
DateWindow_t dateWindow;
|
||||||
BatteryIndicator_t batteryIndicator;
|
BatteryIndicator_t batteryIndicator;
|
||||||
|
StepCounter_t stepCounter;
|
||||||
|
BluetoothIndicator_t bluetoothIndicator;
|
||||||
struct tm dateTime;
|
struct tm dateTime;
|
||||||
} WatchFace_t;
|
} 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 watchFace a pointer to the watch face context structure.
|
||||||
* @param percentage the value to set the indicator to in percent.
|
* @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
|
* @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);
|
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
|
* @brief Frees all resources used by the WatchFace object
|
||||||
*
|
*
|
||||||
|
@ -38,9 +38,13 @@ void user_task_main(void *param)
|
|||||||
if(buf)
|
if(buf)
|
||||||
{
|
{
|
||||||
UBaseType_t writtenSize = vTaskList((char *)buf, 800);
|
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,
|
APP_LOG_INFO("Available RAM (bytes)/Total RAM (bytes) : %u/%u"NEW_LINE
|
||||||
tls_mem_get_avail_heapsize(),
|
"FreeRTOS free heap/total heap : %u/%u byte(s)"NEW_LINE
|
||||||
total_mem_size,
|
"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(),
|
tls_sys_get_reboot_reason(),
|
||||||
clk.apbclk, clk.cpuclk, clk.wlanclk,
|
clk.apbclk, clk.cpuclk, clk.wlanclk,
|
||||||
writtenSize);
|
writtenSize);
|
||||||
|
@ -1,13 +1,210 @@
|
|||||||
#include "watch_settings.h"
|
#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)
|
WatchSettings_t *persistency_get_settings(void)
|
||||||
{
|
{
|
||||||
return &watchSettings;
|
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
|
#define WATCH_SETTINGS_H
|
||||||
|
|
||||||
#include "wm_type_def.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
|
typedef struct TimeAndDate
|
||||||
{
|
{
|
||||||
uint32_t hour_format:1;
|
uint32_t time_and_date_hour_format:1,
|
||||||
uint32_t date_format:2;
|
time_and_date_date_format:2,
|
||||||
uint32_t automatic_time_and_date:1;
|
time_and_date_automatic:1;
|
||||||
} TimeAndDate_t;
|
} TimeAndDate_t;
|
||||||
|
|
||||||
/* Display Settings */
|
/**
|
||||||
|
* @brief Display Settings
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct Display
|
typedef struct Display
|
||||||
{
|
{
|
||||||
uint8_t brightness;
|
uint32_t display_brightness:8,
|
||||||
uint8_t sleep_timeout;
|
display_delay_before_sleep:4,
|
||||||
uint8_t orientation:2;
|
display_orientation:2,
|
||||||
|
display_wrist_wakeup:1,
|
||||||
|
display_vibrate_on_touch_strength:3,
|
||||||
|
display_vibrate_on_touch_duration:3;
|
||||||
} Display_t;
|
} 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
|
typedef struct Connectivity
|
||||||
{
|
{
|
||||||
|
uint32_t connectivity_ble_enabled:1,
|
||||||
|
connectivity_wifi_enabled:1;
|
||||||
} Connectivity_t;
|
} Connectivity_t;
|
||||||
|
|
||||||
/* Language and UI Settings */
|
/**
|
||||||
|
* @brief Language and UI Settings
|
||||||
|
*
|
||||||
|
* @note Languages : English, French and German will be available
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct LanguageAndUI
|
typedef struct LanguageAndUI
|
||||||
{
|
{
|
||||||
|
uint32_t language:3;
|
||||||
} LanguageAndUI_t;
|
} LanguageAndUI_t;
|
||||||
|
|
||||||
/* Main setting structure */
|
/**
|
||||||
|
* @brief Main setting structure
|
||||||
|
*
|
||||||
|
*/
|
||||||
typedef struct WatchSettings
|
typedef struct WatchSettings
|
||||||
{
|
{
|
||||||
|
uint32_t first_time_init:1;
|
||||||
TimeAndDate_t timeAndDate;
|
TimeAndDate_t timeAndDate;
|
||||||
Display_t display;
|
Display_t display;
|
||||||
|
Notification_t notification;
|
||||||
Connectivity_t connectivity;
|
Connectivity_t connectivity;
|
||||||
LanguageAndUI_t languageAndUI;
|
LanguageAndUI_t languageAndUI;
|
||||||
} WatchSettings_t;
|
} 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);
|
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
|
#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);
|
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
|
* @brief This function is used to register pmu rtc interrupt
|
||||||
*
|
*
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#define TLS_CONFIG_ONLY_FACTORY_ATCMD CFG_OFF
|
#define TLS_CONFIG_ONLY_FACTORY_ATCMD CFG_OFF
|
||||||
|
|
||||||
/**Host Interface&Command**/
|
/**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_AT_CMD (CFG_ON && TLS_CONFIG_HOSTIF)
|
||||||
#define TLS_CONFIG_RI_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)
|
#define TLS_CONFIG_RMMS (CFG_ON && TLS_CONFIG_HOSTIF)
|
||||||
@ -36,15 +36,15 @@
|
|||||||
|
|
||||||
/** SOCKET CONFIG **/
|
/** SOCKET CONFIG **/
|
||||||
#define TLS_CONFIG_SOCKET_STD CFG_ON
|
#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_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
|
#define TLS_CONFIG_CRYSTAL_24M CFG_OFF
|
||||||
|
|
||||||
/** HTTP CLIENT **/
|
/** HTTP CLIENT **/
|
||||||
@ -54,17 +54,17 @@ HTTPS Lib
|
|||||||
SSL LIB
|
SSL LIB
|
||||||
CRYPTO
|
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_PROXY CFG_OFF
|
||||||
#define TLS_CONFIG_HTTP_CLIENT_AUTH_BASIC 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_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_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_SECURE (CFG_OFF && (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_TASK (CFG_OFF && TLS_CONFIG_HTTP_CLIENT)
|
||||||
|
|
||||||
/*MatrixSSL will be used except one of the following two Macros is CFG_ON*/
|
/*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_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 */
|
#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_IGMP CFG_ON
|
||||||
|
|
||||||
|
|
||||||
#define TLS_CONFIG_NTP CFG_ON
|
#define TLS_CONFIG_NTP CFG_OFF
|
||||||
|
|
||||||
#if NIMBLE_FTR
|
#if NIMBLE_FTR
|
||||||
#define TLS_CONFIG_BLE CFG_ON
|
#define TLS_CONFIG_BLE CFG_ON
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
#define LV_MEM_CUSTOM 0
|
#define LV_MEM_CUSTOM 0
|
||||||
#if LV_MEM_CUSTOM == 0
|
#if LV_MEM_CUSTOM == 0
|
||||||
/*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
|
/*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.*/
|
/*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*/
|
#define LV_MEM_ADR 0 /*0: unused*/
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "lcd.h"
|
#include "lcd.h"
|
||||||
#include "CST816D.h"
|
#include "CST816D.h"
|
||||||
#include "watch_peripherals.h"
|
#include "watch_peripherals.h"
|
||||||
|
#include "watch_settings.h"
|
||||||
|
|
||||||
#include "app_log.h"
|
#include "app_log.h"
|
||||||
|
|
||||||
@ -50,17 +51,22 @@ static void touch_panel_isr(void *arg)
|
|||||||
CST816D_read_touch_event(p);
|
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;
|
(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)
|
switch(lv_event_code)
|
||||||
{
|
{
|
||||||
case LV_EVENT_LONG_PRESSED:
|
case LV_EVENT_LONG_PRESSED:
|
||||||
watch_peripherals_vibrate(255, 200);
|
watch_peripherals_vibrate(255, vibration_duration_ms);
|
||||||
break;
|
break;
|
||||||
case LV_EVENT_PRESSED:
|
case LV_EVENT_PRESSED:
|
||||||
watch_peripherals_vibrate(200, 200);
|
watch_peripherals_vibrate(vibration_strength > 255 ? 255 : vibration_strength, vibration_duration_ms);
|
||||||
break;
|
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
|
// Set the last pressed coordinates taking into account the current display orientation
|
||||||
switch(LCDConfig.LCDOrientation)
|
switch(LCDConfig.LCDOrientation)
|
||||||
{
|
{
|
||||||
|
#if HARDWARE_PLATFORM == SMART_WATCH_BREADBOARD
|
||||||
case LCD_ORIENTATION_90:
|
case LCD_ORIENTATION_90:
|
||||||
data->point.x = 239-last_y;
|
data->point.x = 239-last_y;
|
||||||
data->point.y = last_x;
|
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.x = 239-last_x;
|
||||||
data->point.y = 239-last_y;
|
data->point.y = 239-last_y;
|
||||||
break;
|
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;
|
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)
|
void PMU_RTC_IRQHandler(void)
|
||||||
{
|
{
|
||||||
tls_reg_write32(HR_PMU_INTERRUPT_SRC, BIT(4)); /* clear rtc interrupt */
|
tls_reg_write32(HR_PMU_INTERRUPT_SRC, BIT(4)); /* clear rtc interrupt */
|
||||||
|
@ -95,7 +95,7 @@ void _mutex_release (u32 *mutex)
|
|||||||
u8 *TaskStartStk = NULL;
|
u8 *TaskStartStk = NULL;
|
||||||
tls_os_task_t tststarthdl = NULL;
|
tls_os_task_t tststarthdl = NULL;
|
||||||
|
|
||||||
#define TASK_USERMAIN_STK_SIZE 1024
|
#define TASK_USERMAIN_STK_SIZE 512
|
||||||
u8 *TaskUsermainStk = NULL;
|
u8 *TaskUsermainStk = NULL;
|
||||||
tls_os_task_t tstusermainhdl = 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.gatts_register_cb = on_svr_register_cb;
|
||||||
ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
|
ble_hs_cfg.store_status_cb = ble_store_util_status_rr;
|
||||||
/* Initialize all packages. */
|
/* Initialize all packages. */
|
||||||
nimble_port_init();
|
nimble_port_init(); // 7 k ram gone --> 112691
|
||||||
/*Application levels code entry*/
|
/*Application levels code entry*/
|
||||||
tls_ble_gap_init();
|
tls_ble_gap_init(); // 0k ram gone
|
||||||
tls_bt_util_init();
|
tls_bt_util_init(); // 0k ram gone
|
||||||
/*Initialize the vuart interface and enable controller*/
|
/*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. */
|
/* 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) {
|
while(bt_adapter_state == WM_BT_STATE_OFF) {
|
||||||
tls_os_time_delay(10);
|
tls_os_time_delay(10);
|
||||||
|
@ -15,6 +15,11 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** NOT PART OF THE OFFICIAL SDK **/
|
||||||
|
int tls_bt_init(uint8_t uart_idx);
|
||||||
|
int tls_bt_deinit(void);
|
||||||
|
/**********************************/
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WM_BT_SYSTEM_ACTION_IDLE,
|
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)
|
const char *tls_bt_rc_2_str(uint32_t event)
|
||||||
{
|
{
|
||||||
switch(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)
|
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_EVENT(...)
|
||||||
#define TLS_BT_APPL_TRACE_DEBUG(...)
|
#define TLS_BT_APPL_TRACE_DEBUG(...)
|
||||||
#define TLS_BT_APPL_TRACE_VERBOSE(...)
|
#define TLS_BT_APPL_TRACE_VERBOSE(...)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define BLE_HS_ENOERR 0
|
||||||
|
|
||||||
void tls_bt_log(uint32_t trace_set_mask, const char *fmt_str, ...);
|
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_gap_evt_2_str(uint32_t event);
|
||||||
const char *tls_bt_rc_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_init(void);
|
||||||
extern int tls_bt_util_deinit(void);
|
extern int tls_bt_util_deinit(void);
|
||||||
|
@ -61,11 +61,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_MSYS_1_BLOCK_COUNT
|
#ifndef MYNEWT_VAL_MSYS_1_BLOCK_COUNT
|
||||||
#define MYNEWT_VAL_MSYS_1_BLOCK_COUNT (24)
|
#define MYNEWT_VAL_MSYS_1_BLOCK_COUNT (10)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_MSYS_1_BLOCK_SIZE
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT
|
#ifndef MYNEWT_VAL_MSYS_1_SANITY_MIN_COUNT
|
||||||
@ -425,7 +425,7 @@
|
|||||||
|
|
||||||
/*** @apache-mynewt-nimble/nimble/host */
|
/*** @apache-mynewt-nimble/nimble/host */
|
||||||
#ifndef MYNEWT_VAL_BLE_ATT_PREFERRED_MTU
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO
|
#ifndef MYNEWT_VAL_BLE_ATT_SVR_FIND_INFO
|
||||||
@ -925,7 +925,7 @@
|
|||||||
|
|
||||||
/*** @apache-mynewt-nimble/nimble/transport/socket */
|
/*** @apache-mynewt-nimble/nimble/transport/socket */
|
||||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_COUNT
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_SIZE
|
#ifndef MYNEWT_VAL_BLE_ACL_BUF_SIZE
|
||||||
@ -947,11 +947,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT
|
#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
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_SOCK_CLI_SYSINIT_STAGE
|
#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));
|
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);
|
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,
|
nimble_host_task,
|
||||||
(void *)0,
|
(void *)0,
|
||||||
(void *)tls_host_task_stack_ptr,
|
(void *)tls_host_task_stack_ptr,
|
||||||
|
@ -77,7 +77,7 @@
|
|||||||
#define configTICK_RATE_HZ ( ( portTickType ) 500u )
|
#define configTICK_RATE_HZ ( ( portTickType ) 500u )
|
||||||
#define configMAX_PRIORITIES (63)
|
#define configMAX_PRIORITIES (63)
|
||||||
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 256 )
|
#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 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_TRACE_FACILITY 1
|
||||||
#define configUSE_16_BIT_TICKS 0
|
#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/factorycmd
|
||||||
INCLUDES += -I $(TOP_DIR)/src/app/bleapp
|
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/lcd
|
||||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/mmc_sdio
|
INCLUDES += -I $(TOP_DIR)/app/app_drivers/mmc_sdio
|
||||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/i2c
|
INCLUDES += -I $(TOP_DIR)/app/app_drivers/i2c
|
||||||
INCLUDES += -I $(TOP_DIR)/app/app_drivers/watch_peripherals
|
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/gfx
|
||||||
INCLUDES += -I $(TOP_DIR)/app
|
INCLUDES += -I $(TOP_DIR)/app/persistency
|
||||||
|
INCLUDES += -I $(TOP_DIR)/app/translation
|
||||||
|
|
||||||
#lvgl include
|
#lvgl include
|
||||||
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_v8.3
|
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_v8.3
|
||||||
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_port
|
INCLUDES += -I $(TOP_DIR)/lvgl/lvgl_port
|
||||||
|
|
||||||
|
|
||||||
#nimble host
|
#nimble host
|
||||||
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/ext/tinycrypt/include
|
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/ext/tinycrypt/include
|
||||||
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/nimble/host/include
|
INCLUDES += -I $(TOP_DIR)/src/bt/blehost/nimble/host/include
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
<Unit filename="altimeter_screen.h" />
|
<Unit filename="altimeter_screen.h" />
|
||||||
|
<Unit filename="altimeter_screen_assets.c">
|
||||||
|
<Option compilerVar="CC" />
|
||||||
|
</Unit>
|
||||||
<Unit filename="common_screen_components.c">
|
<Unit filename="common_screen_components.c">
|
||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
@ -55,9 +58,7 @@
|
|||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
<Unit filename="compass_screen.h" />
|
<Unit filename="compass_screen.h" />
|
||||||
<Unit filename="hour_hand.c">
|
<Unit filename="firmware_version.h" />
|
||||||
<Option compilerVar="CC" />
|
|
||||||
</Unit>
|
|
||||||
<Unit filename="lv_conf.h" />
|
<Unit filename="lv_conf.h" />
|
||||||
<Unit filename="lv_drivers/display/ILI9341.h" />
|
<Unit filename="lv_drivers/display/ILI9341.h" />
|
||||||
<Unit filename="lv_drivers/display/R61581.h" />
|
<Unit filename="lv_drivers/display/R61581.h" />
|
||||||
@ -1648,13 +1649,7 @@
|
|||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
<Unit filename="menu_screen.h" />
|
<Unit filename="menu_screen.h" />
|
||||||
<Unit filename="minute_hand.c">
|
|
||||||
<Option compilerVar="CC" />
|
|
||||||
</Unit>
|
|
||||||
<Unit filename="rsrc/hour_hand.png" />
|
<Unit filename="rsrc/hour_hand.png" />
|
||||||
<Unit filename="second_hand.c">
|
|
||||||
<Option compilerVar="CC" />
|
|
||||||
</Unit>
|
|
||||||
<Unit filename="settings_screen.c">
|
<Unit filename="settings_screen.c">
|
||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
@ -1666,9 +1661,6 @@
|
|||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
<Unit filename="watch_face.h" />
|
<Unit filename="watch_face.h" />
|
||||||
<Unit filename="watch_img.c">
|
|
||||||
<Option compilerVar="CC" />
|
|
||||||
</Unit>
|
|
||||||
<Unit filename="watch_mask.c">
|
<Unit filename="watch_mask.c">
|
||||||
<Option compilerVar="CC" />
|
<Option compilerVar="CC" />
|
||||||
</Unit>
|
</Unit>
|
||||||
|
@ -2,24 +2,39 @@
|
|||||||
<CodeBlocks_layout_file>
|
<CodeBlocks_layout_file>
|
||||||
<FileVersion major="1" minor="0" />
|
<FileVersion major="1" minor="0" />
|
||||||
<ActiveTarget name="Debug" />
|
<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>
|
<Cursor>
|
||||||
<Cursor1 position="1969" topLine="47" />
|
<Cursor1 position="29532" topLine="612" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="869" topLine="0" />
|
<Cursor1 position="1135" topLine="14" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="722" topLine="32" />
|
<Cursor1 position="7126" topLine="230" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="9059" topLine="238" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="715" topLine="26" />
|
<Cursor1 position="721" topLine="16" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="524" topLine="954" />
|
<Cursor1 position="3627" topLine="67" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="7730" topLine="167" />
|
<Cursor1 position="0" topLine="138" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="539" topLine="9" />
|
<Cursor1 position="1282774" topLine="472" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="1391" topLine="23" />
|
<Cursor1 position="1299" topLine="36" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="6408" topLine="136" />
|
<Cursor1 position="615" topLine="25" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="14405" topLine="323" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="3268" topLine="76" />
|
<Cursor1 position="1028" topLine="30" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="8169" topLine="288" />
|
<Cursor1 position="7631" topLine="141" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="0" topLine="56" />
|
<Cursor1 position="715" topLine="26" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="0" topLine="15" />
|
<Cursor1 position="7842" topLine="283" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="2184" topLine="61" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="1563" topLine="27" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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>
|
<Cursor>
|
||||||
<Cursor1 position="1857" topLine="35" />
|
<Cursor1 position="1857" topLine="35" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="151" topLine="6" />
|
<Cursor1 position="11123" topLine="327" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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="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">
|
|
||||||
<Cursor>
|
<Cursor>
|
||||||
<Cursor1 position="48" topLine="0" />
|
<Cursor1 position="48" topLine="0" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="7018" topLine="202" />
|
<Cursor1 position="524" topLine="954" />
|
||||||
</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" />
|
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="5065" topLine="123" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="579" topLine="17" />
|
<Cursor1 position="5784" topLine="170" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="1234" topLine="34" />
|
<Cursor1 position="289" topLine="31" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="624" topLine="31" />
|
<Cursor1 position="13638" topLine="409" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="229" topLine="0" />
|
<Cursor1 position="722" topLine="32" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="402" topLine="16" />
|
<Cursor1 position="6210" topLine="113" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="7293" topLine="150" />
|
<Cursor1 position="215" topLine="0" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="585" topLine="0" />
|
<Cursor1 position="869" topLine="0" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="1253" topLine="23" />
|
<Cursor1 position="1457" topLine="45" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="1085" topLine="33" />
|
<Cursor1 position="3706" topLine="117" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="2825" topLine="122" />
|
<Cursor1 position="10670" topLine="390" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="950" topLine="43" />
|
<Cursor1 position="4139" topLine="82" />
|
||||||
</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" />
|
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Cursor1 position="3566" topLine="102" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="610" topLine="17" />
|
<Cursor1 position="2557" topLine="68" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</File>
|
||||||
<File name="lv_conf.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
<File name="lv_conf.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||||
<Cursor>
|
<Cursor>
|
||||||
<Cursor1 position="12839" topLine="299" />
|
<Cursor1 position="12839" topLine="10" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="29967" topLine="918" />
|
<Cursor1 position="11658" topLine="336" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="52426" topLine="414" />
|
<Cursor1 position="823" topLine="24" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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>
|
<Cursor>
|
||||||
<Cursor1 position="2129" topLine="53" />
|
<Cursor1 position="4439" topLine="123" />
|
||||||
</Cursor>
|
</Cursor>
|
||||||
</File>
|
</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">
|
<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" />
|
<Collapse line="995" />
|
||||||
</Folding>
|
</Folding>
|
||||||
</File>
|
</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>
|
<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>
|
</Cursor>
|
||||||
</File>
|
</File>
|
||||||
</CodeBlocks_layout_file>
|
</CodeBlocks_layout_file>
|
||||||
|
@ -1,6 +1,18 @@
|
|||||||
|
#include <stdio.h>
|
||||||
#include "altimeter_screen.h"
|
#include "altimeter_screen.h"
|
||||||
#include "menu_screen.h"
|
#include "menu_screen.h"
|
||||||
|
|
||||||
|
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)
|
static void gesture_event_cb(lv_event_t *e)
|
||||||
{
|
{
|
||||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||||
@ -22,15 +34,81 @@ static void gesture_event_cb(lv_event_t * e)
|
|||||||
break;
|
break;
|
||||||
case LV_DIR_TOP:
|
case LV_DIR_TOP:
|
||||||
LV_LOG_USER("GESTURE : 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;
|
break;
|
||||||
case LV_DIR_BOTTOM:
|
case LV_DIR_BOTTOM:
|
||||||
LV_LOG_USER("GESTURE : 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;
|
break;
|
||||||
default:
|
default:
|
||||||
LV_LOG_USER("GESTURE : %u", gesture);
|
LV_LOG_USER("GESTURE : %u", gesture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*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)
|
static void cleanup_event_cb(lv_event_t *e)
|
||||||
{
|
{
|
||||||
AltimeterScreen_t *altimeterScreen = e->user_data;
|
AltimeterScreen_t *altimeterScreen = e->user_data;
|
||||||
@ -38,22 +116,152 @@ static void cleanup_event_cb(lv_event_t * e)
|
|||||||
LV_LOG_USER("cleanup");
|
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)
|
static void measurements_update_timer_cb(lv_timer_t *timer)
|
||||||
{
|
{
|
||||||
AltimeterScreen_t *altimeterScreen = timer->user_data;
|
AltimeterScreen_t *altimeterScreen = timer->user_data;
|
||||||
if(altimeterScreen->measurementCb)
|
if(altimeterScreen->measurementCb)
|
||||||
{
|
{
|
||||||
float temperature, pressure, altitude;
|
float temperature, pressure;
|
||||||
LV_LOG_USER("Updating measurements");
|
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
|
else
|
||||||
{
|
{
|
||||||
LV_LOG_USER("measurementCb is NULL, be sure to register a callback !");
|
LV_LOG_USER("measurementCb is NULL, be sure to register a callback !");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen)
|
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;
|
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)
|
void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen)
|
||||||
{
|
{
|
||||||
if(!altimeterScreen)
|
if(!altimeterScreen)
|
||||||
@ -97,13 +349,55 @@ void altimeter_screen_create(AltimeterScreen_t * const altimeterScreen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
altimeterScreen->display = lv_obj_create(NULL);
|
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);
|
if(altimeterScreen->inner_circle)
|
||||||
lv_obj_center(inner_circle);
|
{
|
||||||
lv_obj_set_size(inner_circle, 210, 210);
|
LV_LOG_ERROR("inner_circle should be NULL here !");
|
||||||
lv_obj_set_style_radius(inner_circle, LV_RADIUS_CIRCLE, LV_PART_MAIN);
|
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
|
//We register the event callback to handle gestures
|
||||||
lv_obj_add_event_cb(altimeterScreen->display, &(gesture_event_cb), LV_EVENT_GESTURE, altimeterScreen);
|
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));
|
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
|
typedef enum DisplayedView
|
||||||
{
|
{
|
||||||
PRESSURE_VIEW = 0,
|
PRESSURE_VIEW = 0,
|
||||||
ALTITUDE_VIEW
|
ALTITUDE_VIEW,
|
||||||
|
ALTITUDE_SETTING_VIEW
|
||||||
} DisplayedView_e;
|
} DisplayedView_e;
|
||||||
|
|
||||||
typedef struct MainValue
|
typedef struct MainValue
|
||||||
@ -14,34 +15,51 @@ typedef struct MainValue
|
|||||||
lv_obj_t *value;
|
lv_obj_t *value;
|
||||||
lv_obj_t *unit;
|
lv_obj_t *unit;
|
||||||
char value_text[10];
|
char value_text[10];
|
||||||
char value_unit[5];
|
|
||||||
} MainValue_t;
|
} MainValue_t;
|
||||||
|
|
||||||
typedef struct MinMaxValue
|
typedef struct MinMaxVSIValue
|
||||||
{
|
{
|
||||||
lv_obj_t *value_unit;
|
lv_obj_t *value_unit;
|
||||||
char value_unit_text[20];
|
char value_unit_text[20];
|
||||||
} MinMaxValue_t;
|
} MinMaxVSIValue_t;
|
||||||
|
|
||||||
typedef void(*MeasurementCb_t)(float * const temperature, float * const pressure, float * const altitude);
|
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
|
typedef struct AltimeterScreen
|
||||||
{
|
{
|
||||||
//Can be erased attributes
|
//Can be erased attributes
|
||||||
lv_obj_t *display;
|
lv_obj_t *display;
|
||||||
|
lv_obj_t *inner_circle;
|
||||||
|
lv_obj_t *altitudeOffset_spinbox;
|
||||||
|
PressureChart_t pressureChart;
|
||||||
lv_timer_t *measurementUpdateTimer;
|
lv_timer_t *measurementUpdateTimer;
|
||||||
MainValue_t mainValue;
|
MainValue_t mainValue;
|
||||||
MinMaxValue_t minValue;
|
MinMaxVSIValue_t minValue;
|
||||||
MinMaxValue_t maxValue;
|
MinMaxVSIValue_t maxValue;
|
||||||
|
MinMaxVSIValue_t vsiValue;
|
||||||
|
float vsiFloat;
|
||||||
|
float lastReadAltitude;
|
||||||
//Should not be erased attributes
|
//Should not be erased attributes
|
||||||
DisplayedView_e displayedView;
|
DisplayedView_e displayedView;
|
||||||
MeasurementCb_t measurementCb;
|
MeasurementCb_t measurementCb;
|
||||||
|
float minValueFloat;
|
||||||
|
float maxValueFloat;
|
||||||
|
float altitudeOffset;
|
||||||
|
lv_coord_t pressure_data_points[10];
|
||||||
|
float pressure_data_points_float[10];
|
||||||
} AltimeterScreen_t;
|
} AltimeterScreen_t;
|
||||||
|
|
||||||
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
|
void altimeter_screen_init(AltimeterScreen_t * const altimeterScreen);
|
||||||
|
|
||||||
void altimeter_screen_register_measurement_cb(AltimeterScreen_t * const altimeterScreen, MeasurementCb_t MeasurementCb);
|
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_create(AltimeterScreen_t * const altimeterScreen);
|
||||||
|
|
||||||
void altimeter_screen_destroy(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"
|
#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)
|
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_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_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_size(header, lv_disp_get_hor_res(NULL), height);
|
||||||
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
lv_obj_set_style_radius(header, 0, LV_PART_MAIN);
|
||||||
lv_obj_set_style_border_width(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);
|
*header_title_p = lv_label_create(header);
|
||||||
lv_label_set_text_static(header_title, title);
|
lv_label_set_text_static(*header_title_p, title);
|
||||||
lv_obj_set_style_text_color(header_title, lv_color_white(), LV_PART_MAIN);
|
lv_obj_set_style_text_align(*header_title_p, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);
|
||||||
lv_obj_set_style_text_font(header_title, &lv_font_montserrat_30, LV_PART_MAIN);
|
lv_obj_set_style_text_color(*header_title_p, lv_color_white(), LV_PART_MAIN);
|
||||||
lv_obj_set_align(header_title, LV_ALIGN_CENTER);
|
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"
|
#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);
|
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
|
#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;
|
*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;
|
WatchFace_t watchFace;
|
||||||
MenuScreen_t menuScreen;
|
MenuScreen_t menuScreen;
|
||||||
CompassScreen_t compassScreen;
|
CompassScreen_t compassScreen;
|
||||||
@ -66,6 +75,7 @@ AltimeterScreen_t altimeterScreen;
|
|||||||
|
|
||||||
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
|
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
|
||||||
{
|
{
|
||||||
|
srand(time(NULL));
|
||||||
/*Initialize LittlevGL*/
|
/*Initialize LittlevGL*/
|
||||||
lv_init();
|
lv_init();
|
||||||
|
|
||||||
@ -89,11 +99,15 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLi
|
|||||||
settings_screen_init(&settingsScreen);
|
settings_screen_init(&settingsScreen);
|
||||||
altimeter_screen_init(&altimeterScreen);
|
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_register_date_time_cb(&watchFace, &(date_time_cb));
|
||||||
watch_face_create(&watchFace);
|
watch_face_create(&watchFace);
|
||||||
|
|
||||||
lv_scr_load(watchFace.display);
|
lv_scr_load(watchFace.display);
|
||||||
|
|
||||||
|
watch_face_set_step_count(&watchFace, 10258);
|
||||||
|
|
||||||
|
|
||||||
//settings_screen();
|
//settings_screen();
|
||||||
//watch_face();
|
//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_imgbtn_create(scroll_item_container);
|
||||||
lv_obj_t *item_btn = lv_img_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_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_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||||
lv_obj_add_flag(item_btn, LV_OBJ_FLAG_CLICKABLE);
|
|
||||||
lv_obj_set_pos(item_btn, 42, 52 * position);
|
lv_obj_set_pos(item_btn, 42, 52 * position);
|
||||||
//lv_imgbtn_set_src(item_btn, LV_IMGBTN_STATE_RELEASED, NULL, itemImg, NULL);
|
//lv_imgbtn_set_src(item_btn, LV_IMGBTN_STATE_RELEASED, NULL, itemImg, NULL);
|
||||||
lv_img_set_src(item_btn, itemImg);
|
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 |