Compare commits
244 Commits
Author | SHA1 | Date |
---|---|---|
SQFMI | 9f3accdb07 | |
SQFMI | e5fce3b38b | |
SQFMI | 71457b5f32 | |
SQFMI | cee857bac2 | |
SQFMI | c1c9ddc6a3 | |
SQFMI | d1c6d90598 | |
SQFMI | 9e6325e6d8 | |
SQFMI | 9c0b7e6b45 | |
SQFMI | 819b3319aa | |
SQFMI | b21516f9ee | |
SQFMI | d7bb52d34c | |
Oleg Girko | 1e07dc53d4 | |
SQFMI | 2705fca5ba | |
Oleg Girko | 74b38547fe | |
SQFMI | 41d8917c76 | |
SQFMI | 7747dcc645 | |
SQFMI | 667d86737d | |
SQFMI | d65738fbaa | |
SQFMI | 2dd98737fb | |
SQFMI | 5a5b343737 | |
sqfmi | 2da3fd9ede | |
SQFMI | acbb6eeece | |
sqfmi | c1c95f9587 | |
sqfmi | bd1657e9c7 | |
sqfmi | fbbcaabbd1 | |
SQFMI | e9854a7fa2 | |
sqfmi | fddbe504c1 | |
sqfmi | aa3528371d | |
sqfmi | 3ffb0f8697 | |
sqfmi | b786f24240 | |
sqfmi | 2528878570 | |
sqfmi | 1b15c1b5fe | |
Daniel Ansorregui | be185cbd54 | |
Daniel Ansorregui | f369b6f207 | |
Daniel Ansorregui | 8103df1499 | |
Daniel Ansorregui | 84c0cd106c | |
Daniel Ansorregui | 3ce125247d | |
Daniel Ansorregui | f2c0c91a61 | |
Daniel Ansorregui | 2b21e50c2f | |
Sudrien | b84ab91c6b | |
Sean M. Collins | b8eeda70c6 | |
Sean M. Collins | a719bfa116 | |
Sean M. Collins | 459cc2a18f | |
Denis Pitzalis | df5fce8d40 | |
SQFMI | 342eb48a49 | |
wjgeorge | 98fd0abfeb | |
SQFMI | 1d5605c0e9 | |
SQFMI | 704ef60470 | |
SQFMI | cc6c196e37 | |
SQFMI | 35e65a1972 | |
SQFMI | 65061fd30f | |
SQFMI | b1b5eeb890 | |
SQFMI | 2b327c64b8 | |
wjgeorge | 3c73c7e2c8 | |
SQFMI | cc1ff02123 | |
SQFMI | 0e1aa800dd | |
SQFMI | cc882cd9f7 | |
SQFMI | 6682d501a6 | |
SQFMI | dc2795dcd9 | |
SQFMI | 9177aee6d6 | |
SQFMI | c2bbf8a01a | |
Adam Minchinton | 0e319fe3e7 | |
SQFMI | f6f7a38c8e | |
SQFMI | 266ae56458 | |
SQFMI | 96c4465924 | |
SQFMI | b48408be6e | |
SQFMI | c0e814d269 | |
SQFMI | 3300f6f271 | |
SQFMI | e125f85926 | |
SQFMI | ce8c5d4f78 | |
SQFMI | 851467cc86 | |
sqfmi | c3587d04a7 | |
sqfmi | ce71292ea9 | |
Kenneth Henderick | 3a3a926c2a | |
sqfmi | e5556cb700 | |
SQFMI | 83aada6452 | |
Sukhpal Singh | 3a7eff4a8e | |
SQFMI | aaa3d91113 | |
Kenneth Henderick | f49e1a5fab | |
Sukhpal Singh | 9ac9aeded9 | |
SQFMI | ef0534e92b | |
SQFMI | 2cdfeaa0d1 | |
SQFMI | 7333873f08 | |
SQFMI | 9a64af8b3d | |
SQFMI | 5921655691 | |
SQFMI | 472eee733d | |
SQFMI | 6e41b9c982 | |
Olivier Mehani | dd3797f2d5 | |
Alex-K37 | 5e451fbf04 | |
SQFMI | c5344d9d42 | |
Olivier Mehani | cbb4820d85 | |
Olivier Mehani | c750754e8a | |
Olivier Mehani | 5f07f2ec63 | |
Olivier Mehani | b0e405e187 | |
Olivier Mehani | 2bd89ef250 | |
SQFMI | eb43be0634 | |
sqfmi | 9e5d7ad19c | |
sqfmi | 99158e19d4 | |
sqfmi | a24b1d0945 | |
sqfmi | 8adde783be | |
SQFMI | 4c56a38f34 | |
SQFMI | 53acbe6929 | |
sqfmi | c5ceab1a49 | |
sqfmi | 5e0834f309 | |
SQFMI | fdfe7ee2be | |
ITCactus | 819606e892 | |
Daniel Ansorregui | 04126ce5f6 | |
Daniel Ansorregui | 5c27f4721f | |
Daniel Ansorregui | 561673927c | |
sqfmi | 2e957fb80b | |
SQFMI | 5690db077f | |
sqfmi | 44c51fce90 | |
Stuart P. Bentley | 37ea6135da | |
SQFMI | 3e3a8859a9 | |
sqfmi | 715a0e1bd3 | |
SQFMI | 00dc02fe21 | |
SQFMI | 4b739afbd0 | |
SQFMI | c5ddfb4e7b | |
SQFMI | 8440fc7960 | |
SQFMI | 0bdbcbc348 | |
SQFMI | 433050a63a | |
Alexandre J. Raymond | 170029672a | |
Aneesh Durg | 8f55e2f694 | |
Aneesh Durg | 3a6af55a6f | |
SQFMI | 48c796ec27 | |
SQFMI | 6fc2c3ec21 | |
Batchyx | ccef29a679 | |
Batchyx | 6e9a6a8c05 | |
sqfmi | cd17d2046d | |
sqfmi | ee57707698 | |
SQFMI | ce7b6bf2f3 | |
Joshua Harlan Lifton | 8e2582f02a | |
Joshua Harlan Lifton | 266fb8ea95 | |
SQFMI | da92b9d4a1 | |
SQFMI | cd743e5ebf | |
sqfmi | 3c9afbb6d2 | |
SQFMI | 083b2d90d8 | |
Lyndon Nerenberg | 7bd9cf3ab0 | |
sqfmi | f79f7482c1 | |
наб | a7637604b4 | |
sqfmi | c5b43d2eac | |
Lyndon Nerenberg | bf7425c7dc | |
sqfmi | 26f5ac20c0 | |
sqfmi | de126cd292 | |
SQFMI | 5f1aeabff6 | |
SQFMI | 623c1e0ac1 | |
Aaron Nielsen | df37a3b9ef | |
SQFMI | 8ace9dba96 | |
SQFMI | 2bfe297e7b | |
SQFMI | 79553f4abd | |
SQFMI | c5be1917a5 | |
sqfmi | 9f0ce88057 | |
Paco Hope | 7ffb458385 | |
sqfmi | eb89c09a31 | |
sqfmi | a454e65ba2 | |
sqfmi | 12915a48e6 | |
SQFMI | 1bfbc55f4a | |
Guðni Þ. Björgvinsson | 9434ffd1fc | |
Christopher Chin | 20dd8a26e0 | |
SQFMI | 0f585268d4 | |
Kyle Potts | 069d18f1cc | |
Kyle Potts | 678614aff9 | |
SQFMI | f8d92f21be | |
sqfmi | 48d06b9661 | |
SQFMI | 35eb14fadd | |
SQFMI | afb2e23dea | |
SQFMI | b794d8ee79 | |
SQFMI | c6483eebe0 | |
Daniel Ansorregui | 76e202739d | |
Daniel Ansorregui | d66f848ba6 | |
sqfmi | ac82f48c45 | |
sqfmi | e34fbac279 | |
sqfmi | 8fb1902cbe | |
SQFMI | ca8e170147 | |
sqfmi | 7a28210b41 | |
Metaln00b | ff48d8a241 | |
sqfmi | 6363caeac2 | |
SQFMI | c6085ad483 | |
SQFMI | bec2c895af | |
SQFMI | 6f918e5d4d | |
sqfmi | 241f568e71 | |
elasticdotventures | f3e7c73eff | |
SQFMI | 3e69aad334 | |
sqfmi | 47976fa3de | |
SQFMI | 66b8fe9c8c | |
SQFMI | 2f12a2babd | |
Greg Wilson | d9882ab634 | |
Greg Wilson | 20ee700d5a | |
SQFMI | 80c4444576 | |
SQFMI | b0ff996341 | |
SQFMI | c34e8812d4 | |
SQFMI | 55c46964d8 | |
SQFMI | 895a7081db | |
SQFMI | 11ba79c4d7 | |
-k | 4e8f766dad | |
-k | 19fad2f9c7 | |
-k | 6744ff5a5b | |
Clayton Rogers | d2d4ea4d08 | |
наб | 6c2e613e07 | |
Nicolas Schodet | 2f6cad2fc2 | |
Nicolas Schodet | 3680e99634 | |
Tomas Ekeli | 381d08d818 | |
SQFMI | aabb888069 | |
SQFMI | 15179cfa0c | |
SQFMI | 55cb672cee | |
SQFMI | cf62ec9b3c | |
SQFMI | 3263a162a8 | |
SQFMI | 7d3b899123 | |
SQFMI | 1ae5fa2654 | |
SQFMI | 0ea1863c7f | |
Eric Doughty-Papassideris | 0ed0d0922e | |
Eric Doughty-Papassideris | 5aee35cf72 | |
SQFMI | 4abc401509 | |
SQFMI | 516142c373 | |
SQFMI | 06b92e6bc5 | |
SQFMI | 60b8d338bd | |
SQFMI | 3fcd2d29c7 | |
SQFMI | 88e683931c | |
SQFMI | 2319591449 | |
Leon Matthes | 2317303522 | |
SQFMI | b3e11b76eb | |
SQFMI | 3440fc26c2 | |
SQFMI | 1f5bd052db | |
SQFMI | fab7abeea0 | |
SQFMI | c4a9c1a6d5 | |
SQFMI | 332a45b6d3 | |
SQFMI | d16784a7e3 | |
SQFMI | 9c87c6030b | |
SQFMI | dafc867cd5 | |
SQFMI | 5d0822b064 | |
SQFMI | 80873c8772 | |
SQFMI | 94f3c198b3 | |
SQFMI | 2be16226fe | |
SQFMI | 609c839c4a | |
SQFMI | ee77c1febc | |
SQFMI | 6b958b31b0 | |
SQFMI | 3222e7711f | |
SQFMI | 8f03cf3ce2 | |
SQFMI | 79e794f6eb | |
Dan Delany | ce0fd4bbe7 | |
Dan Delany | b60bd6e66a | |
SQFMI | d88333ed8a | |
SQFMI | e3dfc3f594 | |
SQFMI | 8ba8f33fb1 |
|
@ -0,0 +1,28 @@
|
|||
name: Build Example Watchfaces
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "dev"
|
||||
pull_request:
|
||||
branches:
|
||||
- "dev"
|
||||
jobs:
|
||||
build:
|
||||
name: Build Example Watchfaces
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: ArminJo/arduino-test-compile@v3
|
||||
with:
|
||||
arduino-board-fqbn: esp32:esp32:watchy:Revision=v20,PartitionScheme=min_spiffs,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
|
||||
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
arduino-platform: esp32:esp32@2.0.17
|
||||
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
|
||||
set-build-path: true
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: binaries
|
||||
path: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin
|
||||
- uses: actions/download-artifact@v3
|
||||
- name: Display structure of downloaded files
|
||||
run: ls -R
|
|
@ -0,0 +1,39 @@
|
|||
name: Release
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v[0-9]+.[0-9]+.[0-9]+"
|
||||
jobs:
|
||||
release:
|
||||
name: Build and Release
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
board-revisions: [v10, v15, v20]
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: ArminJo/arduino-test-compile@v3
|
||||
with:
|
||||
arduino-board-fqbn: esp32:esp32:watchy:Revision=${{ matrix.board-revisions }},PartitionScheme=huge_app,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
|
||||
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
arduino-platform: esp32:esp32@2.0.17
|
||||
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
|
||||
set-build-path: true
|
||||
- name: Rename binaries with board revision
|
||||
run: |
|
||||
parent_dir="${{ github.workspace }}/examples/WatchFaces"
|
||||
for dir in "$parent_dir"/*; do
|
||||
if [ -d "$dir" ]; then
|
||||
cd "$dir/build"
|
||||
for file in *; do
|
||||
name="${file%%.*}"
|
||||
ext="${file#$name.}"
|
||||
mv "$file" "$name-${{ matrix.board-revisions }}.$ext"
|
||||
done
|
||||
cd -
|
||||
fi
|
||||
done
|
||||
- uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
name: "Watchy Arduino Library ${{ github.ref_name }}"
|
||||
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin
|
|
@ -0,0 +1,39 @@
|
|||
name: ReleaseV3
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v[0-9]+.[0-9]+.[0-9]+"
|
||||
jobs:
|
||||
release:
|
||||
name: Build and Release
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
board-revisions: [v30]
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: ArminJo/arduino-test-compile@v3
|
||||
with:
|
||||
arduino-board-fqbn: esp32:esp32:esp32s3:FlashSize=8M,PartitionScheme=default_8MB,UploadSpeed=921600,DebugLevel=none,EraseFlash=none
|
||||
platform-url: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
|
||||
arduino-platform: esp32:esp32@2.0.17
|
||||
required-libraries: Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
|
||||
set-build-path: true
|
||||
- name: Rename binaries with board revision
|
||||
run: |
|
||||
parent_dir="${{ github.workspace }}/examples/WatchFaces"
|
||||
for dir in "$parent_dir"/*; do
|
||||
if [ -d "$dir" ]; then
|
||||
cd "$dir/build"
|
||||
for file in *; do
|
||||
name="${file%%.*}"
|
||||
ext="${file#$name.}"
|
||||
mv "$file" "$name-${{ matrix.board-revisions }}.$ext"
|
||||
done
|
||||
cd -
|
||||
fi
|
||||
done
|
||||
- uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
name: "Watchy Arduino Library ${{ github.ref_name }}"
|
||||
files: ${{ github.workspace }}/examples/WatchFaces/**/build/*.bin
|
|
@ -67,3 +67,4 @@ avr-toolchain-*.zip
|
|||
manifest.mf
|
||||
nbbuild.xml
|
||||
nbproject
|
||||
.vscode
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
# How to contribute
|
||||
|
||||
### Check out the issue tracker
|
||||
|
||||
Search through [Issue tracker](https://github.com/sqfmi/Watchy/issues) for matching topics. It is also recommended to check with current [Pull requests](https://github.com/sqfmi/Watchy/pulls).
|
||||
|
||||
### Issue Pull Request
|
||||
|
||||
1. Fork this repo and branch out from `dev`.
|
||||
2. Push commits.
|
||||
3. Issue pull request.
|
||||
|
||||
## Community
|
||||
|
||||
- [Discord](https://discord.gg/ZXDegGV8E7)
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2023 SQFMI
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
18
README.md
|
@ -2,19 +2,17 @@
|
|||
|
||||
![Watchy](https://watchy.sqfmi.com/img/watchy_render.png)
|
||||
|
||||
Visit [**https://watchy.sqfmi.com**](https://watchy.sqfmi.com) for documentation, hardware design files, and more!
|
||||
**Buy Watchy from [Mouser](https://www.mouser.com/ProductDetail/SQFMI/SQFMI-WATCHY-10?qs=DRkmTr78QARN9VSJRzqRxw%3D%3D), [The Pi Hut](https://thepihut.com/collections/sqfmi), and [Crowd Supply](https://www.crowdsupply.com/sqfmi/watchy)**
|
||||
|
||||
## Setup
|
||||
1. In the Arduino IDE Boards Manager, install support for the ESP32. You can find instructions here: https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md
|
||||
2. Install this library (search for **Watchy** in the library manager), and any other depdencies when prompted
|
||||
3. Check out the examples under ```Examples``` -> ```Watchy```
|
||||
4. Compile & Upload with these board settings:
|
||||
* Board: "ESP32 Dev Module"
|
||||
* Partition Scheme: "Minimal SPIFFS"
|
||||
* All Other Settings: leave to default
|
||||
[**Watchy Case & Accessories**](https://shop.sqfmi.com)
|
||||
|
||||
You may also have to install the [CP2104 USB to Serial drivers](https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers) if the port is not automatically detected
|
||||
## Getting Started Guide
|
||||
Follow the instructions here https://watchy.sqfmi.com/docs/getting-started
|
||||
|
||||
### Have Fun! :)
|
||||
|
||||
### Got Questions?
|
||||
|
||||
Join our [Discord](https://discord.gg/ZXDegGV8E7)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "Watchy_7_SEG.h"
|
||||
#include "settings.h"
|
||||
|
||||
Watchy7SEG watchy;
|
||||
Watchy7SEG watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
To toggle between Dark Mode/Light Mode, change `#define DARKMODE true` in `Watchy_7_SEG.cpp`
|
|
@ -1,33 +1,45 @@
|
|||
#include "Watchy_7_SEG.h"
|
||||
|
||||
#define DARKMODE true
|
||||
|
||||
const uint8_t BATTERY_SEGMENT_WIDTH = 7;
|
||||
const uint8_t BATTERY_SEGMENT_HEIGHT = 11;
|
||||
const uint8_t BATTERY_SEGMENT_SPACING = 9;
|
||||
const uint8_t WEATHER_ICON_WIDTH = 48;
|
||||
const uint8_t WEATHER_ICON_HEIGHT = 32;
|
||||
|
||||
Watchy7SEG::Watchy7SEG(){} //constructor
|
||||
|
||||
void Watchy7SEG::drawWatchFace(){
|
||||
display.fillScreen(GxEPD_BLACK);
|
||||
display.fillScreen(DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);
|
||||
display.setTextColor(DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
drawTime();
|
||||
drawDate();
|
||||
drawSteps();
|
||||
drawWeather();
|
||||
drawBattery();
|
||||
display.drawBitmap(120, 77, WIFI_CONFIGURED ? wifi : wifioff, 26, 18, GxEPD_WHITE);
|
||||
display.drawBitmap(116, 75, WIFI_CONFIGURED ? wifi : wifioff, 26, 18, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
if(BLE_CONFIGURED){
|
||||
display.drawBitmap(100, 75, bluetooth, 13, 21, GxEPD_WHITE);
|
||||
display.drawBitmap(100, 73, bluetooth, 13, 21, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
}
|
||||
#ifdef ARDUINO_ESP32S3_DEV
|
||||
if(USB_PLUGGED_IN){
|
||||
display.drawBitmap(140, 75, charge, 16, 18, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void Watchy7SEG::drawTime(){
|
||||
display.setFont(&DSEG7_Classic_Bold_53);
|
||||
display.setCursor(5, 53+5);
|
||||
if(currentTime.Hour < 10){
|
||||
int displayHour;
|
||||
if(HOUR_12_24==12){
|
||||
displayHour = ((currentTime.Hour+11)%12)+1;
|
||||
} else {
|
||||
displayHour = currentTime.Hour;
|
||||
}
|
||||
if(displayHour < 10){
|
||||
display.print("0");
|
||||
}
|
||||
display.print(currentTime.Hour);
|
||||
display.print(displayHour);
|
||||
display.print(":");
|
||||
if(currentTime.Minute < 10){
|
||||
display.print("0");
|
||||
|
@ -43,6 +55,9 @@ void Watchy7SEG::drawDate(){
|
|||
|
||||
String dayOfWeek = dayStr(currentTime.Wday);
|
||||
display.getTextBounds(dayOfWeek, 5, 85, &x1, &y1, &w, &h);
|
||||
if(currentTime.Wday == 4){
|
||||
w = w - 5;
|
||||
}
|
||||
display.setCursor(85 - w, 85);
|
||||
display.println(dayOfWeek);
|
||||
|
||||
|
@ -58,99 +73,86 @@ void Watchy7SEG::drawDate(){
|
|||
}
|
||||
display.println(currentTime.Day);
|
||||
display.setCursor(5, 150);
|
||||
display.println(currentTime.Year + YEAR_OFFSET);// offset from 1970, since year is stored in uint8_t
|
||||
display.println(tmYearToCalendar(currentTime.Year));// offset from 1970, since year is stored in uint8_t
|
||||
}
|
||||
void Watchy7SEG::drawSteps(){
|
||||
// reset step counter at midnight
|
||||
if (currentTime.Hour == 0 && currentTime.Minute == 0){
|
||||
sensor.resetStepCounter();
|
||||
}
|
||||
uint32_t stepCount = sensor.getCounter();
|
||||
display.drawBitmap(10, 165, steps, 19, 23, GxEPD_WHITE);
|
||||
display.drawBitmap(10, 165, steps, 19, 23, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
display.setCursor(35, 190);
|
||||
display.println(stepCount);
|
||||
}
|
||||
void Watchy7SEG::drawBattery(){
|
||||
display.drawBitmap(154, 73, battery, 37, 21, GxEPD_WHITE);
|
||||
display.fillRect(159, 78, 27, BATTERY_SEGMENT_HEIGHT, GxEPD_BLACK);//clear battery segments
|
||||
display.drawBitmap(158, 73, battery, 37, 21, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
display.fillRect(163, 78, 27, BATTERY_SEGMENT_HEIGHT, DARKMODE ? GxEPD_BLACK : GxEPD_WHITE);//clear battery segments
|
||||
int8_t batteryLevel = 0;
|
||||
float VBAT = getBatteryVoltage();
|
||||
if(VBAT > 4.1){
|
||||
if(VBAT > 4.0){
|
||||
batteryLevel = 3;
|
||||
}
|
||||
else if(VBAT > 3.95 && VBAT <= 4.1){
|
||||
else if(VBAT > 3.6 && VBAT <= 4.0){
|
||||
batteryLevel = 2;
|
||||
}
|
||||
else if(VBAT > 3.80 && VBAT <= 3.95){
|
||||
else if(VBAT > 3.20 && VBAT <= 3.6){
|
||||
batteryLevel = 1;
|
||||
}
|
||||
else if(VBAT <= 3.80){
|
||||
else if(VBAT <= 3.20){
|
||||
batteryLevel = 0;
|
||||
}
|
||||
|
||||
for(int8_t batterySegments = 0; batterySegments < batteryLevel; batterySegments++){
|
||||
display.fillRect(159 + (batterySegments * BATTERY_SEGMENT_SPACING), 78, BATTERY_SEGMENT_WIDTH, BATTERY_SEGMENT_HEIGHT, GxEPD_WHITE);
|
||||
display.fillRect(163 + (batterySegments * BATTERY_SEGMENT_SPACING), 78, BATTERY_SEGMENT_WIDTH, BATTERY_SEGMENT_HEIGHT, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
}
|
||||
}
|
||||
|
||||
void Watchy7SEG::drawWeather(){
|
||||
|
||||
weatherData currentWeather = getWeatherData();
|
||||
|
||||
int8_t temperature = currentWeather.temperature;
|
||||
int16_t weatherConditionCode = currentWeather.weatherConditionCode;
|
||||
|
||||
display.setFont(&DSEG7_Classic_Regular_39);
|
||||
int16_t x1, y1;
|
||||
uint16_t w, h;
|
||||
display.getTextBounds(String(temperature), 100, 150, &x1, &y1, &w, &h);
|
||||
display.setCursor(155 - w, 150);
|
||||
display.getTextBounds(String(temperature), 0, 0, &x1, &y1, &w, &h);
|
||||
if(159 - w - x1 > 87){
|
||||
display.setCursor(159 - w - x1, 150);
|
||||
}else{
|
||||
display.setFont(&DSEG7_Classic_Bold_25);
|
||||
display.getTextBounds(String(temperature), 0, 0, &x1, &y1, &w, &h);
|
||||
display.setCursor(159 - w - x1, 136);
|
||||
}
|
||||
display.println(temperature);
|
||||
display.drawBitmap(165, 110, TEMP_UNIT == "metric" ? celsius : fahrenheit, 26, 20, GxEPD_WHITE);
|
||||
display.drawBitmap(165, 110, currentWeather.isMetric ? celsius : fahrenheit, 26, 20, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
const unsigned char* weatherIcon;
|
||||
|
||||
//https://openweathermap.org/weather-conditions
|
||||
if(weatherConditionCode > 801){//Cloudy
|
||||
weatherIcon = cloudy;
|
||||
}else if(weatherConditionCode == 801){//Few Clouds
|
||||
weatherIcon = cloudsun;
|
||||
}else if(weatherConditionCode == 800){//Clear
|
||||
weatherIcon = sunny;
|
||||
}else if(weatherConditionCode >=700){//Atmosphere
|
||||
weatherIcon = cloudy;
|
||||
}else if(weatherConditionCode >=600){//Snow
|
||||
weatherIcon = snow;
|
||||
}else if(weatherConditionCode >=500){//Rain
|
||||
weatherIcon = rain;
|
||||
}else if(weatherConditionCode >=300){//Drizzle
|
||||
weatherIcon = rain;
|
||||
}else if(weatherConditionCode >=200){//Thunderstorm
|
||||
weatherIcon = rain;
|
||||
if(WIFI_CONFIGURED){
|
||||
//https://openweathermap.org/weather-conditions
|
||||
if(weatherConditionCode > 801){//Cloudy
|
||||
weatherIcon = cloudy;
|
||||
}else if(weatherConditionCode == 801){//Few Clouds
|
||||
weatherIcon = cloudsun;
|
||||
}else if(weatherConditionCode == 800){//Clear
|
||||
weatherIcon = sunny;
|
||||
}else if(weatherConditionCode >=700){//Atmosphere
|
||||
weatherIcon = atmosphere;
|
||||
}else if(weatherConditionCode >=600){//Snow
|
||||
weatherIcon = snow;
|
||||
}else if(weatherConditionCode >=500){//Rain
|
||||
weatherIcon = rain;
|
||||
}else if(weatherConditionCode >=300){//Drizzle
|
||||
weatherIcon = drizzle;
|
||||
}else if(weatherConditionCode >=200){//Thunderstorm
|
||||
weatherIcon = thunderstorm;
|
||||
}else
|
||||
return;
|
||||
}else{
|
||||
weatherIcon = chip;
|
||||
}
|
||||
display.drawBitmap(145, 158, weatherIcon, WEATHER_ICON_WIDTH, WEATHER_ICON_HEIGHT, GxEPD_WHITE);
|
||||
|
||||
display.drawBitmap(145, 158, weatherIcon, WEATHER_ICON_WIDTH, WEATHER_ICON_HEIGHT, DARKMODE ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
}
|
||||
|
||||
//#include "pokemon.h"
|
||||
// class WatchyPokemon : public Watchy{
|
||||
// public:
|
||||
// void updateWatchFace(bool partialRefresh){
|
||||
|
||||
// display.init(0, false); //_initial_refresh to false to prevent full update on init
|
||||
// display.setFullWindow();
|
||||
// display.fillScreen(GxEPD_WHITE);
|
||||
// display.drawBitmap(0, 0, pokemon, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK);
|
||||
// display.setTextColor(GxEPD_BLACK);
|
||||
// display.setFont(&FreeMonoBold9pt7b);
|
||||
// display.setCursor(10, 170);
|
||||
|
||||
// if(currentTime.Hour < 10){
|
||||
// display.print('0');
|
||||
// }
|
||||
// display.print(currentTime.Hour);
|
||||
// display.print(':');
|
||||
// if(currentTime.Minute < 10){
|
||||
// display.print('0');
|
||||
// }
|
||||
// display.print(currentTime.Minute);
|
||||
|
||||
// display.display(partialRefresh); //partial refresh
|
||||
// display.hibernate();
|
||||
|
||||
// guiState = WATCHFACE_STATE;
|
||||
// }
|
||||
// };
|
|
@ -9,8 +9,8 @@
|
|||
#include "icons.h"
|
||||
|
||||
class Watchy7SEG : public Watchy{
|
||||
using Watchy::Watchy;
|
||||
public:
|
||||
Watchy7SEG();
|
||||
void drawWatchFace();
|
||||
void drawTime();
|
||||
void drawDate();
|
||||
|
|
|
@ -105,6 +105,66 @@ const unsigned char sunny [] PROGMEM = {
|
|||
0xc0, 0x00, 0x00, 0x18, 0x20, 0x10, 0x60, 0x00, 0x00, 0x00, 0x21, 0x08, 0x00, 0x00, 0x00, 0x00,
|
||||
0x41, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'atmosphere', 48x32px
|
||||
const unsigned char atmosphere[] PROGMEM = {
|
||||
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
|
||||
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00,
|
||||
0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
|
||||
0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x08, 0x04, 0x07, 0xff, 0xf8, 0xf0, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80,
|
||||
0x00, 0x00, 0x00, 0x60, 0x00, 0x9f, 0x1f, 0xff, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'drizzle', 48x32px
|
||||
const unsigned char drizzle[] PROGMEM = {
|
||||
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
|
||||
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x00, 0x00,
|
||||
0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00,
|
||||
0x00, 0x00, 0x00, 0x18, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x80,
|
||||
0x00, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20, 0x08, 0x00, 0x00
|
||||
};
|
||||
// 'thunderstorm', 48x32px
|
||||
const unsigned char thunderstorm[] PROGMEM = {
|
||||
0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x81, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x08, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x30,
|
||||
0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x07, 0x80, 0x00, 0xc0, 0x0f, 0x80,
|
||||
0x00, 0xc0, 0x03, 0x00, 0x0f, 0x80, 0x00, 0x20, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x10, 0x04, 0x00,
|
||||
0x1e, 0x00, 0x00, 0x18, 0x04, 0x00, 0x3e, 0x00, 0x00, 0x08, 0x08, 0x00, 0x3c, 0x00, 0x00, 0x08,
|
||||
0x08, 0x00, 0x7c, 0x00, 0x00, 0x08, 0x04, 0x00, 0x78, 0x00, 0x00, 0x08, 0x04, 0x00, 0xf8, 0x00,
|
||||
0x00, 0x08, 0x04, 0x00, 0xff, 0x00, 0x00, 0x10, 0x02, 0x00, 0x1f, 0x00, 0x00, 0x30, 0x01, 0x80,
|
||||
0x1e, 0x00, 0x00, 0x60, 0x00, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'cputemp', 48x32px
|
||||
const unsigned char cputemp [] PROGMEM = {
|
||||
0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7,
|
||||
0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
||||
0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xef, 0xff, 0xff, 0xef, 0x80,
|
||||
0x03, 0xef, 0xff, 0xff, 0xef, 0x80, 0x03, 0xef, 0xff, 0xff, 0xe7, 0x80, 0x00, 0x0f, 0xff, 0xff,
|
||||
0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xef, 0xff, 0xff, 0xef, 0x80, 0x03, 0xef,
|
||||
0xff, 0xff, 0xef, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00,
|
||||
0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xef, 0xff, 0xff, 0xef, 0x80, 0x03, 0xef, 0xff, 0xff,
|
||||
0xef, 0x80, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f,
|
||||
0xff, 0xff, 0xe0, 0x00, 0x03, 0xef, 0xff, 0xff, 0xef, 0x80, 0x03, 0xef, 0xff, 0xff, 0xef, 0x80,
|
||||
0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00, 0x00, 0x01,
|
||||
0x8c, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00, 0x00, 0x01, 0x8c, 0xe7, 0x00, 0x00
|
||||
};
|
||||
// 'steps', 19x23px
|
||||
const unsigned char steps [] PROGMEM = {
|
||||
0x00, 0x03, 0xc0, 0x00, 0x07, 0xe0, 0x00, 0x07, 0xe0, 0x00, 0x0f, 0xe0, 0x78, 0x0f, 0xe0, 0xfc,
|
||||
|
@ -129,3 +189,27 @@ const unsigned char wifioff [] PROGMEM = {
|
|||
0x01, 0xff, 0xc0, 0x00, 0x07, 0xe1, 0xc0, 0x00, 0x0f, 0xc0, 0x80, 0x00, 0x1f, 0x0c, 0x00, 0x00,
|
||||
0x3c, 0x1e, 0x00, 0x00, 0xf8, 0x0c, 0x00, 0x00
|
||||
};
|
||||
|
||||
// 'charge', 16x18px
|
||||
const unsigned char charge [] PROGMEM = {
|
||||
0x00, 0x10, 0x00, 0x70, 0x00, 0xe0, 0x01, 0xe0, 0x03, 0xe0, 0x07, 0xc0, 0x0f, 0xc0, 0x1f, 0xff,
|
||||
0x3f, 0xfe, 0x7f, 0xfc, 0x7f, 0xf8, 0x03, 0xf0, 0x03, 0xe0, 0x07, 0xc0, 0x07, 0x80, 0x07, 0x00,
|
||||
0x0e, 0x00, 0x0c, 0x00
|
||||
};
|
||||
|
||||
// 'chip', 48x32px
|
||||
const unsigned char chip [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00,
|
||||
0x12, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01,
|
||||
0x00, 0x00, 0x00, 0x0f, 0x87, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x88, 0x09, 0x00, 0x00, 0x00, 0x00,
|
||||
0x90, 0x09, 0x00, 0x00, 0x00, 0x0f, 0x90, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x90, 0x09, 0x00, 0x00,
|
||||
0x00, 0x00, 0x90, 0x09, 0x00, 0x00, 0x00, 0x0f, 0x90, 0x09, 0xf0, 0x00, 0x00, 0x00, 0x90, 0x09,
|
||||
0x00, 0x00, 0x00, 0x00, 0x90, 0x09, 0x00, 0x00, 0x00, 0x0f, 0x9f, 0xf9, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00,
|
||||
0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00, 0x12, 0x48,
|
||||
0x00, 0x00, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,6 +1,7 @@
|
|||
#include <Watchy.h>
|
||||
#include "settings.h"
|
||||
|
||||
Watchy watchy;
|
||||
Watchy watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
#include "Watchy_DOS.h"
|
||||
#include "settings.h"
|
||||
|
||||
WatchyDOS watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
}
|
||||
|
||||
void loop(){}
|
|
@ -0,0 +1,174 @@
|
|||
//created using https://rop.nl/truetype2gfx/
|
||||
//https://github.com/ropg/truetype2gfx
|
||||
//@ropg
|
||||
//Px437_IBM_BIOS.ttf
|
||||
|
||||
const uint8_t Px437_IBM_BIOS5pt7bBitmaps[] PROGMEM = {
|
||||
0x00, 0x73, 0xFF, 0xF7, 0x39, 0xC0, 0x70, 0xEF, 0xDF, 0xBF, 0x70, 0x77,
|
||||
0x3B, 0x9D, 0xDF, 0xF7, 0x77, 0xFF, 0xDC, 0xEE, 0x77, 0x00, 0x38, 0x3F,
|
||||
0x7F, 0xE0, 0x7C, 0x07, 0x04, 0xFC, 0x38, 0xE3, 0xF1, 0xF9, 0xC1, 0x83,
|
||||
0x81, 0x9D, 0xCF, 0xC7, 0x3C, 0x1B, 0x9D, 0xC7, 0x87, 0xBF, 0x7B, 0xBD,
|
||||
0xCE, 0x7B, 0x80, 0x77, 0x7E, 0x18, 0x9D, 0xCE, 0x73, 0xCE, 0x18, 0xE7,
|
||||
0x9C, 0x31, 0x8C, 0x4E, 0xE0, 0x73, 0x9C, 0xE3, 0xF3, 0xFF, 0x3F, 0x0C,
|
||||
0xE7, 0x38, 0x38, 0x38, 0x38, 0xFF, 0x38, 0x38, 0x38, 0x77, 0x7E, 0xFF,
|
||||
0xFF, 0x80, 0x03, 0x81, 0x81, 0xC1, 0x83, 0x83, 0x81, 0x81, 0xC0, 0x80,
|
||||
0x00, 0x7F, 0x31, 0xF8, 0xFC, 0xFE, 0xFF, 0xDF, 0xCF, 0xE7, 0x7F, 0x00,
|
||||
0x38, 0x38, 0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0xFF, 0x7C, 0x67, 0xE7,
|
||||
0x07, 0x3C, 0x70, 0x67, 0xE7, 0xFF, 0x7C, 0x67, 0xE7, 0x07, 0x3C, 0x07,
|
||||
0xE7, 0xE7, 0x7C, 0x0F, 0x07, 0x8F, 0xCE, 0xEE, 0x77, 0xFF, 0xFC, 0x0E,
|
||||
0x0F, 0x80, 0xFF, 0xE0, 0xE0, 0xFC, 0x07, 0x07, 0xE7, 0xE7, 0x7C, 0x3C,
|
||||
0x30, 0x70, 0xE0, 0xFC, 0xE7, 0xE7, 0xE7, 0x7C, 0xFF, 0xE7, 0xE7, 0x07,
|
||||
0x0C, 0x38, 0x38, 0x38, 0x38, 0x7C, 0x67, 0xE7, 0xE7, 0x7C, 0xE7, 0xE7,
|
||||
0xE7, 0x7C, 0x7C, 0x67, 0xE7, 0xE7, 0x7F, 0x07, 0x04, 0x0C, 0x78, 0xFF,
|
||||
0x81, 0xFF, 0x77, 0x70, 0x07, 0x77, 0xE0, 0x0C, 0x23, 0x9C, 0xE1, 0xC7,
|
||||
0x8E, 0x0C, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xE1, 0xE1, 0xC0, 0xC0, 0xE3,
|
||||
0x04, 0x38, 0xE0, 0x7C, 0x67, 0xE7, 0x07, 0x0C, 0x38, 0x38, 0x00, 0x38,
|
||||
0x7F, 0x31, 0xF8, 0xFD, 0xFE, 0xFF, 0x7F, 0xBF, 0xC0, 0x7C, 0x00, 0x38,
|
||||
0x3C, 0x7C, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, 0xFF, 0x79, 0xDC, 0xEE,
|
||||
0x77, 0xF3, 0x9D, 0xCE, 0xE7, 0xFF, 0x00, 0x3F, 0x19, 0xDC, 0xFC, 0x0E,
|
||||
0x07, 0x03, 0xCE, 0xE7, 0x3F, 0x00, 0xFC, 0x7B, 0x9D, 0xCE, 0x77, 0x3B,
|
||||
0x9D, 0xCC, 0xEE, 0xFC, 0x00, 0xFF, 0xF8, 0xDC, 0x6E, 0x87, 0xC3, 0xA1,
|
||||
0xD6, 0xE3, 0xFF, 0x80, 0xFF, 0xF8, 0xDC, 0x6E, 0x87, 0xC3, 0xA1, 0xD0,
|
||||
0xE0, 0xF8, 0x00, 0x3F, 0x19, 0xDC, 0xFC, 0x0E, 0x07, 0x3F, 0xDE, 0xE7,
|
||||
0x3F, 0x80, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF,
|
||||
0x9C, 0xE7, 0x39, 0xCE, 0xF8, 0x0F, 0x87, 0x81, 0xC0, 0xE0, 0x77, 0x3B,
|
||||
0x9D, 0xCE, 0x7C, 0x00, 0xF3, 0xF9, 0xDC, 0xEE, 0xE7, 0xC3, 0xB9, 0xDE,
|
||||
0xE7, 0xF3, 0x80, 0xF8, 0x78, 0x1C, 0x0E, 0x07, 0x03, 0x8D, 0xC6, 0xE7,
|
||||
0xFF, 0x80, 0xE3, 0xF9, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0xAF, 0xC7, 0xE3,
|
||||
0x80, 0xE3, 0xF9, 0xFC, 0xFF, 0x7E, 0xFF, 0x3F, 0x9F, 0xC7, 0xE3, 0x80,
|
||||
0x3C, 0x1B, 0x9D, 0xDC, 0x7E, 0x3F, 0x1F, 0xCC, 0xEE, 0x3C, 0x00, 0xFF,
|
||||
0x79, 0xDC, 0xEE, 0x77, 0xF3, 0x81, 0xC0, 0xE0, 0xF8, 0x00, 0x7C, 0x67,
|
||||
0xE7, 0xE7, 0xE7, 0xEF, 0xEC, 0x7C, 0x0F, 0xFF, 0x79, 0xDC, 0xEE, 0x77,
|
||||
0xF3, 0xB9, 0xDE, 0xE7, 0xF3, 0x80, 0x7C, 0x67, 0xE7, 0xF0, 0x78, 0x0F,
|
||||
0xEF, 0xE7, 0x7C, 0xFF, 0xBB, 0xBB, 0x38, 0x38, 0x38, 0x38, 0x38, 0x7C,
|
||||
0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xFF, 0xE7, 0xE7, 0xE7,
|
||||
0xE7, 0xE7, 0xE7, 0xE4, 0x7C, 0x38, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0xBF,
|
||||
0xFF, 0xDF, 0xEF, 0xE3, 0x80, 0xE3, 0xF1, 0xF8, 0xEE, 0xE3, 0xC1, 0xE0,
|
||||
0xDC, 0xEE, 0xE3, 0x80, 0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0x38, 0x38, 0x38,
|
||||
0x7C, 0xFF, 0xF1, 0xF8, 0xF0, 0xE0, 0xC1, 0xCC, 0xC6, 0xE7, 0xFF, 0x80,
|
||||
0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xF8, 0xE0, 0x78, 0x1C, 0x07, 0x00, 0xC0,
|
||||
0x38, 0x1E, 0x07, 0x01, 0x80, 0xFF, 0xC6, 0x31, 0x8C, 0x63, 0xF8, 0x08,
|
||||
0x06, 0x0F, 0x0E, 0xEE, 0x38, 0xFF, 0xC0, 0xEE, 0xE3, 0x7C, 0x03, 0x9F,
|
||||
0xCC, 0xEE, 0x73, 0xDC, 0xF0, 0x78, 0x1C, 0x0E, 0x07, 0xF3, 0x9D, 0xCE,
|
||||
0xE7, 0xEF, 0x00, 0x7C, 0xE7, 0xE0, 0xE7, 0xE7, 0x7C, 0x0F, 0x07, 0x81,
|
||||
0xC0, 0xE7, 0xF7, 0x3B, 0x9D, 0xCE, 0x7B, 0x80, 0x7C, 0xE7, 0xFF, 0xE0,
|
||||
0xE0, 0x7C, 0x3C, 0x37, 0x77, 0x70, 0xF8, 0x70, 0x70, 0x70, 0xF8, 0x7B,
|
||||
0xF3, 0xB9, 0xDC, 0xE7, 0xF0, 0x3B, 0xF0, 0xF0, 0x78, 0x1C, 0x0E, 0xE7,
|
||||
0xBB, 0x9D, 0xCE, 0xE7, 0xF3, 0x80, 0x73, 0x81, 0xE7, 0x39, 0xCE, 0xF8,
|
||||
0x07, 0x07, 0x00, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7C, 0xF0, 0x78,
|
||||
0x1C, 0x0E, 0x77, 0x73, 0xE1, 0xDC, 0xEE, 0xF3, 0x80, 0xF7, 0x9C, 0xE7,
|
||||
0x39, 0xCE, 0xF8, 0xE7, 0x7F, 0xFF, 0xFD, 0x7E, 0xBF, 0x1C, 0xFC, 0xE7,
|
||||
0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0xE7, 0xE7, 0xE7, 0xE7, 0x7C, 0xEF, 0x39,
|
||||
0xDC, 0xEE, 0x67, 0xF3, 0x83, 0xE0, 0x7B, 0xF3, 0xB9, 0xDC, 0xE7, 0xF0,
|
||||
0x38, 0x3E, 0xEF, 0x3D, 0xDC, 0xEE, 0x77, 0x07, 0xC0, 0x7F, 0xE0, 0x7C,
|
||||
0x7F, 0x07, 0xFC, 0x10, 0x21, 0xC7, 0xF7, 0x0E, 0x1D, 0xBB, 0x18, 0xE7,
|
||||
0x73, 0xB9, 0xDC, 0xEE, 0x73, 0xDC, 0xE7, 0xE7, 0xE7, 0xE4, 0x7C, 0x38,
|
||||
0xE3, 0xF5, 0xFF, 0xFF, 0xFF, 0xFB, 0xB8, 0xE3, 0xBB, 0x8F, 0x06, 0xE7,
|
||||
0x77, 0x1C, 0xE7, 0xE7, 0xE7, 0xE7, 0x7F, 0x07, 0xFC, 0xFF, 0x8C, 0x38,
|
||||
0x33, 0x73, 0xFF, 0x0F, 0x08, 0x38, 0x38, 0xF0, 0x38, 0x38, 0x38, 0x0F,
|
||||
0xFF, 0x3F, 0xC0, 0xF0, 0xF8, 0x38, 0x38, 0x0F, 0x38, 0x38, 0x38, 0xF0,
|
||||
0x7B, 0xB5, 0xBB, 0xC0 };
|
||||
|
||||
const GFXglyph Px437_IBM_BIOS5pt7bGlyphs[] PROGMEM = {
|
||||
{ 0, 1, 1, 10, 0, 0 }, // 0x20 ' '
|
||||
{ 1, 5, 9, 10, 1, -8 }, // 0x21 '!'
|
||||
{ 7, 7, 4, 10, 1, -8 }, // 0x22 '"'
|
||||
{ 11, 9, 9, 10, 0, -8 }, // 0x23 '#'
|
||||
{ 22, 8, 9, 10, 0, -8 }, // 0x24 '$'
|
||||
{ 31, 9, 8, 10, 0, -7 }, // 0x25 '%'
|
||||
{ 40, 9, 9, 10, 0, -8 }, // 0x26 '&'
|
||||
{ 51, 4, 4, 10, 0, -8 }, // 0x27 '''
|
||||
{ 53, 5, 9, 10, 1, -8 }, // 0x28 '('
|
||||
{ 59, 5, 9, 10, 1, -8 }, // 0x29 ')'
|
||||
{ 65, 10, 7, 10, 0, -7 }, // 0x2A '*'
|
||||
{ 74, 8, 7, 10, 0, -7 }, // 0x2B '+'
|
||||
{ 81, 4, 4, 10, 1, -2 }, // 0x2C ','
|
||||
{ 83, 8, 1, 10, 0, -4 }, // 0x2D '-'
|
||||
{ 84, 3, 3, 10, 2, -2 }, // 0x2E '.'
|
||||
{ 86, 9, 9, 10, 0, -8 }, // 0x2F '/'
|
||||
{ 97, 9, 9, 10, 0, -8 }, // 0x30 '0'
|
||||
{ 108, 8, 9, 10, 0, -8 }, // 0x31 '1'
|
||||
{ 117, 8, 9, 10, 0, -8 }, // 0x32 '2'
|
||||
{ 126, 8, 9, 10, 0, -8 }, // 0x33 '3'
|
||||
{ 135, 9, 9, 10, 0, -8 }, // 0x34 '4'
|
||||
{ 146, 8, 9, 10, 0, -8 }, // 0x35 '5'
|
||||
{ 155, 8, 9, 10, 0, -8 }, // 0x36 '6'
|
||||
{ 164, 8, 9, 10, 0, -8 }, // 0x37 '7'
|
||||
{ 173, 8, 9, 10, 0, -8 }, // 0x38 '8'
|
||||
{ 182, 8, 9, 10, 0, -8 }, // 0x39 '9'
|
||||
{ 191, 3, 8, 10, 2, -7 }, // 0x3A ':'
|
||||
{ 194, 4, 9, 10, 1, -7 }, // 0x3B ';'
|
||||
{ 199, 6, 9, 10, 0, -8 }, // 0x3C '<'
|
||||
{ 206, 8, 5, 10, 0, -5 }, // 0x3D '='
|
||||
{ 211, 7, 9, 10, 1, -8 }, // 0x3E '>'
|
||||
{ 219, 8, 9, 10, 0, -8 }, // 0x3F '?'
|
||||
{ 228, 9, 9, 10, 0, -8 }, // 0x40 '@'
|
||||
{ 239, 8, 9, 10, 0, -8 }, // 0x41 'A'
|
||||
{ 248, 9, 9, 10, 0, -8 }, // 0x42 'B'
|
||||
{ 259, 9, 9, 10, 0, -8 }, // 0x43 'C'
|
||||
{ 270, 9, 9, 10, 0, -8 }, // 0x44 'D'
|
||||
{ 281, 9, 9, 10, 0, -8 }, // 0x45 'E'
|
||||
{ 292, 9, 9, 10, 0, -8 }, // 0x46 'F'
|
||||
{ 303, 9, 9, 10, 0, -8 }, // 0x47 'G'
|
||||
{ 314, 8, 9, 10, 0, -8 }, // 0x48 'H'
|
||||
{ 323, 5, 9, 10, 1, -8 }, // 0x49 'I'
|
||||
{ 329, 9, 9, 10, 0, -8 }, // 0x4A 'J'
|
||||
{ 340, 9, 9, 10, 0, -8 }, // 0x4B 'K'
|
||||
{ 351, 9, 9, 10, 0, -8 }, // 0x4C 'L'
|
||||
{ 362, 9, 9, 10, 0, -8 }, // 0x4D 'M'
|
||||
{ 373, 9, 9, 10, 0, -8 }, // 0x4E 'N'
|
||||
{ 384, 9, 9, 10, 0, -8 }, // 0x4F 'O'
|
||||
{ 395, 9, 9, 10, 0, -8 }, // 0x50 'P'
|
||||
{ 406, 8, 9, 10, 0, -8 }, // 0x51 'Q'
|
||||
{ 415, 9, 9, 10, 0, -8 }, // 0x52 'R'
|
||||
{ 426, 8, 9, 10, 0, -8 }, // 0x53 'S'
|
||||
{ 435, 8, 9, 10, 0, -8 }, // 0x54 'T'
|
||||
{ 444, 8, 9, 10, 0, -8 }, // 0x55 'U'
|
||||
{ 453, 8, 9, 10, 0, -8 }, // 0x56 'V'
|
||||
{ 462, 9, 9, 10, 0, -8 }, // 0x57 'W'
|
||||
{ 473, 9, 9, 10, 0, -8 }, // 0x58 'X'
|
||||
{ 484, 8, 9, 10, 0, -8 }, // 0x59 'Y'
|
||||
{ 493, 9, 9, 10, 0, -8 }, // 0x5A 'Z'
|
||||
{ 504, 5, 9, 10, 1, -8 }, // 0x5B '['
|
||||
{ 510, 9, 9, 10, 0, -8 }, // 0x5C '\'
|
||||
{ 521, 5, 9, 10, 1, -8 }, // 0x5D ']'
|
||||
{ 527, 9, 5, 10, 0, -8 }, // 0x5E '^'
|
||||
{ 533, 10, 1, 10, 0, 1 }, // 0x5F '_'
|
||||
{ 535, 4, 4, 10, 2, -8 }, // 0x60 '`'
|
||||
{ 537, 9, 6, 10, 0, -5 }, // 0x61 'a'
|
||||
{ 544, 9, 9, 10, 0, -8 }, // 0x62 'b'
|
||||
{ 555, 8, 6, 10, 0, -5 }, // 0x63 'c'
|
||||
{ 561, 9, 9, 10, 0, -8 }, // 0x64 'd'
|
||||
{ 572, 8, 6, 10, 0, -5 }, // 0x65 'e'
|
||||
{ 578, 8, 9, 10, 0, -8 }, // 0x66 'f'
|
||||
{ 587, 9, 7, 10, 0, -5 }, // 0x67 'g'
|
||||
{ 595, 9, 9, 10, 0, -8 }, // 0x68 'h'
|
||||
{ 606, 5, 9, 10, 1, -8 }, // 0x69 'i'
|
||||
{ 612, 8, 10, 10, 0, -8 }, // 0x6A 'j'
|
||||
{ 622, 9, 9, 10, 0, -8 }, // 0x6B 'k'
|
||||
{ 633, 5, 9, 10, 1, -8 }, // 0x6C 'l'
|
||||
{ 639, 9, 6, 10, 0, -5 }, // 0x6D 'm'
|
||||
{ 646, 8, 6, 10, 0, -5 }, // 0x6E 'n'
|
||||
{ 652, 8, 6, 10, 0, -5 }, // 0x6F 'o'
|
||||
{ 658, 9, 7, 10, 0, -5 }, // 0x70 'p'
|
||||
{ 666, 9, 7, 10, 0, -5 }, // 0x71 'q'
|
||||
{ 674, 9, 6, 10, 0, -5 }, // 0x72 'r'
|
||||
{ 681, 8, 6, 10, 0, -5 }, // 0x73 's'
|
||||
{ 687, 7, 9, 10, 1, -8 }, // 0x74 't'
|
||||
{ 695, 9, 6, 10, 0, -5 }, // 0x75 'u'
|
||||
{ 702, 8, 6, 10, 0, -5 }, // 0x76 'v'
|
||||
{ 708, 9, 6, 10, 0, -5 }, // 0x77 'w'
|
||||
{ 715, 9, 6, 10, 0, -5 }, // 0x78 'x'
|
||||
{ 722, 8, 7, 10, 0, -5 }, // 0x79 'y'
|
||||
{ 729, 8, 6, 10, 0, -5 }, // 0x7A 'z'
|
||||
{ 735, 8, 9, 10, 0, -8 }, // 0x7B '{'
|
||||
{ 744, 2, 9, 10, 4, -8 }, // 0x7C '|'
|
||||
{ 747, 8, 9, 10, 0, -8 }, // 0x7D '}'
|
||||
{ 756, 9, 3, 10, 0, -8 } }; // 0x7E '~'
|
||||
|
||||
const GFXfont Px437_IBM_BIOS5pt7b PROGMEM = {
|
||||
(uint8_t *)Px437_IBM_BIOS5pt7bBitmaps,
|
||||
(GFXglyph *)Px437_IBM_BIOS5pt7bGlyphs,
|
||||
0x20, 0x7E, 10 };
|
||||
|
||||
// Approx. 1432 bytes
|
|
@ -0,0 +1,31 @@
|
|||
#include "Watchy_DOS.h"
|
||||
|
||||
void WatchyDOS::drawWatchFace(){
|
||||
char time[6];
|
||||
time[0] = '0' + ((currentTime.Hour/10)%10);
|
||||
time[1] = '0' + (currentTime.Hour%10);
|
||||
time[2] = ':';
|
||||
time[3] = '0' + ((currentTime.Minute/10)%10);
|
||||
time[4] = '0' + (currentTime.Minute%10);
|
||||
time[5] = 0;
|
||||
display.fillScreen(GxEPD_BLACK);
|
||||
display.setTextColor(GxEPD_WHITE);
|
||||
display.setFont(&Px437_IBM_BIOS5pt7b);
|
||||
display.setCursor(0, 24);
|
||||
display.println("WATCHY-DOS 1.1.8");
|
||||
display.println("Copyright (c) 2020");
|
||||
display.println(" ");
|
||||
display.print("AUTOEXEC BAT ");
|
||||
display.println(time);
|
||||
display.print("COMMAND COM ");
|
||||
display.println(time);
|
||||
display.print("CONFIG SYS ");
|
||||
display.println(time);
|
||||
display.print("ESPTOOL PY ");
|
||||
display.println(time);
|
||||
display.println(" ");
|
||||
display.println(" 4 files 563 bytes");
|
||||
display.println(" 2048 bytes free");
|
||||
display.println(" ");
|
||||
display.println("<C:\\>esptool");
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef WATCHY_DOS_H
|
||||
#define WATCHY_DOS_H
|
||||
|
||||
#include <Watchy.h>
|
||||
#include "Px437_IBM_BIOS5pt7b.h"
|
||||
|
||||
class WatchyDOS : public Watchy{
|
||||
using Watchy::Watchy;
|
||||
public:
|
||||
void drawWatchFace();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
#include "Watchy_MacPaint.h"
|
||||
#include "settings.h"
|
||||
|
||||
WatchyMacPaint watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
}
|
||||
|
||||
void loop(){}
|
|
@ -0,0 +1,19 @@
|
|||
#include "Watchy_MacPaint.h"
|
||||
|
||||
const unsigned char *numbers [10] = {numbers0, numbers1, numbers2, numbers3, numbers4, numbers5, numbers6, numbers7, numbers8, numbers9};
|
||||
|
||||
void WatchyMacPaint::drawWatchFace(){
|
||||
display.fillScreen(GxEPD_WHITE);
|
||||
display.drawBitmap(0, 0, window, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK);
|
||||
|
||||
//Hour
|
||||
display.drawBitmap(35, 70, numbers[currentTime.Hour/10], 38, 50, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(70, 70, numbers[currentTime.Hour%10], 38, 50, GxEPD_BLACK); //second digit
|
||||
|
||||
//Colon
|
||||
display.drawBitmap(100, 80, colon, 11, 31, GxEPD_BLACK); //second digit
|
||||
|
||||
//Minute
|
||||
display.drawBitmap(115, 70, numbers[currentTime.Minute/10], 38, 50, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(153, 70, numbers[currentTime.Minute%10], 38, 50, GxEPD_BLACK); //second digit
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef WATCHY_MACPAINT_H
|
||||
#define WATCHY_MACPAINT_H
|
||||
|
||||
#include <Watchy.h>
|
||||
#include "macpaint.h"
|
||||
|
||||
class WatchyMacPaint : public Watchy{
|
||||
using Watchy::Watchy;
|
||||
public:
|
||||
void drawWatchFace();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,513 @@
|
|||
// 'colon', 11x31px
|
||||
const unsigned char colon [] PROGMEM = {
|
||||
0x00, 0x00, 0x07, 0x00, 0x0f, 0xc0, 0x1f, 0xc0, 0x3f, 0xc0, 0x3f, 0xc0, 0x3f, 0xc0, 0x1f, 0xc0,
|
||||
0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x1f, 0x80, 0x3f, 0x80,
|
||||
0x7f, 0x80, 0x7f, 0x80, 0x7f, 0x80, 0x3f, 0x80, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h0', 38x50px
|
||||
const unsigned char numbers0 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc,
|
||||
0x00, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x00,
|
||||
0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xe0, 0x00,
|
||||
0x01, 0xff, 0x81, 0xf0, 0x00, 0x01, 0xff, 0x03, 0xf8, 0x00, 0x01, 0xfe, 0x03, 0xfc, 0x00, 0x03,
|
||||
0xfc, 0x03, 0xfe, 0x00, 0x03, 0xf8, 0x01, 0xfe, 0x00, 0x07, 0xf8, 0x00, 0xfe, 0x00, 0x07, 0xf0,
|
||||
0x00, 0xff, 0x00, 0x07, 0xf0, 0x00, 0xff, 0x00, 0x07, 0xf0, 0x00, 0x7f, 0x00, 0x07, 0xf8, 0x00,
|
||||
0x7f, 0x00, 0x07, 0xfc, 0x00, 0x7f, 0x00, 0x03, 0xfc, 0x00, 0x7f, 0x00, 0x01, 0xfc, 0x00, 0xff,
|
||||
0x00, 0x01, 0xfc, 0x00, 0xfe, 0x00, 0x01, 0xfe, 0x01, 0xfe, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x00,
|
||||
0x00, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x7f, 0xff, 0xfc, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00,
|
||||
0x1f, 0xff, 0xe0, 0x00, 0x00, 0x0f, 0xff, 0xc0, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h1', 38x50px
|
||||
const unsigned char numbers1 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01,
|
||||
0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x07, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00,
|
||||
0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x1f, 0x7f, 0x80, 0x00, 0x00, 0x0e, 0x3f, 0x80, 0x00,
|
||||
0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00,
|
||||
0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00,
|
||||
0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f,
|
||||
0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80,
|
||||
0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00,
|
||||
0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
|
||||
0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h2', 38x50px
|
||||
const unsigned char numbers2 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x3f,
|
||||
0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff,
|
||||
0xe0, 0x00, 0x01, 0xff, 0xff, 0xf0, 0x00, 0x03, 0xfe, 0x3f, 0xf8, 0x00, 0x07, 0xfc, 0x07, 0xf8,
|
||||
0x00, 0x07, 0xf8, 0x03, 0xf8, 0x00, 0x07, 0xf0, 0x03, 0xf8, 0x00, 0x07, 0xf0, 0x03, 0xfc, 0x00,
|
||||
0x07, 0xf0, 0x01, 0xfc, 0x00, 0x07, 0xf0, 0x01, 0xfc, 0x00, 0x07, 0xf0, 0x03, 0xfc, 0x00, 0x07,
|
||||
0xf8, 0x03, 0xfc, 0x00, 0x07, 0xf8, 0x07, 0xf8, 0x00, 0x03, 0xf8, 0x07, 0xf0, 0x00, 0x01, 0xf0,
|
||||
0x0f, 0xf0, 0x00, 0x00, 0xe0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x3f,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0x01, 0xff, 0x00,
|
||||
0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x01,
|
||||
0xff, 0xc0, 0x00, 0x00, 0x03, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0x00, 0x01, 0xc0, 0x0f, 0xfe,
|
||||
0x00, 0x03, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0x07, 0xff, 0xff,
|
||||
0xff, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x3f, 0xff, 0xff,
|
||||
0x80, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h3', 38x50px
|
||||
const unsigned char numbers3 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x7f,
|
||||
0xff, 0xfc, 0x00, 0x00, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff,
|
||||
0xff, 0x00, 0x01, 0xff, 0x01, 0xff, 0x80, 0x01, 0xfc, 0x00, 0x7f, 0x80, 0x01, 0xfc, 0x00, 0x3f,
|
||||
0xc0, 0x01, 0xfc, 0x00, 0x3f, 0xc0, 0x01, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x3f, 0xc0,
|
||||
0x01, 0xfc, 0x00, 0x7f, 0xc0, 0x00, 0xf8, 0x00, 0x7f, 0x80, 0x00, 0x70, 0x00, 0x7f, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x00,
|
||||
0x0f, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x3f,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x03, 0x80, 0x0f, 0xfe,
|
||||
0x00, 0x07, 0xc0, 0x07, 0xff, 0x00, 0x0f, 0xe0, 0x00, 0xff, 0x00, 0x1f, 0xe0, 0x00, 0x7f, 0x00,
|
||||
0x1f, 0xe0, 0x00, 0x7f, 0x00, 0x1f, 0xc0, 0x00, 0x7f, 0x00, 0x1f, 0xc0, 0x00, 0x7f, 0x00, 0x1f,
|
||||
0xc0, 0x00, 0x7f, 0x00, 0x1f, 0xc0, 0x00, 0x7f, 0x00, 0x1f, 0xf0, 0x00, 0x7f, 0x00, 0x1f, 0xf8,
|
||||
0x00, 0xff, 0x00, 0x1f, 0xfc, 0x07, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xff,
|
||||
0xfc, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x3f, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x1f, 0xff, 0xc0, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h4', 38x50px
|
||||
const unsigned char numbers4 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x70, 0x00, 0x00, 0x7f, 0x00, 0xf8,
|
||||
0x00, 0x00, 0x7f, 0x01, 0xfc, 0x00, 0x00, 0x7f, 0x01, 0xfc, 0x00, 0x00, 0xff, 0x01, 0xfc, 0x00,
|
||||
0x00, 0xff, 0x01, 0xfc, 0x00, 0x00, 0xfe, 0x01, 0xfc, 0x00, 0x00, 0xfe, 0x01, 0xfc, 0x00, 0x00,
|
||||
0xfe, 0x01, 0xfc, 0x00, 0x00, 0xfe, 0x01, 0xff, 0x00, 0x00, 0xfe, 0x01, 0xff, 0x80, 0x01, 0xfe,
|
||||
0x01, 0xff, 0xc0, 0x01, 0xfe, 0x0f, 0xff, 0xc0, 0x01, 0xfd, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xff,
|
||||
0xff, 0x80, 0x01, 0xff, 0xff, 0xff, 0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xff, 0xfe,
|
||||
0x00, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x01, 0xff, 0xfc, 0xfe, 0x00, 0x00, 0xff, 0x80, 0xfe, 0x00,
|
||||
0x00, 0x70, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
|
||||
0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00,
|
||||
0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||
0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h5', 38x50px
|
||||
const unsigned char numbers5 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xfe, 0x00, 0x07,
|
||||
0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xff, 0xff, 0xff, 0x80, 0x0f, 0xff,
|
||||
0xff, 0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0x00, 0x07, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7c, 0x00, 0x00, 0x07, 0xff, 0xff, 0x80, 0x00,
|
||||
0x07, 0xff, 0xff, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xff, 0xf8, 0x00, 0x07,
|
||||
0xff, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xff, 0xfe, 0x00, 0x07, 0xff, 0xef, 0xff, 0x00, 0x07, 0xf0,
|
||||
0x00, 0xff, 0x80, 0x03, 0xe0, 0x00, 0x7f, 0x80, 0x01, 0xc0, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00,
|
||||
0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f,
|
||||
0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80,
|
||||
0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
|
||||
0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0xfe, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x0f,
|
||||
0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xe0, 0x00, 0x00, 0x1f, 0xff,
|
||||
0xc0, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h6', 38x50px
|
||||
const unsigned char numbers6 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x01,
|
||||
0xff, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xf8,
|
||||
0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00,
|
||||
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x03,
|
||||
0xfe, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xf8, 0xfe, 0x00, 0x00, 0x07, 0xf9,
|
||||
0xff, 0x00, 0x00, 0x07, 0xf3, 0xff, 0x80, 0x00, 0x0f, 0xf3, 0xff, 0xc0, 0x00, 0x0f, 0xe3, 0xff,
|
||||
0xe0, 0x00, 0x0f, 0xe1, 0xff, 0xf0, 0x00, 0x1f, 0xe0, 0xff, 0xf8, 0x00, 0x1f, 0xe0, 0x07, 0xfc,
|
||||
0x00, 0x1f, 0xc0, 0x03, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xfc, 0x00,
|
||||
0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x1f, 0xc0, 0x01, 0xfc, 0x00, 0x1f,
|
||||
0xc0, 0x01, 0xfc, 0x00, 0x1f, 0xe0, 0x01, 0xfc, 0x00, 0x1f, 0xe0, 0x03, 0xfc, 0x00, 0x0f, 0xe0,
|
||||
0x1f, 0xf8, 0x00, 0x0f, 0xfc, 0x3f, 0xf8, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0x00, 0x07, 0xff, 0xff,
|
||||
0xe0, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0x00,
|
||||
0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h7', 38x50px
|
||||
const unsigned char numbers7 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x07, 0xff,
|
||||
0xff, 0xfc, 0x00, 0x0f, 0xff, 0xff, 0xfe, 0x00, 0x0f, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff,
|
||||
0xff, 0x80, 0x07, 0xff, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x00,
|
||||
0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x03, 0xf8, 0x00, 0x00, 0x01, 0xc3, 0xf8, 0x00, 0x00, 0x03, 0xff, 0xf8, 0x00, 0x00, 0x07,
|
||||
0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xf0, 0x00, 0x00, 0x03, 0xff,
|
||||
0xf8, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x7f, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xfc,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x00,
|
||||
0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00,
|
||||
0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h8', 38x50px
|
||||
const unsigned char numbers8 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0xff, 0x80, 0x00, 0x00,
|
||||
0x3f, 0xff, 0xc0, 0x00, 0x00, 0x7f, 0xff, 0xe0, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x01, 0xff,
|
||||
0xff, 0xf8, 0x00, 0x03, 0xff, 0xff, 0xf8, 0x00, 0x07, 0xff, 0x8f, 0xf8, 0x00, 0x07, 0xf8, 0x03,
|
||||
0xf8, 0x00, 0x07, 0xf0, 0x03, 0xf8, 0x00, 0x0f, 0xf0, 0x03, 0xf8, 0x00, 0x0f, 0xf0, 0x03, 0xf8,
|
||||
0x00, 0x0f, 0xe0, 0x07, 0xf8, 0x00, 0x0f, 0xe0, 0x07, 0xf8, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 0x00,
|
||||
0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x0f, 0xf8, 0x1f, 0xf0, 0x00, 0x07, 0xff, 0xdf, 0xe0, 0x00, 0x03,
|
||||
0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x7f,
|
||||
0xff, 0xf0, 0x00, 0x00, 0x3f, 0xff, 0xf8, 0x00, 0x00, 0x1f, 0xff, 0xfc, 0x00, 0x00, 0x03, 0xff,
|
||||
0xfc, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x07, 0xf9, 0xff, 0x00, 0x00, 0x0f, 0xf0, 0xff,
|
||||
0x80, 0x00, 0x1f, 0xe0, 0x7f, 0xc0, 0x00, 0x1f, 0xe0, 0x3f, 0xe0, 0x00, 0x1f, 0xc0, 0x1f, 0xe0,
|
||||
0x00, 0x3f, 0xc0, 0x0f, 0xe0, 0x00, 0x3f, 0xc0, 0x0f, 0xf0, 0x00, 0x3f, 0x80, 0x0f, 0xf0, 0x00,
|
||||
0x7f, 0x80, 0x07, 0xf0, 0x00, 0x7f, 0x80, 0x0f, 0xf0, 0x00, 0x7f, 0x00, 0x0f, 0xf0, 0x00, 0x7f,
|
||||
0x80, 0x0f, 0xe0, 0x00, 0x7f, 0x80, 0x1f, 0xe0, 0x00, 0x3f, 0xf0, 0x3f, 0xe0, 0x00, 0x3f, 0xff,
|
||||
0xff, 0xc0, 0x00, 0x3f, 0xff, 0xff, 0x80, 0x00, 0x1f, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xfe,
|
||||
0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'h9', 38x50px
|
||||
const unsigned char numbers9 [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x03, 0xf8, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x7f,
|
||||
0xff, 0x80, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xff, 0xff, 0xe0, 0x00, 0x03, 0xff, 0xff,
|
||||
0xe0, 0x00, 0x03, 0xff, 0x1f, 0xe0, 0x00, 0x03, 0xf8, 0x0f, 0xe0, 0x00, 0x07, 0xf8, 0x0f, 0xe0,
|
||||
0x00, 0x07, 0xf8, 0x1f, 0xe0, 0x00, 0x07, 0xf0, 0x1f, 0xe0, 0x00, 0x07, 0xf0, 0x1f, 0xc0, 0x00,
|
||||
0x07, 0xf0, 0x3f, 0xc0, 0x00, 0x07, 0xf0, 0x7f, 0xc0, 0x00, 0x07, 0xf0, 0x7f, 0x80, 0x00, 0x07,
|
||||
0xf8, 0x7f, 0x00, 0x00, 0x07, 0xff, 0xfe, 0x00, 0x00, 0x03, 0xff, 0xfe, 0x00, 0x00, 0x03, 0xff,
|
||||
0xff, 0x00, 0x00, 0x03, 0xff, 0xff, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
|
||||
0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||
0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00,
|
||||
0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'macpaint', 200x200px
|
||||
const unsigned char window [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x00, 0x40, 0x00, 0x10, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1b, 0x00,
|
||||
0x8a, 0x40, 0x11, 0xc6, 0x01, 0x08, 0x46, 0x91, 0x00, 0x84, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x96, 0xa0, 0x12, 0xb4, 0x01, 0x15, 0x5a,
|
||||
0xaa, 0x00, 0xca, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x1f, 0x00, 0x9a, 0xe0, 0x12, 0x94, 0x01, 0x55, 0x55, 0xbb, 0x00, 0x8a, 0xa4, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x92, 0x80, 0x32, 0xd6, 0x01,
|
||||
0x55, 0x56, 0xa1, 0x80, 0xca, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x09, 0x00, 0x00, 0x88, 0x88, 0x10, 0x00, 0x04, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4a, 0xaa, 0xaa, 0xa5, 0x52, 0x55, 0x55, 0x49, 0x24, 0x95,
|
||||
0x54, 0xa5, 0x55, 0x55, 0x55, 0x4a, 0x55, 0x54, 0xa5, 0x55, 0x4a, 0x55, 0x54, 0xa5, 0x55, 0xb5,
|
||||
0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0xbf, 0xde, 0xff, 0xfa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x40, 0x01, 0x00, 0x0d, 0x5f, 0x77,
|
||||
0x77, 0x7f, 0xff, 0x77, 0x77, 0xff, 0x77, 0x77, 0x77, 0x7d, 0xf7, 0x77, 0xdf, 0x77, 0x7d, 0xf7,
|
||||
0x77, 0xdd, 0x55, 0xc0, 0x00, 0x00, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x41, 0xe2, 0x36, 0x4d,
|
||||
0x4d, 0xbb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xbb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb,
|
||||
0x6d, 0xb6, 0xdb, 0x6d, 0x55, 0x84, 0x09, 0x00, 0x2d, 0x6a, 0x02, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, 0xab, 0x48, 0x08,
|
||||
0x00, 0x06, 0xab, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x88, 0x31, 0x20, 0x2d, 0x55, 0x05, 0x56, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xad, 0xaa,
|
||||
0x4b, 0x80, 0x00, 0x0d, 0x6a, 0x05, 0x6a, 0xd5, 0x55, 0xb6, 0xdb, 0x55, 0xb6, 0xd5, 0xb6, 0xd6,
|
||||
0xdb, 0x6d, 0x6d, 0xb6, 0xdb, 0x5b, 0x6d, 0x69, 0x55, 0xc4, 0x02, 0x00, 0x0a, 0xab, 0x7a, 0xaa,
|
||||
0xad, 0xb6, 0xaa, 0xaa, 0xb6, 0xaa, 0xad, 0x55, 0x5a, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xad, 0xab, 0x42, 0x01, 0x2a, 0xcd, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x84, 0x00, 0x00, 0x0d, 0x75,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0xaa, 0x40, 0x02, 0x00, 0x05, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xf7, 0x7b, 0xff,
|
||||
0xfd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x40, 0x00, 0x00, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40,
|
||||
0x82, 0x04, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x85, 0x60, 0x06, 0x0d, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x41, 0x29, 0x0a, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0xc6, 0x28, 0x0b, 0x0d, 0x20, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x4a, 0x02, 0x11, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x84, 0x11, 0x1d, 0x85,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x10, 0x20, 0x8d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x82, 0x22,
|
||||
0x20, 0xcd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x00, 0x61, 0xa5, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0xd5, 0x53, 0x14, 0x4d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x0a, 0x82, 0x2d, 0xa0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x81, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x42, 0x82, 0x20, 0x05, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0xc2, 0x81, 0x16, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x42, 0xa0, 0x05,
|
||||
0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x44, 0x9a, 0x0b, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x88,
|
||||
0x18, 0x0a, 0x05, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x32, 0x0b, 0x0d, 0x60, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0xc4, 0x59, 0x09, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x42, 0x90, 0x0b, 0x0d, 0x60, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x80, 0x01, 0x00, 0x05, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x7f, 0xff, 0x7b, 0xfd,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0xff, 0xfe, 0x00, 0x06, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x7f, 0x7e,
|
||||
0x03, 0x0d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xff, 0x3e, 0x00, 0x8d, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x7f, 0x7e, 0x07, 0x05, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xff, 0x3e, 0x01, 0x0d, 0x60, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x7d, 0x5e, 0x0a, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xfc, 0x9e, 0x12, 0x05, 0xa0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0x7f, 0xfe, 0x14, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xfc, 0x9e, 0x18,
|
||||
0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x7a, 0x5e, 0x00, 0x05, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xff,
|
||||
0xff, 0x52, 0x4d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x02, 0x09, 0x2d, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x80, 0x01, 0x00, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x40, 0x00, 0x03, 0x85, 0x60, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x88, 0x02, 0x04, 0x4d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x46, 0x01, 0x08, 0xcd,
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0xc1, 0x82, 0x11, 0x8d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x40, 0x60,
|
||||
0x2b, 0x05, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80, 0x12, 0x26, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x40, 0x01, 0x34, 0x0c, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80, 0x00, 0x00, 0x06, 0xa0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x40, 0x02, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xff, 0xfb, 0xfb, 0xed, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0x40, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80, 0x02, 0x00,
|
||||
0x05, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x4d, 0xb1, 0x3e, 0xcd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80,
|
||||
0x08, 0x22, 0xad, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x48, 0x09, 0x35, 0x45, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0xc8, 0x08, 0x2a, 0xcd, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x48, 0x0a, 0x2a, 0xad, 0x60, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x8a, 0xa8, 0x3f, 0xc5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x01, 0x00, 0x0d,
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x80, 0x02, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x52, 0xa9,
|
||||
0x22, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xc8, 0x45, 0x49, 0x55, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x40, 0x00, 0x00, 0x0d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80, 0x02, 0x00, 0x0d, 0x60, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x47, 0xf1, 0x1f, 0xc5, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x88, 0x08, 0x2a, 0x4d, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0x48, 0x09, 0x35, 0xad, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xc8, 0x08, 0x2a,
|
||||
0x8d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x40, 0x02, 0x2a, 0xc5, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x87,
|
||||
0x61, 0x1d, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x80, 0x02, 0x00, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x7f, 0xff, 0xf7, 0xf5, 0xa0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x80, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x01, 0x00, 0x0d,
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0xc2, 0xc0, 0x0d, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x44, 0x32,
|
||||
0x15, 0xcd, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x88, 0x08, 0x2a, 0xad, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x48, 0x09, 0x35, 0x45, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x88, 0x10, 0x35, 0x4d, 0x60, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x46, 0xb2, 0x1f, 0x8d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xc0, 0x01, 0x00, 0x06, 0xa0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0x40, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x82, 0x93, 0x00,
|
||||
0x4d, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x69, 0x4a, 0xb6, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x80,
|
||||
0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x02, 0x00, 0x0d, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0xc7, 0x31, 0x19, 0x8d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x48, 0x88, 0x2e, 0xc5, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x88, 0x09, 0x32, 0x4d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x40, 0x10, 0x2a, 0xcd,
|
||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x84, 0x22, 0x15, 0x8d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x41, 0x81,
|
||||
0x0e, 0x05, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0xc0, 0x00, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x40, 0x02, 0x00, 0x0d, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x7f, 0xfb, 0xf7, 0xb5, 0x60, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0x80, 0x00, 0x00, 0x0d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x02, 0x00, 0x0d, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0xc1, 0xb0, 0x06, 0xc5, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x42, 0x12, 0x0a,
|
||||
0xcd, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x84, 0x21, 0x1a, 0x8d, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x44,
|
||||
0x60, 0x2b, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x80, 0x22, 0x29, 0x8e, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x4d, 0x11, 0x3f, 0xca, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0xc0, 0x40, 0x00, 0x0d, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x40, 0x02, 0x00, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x80, 0x01, 0x00, 0x0d,
|
||||
0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x7f, 0xff, 0xff, 0xfd, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xab, 0xdb, 0x6d, 0xad, 0xad, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x00, 0x00, 0x0d, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xaa, 0x80, 0x00, 0x00, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40, 0x00, 0x00,
|
||||
0x04, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x80, 0x00, 0x00, 0x0e, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x40,
|
||||
0x00, 0x00, 0x0a, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0xc0, 0x2a, 0xa8, 0x4d, 0x60, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x55, 0x40, 0x00, 0x00, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x80, 0x00, 0x00, 0x0d, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x55, 0x40, 0x40, 0x00, 0x0d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa, 0x81, 0x80, 0x00, 0x0d,
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x55, 0x43, 0x00, 0x00, 0x05, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0xda, 0x3f,
|
||||
0xff, 0x8d, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x55, 0x4c, 0x00, 0x00, 0x0d, 0x20, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xaa,
|
||||
0x80, 0x00, 0x00, 0x0d, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x02,
|
||||
0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x00, 0x01, 0x55, 0x40, 0x00, 0x00, 0x05, 0x64, 0x92, 0x94,
|
||||
0xa5, 0x29, 0x4a, 0x52, 0x94, 0xa5, 0x54, 0x28, 0x50, 0xa1, 0x42, 0x85, 0x0a, 0x14, 0x28, 0x54,
|
||||
0x91, 0xab, 0x80, 0x00, 0x00, 0x0d, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x40, 0x3f, 0xff, 0x8d, 0xa4,
|
||||
0x94, 0x92, 0x49, 0x24, 0x92, 0x49, 0x49, 0x29, 0x25, 0x4a, 0x95, 0x29, 0x29, 0x52, 0xa4, 0xa5,
|
||||
0x25, 0x24, 0x95, 0x55, 0xc0, 0x00, 0x00, 0x85, 0x55, 0x6a, 0xd5, 0xad, 0x5b, 0x5a, 0xb6, 0xaa,
|
||||
0xd5, 0x55, 0x55, 0x55, 0x56, 0xaa, 0xaa, 0xab, 0x55, 0x5a, 0xab, 0x6a, 0xab, 0x40, 0x00, 0x00,
|
||||
0x0d, 0x55, 0x55, 0x55, 0x55, 0x54, 0xaa, 0xa9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x2a, 0xaa, 0x80, 0x00, 0x00, 0x0d, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40,
|
||||
0x00, 0x00, 0x0d, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x4a, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x80, 0x00, 0x40, 0x05, 0x6e, 0xdb, 0x6d, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xef, 0x6d, 0xf7, 0x7d, 0xdf, 0xdd, 0xdd, 0xfb, 0xbb, 0xfb,
|
||||
0xd5, 0x40, 0x3f, 0xff, 0x8d, 0x40, 0x00, 0x00, 0xff, 0xfb, 0xba, 0xdb, 0x08, 0x5b, 0xb8, 0x41,
|
||||
0x00, 0x00, 0x00, 0x88, 0xa2, 0x48, 0x84, 0x46, 0x88, 0xd5, 0xc0, 0x3f, 0xff, 0x8d, 0x40, 0x00,
|
||||
0x00, 0xff, 0xfd, 0xdf, 0x77, 0x6b, 0x6e, 0xef, 0x7f, 0x00, 0x48, 0x89, 0x05, 0x77, 0x45, 0x31,
|
||||
0x12, 0xad, 0xd5, 0x40, 0x00, 0x00, 0x0d, 0x43, 0xff, 0xf8, 0xff, 0xee, 0xeb, 0xdd, 0x55, 0x7b,
|
||||
0xb9, 0x00, 0x00, 0x40, 0x4e, 0x72, 0xaa, 0xe2, 0x12, 0xaa, 0xee, 0xd5, 0x80, 0x00, 0x00, 0x0a,
|
||||
0xc3, 0xff, 0xf8, 0xff, 0xfd, 0xdd, 0x7f, 0x55, 0x5e, 0xed, 0xff, 0x00, 0x41, 0x08, 0x85, 0x9c,
|
||||
0x94, 0xaa, 0xaa, 0x99, 0xd5, 0x40, 0x00, 0x00, 0x0d, 0x43, 0xff, 0xf0, 0xff, 0xfb, 0xbf, 0xd5,
|
||||
0xaa, 0xb7, 0xb8, 0x00, 0x00, 0x42, 0x28, 0x8a, 0xaa, 0xc8, 0x94, 0x03, 0x88, 0xd5, 0x80, 0x00,
|
||||
0x00, 0x0d, 0x43, 0xff, 0xf8, 0xff, 0xfd, 0xd5, 0x7f, 0x55, 0x6d, 0xef, 0xff, 0x08, 0x48, 0x08,
|
||||
0x89, 0x67, 0x4a, 0x91, 0x12, 0xad, 0xd6, 0x40, 0x00, 0x00, 0x05, 0x43, 0xff, 0xf8, 0xff, 0xee,
|
||||
0xff, 0xeb, 0x55, 0x7e, 0xb8, 0x01, 0x00, 0x44, 0x4a, 0x22, 0x2a, 0x62, 0x32, 0xaa, 0xea, 0xd5,
|
||||
0xc0, 0x3f, 0xff, 0x8d, 0x43, 0xff, 0xf8, 0xff, 0xff, 0xda, 0xdf, 0x55, 0x57, 0xed, 0xdd, 0x00,
|
||||
0x41, 0x09, 0x55, 0xdc, 0xa2, 0x2a, 0xa2, 0xaa, 0xd5, 0x40, 0x3f, 0xff, 0x8d, 0x43, 0xff, 0xf0,
|
||||
0xaa, 0xb1, 0x36, 0xb5, 0xaa, 0xba, 0xba, 0xab, 0xff, 0xfa, 0xbd, 0xab, 0x33, 0xdd, 0xdb, 0xbe,
|
||||
0xdd, 0xd5, 0x80, 0x3f, 0xff, 0x8d, 0x43, 0xff, 0xf8, 0x80, 0x24, 0x04, 0x01, 0x12, 0x60, 0x0c,
|
||||
0x41, 0x00, 0x00, 0x00, 0x8a, 0xcc, 0x40, 0x0b, 0x9a, 0x00, 0x6b, 0x40, 0x3f, 0xff, 0x8d, 0x43,
|
||||
0xff, 0xf8, 0x00, 0x20, 0x12, 0x81, 0x44, 0x25, 0x48, 0xa6, 0x44, 0x48, 0x89, 0x14, 0x44, 0x51,
|
||||
0x1e, 0xa4, 0x84, 0x55, 0x80, 0x00, 0x00, 0x05, 0x43, 0xff, 0xf9, 0x00, 0x20, 0x44, 0x11, 0x11,
|
||||
0x60, 0x2b, 0x11, 0x11, 0x80, 0x0a, 0x23, 0x33, 0x7f, 0xfc, 0xee, 0xaa, 0xea, 0x40, 0x00, 0x00,
|
||||
0x0d, 0xc3, 0xff, 0xf0, 0x80, 0x21, 0x04, 0x01, 0x44, 0x2a, 0x88, 0x01, 0x44, 0x62, 0x28, 0x8a,
|
||||
0x11, 0x40, 0x0a, 0xaa, 0x8c, 0xd5, 0xc0, 0x00, 0x00, 0x0d, 0x43, 0xff, 0xf8, 0x00, 0x20, 0x04,
|
||||
0x45, 0x12, 0xa0, 0x0c, 0x43, 0x00, 0x40, 0x08, 0x8a, 0xcc, 0x48, 0x93, 0x9a, 0x40, 0x55, 0x40,
|
||||
0x00, 0x00, 0x0d, 0x40, 0x00, 0x00, 0x80, 0x20, 0x04, 0x01, 0x24, 0x64, 0xac, 0x4d, 0x4a, 0x48,
|
||||
0xc9, 0x12, 0x44, 0x41, 0x1e, 0x64, 0x04, 0x6b, 0x80, 0x00, 0x00, 0x05, 0x40, 0x00, 0x00, 0x80,
|
||||
0x21, 0x10, 0x21, 0x01, 0x21, 0x09, 0x31, 0x11, 0x40, 0x0a, 0x23, 0x33, 0x7b, 0x7c, 0xee, 0xca,
|
||||
0xd5, 0x40, 0x00, 0x00, 0x0d, 0x40, 0x00, 0x01, 0x00, 0x24, 0x45, 0x05, 0x54, 0x64, 0x4a, 0x01,
|
||||
0x00, 0x53, 0x29, 0x11, 0x11, 0x4c, 0x93, 0xaa, 0xaa, 0xd5, 0xff, 0xff, 0xff, 0xfd, 0x7f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xd5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0xaa, 0x92, 0x54, 0xa4, 0xaa, 0x4a,
|
||||
0x55, 0x55, 0x55, 0x49, 0x24, 0xaa, 0xa4, 0xa4, 0xa4, 0x49, 0x29, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5b, 0x55, 0x56,
|
||||
0xab, 0x55, 0xaa, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
#include "Watchy_Mario.h"
|
||||
#include "settings.h"
|
||||
|
||||
WatchyMario watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
}
|
||||
|
||||
void loop(){}
|
|
@ -0,0 +1,65 @@
|
|||
#include "Watchy_Mario.h"
|
||||
#define NUM_W 44
|
||||
#define NUM_H 44
|
||||
#define COIN_W 24
|
||||
#define COIN_H 30
|
||||
#define PIPE_W 42
|
||||
#define PIPE_H 47
|
||||
#define MARIO_W 56
|
||||
#define MARIO_H 54
|
||||
#define NUM_SPACING 4
|
||||
#define COIN_SPACING 4
|
||||
#define FLOOR_H 19
|
||||
#define PIPE_PADDING DISPLAY_HEIGHT - FLOOR_H - PIPE_H
|
||||
#define X_PADDING (DISPLAY_WIDTH - (4*NUM_W) - (3*NUM_SPACING))/2
|
||||
#define Y_PADDING 2*COIN_SPACING+COIN_H
|
||||
|
||||
|
||||
const unsigned char *numbers [10] = {mario0, mario1, mario2, mario3, mario4, mario5, mario6, mario7, mario8, mario9};
|
||||
|
||||
void WatchyMario::drawWatchFace(){
|
||||
display.fillScreen(GxEPD_WHITE);
|
||||
display.drawBitmap(0, 0, mariobg, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK);
|
||||
|
||||
int hour10 = currentTime.Hour/10;
|
||||
int hour01 = currentTime.Hour%10;
|
||||
int minute10 = currentTime.Minute/10;
|
||||
int minute01 = currentTime.Minute%10;
|
||||
|
||||
int pos = 0;
|
||||
|
||||
if(hour01 == 0 && minute10 == 0 && minute01 == 0){
|
||||
pos = 0;
|
||||
}
|
||||
else if(minute10 == 0 && minute01 == 0){
|
||||
pos = 1;
|
||||
}
|
||||
else if(minute01 == 0){
|
||||
pos = 2;
|
||||
}else{
|
||||
pos = 3;
|
||||
}
|
||||
|
||||
display.drawBitmap(X_PADDING + pos*(NUM_SPACING + NUM_W) + (NUM_W/2 - MARIO_W/2) + (pos < 2 ? 8 : -8), Y_PADDING+NUM_H + 4, pos < 2 ? mariomariol : mariomarior, MARIO_W, MARIO_H, GxEPD_BLACK); //mario
|
||||
display.drawBitmap(X_PADDING + pos*(NUM_SPACING + NUM_W) + (NUM_W/2 - COIN_W/2), COIN_SPACING, mariocoin, COIN_W, COIN_H, GxEPD_BLACK); //coin
|
||||
|
||||
if(pos == 0){
|
||||
display.drawBitmap(DISPLAY_WIDTH - 2*PIPE_W, PIPE_PADDING, mariopipe, PIPE_W, PIPE_H, GxEPD_BLACK); //pipe
|
||||
}
|
||||
else if(pos == 1 || pos == 2){
|
||||
display.drawBitmap(X_PADDING, PIPE_PADDING, mariopipe, PIPE_W, PIPE_H, GxEPD_BLACK); //pipe
|
||||
display.drawBitmap(DISPLAY_WIDTH - PIPE_W - X_PADDING, PIPE_PADDING, mariopipe, PIPE_W, PIPE_H, GxEPD_BLACK); //pipe
|
||||
}
|
||||
else{
|
||||
display.drawBitmap(2*PIPE_W, PIPE_PADDING, mariopipe, PIPE_W, PIPE_H, GxEPD_BLACK); //pipe
|
||||
}
|
||||
|
||||
|
||||
//Hour
|
||||
display.drawBitmap(X_PADDING, pos == 0 ? Y_PADDING : Y_PADDING + 20, numbers[hour10], NUM_W, NUM_H, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(X_PADDING+NUM_SPACING+NUM_W, pos == 1 ? Y_PADDING : Y_PADDING + 20, numbers[hour01], NUM_W, NUM_H, GxEPD_BLACK); //second digit
|
||||
|
||||
//Minute
|
||||
display.drawBitmap(X_PADDING+2*(NUM_SPACING+NUM_W), pos == 2 ? Y_PADDING : Y_PADDING + 20, numbers[minute10], NUM_W, NUM_H, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(X_PADDING+3*(NUM_SPACING+NUM_W), pos == 3 ? Y_PADDING : Y_PADDING + 20, numbers[minute01], NUM_W, NUM_H, GxEPD_BLACK); //second digit
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef WATCHY_MARIO_H
|
||||
#define WATCHY_MARIO_H
|
||||
|
||||
#include <Watchy.h>
|
||||
#include "mario.h"
|
||||
|
||||
class WatchyMario: public Watchy{
|
||||
using Watchy::Watchy;
|
||||
public:
|
||||
void drawWatchFace();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,600 @@
|
|||
// '0', 44x44px
|
||||
const unsigned char mario0 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xfc, 0x00, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0,
|
||||
0xd0, 0xfc, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '1', 44x44px
|
||||
const unsigned char mario1 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x00, 0xff, 0xc0, 0x01, 0x70, 0xe0, 0x00, 0xff, 0xc0, 0x02, 0xb0,
|
||||
0xd0, 0x00, 0xc0, 0xc0, 0x01, 0x70, 0xe0, 0x00, 0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x03, 0x00, 0xc0,
|
||||
0x01, 0x70, 0xe0, 0x03, 0x00, 0xc0, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0c,
|
||||
0x00, 0xc0, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0xc0, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0f, 0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x0f, 0xc0, 0xc0,
|
||||
0x01, 0x70, 0xe0, 0x00, 0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x00, 0xc0, 0xc0, 0x01, 0x70, 0xe0, 0x00,
|
||||
0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x00, 0xc0, 0xc0, 0x01, 0x70, 0xe0, 0x00, 0xc0, 0xc0, 0x02, 0xb0,
|
||||
0xd0, 0x00, 0xc0, 0xc0, 0x01, 0x70, 0xe0, 0x00, 0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x00, 0xc0, 0xc0,
|
||||
0x01, 0x70, 0xe0, 0x00, 0xc0, 0xc0, 0x02, 0xb0, 0xd0, 0x00, 0xc0, 0xc0, 0x01, 0x70, 0xe0, 0x0f,
|
||||
0xc0, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xc0, 0xfc, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '2', 44x44px
|
||||
const unsigned char mario2 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xfc, 0x00, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xff, 0xe1, 0x80, 0xc1, 0x70, 0xe0, 0xff, 0xe1, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x01, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0x00, 0x07, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x07, 0x80, 0xc1, 0x70, 0xe0, 0x00,
|
||||
0x38, 0x0f, 0xc2, 0xb0, 0xd0, 0x00, 0x38, 0x0f, 0xc1, 0x70, 0xe0, 0x00, 0xc0, 0x0c, 0x02, 0xb0,
|
||||
0xd0, 0x00, 0xc0, 0x0c, 0x01, 0x70, 0xe0, 0x0f, 0x00, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0x00, 0xfc,
|
||||
0x01, 0x70, 0xe0, 0x30, 0x00, 0xc0, 0x02, 0xb0, 0xd0, 0x30, 0x00, 0xc0, 0x01, 0x70, 0xe0, 0xc0,
|
||||
0x00, 0xff, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0xff, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00,
|
||||
0xc1, 0x70, 0xe0, 0xff, 0xff, 0xff, 0xc2, 0xb0, 0xd0, 0xff, 0xff, 0xff, 0xc1, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '3', 44x44px
|
||||
const unsigned char mario3 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xfc, 0x00, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xff, 0xe1, 0x80, 0xc1, 0x70, 0xe0, 0xff, 0xe1, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x07, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0x00, 0x07, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x18, 0x03, 0xc1, 0x70, 0xe0, 0x00,
|
||||
0x18, 0x03, 0xc2, 0xb0, 0xd0, 0x00, 0x18, 0x03, 0xc1, 0x70, 0xe0, 0x00, 0x07, 0x83, 0xc2, 0xb0,
|
||||
0xd0, 0x00, 0x07, 0x80, 0xc1, 0x70, 0xe0, 0xff, 0xe1, 0x80, 0xc2, 0xb0, 0xd0, 0xff, 0xe1, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0,
|
||||
0xd0, 0xfc, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '4', 44x44px
|
||||
const unsigned char mario4 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x00, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x00, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x03, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x03, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x30, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x30,
|
||||
0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x30, 0x1e, 0x0c, 0x01, 0x70, 0xe0, 0x30, 0x1e, 0x0c, 0x02, 0xb0,
|
||||
0xd0, 0x30, 0x66, 0x0c, 0x01, 0x70, 0xe0, 0x30, 0x66, 0x0c, 0x02, 0xb0, 0xd0, 0x30, 0x7e, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0x30, 0x7e, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00,
|
||||
0xc1, 0x70, 0xe0, 0xff, 0xfc, 0x0f, 0xc2, 0xb0, 0xd0, 0xff, 0xfc, 0x0f, 0xc1, 0x70, 0xe0, 0x00,
|
||||
0x0c, 0x0c, 0x02, 0xb0, 0xd0, 0x00, 0x0c, 0x0c, 0x01, 0x70, 0xe0, 0x00, 0x0c, 0x0c, 0x02, 0xb0,
|
||||
0xd0, 0x00, 0x0c, 0x0c, 0x01, 0x70, 0xe0, 0x00, 0x0c, 0x0c, 0x02, 0xb0, 0xd0, 0x00, 0x0c, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x00, 0x0f, 0xfc, 0x02, 0xb0, 0xd0, 0x00, 0x0f, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '5', 44x44px
|
||||
const unsigned char mario5 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0xff, 0xff, 0xff, 0xc1, 0x70, 0xe0, 0xff, 0xff, 0xff, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0xff, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0xff, 0xc2, 0xb0, 0xd0, 0xc0, 0x60, 0x00, 0x01, 0x70, 0xe0, 0xc0, 0x60, 0x00, 0x02, 0xb0,
|
||||
0xd0, 0xc0, 0x7f, 0xfc, 0x01, 0x70, 0xe0, 0xc0, 0x7f, 0xfc, 0x02, 0xb0, 0xd0, 0xc0, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0xc0, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xc0, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0xff,
|
||||
0xfe, 0x0f, 0xc2, 0xb0, 0xd0, 0x3f, 0xff, 0x80, 0xc1, 0x70, 0xe0, 0x00, 0x01, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0x00, 0x01, 0x80, 0xc1, 0x70, 0xe0, 0xff, 0xe1, 0x80, 0xc2, 0xb0, 0xd0, 0xff, 0xe1, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0,
|
||||
0xd0, 0xfc, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '6', 44x44px
|
||||
const unsigned char mario6 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x03, 0xff, 0xff, 0xc1, 0x70, 0xe0, 0x03, 0xff, 0xff, 0xc2, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0x30, 0x00, 0x00,
|
||||
0xc1, 0x70, 0xe0, 0x30, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0xff, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0xff, 0xc2, 0xb0, 0xd0, 0xc0, 0x60, 0x00, 0x01, 0x70, 0xe0, 0xc0, 0x60, 0x00, 0x02, 0xb0,
|
||||
0xd0, 0xc0, 0x7f, 0xfc, 0x01, 0x70, 0xe0, 0xc0, 0x7f, 0xfc, 0x02, 0xb0, 0xd0, 0xc0, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0xc0, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xc0, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x7f, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0,
|
||||
0xd0, 0xfc, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '7', 44x44px
|
||||
const unsigned char mario7 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0xff, 0xff, 0xff, 0xc1, 0x70, 0xe0, 0xff, 0xff, 0xff, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xc0, 0x00, 0x00,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xff, 0xff, 0x80, 0xc1, 0x70, 0xe0, 0xff,
|
||||
0xff, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x01, 0x80, 0xc1, 0x70, 0xe0, 0x00, 0x01, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0x00, 0x06, 0x03, 0x01, 0x70, 0xe0, 0x00, 0x06, 0x03, 0x02, 0xb0, 0xd0, 0x00, 0x18, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x00, 0x18, 0x0c, 0x02, 0xb0, 0xd0, 0x00, 0x60, 0x30, 0x01, 0x70, 0xe0, 0x00,
|
||||
0x60, 0x30, 0x02, 0xb0, 0xd0, 0x01, 0x80, 0xc0, 0x01, 0x70, 0xe0, 0x01, 0x80, 0xc0, 0x02, 0xb0,
|
||||
0xd0, 0x01, 0x80, 0xc0, 0x01, 0x70, 0xe0, 0x01, 0x80, 0xc0, 0x02, 0xb0, 0xd0, 0x01, 0x80, 0xc0,
|
||||
0x01, 0x70, 0xe0, 0x01, 0x80, 0xc0, 0x02, 0xb0, 0xd0, 0x01, 0x80, 0xc0, 0x01, 0x70, 0xe0, 0x01,
|
||||
0x80, 0xc0, 0x02, 0xb0, 0xd0, 0x01, 0x80, 0xc0, 0x01, 0x70, 0xe0, 0x01, 0x80, 0xc0, 0x02, 0xb0,
|
||||
0xd0, 0x01, 0x80, 0xc0, 0x01, 0x70, 0xe0, 0x01, 0x80, 0xc0, 0x02, 0xb0, 0xd0, 0x01, 0x80, 0xc0,
|
||||
0x01, 0x70, 0xe0, 0x01, 0xff, 0xc0, 0x02, 0xb0, 0xd0, 0x01, 0xff, 0xc0, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '8', 44x44px
|
||||
const unsigned char mario8 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xfc, 0x00, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xf0, 0x00, 0x03, 0xc1, 0x70, 0xe0, 0xf0,
|
||||
0x00, 0x03, 0xc2, 0xb0, 0xd0, 0xf0, 0x00, 0x03, 0xc1, 0x70, 0xe0, 0xf0, 0x7f, 0x83, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0,
|
||||
0xd0, 0xfc, 0x00, 0x0f, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0x0c, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// '9', 44x44px
|
||||
const unsigned char mario9 [] PROGMEM = {
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x35, 0x55, 0x55, 0x55,
|
||||
0x55, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x0a, 0xc0, 0xd0, 0x00, 0x00, 0x00, 0x05, 0x70, 0xe0, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd0, 0x0f, 0xff, 0xfc, 0x01, 0x70, 0xe0, 0x0f, 0xff, 0xfc, 0x02, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x0c, 0x01, 0x70, 0xe0, 0x0c, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xfc, 0x00, 0x0f,
|
||||
0xc1, 0x70, 0xe0, 0xfc, 0x00, 0x0f, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xc0,
|
||||
0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0,
|
||||
0xd0, 0xc0, 0x61, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x61, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x61, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0xc0, 0x7f, 0x80, 0xc2, 0xb0, 0xd0, 0xc0, 0x7f, 0x80, 0xc1, 0x70, 0xe0, 0xfc,
|
||||
0x00, 0x00, 0xc2, 0xb0, 0xd0, 0xfc, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0x0c, 0x00, 0x00, 0xc2, 0xb0,
|
||||
0xd0, 0x0c, 0x00, 0x00, 0xc1, 0x70, 0xe0, 0x0f, 0xff, 0x80, 0xc2, 0xb0, 0xd0, 0x0f, 0xff, 0x80,
|
||||
0xc1, 0x70, 0xe0, 0x00, 0x01, 0x80, 0xc2, 0xb0, 0xd0, 0x00, 0x01, 0x80, 0xc1, 0x70, 0xe0, 0xff,
|
||||
0xff, 0x80, 0xc2, 0xb0, 0xd0, 0xff, 0xff, 0x80, 0xc1, 0x70, 0xe0, 0xc0, 0x00, 0x03, 0x02, 0xb0,
|
||||
0xd0, 0xc0, 0x00, 0x03, 0x01, 0x70, 0xe0, 0xc0, 0x00, 0x0c, 0x02, 0xb0, 0xd0, 0xc0, 0x00, 0x0c,
|
||||
0x01, 0x70, 0xe0, 0xff, 0xff, 0xf0, 0x02, 0xb0, 0xd0, 0xff, 0xff, 0xf0, 0x01, 0x70, 0xe8, 0x00,
|
||||
0x00, 0x00, 0x02, 0xb0, 0xd4, 0x00, 0x00, 0x00, 0x05, 0x70, 0xea, 0x00, 0x00, 0x00, 0x0a, 0xb0,
|
||||
0x35, 0x55, 0x55, 0x55, 0x55, 0xc0, 0x3a, 0xaa, 0xaa, 0xaa, 0xaa, 0xc0, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xff, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x00
|
||||
};
|
||||
// 'bg', 200x200px
|
||||
const unsigned char mariobg [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfe, 0xff, 0xfe, 0xbf,
|
||||
0xff, 0xaf, 0xff, 0xeb, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xfe, 0xbf, 0xff, 0xaf, 0xff, 0xef, 0xff,
|
||||
0xeb, 0xff, 0xfa, 0xe4, 0x7f, 0xfc, 0x7f, 0xfc, 0x4f, 0xff, 0x47, 0xff, 0xc5, 0xff, 0xe4, 0xff,
|
||||
0xf4, 0x7f, 0xfc, 0x5f, 0xfe, 0x47, 0xff, 0xc7, 0xff, 0xc4, 0xff, 0xf4, 0xaa, 0xaf, 0xea, 0xaf,
|
||||
0xea, 0xab, 0xfa, 0xaa, 0xfe, 0xaa, 0xbf, 0xaa, 0xbf, 0xaa, 0xaf, 0xea, 0xab, 0xfa, 0xaa, 0xfe,
|
||||
0xaa, 0xfe, 0xaa, 0xbf, 0xaa, 0x11, 0x17, 0x91, 0x13, 0xd1, 0x11, 0xf1, 0x11, 0x79, 0x11, 0x1f,
|
||||
0x11, 0x1f, 0x11, 0x13, 0xd1, 0x11, 0xf1, 0x11, 0x79, 0x11, 0x3d, 0x11, 0x1f, 0x11, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x44, 0x44, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
|
||||
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
|
||||
0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44
|
||||
};
|
||||
// 'coin', 24x30px
|
||||
const unsigned char mariocoin [] PROGMEM = {
|
||||
0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x0f, 0x00, 0xf0, 0x0f, 0x00, 0xf0, 0x30, 0x00, 0x0c, 0x30,
|
||||
0x00, 0x0c, 0x30, 0x14, 0x0c, 0x30, 0x28, 0x0c, 0xc0, 0x43, 0x03, 0xc0, 0x83, 0x03, 0xc0, 0x43,
|
||||
0x03, 0xc0, 0x83, 0x03, 0xc0, 0x43, 0x03, 0xc0, 0x83, 0x03, 0xc0, 0x43, 0x03, 0xc0, 0x83, 0x03,
|
||||
0xc0, 0x43, 0x03, 0xc0, 0x83, 0x03, 0xc0, 0x43, 0x03, 0xc0, 0x83, 0x03, 0xc0, 0x43, 0x03, 0xc0,
|
||||
0x83, 0x03, 0x30, 0x3c, 0x0c, 0x30, 0x3c, 0x0c, 0x30, 0x00, 0x0c, 0x30, 0x00, 0x0c, 0x0f, 0x00,
|
||||
0xf0, 0x0f, 0x00, 0xf0, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00
|
||||
};
|
||||
// 'mario', 56x54px
|
||||
const unsigned char mariomarior [] PROGMEM = {
|
||||
0x00, 0x00, 0x03, 0xfc, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x00, 0x3f, 0x00, 0x00, 0x00,
|
||||
0x03, 0x03, 0x3f, 0xf3, 0xfc, 0x00, 0x00, 0x03, 0x03, 0x3f, 0xf3, 0xfc, 0x00, 0x00, 0x03, 0x00,
|
||||
0xff, 0xf3, 0x03, 0x00, 0x00, 0x03, 0x00, 0xff, 0xf3, 0x03, 0x00, 0x00, 0x03, 0x00, 0xff, 0xfc,
|
||||
0x03, 0x00, 0x00, 0x03, 0x00, 0xff, 0xfc, 0x03, 0x00, 0x00, 0x03, 0x00, 0xff, 0xff, 0xcc, 0x00,
|
||||
0x00, 0x03, 0x03, 0xff, 0xff, 0xcc, 0x00, 0x00, 0x03, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x03,
|
||||
0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x03, 0xff, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x03, 0xff, 0x00,
|
||||
0x03, 0xc0, 0x00, 0x00, 0x0f, 0xfc, 0x0c, 0xc3, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x0c, 0xc3, 0x00,
|
||||
0x00, 0x00, 0x3c, 0xfc, 0x0c, 0xc3, 0x00, 0x00, 0x00, 0x3c, 0xfc, 0x0c, 0xc3, 0x00, 0x00, 0x00,
|
||||
0x30, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00,
|
||||
0x30, 0x00, 0xc0, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0xc0, 0x00, 0x00, 0x3c, 0x00, 0xff, 0x03,
|
||||
0xf0, 0x00, 0x00, 0x3c, 0x00, 0xff, 0x03, 0xf0, 0x00, 0x00, 0x03, 0xc0, 0x0f, 0xff, 0x00, 0x00,
|
||||
0x00, 0x03, 0xc0, 0x0f, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0f, 0x03, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x0f, 0x03, 0xff,
|
||||
0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0xf0, 0xfc, 0x00, 0x00, 0x0f, 0xfc, 0x00, 0xf0, 0xfc, 0x00,
|
||||
0x00, 0x3c, 0x03, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x3c, 0x03, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x3c,
|
||||
0x00, 0xc0, 0x3c, 0x03, 0xc0, 0x00, 0x3c, 0x00, 0xc0, 0x3c, 0x03, 0xc0, 0x00, 0x3f, 0xf0, 0xc3,
|
||||
0xff, 0xff, 0xc0, 0x3f, 0xff, 0xf0, 0xc3, 0xff, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xf0, 0xfc,
|
||||
0xf0, 0xfc, 0x3f, 0xff, 0xff, 0xf0, 0xfc, 0xf0, 0xfc, 0x3f, 0xc3, 0xff, 0xf0, 0xff, 0x0c, 0xfc,
|
||||
0x3f, 0xc3, 0xff, 0xf0, 0xff, 0x0c, 0xfc, 0x3f, 0xcc, 0x0f, 0xff, 0xfc, 0x0c, 0xfc, 0x3f, 0xcc,
|
||||
0x0f, 0xff, 0xfc, 0x0c, 0xfc, 0x3f, 0xfc, 0xff, 0xff, 0xfc, 0x0c, 0xfc, 0x3f, 0xfc, 0xff, 0xff,
|
||||
0xfc, 0x0c, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x0c, 0x3f, 0xff, 0xf0, 0xff, 0xff, 0xfc, 0x0c,
|
||||
0x00, 0x00, 0x30, 0xff, 0xc0, 0x06, 0x3c, 0x00, 0x00, 0x30, 0xff, 0xc0, 0x06, 0x3c, 0x00, 0x00,
|
||||
0x30, 0xc0, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x30, 0xc0, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x3f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
// 'mariol', 56x54px
|
||||
const unsigned char mariomariol [] PROGMEM = {
|
||||
0x00, 0xfc, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xcf,
|
||||
0xfc, 0xc0, 0xc0, 0x00, 0x00, 0x3f, 0xcf, 0xfc, 0xc0, 0xc0, 0x00, 0x00, 0xc0, 0xcf, 0xff, 0x00,
|
||||
0xc0, 0x00, 0x00, 0xc0, 0xcf, 0xff, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x3f, 0xff, 0x00, 0xc0, 0x00,
|
||||
0x00, 0xc0, 0x3f, 0xff, 0x00, 0xc0, 0x00, 0x00, 0x33, 0xff, 0xff, 0x00, 0xc0, 0x00, 0x00, 0x33,
|
||||
0xff, 0xff, 0xc0, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff,
|
||||
0xff, 0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x03, 0xc0, 0x00, 0xff, 0xc0,
|
||||
0x00, 0x00, 0x00, 0xc3, 0x30, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0xc3, 0x30, 0x3f, 0xf0, 0x00, 0x00,
|
||||
0x00, 0xc3, 0x30, 0x3f, 0x3c, 0x00, 0x00, 0x00, 0xc3, 0x30, 0x3f, 0x3c, 0x00, 0x00, 0x03, 0x00,
|
||||
0x00, 0xff, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0x0c, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x0f, 0xc0, 0xff, 0x00, 0x3c, 0x00,
|
||||
0x00, 0x0f, 0xc0, 0xff, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xff, 0xf0, 0x03, 0xc0, 0x00, 0x00, 0x00,
|
||||
0xff, 0xf0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x30, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00,
|
||||
0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0xf0, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x3f, 0x0f, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x3f, 0x0f, 0x00, 0x3f, 0xf0, 0x00,
|
||||
0x00, 0xf0, 0x3c, 0x00, 0xc0, 0x3c, 0x00, 0x00, 0xf0, 0x3c, 0x00, 0xc0, 0x3c, 0x00, 0x03, 0xc0,
|
||||
0x3c, 0x03, 0x00, 0x3c, 0x00, 0x03, 0xc0, 0x3c, 0x03, 0x00, 0x3c, 0x00, 0x03, 0xff, 0xff, 0xc3,
|
||||
0x0f, 0xfc, 0x00, 0x03, 0xff, 0xff, 0xc3, 0x0f, 0xff, 0xfc, 0x0f, 0x3f, 0x0f, 0xff, 0xff, 0xff,
|
||||
0xfc, 0x0f, 0x3f, 0x0f, 0xff, 0xff, 0xfc, 0x3f, 0x30, 0xff, 0x0f, 0xff, 0xc3, 0xfc, 0x3f, 0x30,
|
||||
0xff, 0x0f, 0xff, 0xc3, 0xfc, 0x3f, 0x30, 0x3f, 0xff, 0xf0, 0x33, 0xfc, 0x3f, 0x30, 0x3f, 0xff,
|
||||
0xf0, 0x33, 0xfc, 0x3f, 0x30, 0x3f, 0xff, 0xff, 0x3f, 0xfc, 0x3f, 0x30, 0x3f, 0xff, 0xff, 0x3f,
|
||||
0xfc, 0x3f, 0x30, 0x3f, 0xff, 0xff, 0x0f, 0xff, 0xfc, 0x30, 0x3f, 0xff, 0xff, 0x0f, 0xff, 0xfc,
|
||||
0x3c, 0x60, 0x03, 0xff, 0x0c, 0x00, 0x00, 0x3c, 0x60, 0x03, 0xff, 0x0c, 0x00, 0x00, 0x1f, 0x80,
|
||||
0x00, 0x03, 0x0c, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00
|
||||
};
|
||||
// 'pipe', 42x47px
|
||||
const unsigned char mariopipe [] PROGMEM = {
|
||||
0x3f, 0xff, 0xff, 0xff, 0xff, 0x00, 0x50, 0x01, 0x11, 0x15, 0x55, 0x80, 0xa8, 0x02, 0xaa, 0xaa,
|
||||
0xab, 0xc0, 0xd0, 0x04, 0x44, 0x45, 0x55, 0xc0, 0xa8, 0x02, 0xaa, 0xaa, 0xab, 0xc0, 0xd0, 0x01,
|
||||
0x11, 0x15, 0x55, 0xc0, 0xa8, 0x02, 0xaa, 0xaa, 0xab, 0xc0, 0xd0, 0x04, 0x44, 0x45, 0x55, 0xc0,
|
||||
0xa8, 0x02, 0xaa, 0xaa, 0xab, 0xc0, 0xd0, 0x01, 0x11, 0x15, 0x55, 0xc0, 0xa8, 0x02, 0xaa, 0xaa,
|
||||
0xab, 0xc0, 0xd0, 0x04, 0x44, 0x45, 0x55, 0xc0, 0xa8, 0x02, 0xaa, 0xaa, 0xab, 0xc0, 0xd0, 0x01,
|
||||
0x11, 0x15, 0x55, 0xc0, 0xa8, 0x02, 0xaa, 0xaa, 0xab, 0xc0, 0xd0, 0x04, 0x44, 0x45, 0x55, 0xc0,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x80, 0x2a, 0x05, 0x55, 0x55,
|
||||
0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02,
|
||||
0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00,
|
||||
0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02, 0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55,
|
||||
0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02,
|
||||
0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00,
|
||||
0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02, 0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55,
|
||||
0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02,
|
||||
0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00,
|
||||
0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02, 0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55,
|
||||
0x57, 0x00, 0x34, 0x08, 0x88, 0x8a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00, 0x34, 0x02,
|
||||
0x22, 0x2a, 0xaf, 0x00, 0x2a, 0x05, 0x55, 0x55, 0x57, 0x00
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,10 @@
|
|||
#include "Watchy_Pokemon.h"
|
||||
#include "settings.h"
|
||||
|
||||
WatchyPokemon watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
}
|
||||
|
||||
void loop(){}
|
|
@ -0,0 +1,18 @@
|
|||
#include "Watchy_Pokemon.h"
|
||||
|
||||
void WatchyPokemon::drawWatchFace(){
|
||||
display.fillScreen(GxEPD_WHITE);
|
||||
display.drawBitmap(0, 0, pokemon, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK);
|
||||
display.setTextColor(GxEPD_BLACK);
|
||||
display.setFont(&FreeMonoBold9pt7b);
|
||||
display.setCursor(10, 170);
|
||||
if(currentTime.Hour < 10){
|
||||
display.print('0');
|
||||
}
|
||||
display.print(currentTime.Hour);
|
||||
display.print(':');
|
||||
if(currentTime.Minute < 10){
|
||||
display.print('0');
|
||||
}
|
||||
display.print(currentTime.Minute);
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef WATCHY_POKEMON_H
|
||||
#define WATCHY_POKEMON_H
|
||||
|
||||
#include <Watchy.h>
|
||||
#include "pokemon.h"
|
||||
|
||||
class WatchyPokemon : public Watchy{
|
||||
using Watchy::Watchy;
|
||||
public:
|
||||
void drawWatchFace();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,315 @@
|
|||
const unsigned char pokemon [] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0xfa, 0x06, 0xff, 0xbf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x02,
|
||||
0x06, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x03, 0x04, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
|
||||
0x08, 0x01, 0x8c, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xcf, 0xf1, 0x8c, 0xff, 0x3f, 0xc0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x20, 0x08, 0x00, 0x50, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0xd0, 0x80, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x3e, 0x8f, 0xa0, 0x30, 0xfa, 0x3e, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xef, 0xf8, 0x20,
|
||||
0xff, 0xbf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x3f, 0xc0, 0x83, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21, 0x42, 0x02,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x63, 0x42, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x21,
|
||||
0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc6, 0x23, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x07, 0xf2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x1a, 0x08, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x20, 0x08, 0x1a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x0a, 0x02, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x4f, 0x00, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
|
||||
0x00, 0x00, 0x00, 0x03, 0x07, 0x4f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x5d, 0xa1,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x08, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00,
|
||||
0x7b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0xdf, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x00, 0x00, 0x07, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07,
|
||||
0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x1b, 0x10, 0x00,
|
||||
0x00, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x00, 0xbb, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
|
||||
0xc8, 0x00, 0x00, 0xe7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe8, 0x00, 0x01, 0x3f, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x02, 0xe4, 0x00, 0x02, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0xf4, 0x66, 0x0d, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f,
|
||||
0x80, 0x00, 0x00, 0x01, 0xf6, 0x66, 0x07, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x01, 0x33, 0x89, 0xd7,
|
||||
0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf0, 0x00, 0x00, 0x01, 0x16, 0x00, 0x2f, 0xff, 0x90, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0xc0,
|
||||
0x00, 0x01, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x02, 0x01, 0xf8, 0x1a, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x14, 0x01, 0x83, 0xf8, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x05, 0xc7, 0xe0, 0x12, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x19, 0x02, 0x27, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0xe7, 0x00,
|
||||
0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x03, 0xef, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x03,
|
||||
0xef, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x03, 0xef, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x60, 0x71, 0xcf, 0x03, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x1e, 0x04, 0x00, 0x60, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x10, 0xf8, 0x7e, 0x08, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf3, 0xff, 0x18, 0x00,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x3e, 0x03, 0xf1, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xff, 0xf0,
|
||||
0xf0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0xff, 0xc0, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06,
|
||||
0x00, 0x00, 0x60, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x08, 0x00, 0x00, 0x70, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x70, 0x01, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xd0, 0x00, 0x20, 0xf8, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x21, 0xf8,
|
||||
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x61, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x00,
|
||||
0xf1, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0e, 0x81, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x07, 0x03, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x27, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xee, 0x7b, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x19, 0xf8, 0xfc, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x38, 0x19, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xf8,
|
||||
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xf0, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf1, 0xfc, 0x83, 0x02, 0x03, 0xe2, 0x06, 0x81, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
|
||||
0x20, 0x84, 0x05, 0x06, 0x1a, 0x06, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfc, 0x00, 0x60,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0x20, 0x8c, 0x0d, 0x0c, 0x02, 0x06, 0x81,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xce, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x08, 0x08, 0x20, 0x88, 0x05, 0x08, 0x02, 0x06, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xce,
|
||||
0x00, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x20, 0xb8, 0x18, 0x88, 0x03,
|
||||
0xfe, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc3, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0x80,
|
||||
0x00, 0x00, 0x08, 0x00, 0x20, 0xe4, 0x1f, 0xc8, 0x02, 0x02, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xc3, 0x80, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x08, 0x00, 0x20, 0x82, 0x20,
|
||||
0x64, 0x0a, 0x06, 0x41, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc1, 0xe0, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x7f, 0x80, 0x00, 0x00, 0x08, 0x00, 0xf8, 0x81, 0x20, 0x63, 0xe2, 0x02, 0x3f, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xc0, 0x70, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x08, 0x01, 0xf8,
|
||||
0x80, 0xa0, 0x21, 0xe2, 0x02, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x7f, 0x00,
|
||||
0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c, 0x1f, 0xe0, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x1c,
|
||||
0x1f, 0xe0, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf8,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x1f, 0xf8, 0x00, 0x0f, 0xfc, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0e, 0x03, 0x9c, 0x38, 0x00, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xc3, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x03, 0x9c, 0x38, 0x00, 0x0e, 0x1c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc3, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x80, 0xe3, 0xff, 0xff, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xc0, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0xe3, 0xff, 0xff,
|
||||
0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xc3, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0xe3, 0xff, 0xff, 0xf0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xf1, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe7,
|
||||
0xe0, 0x01, 0xc0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xf8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe7, 0xe0, 0x01, 0xc0, 0x60, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
|
||||
0x03, 0xe3, 0x00, 0x01, 0x80, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x03, 0xe3, 0x00, 0x01, 0x80, 0x1c, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00,
|
||||
0x01, 0xf0, 0x7c, 0x7f, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x4f, 0x00, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x7c, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x70, 0x00, 0x00, 0x00, 0x07, 0x4f, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0,
|
||||
0x00, 0x00, 0x01, 0xc0, 0x7c, 0x1c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x07, 0x5d, 0xa1,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x18, 0x00,
|
||||
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x07, 0xdf, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xf8, 0xc0, 0x00, 0x00, 0x01, 0xc0, 0x70, 0x18, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x07,
|
||||
0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x70,
|
||||
0x78, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x70, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x70, 0x70, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0e, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
|
||||
0x1f, 0x80, 0x08, 0x00, 0x0c, 0x1f, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3f, 0xc0, 0x10, 0x00, 0x1c, 0x3f, 0xc0,
|
||||
0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe3, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x1c, 0x38, 0xe0, 0x20, 0x00, 0x1c, 0x38, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xe3, 0x00,
|
||||
0x00, 0x00, 0x0e, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x38, 0xe0, 0x40, 0x00, 0x0c,
|
||||
0x38, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff, 0x83, 0x80, 0x00, 0x00, 0x7e, 0x0c, 0x60, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x0c, 0x1f, 0xe0, 0x80, 0x00, 0x0c, 0x1f, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff,
|
||||
0x83, 0x80, 0x00, 0x00, 0x7e, 0x0c, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0xe1, 0x00,
|
||||
0x00, 0x0c, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x01, 0xff, 0x83, 0xe0, 0x00, 0x00, 0x3c, 0x03, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0e, 0xc0, 0x00, 0x00, 0x3f, 0x0e, 0xc0, 0xc0, 0x00, 0x00,
|
||||
0x01, 0xfe, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x9f,
|
||||
0x84, 0x00, 0x00, 0x7f, 0x9f, 0x80, 0xc0, 0x00, 0x00, 0x01, 0xfe, 0x0f, 0xfc, 0x00, 0x00, 0x00,
|
||||
0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x7f, 0x9f, 0xff, 0xe0, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0x9f, 0xff, 0xe0,
|
||||
0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x9c, 0x1f, 0xf8, 0x00, 0x00, 0x03, 0xe0, 0x00, 0x01, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x9c,
|
||||
0x07, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00, 0x01, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x9c, 0x07, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x00,
|
||||
0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x16, 0x7f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x16, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xfe, 0x58, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xdc, 0x7f,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x61, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x61, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
|
||||
0x86, 0x33, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x7f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xcc, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x78, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x0b, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x0f, 0xf9, 0xfc, 0x3e, 0x20,
|
||||
0x6f, 0xf8, 0x00, 0xf0, 0x33, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x34, 0x1c, 0x08, 0x00, 0x20, 0x61, 0xa0, 0x60, 0x80, 0x00, 0xb0, 0x2d, 0x00, 0x00,
|
||||
0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x08, 0x00, 0x20,
|
||||
0xc0, 0x20, 0x60, 0x80, 0x00, 0xf0, 0x21, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x34, 0x1e, 0x08, 0x00, 0x20, 0x80, 0x20, 0x60, 0x80, 0x00, 0xf0, 0x21,
|
||||
0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0x0f,
|
||||
0xf0, 0x20, 0x8f, 0xbf, 0xe0, 0x80, 0x00, 0x85, 0xa1, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0xc8, 0x00, 0x20, 0x81, 0xa0, 0x20, 0x80, 0x00,
|
||||
0x85, 0xa2, 0x60, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
|
||||
0x1f, 0x08, 0x00, 0x20, 0x41, 0xa0, 0x60, 0x80, 0x00, 0x07, 0x03, 0x20, 0x00, 0xd0, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1f, 0x08, 0x00, 0xf8, 0x3f, 0x20, 0x20,
|
||||
0x80, 0x00, 0x07, 0x03, 0xe0, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x34, 0x1e, 0x08, 0x01, 0xf8, 0x1e, 0x20, 0x20, 0x80, 0x00, 0x05, 0x82, 0xe0, 0x00, 0xd0,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x1c, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x82, 0x60, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x07,
|
||||
0xe3, 0xfe, 0xff, 0xa0, 0x60, 0x00, 0x00, 0xff, 0x20, 0x28, 0x08, 0xd0, 0x34, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x30, 0xe0, 0x00, 0x00,
|
||||
0x80, 0xa0, 0x2c, 0x08, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
|
||||
0x00, 0x00, 0x80, 0x20, 0x80, 0x30, 0xe0, 0x00, 0x00, 0x80, 0xa0, 0x2c, 0x08, 0x50, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x25, 0x20,
|
||||
0x00, 0x00, 0x81, 0xa0, 0x29, 0x18, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0xfe, 0x22, 0x20, 0x00, 0x00, 0xff, 0x20, 0x68, 0x98, 0x50,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80,
|
||||
0x20, 0x20, 0x00, 0x00, 0x84, 0x20, 0x68, 0x48, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x80, 0x20, 0x80, 0x20, 0x20, 0x00, 0x00, 0x82, 0x10, 0x68,
|
||||
0x38, 0x50, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x03, 0xe0,
|
||||
0x20, 0xee, 0x20, 0x60, 0x00, 0x00, 0x81, 0x06, 0xe8, 0x18, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x07, 0xe0, 0x20, 0xff, 0xa0, 0x20, 0x00, 0x00, 0x80,
|
||||
0x87, 0xe8, 0x08, 0xd0, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0b, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0d, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xb0, 0x17,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x17, 0xff, 0xff, 0xe5, 0x80, 0x00, 0xf2,
|
||||
0x80, 0x03, 0xf8, 0x00, 0x1e, 0x10, 0x01, 0x18, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x37, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
|
||||
0x5c, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xfe, 0x60, 0xbf, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x60, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfd, 0x82, 0x33, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x33, 0x7f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc8, 0x1a, 0x7f, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x7f, 0xff, 0xd0, 0x60, 0x04, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0x20, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,151 @@
|
|||
// STARRY HORIZON for Watchy by SQFMI
|
||||
// Copyright 2021 Dan Delany dan.delany@gmail.com
|
||||
// Released under free MIT License : https://github.com/dandelany/watchy-faces/blob/main/LICENSE
|
||||
|
||||
#include <Watchy.h> //include the Watchy library
|
||||
#include <Fonts/FreeSansBold9pt7b.h> //include any fonts you want to use
|
||||
#include "MadeSunflower39pt7b.h"
|
||||
#include "stars.h"
|
||||
#include "settings.h"
|
||||
|
||||
#define STAR_COUNT 900
|
||||
|
||||
const int horizonY = 150;
|
||||
const int planetR = 650;
|
||||
|
||||
struct xyPoint {
|
||||
int x;
|
||||
int y;
|
||||
};
|
||||
|
||||
//Star myStars[STAR_COUNT];
|
||||
void initStars() {
|
||||
// The random star field is loaded from PROGMEM - see stars.h
|
||||
// this is the function that was used to generate the stars in stars.h
|
||||
// it does not run normally but can be used to re-generate stars with different parameters
|
||||
// tweak as needed, call this function in init, open serial monitor, and paste the results into stars.h
|
||||
srand(5287); // randomSeed() is not stable on ESP32, use srand
|
||||
printf("const Star STARS[] PROGMEM = {\n");
|
||||
for(int i = 0; i < STAR_COUNT; i++) {
|
||||
int starX = (rand() % 260) - 30;
|
||||
int starY = (rand() % 260) - 30;
|
||||
int radius = 0;
|
||||
if (i > STAR_COUNT * 0.99) radius = 2;
|
||||
else if (i > STAR_COUNT * 0.80) radius = 1;
|
||||
printf(" { %d, %d, %d },\n", starX, starY, radius);
|
||||
// myStars[i] = { starX, starY, radius };
|
||||
}
|
||||
printf("};\n");
|
||||
}
|
||||
|
||||
struct xyPoint rotatePointAround(int x, int y, int ox, int oy, double angle) {
|
||||
// rotate X,Y point around given origin point by a given angle
|
||||
// based on https://gist.github.com/LyleScott/e36e08bfb23b1f87af68c9051f985302#file-rotate_2d_point-py-L38
|
||||
double qx = (double)ox + (cos(angle) * (double)(x - ox)) + (sin(angle) * (double)(y - oy));
|
||||
double qy = (double)oy + (-sin(angle) * (double)(x - ox)) + (cos(angle) * (double)(y - oy));
|
||||
struct xyPoint newPoint;
|
||||
newPoint.x = (int)qx;
|
||||
newPoint.y = (int)qy;
|
||||
return newPoint;
|
||||
}
|
||||
|
||||
class StarryHorizon : public Watchy {
|
||||
public:
|
||||
StarryHorizon(const watchySettings& s) : Watchy(s) {
|
||||
// uncomment to re-generate stars
|
||||
// initStars();
|
||||
}
|
||||
void drawWatchFace(){
|
||||
display.fillScreen(GxEPD_BLACK);
|
||||
display.fillCircle(100, horizonY + planetR, planetR, GxEPD_WHITE);
|
||||
drawGrid();
|
||||
drawStars(STARS);
|
||||
drawTime();
|
||||
drawDate();
|
||||
}
|
||||
void drawGrid() {
|
||||
int prevY = horizonY;
|
||||
for(int i = 0; i < 40; i+= 1) {
|
||||
int y = prevY + int(abs(sin(double(i) / 10) * 10));
|
||||
if(y <= 200) {
|
||||
display.drawFastHLine(0, y, 200, GxEPD_BLACK);
|
||||
}
|
||||
prevY = y;
|
||||
}
|
||||
int vanishY = horizonY - 25;
|
||||
for (int x = -230; x < 430; x += 20) {
|
||||
display.drawLine(x, 200, 100, vanishY, GxEPD_BLACK);
|
||||
}
|
||||
}
|
||||
void drawStars(const Star stars[]) {
|
||||
// draw field of stars
|
||||
// rotate stars so that they make an entire revolution once per hour
|
||||
int minute = (int)currentTime.Minute;
|
||||
double minuteAngle = ((2.0 * M_PI) / 60.0) * (double)minute;
|
||||
// printf("Minute %d, angle %f\n", (int)currentTime.Minute, minuteAngle);
|
||||
|
||||
for(int starI = 0; starI < STAR_COUNT; starI++) {
|
||||
int starX = stars[starI].x;
|
||||
int starY = stars[starI].y;
|
||||
int starR = stars[starI].r;
|
||||
|
||||
struct xyPoint rotated = rotatePointAround(starX, starY, 100, 100, minuteAngle);
|
||||
if(rotated.x < 0 || rotated.y < 0 || rotated.x > 200 || rotated.y > horizonY) {
|
||||
continue;
|
||||
}
|
||||
if(starR == 0) {
|
||||
display.drawPixel(rotated.x, rotated.y, GxEPD_WHITE);
|
||||
} else {
|
||||
display.fillCircle(rotated.x, rotated.y, starR, GxEPD_WHITE);
|
||||
}
|
||||
}
|
||||
}
|
||||
void drawTime() {
|
||||
display.setFont(&MADE_Sunflower_PERSONAL_USE39pt7b);
|
||||
display.setTextColor(GxEPD_WHITE);
|
||||
display.setTextWrap(false);
|
||||
char* timeStr;
|
||||
asprintf(&timeStr, "%d:%02d", currentTime.Hour, currentTime.Minute);
|
||||
drawCenteredString(timeStr, 100, 115, false);
|
||||
free(timeStr);
|
||||
}
|
||||
|
||||
void drawDate() {
|
||||
String monthStr = monthShortStr(currentTime.Month);
|
||||
String dayOfWeek = dayShortStr(currentTime.Wday);
|
||||
display.setFont(&FreeSansBold9pt7b);
|
||||
display.setTextColor(GxEPD_WHITE);
|
||||
display.setTextWrap(false);
|
||||
char* dateStr;
|
||||
asprintf(&dateStr, "%s %s %d", dayOfWeek.c_str(), monthStr.c_str(), currentTime.Day);
|
||||
drawCenteredString(dateStr, 100, 140, true);
|
||||
free(dateStr);
|
||||
}
|
||||
|
||||
void drawCenteredString(const String &str, int x, int y, bool drawBg) {
|
||||
int16_t x1, y1;
|
||||
uint16_t w, h;
|
||||
|
||||
display.getTextBounds(str, x, y, &x1, &y1, &w, &h);
|
||||
// printf("bounds: %d x %d y, %d x1 %d y1, %d w, %d h\n", 0, 100, x1, y1, w, h);
|
||||
display.setCursor(x - w / 2, y);
|
||||
if(drawBg) {
|
||||
int padY = 3;
|
||||
int padX = 10;
|
||||
display.fillRect(x - (w / 2 + padX), y - (h + padY), w + padX*2, h + padY*2, GxEPD_BLACK);
|
||||
}
|
||||
// uncomment to draw bounding box
|
||||
// display.drawRect(x - w / 2, y - h, w, h, GxEPD_WHITE);
|
||||
display.print(str);
|
||||
}
|
||||
};
|
||||
|
||||
StarryHorizon face(settings); //instantiate watchface
|
||||
|
||||
void setup() {
|
||||
face.init(); //call init in setup
|
||||
}
|
||||
|
||||
void loop() {
|
||||
// this should never run, Watchy deep sleeps after init();
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,910 @@
|
|||
struct Star {
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t r;
|
||||
};
|
||||
|
||||
// pre-generated random star field
|
||||
// run initStars to re-generate with different params
|
||||
const Star STARS[] PROGMEM = {
|
||||
{ 158, 153, 0 },
|
||||
{ 180, 217, 0 },
|
||||
{ 229, 208, 0 },
|
||||
{ 17, 153, 0 },
|
||||
{ 115, 13, 0 },
|
||||
{ 174, 78, 0 },
|
||||
{ 27, 181, 0 },
|
||||
{ 80, 15, 0 },
|
||||
{ 105, 27, 0 },
|
||||
{ 149, -5, 0 },
|
||||
{ 12, 150, 0 },
|
||||
{ 142, 88, 0 },
|
||||
{ 79, 226, 0 },
|
||||
{ 159, -19, 0 },
|
||||
{ 219, 112, 0 },
|
||||
{ 182, 97, 0 },
|
||||
{ 167, 225, 0 },
|
||||
{ 199, -2, 0 },
|
||||
{ 191, 169, 0 },
|
||||
{ 209, 24, 0 },
|
||||
{ 28, 87, 0 },
|
||||
{ 29, -18, 0 },
|
||||
{ 66, 107, 0 },
|
||||
{ 85, 182, 0 },
|
||||
{ 29, -9, 0 },
|
||||
{ 141, 108, 0 },
|
||||
{ 185, -24, 0 },
|
||||
{ 200, 193, 0 },
|
||||
{ 135, 128, 0 },
|
||||
{ 8, 66, 0 },
|
||||
{ 19, 103, 0 },
|
||||
{ 52, 74, 0 },
|
||||
{ 203, -6, 0 },
|
||||
{ 20, 42, 0 },
|
||||
{ 59, 106, 0 },
|
||||
{ -5, 213, 0 },
|
||||
{ 29, 118, 0 },
|
||||
{ 215, 85, 0 },
|
||||
{ 67, 169, 0 },
|
||||
{ 213, 212, 0 },
|
||||
{ 15, 37, 0 },
|
||||
{ 5, 79, 0 },
|
||||
{ 78, 172, 0 },
|
||||
{ 4, 138, 0 },
|
||||
{ 35, 5, 0 },
|
||||
{ 180, 170, 0 },
|
||||
{ 61, -3, 0 },
|
||||
{ 29, 53, 0 },
|
||||
{ 156, 58, 0 },
|
||||
{ 162, 38, 0 },
|
||||
{ -26, 153, 0 },
|
||||
{ 11, 183, 0 },
|
||||
{ 76, 181, 0 },
|
||||
{ -27, 14, 0 },
|
||||
{ 195, 112, 0 },
|
||||
{ -26, 185, 0 },
|
||||
{ 76, 123, 0 },
|
||||
{ 208, 106, 0 },
|
||||
{ 123, 55, 0 },
|
||||
{ 227, 115, 0 },
|
||||
{ 105, 186, 0 },
|
||||
{ 29, 14, 0 },
|
||||
{ -10, 65, 0 },
|
||||
{ 52, 112, 0 },
|
||||
{ 56, -5, 0 },
|
||||
{ 40, 176, 0 },
|
||||
{ 42, 103, 0 },
|
||||
{ 94, 33, 0 },
|
||||
{ 194, 91, 0 },
|
||||
{ 19, 174, 0 },
|
||||
{ 121, -20, 0 },
|
||||
{ 7, 141, 0 },
|
||||
{ 50, 192, 0 },
|
||||
{ 96, 113, 0 },
|
||||
{ 40, -2, 0 },
|
||||
{ 205, 31, 0 },
|
||||
{ 64, 201, 0 },
|
||||
{ 205, 99, 0 },
|
||||
{ 181, 8, 0 },
|
||||
{ 178, 138, 0 },
|
||||
{ 196, 195, 0 },
|
||||
{ -23, -8, 0 },
|
||||
{ 89, 37, 0 },
|
||||
{ 1, 96, 0 },
|
||||
{ 59, 37, 0 },
|
||||
{ 113, 85, 0 },
|
||||
{ -8, 224, 0 },
|
||||
{ 125, 30, 0 },
|
||||
{ 131, 67, 0 },
|
||||
{ -27, 85, 0 },
|
||||
{ 6, -17, 0 },
|
||||
{ 215, 175, 0 },
|
||||
{ 193, -16, 0 },
|
||||
{ 55, 156, 0 },
|
||||
{ 119, 24, 0 },
|
||||
{ 94, 165, 0 },
|
||||
{ 207, 75, 0 },
|
||||
{ 195, 137, 0 },
|
||||
{ 33, 197, 0 },
|
||||
{ 204, 134, 0 },
|
||||
{ 59, 98, 0 },
|
||||
{ 217, 142, 0 },
|
||||
{ 36, 5, 0 },
|
||||
{ 104, 218, 0 },
|
||||
{ 176, 26, 0 },
|
||||
{ 163, 33, 0 },
|
||||
{ 91, 48, 0 },
|
||||
{ 206, 219, 0 },
|
||||
{ 114, -22, 0 },
|
||||
{ 27, 98, 0 },
|
||||
{ 61, 28, 0 },
|
||||
{ 108, -21, 0 },
|
||||
{ -8, 173, 0 },
|
||||
{ 225, 3, 0 },
|
||||
{ 68, 133, 0 },
|
||||
{ 116, 188, 0 },
|
||||
{ 38, 193, 0 },
|
||||
{ -22, 126, 0 },
|
||||
{ -8, 179, 0 },
|
||||
{ 140, 157, 0 },
|
||||
{ 205, 165, 0 },
|
||||
{ 143, 98, 0 },
|
||||
{ 148, 196, 0 },
|
||||
{ 2, 81, 0 },
|
||||
{ 49, 71, 0 },
|
||||
{ 6, 117, 0 },
|
||||
{ 74, -13, 0 },
|
||||
{ 161, 208, 0 },
|
||||
{ 183, 159, 0 },
|
||||
{ 48, 107, 0 },
|
||||
{ 72, -19, 0 },
|
||||
{ 166, 19, 0 },
|
||||
{ 172, 175, 0 },
|
||||
{ 3, 55, 0 },
|
||||
{ 18, 83, 0 },
|
||||
{ -26, 107, 0 },
|
||||
{ 58, 164, 0 },
|
||||
{ 202, 162, 0 },
|
||||
{ 13, 60, 0 },
|
||||
{ 85, 86, 0 },
|
||||
{ 211, 41, 0 },
|
||||
{ 29, 155, 0 },
|
||||
{ 144, 22, 0 },
|
||||
{ -24, 90, 0 },
|
||||
{ 161, 0, 0 },
|
||||
{ 5, 153, 0 },
|
||||
{ 115, 207, 0 },
|
||||
{ 105, 104, 0 },
|
||||
{ 124, 158, 0 },
|
||||
{ 226, 138, 0 },
|
||||
{ 65, 226, 0 },
|
||||
{ 181, 191, 0 },
|
||||
{ 151, -20, 0 },
|
||||
{ 78, 142, 0 },
|
||||
{ 149, 35, 0 },
|
||||
{ 56, 74, 0 },
|
||||
{ 50, 193, 0 },
|
||||
{ -13, 121, 0 },
|
||||
{ 16, 229, 0 },
|
||||
{ 162, 128, 0 },
|
||||
{ 36, 202, 0 },
|
||||
{ 171, 132, 0 },
|
||||
{ 144, 10, 0 },
|
||||
{ 197, 114, 0 },
|
||||
{ 83, 7, 0 },
|
||||
{ 217, -17, 0 },
|
||||
{ 218, 191, 0 },
|
||||
{ 106, 81, 0 },
|
||||
{ 0, -29, 0 },
|
||||
{ 181, -25, 0 },
|
||||
{ 2, 131, 0 },
|
||||
{ 106, 172, 0 },
|
||||
{ 39, 191, 0 },
|
||||
{ 167, 133, 0 },
|
||||
{ 13, 204, 0 },
|
||||
{ 15, 214, 0 },
|
||||
{ 129, 212, 0 },
|
||||
{ -19, 187, 0 },
|
||||
{ -23, 119, 0 },
|
||||
{ 207, 69, 0 },
|
||||
{ 134, 135, 0 },
|
||||
{ 15, 137, 0 },
|
||||
{ 19, 7, 0 },
|
||||
{ -13, 96, 0 },
|
||||
{ 105, 160, 0 },
|
||||
{ 16, -11, 0 },
|
||||
{ -2, 136, 0 },
|
||||
{ 39, 160, 0 },
|
||||
{ 45, 150, 0 },
|
||||
{ -11, 5, 0 },
|
||||
{ 76, 61, 0 },
|
||||
{ -16, 223, 0 },
|
||||
{ 109, 143, 0 },
|
||||
{ 144, 94, 0 },
|
||||
{ 69, 170, 0 },
|
||||
{ -13, 163, 0 },
|
||||
{ 141, -21, 0 },
|
||||
{ 152, -24, 0 },
|
||||
{ 44, 97, 0 },
|
||||
{ 98, 57, 0 },
|
||||
{ 201, -25, 0 },
|
||||
{ 222, 120, 0 },
|
||||
{ 132, 221, 0 },
|
||||
{ 199, 47, 0 },
|
||||
{ 64, 66, 0 },
|
||||
{ 105, 201, 0 },
|
||||
{ -12, -15, 0 },
|
||||
{ -22, 77, 0 },
|
||||
{ 59, 222, 0 },
|
||||
{ 52, 159, 0 },
|
||||
{ 28, 153, 0 },
|
||||
{ 20, 83, 0 },
|
||||
{ 90, 157, 0 },
|
||||
{ 159, 81, 0 },
|
||||
{ 99, -27, 0 },
|
||||
{ -11, 161, 0 },
|
||||
{ 194, -7, 0 },
|
||||
{ 52, 196, 0 },
|
||||
{ 156, 61, 0 },
|
||||
{ 187, -10, 0 },
|
||||
{ -22, 225, 0 },
|
||||
{ 139, 10, 0 },
|
||||
{ 95, 192, 0 },
|
||||
{ 172, 86, 0 },
|
||||
{ 220, 171, 0 },
|
||||
{ 182, -11, 0 },
|
||||
{ 8, 155, 0 },
|
||||
{ -18, -9, 0 },
|
||||
{ 67, 132, 0 },
|
||||
{ 11, -30, 0 },
|
||||
{ 146, 55, 0 },
|
||||
{ 201, 77, 0 },
|
||||
{ 117, 223, 0 },
|
||||
{ 227, 228, 0 },
|
||||
{ -7, 107, 0 },
|
||||
{ 102, 206, 0 },
|
||||
{ 81, 15, 0 },
|
||||
{ 135, 106, 0 },
|
||||
{ -29, -2, 0 },
|
||||
{ -7, 105, 0 },
|
||||
{ 62, 159, 0 },
|
||||
{ 59, 21, 0 },
|
||||
{ 154, 131, 0 },
|
||||
{ -11, 104, 0 },
|
||||
{ 24, -24, 0 },
|
||||
{ 23, 70, 0 },
|
||||
{ 10, 220, 0 },
|
||||
{ 192, 195, 0 },
|
||||
{ 123, 79, 0 },
|
||||
{ 178, 138, 0 },
|
||||
{ -12, -1, 0 },
|
||||
{ 48, 220, 0 },
|
||||
{ 25, 45, 0 },
|
||||
{ 67, 199, 0 },
|
||||
{ 6, 162, 0 },
|
||||
{ 2, 136, 0 },
|
||||
{ 171, 47, 0 },
|
||||
{ 173, 88, 0 },
|
||||
{ 93, 222, 0 },
|
||||
{ 139, 180, 0 },
|
||||
{ 130, 33, 0 },
|
||||
{ 53, 71, 0 },
|
||||
{ 39, 108, 0 },
|
||||
{ 175, 210, 0 },
|
||||
{ 112, 180, 0 },
|
||||
{ 155, 200, 0 },
|
||||
{ 69, -12, 0 },
|
||||
{ 30, 166, 0 },
|
||||
{ 197, -6, 0 },
|
||||
{ 214, 178, 0 },
|
||||
{ 71, 8, 0 },
|
||||
{ 126, 14, 0 },
|
||||
{ 54, 181, 0 },
|
||||
{ 41, 212, 0 },
|
||||
{ 145, 182, 0 },
|
||||
{ 187, 125, 0 },
|
||||
{ 53, 131, 0 },
|
||||
{ 83, 63, 0 },
|
||||
{ 81, 15, 0 },
|
||||
{ 85, 41, 0 },
|
||||
{ 54, -9, 0 },
|
||||
{ 30, -23, 0 },
|
||||
{ 35, 126, 0 },
|
||||
{ 40, 36, 0 },
|
||||
{ 2, 108, 0 },
|
||||
{ 112, 120, 0 },
|
||||
{ 64, 82, 0 },
|
||||
{ 218, 162, 0 },
|
||||
{ -8, 110, 0 },
|
||||
{ 87, 78, 0 },
|
||||
{ 182, 89, 0 },
|
||||
{ 44, 102, 0 },
|
||||
{ 227, -10, 0 },
|
||||
{ 186, 220, 0 },
|
||||
{ 209, 181, 0 },
|
||||
{ 180, -6, 0 },
|
||||
{ 126, 65, 0 },
|
||||
{ 166, 13, 0 },
|
||||
{ 191, 29, 0 },
|
||||
{ 210, 219, 0 },
|
||||
{ 80, 122, 0 },
|
||||
{ 109, 74, 0 },
|
||||
{ 75, 58, 0 },
|
||||
{ 155, 223, 0 },
|
||||
{ 153, 48, 0 },
|
||||
{ 164, 66, 0 },
|
||||
{ 78, 135, 0 },
|
||||
{ 159, 217, 0 },
|
||||
{ 70, 86, 0 },
|
||||
{ 136, 174, 0 },
|
||||
{ 56, 57, 0 },
|
||||
{ 125, 155, 0 },
|
||||
{ 40, -17, 0 },
|
||||
{ 193, 109, 0 },
|
||||
{ -28, 228, 0 },
|
||||
{ 90, 32, 0 },
|
||||
{ 18, 228, 0 },
|
||||
{ 107, 113, 0 },
|
||||
{ 14, 127, 0 },
|
||||
{ -26, 221, 0 },
|
||||
{ 159, 211, 0 },
|
||||
{ 69, 204, 0 },
|
||||
{ 78, 109, 0 },
|
||||
{ 91, 73, 0 },
|
||||
{ 16, 223, 0 },
|
||||
{ 134, 225, 0 },
|
||||
{ 23, 138, 0 },
|
||||
{ 38, 55, 0 },
|
||||
{ -20, 104, 0 },
|
||||
{ 4, 99, 0 },
|
||||
{ 221, 177, 0 },
|
||||
{ 108, 68, 0 },
|
||||
{ 216, 206, 0 },
|
||||
{ 97, -3, 0 },
|
||||
{ -23, 215, 0 },
|
||||
{ 127, -19, 0 },
|
||||
{ 39, 48, 0 },
|
||||
{ 66, 170, 0 },
|
||||
{ 211, 19, 0 },
|
||||
{ 18, 189, 0 },
|
||||
{ 11, 129, 0 },
|
||||
{ 93, 18, 0 },
|
||||
{ 157, 168, 0 },
|
||||
{ 71, 118, 0 },
|
||||
{ 88, -16, 0 },
|
||||
{ 188, 142, 0 },
|
||||
{ 97, 165, 0 },
|
||||
{ 184, 39, 0 },
|
||||
{ 27, 211, 0 },
|
||||
{ 172, 126, 0 },
|
||||
{ 46, 101, 0 },
|
||||
{ 61, 42, 0 },
|
||||
{ 75, -4, 0 },
|
||||
{ 18, 195, 0 },
|
||||
{ 164, 111, 0 },
|
||||
{ -27, 158, 0 },
|
||||
{ 63, -24, 0 },
|
||||
{ 159, 83, 0 },
|
||||
{ 225, 1, 0 },
|
||||
{ 146, 208, 0 },
|
||||
{ 38, 54, 0 },
|
||||
{ -10, 200, 0 },
|
||||
{ 22, 79, 0 },
|
||||
{ 208, -16, 0 },
|
||||
{ 229, 21, 0 },
|
||||
{ -2, 7, 0 },
|
||||
{ 171, 32, 0 },
|
||||
{ 57, 156, 0 },
|
||||
{ 160, 203, 0 },
|
||||
{ 219, 2, 0 },
|
||||
{ 202, 91, 0 },
|
||||
{ 26, -18, 0 },
|
||||
{ 192, 181, 0 },
|
||||
{ -20, 125, 0 },
|
||||
{ 47, 91, 0 },
|
||||
{ -10, 200, 0 },
|
||||
{ 38, -20, 0 },
|
||||
{ 68, 63, 0 },
|
||||
{ 103, 169, 0 },
|
||||
{ 68, 78, 0 },
|
||||
{ 112, -13, 0 },
|
||||
{ -16, 92, 0 },
|
||||
{ 2, 63, 0 },
|
||||
{ 72, 85, 0 },
|
||||
{ 209, 54, 0 },
|
||||
{ 218, 70, 0 },
|
||||
{ 27, 36, 0 },
|
||||
{ 145, 167, 0 },
|
||||
{ -25, -30, 0 },
|
||||
{ 131, -8, 0 },
|
||||
{ 135, 167, 0 },
|
||||
{ 119, 163, 0 },
|
||||
{ 18, 73, 0 },
|
||||
{ -18, 220, 0 },
|
||||
{ 127, 227, 0 },
|
||||
{ 45, 31, 0 },
|
||||
{ 198, 116, 0 },
|
||||
{ 133, 197, 0 },
|
||||
{ 12, 144, 0 },
|
||||
{ 114, 33, 0 },
|
||||
{ 218, 217, 0 },
|
||||
{ 106, 101, 0 },
|
||||
{ 117, 132, 0 },
|
||||
{ 127, 206, 0 },
|
||||
{ 184, 141, 0 },
|
||||
{ 228, -11, 0 },
|
||||
{ 87, 112, 0 },
|
||||
{ 122, 145, 0 },
|
||||
{ 43, 6, 0 },
|
||||
{ 90, 205, 0 },
|
||||
{ 26, 120, 0 },
|
||||
{ 198, 107, 0 },
|
||||
{ -20, 225, 0 },
|
||||
{ -26, 32, 0 },
|
||||
{ -27, 179, 0 },
|
||||
{ -3, 151, 0 },
|
||||
{ 111, 28, 0 },
|
||||
{ 223, 53, 0 },
|
||||
{ 45, -5, 0 },
|
||||
{ 154, -3, 0 },
|
||||
{ 50, 34, 0 },
|
||||
{ 193, 134, 0 },
|
||||
{ 31, 126, 0 },
|
||||
{ 132, 11, 0 },
|
||||
{ 128, 65, 0 },
|
||||
{ -24, 157, 0 },
|
||||
{ 100, 87, 0 },
|
||||
{ 21, 31, 0 },
|
||||
{ 156, 144, 0 },
|
||||
{ 191, 208, 0 },
|
||||
{ 134, 51, 0 },
|
||||
{ 75, 176, 0 },
|
||||
{ 18, 119, 0 },
|
||||
{ 101, 122, 0 },
|
||||
{ 99, 217, 0 },
|
||||
{ 221, 157, 0 },
|
||||
{ 172, 229, 0 },
|
||||
{ 186, 166, 0 },
|
||||
{ 2, 178, 0 },
|
||||
{ 149, 105, 0 },
|
||||
{ 66, 49, 0 },
|
||||
{ 200, 62, 0 },
|
||||
{ 107, 150, 0 },
|
||||
{ 29, 124, 0 },
|
||||
{ 223, 15, 0 },
|
||||
{ 80, 51, 0 },
|
||||
{ 41, 155, 0 },
|
||||
{ 59, 89, 0 },
|
||||
{ 164, 126, 0 },
|
||||
{ 159, 141, 0 },
|
||||
{ 198, 93, 0 },
|
||||
{ 35, 181, 0 },
|
||||
{ 129, 226, 0 },
|
||||
{ 4, 124, 0 },
|
||||
{ 23, 198, 0 },
|
||||
{ 138, -26, 0 },
|
||||
{ 22, -8, 0 },
|
||||
{ 134, 70, 0 },
|
||||
{ 56, 61, 0 },
|
||||
{ 157, 216, 0 },
|
||||
{ 217, 40, 0 },
|
||||
{ 222, 220, 0 },
|
||||
{ 52, -4, 0 },
|
||||
{ 13, 125, 0 },
|
||||
{ 220, 105, 0 },
|
||||
{ 49, 177, 0 },
|
||||
{ 92, 194, 0 },
|
||||
{ 26, 127, 0 },
|
||||
{ 107, 110, 0 },
|
||||
{ -25, 172, 0 },
|
||||
{ 207, 138, 0 },
|
||||
{ 228, 83, 0 },
|
||||
{ 80, 152, 0 },
|
||||
{ 36, 213, 0 },
|
||||
{ 136, 62, 0 },
|
||||
{ 135, 93, 0 },
|
||||
{ 223, 32, 0 },
|
||||
{ 199, 213, 0 },
|
||||
{ 203, 35, 0 },
|
||||
{ 200, 114, 0 },
|
||||
{ 165, 179, 0 },
|
||||
{ 212, 87, 0 },
|
||||
{ 158, 82, 0 },
|
||||
{ 113, 122, 0 },
|
||||
{ 132, 48, 0 },
|
||||
{ 221, 32, 0 },
|
||||
{ 121, -4, 0 },
|
||||
{ 93, -26, 0 },
|
||||
{ -18, -15, 0 },
|
||||
{ 158, -6, 0 },
|
||||
{ 172, 205, 0 },
|
||||
{ -14, 46, 0 },
|
||||
{ 144, 205, 0 },
|
||||
{ 22, 74, 0 },
|
||||
{ 212, 174, 0 },
|
||||
{ 228, 225, 0 },
|
||||
{ -23, 155, 0 },
|
||||
{ -17, 70, 0 },
|
||||
{ 144, 109, 0 },
|
||||
{ 91, 153, 0 },
|
||||
{ 98, 72, 0 },
|
||||
{ 201, 91, 0 },
|
||||
{ 66, -7, 0 },
|
||||
{ 72, 181, 0 },
|
||||
{ 32, 23, 0 },
|
||||
{ 135, 155, 0 },
|
||||
{ 13, 155, 0 },
|
||||
{ 98, 31, 0 },
|
||||
{ 186, -5, 0 },
|
||||
{ 170, 186, 0 },
|
||||
{ 103, 103, 0 },
|
||||
{ 105, 26, 0 },
|
||||
{ 192, 57, 0 },
|
||||
{ 144, 208, 0 },
|
||||
{ 39, 165, 0 },
|
||||
{ 47, 101, 0 },
|
||||
{ 34, 146, 0 },
|
||||
{ 198, 174, 0 },
|
||||
{ 158, 180, 0 },
|
||||
{ 156, 89, 0 },
|
||||
{ 83, 23, 0 },
|
||||
{ 202, 109, 0 },
|
||||
{ 67, 196, 0 },
|
||||
{ -15, -27, 0 },
|
||||
{ 135, 90, 0 },
|
||||
{ 207, 73, 0 },
|
||||
{ 38, 180, 0 },
|
||||
{ 186, 210, 0 },
|
||||
{ 92, 129, 0 },
|
||||
{ 4, 102, 0 },
|
||||
{ 209, 108, 0 },
|
||||
{ 88, 59, 0 },
|
||||
{ 102, 54, 0 },
|
||||
{ 133, 91, 0 },
|
||||
{ 110, 60, 0 },
|
||||
{ 22, -12, 0 },
|
||||
{ 96, 82, 0 },
|
||||
{ -11, 63, 0 },
|
||||
{ 92, 17, 0 },
|
||||
{ 102, 149, 0 },
|
||||
{ 224, 107, 0 },
|
||||
{ 24, 229, 0 },
|
||||
{ 69, 31, 0 },
|
||||
{ 46, 192, 0 },
|
||||
{ 24, 176, 0 },
|
||||
{ 161, 25, 0 },
|
||||
{ 113, 103, 0 },
|
||||
{ 132, 130, 0 },
|
||||
{ 163, 194, 0 },
|
||||
{ -14, -27, 0 },
|
||||
{ 200, 203, 0 },
|
||||
{ 88, 199, 0 },
|
||||
{ 72, 83, 0 },
|
||||
{ -17, 222, 0 },
|
||||
{ 82, 87, 0 },
|
||||
{ 157, 83, 0 },
|
||||
{ -28, 86, 0 },
|
||||
{ 181, 2, 0 },
|
||||
{ 63, 169, 0 },
|
||||
{ 188, 148, 0 },
|
||||
{ 195, 150, 0 },
|
||||
{ 107, 202, 0 },
|
||||
{ 229, 101, 0 },
|
||||
{ 226, -27, 0 },
|
||||
{ 105, 43, 0 },
|
||||
{ 36, 94, 0 },
|
||||
{ 171, 82, 0 },
|
||||
{ 224, 205, 0 },
|
||||
{ 152, 170, 0 },
|
||||
{ 11, 161, 0 },
|
||||
{ 209, 134, 0 },
|
||||
{ -15, 79, 0 },
|
||||
{ 95, -12, 0 },
|
||||
{ 61, 156, 0 },
|
||||
{ 139, 185, 0 },
|
||||
{ 105, 108, 0 },
|
||||
{ 163, 166, 0 },
|
||||
{ 68, 191, 0 },
|
||||
{ 172, 157, 0 },
|
||||
{ 5, 148, 0 },
|
||||
{ 178, 214, 0 },
|
||||
{ -9, 115, 0 },
|
||||
{ 87, 28, 0 },
|
||||
{ 57, 198, 0 },
|
||||
{ 119, 147, 0 },
|
||||
{ 129, 78, 0 },
|
||||
{ 94, -2, 0 },
|
||||
{ 98, 128, 0 },
|
||||
{ 140, 24, 0 },
|
||||
{ -15, 39, 0 },
|
||||
{ 116, 53, 0 },
|
||||
{ 71, 226, 0 },
|
||||
{ 143, 174, 0 },
|
||||
{ 199, 162, 0 },
|
||||
{ 208, 44, 0 },
|
||||
{ 101, 42, 0 },
|
||||
{ 181, 5, 0 },
|
||||
{ 58, 120, 0 },
|
||||
{ 57, 33, 0 },
|
||||
{ 184, -17, 0 },
|
||||
{ 27, 32, 0 },
|
||||
{ 174, 60, 0 },
|
||||
{ 139, 224, 0 },
|
||||
{ 141, 80, 0 },
|
||||
{ 21, 103, 0 },
|
||||
{ 29, 159, 0 },
|
||||
{ 97, 141, 0 },
|
||||
{ 24, 192, 0 },
|
||||
{ 174, 8, 0 },
|
||||
{ -27, 41, 0 },
|
||||
{ 217, 11, 0 },
|
||||
{ 85, 128, 0 },
|
||||
{ 186, 199, 0 },
|
||||
{ 202, 158, 0 },
|
||||
{ 210, 207, 0 },
|
||||
{ 135, 68, 0 },
|
||||
{ 115, 170, 0 },
|
||||
{ 64, 6, 0 },
|
||||
{ 79, 208, 0 },
|
||||
{ 174, 154, 0 },
|
||||
{ 78, 55, 0 },
|
||||
{ 153, 120, 0 },
|
||||
{ 210, 38, 0 },
|
||||
{ 216, 162, 0 },
|
||||
{ 15, 220, 0 },
|
||||
{ 196, 2, 0 },
|
||||
{ 6, 100, 0 },
|
||||
{ 166, 225, 0 },
|
||||
{ 72, 95, 0 },
|
||||
{ 206, 60, 0 },
|
||||
{ 179, -29, 0 },
|
||||
{ 19, -1, 0 },
|
||||
{ 121, 148, 0 },
|
||||
{ 86, 8, 0 },
|
||||
{ 50, 214, 0 },
|
||||
{ 28, 225, 0 },
|
||||
{ 120, 111, 0 },
|
||||
{ -18, 28, 0 },
|
||||
{ 83, 86, 0 },
|
||||
{ 38, 207, 0 },
|
||||
{ -14, 206, 0 },
|
||||
{ -3, 0, 0 },
|
||||
{ 187, -29, 0 },
|
||||
{ 100, 159, 0 },
|
||||
{ 107, 94, 0 },
|
||||
{ 73, 173, 0 },
|
||||
{ 206, -25, 0 },
|
||||
{ 174, 47, 0 },
|
||||
{ 137, 71, 0 },
|
||||
{ -16, 180, 0 },
|
||||
{ 52, 91, 0 },
|
||||
{ 66, 51, 0 },
|
||||
{ 51, -21, 0 },
|
||||
{ 185, 79, 0 },
|
||||
{ -6, 210, 0 },
|
||||
{ 110, 84, 0 },
|
||||
{ 138, 150, 0 },
|
||||
{ 191, 43, 0 },
|
||||
{ 4, 109, 0 },
|
||||
{ 173, 82, 0 },
|
||||
{ 95, 1, 0 },
|
||||
{ 183, 36, 0 },
|
||||
{ 186, -4, 0 },
|
||||
{ 194, 194, 0 },
|
||||
{ 170, 166, 0 },
|
||||
{ 97, 71, 0 },
|
||||
{ 21, 114, 0 },
|
||||
{ 206, 127, 0 },
|
||||
{ 156, 24, 0 },
|
||||
{ 110, 0, 0 },
|
||||
{ -2, 151, 0 },
|
||||
{ 199, -21, 0 },
|
||||
{ 20, 24, 0 },
|
||||
{ 27, 8, 0 },
|
||||
{ 0, 173, 0 },
|
||||
{ 67, 101, 0 },
|
||||
{ 21, 68, 0 },
|
||||
{ 39, 45, 0 },
|
||||
{ 109, 123, 0 },
|
||||
{ 72, 70, 0 },
|
||||
{ 149, 93, 0 },
|
||||
{ 179, 152, 0 },
|
||||
{ 175, 51, 0 },
|
||||
{ 66, -25, 0 },
|
||||
{ 127, 51, 0 },
|
||||
{ 71, 36, 0 },
|
||||
{ 49, 56, 0 },
|
||||
{ 207, 138, 0 },
|
||||
{ 15, 123, 0 },
|
||||
{ 40, 3, 0 },
|
||||
{ 135, 219, 0 },
|
||||
{ 96, 39, 0 },
|
||||
{ 109, -16, 0 },
|
||||
{ 222, -3, 0 },
|
||||
{ 45, -16, 0 },
|
||||
{ 73, 212, 0 },
|
||||
{ 174, 72, 0 },
|
||||
{ 52, 229, 0 },
|
||||
{ 132, -4, 0 },
|
||||
{ 27, 102, 0 },
|
||||
{ -3, 60, 0 },
|
||||
{ 196, 14, 0 },
|
||||
{ -28, 74, 0 },
|
||||
{ 59, 27, 0 },
|
||||
{ 58, 160, 0 },
|
||||
{ 109, 204, 0 },
|
||||
{ 91, 41, 0 },
|
||||
{ 137, 61, 0 },
|
||||
{ 54, 14, 0 },
|
||||
{ 23, 63, 0 },
|
||||
{ 35, 22, 0 },
|
||||
{ 159, -21, 0 },
|
||||
{ 136, 43, 0 },
|
||||
{ 193, -13, 0 },
|
||||
{ -19, 110, 0 },
|
||||
{ 164, 122, 0 },
|
||||
{ 225, 116, 0 },
|
||||
{ -8, 85, 0 },
|
||||
{ 97, 6, 0 },
|
||||
{ 44, 133, 0 },
|
||||
{ -4, 205, 0 },
|
||||
{ 207, -17, 1 },
|
||||
{ 48, 15, 1 },
|
||||
{ 7, 183, 1 },
|
||||
{ 227, 218, 1 },
|
||||
{ 152, 217, 1 },
|
||||
{ 45, 59, 1 },
|
||||
{ 66, 96, 1 },
|
||||
{ 98, 103, 1 },
|
||||
{ 96, -18, 1 },
|
||||
{ 54, 140, 1 },
|
||||
{ 0, 107, 1 },
|
||||
{ 164, 151, 1 },
|
||||
{ 152, 97, 1 },
|
||||
{ 129, 132, 1 },
|
||||
{ 8, 165, 1 },
|
||||
{ 13, 50, 1 },
|
||||
{ 43, 92, 1 },
|
||||
{ 218, 110, 1 },
|
||||
{ -8, -23, 1 },
|
||||
{ 176, 164, 1 },
|
||||
{ -29, 202, 1 },
|
||||
{ 208, 203, 1 },
|
||||
{ 177, 100, 1 },
|
||||
{ 149, 224, 1 },
|
||||
{ 184, 197, 1 },
|
||||
{ 110, 207, 1 },
|
||||
{ 7, -10, 1 },
|
||||
{ 127, 219, 1 },
|
||||
{ 22, 168, 1 },
|
||||
{ 158, 180, 1 },
|
||||
{ -7, 8, 1 },
|
||||
{ 34, 98, 1 },
|
||||
{ 62, -3, 1 },
|
||||
{ 39, 105, 1 },
|
||||
{ 16, 20, 1 },
|
||||
{ 25, 127, 1 },
|
||||
{ 147, 18, 1 },
|
||||
{ -3, 36, 1 },
|
||||
{ 208, 12, 1 },
|
||||
{ 9, 132, 1 },
|
||||
{ -14, -26, 1 },
|
||||
{ 69, 181, 1 },
|
||||
{ 206, 98, 1 },
|
||||
{ 118, 120, 1 },
|
||||
{ 175, 79, 1 },
|
||||
{ 214, 109, 1 },
|
||||
{ 24, 54, 1 },
|
||||
{ 1, 25, 1 },
|
||||
{ 73, 121, 1 },
|
||||
{ 216, -26, 1 },
|
||||
{ 54, 90, 1 },
|
||||
{ 193, 190, 1 },
|
||||
{ 197, 25, 1 },
|
||||
{ 84, 196, 1 },
|
||||
{ 76, 158, 1 },
|
||||
{ 47, -30, 1 },
|
||||
{ 64, 125, 1 },
|
||||
{ 31, 36, 1 },
|
||||
{ 229, -27, 1 },
|
||||
{ -24, 205, 1 },
|
||||
{ 46, 11, 1 },
|
||||
{ 198, 131, 1 },
|
||||
{ 183, 108, 1 },
|
||||
{ 38, 116, 1 },
|
||||
{ 40, 37, 1 },
|
||||
{ 102, 120, 1 },
|
||||
{ 198, 160, 1 },
|
||||
{ 88, 170, 1 },
|
||||
{ 45, 198, 1 },
|
||||
{ 3, 202, 1 },
|
||||
{ 201, 208, 1 },
|
||||
{ 142, 69, 1 },
|
||||
{ 56, 6, 1 },
|
||||
{ 213, 61, 1 },
|
||||
{ 16, 159, 1 },
|
||||
{ 160, 8, 1 },
|
||||
{ 68, 80, 1 },
|
||||
{ 225, 125, 1 },
|
||||
{ 124, 4, 1 },
|
||||
{ 195, 128, 1 },
|
||||
{ 68, 37, 1 },
|
||||
{ 228, 193, 1 },
|
||||
{ 129, 68, 1 },
|
||||
{ 167, 100, 1 },
|
||||
{ 115, -6, 1 },
|
||||
{ -9, 3, 1 },
|
||||
{ 50, 43, 1 },
|
||||
{ 229, 111, 1 },
|
||||
{ 228, 192, 1 },
|
||||
{ 101, 222, 1 },
|
||||
{ 9, 165, 1 },
|
||||
{ 171, 159, 1 },
|
||||
{ 25, 220, 1 },
|
||||
{ 59, 68, 1 },
|
||||
{ 37, 190, 1 },
|
||||
{ 161, 61, 1 },
|
||||
{ 111, 189, 1 },
|
||||
{ -18, 26, 1 },
|
||||
{ 107, 169, 1 },
|
||||
{ 29, 193, 1 },
|
||||
{ -23, 97, 1 },
|
||||
{ 146, 129, 1 },
|
||||
{ -10, 116, 1 },
|
||||
{ 189, 207, 1 },
|
||||
{ -18, 43, 1 },
|
||||
{ 9, 212, 1 },
|
||||
{ 184, -10, 1 },
|
||||
{ 53, 110, 1 },
|
||||
{ 155, 96, 1 },
|
||||
{ 77, 87, 1 },
|
||||
{ 94, 144, 1 },
|
||||
{ 189, 180, 1 },
|
||||
{ -18, 55, 1 },
|
||||
{ 175, 142, 1 },
|
||||
{ 225, -28, 1 },
|
||||
{ 80, 74, 1 },
|
||||
{ 156, 14, 1 },
|
||||
{ 138, 222, 1 },
|
||||
{ 78, -16, 1 },
|
||||
{ 148, 61, 1 },
|
||||
{ 221, 197, 1 },
|
||||
{ 132, 175, 1 },
|
||||
{ -26, 204, 1 },
|
||||
{ 25, -24, 1 },
|
||||
{ 50, 139, 1 },
|
||||
{ 22, 214, 1 },
|
||||
{ 15, 204, 1 },
|
||||
{ 93, 101, 1 },
|
||||
{ -2, 167, 1 },
|
||||
{ 151, 80, 1 },
|
||||
{ 122, 153, 1 },
|
||||
{ 185, 84, 1 },
|
||||
{ 23, 221, 1 },
|
||||
{ 79, 222, 1 },
|
||||
{ 194, 138, 1 },
|
||||
{ 198, 222, 1 },
|
||||
{ 92, -8, 1 },
|
||||
{ 25, -20, 1 },
|
||||
{ 32, 174, 1 },
|
||||
{ -3, 31, 1 },
|
||||
{ 190, 79, 1 },
|
||||
{ -18, 23, 1 },
|
||||
{ 24, 210, 1 },
|
||||
{ 7, 213, 1 },
|
||||
{ 184, 109, 1 },
|
||||
{ 46, 116, 1 },
|
||||
{ 44, 198, 1 },
|
||||
{ 202, 31, 1 },
|
||||
{ 90, 15, 1 },
|
||||
{ 119, 7, 1 },
|
||||
{ 4, 149, 1 },
|
||||
{ 202, 185, 1 },
|
||||
{ 76, 159, 1 },
|
||||
{ 187, 36, 1 },
|
||||
{ 207, 126, 1 },
|
||||
{ 61, 14, 1 },
|
||||
{ 149, 108, 1 },
|
||||
{ 93, 95, 1 },
|
||||
{ 57, 89, 1 },
|
||||
{ -13, 91, 1 },
|
||||
{ 14, 18, 1 },
|
||||
{ 132, 164, 1 },
|
||||
{ 186, 188, 1 },
|
||||
{ 102, 104, 1 },
|
||||
{ 205, 223, 1 },
|
||||
{ 38, 110, 1 },
|
||||
{ 11, 205, 1 },
|
||||
{ 145, 155, 1 },
|
||||
{ 197, -3, 1 },
|
||||
{ 43, 140, 1 },
|
||||
{ 107, 35, 1 },
|
||||
{ 142, 155, 2 },
|
||||
{ 13, 79, 2 },
|
||||
{ 148, 18, 2 },
|
||||
{ 204, 104, 2 },
|
||||
{ 198, 143, 2 },
|
||||
{ 152, 221, 2 },
|
||||
{ 96, 184, 2 },
|
||||
{ -25, 225, 2 },
|
||||
};
|
|
@ -0,0 +1,10 @@
|
|||
#include "Watchy_Tetris.h"
|
||||
#include "settings.h"
|
||||
|
||||
WatchyTetris watchy(settings);
|
||||
|
||||
void setup(){
|
||||
watchy.init();
|
||||
}
|
||||
|
||||
void loop(){}
|
|
@ -0,0 +1,16 @@
|
|||
#include "Watchy_Tetris.h"
|
||||
|
||||
const unsigned char *tetris_nums [10] = {tetris0, tetris1, tetris2, tetris3, tetris4, tetris5, tetris6, tetris7, tetris8, tetris9};
|
||||
|
||||
void WatchyTetris::drawWatchFace(){
|
||||
display.fillScreen(GxEPD_WHITE);
|
||||
display.drawBitmap(0, 0, tetrisbg, DISPLAY_WIDTH, DISPLAY_HEIGHT, GxEPD_BLACK);
|
||||
|
||||
//Hour
|
||||
display.drawBitmap(25, 20, tetris_nums[currentTime.Hour/10], 40, 60, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(75, 20, tetris_nums[currentTime.Hour%10], 40, 60, GxEPD_BLACK); //second digit
|
||||
|
||||
//Minute
|
||||
display.drawBitmap(25, 110, tetris_nums[currentTime.Minute/10], 40, 60, GxEPD_BLACK); //first digit
|
||||
display.drawBitmap(75, 110, tetris_nums[currentTime.Minute%10], 40, 60, GxEPD_BLACK); //second digit
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef WATCHY_TETRIS_H
|
||||
#define WATCHY_TETRIS_H
|
||||
|
||||
#include <Watchy.h>
|
||||
#include "tetris.h"
|
||||
|
||||
class WatchyTetris : public Watchy{
|
||||
public:
|
||||
using Watchy::Watchy;
|
||||
void drawWatchFace();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
//Weather Settings
|
||||
#define CITY_ID "5128581" //New York City https://openweathermap.org/current#cityid
|
||||
|
||||
//You can also use LAT,LON for your location instead of CITY_ID, but not both
|
||||
//#define LAT "40.7127" //New York City, Looked up on https://www.latlong.net/
|
||||
//#define LON "-74.0059"
|
||||
|
||||
#ifdef CITY_ID
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?id={cityID}&lang={lang}&units={units}&appid={apiKey}" //open weather api using city ID
|
||||
#else
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&lang={lang}&units={units}&appid={apiKey}" //open weather api using lat lon
|
||||
#endif
|
||||
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define TEMP_UNIT "metric" //metric = Celsius , imperial = Fahrenheit
|
||||
#define TEMP_LANG "en"
|
||||
#define WEATHER_UPDATE_INTERVAL 30 //must be greater than 5, measured in minutes
|
||||
//NTP Settings
|
||||
#define NTP_SERVER "pool.ntp.org"
|
||||
#define GMT_OFFSET_SEC 3600 * -5 //New York is UTC -5 EST, -4 EDT, will be overwritten by weather data
|
||||
|
||||
watchySettings settings{
|
||||
#ifdef CITY_ID
|
||||
.cityID = CITY_ID,
|
||||
#else
|
||||
.cityID = "",
|
||||
.lat = LAT,
|
||||
.lon = LON,
|
||||
#endif
|
||||
.weatherAPIKey = OPENWEATHERMAP_APIKEY,
|
||||
.weatherURL = OPENWEATHERMAP_URL,
|
||||
.weatherUnit = TEMP_UNIT,
|
||||
.weatherLang = TEMP_LANG,
|
||||
.weatherUpdateInterval = WEATHER_UPDATE_INTERVAL,
|
||||
.ntpServer = NTP_SERVER,
|
||||
.gmtOffset = GMT_OFFSET_SEC,
|
||||
.vibrateOClock = true,
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,536 @@
|
|||
// 'dither_it_tetris_0', 40x60px
|
||||
const unsigned char tetris0 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5d, 0x57, 0x55, 0x80, 0xe0, 0x38, 0x0e, 0x03, 0xc0,
|
||||
0xf0, 0x3d, 0xd7, 0x75, 0x8b, 0x62, 0xd9, 0xce, 0xb3, 0xc3, 0x70, 0xdc, 0xee, 0x7b, 0xbf, 0x6f,
|
||||
0xda, 0x87, 0x21, 0xad, 0x6b, 0x59, 0x2e, 0x97, 0xd2, 0xf4, 0xbd, 0x57, 0x53, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x6a, 0xba, 0xae, 0xa5, 0xa4, 0xf0, 0x1c, 0x07,
|
||||
0x13, 0xb2, 0xe0, 0x58, 0x16, 0x55, 0xc9, 0x72, 0xdc, 0xb7, 0x73, 0xc4, 0xe0, 0xd8, 0x36, 0x79,
|
||||
0xaa, 0xff, 0xdf, 0xf7, 0x13, 0xd5, 0x66, 0xb9, 0xae, 0xa5, 0xa4, 0xf2, 0xbc, 0xaf, 0x55, 0x92,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xd9, 0xc0, 0x00, 0x03, 0xff, 0xc4, 0xc0, 0x00, 0x02, 0x93, 0xd5, 0x40,
|
||||
0x00, 0x02, 0x49, 0x95, 0xc0, 0x00, 0x03, 0x25, 0xd0, 0x40, 0x00, 0x02, 0xbb, 0xa5, 0xc0, 0x00,
|
||||
0x03, 0x73, 0xda, 0xc0, 0x00, 0x02, 0x29, 0xc9, 0x40, 0x00, 0x03, 0x45, 0xa5, 0x40, 0x00, 0x02,
|
||||
0xab, 0xb0, 0xc0, 0x00, 0x03, 0xff, 0xcd, 0xc0, 0x00, 0x03, 0xff, 0xd2, 0x40, 0x00, 0x03, 0x25,
|
||||
0xa4, 0xc0, 0x00, 0x02, 0xdb, 0xca, 0xc0, 0x00, 0x02, 0xfd, 0xb2, 0xc0, 0x00, 0x03, 0x4b, 0x89,
|
||||
0x40, 0x00, 0x02, 0xcd, 0xea, 0xc0, 0x00, 0x02, 0xfd, 0xc9, 0x40, 0x00, 0x03, 0x55, 0xa5, 0x40,
|
||||
0x00, 0x02, 0xab, 0xb2, 0xc0, 0x00, 0x03, 0xff, 0xc9, 0x7f, 0xff, 0xff, 0xff, 0x94, 0xf5, 0x5d,
|
||||
0x57, 0x25, 0xd2, 0xea, 0xba, 0xae, 0xdb, 0xca, 0x6f, 0xdb, 0xf6, 0xfd, 0xa9, 0x74, 0xdd, 0x37,
|
||||
0x4b, 0xd5, 0xec, 0xbb, 0x2e, 0xcd, 0xc4, 0xef, 0xdb, 0xf6, 0xfb, 0xaa, 0x75, 0x5d, 0x57, 0x59,
|
||||
0xd5, 0xea, 0xba, 0xae, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb,
|
||||
0x7b, 0x7e, 0xde, 0x93, 0xd6, 0xed, 0xbb, 0x6e, 0xed, 0xdb, 0xf6, 0xfd, 0xbe, 0xfb, 0xed, 0x7b,
|
||||
0x5e, 0xd6, 0xcd, 0xdb, 0xf6, 0xfb, 0x7e, 0xcb, 0xed, 0x7b, 0x5e, 0xd7, 0x7d, 0xb7, 0xed, 0xfd,
|
||||
0xbe, 0xd5, 0xed, 0x7b, 0x5f, 0x6f, 0x2b, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_1', 40x60px
|
||||
const unsigned char tetris1 [] PROGMEM = {
|
||||
0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0d, 0x57, 0x55, 0x00, 0x00, 0x09, 0x56, 0x03, 0x00,
|
||||
0x00, 0x0d, 0x1f, 0x75, 0x00, 0x00, 0x08, 0xa6, 0xb3, 0x00, 0x00, 0x0e, 0x4e, 0x7b, 0x00, 0x00,
|
||||
0x0a, 0xaf, 0x21, 0x00, 0x00, 0x0d, 0x56, 0x97, 0x00, 0x00, 0x0a, 0x4f, 0x53, 0x00, 0x00, 0x09,
|
||||
0x27, 0xff, 0x00, 0x00, 0x0c, 0x9f, 0xff, 0x00, 0x00, 0x0d, 0x4e, 0xa5, 0x00, 0x00, 0x0c, 0xae,
|
||||
0x13, 0x00, 0x00, 0x0a, 0x57, 0x55, 0x00, 0x00, 0x0b, 0x2e, 0xb3, 0x00, 0x00, 0x0c, 0x96, 0x79,
|
||||
0x00, 0x00, 0x0d, 0x4f, 0x25, 0x00, 0x00, 0x0a, 0xae, 0x93, 0x00, 0x00, 0x0c, 0x27, 0x55, 0x00,
|
||||
0x00, 0x0b, 0x57, 0xff, 0x00, 0x00, 0x09, 0x9f, 0xff, 0x00, 0x00, 0x0c, 0x46, 0xab, 0x00, 0x00,
|
||||
0x0d, 0x5f, 0x03, 0x00, 0x00, 0x0a, 0x4e, 0x75, 0x00, 0x00, 0x0b, 0x27, 0x33, 0x00, 0x00, 0x0c,
|
||||
0x9e, 0xb9, 0x00, 0x00, 0x0c, 0xae, 0x55, 0x00, 0x00, 0x0a, 0xa7, 0x23, 0x00, 0x00, 0x0d, 0x2e,
|
||||
0xab, 0x00, 0x00, 0x0a, 0x97, 0xff, 0x00, 0x00, 0x09, 0x2f, 0xff, 0x00, 0x00, 0x0c, 0x97, 0x25,
|
||||
0x00, 0x00, 0x0d, 0x56, 0xdb, 0x00, 0x00, 0x0c, 0xae, 0xfd, 0x00, 0x00, 0x0a, 0x8e, 0xcb, 0x00,
|
||||
0x00, 0x0d, 0x5e, 0xcd, 0x00, 0x00, 0x0c, 0x47, 0x7d, 0x00, 0x00, 0x0a, 0xae, 0xd5, 0x00, 0x00,
|
||||
0x0d, 0x57, 0x2b, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0f,
|
||||
0xbe, 0x93, 0x00, 0x00, 0x0d, 0x6e, 0xed, 0x00, 0x00, 0x0d, 0xb6, 0xfb, 0x00, 0x00, 0x0e, 0xdf,
|
||||
0x4d, 0x00, 0x00, 0x0b, 0x6e, 0xcb, 0x00, 0x00, 0x0e, 0xde, 0xfd, 0x00, 0x00, 0x0d, 0xb7, 0x55,
|
||||
0x00, 0x00, 0x0f, 0x7e, 0xab, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00,
|
||||
0x00, 0x0a, 0x96, 0x93, 0x00, 0x00, 0x0c, 0x0e, 0xed, 0x00, 0x00, 0x08, 0x0e, 0xfb, 0x00, 0x00,
|
||||
0x0c, 0xb6, 0xcd, 0x00, 0x00, 0x08, 0x37, 0x4b, 0x00, 0x00, 0x0f, 0xf6, 0xfd, 0x00, 0x00, 0x09,
|
||||
0xae, 0xab, 0x00, 0x00, 0x0c, 0xaf, 0x55, 0x00, 0x00, 0x0f, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_2', 40x60px
|
||||
const unsigned char tetris2 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5d, 0x57, 0x55, 0x80, 0xe0, 0x38, 0x0e, 0x03, 0xc0,
|
||||
0xf0, 0x3c, 0x0f, 0x75, 0x8b, 0x62, 0xd8, 0xb6, 0x73, 0xc3, 0x70, 0xdc, 0x37, 0x3b, 0xbf, 0x6f,
|
||||
0xdb, 0xf6, 0xa1, 0xad, 0x6b, 0x5a, 0xd6, 0x4b, 0xd2, 0xf4, 0xbd, 0x2f, 0x55, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0x6a, 0xba, 0xae, 0xab, 0xb6, 0xf0, 0x18, 0x07,
|
||||
0x03, 0xbf, 0x60, 0x5d, 0xde, 0x75, 0xd2, 0xf2, 0xda, 0xc7, 0x33, 0xb3, 0x60, 0xdd, 0xee, 0xb9,
|
||||
0xbf, 0x7f, 0xd8, 0x4e, 0x55, 0xd5, 0x66, 0xbd, 0x27, 0x23, 0xaa, 0xf2, 0xba, 0xae, 0xab, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0x53, 0x00, 0x00,
|
||||
0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x03, 0x65, 0x00, 0x00, 0x00, 0x02, 0xbb, 0x00, 0x00, 0x00,
|
||||
0x02, 0x73, 0x00, 0x00, 0x00, 0x03, 0x29, 0x00, 0x00, 0x00, 0x02, 0x85, 0x00, 0x00, 0x00, 0x03,
|
||||
0x77, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5d, 0x57, 0x13,
|
||||
0x80, 0xe0, 0x3a, 0xae, 0xe9, 0xc0, 0xf7, 0x5b, 0xf6, 0xff, 0x8b, 0x67, 0x3b, 0x36, 0xc9, 0xc3,
|
||||
0x73, 0xbb, 0x2f, 0x4f, 0xbf, 0x6a, 0x1d, 0xf6, 0xf9, 0xad, 0x64, 0xbb, 0x56, 0xad, 0xd2, 0xf5,
|
||||
0x5c, 0xaf, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xd5, 0x72, 0x50,
|
||||
0x00, 0x00, 0x80, 0xed, 0xb0, 0x00, 0x00, 0xc0, 0x6f, 0xd0, 0x00, 0x00, 0x8b, 0xec, 0xb0, 0x00,
|
||||
0x00, 0xc3, 0x74, 0xd0, 0x00, 0x00, 0xbf, 0x6f, 0xd0, 0x00, 0x00, 0xad, 0x6a, 0xb0, 0x00, 0x00,
|
||||
0xd2, 0xf5, 0x50, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5,
|
||||
0x69, 0x3d, 0x57, 0x55, 0x80, 0xee, 0xd8, 0x0e, 0xab, 0xc0, 0x6f, 0xbc, 0x0e, 0xfd, 0x8b, 0xec,
|
||||
0xd8, 0xb6, 0xcd, 0xc3, 0x74, 0xdc, 0x37, 0x4b, 0xbf, 0x6f, 0xbb, 0xf6, 0xfd, 0xad, 0x6a, 0xba,
|
||||
0xd7, 0x55, 0xd2, 0xf5, 0x5d, 0x2e, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_3', 40x60px
|
||||
const unsigned char tetris3 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x55, 0x6b, 0x5a, 0xab, 0xa2, 0x29, 0x24, 0x49, 0x29, 0xc9,
|
||||
0x55, 0x4a, 0xa5, 0x4b, 0xa5, 0x8a, 0x33, 0x14, 0x25, 0xb4, 0x51, 0x88, 0xa9, 0xab, 0xc3, 0x14,
|
||||
0x56, 0x52, 0x53, 0x9a, 0x52, 0xa4, 0x95, 0x49, 0xd9, 0xd6, 0xd5, 0xb5, 0x5f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc9, 0x6a, 0xba, 0x97, 0x49, 0xb6, 0xe0, 0x1c, 0x4e,
|
||||
0x23, 0xbf, 0x70, 0x59, 0x57, 0x55, 0xd2, 0xe2, 0xdd, 0xce, 0x73, 0xb3, 0x70, 0xd9, 0xe7, 0x3b,
|
||||
0xbe, 0xef, 0xdc, 0x4e, 0xa5, 0xd6, 0x6b, 0x5a, 0x96, 0x49, 0xa9, 0xf4, 0xbd, 0x57, 0x57, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0x53, 0x00, 0x00,
|
||||
0x00, 0x02, 0x09, 0x00, 0x00, 0x00, 0x03, 0x65, 0x00, 0x00, 0x00, 0x02, 0xbb, 0x00, 0x00, 0x00,
|
||||
0x02, 0x71, 0x00, 0x00, 0x00, 0x03, 0x2b, 0x00, 0x00, 0x00, 0x02, 0x85, 0x00, 0x00, 0x00, 0x03,
|
||||
0x75, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x35, 0x5d, 0x57, 0x13,
|
||||
0x00, 0x20, 0x3a, 0xae, 0xed, 0x00, 0x37, 0x5b, 0xf6, 0xfb, 0x00, 0x2b, 0x3b, 0x36, 0xcd, 0x00,
|
||||
0x27, 0xbb, 0x2f, 0x4b, 0x00, 0x32, 0x1d, 0xf6, 0xfd, 0x00, 0x29, 0x7b, 0x56, 0xab, 0x00, 0x35,
|
||||
0x3c, 0xaf, 0x55, 0x00, 0x3f, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
|
||||
0x02, 0x93, 0x00, 0x00, 0x00, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x02,
|
||||
0xcb, 0x00, 0x00, 0x00, 0x03, 0x4d, 0x00, 0x00, 0x00, 0x02, 0xfb, 0x00, 0x00, 0x00, 0x02, 0xab,
|
||||
0x00, 0x00, 0x00, 0x03, 0x55, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5,
|
||||
0x75, 0x5d, 0x57, 0x25, 0x80, 0xe0, 0x38, 0x0e, 0xdb, 0xc0, 0xf0, 0x3c, 0x0e, 0xfd, 0x8b, 0x62,
|
||||
0xd8, 0xb6, 0xcb, 0xc3, 0x70, 0xdc, 0x37, 0x4d, 0xbf, 0x6f, 0xdb, 0xf6, 0xfd, 0xad, 0x6b, 0x5a,
|
||||
0xd6, 0xab, 0xd2, 0xf4, 0xbd, 0x2f, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_4', 40x60px
|
||||
const unsigned char tetris4 [] PROGMEM = {
|
||||
0xff, 0xc0, 0x00, 0x03, 0xff, 0xd5, 0x40, 0x00, 0x03, 0xff, 0x80, 0xc0, 0x00, 0x03, 0x4b, 0xc0,
|
||||
0xc0, 0x00, 0x03, 0x77, 0x8b, 0x40, 0x00, 0x03, 0xad, 0xc3, 0x40, 0x00, 0x03, 0x77, 0xbf, 0x40,
|
||||
0x00, 0x03, 0xad, 0xad, 0x40, 0x00, 0x02, 0xf7, 0xd2, 0xc0, 0x00, 0x03, 0xaf, 0xff, 0xc0, 0x00,
|
||||
0x03, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xc9, 0x40, 0x00, 0x03, 0xbb, 0xb6, 0xc0, 0x00, 0x03,
|
||||
0x6f, 0xbf, 0x40, 0x00, 0x03, 0xb5, 0xd2, 0xc0, 0x00, 0x02, 0xdb, 0xb3, 0x40, 0x00, 0x03, 0xb7,
|
||||
0xbf, 0x40, 0x00, 0x03, 0x6d, 0xd5, 0x40, 0x00, 0x03, 0xb7, 0xaa, 0xc0, 0x00, 0x03, 0x7b, 0xff,
|
||||
0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xf5, 0x5d, 0x57, 0xb7, 0x88, 0x60,
|
||||
0x38, 0x0f, 0x6d, 0xd5, 0xf0, 0x3c, 0x0f, 0xb7, 0x9c, 0x62, 0xd8, 0xb6, 0xdb, 0xce, 0xf0, 0xdc,
|
||||
0x37, 0x6f, 0xa9, 0x6f, 0xdb, 0xf7, 0xb5, 0x92, 0xeb, 0x5a, 0xd7, 0x6f, 0xd4, 0xf4, 0xbd, 0x2f,
|
||||
0xdb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xe9, 0x5a, 0x4e, 0x4b,
|
||||
0x82, 0x64, 0x3b, 0xb7, 0x75, 0xd9, 0x73, 0x5b, 0xf6, 0xfd, 0xae, 0xeb, 0x3d, 0x2e, 0xcb, 0x9c,
|
||||
0xe7, 0x9b, 0x37, 0x4d, 0xca, 0x72, 0x5b, 0xee, 0xfb, 0xa1, 0x69, 0x3d, 0x66, 0xab, 0xdd, 0xf5,
|
||||
0x5a, 0x9f, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
|
||||
0x02, 0x93, 0x00, 0x00, 0x00, 0x02, 0xed, 0x00, 0x00, 0x00, 0x03, 0x7d, 0x00, 0x00, 0x00, 0x02,
|
||||
0xcb, 0x00, 0x00, 0x00, 0x02, 0xcd, 0x00, 0x00, 0x00, 0x03, 0x7b, 0x00, 0x00, 0x00, 0x02, 0xd9,
|
||||
0x00, 0x00, 0x00, 0x03, 0x27, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00,
|
||||
0x00, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00, 0x02, 0xdb, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00,
|
||||
0x00, 0x03, 0x4b, 0x00, 0x00, 0x00, 0x02, 0xcd, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00,
|
||||
0x03, 0x55, 0x00, 0x00, 0x00, 0x02, 0xab, 0x00, 0x00, 0x00, 0x03, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_5', 40x60px
|
||||
const unsigned char tetris5 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5f, 0xbf, 0xef, 0x80, 0xe0, 0x3d, 0xee, 0xbb, 0xc0,
|
||||
0xf0, 0x3f, 0xbf, 0xff, 0x8b, 0x62, 0xdb, 0x37, 0xcd, 0xc3, 0x70, 0xdf, 0x3e, 0xcf, 0xbf, 0x6f,
|
||||
0xdd, 0xf7, 0xfb, 0xad, 0x6b, 0x5f, 0xdf, 0x6f, 0xd2, 0xf4, 0xbd, 0x77, 0xbb, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xc9, 0x40, 0x00, 0x00, 0x00, 0xb6, 0xc0, 0x00, 0x00,
|
||||
0x00, 0xbf, 0x40, 0x00, 0x00, 0x00, 0xd2, 0xc0, 0x00, 0x00, 0x00, 0xb3, 0x40, 0x00, 0x00, 0x00,
|
||||
0xbf, 0x40, 0x00, 0x00, 0x00, 0xd5, 0x40, 0x00, 0x00, 0x00, 0xaa, 0xc0, 0x00, 0x00, 0x00, 0xff,
|
||||
0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xff, 0xfd, 0x57, 0xff, 0x88, 0x74,
|
||||
0xba, 0xaf, 0x4b, 0xd5, 0xf7, 0x7b, 0xf7, 0x77, 0x9c, 0x7a, 0xdb, 0x37, 0xad, 0xce, 0xed, 0xbd,
|
||||
0x2e, 0xf7, 0xa9, 0x77, 0x7b, 0xf7, 0x5b, 0x92, 0xfa, 0xda, 0xaf, 0xad, 0xd4, 0xf7, 0xbd, 0x57,
|
||||
0x7b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xe9, 0x3a, 0x4e, 0x93,
|
||||
0x82, 0x64, 0x9b, 0xb6, 0xed, 0xd9, 0x72, 0x5d, 0xf7, 0x7d, 0xae, 0xeb, 0xbb, 0x2e, 0xcb, 0x9c,
|
||||
0xe7, 0x3b, 0x36, 0xcd, 0xca, 0x72, 0x9b, 0xee, 0xfb, 0xa1, 0x68, 0x5d, 0x67, 0x59, 0xdd, 0xf7,
|
||||
0x7a, 0x9e, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
|
||||
0x03, 0x25, 0x00, 0x00, 0x00, 0x02, 0xdb, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x03,
|
||||
0x4b, 0x00, 0x00, 0x00, 0x02, 0xcd, 0x00, 0x00, 0x00, 0x02, 0xfb, 0x00, 0x00, 0x00, 0x03, 0x59,
|
||||
0x00, 0x00, 0x00, 0x02, 0xa7, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0xff,
|
||||
0xff, 0xff, 0xfc, 0x00, 0xd2, 0xea, 0x5d, 0x2c, 0x00, 0xdd, 0xfb, 0xbd, 0xdc, 0x00, 0xeb, 0x76,
|
||||
0xfe, 0xb4, 0x00, 0xdd, 0xfb, 0x5b, 0x6c, 0x00, 0xeb, 0x6d, 0xbd, 0xdc, 0x00, 0xbd, 0xf6, 0xfe,
|
||||
0xb4, 0x00, 0xeb, 0xfb, 0xbd, 0xec, 0x00, 0xff, 0xff, 0xff, 0xfc, 0x00
|
||||
};
|
||||
// 'dither_it_tetris_6', 40x60px
|
||||
const unsigned char tetris6 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5f, 0xbf, 0xef, 0x80, 0xe0, 0x3d, 0xee, 0xbb, 0xc0,
|
||||
0xf0, 0x3f, 0xbf, 0xff, 0x8b, 0x62, 0xdb, 0x37, 0xcd, 0xc3, 0x70, 0xdf, 0x3e, 0xcf, 0xbf, 0x6f,
|
||||
0xdd, 0xf7, 0xfb, 0xad, 0x6b, 0x5f, 0xdf, 0x6f, 0xd2, 0xf4, 0xbd, 0x77, 0xbb, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0xc9, 0x40, 0x00, 0x00, 0x00, 0xb6, 0xc0, 0x00, 0x00,
|
||||
0x00, 0xbf, 0x40, 0x00, 0x00, 0x00, 0xd2, 0xc0, 0x00, 0x00, 0x00, 0xb3, 0x40, 0x00, 0x00, 0x00,
|
||||
0xbf, 0x40, 0x00, 0x00, 0x00, 0xd5, 0x40, 0x00, 0x00, 0x00, 0xaa, 0xc0, 0x00, 0x00, 0x00, 0xff,
|
||||
0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xf5, 0x5d, 0x57, 0x55, 0x88, 0x60,
|
||||
0x3a, 0xae, 0x55, 0xd5, 0xf7, 0x5b, 0xf7, 0x47, 0x9c, 0x67, 0x3b, 0x36, 0x29, 0xce, 0xf3, 0x9d,
|
||||
0x2f, 0x93, 0xa9, 0x6a, 0x5b, 0xf6, 0xab, 0x92, 0xe4, 0xba, 0xae, 0x95, 0xd4, 0xf5, 0x5d, 0x57,
|
||||
0x53, 0xff, 0xff, 0xff, 0xfe, 0x49, 0xff, 0xff, 0xff, 0xff, 0x27, 0xf7, 0x7b, 0x7e, 0xdf, 0x53,
|
||||
0xde, 0xef, 0xdb, 0xf6, 0x95, 0xfb, 0xfe, 0xff, 0xbe, 0xab, 0xb3, 0x78, 0xde, 0x36, 0xc5, 0xf3,
|
||||
0xec, 0xfb, 0x3f, 0x17, 0xff, 0x7f, 0xdf, 0xf7, 0x63, 0xb7, 0xf7, 0xfd, 0xfe, 0x99, 0xed, 0x7d,
|
||||
0x5f, 0x56, 0x4b, 0xff, 0xff, 0xff, 0xff, 0x45, 0xff, 0xc0, 0x00, 0x02, 0xb7, 0xee, 0xc0, 0x00,
|
||||
0x03, 0x41, 0xdf, 0xc0, 0x00, 0x03, 0x37, 0xfb, 0x40, 0x00, 0x02, 0x93, 0xe3, 0xc0, 0x00, 0x02,
|
||||
0xc9, 0xb3, 0x40, 0x00, 0x03, 0x17, 0xff, 0xc0, 0x00, 0x03, 0x63, 0xde, 0xc0, 0x00, 0x02, 0x95,
|
||||
0xf5, 0xc0, 0x00, 0x03, 0x2b, 0xff, 0xc0, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee,
|
||||
0xff, 0xff, 0xff, 0x55, 0xdb, 0xf4, 0xba, 0x97, 0x25, 0xed, 0x77, 0x7e, 0xef, 0x4b, 0xb6, 0xfa,
|
||||
0xdd, 0xbe, 0x69, 0xdb, 0xed, 0xbe, 0xd7, 0x87, 0xed, 0x77, 0x7b, 0x6e, 0x33, 0xdb, 0xfa, 0xdd,
|
||||
0xbf, 0x55, 0xf6, 0xf7, 0xbf, 0x6e, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_7', 40x60px
|
||||
const unsigned char tetris7 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5d, 0x57, 0x55, 0x80, 0xe0, 0x38, 0x0e, 0xab, 0xc0,
|
||||
0xf0, 0x3c, 0x0e, 0xfd, 0x8b, 0x62, 0xd8, 0xb6, 0xcd, 0xc3, 0x70, 0xdc, 0x37, 0x4b, 0xbf, 0x6f,
|
||||
0xdb, 0xf6, 0xfd, 0xad, 0x6b, 0x5a, 0xd7, 0x55, 0xd2, 0xf4, 0xbd, 0x2e, 0xab, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x4e, 0x93, 0x00, 0x00, 0x0d, 0xee,
|
||||
0xed, 0x00, 0x00, 0x0b, 0xb6, 0xfb, 0x00, 0x00, 0x0b, 0x37, 0x4d, 0x00, 0x00, 0x0d, 0x2e, 0xcd,
|
||||
0x00, 0x00, 0x0b, 0xf6, 0xfb, 0x00, 0x00, 0x0a, 0xae, 0xab, 0x00, 0x00, 0x0d, 0x57, 0x55, 0x00,
|
||||
0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0x25, 0x00, 0x00,
|
||||
0x00, 0x02, 0xdb, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x03, 0x4b, 0x00, 0x00, 0x00,
|
||||
0x02, 0xcd, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x03, 0x55, 0x00, 0x00, 0x00, 0x02,
|
||||
0xab, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x03, 0xb7, 0x00, 0x00, 0x00, 0x02, 0xdb, 0x00,
|
||||
0x00, 0x00, 0x03, 0xb7, 0x00, 0x00, 0x00, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x03, 0xb7, 0x00, 0x00,
|
||||
0x00, 0x03, 0x7d, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
|
||||
0x03, 0xb7, 0x00, 0x00, 0x00, 0x03, 0x6b, 0x00, 0x00, 0x00, 0x03, 0xbd, 0x00, 0x00, 0x00, 0x02,
|
||||
0xd7, 0x00, 0x00, 0x00, 0x03, 0xbb, 0x00, 0x00, 0x00, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x03, 0xb7,
|
||||
0x00, 0x00, 0x00, 0x03, 0x6d, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00,
|
||||
0x00, 0x00, 0x03, 0x55, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x03, 0x75, 0x00, 0x00,
|
||||
0x00, 0x02, 0xb3, 0x00, 0x00, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00,
|
||||
0x02, 0x93, 0x00, 0x00, 0x00, 0x03, 0x55, 0x00, 0x00, 0x00, 0x03, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_8', 40x60px
|
||||
const unsigned char tetris8 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5d, 0x57, 0x55, 0x80, 0xe0, 0x38, 0x0e, 0x03, 0xc0,
|
||||
0xf0, 0x3d, 0xd7, 0x75, 0x8b, 0x62, 0xd9, 0xce, 0xb3, 0xc3, 0x70, 0xdc, 0xee, 0x7b, 0xbf, 0x6f,
|
||||
0xda, 0x87, 0x21, 0xad, 0x6b, 0x59, 0x2e, 0x97, 0xd2, 0xf4, 0xbd, 0x57, 0x53, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xc9, 0x40, 0x00, 0x03, 0x2b, 0xb6, 0xc0, 0x00, 0x02,
|
||||
0x81, 0xbf, 0x40, 0x00, 0x02, 0x6b, 0xd2, 0xc0, 0x00, 0x03, 0x3b, 0xb3, 0x40, 0x00, 0x02, 0xb1,
|
||||
0xbf, 0x40, 0x00, 0x03, 0x57, 0xd5, 0x40, 0x00, 0x02, 0x09, 0xaa, 0xc0, 0x00, 0x03, 0xb5, 0xff,
|
||||
0xc0, 0x00, 0x03, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xcc, 0xc0, 0x00, 0x02, 0x93, 0xa5, 0x40,
|
||||
0x00, 0x03, 0x25, 0xb1, 0xc0, 0x00, 0x02, 0xab, 0xca, 0x40, 0x00, 0x02, 0x71, 0xc4, 0xc0, 0x00,
|
||||
0x03, 0x3b, 0xaa, 0xc0, 0x00, 0x02, 0xa5, 0xd5, 0x40, 0x00, 0x02, 0x4b, 0xa4, 0xc0, 0x00, 0x03,
|
||||
0x53, 0x92, 0x40, 0x00, 0x03, 0xff, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xc4, 0xf5, 0x5d, 0x57, 0x25,
|
||||
0xd5, 0x60, 0x3a, 0xae, 0xdb, 0x95, 0xf7, 0x5b, 0xf6, 0xfd, 0xd0, 0x67, 0x3b, 0x37, 0x4b, 0xa5,
|
||||
0xf3, 0xbb, 0x2e, 0xcd, 0xda, 0xea, 0x1d, 0xf6, 0xfd, 0xc9, 0x64, 0xbb, 0x57, 0x55, 0xa5, 0x75,
|
||||
0x5c, 0xae, 0xab, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x40, 0x00, 0x03, 0xff, 0xd4, 0xc0, 0x00,
|
||||
0x03, 0x25, 0xa5, 0x40, 0x00, 0x02, 0xdb, 0xca, 0xc0, 0x00, 0x02, 0xfd, 0xb0, 0xc0, 0x00, 0x03,
|
||||
0x4b, 0x8b, 0x40, 0x00, 0x02, 0xcd, 0xe8, 0xc0, 0x00, 0x02, 0xfb, 0xca, 0xc0, 0x00, 0x03, 0x59,
|
||||
0xa5, 0x40, 0x00, 0x02, 0xa7, 0xb2, 0x40, 0x00, 0x03, 0xff, 0xc9, 0xff, 0xff, 0xff, 0xff, 0x94,
|
||||
0xff, 0xff, 0xff, 0x25, 0xd2, 0x74, 0xba, 0x96, 0xdb, 0xcb, 0x77, 0x7e, 0xee, 0xfd, 0xa8, 0xfa,
|
||||
0xdd, 0xbe, 0xcb, 0xd5, 0xed, 0xbe, 0xd7, 0x4d, 0xc4, 0x77, 0x7b, 0x6e, 0xfd, 0xaa, 0xfa, 0xdd,
|
||||
0xbe, 0xab, 0xd5, 0x77, 0xbf, 0x6f, 0x53, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
||||
// 'dither_it_tetris_9', 40x60px
|
||||
const unsigned char tetris9 [] PROGMEM = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x75, 0x5f, 0xff, 0xff, 0x80, 0xe0, 0x3d, 0x2e, 0xa5, 0xc0,
|
||||
0xf0, 0x3d, 0xdf, 0xbb, 0x8b, 0x62, 0xde, 0xb7, 0x6f, 0xc3, 0x70, 0xdb, 0x6f, 0xb5, 0xbf, 0x6f,
|
||||
0xdd, 0xde, 0xdb, 0xad, 0x6b, 0x5e, 0xb7, 0x6f, 0xd2, 0xf4, 0xbf, 0xef, 0xdb, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xff, 0xd5, 0x40, 0x00, 0x03, 0xbb, 0x80, 0xc0, 0x00, 0x03,
|
||||
0x6f, 0xc0, 0x40, 0x00, 0x03, 0xb5, 0x8b, 0xc0, 0x00, 0x02, 0xdb, 0xc3, 0x40, 0x00, 0x03, 0x6f,
|
||||
0xbf, 0x40, 0x00, 0x03, 0xb5, 0xad, 0x40, 0x00, 0x03, 0x6f, 0xd2, 0xc0, 0x00, 0x03, 0xdb, 0xff,
|
||||
0xc0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0xfe, 0xff, 0xbf, 0x77, 0x82, 0x77,
|
||||
0xba, 0xef, 0xad, 0xd9, 0x7e, 0xff, 0xfe, 0xdb, 0xae, 0xec, 0xdf, 0x37, 0x6f, 0x9c, 0xfc, 0xfb,
|
||||
0x3f, 0xb5, 0xca, 0x77, 0xdf, 0xee, 0xdf, 0xa1, 0x7f, 0x7d, 0xbf, 0x6b, 0xdd, 0x75, 0xde, 0xef,
|
||||
0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, 0x95, 0x53, 0x29, 0x23,
|
||||
0xca, 0x54, 0x49, 0x54, 0xa9, 0xd1, 0x25, 0xac, 0x45, 0x17, 0x8d, 0x94, 0x13, 0x54, 0xa1, 0xf0,
|
||||
0x4a, 0xd0, 0xab, 0x6f, 0x87, 0x31, 0x26, 0x20, 0x83, 0xd8, 0x94, 0x95, 0x95, 0x59, 0xaa, 0xd6,
|
||||
0xf4, 0xb5, 0x4d, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00,
|
||||
0x03, 0x4b, 0x00, 0x00, 0x00, 0x02, 0xb9, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x03,
|
||||
0x4b, 0x00, 0x00, 0x00, 0x02, 0xcd, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x03, 0x55,
|
||||
0x00, 0x00, 0x00, 0x02, 0xab, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00, 0x00, 0x00, 0x03, 0xff, 0x00,
|
||||
0x00, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00, 0x02, 0xdb, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00,
|
||||
0x00, 0x03, 0x4b, 0x00, 0x00, 0x00, 0x02, 0xcd, 0x00, 0x00, 0x00, 0x02, 0xfd, 0x00, 0x00, 0x00,
|
||||
0x03, 0x55, 0x00, 0x00, 0x00, 0x02, 0xab, 0x00, 0x00, 0x00, 0x03, 0xff
|
||||
};
|
||||
// 'tetris_bg_dither', 200x200px
|
||||
const unsigned char tetrisbg [] PROGMEM = {
|
||||
0xff, 0x8a, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29,
|
||||
0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x42, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x1f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc6, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0xdf,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xca, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x82,
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xdf, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xdf, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x1b, 0x76, 0xed, 0xdb, 0xb7, 0x6e,
|
||||
0xdc, 0x3f, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xca, 0x1f, 0x0d, 0xad, 0xb6, 0xb6, 0xda, 0xdb, 0x6a, 0x3f, 0xff, 0xb1, 0xa0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0x70, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0xdf, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x86, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x5f, 0x63, 0xe0,
|
||||
0xf8, 0x3e, 0x1f, 0x87, 0xf9, 0x3f, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0x47, 0x01, 0xce, 0x73, 0x9c, 0xe7, 0x01, 0x3f, 0xff,
|
||||
0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x5f,
|
||||
0x67, 0x01, 0xce, 0x73, 0x9c, 0xe7, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x23, 0xe1, 0xc0, 0x73, 0x9c, 0xe7, 0xe1,
|
||||
0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x42, 0x1f, 0x60, 0x79, 0xc0, 0x73, 0x9f, 0x87, 0x01, 0x3f, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x80, 0x44, 0x79, 0xce, 0x73, 0x9d,
|
||||
0x07, 0x01, 0x00, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xdd, 0x63, 0xe0, 0xf8, 0x3e, 0x1c, 0xe7, 0xf9, 0x37, 0xff, 0xbf, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd7, 0x23, 0xe0, 0xf8,
|
||||
0x3e, 0x1c, 0xe7, 0xf9, 0x1a, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x55, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x37, 0xff, 0x96,
|
||||
0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdb, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2d, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xcd, 0x1b, 0xbd, 0xdd, 0xdd, 0xdd, 0xdd, 0xda, 0x36,
|
||||
0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
|
||||
0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x16, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xad, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x46, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf6, 0xff, 0xbf, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd6, 0xa9, 0x4a, 0x55, 0x55,
|
||||
0x55, 0x55, 0x55, 0xad, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x28, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x92, 0xb0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0xbf, 0xff,
|
||||
0xef, 0x77, 0x77, 0x77, 0x7f, 0x7f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x54, 0xd5, 0x29, 0x5a, 0xda, 0xda, 0xda, 0xd2, 0xd5, 0xff,
|
||||
0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xd6, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x83, 0xe0, 0x00, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1d,
|
||||
0x84, 0x78, 0x00, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x84, 0x78, 0x00, 0xff, 0x82, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00,
|
||||
0x00, 0x11, 0x83, 0xe0, 0x00, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xaa, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x11, 0xe4, 0x78, 0x00, 0xff, 0xbf,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xe4, 0x78, 0x00, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xe0, 0x00,
|
||||
0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xe0, 0x00, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x86, 0x10, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xfe, 0xf7, 0x7b, 0xff, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x8a, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x96, 0x50,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x08, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0xb0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x90,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46,
|
||||
0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x28, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x92, 0xb0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0x1b, 0x76, 0xed, 0xdb,
|
||||
0xb7, 0x6e, 0xdc, 0x3f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x59, 0x5f, 0x0d, 0xad, 0xb6, 0xb6, 0xda, 0xdb, 0x6a, 0x3f, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x70, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff,
|
||||
0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f,
|
||||
0x67, 0x01, 0xfe, 0x43, 0x9f, 0xe7, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x47, 0x01, 0xc0, 0x43, 0x9c, 0x07, 0x01,
|
||||
0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xdf, 0x67, 0x01, 0xc0, 0x43, 0x9c, 0x07, 0x01, 0x3f, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0x27, 0x01, 0xf8, 0x43, 0x9f,
|
||||
0x87, 0x01, 0x3f, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xaa, 0xdf, 0x67, 0x01, 0xc0, 0x43, 0x9c, 0x07, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x47, 0x01, 0xc0,
|
||||
0x36, 0x1c, 0x07, 0x01, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x67, 0xf9, 0xfe, 0x0c, 0x1f, 0xe7, 0xf9, 0x3f, 0xff, 0x92,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0x27,
|
||||
0xf9, 0xfe, 0x0c, 0x1f, 0xe7, 0xf9, 0x3f, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f,
|
||||
0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xdf, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x0f, 0x80,
|
||||
0x01, 0x3f, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x8a, 0xdf, 0x20, 0x00, 0x00, 0x00, 0x11, 0xe0, 0x01, 0x3f, 0xff, 0x96, 0x50, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0x60, 0x00, 0x00, 0x00,
|
||||
0x11, 0xe0, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0xdf, 0x40, 0x00, 0x00, 0x00, 0x11, 0xe0, 0x01, 0x3f, 0xff, 0x90, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x60, 0x00,
|
||||
0x00, 0x00, 0x0f, 0xe0, 0x01, 0x3f, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f, 0x20, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0x3f, 0xff,
|
||||
0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf,
|
||||
0x60, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x01,
|
||||
0x3f, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0x30, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x02, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xdf, 0x17, 0xff, 0xff, 0xff, 0xfb, 0xbd, 0xec, 0x3f, 0xff, 0x90, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb1,
|
||||
0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
|
||||
0x5f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0x1b, 0x76, 0xed, 0xdb, 0xb7, 0x6e,
|
||||
0xdc, 0x3f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x59, 0x5f, 0x0d, 0xad, 0xb6, 0xb6, 0xda, 0xdb, 0x6a, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x70, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x42, 0x1f, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x95, 0xa0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f, 0x67, 0x00,
|
||||
0xf8, 0x43, 0x9f, 0xe3, 0xe1, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x47, 0x00, 0x30, 0x73, 0x9c, 0x07, 0x01, 0x3f, 0xff,
|
||||
0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf,
|
||||
0x67, 0x00, 0x30, 0x73, 0x9c, 0x07, 0x01, 0x3f, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0x27, 0x00, 0x30, 0x7b, 0x9f, 0x83, 0xe1,
|
||||
0x3f, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xaa, 0xdf, 0x67, 0x00, 0x30, 0x4f, 0x9c, 0x00, 0x79, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x47, 0x00, 0x30, 0x47, 0x9c,
|
||||
0x04, 0x79, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x42, 0x1f, 0x67, 0xf8, 0xf8, 0x43, 0x9f, 0xe3, 0xe1, 0x3f, 0xff, 0x92, 0x80, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0x27, 0xf8, 0xf8,
|
||||
0x43, 0x9f, 0xe3, 0xe1, 0x3f, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0xbf,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x40,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x3f,
|
||||
0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a,
|
||||
0xdf, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x01, 0x3f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0x60, 0x00, 0x00, 0x00, 0x1c, 0xe0,
|
||||
0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xff, 0xdf, 0x40, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x01, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x60, 0x00, 0x00, 0x00,
|
||||
0x1c, 0xe0, 0x01, 0x3f, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xd6, 0x9f, 0x20, 0x00, 0x00, 0x00, 0x1c, 0xe0, 0x01, 0x3f, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x60, 0x00,
|
||||
0x00, 0x00, 0x0f, 0x80, 0x01, 0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0x40, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x01, 0x3f, 0xff,
|
||||
0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f,
|
||||
0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
|
||||
0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xdf, 0x17, 0xff, 0xff, 0xff, 0xfb, 0xbd, 0xec, 0x3f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xca, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xa0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x86,
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59,
|
||||
0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x42, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x95, 0xa0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0xff, 0xc9, 0x24, 0x92, 0x49, 0x24, 0x92, 0x7f, 0xff,
|
||||
0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf,
|
||||
0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x17, 0xff, 0xff, 0xff, 0xff, 0xfe,
|
||||
0x0f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x42, 0x1f, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0xff, 0x2f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfe, 0x1f, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x46, 0x9f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0xbf, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x9f, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0x92,
|
||||
0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0xff,
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf,
|
||||
0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xdf, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xcf, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xd6, 0x9f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0xbf, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0xcf, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9f, 0xff, 0x82, 0x10,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0xff, 0x38,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0xff, 0x3b, 0xff, 0xff, 0xc0, 0x00, 0x01, 0x4f, 0xff,
|
||||
0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf,
|
||||
0xff, 0xba, 0x49, 0x92, 0x40, 0x00, 0x01, 0x9f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff, 0x3b, 0x25, 0xc9, 0x40, 0x00, 0x01,
|
||||
0xcf, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xca, 0x1f, 0xff, 0x3a, 0x93, 0xa4, 0xc0, 0x00, 0x01, 0x4f, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0xff, 0x3a, 0x75, 0x9d, 0x40,
|
||||
0x00, 0x01, 0xcf, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xff, 0xdf, 0xff, 0x9b, 0x31, 0xac, 0x40, 0x00, 0x01, 0x9f, 0xff, 0x86, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff, 0x3a, 0x4b,
|
||||
0x85, 0x40, 0x00, 0x01, 0xcf, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0xff, 0x3a, 0xa5, 0xd2, 0xc0, 0x00, 0x01, 0x4f, 0xff, 0x96,
|
||||
0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0xff,
|
||||
0xba, 0x13, 0x94, 0x40, 0x00, 0x01, 0x9f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x3b, 0xff, 0xff, 0xc0, 0x00, 0x01, 0xcf,
|
||||
0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
|
||||
0x1f, 0xff, 0x38, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x4f, 0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x9f, 0xff, 0x38, 0x00, 0x82, 0x64, 0x90,
|
||||
0x01, 0xcf, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xff, 0xdf, 0xff, 0x98, 0x00, 0xd9, 0x72, 0x50, 0x01, 0x9f, 0xff, 0xbf, 0xf0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x84,
|
||||
0xe9, 0x30, 0x01, 0xcf, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x08, 0x5f, 0xff, 0x38, 0x00, 0xad, 0x67, 0x50, 0x01, 0x4f, 0xff, 0x96, 0xb0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xdf, 0xff, 0xb8,
|
||||
0x00, 0xac, 0x6b, 0x10, 0x01, 0x9f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x92, 0xe1, 0x50, 0x01, 0xcf, 0xff,
|
||||
0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f,
|
||||
0xff, 0x38, 0x00, 0xca, 0x74, 0xb0, 0x01, 0x4f, 0xff, 0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0xff, 0x38, 0x00, 0xa1, 0x65, 0x10, 0x01,
|
||||
0xcf, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x46, 0x9f, 0xff, 0x98, 0x00, 0xff, 0xff, 0xf0, 0x01, 0x9f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0xcf, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x28, 0x5f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0x92, 0xb0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf, 0xff, 0xb8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x01, 0x9f, 0xff, 0x96, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0xbf,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff,
|
||||
0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf,
|
||||
0xff, 0x95, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6,
|
||||
0x9f, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00, 0x01, 0x9f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0xcf, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xff, 0xdf, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4f, 0xff, 0x82, 0x10, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0xff, 0xb8, 0x00, 0x00,
|
||||
0x00, 0x00, 0x01, 0x9f, 0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xaa, 0xdf, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x01, 0xcf, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0x17,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x1f, 0xff, 0x0d, 0xbb, 0x76, 0xed, 0xdb, 0xb6, 0x1f, 0xff,
|
||||
0x92, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f,
|
||||
0xff, 0x86, 0xd6, 0xdb, 0x5b, 0x6d, 0x6c, 0x0f, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x9f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3f, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xdf, 0xff, 0xd5, 0x2a, 0x49, 0x54, 0x95, 0x2a, 0xbf, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x8a, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x50, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x5f, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf,
|
||||
0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x82, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0x96, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa,
|
||||
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0x90, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x42, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x92, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0x1f, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xb1, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x46, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xf0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xdf, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x86, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0x92, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xdf,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
|
||||
};
|
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 4.0 KiB |
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
"watchfaces" : [
|
||||
{
|
||||
"id" : "1",
|
||||
"name" : "Basic",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/1_Basic.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/Basic",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "2",
|
||||
"name" : "7_SEG",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/2_7_SEG.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/7_SEG",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "2A",
|
||||
"name" : "7_SEG_LIGHT",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/2_7_SEG_LIGHT.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/7_SEG",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "3",
|
||||
"name" : "DOS",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/3_DOS.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/DOS",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "4",
|
||||
"name" : "Pokemon",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/4_Pokemon.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/Pokemon",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "5",
|
||||
"name" : "StarryHorizon",
|
||||
"author" : "dandelany",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/5_StarryHorizon.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/StarryHorizon",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "6",
|
||||
"name" : "Tetris",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/6_Tetris.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/Tetris",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "7",
|
||||
"name" : "MacPaint",
|
||||
"author" : "SQFMI",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/7_MacPaint.png",
|
||||
"source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/MacPaint",
|
||||
"version" : "1.0.0"
|
||||
},
|
||||
{
|
||||
"id" : "8",
|
||||
"name" : "Bahn",
|
||||
"author" : "BraininaBowl",
|
||||
"screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/8_Bahn.png",
|
||||
"source" : "https://github.com/BraininaBowl/Bahn-for-Watchy",
|
||||
"version" : "1.0.0"
|
||||
}
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 230 B |
After Width: | Height: | Size: 146 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 142 B |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 154 B |
After Width: | Height: | Size: 318 B |
After Width: | Height: | Size: 134 B |
After Width: | Height: | Size: 134 B |
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"name": "Watchy",
|
||||
"version": "1.4.14",
|
||||
"description": "Watchy - An Open Source E-Paper Watch by SQFMI",
|
||||
"authors": [
|
||||
{
|
||||
"name": "SQFMI",
|
||||
"url": "https://github.com/sqfmi"
|
||||
}
|
||||
],
|
||||
"homepage": "https://watchy.sqfmi.com",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sqfmi/Watchy.git"
|
||||
},
|
||||
"frameworks": "arduino",
|
||||
"platforms": ["espressif32"],
|
||||
"dependencies": [
|
||||
{ "name": "Adafruit GFX Library" },
|
||||
{ "name": "Arduino_JSON" },
|
||||
{ "name": "DS3232RTC" },
|
||||
{ "name": "NTPClient" },
|
||||
{
|
||||
"name": "Rtc_Pcf8563",
|
||||
"version": "https://github.com/orbitalair/Rtc_Pcf8563.git#master"
|
||||
},
|
||||
{
|
||||
"name": "GxEPD2",
|
||||
"version": "https://github.com/ZinggJM/GxEPD2.git#master"
|
||||
},
|
||||
{
|
||||
"name": "WiFiManager",
|
||||
"version": "https://github.com/tzapu/WiFiManager.git#master"
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
name=Watchy
|
||||
version=1.1.7
|
||||
version=1.4.14
|
||||
author=SQFMI
|
||||
maintainer=SQFMI
|
||||
sentence=Watchy - An Open Source E-Paper Watch by SQFMI
|
||||
|
@ -7,4 +7,4 @@ paragraph=This library contains drivers and code samples for Watchy
|
|||
category=Other
|
||||
url=https://watchy.sqfmi.com
|
||||
architectures=esp32
|
||||
depends=Adafruit GFX Library,Arduino_JSON,DS3232RTC,GxEPD2,WiFiManager
|
||||
depends=Adafruit GFX Library,Arduino_JSON,DS3232RTC,NTPClient,Rtc_Pcf8563,GxEPD2,WiFiManager
|
||||
|
|
129
src/BLE.cpp
|
@ -1,99 +1,85 @@
|
|||
#include "BLE.h"
|
||||
|
||||
#define SERVICE_UUID_ESPOTA "cd77498e-1ac8-48b6-aba8-4161c7342fce"
|
||||
#define CHARACTERISTIC_UUID_ID "cd77498f-1ac8-48b6-aba8-4161c7342fce"
|
||||
#define SERVICE_UUID_ESPOTA "cd77498e-1ac8-48b6-aba8-4161c7342fce"
|
||||
#define CHARACTERISTIC_UUID_ID "cd77498f-1ac8-48b6-aba8-4161c7342fce"
|
||||
|
||||
#define SERVICE_UUID_OTA "86b12865-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_FW "86b12866-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_HW_VERSION "86b12867-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_WATCHFACE_NAME "86b12868-4b70-4893-8ce6-9864fc00374d"
|
||||
#define SERVICE_UUID_OTA "86b12865-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_FW "86b12866-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_HW_VERSION "86b12867-4b70-4893-8ce6-9864fc00374d"
|
||||
#define CHARACTERISTIC_UUID_WATCHFACE_NAME \
|
||||
"86b12868-4b70-4893-8ce6-9864fc00374d"
|
||||
|
||||
#define FULL_PACKET 512
|
||||
#define FULL_PACKET 512
|
||||
#define CHARPOS_UPDATE_FLAG 5
|
||||
|
||||
#define STATUS_CONNECTED 0
|
||||
#define STATUS_CONNECTED 0
|
||||
#define STATUS_DISCONNECTED 4
|
||||
#define STATUS_UPDATING 1
|
||||
#define STATUS_READY 2
|
||||
#define STATUS_UPDATING 1
|
||||
#define STATUS_READY 2
|
||||
|
||||
esp_ota_handle_t otaHandler = 0;
|
||||
|
||||
int status = -1;
|
||||
int status = -1;
|
||||
int bytesReceived = 0;
|
||||
bool updateFlag = false;
|
||||
bool updateFlag = false;
|
||||
|
||||
class BLECustomServerCallbacks : public BLEServerCallbacks {
|
||||
void onConnect(BLEServer *pServer) { status = STATUS_CONNECTED; };
|
||||
|
||||
class BLECustomServerCallbacks: public BLEServerCallbacks {
|
||||
void onConnect(BLEServer* pServer) {
|
||||
status = STATUS_CONNECTED;
|
||||
};
|
||||
|
||||
void onDisconnect(BLEServer* pServer) {
|
||||
status = STATUS_DISCONNECTED;
|
||||
}
|
||||
void onDisconnect(BLEServer *pServer) { status = STATUS_DISCONNECTED; }
|
||||
};
|
||||
|
||||
class otaCallback: public BLECharacteristicCallbacks {
|
||||
public:
|
||||
otaCallback(BLE* ble) {
|
||||
_p_ble = ble;
|
||||
}
|
||||
BLE* _p_ble;
|
||||
class otaCallback : public BLECharacteristicCallbacks {
|
||||
public:
|
||||
otaCallback(BLE *ble) { _p_ble = ble; }
|
||||
BLE *_p_ble;
|
||||
|
||||
void onWrite(BLECharacteristic *pCharacteristic);
|
||||
void onWrite(BLECharacteristic *pCharacteristic);
|
||||
};
|
||||
|
||||
void otaCallback::onWrite(BLECharacteristic *pCharacteristic)
|
||||
{
|
||||
std::string rxData = pCharacteristic->getValue();
|
||||
if (!updateFlag) { //If it's the first packet of OTA since bootup, begin OTA
|
||||
//Serial.println("Begin FW Update");
|
||||
esp_ota_begin(esp_ota_get_next_update_partition(NULL), OTA_SIZE_UNKNOWN, &otaHandler);
|
||||
void otaCallback::onWrite(BLECharacteristic *pCharacteristic) {
|
||||
auto rxData = pCharacteristic->getValue();
|
||||
if (!updateFlag) { // If it's the first packet of OTA since bootup, begin OTA
|
||||
// Serial.println("Begin FW Update");
|
||||
esp_ota_begin(esp_ota_get_next_update_partition(NULL), OTA_SIZE_UNKNOWN,
|
||||
&otaHandler);
|
||||
updateFlag = true;
|
||||
status = STATUS_UPDATING;
|
||||
status = STATUS_UPDATING;
|
||||
}
|
||||
if (_p_ble != NULL)
|
||||
{
|
||||
if (rxData.length() > 0)
|
||||
{
|
||||
if (_p_ble != NULL) {
|
||||
if (rxData.length() > 0) {
|
||||
esp_ota_write(otaHandler, rxData.c_str(), rxData.length());
|
||||
bytesReceived = bytesReceived + rxData.length();
|
||||
if (rxData.length() != FULL_PACKET)
|
||||
{
|
||||
if (rxData.length() != FULL_PACKET) {
|
||||
esp_ota_end(otaHandler);
|
||||
//Serial.println("End FW Update");
|
||||
if (ESP_OK == esp_ota_set_boot_partition(esp_ota_get_next_update_partition(NULL))) {
|
||||
// Serial.println("End FW Update");
|
||||
if (ESP_OK == esp_ota_set_boot_partition(
|
||||
esp_ota_get_next_update_partition(NULL))) {
|
||||
status = STATUS_READY;
|
||||
}
|
||||
else {
|
||||
//Serial.println("Upload Error");
|
||||
} else {
|
||||
// Serial.println("Upload Error");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t txData[5] = {1, 2, 3, 4, 5};
|
||||
//delay(1000);
|
||||
pCharacteristic->setValue((uint8_t*)txData, 5);
|
||||
// delay(1000);
|
||||
pCharacteristic->setValue((uint8_t *)txData, 5);
|
||||
pCharacteristic->notify();
|
||||
}
|
||||
|
||||
//
|
||||
// Constructor
|
||||
BLE::BLE(void) {
|
||||
|
||||
}
|
||||
BLE::BLE(void) {}
|
||||
|
||||
//
|
||||
// Destructor
|
||||
BLE::~BLE(void)
|
||||
{
|
||||
|
||||
}
|
||||
BLE::~BLE(void) {}
|
||||
|
||||
//
|
||||
// begin
|
||||
bool BLE::begin(const char* localName = "Watchy BLE OTA") {
|
||||
bool BLE::begin(const char *localName = "Watchy BLE OTA") {
|
||||
// Create the BLE Device
|
||||
BLEDevice::init(localName);
|
||||
|
||||
|
@ -103,28 +89,21 @@ bool BLE::begin(const char* localName = "Watchy BLE OTA") {
|
|||
|
||||
// Create the BLE Service
|
||||
pESPOTAService = pServer->createService(SERVICE_UUID_ESPOTA);
|
||||
pService = pServer->createService(SERVICE_UUID_OTA);
|
||||
pService = pServer->createService(SERVICE_UUID_OTA);
|
||||
|
||||
// Create a BLE Characteristic
|
||||
pESPOTAIdCharacteristic = pESPOTAService->createCharacteristic(
|
||||
CHARACTERISTIC_UUID_ID,
|
||||
BLECharacteristic::PROPERTY_READ
|
||||
);
|
||||
CHARACTERISTIC_UUID_ID, BLECharacteristic::PROPERTY_READ);
|
||||
|
||||
pVersionCharacteristic = pService->createCharacteristic(
|
||||
CHARACTERISTIC_UUID_HW_VERSION,
|
||||
BLECharacteristic::PROPERTY_READ
|
||||
);
|
||||
CHARACTERISTIC_UUID_HW_VERSION, BLECharacteristic::PROPERTY_READ);
|
||||
|
||||
pWatchFaceNameCharacteristic = pService->createCharacteristic(
|
||||
CHARACTERISTIC_UUID_WATCHFACE_NAME,
|
||||
BLECharacteristic::PROPERTY_READ
|
||||
);
|
||||
CHARACTERISTIC_UUID_WATCHFACE_NAME, BLECharacteristic::PROPERTY_READ);
|
||||
|
||||
pOtaCharacteristic = pService->createCharacteristic(
|
||||
CHARACTERISTIC_UUID_FW,
|
||||
BLECharacteristic::PROPERTY_NOTIFY | BLECharacteristic::PROPERTY_WRITE
|
||||
);
|
||||
CHARACTERISTIC_UUID_FW,
|
||||
BLECharacteristic::PROPERTY_NOTIFY | BLECharacteristic::PROPERTY_WRITE);
|
||||
|
||||
pOtaCharacteristic->addDescriptor(new BLE2902());
|
||||
pOtaCharacteristic->setCallbacks(new otaCallback(this));
|
||||
|
@ -137,17 +116,15 @@ bool BLE::begin(const char* localName = "Watchy BLE OTA") {
|
|||
pServer->getAdvertising()->addServiceUUID(SERVICE_UUID_ESPOTA);
|
||||
pServer->getAdvertising()->start();
|
||||
|
||||
uint8_t hardwareVersion[5] = {HARDWARE_VERSION_MAJOR, HARDWARE_VERSION_MINOR, SOFTWARE_VERSION_MAJOR, SOFTWARE_VERSION_MINOR, SOFTWARE_VERSION_PATCH};
|
||||
pVersionCharacteristic->setValue((uint8_t*)hardwareVersion, 5);
|
||||
uint8_t hardwareVersion[5] = {HARDWARE_VERSION_MAJOR, HARDWARE_VERSION_MINOR,
|
||||
SOFTWARE_VERSION_MAJOR, SOFTWARE_VERSION_MINOR,
|
||||
SOFTWARE_VERSION_PATCH};
|
||||
pVersionCharacteristic->setValue((uint8_t *)hardwareVersion, 5);
|
||||
pWatchFaceNameCharacteristic->setValue("Watchy 7 Segment");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int BLE::updateStatus(){
|
||||
return status;
|
||||
}
|
||||
int BLE::updateStatus() { return status; }
|
||||
|
||||
int BLE::howManyBytes(){
|
||||
return bytesReceived;
|
||||
}
|
||||
int BLE::howManyBytes() { return bytesReceived; }
|
||||
|
|
36
src/BLE.h
|
@ -3,10 +3,10 @@
|
|||
|
||||
#include "Arduino.h"
|
||||
|
||||
#include <BLE2902.h>
|
||||
#include <BLEDevice.h>
|
||||
#include <BLEServer.h>
|
||||
#include <BLEUtils.h>
|
||||
#include <BLE2902.h>
|
||||
|
||||
#include "esp_ota_ops.h"
|
||||
|
||||
|
@ -14,29 +14,27 @@
|
|||
|
||||
class BLE;
|
||||
|
||||
class BLE
|
||||
{
|
||||
public:
|
||||
class BLE {
|
||||
public:
|
||||
BLE(void);
|
||||
~BLE(void);
|
||||
|
||||
BLE(void);
|
||||
~BLE(void);
|
||||
bool begin(const char *localName);
|
||||
int updateStatus();
|
||||
int howManyBytes();
|
||||
|
||||
bool begin(const char* localName);
|
||||
int updateStatus();
|
||||
int howManyBytes();
|
||||
private:
|
||||
String local_name;
|
||||
|
||||
private:
|
||||
String local_name;
|
||||
BLEServer *pServer = NULL;
|
||||
|
||||
BLEServer *pServer = NULL;
|
||||
BLEService *pESPOTAService = NULL;
|
||||
BLECharacteristic *pESPOTAIdCharacteristic = NULL;
|
||||
|
||||
BLEService *pESPOTAService = NULL;
|
||||
BLECharacteristic * pESPOTAIdCharacteristic = NULL;
|
||||
|
||||
BLEService *pService = NULL;
|
||||
BLECharacteristic * pVersionCharacteristic = NULL;
|
||||
BLECharacteristic * pOtaCharacteristic = NULL;
|
||||
BLECharacteristic * pWatchFaceNameCharacteristic = NULL;
|
||||
BLEService *pService = NULL;
|
||||
BLECharacteristic *pVersionCharacteristic = NULL;
|
||||
BLECharacteristic *pOtaCharacteristic = NULL;
|
||||
BLECharacteristic *pWatchFaceNameCharacteristic = NULL;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,504 @@
|
|||
// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||
//
|
||||
// based on Demo Example from Good Display, available here: http://www.e-paper-display.com/download_detail/downloadsId=806.html
|
||||
// Panel: GDEH0154D67 : http://www.e-paper-display.com/products_detail/productId=455.html
|
||||
// Controller : SSD1681 : http://www.e-paper-display.com/download_detail/downloadsId=825.html
|
||||
//
|
||||
// Author: Jean-Marc Zingg
|
||||
//
|
||||
// Version: see library.properties
|
||||
//
|
||||
// Library: https://github.com/ZinggJM/GxEPD2
|
||||
//
|
||||
// The original code from the author has been slightly modified to improve the performance for Watchy Project:
|
||||
// Link: https://github.com/sqfmi/Watchy
|
||||
|
||||
#include "Display.h"
|
||||
|
||||
RTC_DATA_ATTR bool displayFullInit = true;
|
||||
|
||||
void WatchyDisplay::busyCallback(const void *) {
|
||||
gpio_wakeup_enable((gpio_num_t)DISPLAY_BUSY, GPIO_INTR_LOW_LEVEL);
|
||||
esp_sleep_enable_gpio_wakeup();
|
||||
esp_light_sleep_start();
|
||||
}
|
||||
|
||||
WatchyDisplay::WatchyDisplay() :
|
||||
GxEPD2_EPD(DISPLAY_CS, DISPLAY_DC, DISPLAY_RES, DISPLAY_BUSY, HIGH, 10000000, WIDTH, HEIGHT, panel, hasColor, hasPartialUpdate, hasFastPartialUpdate)
|
||||
{
|
||||
// Setup callback and SPI by default
|
||||
#ifdef ARDUINO_ESP32S3_DEV
|
||||
SPI.begin(WATCHY_V3_SCK,WATCHY_V3_MISO,WATCHY_V3_MOSI,WATCHY_V3_SS);
|
||||
#endif
|
||||
selectSPI(SPI, SPISettings(20000000, MSBFIRST, SPI_MODE0));
|
||||
setBusyCallback(busyCallback);
|
||||
}
|
||||
|
||||
void WatchyDisplay::initWatchy() {
|
||||
// Watchy default initialization
|
||||
init(0, displayFullInit, 2, true);
|
||||
}
|
||||
|
||||
void WatchyDisplay::asyncPowerOn() {
|
||||
// This is expensive if unused
|
||||
if (!waitingPowerOn && !_hibernating) {
|
||||
_InitDisplay();
|
||||
_PowerOnAsync();
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::setDarkBorder(bool dark) {
|
||||
if (_hibernating) return;
|
||||
darkBorder = dark;
|
||||
_startTransfer();
|
||||
_transferCommand(0x3C); // BorderWavefrom
|
||||
_transfer(dark ? 0x02 : 0x05);
|
||||
_endTransfer();
|
||||
}
|
||||
|
||||
void WatchyDisplay::clearScreen(uint8_t value)
|
||||
{
|
||||
writeScreenBuffer(value);
|
||||
refresh(true);
|
||||
writeScreenBufferAgain(value);
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeScreenBuffer(uint8_t value)
|
||||
{
|
||||
if (!_using_partial_mode) _Init_Part();
|
||||
if (_initial_write) _writeScreenBuffer(0x26, value); // set previous
|
||||
_writeScreenBuffer(0x24, value); // set current
|
||||
_initial_write = false; // initial full screen buffer clean done
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeScreenBufferAgain(uint8_t value)
|
||||
{
|
||||
if (!_using_partial_mode) _Init_Part();
|
||||
_writeScreenBuffer(0x24, value); // set current
|
||||
}
|
||||
|
||||
void WatchyDisplay::_writeScreenBuffer(uint8_t command, uint8_t value)
|
||||
{
|
||||
_startTransfer();
|
||||
_transferCommand(command);
|
||||
for (uint32_t i = 0; i < uint32_t(WIDTH) * uint32_t(HEIGHT) / 8; i++)
|
||||
{
|
||||
_transfer(value);
|
||||
}
|
||||
_endTransfer();
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
_writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
_writeImage(0x26, bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
_writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
_writeImage(0x24, bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::_writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
yield(); // avoid wdt
|
||||
#endif
|
||||
int16_t wb = (w + 7) / 8; // width bytes, bitmaps are padded
|
||||
x -= x % 8; // byte boundary
|
||||
w = wb * 8; // byte boundary
|
||||
int16_t x1 = x < 0 ? 0 : x; // limit
|
||||
int16_t y1 = y < 0 ? 0 : y; // limit
|
||||
int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
|
||||
int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
|
||||
int16_t dx = x1 - x;
|
||||
int16_t dy = y1 - y;
|
||||
w1 -= dx;
|
||||
h1 -= dy;
|
||||
if ((w1 <= 0) || (h1 <= 0)) return;
|
||||
if (!_using_partial_mode) _Init_Part();
|
||||
_setPartialRamArea(x1, y1, w1, h1);
|
||||
_startTransfer();
|
||||
_transferCommand(command);
|
||||
for (int16_t i = 0; i < h1; i++)
|
||||
{
|
||||
for (int16_t j = 0; j < w1 / 8; j++)
|
||||
{
|
||||
uint8_t data;
|
||||
// use wb, h of bitmap for index!
|
||||
int16_t idx = mirror_y ? j + dx / 8 + ((h - 1 - (i + dy))) * wb : j + dx / 8 + (i + dy) * wb;
|
||||
if (pgm)
|
||||
{
|
||||
#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
|
||||
data = pgm_read_byte(&bitmap[idx]);
|
||||
#else
|
||||
data = bitmap[idx];
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
data = bitmap[idx];
|
||||
}
|
||||
if (invert) data = ~data;
|
||||
_transfer(data);
|
||||
}
|
||||
}
|
||||
_endTransfer();
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
yield(); // avoid wdt
|
||||
#endif
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
_writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
_writeImagePart(0x24, bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::_writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (_initial_write) writeScreenBuffer(); // initial full screen buffer clean
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
yield(); // avoid wdt
|
||||
#endif
|
||||
if ((w_bitmap < 0) || (h_bitmap < 0) || (w < 0) || (h < 0)) return;
|
||||
if ((x_part < 0) || (x_part >= w_bitmap)) return;
|
||||
if ((y_part < 0) || (y_part >= h_bitmap)) return;
|
||||
int16_t wb_bitmap = (w_bitmap + 7) / 8; // width bytes, bitmaps are padded
|
||||
x_part -= x_part % 8; // byte boundary
|
||||
w = w_bitmap - x_part < w ? w_bitmap - x_part : w; // limit
|
||||
h = h_bitmap - y_part < h ? h_bitmap - y_part : h; // limit
|
||||
x -= x % 8; // byte boundary
|
||||
w = 8 * ((w + 7) / 8); // byte boundary, bitmaps are padded
|
||||
int16_t x1 = x < 0 ? 0 : x; // limit
|
||||
int16_t y1 = y < 0 ? 0 : y; // limit
|
||||
int16_t w1 = x + w < int16_t(WIDTH) ? w : int16_t(WIDTH) - x; // limit
|
||||
int16_t h1 = y + h < int16_t(HEIGHT) ? h : int16_t(HEIGHT) - y; // limit
|
||||
int16_t dx = x1 - x;
|
||||
int16_t dy = y1 - y;
|
||||
w1 -= dx;
|
||||
h1 -= dy;
|
||||
if ((w1 <= 0) || (h1 <= 0)) return;
|
||||
if (!_using_partial_mode) _Init_Part();
|
||||
_setPartialRamArea(x1, y1, w1, h1);
|
||||
_startTransfer();
|
||||
_transferCommand(command);
|
||||
for (int16_t i = 0; i < h1; i++)
|
||||
{
|
||||
for (int16_t j = 0; j < w1 / 8; j++)
|
||||
{
|
||||
uint8_t data;
|
||||
// use wb_bitmap, h_bitmap of bitmap for index!
|
||||
int16_t idx = mirror_y ? x_part / 8 + j + dx / 8 + ((h_bitmap - 1 - (y_part + i + dy))) * wb_bitmap : x_part / 8 + j + dx / 8 + (y_part + i + dy) * wb_bitmap;
|
||||
if (pgm)
|
||||
{
|
||||
#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
|
||||
data = pgm_read_byte(&bitmap[idx]);
|
||||
#else
|
||||
data = bitmap[idx];
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
data = bitmap[idx];
|
||||
}
|
||||
if (invert) data = ~data;
|
||||
_transfer(data);
|
||||
}
|
||||
}
|
||||
_endTransfer();
|
||||
#if defined(ESP8266) || defined(ESP32)
|
||||
yield(); // avoid wdt
|
||||
#endif
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (black)
|
||||
{
|
||||
writeImage(black, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (black)
|
||||
{
|
||||
writeImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (data1)
|
||||
{
|
||||
writeImage(data1, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
writeImage(bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
refresh(x, y, w, h);
|
||||
writeImageAgain(bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
writeImagePart(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
refresh(x, y, w, h);
|
||||
writeImagePartAgain(bitmap, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
|
||||
void WatchyDisplay::drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (black)
|
||||
{
|
||||
drawImage(black, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (black)
|
||||
{
|
||||
drawImagePart(black, x_part, y_part, w_bitmap, h_bitmap, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert, bool mirror_y, bool pgm)
|
||||
{
|
||||
if (data1)
|
||||
{
|
||||
drawImage(data1, x, y, w, h, invert, mirror_y, pgm);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::refresh(bool partial_update_mode)
|
||||
{
|
||||
if (partial_update_mode) refresh(0, 0, WIDTH, HEIGHT);
|
||||
else
|
||||
{
|
||||
if (_using_partial_mode) _Init_Full();
|
||||
_Update_Full();
|
||||
_initial_refresh = false; // initial full update done
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::refresh(int16_t x, int16_t y, int16_t w, int16_t h)
|
||||
{
|
||||
if (_initial_refresh) return refresh(false); // initial update needs be full update
|
||||
// intersection with screen
|
||||
int16_t w1 = x < 0 ? w + x : w; // reduce
|
||||
int16_t h1 = y < 0 ? h + y : h; // reduce
|
||||
int16_t x1 = x < 0 ? 0 : x; // limit
|
||||
int16_t y1 = y < 0 ? 0 : y; // limit
|
||||
w1 = x1 + w1 < int16_t(WIDTH) ? w1 : int16_t(WIDTH) - x1; // limit
|
||||
h1 = y1 + h1 < int16_t(HEIGHT) ? h1 : int16_t(HEIGHT) - y1; // limit
|
||||
if ((w1 <= 0) || (h1 <= 0)) return;
|
||||
// make x1, w1 multiple of 8
|
||||
w1 += x1 % 8;
|
||||
if (w1 % 8 > 0) w1 += 8 - w1 % 8;
|
||||
x1 -= x1 % 8;
|
||||
if (!_using_partial_mode) _Init_Part();
|
||||
_setPartialRamArea(x1, y1, w1, h1);
|
||||
_Update_Part();
|
||||
}
|
||||
|
||||
void WatchyDisplay::powerOff()
|
||||
{
|
||||
_PowerOff();
|
||||
}
|
||||
|
||||
void WatchyDisplay::hibernate()
|
||||
{
|
||||
//_PowerOff(); // Not needed before entering deep sleep
|
||||
if (_rst >= 0)
|
||||
{
|
||||
_writeCommand(0x10); // deep sleep mode
|
||||
_writeData(0x1); // enter deep sleep
|
||||
_hibernating = true;
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyDisplay::_setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
|
||||
{
|
||||
_startTransfer();
|
||||
_transferCommand(0x11); // set ram entry mode
|
||||
_transfer(0x03); // x increase, y increase : normal mode
|
||||
_transferCommand(0x44);
|
||||
_transfer(x / 8);
|
||||
_transfer((x + w - 1) / 8);
|
||||
_transferCommand(0x45);
|
||||
_transfer(y % 256);
|
||||
_transfer(y / 256);
|
||||
_transfer((y + h - 1) % 256);
|
||||
_transfer((y + h - 1) / 256);
|
||||
_transferCommand(0x4e);
|
||||
_transfer(x / 8);
|
||||
_transferCommand(0x4f);
|
||||
_transfer(y % 256);
|
||||
_transfer(y / 256);
|
||||
_endTransfer();
|
||||
}
|
||||
|
||||
void WatchyDisplay::_PowerOnAsync()
|
||||
{
|
||||
if (_power_is_on)
|
||||
return;
|
||||
_startTransfer();
|
||||
_transferCommand(0x22);
|
||||
_transfer(0xf8);
|
||||
_transferCommand(0x20);
|
||||
_endTransfer();
|
||||
waitingPowerOn = true;
|
||||
_power_is_on = true;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_PowerOn()
|
||||
{
|
||||
if (waitingPowerOn)
|
||||
{
|
||||
waitingPowerOn = false;
|
||||
_waitWhileBusy("_PowerOn", power_on_time);
|
||||
}
|
||||
if (_power_is_on)
|
||||
return;
|
||||
_startTransfer();
|
||||
_transferCommand(0x22);
|
||||
_transfer(0xf8);
|
||||
_transferCommand(0x20);
|
||||
_endTransfer();
|
||||
_waitWhileBusy("_PowerOn", power_on_time);
|
||||
_power_is_on = true;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_PowerOff()
|
||||
{
|
||||
if (waitingPowerOn)
|
||||
{
|
||||
waitingPowerOn = false;
|
||||
_waitWhileBusy("_PowerOn", power_on_time);
|
||||
}
|
||||
if (!_power_is_on)
|
||||
return;
|
||||
_startTransfer();
|
||||
_transferCommand(0x22);
|
||||
_transfer(0x83);
|
||||
_transferCommand(0x20);
|
||||
_endTransfer();
|
||||
_waitWhileBusy("_PowerOff", power_off_time);
|
||||
_power_is_on = false;
|
||||
_using_partial_mode = false;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_InitDisplay()
|
||||
{
|
||||
if (_hibernating) _reset();
|
||||
|
||||
// No need to soft reset, the Display goes to same state after hard reset
|
||||
// _writeCommand(0x12); // soft reset
|
||||
// _waitWhileBusy("_SoftReset", 10); // 10ms max according to specs*/
|
||||
|
||||
_startTransfer();
|
||||
_transferCommand(0x01); // Driver output control
|
||||
_transfer(0xC7);
|
||||
_transfer(0x00);
|
||||
_transfer(0x00);
|
||||
|
||||
if (reduceBoosterTime) {
|
||||
// SSD1675B controller datasheet
|
||||
_transferCommand(0x0C); // BOOSTER_SOFT_START_CONTROL
|
||||
// Set the driving strength of GDR for all phases to maximun 0b111 -> 0xF
|
||||
// Set the minimum off time of GDR to minimum 0x4 (values below sould be same)
|
||||
_transfer(0xF4); // Phase1 Default value 0x8B
|
||||
_transfer(0xF4); // Phase2 Default value 0x9C
|
||||
_transfer(0xF4); // Phase3 Default value 0x96
|
||||
_transfer(0x00); // Duration of phases, Default 0xF = 0b00 11 11 (40ms Phase 1/2, 10ms Phase 3)
|
||||
}
|
||||
|
||||
_transferCommand(0x18); // Read built-in temperature sensor
|
||||
_transfer(0x80);
|
||||
_endTransfer();
|
||||
|
||||
setDarkBorder(darkBorder);
|
||||
|
||||
_setPartialRamArea(0, 0, WIDTH, HEIGHT);
|
||||
}
|
||||
|
||||
void WatchyDisplay::_reset()
|
||||
{
|
||||
// Call default method if not configured the same way
|
||||
if (_rst < 0 || !_pulldown_rst_mode) {
|
||||
GxEPD2_EPD::_reset();
|
||||
return;
|
||||
}
|
||||
|
||||
digitalWrite(_rst, LOW);
|
||||
pinMode(_rst, OUTPUT);
|
||||
delay(_reset_duration);
|
||||
pinMode(_rst, INPUT_PULLUP);
|
||||
// Tested calling _powerOn() inmediately, and works ok, no need to sleep
|
||||
// delay(_reset_duration > 10 ? _reset_duration : 0);
|
||||
_hibernating = false;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_Init_Full()
|
||||
{
|
||||
_InitDisplay();
|
||||
_PowerOn();
|
||||
_using_partial_mode = false;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_Init_Part()
|
||||
{
|
||||
_InitDisplay();
|
||||
_PowerOn();
|
||||
_using_partial_mode = true;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_Update_Full()
|
||||
{
|
||||
_startTransfer();
|
||||
_transferCommand(0x22);
|
||||
_transfer(0xf4);
|
||||
_transferCommand(0x20);
|
||||
_endTransfer();
|
||||
_waitWhileBusy("_Update_Full", full_refresh_time);
|
||||
displayFullInit = false;
|
||||
}
|
||||
|
||||
void WatchyDisplay::_Update_Part()
|
||||
{
|
||||
_startTransfer();
|
||||
_transferCommand(0x22);
|
||||
//_transfer(0xcc); // skip temperature load (-5ms)
|
||||
_transfer(0xfc);
|
||||
_transferCommand(0x20);
|
||||
_endTransfer();
|
||||
_waitWhileBusy("_Update_Part", partial_refresh_time);
|
||||
}
|
||||
|
||||
void WatchyDisplay::_transferCommand(uint8_t value)
|
||||
{
|
||||
if (_dc >= 0) digitalWrite(_dc, LOW);
|
||||
SPI.transfer(value);
|
||||
if (_dc >= 0) digitalWrite(_dc, HIGH);
|
||||
}
|
|
@ -0,0 +1,99 @@
|
|||
// Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||
//
|
||||
// based on Demo Example from Good Display, available here: http://www.e-paper-display.com/download_detail/downloadsId=806.html
|
||||
// Panel: GDEH0154D67 : http://www.e-paper-display.com/products_detail/productId=455.html
|
||||
// Controller : SSD1681 : http://www.e-paper-display.com/download_detail/downloadsId=825.html
|
||||
//
|
||||
// Author: Jean-Marc Zingg
|
||||
//
|
||||
// Version: see library.properties
|
||||
//
|
||||
// Library: https://github.com/ZinggJM/GxEPD2
|
||||
//
|
||||
// The original code from the author has been slightly modified to improve the performance for Watchy Project:
|
||||
// Link: https://github.com/sqfmi/Watchy
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <GxEPD2_EPD.h>
|
||||
#include "driver/gpio.h"
|
||||
#include "config.h"
|
||||
|
||||
class WatchyDisplay : public GxEPD2_EPD
|
||||
{
|
||||
public:
|
||||
// attributes
|
||||
static const uint16_t WIDTH = 200;
|
||||
static const uint16_t WIDTH_VISIBLE = WIDTH;
|
||||
static const uint16_t HEIGHT = 200;
|
||||
static const GxEPD2::Panel panel = GxEPD2::GDEH0154D67;
|
||||
static const bool hasColor = false;
|
||||
static const bool hasPartialUpdate = true;
|
||||
static const bool hasFastPartialUpdate = true;
|
||||
static const uint16_t power_on_time = 100; // ms, e.g. 95583us
|
||||
static const uint16_t power_off_time = 150; // ms, e.g. 140621us
|
||||
static const uint16_t full_refresh_time = 2600; // ms, e.g. 2509602us
|
||||
static const uint16_t partial_refresh_time = 500; // ms, e.g. 457282us
|
||||
// constructor
|
||||
WatchyDisplay();
|
||||
void initWatchy();
|
||||
void setDarkBorder(bool darkBorder);
|
||||
void asyncPowerOn();
|
||||
void _PowerOnAsync();
|
||||
bool waitingPowerOn = false;
|
||||
static void busyCallback(const void *);
|
||||
// methods (virtual)
|
||||
// Support for Bitmaps (Sprites) to Controller Buffer and to Screen
|
||||
void clearScreen(uint8_t value = 0xFF); // init controller memory and screen (default white)
|
||||
void writeScreenBuffer(uint8_t value = 0xFF); // init controller memory (default white)
|
||||
void writeScreenBufferAgain(uint8_t value = 0xFF); // init previous buffer controller memory (default white)
|
||||
// write to controller memory, without screen refresh; x and w should be multiple of 8
|
||||
void writeImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void writeImageForFullRefresh(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void writeImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void writeImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void writeImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
// for differential update: set current and previous buffers equal (for fast partial update to work correctly)
|
||||
void writeImageAgain(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void writeImagePartAgain(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
// write sprite of native data to controller memory, without screen refresh; x and w should be multiple of 8
|
||||
void writeNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
// write to controller memory, with screen refresh; x and w should be multiple of 8
|
||||
void drawImage(const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void drawImagePart(const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void drawImage(const uint8_t* black, const uint8_t* color, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void drawImagePart(const uint8_t* black, const uint8_t* color, int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
// write sprite of native data to controller memory, with screen refresh; x and w should be multiple of 8
|
||||
void drawNative(const uint8_t* data1, const uint8_t* data2, int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void refresh(bool partial_update_mode = false); // screen refresh from controller memory to full screen
|
||||
void refresh(int16_t x, int16_t y, int16_t w, int16_t h); // screen refresh from controller memory, partial screen
|
||||
void powerOff(); // turns off generation of panel driving voltages, avoids screen fading over time
|
||||
void hibernate(); // turns powerOff() and sets controller to deep sleep for minimum power use, ONLY if wakeable by RST (rst >= 0)
|
||||
|
||||
bool darkBorder = false; // adds a dark border outside the normal screen area
|
||||
|
||||
static constexpr bool reduceBoosterTime = true; // Saves ~200ms
|
||||
private:
|
||||
void _writeScreenBuffer(uint8_t command, uint8_t value);
|
||||
void _writeImage(uint8_t command, const uint8_t bitmap[], int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void _writeImagePart(uint8_t command, const uint8_t bitmap[], int16_t x_part, int16_t y_part, int16_t w_bitmap, int16_t h_bitmap,
|
||||
int16_t x, int16_t y, int16_t w, int16_t h, bool invert = false, bool mirror_y = false, bool pgm = false);
|
||||
void _setPartialRamArea(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||
void _PowerOn();
|
||||
void _PowerOff();
|
||||
void _InitDisplay();
|
||||
void _Init_Full();
|
||||
void _Init_Part();
|
||||
void _Update_Full();
|
||||
void _Update_Part();
|
||||
|
||||
void _reset();
|
||||
|
||||
void _transferCommand(uint8_t command);
|
||||
};
|
1484
src/Watchy.cpp
128
src/Watchy.h
|
@ -4,54 +4,113 @@
|
|||
#include <Arduino.h>
|
||||
#include <WiFiManager.h>
|
||||
#include <HTTPClient.h>
|
||||
#include <NTPClient.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <Arduino_JSON.h>
|
||||
#include <DS3232RTC.h>
|
||||
#include <GxEPD2_BW.h>
|
||||
#include <Wire.h>
|
||||
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||
#include "DSEG7_Classic_Bold_53.h"
|
||||
#include "Display.h"
|
||||
#include "BLE.h"
|
||||
#include "bma.h"
|
||||
#include "config.h"
|
||||
#include "esp_chip_info.h"
|
||||
#ifdef ARDUINO_ESP32S3_DEV
|
||||
#include "Watchy32KRTC.h"
|
||||
#include "soc/rtc.h"
|
||||
#include "soc/rtc_io_reg.h"
|
||||
#include "soc/sens_reg.h"
|
||||
#include "esp_sleep.h"
|
||||
#include "rom/rtc.h"
|
||||
#include "soc/soc.h"
|
||||
#include "soc/rtc_cntl_reg.h"
|
||||
#include "time.h"
|
||||
#include "esp_sntp.h"
|
||||
#include "hal/rtc_io_types.h"
|
||||
#include "driver/rtc_io.h"
|
||||
#define uS_TO_S_FACTOR 1000000ULL //Conversion factor for micro seconds to seconds
|
||||
#define ADC_VOLTAGE_DIVIDER ((360.0f+100.0f)/360.0f) //Voltage divider at battery ADC
|
||||
#else
|
||||
#include "WatchyRTC.h"
|
||||
#endif
|
||||
|
||||
typedef struct weatherData{
|
||||
int8_t temperature;
|
||||
int16_t weatherConditionCode;
|
||||
}weatherData;
|
||||
typedef struct weatherData {
|
||||
int8_t temperature;
|
||||
int16_t weatherConditionCode;
|
||||
bool isMetric;
|
||||
String weatherDescription;
|
||||
bool external;
|
||||
tmElements_t sunrise;
|
||||
tmElements_t sunset;
|
||||
} weatherData;
|
||||
|
||||
typedef struct watchySettings {
|
||||
// Weather Settings
|
||||
String cityID;
|
||||
String lat;
|
||||
String lon;
|
||||
String weatherAPIKey;
|
||||
String weatherURL;
|
||||
String weatherUnit;
|
||||
String weatherLang;
|
||||
int8_t weatherUpdateInterval;
|
||||
// NTP Settings
|
||||
String ntpServer;
|
||||
int gmtOffset;
|
||||
//
|
||||
bool vibrateOClock;
|
||||
} watchySettings;
|
||||
|
||||
class Watchy {
|
||||
public:
|
||||
static DS3232RTC RTC;
|
||||
static GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display;
|
||||
tmElements_t currentTime;
|
||||
public:
|
||||
Watchy();
|
||||
void init();
|
||||
void deepSleep();
|
||||
float getBatteryVoltage();
|
||||
void vibMotor(uint8_t intervalMs = 100, uint8_t length = 20);
|
||||
public:
|
||||
#ifdef ARDUINO_ESP32S3_DEV
|
||||
static Watchy32KRTC RTC;
|
||||
#else
|
||||
static WatchyRTC RTC;
|
||||
#endif
|
||||
static GxEPD2_BW<WatchyDisplay, WatchyDisplay::HEIGHT> display;
|
||||
tmElements_t currentTime;
|
||||
watchySettings settings;
|
||||
|
||||
void handleButtonPress();
|
||||
void showMenu(byte menuIndex, bool partialRefresh);
|
||||
void showBattery();
|
||||
void showBuzz();
|
||||
void showAccelerometer();
|
||||
void showUpdateFW();
|
||||
void setTime();
|
||||
void setupWifi();
|
||||
bool connectWiFi();
|
||||
weatherData getWeatherData();
|
||||
void updateFWBegin();
|
||||
public:
|
||||
explicit Watchy(const watchySettings &s) : settings(s) {} // constructor
|
||||
void init(String datetime = "");
|
||||
void deepSleep();
|
||||
float getBatteryVoltage();
|
||||
uint8_t getBoardRevision();
|
||||
void vibMotor(uint8_t intervalMs = 100, uint8_t length = 20);
|
||||
|
||||
void showWatchFace(bool partialRefresh);
|
||||
virtual void drawWatchFace(); //override this method for different watch faces
|
||||
virtual void handleButtonPress();
|
||||
void showMenu(byte menuIndex, bool partialRefresh);
|
||||
void showFastMenu(byte menuIndex);
|
||||
void showAbout();
|
||||
void showBuzz();
|
||||
void showAccelerometer();
|
||||
void showUpdateFW();
|
||||
void showSyncNTP();
|
||||
bool syncNTP();
|
||||
bool syncNTP(long gmt);
|
||||
bool syncNTP(long gmt, String ntpServer);
|
||||
void setTime();
|
||||
void setupWifi();
|
||||
bool connectWiFi();
|
||||
weatherData getWeatherData();
|
||||
void updateFWBegin();
|
||||
|
||||
private:
|
||||
void _rtcConfig();
|
||||
void _bmaConfig();
|
||||
static void _configModeCallback(WiFiManager *myWiFiManager);
|
||||
static uint16_t _readRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len);
|
||||
static uint16_t _writeRegister(uint8_t address, uint8_t reg, uint8_t *data, uint16_t len);
|
||||
void showWatchFace(bool partialRefresh);
|
||||
virtual void drawWatchFace(); // override this method for different watch
|
||||
// faces
|
||||
|
||||
private:
|
||||
void _bmaConfig();
|
||||
static void _configModeCallback(WiFiManager *myWiFiManager);
|
||||
static uint16_t _readRegister(uint8_t address, uint8_t reg, uint8_t *data,
|
||||
uint16_t len);
|
||||
static uint16_t _writeRegister(uint8_t address, uint8_t reg, uint8_t *data,
|
||||
uint16_t len);
|
||||
weatherData _getWeatherData(String cityID, String lat, String lon, String units, String lang,
|
||||
String url, String apiKey, uint8_t updateInterval);
|
||||
};
|
||||
|
||||
extern RTC_DATA_ATTR int guiState;
|
||||
|
@ -59,5 +118,6 @@ extern RTC_DATA_ATTR int menuIndex;
|
|||
extern RTC_DATA_ATTR BMA423 sensor;
|
||||
extern RTC_DATA_ATTR bool WIFI_CONFIGURED;
|
||||
extern RTC_DATA_ATTR bool BLE_CONFIGURED;
|
||||
extern RTC_DATA_ATTR bool USB_PLUGGED_IN;
|
||||
|
||||
#endif
|
|
@ -0,0 +1,103 @@
|
|||
#include "Watchy32KRTC.h"
|
||||
|
||||
Watchy32KRTC::Watchy32KRTC(){}
|
||||
|
||||
void Watchy32KRTC::init() {
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
setenv("TZ", "", 1);
|
||||
tzset();
|
||||
|
||||
*/
|
||||
|
||||
void Watchy32KRTC::config(String datetime) { // String datetime format is YYYY:MM:DD:HH:MM:SS
|
||||
struct tm timeInfo;
|
||||
memset(&timeInfo, 0, sizeof(timeInfo));
|
||||
|
||||
// Parse the time string
|
||||
if (strptime(datetime.c_str(), "%Y:%m:%d:%H:%M:%S", &timeInfo) == NULL) {
|
||||
// Failed to parse the time string
|
||||
}
|
||||
|
||||
// Convert tm to timeval
|
||||
struct timeval tv;
|
||||
tv.tv_sec = mktime(&timeInfo);
|
||||
tv.tv_usec = 0;
|
||||
|
||||
// Set the time using settimeofday
|
||||
if (settimeofday(&tv, NULL) != 0) {
|
||||
// Error setting the time
|
||||
}
|
||||
}
|
||||
|
||||
void Watchy32KRTC::clearAlarm() {
|
||||
|
||||
}
|
||||
|
||||
void Watchy32KRTC::read(tmElements_t &tm) {
|
||||
time_t now;
|
||||
struct tm timeInfo;
|
||||
time(&now);
|
||||
// Set timezone to China Standard Time
|
||||
//setenv("TZ", "CST-8", 1);
|
||||
//tzset();
|
||||
localtime_r(&now, &timeInfo);
|
||||
tm.Year = timeInfo.tm_year - 70;
|
||||
tm.Month = timeInfo.tm_mon + 1;
|
||||
tm.Day = timeInfo.tm_mday;
|
||||
tm.Wday = timeInfo.tm_wday + 1;
|
||||
tm.Hour = timeInfo.tm_hour;
|
||||
tm.Minute = timeInfo.tm_min;
|
||||
tm.Second = timeInfo.tm_sec;
|
||||
}
|
||||
|
||||
void Watchy32KRTC::set(tmElements_t tm) {
|
||||
struct tm timeInfo;
|
||||
timeInfo.tm_year = tm.Year + 70;
|
||||
timeInfo.tm_mon = tm.Month - 1;
|
||||
timeInfo.tm_mday = tm.Day;
|
||||
timeInfo.tm_hour = tm.Hour;
|
||||
timeInfo.tm_min = tm.Minute;
|
||||
timeInfo.tm_sec = tm.Second;
|
||||
|
||||
// Convert tm to timeval
|
||||
struct timeval tv;
|
||||
tv.tv_sec = mktime(&timeInfo);
|
||||
tv.tv_usec = 0;
|
||||
|
||||
// Set the time using settimeofday
|
||||
if (settimeofday(&tv, NULL) != 0) {
|
||||
// Error setting the time
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t Watchy32KRTC::temperature() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
String Watchy32KRTC::_getValue(String data, char separator, int index) {
|
||||
int found = 0;
|
||||
int strIndex[] = {0, -1};
|
||||
int maxIndex = data.length() - 1;
|
||||
|
||||
for (int i = 0; i <= maxIndex && found <= index; i++) {
|
||||
if (data.charAt(i) == separator || i == maxIndex) {
|
||||
found++;
|
||||
strIndex[0] = strIndex[1] + 1;
|
||||
strIndex[1] = (i == maxIndex) ? i + 1 : i;
|
||||
}
|
||||
}
|
||||
|
||||
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
|
||||
}
|
||||
|
||||
void Watchy32KRTC::_timeval_to_tm(struct timeval *tv, struct tm *tm) {
|
||||
// Get the seconds and microseconds from the timeval struct
|
||||
time_t seconds = tv->tv_sec;
|
||||
int microseconds = tv->tv_usec;
|
||||
// Convert the seconds to a tm struct
|
||||
*tm = *localtime(&seconds);
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
#ifndef WATCHY_32K_RTC_H
|
||||
#define WATCHY_32K_RTC_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TimeLib.h>
|
||||
#include "config.h"
|
||||
|
||||
class Watchy32KRTC {
|
||||
public:
|
||||
Watchy32KRTC();
|
||||
void init();
|
||||
void config(String datetime); //datetime format is YYYY:MM:DD:HH:MM:SS
|
||||
void clearAlarm();
|
||||
void read(tmElements_t &tm);
|
||||
void set(tmElements_t tm);
|
||||
uint8_t temperature();
|
||||
|
||||
private:
|
||||
String _getValue(String data, char separator, int index);
|
||||
void _timeval_to_tm(struct timeval *tv, struct tm *tm);
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,150 @@
|
|||
#include "WatchyRTC.h"
|
||||
|
||||
WatchyRTC::WatchyRTC() : rtc_ds(false) {}
|
||||
|
||||
void WatchyRTC::init() {
|
||||
byte error;
|
||||
Wire.beginTransmission(RTC_DS_ADDR);
|
||||
error = Wire.endTransmission();
|
||||
if (error == 0) {
|
||||
rtcType = DS3231;
|
||||
} else {
|
||||
Wire.beginTransmission(RTC_PCF_ADDR);
|
||||
error = Wire.endTransmission();
|
||||
if (error == 0) {
|
||||
rtcType = PCF8563;
|
||||
} else {
|
||||
// RTC Error
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyRTC::config(
|
||||
String datetime) { // String datetime format is YYYY:MM:DD:HH:MM:SS
|
||||
if (rtcType == DS3231) {
|
||||
_DSConfig(datetime);
|
||||
} else {
|
||||
_PCFConfig(datetime);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyRTC::clearAlarm() {
|
||||
if (rtcType == DS3231) {
|
||||
rtc_ds.alarm(DS3232RTC::ALARM_2);
|
||||
} else {
|
||||
int nextAlarmMinute = 0;
|
||||
rtc_pcf.clearAlarm(); // resets the alarm flag in the RTC
|
||||
nextAlarmMinute = rtc_pcf.getMinute();
|
||||
nextAlarmMinute =
|
||||
(nextAlarmMinute == 59)
|
||||
? 0
|
||||
: (nextAlarmMinute + 1); // set alarm to trigger 1 minute from now
|
||||
rtc_pcf.setAlarm(nextAlarmMinute, 99, 99, 99);
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyRTC::read(tmElements_t &tm) {
|
||||
if (rtcType == DS3231) {
|
||||
rtc_ds.read(tm);
|
||||
} else {
|
||||
rtc_pcf.getDate();
|
||||
tm.Year = y2kYearToTm(rtc_pcf.getYear());
|
||||
tm.Month = rtc_pcf.getMonth();
|
||||
tm.Day = rtc_pcf.getDay();
|
||||
tm.Wday =
|
||||
rtc_pcf.getWeekday() + 1; // TimeLib & DS3231 has Wday range of 1-7, but
|
||||
// PCF8563 stores day of week in 0-6 range
|
||||
tm.Hour = rtc_pcf.getHour();
|
||||
tm.Minute = rtc_pcf.getMinute();
|
||||
tm.Second = rtc_pcf.getSecond();
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyRTC::set(tmElements_t tm) {
|
||||
if (rtcType == DS3231) {
|
||||
time_t t = makeTime(tm);
|
||||
rtc_ds.set(t);
|
||||
} else {
|
||||
time_t t = makeTime(tm); // make and break to calculate tm.Wday
|
||||
breakTime(t, tm);
|
||||
// day, weekday, month, century(1=1900, 0=2000), year(0-99)
|
||||
rtc_pcf.setDate(
|
||||
tm.Day, tm.Wday - 1, tm.Month, 0,
|
||||
tmYearToY2k(tm.Year)); // TimeLib & DS3231 has Wday range of 1-7, but
|
||||
// PCF8563 stores day of week in 0-6 range
|
||||
// hr, min, sec
|
||||
rtc_pcf.setTime(tm.Hour, tm.Minute, tm.Second);
|
||||
clearAlarm();
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t WatchyRTC::temperature() {
|
||||
if (rtcType == DS3231) {
|
||||
return rtc_ds.temperature();
|
||||
} else {
|
||||
return 255; // error
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyRTC::_DSConfig(
|
||||
String datetime) { // String datetime is YYYY:MM:DD:HH:MM:SS
|
||||
if (datetime != "") {
|
||||
tmElements_t tm;
|
||||
tm.Year = CalendarYrToTm(_getValue(datetime, ':', 0).toInt()); // YYYY -
|
||||
// 1970
|
||||
tm.Month = _getValue(datetime, ':', 1).toInt();
|
||||
tm.Day = _getValue(datetime, ':', 2).toInt();
|
||||
tm.Hour = _getValue(datetime, ':', 3).toInt();
|
||||
tm.Minute = _getValue(datetime, ':', 4).toInt();
|
||||
tm.Second = _getValue(datetime, ':', 5).toInt();
|
||||
time_t t = makeTime(tm);
|
||||
rtc_ds.set(t);
|
||||
}
|
||||
// https://github.com/JChristensen/DS3232RTC
|
||||
rtc_ds.squareWave(DS3232RTC::SQWAVE_NONE); // disable square wave output
|
||||
rtc_ds.setAlarm(DS3232RTC::ALM2_EVERY_MINUTE, 0, 0, 0,
|
||||
0); // alarm wakes up Watchy every minute
|
||||
rtc_ds.alarmInterrupt(DS3232RTC::ALARM_2, true); // enable alarm interrupt
|
||||
}
|
||||
|
||||
void WatchyRTC::_PCFConfig(
|
||||
String datetime) { // String datetime is YYYY:MM:DD:HH:MM:SS
|
||||
if (datetime != "") {
|
||||
tmElements_t tm;
|
||||
tm.Year = CalendarYrToTm(_getValue(datetime, ':', 0).toInt()); // YYYY -
|
||||
// 1970
|
||||
tm.Month = _getValue(datetime, ':', 1).toInt();
|
||||
tm.Day = _getValue(datetime, ':', 2).toInt();
|
||||
tm.Hour = _getValue(datetime, ':', 3).toInt();
|
||||
tm.Minute = _getValue(datetime, ':', 4).toInt();
|
||||
tm.Second = _getValue(datetime, ':', 5).toInt();
|
||||
time_t t = makeTime(tm); // make and break to calculate tm.Wday
|
||||
breakTime(t, tm);
|
||||
// day, weekday, month, century(1=1900, 0=2000), year(0-99)
|
||||
rtc_pcf.setDate(
|
||||
tm.Day, tm.Wday - 1, tm.Month, 0,
|
||||
tmYearToY2k(tm.Year)); // TimeLib & DS3231 has Wday range of 1-7, but
|
||||
// PCF8563 stores day of week in 0-6 range
|
||||
// hr, min, sec
|
||||
rtc_pcf.setTime(tm.Hour, tm.Minute, tm.Second);
|
||||
}
|
||||
// on POR event, PCF8563 sets month to 0, which will give an error since
|
||||
// months are 1-12
|
||||
clearAlarm();
|
||||
}
|
||||
|
||||
String WatchyRTC::_getValue(String data, char separator, int index) {
|
||||
int found = 0;
|
||||
int strIndex[] = {0, -1};
|
||||
int maxIndex = data.length() - 1;
|
||||
|
||||
for (int i = 0; i <= maxIndex && found <= index; i++) {
|
||||
if (data.charAt(i) == separator || i == maxIndex) {
|
||||
found++;
|
||||
strIndex[0] = strIndex[1] + 1;
|
||||
strIndex[1] = (i == maxIndex) ? i + 1 : i;
|
||||
}
|
||||
}
|
||||
|
||||
return found > index ? data.substring(strIndex[0], strIndex[1]) : "";
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
#ifndef WATCHY_RTC_H
|
||||
#define WATCHY_RTC_H
|
||||
|
||||
#include "config.h"
|
||||
#include "time.h"
|
||||
#include <DS3232RTC.h>
|
||||
#include <Rtc_Pcf8563.h>
|
||||
|
||||
#define DS3231 1
|
||||
#define PCF8563 2
|
||||
#define RTC_DS_ADDR 0x68
|
||||
#define RTC_PCF_ADDR 0x51
|
||||
#define YEAR_OFFSET_DS 1970
|
||||
#define YEAR_OFFSET_PCF 2000
|
||||
|
||||
class WatchyRTC {
|
||||
public:
|
||||
DS3232RTC rtc_ds;
|
||||
Rtc_Pcf8563 rtc_pcf;
|
||||
uint8_t rtcType;
|
||||
|
||||
public:
|
||||
WatchyRTC();
|
||||
void init();
|
||||
void config(String datetime); // String datetime format is YYYY:MM:DD:HH:MM:SS
|
||||
void clearAlarm();
|
||||
void read(tmElements_t &tm);
|
||||
void set(tmElements_t tm);
|
||||
uint8_t temperature();
|
||||
|
||||
private:
|
||||
void _DSConfig(String datetime);
|
||||
void _PCFConfig(String datetime);
|
||||
int _getDayOfWeek(int d, int m, int y);
|
||||
String _getValue(String data, char separator, int index);
|
||||
};
|
||||
|
||||
#endif
|
544
src/bma.cpp
|
@ -2,328 +2,282 @@
|
|||
|
||||
#define DEBUGPORT Serial
|
||||
#ifdef DEBUGPORT
|
||||
#define DEBUG(...) DEBUGPORT.printf(__VA_ARGS__)
|
||||
#define DEBUG(...) DEBUGPORT.printf(__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG(...)
|
||||
#endif
|
||||
|
||||
BMA423::BMA423()
|
||||
{
|
||||
__readRegisterFptr = nullptr;
|
||||
__writeRegisterFptr = nullptr;
|
||||
__delayCallBlackFptr = nullptr;
|
||||
__init = false;
|
||||
BMA423::BMA423() {
|
||||
__readRegisterFptr = nullptr;
|
||||
__writeRegisterFptr = nullptr;
|
||||
__delayCallBlackFptr = nullptr;
|
||||
__init = false;
|
||||
}
|
||||
|
||||
BMA423::~BMA423()
|
||||
{
|
||||
|
||||
}
|
||||
BMA423::~BMA423() {}
|
||||
|
||||
bool BMA423::begin(bma4_com_fptr_t readCallBlack,
|
||||
bma4_com_fptr_t writeCallBlack,
|
||||
bma4_delay_fptr_t delayCallBlack,
|
||||
uint8_t address)
|
||||
{
|
||||
bma4_delay_fptr_t delayCallBlack, uint8_t address) {
|
||||
|
||||
if (__init ||
|
||||
readCallBlack == nullptr ||
|
||||
writeCallBlack == nullptr ||
|
||||
delayCallBlack == nullptr) {
|
||||
return true;
|
||||
}
|
||||
|
||||
__readRegisterFptr = readCallBlack;
|
||||
__writeRegisterFptr = writeCallBlack;
|
||||
__delayCallBlackFptr = delayCallBlack;
|
||||
|
||||
__devFptr.dev_addr = address;
|
||||
__devFptr.interface = BMA4_I2C_INTERFACE;
|
||||
__devFptr.bus_read = readCallBlack;
|
||||
__devFptr.bus_write = writeCallBlack;
|
||||
__devFptr.delay = delayCallBlack;
|
||||
__devFptr.read_write_len = 8;
|
||||
__devFptr.resolution = 12;
|
||||
__devFptr.feature_len = BMA423_FEATURE_SIZE;
|
||||
|
||||
softReset();
|
||||
|
||||
__delayCallBlackFptr(20);
|
||||
|
||||
if (bma423_init(&__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 FAIL\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bma423_write_config_file(&__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 Write Config FAIL\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
__init = true;
|
||||
|
||||
struct bma4_int_pin_config config ;
|
||||
config.edge_ctrl = BMA4_LEVEL_TRIGGER;
|
||||
config.lvl = BMA4_ACTIVE_HIGH;
|
||||
config.od = BMA4_PUSH_PULL;
|
||||
config.output_en = BMA4_OUTPUT_ENABLE;
|
||||
config.input_en = BMA4_INPUT_DISABLE;
|
||||
|
||||
|
||||
if (bma4_set_int_pin_config(&config, BMA4_INTR1_MAP, &__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 SET INT FAIL\n");
|
||||
return false;
|
||||
}
|
||||
if (__init || readCallBlack == nullptr || writeCallBlack == nullptr ||
|
||||
delayCallBlack == nullptr) {
|
||||
return true;
|
||||
}
|
||||
|
||||
__readRegisterFptr = readCallBlack;
|
||||
__writeRegisterFptr = writeCallBlack;
|
||||
__delayCallBlackFptr = delayCallBlack;
|
||||
|
||||
__devFptr.dev_addr = address;
|
||||
__devFptr.interface = BMA4_I2C_INTERFACE;
|
||||
__devFptr.bus_read = readCallBlack;
|
||||
__devFptr.bus_write = writeCallBlack;
|
||||
__devFptr.delay = delayCallBlack;
|
||||
__devFptr.read_write_len = 8;
|
||||
__devFptr.resolution = 12;
|
||||
__devFptr.feature_len = BMA423_FEATURE_SIZE;
|
||||
|
||||
softReset();
|
||||
|
||||
__delayCallBlackFptr(20);
|
||||
|
||||
if (bma423_init(&__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 FAIL\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bma423_write_config_file(&__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 Write Config FAIL\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
__init = true;
|
||||
|
||||
struct bma4_int_pin_config config;
|
||||
config.edge_ctrl = BMA4_LEVEL_TRIGGER;
|
||||
config.lvl = BMA4_ACTIVE_HIGH;
|
||||
config.od = BMA4_PUSH_PULL;
|
||||
config.output_en = BMA4_OUTPUT_ENABLE;
|
||||
config.input_en = BMA4_INPUT_DISABLE;
|
||||
|
||||
if (bma4_set_int_pin_config(&config, BMA4_INTR1_MAP, &__devFptr) != BMA4_OK) {
|
||||
DEBUG("BMA423 SET INT FAIL\n");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void BMA423::softReset()
|
||||
{
|
||||
uint8_t reg = BMA4_RESET_ADDR;
|
||||
__writeRegisterFptr(BMA4_I2C_ADDR_PRIMARY, BMA4_RESET_SET_MASK, ®, 1);
|
||||
void BMA423::softReset() {
|
||||
uint8_t reg = BMA4_RESET_ADDR;
|
||||
__writeRegisterFptr(BMA4_I2C_ADDR_PRIMARY, BMA4_RESET_SET_MASK, ®, 1);
|
||||
}
|
||||
|
||||
void BMA423::shutDown()
|
||||
{
|
||||
bma4_set_advance_power_save(BMA4_DISABLE, &__devFptr);
|
||||
void BMA423::shutDown() {
|
||||
bma4_set_advance_power_save(BMA4_DISABLE, &__devFptr);
|
||||
}
|
||||
|
||||
void BMA423::wakeUp()
|
||||
{
|
||||
bma4_set_advance_power_save(BMA4_ENABLE, &__devFptr);
|
||||
void BMA423::wakeUp() { bma4_set_advance_power_save(BMA4_ENABLE, &__devFptr); }
|
||||
|
||||
uint16_t BMA423::getErrorCode() {
|
||||
struct bma4_err_reg err;
|
||||
uint16_t rslt = bma4_get_error_status(&err, &__devFptr);
|
||||
return rslt;
|
||||
}
|
||||
|
||||
uint16_t BMA423::getErrorCode()
|
||||
{
|
||||
struct bma4_err_reg err;
|
||||
uint16_t rslt = bma4_get_error_status(&err, &__devFptr);
|
||||
return rslt;
|
||||
uint16_t BMA423::getStatus() {
|
||||
uint8_t status;
|
||||
bma4_get_status(&status, &__devFptr);
|
||||
return status;
|
||||
}
|
||||
|
||||
uint16_t BMA423::getStatus()
|
||||
{
|
||||
uint8_t status;
|
||||
bma4_get_status(&status, &__devFptr);
|
||||
return status;
|
||||
uint32_t BMA423::getSensorTime() {
|
||||
uint32_t ms;
|
||||
bma4_get_sensor_time(&ms, &__devFptr);
|
||||
return ms;
|
||||
}
|
||||
|
||||
uint32_t BMA423::getSensorTime()
|
||||
{
|
||||
uint32_t ms;
|
||||
bma4_get_sensor_time(&ms, &__devFptr);
|
||||
return ms;
|
||||
bool BMA423::selfTest() {
|
||||
return (BMA4_OK ==
|
||||
bma4_selftest_config(BMA4_ACCEL_SELFTEST_ENABLE_MSK, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::selfTest()
|
||||
{
|
||||
return (BMA4_OK == bma4_selftest_config(BMA4_ACCEL_SELFTEST_ENABLE_MSK, &__devFptr));
|
||||
}
|
||||
|
||||
uint8_t BMA423::getDirection()
|
||||
{
|
||||
Accel acc;
|
||||
if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) {
|
||||
return 0;
|
||||
}
|
||||
uint16_t absX = abs(acc.x);
|
||||
uint16_t absY = abs(acc.y);
|
||||
uint16_t absZ = abs(acc.z);
|
||||
|
||||
if ((absZ > absX) && (absZ > absY)) {
|
||||
if (acc.z > 0) {
|
||||
return DIRECTION_DISP_DOWN;
|
||||
} else {
|
||||
return DIRECTION_DISP_UP;
|
||||
}
|
||||
} else if ((absY > absX) && (absY > absZ)) {
|
||||
if (acc.y > 0) {
|
||||
return DIRECTION_RIGHT_EDGE;
|
||||
} else {
|
||||
return DIRECTION_LEFT_EDGE;
|
||||
}
|
||||
} else {
|
||||
if (acc.x < 0) {
|
||||
return DIRECTION_BOTTOM_EDGE;
|
||||
} else {
|
||||
return DIRECTION_TOP_EDGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float BMA423::readTemperature()
|
||||
{
|
||||
int32_t data = 0;
|
||||
bma4_get_temperature(&data, BMA4_DEG, &__devFptr);
|
||||
float res = (float)data / (float)BMA4_SCALE_TEMP;
|
||||
/* 0x80 - temp read from the register and 23 is the ambient temp added.
|
||||
* If the temp read from register is 0x80, it means no valid
|
||||
* information is available */
|
||||
if (((data - 23) / BMA4_SCALE_TEMP) == 0x80) {
|
||||
res = 0;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
float BMA423::readTemperatureF()
|
||||
{
|
||||
float temp = readTemperature();
|
||||
if (temp != 0) {
|
||||
temp = temp * 1.8 + 32.0;
|
||||
}
|
||||
return (temp);
|
||||
}
|
||||
|
||||
bool BMA423::getAccel(Accel &acc)
|
||||
{
|
||||
memset(&acc, 0, sizeof(acc));
|
||||
if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BMA423::getAccelEnable()
|
||||
{
|
||||
uint8_t en;
|
||||
bma4_get_accel_enable(&en, &__devFptr);
|
||||
return (en & BMA4_ACCEL_ENABLE_POS) == BMA4_ACCEL_ENABLE_POS;
|
||||
}
|
||||
|
||||
bool BMA423::disableAccel()
|
||||
{
|
||||
return enableAccel(false);
|
||||
}
|
||||
|
||||
bool BMA423::enableAccel(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma4_set_accel_enable(en ? BMA4_ENABLE : BMA4_DISABLE, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::setAccelConfig(Acfg &cfg)
|
||||
{
|
||||
return (BMA4_OK == bma4_set_accel_config(&cfg, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::getAccelConfig(Acfg &cfg)
|
||||
{
|
||||
return (BMA4_OK == bma4_get_accel_config(&cfg, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::setRemapAxes(struct bma423_axes_remap *remap_data)
|
||||
{
|
||||
return (BMA4_OK == bma423_set_remap_axes(remap_data, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::resetStepCounter()
|
||||
{
|
||||
return BMA4_OK == bma423_reset_step_counter(&__devFptr) ;
|
||||
}
|
||||
|
||||
uint32_t BMA423::getCounter()
|
||||
{
|
||||
uint32_t stepCount;
|
||||
if (bma423_step_counter_output(&stepCount, &__devFptr) == BMA4_OK) {
|
||||
return stepCount;
|
||||
}
|
||||
uint8_t BMA423::getDirection() {
|
||||
Accel acc;
|
||||
if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
uint16_t absX = abs(acc.x);
|
||||
uint16_t absY = abs(acc.y);
|
||||
uint16_t absZ = abs(acc.z);
|
||||
|
||||
bool BMA423::setINTPinConfig(struct bma4_int_pin_config config, uint8_t pinMap)
|
||||
{
|
||||
return BMA4_OK == bma4_set_int_pin_config(&config, pinMap, &__devFptr);
|
||||
}
|
||||
|
||||
bool BMA423::getINT()
|
||||
{
|
||||
return bma423_read_int_status(&__IRQ_MASK, &__devFptr) == BMA4_OK;
|
||||
}
|
||||
|
||||
uint8_t BMA423::getIRQMASK()
|
||||
{
|
||||
return __IRQ_MASK;
|
||||
}
|
||||
|
||||
bool BMA423::disableIRQ(uint16_t int_map)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_DISABLE, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableIRQ(uint16_t int_map)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_ENABLE, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableFeature(uint8_t feature, uint8_t enable)
|
||||
{
|
||||
if ((feature & BMA423_STEP_CNTR) == BMA423_STEP_CNTR) {
|
||||
bma423_step_detector_enable(enable ? BMA4_ENABLE : BMA4_DISABLE, &__devFptr);
|
||||
if ((absZ > absX) && (absZ > absY)) {
|
||||
if (acc.z > 0) {
|
||||
return DIRECTION_DISP_DOWN;
|
||||
} else {
|
||||
return DIRECTION_DISP_UP;
|
||||
}
|
||||
return (BMA4_OK == bma423_feature_enable(feature, enable, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::isStepCounter()
|
||||
{
|
||||
return (bool)(BMA423_STEP_CNTR_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::isDoubleClick()
|
||||
{
|
||||
return (bool)(BMA423_WAKEUP_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::isTilt()
|
||||
{
|
||||
return (bool)(BMA423_TILT_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::isActivity()
|
||||
{
|
||||
return (bool)(BMA423_ACTIVITY_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::isAnyNoMotion()
|
||||
{
|
||||
return (bool)(BMA423_ANY_NO_MOTION_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::enableStepCountInterrupt(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT, en, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableTiltInterrupt(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_TILT_INT, en, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableWakeupInterrupt(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_WAKEUP_INT, en, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableAnyNoMotionInterrupt(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ANY_NO_MOTION_INT, en, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableActivityInterrupt(bool en)
|
||||
{
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ACTIVITY_INT, en, &__devFptr));
|
||||
}
|
||||
|
||||
const char *BMA423::getActivity()
|
||||
{
|
||||
uint8_t activity;
|
||||
bma423_activity_output(&activity, &__devFptr);
|
||||
if (activity & BMA423_USER_STATIONARY) {
|
||||
return "BMA423_USER_STATIONARY";
|
||||
} else if (activity & BMA423_USER_WALKING) {
|
||||
return "BMA423_USER_WALKING";
|
||||
} else if (activity & BMA423_USER_RUNNING) {
|
||||
return "BMA423_USER_RUNNING";
|
||||
} else if (activity & BMA423_STATE_INVALID) {
|
||||
return "BMA423_STATE_INVALID";
|
||||
} else if ((absY > absX) && (absY > absZ)) {
|
||||
if (acc.y > 0) {
|
||||
return DIRECTION_RIGHT_EDGE;
|
||||
} else {
|
||||
return DIRECTION_LEFT_EDGE;
|
||||
}
|
||||
return "None";
|
||||
} else {
|
||||
if (acc.x < 0) {
|
||||
return DIRECTION_BOTTOM_EDGE;
|
||||
} else {
|
||||
return DIRECTION_TOP_EDGE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
float BMA423::readTemperature() {
|
||||
int32_t data = 0;
|
||||
bma4_get_temperature(&data, BMA4_DEG, &__devFptr);
|
||||
float res = (float)data / (float)BMA4_SCALE_TEMP;
|
||||
/* 0x80 - temp read from the register and 23 is the ambient temp added.
|
||||
* If the temp read from register is 0x80, it means no valid
|
||||
* information is available */
|
||||
if (((data - 23) / BMA4_SCALE_TEMP) == 0x80) {
|
||||
res = 0;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
float BMA423::readTemperatureF() {
|
||||
float temp = readTemperature();
|
||||
if (temp != 0) {
|
||||
temp = temp * 1.8 + 32.0;
|
||||
}
|
||||
return (temp);
|
||||
}
|
||||
|
||||
bool BMA423::getAccel(Accel &acc) {
|
||||
memset(&acc, 0, sizeof(acc));
|
||||
if (bma4_read_accel_xyz(&acc, &__devFptr) != BMA4_OK) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool BMA423::getAccelEnable() {
|
||||
uint8_t en;
|
||||
bma4_get_accel_enable(&en, &__devFptr);
|
||||
return (en & BMA4_ACCEL_ENABLE_POS) == BMA4_ACCEL_ENABLE_POS;
|
||||
}
|
||||
|
||||
bool BMA423::disableAccel() { return enableAccel(false); }
|
||||
|
||||
bool BMA423::enableAccel(bool en) {
|
||||
return (BMA4_OK ==
|
||||
bma4_set_accel_enable(en ? BMA4_ENABLE : BMA4_DISABLE, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::setAccelConfig(Acfg &cfg) {
|
||||
return (BMA4_OK == bma4_set_accel_config(&cfg, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::getAccelConfig(Acfg &cfg) {
|
||||
return (BMA4_OK == bma4_get_accel_config(&cfg, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::setRemapAxes(struct bma423_axes_remap *remap_data) {
|
||||
return (BMA4_OK == bma423_set_remap_axes(remap_data, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::resetStepCounter() {
|
||||
return BMA4_OK == bma423_reset_step_counter(&__devFptr);
|
||||
}
|
||||
|
||||
uint32_t BMA423::getCounter() {
|
||||
uint32_t stepCount;
|
||||
if (bma423_step_counter_output(&stepCount, &__devFptr) == BMA4_OK) {
|
||||
return stepCount;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool BMA423::setINTPinConfig(struct bma4_int_pin_config config,
|
||||
uint8_t pinMap) {
|
||||
return BMA4_OK == bma4_set_int_pin_config(&config, pinMap, &__devFptr);
|
||||
}
|
||||
|
||||
bool BMA423::getINT() {
|
||||
return bma423_read_int_status(&__IRQ_MASK, &__devFptr) == BMA4_OK;
|
||||
}
|
||||
|
||||
uint8_t BMA423::getIRQMASK() { return __IRQ_MASK; }
|
||||
|
||||
bool BMA423::disableIRQ(uint16_t int_map) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_DISABLE,
|
||||
&__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableIRQ(uint16_t int_map) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, int_map, BMA4_ENABLE,
|
||||
&__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableFeature(uint8_t feature, uint8_t enable) {
|
||||
if ((feature & BMA423_STEP_CNTR) == BMA423_STEP_CNTR) {
|
||||
bma423_step_detector_enable(enable ? BMA4_ENABLE : BMA4_DISABLE,
|
||||
&__devFptr);
|
||||
}
|
||||
return (BMA4_OK == bma423_feature_enable(feature, enable, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::isStepCounter() {
|
||||
return (bool)(BMA423_STEP_CNTR_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::isDoubleClick() { return (bool)(BMA423_WAKEUP_INT & __IRQ_MASK); }
|
||||
|
||||
bool BMA423::isTilt() { return (bool)(BMA423_TILT_INT & __IRQ_MASK); }
|
||||
|
||||
bool BMA423::isActivity() { return (bool)(BMA423_ACTIVITY_INT & __IRQ_MASK); }
|
||||
|
||||
bool BMA423::isAnyNoMotion() {
|
||||
return (bool)(BMA423_ANY_NO_MOTION_INT & __IRQ_MASK);
|
||||
}
|
||||
|
||||
bool BMA423::enableStepCountInterrupt(bool en) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_STEP_CNTR_INT,
|
||||
en, &__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableTiltInterrupt(bool en) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_TILT_INT, en,
|
||||
&__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableWakeupInterrupt(bool en) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_WAKEUP_INT, en,
|
||||
&__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableAnyNoMotionInterrupt(bool en) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP,
|
||||
BMA423_ANY_NO_MOTION_INT, en,
|
||||
&__devFptr));
|
||||
}
|
||||
|
||||
bool BMA423::enableActivityInterrupt(bool en) {
|
||||
return (BMA4_OK == bma423_map_interrupt(BMA4_INTR1_MAP, BMA423_ACTIVITY_INT,
|
||||
en, &__devFptr));
|
||||
}
|
||||
|
||||
const char *BMA423::getActivity() {
|
||||
uint8_t activity;
|
||||
bma423_activity_output(&activity, &__devFptr);
|
||||
if (activity & BMA423_USER_STATIONARY) {
|
||||
return "BMA423_USER_STATIONARY";
|
||||
} else if (activity & BMA423_USER_WALKING) {
|
||||
return "BMA423_USER_WALKING";
|
||||
} else if (activity & BMA423_USER_RUNNING) {
|
||||
return "BMA423_USER_RUNNING";
|
||||
} else if (activity & BMA423_STATE_INVALID) {
|
||||
return "BMA423_STATE_INVALID";
|
||||
}
|
||||
return "None";
|
||||
}
|
115
src/bma.h
|
@ -1,6 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#ifdef ARDUINO
|
||||
#ifdef ARDUINO
|
||||
#include <Arduino.h>
|
||||
#else
|
||||
#include <stdlib.h>
|
||||
|
@ -9,80 +9,79 @@
|
|||
#include "bma423.h"
|
||||
|
||||
enum {
|
||||
DIRECTION_TOP_EDGE = 0,
|
||||
DIRECTION_BOTTOM_EDGE = 1,
|
||||
DIRECTION_LEFT_EDGE = 2,
|
||||
DIRECTION_RIGHT_EDGE = 3,
|
||||
DIRECTION_DISP_UP = 4,
|
||||
DIRECTION_DISP_DOWN = 5
|
||||
} ;
|
||||
DIRECTION_TOP_EDGE = 0,
|
||||
DIRECTION_BOTTOM_EDGE = 1,
|
||||
DIRECTION_LEFT_EDGE = 2,
|
||||
DIRECTION_RIGHT_EDGE = 3,
|
||||
DIRECTION_DISP_UP = 4,
|
||||
DIRECTION_DISP_DOWN = 5
|
||||
};
|
||||
|
||||
typedef struct bma4_accel Accel;
|
||||
typedef struct bma4_accel_config Acfg;
|
||||
|
||||
class BMA423
|
||||
{
|
||||
class BMA423 {
|
||||
|
||||
public:
|
||||
BMA423();
|
||||
~BMA423();
|
||||
BMA423();
|
||||
~BMA423();
|
||||
|
||||
bool begin(bma4_com_fptr_t readCallBlack, bma4_com_fptr_t writeCallBlack, bma4_delay_fptr_t delayCallBlack,
|
||||
uint8_t address = BMA4_I2C_ADDR_PRIMARY);
|
||||
bool begin(bma4_com_fptr_t readCallBlack, bma4_com_fptr_t writeCallBlack,
|
||||
bma4_delay_fptr_t delayCallBlack,
|
||||
uint8_t address = BMA4_I2C_ADDR_PRIMARY);
|
||||
|
||||
void softReset();
|
||||
void shutDown();
|
||||
void wakeUp();
|
||||
bool selfTest();
|
||||
void softReset();
|
||||
void shutDown();
|
||||
void wakeUp();
|
||||
bool selfTest();
|
||||
|
||||
uint8_t getDirection();
|
||||
uint8_t getDirection();
|
||||
|
||||
bool setAccelConfig(Acfg &cfg);
|
||||
bool getAccelConfig(Acfg &cfg);
|
||||
bool getAccel(Accel &acc);
|
||||
bool getAccelEnable();
|
||||
bool disableAccel();
|
||||
bool enableAccel(bool en = true);
|
||||
bool setAccelConfig(Acfg &cfg);
|
||||
bool getAccelConfig(Acfg &cfg);
|
||||
bool getAccel(Accel &acc);
|
||||
bool getAccelEnable();
|
||||
bool disableAccel();
|
||||
bool enableAccel(bool en = true);
|
||||
|
||||
bool setINTPinConfig(struct bma4_int_pin_config config, uint8_t pinMap);
|
||||
bool getINT();
|
||||
uint8_t getIRQMASK();
|
||||
bool disableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT);
|
||||
bool enableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT);
|
||||
bool isStepCounter();
|
||||
bool isDoubleClick();
|
||||
bool isTilt();
|
||||
bool isActivity();
|
||||
bool isAnyNoMotion();
|
||||
bool setINTPinConfig(struct bma4_int_pin_config config, uint8_t pinMap);
|
||||
bool getINT();
|
||||
uint8_t getIRQMASK();
|
||||
bool disableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT);
|
||||
bool enableIRQ(uint16_t int_map = BMA423_STEP_CNTR_INT);
|
||||
bool isStepCounter();
|
||||
bool isDoubleClick();
|
||||
bool isTilt();
|
||||
bool isActivity();
|
||||
bool isAnyNoMotion();
|
||||
|
||||
bool resetStepCounter();
|
||||
uint32_t getCounter();
|
||||
bool resetStepCounter();
|
||||
uint32_t getCounter();
|
||||
|
||||
float readTemperature();
|
||||
float readTemperatureF();
|
||||
float readTemperature();
|
||||
float readTemperatureF();
|
||||
|
||||
uint16_t getErrorCode();
|
||||
uint16_t getStatus();
|
||||
uint32_t getSensorTime();
|
||||
uint16_t getErrorCode();
|
||||
uint16_t getStatus();
|
||||
uint32_t getSensorTime();
|
||||
|
||||
const char *getActivity();
|
||||
bool setRemapAxes(struct bma423_axes_remap *remap_data);
|
||||
|
||||
const char *getActivity();
|
||||
bool setRemapAxes(struct bma423_axes_remap *remap_data);
|
||||
|
||||
bool enableFeature(uint8_t feature, uint8_t enable );
|
||||
bool enableStepCountInterrupt(bool en = true);
|
||||
bool enableTiltInterrupt(bool en = true);
|
||||
bool enableWakeupInterrupt(bool en = true);
|
||||
bool enableAnyNoMotionInterrupt(bool en = true);
|
||||
bool enableActivityInterrupt(bool en = true);
|
||||
bool enableFeature(uint8_t feature, uint8_t enable);
|
||||
bool enableStepCountInterrupt(bool en = true);
|
||||
bool enableTiltInterrupt(bool en = true);
|
||||
bool enableWakeupInterrupt(bool en = true);
|
||||
bool enableAnyNoMotionInterrupt(bool en = true);
|
||||
bool enableActivityInterrupt(bool en = true);
|
||||
|
||||
private:
|
||||
bma4_com_fptr_t __readRegisterFptr;
|
||||
bma4_com_fptr_t __writeRegisterFptr;
|
||||
bma4_delay_fptr_t __delayCallBlackFptr;
|
||||
bma4_com_fptr_t __readRegisterFptr;
|
||||
bma4_com_fptr_t __writeRegisterFptr;
|
||||
bma4_delay_fptr_t __delayCallBlackFptr;
|
||||
|
||||
uint8_t __address;
|
||||
uint16_t __IRQ_MASK;
|
||||
bool __init;
|
||||
struct bma4_dev __devFptr;
|
||||
uint8_t __address;
|
||||
uint16_t __IRQ_MASK;
|
||||
bool __init;
|
||||
struct bma4_dev __devFptr;
|
||||
};
|
||||
|
|
4970
src/bma4.c
263
src/bma4.h
|
@ -1,91 +1,91 @@
|
|||
/*
|
||||
*
|
||||
****************************************************************************
|
||||
* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH
|
||||
*
|
||||
* File : bma4.h
|
||||
*
|
||||
* Date: 12 Oct 2017
|
||||
*
|
||||
* Revision: 2.1.9 $
|
||||
*
|
||||
* Usage: Sensor Driver for BMA4 family of sensors
|
||||
*
|
||||
****************************************************************************
|
||||
*
|
||||
* Disclaimer
|
||||
*
|
||||
* Common:
|
||||
* Bosch Sensortec products are developed for the consumer goods industry.
|
||||
* They may only be used within the parameters of the respective valid
|
||||
* product data sheet. Bosch Sensortec products are provided with the
|
||||
* express understanding that there is no warranty of fitness for a
|
||||
* particular purpose.They are not fit for use in life-sustaining,
|
||||
* safety or security sensitive systems or any system or device
|
||||
* that may lead to bodily harm or property damage if the system
|
||||
* or device malfunctions. In addition,Bosch Sensortec products are
|
||||
* not fit for use in products which interact with motor vehicle systems.
|
||||
* The resale and or use of products are at the purchasers own risk and
|
||||
* his own responsibility. The examination of fitness for the intended use
|
||||
* is the sole responsibility of the Purchaser.
|
||||
*
|
||||
* The purchaser shall indemnify Bosch Sensortec from all third party
|
||||
* claims, including any claims for incidental, or consequential damages,
|
||||
* arising from any product use not covered by the parameters of
|
||||
* the respective valid product data sheet or not approved by
|
||||
* Bosch Sensortec and reimburse Bosch Sensortec for all costs in
|
||||
* connection with such claims.
|
||||
*
|
||||
* The purchaser must monitor the market for the purchased products,
|
||||
* particularly with regard to product safety and inform Bosch Sensortec
|
||||
* without delay of all security relevant incidents.
|
||||
*
|
||||
* Engineering Samples are marked with an asterisk (*) or (e).
|
||||
* Samples may vary from the valid technical specifications of the product
|
||||
* series. They are therefore not intended or fit for resale to third
|
||||
* parties or for use in end products. Their sole purpose is internal
|
||||
* client testing. The testing of an engineering sample may in no way
|
||||
* replace the testing of a product series. Bosch Sensortec assumes
|
||||
* no liability for the use of engineering samples.
|
||||
* By accepting the engineering samples, the Purchaser agrees to indemnify
|
||||
* Bosch Sensortec from all claims arising from the use of engineering
|
||||
* samples.
|
||||
*
|
||||
* Special:
|
||||
* This software module (hereinafter called "Software") and any information
|
||||
* on application-sheets (hereinafter called "Information") is provided
|
||||
* free of charge for the sole purpose to support your application work.
|
||||
* The Software and Information is subject to the following
|
||||
* terms and conditions:
|
||||
*
|
||||
* The Software is specifically designed for the exclusive use for
|
||||
* Bosch Sensortec products by personnel who have special experience
|
||||
* and training. Do not use this Software if you do not have the
|
||||
* proper experience or training.
|
||||
*
|
||||
* This Software package is provided `` as is `` and without any expressed
|
||||
* or implied warranties,including without limitation, the implied warranties
|
||||
* of merchantability and fitness for a particular purpose.
|
||||
*
|
||||
* Bosch Sensortec and their representatives and agents deny any liability
|
||||
* for the functional impairment
|
||||
* of this Software in terms of fitness, performance and safety.
|
||||
* Bosch Sensortec and their representatives and agents shall not be liable
|
||||
* for any direct or indirect damages or injury, except as
|
||||
* otherwise stipulated in mandatory applicable law.
|
||||
*
|
||||
* The Information provided is believed to be accurate and reliable.
|
||||
* Bosch Sensortec assumes no responsibility for the consequences of use
|
||||
* of such Information nor for any infringement of patents or
|
||||
* other rights of third parties which may result from its use.
|
||||
* No license is granted by implication or otherwise under any patent or
|
||||
* patent rights of Bosch. Specifications mentioned in the Information are
|
||||
* subject to change without notice.
|
||||
**************************************************************************/
|
||||
*
|
||||
****************************************************************************
|
||||
* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH
|
||||
*
|
||||
* File : bma4.h
|
||||
*
|
||||
* Date: 12 Oct 2017
|
||||
*
|
||||
* Revision: 2.1.9 $
|
||||
*
|
||||
* Usage: Sensor Driver for BMA4 family of sensors
|
||||
*
|
||||
****************************************************************************
|
||||
*
|
||||
* Disclaimer
|
||||
*
|
||||
* Common:
|
||||
* Bosch Sensortec products are developed for the consumer goods industry.
|
||||
* They may only be used within the parameters of the respective valid
|
||||
* product data sheet. Bosch Sensortec products are provided with the
|
||||
* express understanding that there is no warranty of fitness for a
|
||||
* particular purpose.They are not fit for use in life-sustaining,
|
||||
* safety or security sensitive systems or any system or device
|
||||
* that may lead to bodily harm or property damage if the system
|
||||
* or device malfunctions. In addition,Bosch Sensortec products are
|
||||
* not fit for use in products which interact with motor vehicle systems.
|
||||
* The resale and or use of products are at the purchasers own risk and
|
||||
* his own responsibility. The examination of fitness for the intended use
|
||||
* is the sole responsibility of the Purchaser.
|
||||
*
|
||||
* The purchaser shall indemnify Bosch Sensortec from all third party
|
||||
* claims, including any claims for incidental, or consequential damages,
|
||||
* arising from any product use not covered by the parameters of
|
||||
* the respective valid product data sheet or not approved by
|
||||
* Bosch Sensortec and reimburse Bosch Sensortec for all costs in
|
||||
* connection with such claims.
|
||||
*
|
||||
* The purchaser must monitor the market for the purchased products,
|
||||
* particularly with regard to product safety and inform Bosch Sensortec
|
||||
* without delay of all security relevant incidents.
|
||||
*
|
||||
* Engineering Samples are marked with an asterisk (*) or (e).
|
||||
* Samples may vary from the valid technical specifications of the product
|
||||
* series. They are therefore not intended or fit for resale to third
|
||||
* parties or for use in end products. Their sole purpose is internal
|
||||
* client testing. The testing of an engineering sample may in no way
|
||||
* replace the testing of a product series. Bosch Sensortec assumes
|
||||
* no liability for the use of engineering samples.
|
||||
* By accepting the engineering samples, the Purchaser agrees to indemnify
|
||||
* Bosch Sensortec from all claims arising from the use of engineering
|
||||
* samples.
|
||||
*
|
||||
* Special:
|
||||
* This software module (hereinafter called "Software") and any information
|
||||
* on application-sheets (hereinafter called "Information") is provided
|
||||
* free of charge for the sole purpose to support your application work.
|
||||
* The Software and Information is subject to the following
|
||||
* terms and conditions:
|
||||
*
|
||||
* The Software is specifically designed for the exclusive use for
|
||||
* Bosch Sensortec products by personnel who have special experience
|
||||
* and training. Do not use this Software if you do not have the
|
||||
* proper experience or training.
|
||||
*
|
||||
* This Software package is provided `` as is `` and without any expressed
|
||||
* or implied warranties,including without limitation, the implied warranties
|
||||
* of merchantability and fitness for a particular purpose.
|
||||
*
|
||||
* Bosch Sensortec and their representatives and agents deny any liability
|
||||
* for the functional impairment
|
||||
* of this Software in terms of fitness, performance and safety.
|
||||
* Bosch Sensortec and their representatives and agents shall not be liable
|
||||
* for any direct or indirect damages or injury, except as
|
||||
* otherwise stipulated in mandatory applicable law.
|
||||
*
|
||||
* The Information provided is believed to be accurate and reliable.
|
||||
* Bosch Sensortec assumes no responsibility for the consequences of use
|
||||
* of such Information nor for any infringement of patents or
|
||||
* other rights of third parties which may result from its use.
|
||||
* No license is granted by implication or otherwise under any patent or
|
||||
* patent rights of Bosch. Specifications mentioned in the Information are
|
||||
* subject to change without notice.
|
||||
**************************************************************************/
|
||||
/*! \file bma4.h
|
||||
\brief Sensor Driver for BMA4 family of sensors */
|
||||
#ifndef BMA4_H__
|
||||
#define BMA4_H__
|
||||
#define BMA4_H__
|
||||
|
||||
/*********************************************************************/
|
||||
/* header files */
|
||||
|
@ -157,7 +157,8 @@ uint16_t bma4_write_config_file(struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma4_write_regs(uint8_t addr, uint8_t *data, uint8_t len, struct bma4_dev *dev);
|
||||
uint16_t bma4_write_regs(uint8_t addr, uint8_t *data, uint8_t len,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API checks whether the read operation requested is for
|
||||
|
@ -172,7 +173,8 @@ uint16_t bma4_write_regs(uint8_t addr, uint8_t *data, uint8_t len, struct bma4_d
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma4_read_regs(uint8_t addr, uint8_t *data, uint8_t len, struct bma4_dev *dev);
|
||||
uint16_t bma4_read_regs(uint8_t addr, uint8_t *data, uint8_t len,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the error status from the sensor.
|
||||
|
@ -211,7 +213,8 @@ uint16_t bma4_read_regs(uint8_t addr, uint8_t *data, uint8_t len, struct bma4_de
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma4_get_error_status(struct bma4_err_reg *err_reg, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_error_status(struct bma4_err_reg *err_reg,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the sensor status from the dev sensor.
|
||||
|
@ -291,7 +294,8 @@ uint16_t bma4_get_sensor_time(uint32_t *sensor_time, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_temperature(int32_t *temp, uint8_t temp_unit, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_temperature(int32_t *temp, uint8_t temp_unit,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the Output data rate, Bandwidth, perf_mode
|
||||
|
@ -342,7 +346,8 @@ uint16_t bma4_get_temperature(int32_t *temp, uint8_t temp_unit, struct bma4_dev
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_accel_config(struct bma4_accel_config *accel, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_accel_config(struct bma4_accel_config *accel,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the output_data_rate, bandwidth, perf_mode
|
||||
|
@ -393,7 +398,8 @@ uint16_t bma4_get_accel_config(struct bma4_accel_config *accel, struct bma4_dev
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_set_accel_config(const struct bma4_accel_config *accel, struct bma4_dev *dev);
|
||||
uint16_t bma4_set_accel_config(const struct bma4_accel_config *accel,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the advance power save mode in the sensor.
|
||||
|
@ -411,7 +417,7 @@ uint16_t bma4_set_accel_config(const struct bma4_accel_config *accel, struct bma
|
|||
*
|
||||
*/
|
||||
uint16_t bma4_set_advance_power_save(uint8_t adv_pwr_save,
|
||||
struct bma4_dev *dev);
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the status of advance power save mode
|
||||
|
@ -429,7 +435,8 @@ uint16_t bma4_set_advance_power_save(uint8_t adv_pwr_save,
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_advance_power_save(uint8_t *adv_pwr_save, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_advance_power_save(uint8_t *adv_pwr_save,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the FIFO self wake up functionality in the sensor.
|
||||
|
@ -446,7 +453,8 @@ uint16_t bma4_get_advance_power_save(uint8_t *adv_pwr_save, struct bma4_dev *dev
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_set_fifo_self_wakeup(uint8_t fifo_self_wakeup, struct bma4_dev *dev);
|
||||
uint16_t bma4_set_fifo_self_wakeup(uint8_t fifo_self_wakeup,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API gets the status of FIFO self wake up functionality from
|
||||
|
@ -464,7 +472,8 @@ uint16_t bma4_set_fifo_self_wakeup(uint8_t fifo_self_wakeup, struct bma4_dev *de
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_fifo_self_wakeup(uint8_t *fifo_self_wake_up, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_fifo_self_wakeup(uint8_t *fifo_self_wake_up,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API enables or disables the Accel in the sensor.
|
||||
|
@ -562,7 +571,7 @@ uint16_t bma4_get_spi_interface(uint8_t *spi, struct bma4_dev *dev);
|
|||
*/
|
||||
uint16_t bma4_set_spi_interface(uint8_t spi, struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
/*!
|
||||
* @brief This API writes the available sensor specific commands
|
||||
* to the sensor.
|
||||
*
|
||||
|
@ -851,7 +860,8 @@ uint16_t bma4_set_fifo_wm(uint16_t fifo_wm, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_accel_fifo_filter_data(uint8_t *accel_fifo_filter, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_accel_fifo_filter_data(uint8_t *accel_fifo_filter,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the condition of Accel FIFO data either to
|
||||
|
@ -870,7 +880,8 @@ uint16_t bma4_get_accel_fifo_filter_data(uint8_t *accel_fifo_filter, struct bma4
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_set_accel_fifo_filter_data(uint8_t accel_fifo_filter, struct bma4_dev *dev);
|
||||
uint16_t bma4_set_accel_fifo_filter_data(uint8_t accel_fifo_filter,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the down sampling rates which is configured
|
||||
|
@ -939,9 +950,10 @@ uint16_t bma4_get_fifo_length(uint16_t *fifo_length, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_second_if_mag_compensate_xyz(struct bma4_mag_fifo_data mag_fifo_data,
|
||||
uint8_t mag_second_if,
|
||||
struct bma4_mag *compensated_mag_data);
|
||||
uint16_t
|
||||
bma4_second_if_mag_compensate_xyz(struct bma4_mag_fifo_data mag_fifo_data,
|
||||
uint8_t mag_second_if,
|
||||
struct bma4_mag *compensated_mag_data);
|
||||
|
||||
/*!
|
||||
* @brief This API reads Mag. x,y and z axis data from either BMM150 or
|
||||
|
@ -963,7 +975,8 @@ uint16_t bma4_second_if_mag_compensate_xyz(struct bma4_mag_fifo_data mag_fifo_da
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_read_mag_xyz(struct bma4_mag *mag, uint8_t sensor_select, struct bma4_dev *dev);
|
||||
uint16_t bma4_read_mag_xyz(struct bma4_mag *mag, uint8_t sensor_select,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the auxiliary I2C interface configuration which
|
||||
|
@ -1056,7 +1069,8 @@ uint16_t bma4_get_mag_data_rdy(uint8_t *data_rdy, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_asic_status(struct bma4_asic_status *asic_status, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_asic_status(struct bma4_asic_status *asic_status,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API enables the offset compensation for filtered and
|
||||
|
@ -1122,7 +1136,8 @@ uint16_t bma4_get_offset_comp(uint8_t *offset_en, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_extract_accel(struct bma4_accel *accel_data, uint16_t *accel_length, const struct bma4_dev *dev);
|
||||
uint16_t bma4_extract_accel(struct bma4_accel *accel_data,
|
||||
uint16_t *accel_length, const struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API parses and extracts the magnetometer frames from
|
||||
|
@ -1148,7 +1163,8 @@ uint16_t bma4_extract_accel(struct bma4_accel *accel_data, uint16_t *accel_lengt
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_extract_mag(struct bma4_mag *mag_data, uint16_t *mag_length, const struct bma4_dev *dev);
|
||||
uint16_t bma4_extract_mag(struct bma4_mag *mag_data, uint16_t *mag_length,
|
||||
const struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API performs Fast Offset Compensation for Accel.
|
||||
|
@ -1170,7 +1186,8 @@ uint16_t bma4_extract_mag(struct bma4_mag *mag_data, uint16_t *mag_length, const
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_perform_accel_foc(const int32_t accel_g_value[3], struct bma4_dev *dev);
|
||||
uint16_t bma4_perform_accel_foc(const int32_t accel_g_value[3],
|
||||
struct bma4_dev *dev);
|
||||
/*!
|
||||
* @brief This API checks whether the self test functionality of the sensor
|
||||
* is working or not
|
||||
|
@ -1230,7 +1247,8 @@ uint16_t bma4_selftest_config(uint8_t sign, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable, struct bma4_dev *dev);
|
||||
uint16_t bma4_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the interrupt mode in the sensor.
|
||||
|
@ -1305,7 +1323,8 @@ uint16_t bma4_get_interrupt_mode(uint8_t *mode, struct bma4_dev *dev);
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_set_aux_mag_config(const struct bma4_aux_mag_config *aux_mag, struct bma4_dev *dev);
|
||||
uint16_t bma4_set_aux_mag_config(const struct bma4_aux_mag_config *aux_mag,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the auxiliary Mag(BMM150 or AKM9916) output data
|
||||
|
@ -1343,7 +1362,8 @@ uint16_t bma4_set_aux_mag_config(const struct bma4_aux_mag_config *aux_mag, stru
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_aux_mag_config(struct bma4_aux_mag_config *aux_mag, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_aux_mag_config(struct bma4_aux_mag_config *aux_mag,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*! @brief This API sets the FIFO configuration in the sensor.
|
||||
*
|
||||
|
@ -1372,7 +1392,8 @@ uint16_t bma4_get_aux_mag_config(struct bma4_aux_mag_config *aux_mag, struct bma
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_set_fifo_config(uint8_t config, uint8_t enable, struct bma4_dev *dev);
|
||||
uint16_t bma4_set_fifo_config(uint8_t config, uint8_t enable,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*! @brief This API reads the FIFO configuration from the sensor.
|
||||
*
|
||||
|
@ -1441,8 +1462,9 @@ uint16_t bma4_get_fifo_config(uint8_t *fifo_config, struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma4_set_int_pin_config(const struct bma4_int_pin_config *int_pin_config, uint8_t int_line,
|
||||
struct bma4_dev *dev);
|
||||
uint16_t
|
||||
bma4_set_int_pin_config(const struct bma4_int_pin_config *int_pin_config,
|
||||
uint8_t int_line, struct bma4_dev *dev);
|
||||
|
||||
/*! @brief This API reads the electrical behavior of interrupt pin1 or pin2
|
||||
* from the sensor.
|
||||
|
@ -1483,10 +1505,12 @@ uint16_t bma4_set_int_pin_config(const struct bma4_int_pin_config *int_pin_confi
|
|||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_get_int_pin_config(struct bma4_int_pin_config *int_pin_config, uint8_t int_line, struct bma4_dev *dev);
|
||||
uint16_t bma4_get_int_pin_config(struct bma4_int_pin_config *int_pin_config,
|
||||
uint8_t int_line, struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the Feature and Hardware interrupt status from the sensor.
|
||||
* @brief This API reads the Feature and Hardware interrupt status from the
|
||||
*sensor.
|
||||
*
|
||||
* @param[out] int_status : Variable used to get the interrupt status.
|
||||
* @param[in] dev : Structure instance of bma4_dev.
|
||||
|
@ -1544,14 +1568,16 @@ uint16_t bma4_aux_interface_init(struct bma4_dev *dev);
|
|||
* @param[in] len : User specified data length
|
||||
* @param[out] aux_data : Pointer variable to store data read
|
||||
* @param[in] aux_reg_addr : Variable to pass address from where
|
||||
* data is to be read
|
||||
* data is to be
|
||||
*read
|
||||
*
|
||||
* @return Result of API execution status
|
||||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_aux_read(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len, struct bma4_dev *dev);
|
||||
uint16_t bma4_aux_read(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API writes the data into the auxiliary sensor
|
||||
|
@ -1560,15 +1586,16 @@ uint16_t bma4_aux_read(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len, st
|
|||
* @param[in] len : User specified data length
|
||||
* @param[out] aux_data : Pointer variable to store data read
|
||||
* @param[in] aux_reg_addr : Variable to pass address from where
|
||||
* data is to be written
|
||||
* data is to be
|
||||
*written
|
||||
*
|
||||
* @return Result of API execution status
|
||||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*
|
||||
*/
|
||||
uint16_t bma4_aux_write(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len, struct bma4_dev *dev);
|
||||
|
||||
uint16_t bma4_aux_write(uint8_t aux_reg_addr, uint8_t *aux_data, uint16_t len,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
#endif
|
||||
/* End of __BMA4_H__ */
|
||||
|
|
2796
src/bma423.c
559
src/bma423.h
|
@ -1,87 +1,87 @@
|
|||
/*
|
||||
*
|
||||
****************************************************************************
|
||||
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
|
||||
*
|
||||
* File : bma423.h
|
||||
*
|
||||
* Date: 12 Oct 2017
|
||||
*
|
||||
* Revision : 1.1.4 $
|
||||
*
|
||||
* Usage: Sensor Driver for BMA423 sensor
|
||||
*
|
||||
****************************************************************************
|
||||
*
|
||||
* Disclaimer
|
||||
*
|
||||
* Common:
|
||||
* Bosch Sensortec products are developed for the consumer goods industry.
|
||||
* They may only be used within the parameters of the respective valid
|
||||
* product data sheet. Bosch Sensortec products are provided with the
|
||||
* express understanding that there is no warranty of fitness for a
|
||||
* particular purpose.They are not fit for use in life-sustaining,
|
||||
* safety or security sensitive systems or any system or device
|
||||
* that may lead to bodily harm or property damage if the system
|
||||
* or device malfunctions. In addition,Bosch Sensortec products are
|
||||
* not fit for use in products which interact with motor vehicle systems.
|
||||
* The resale and or use of products are at the purchasers own risk and
|
||||
* his own responsibility. The examination of fitness for the intended use
|
||||
* is the sole responsibility of the Purchaser.
|
||||
*
|
||||
* The purchaser shall indemnify Bosch Sensortec from all third party
|
||||
* claims, including any claims for incidental, or consequential damages,
|
||||
* arising from any product use not covered by the parameters of
|
||||
* the respective valid product data sheet or not approved by
|
||||
* Bosch Sensortec and reimburse Bosch Sensortec for all costs in
|
||||
* connection with such claims.
|
||||
*
|
||||
* The purchaser must monitor the market for the purchased products,
|
||||
* particularly with regard to product safety and inform Bosch Sensortec
|
||||
* without delay of all security relevant incidents.
|
||||
*
|
||||
* Engineering Samples are marked with an asterisk (*) or (e).
|
||||
* Samples may vary from the valid technical specifications of the product
|
||||
* series. They are therefore not intended or fit for resale to third
|
||||
* parties or for use in end products. Their sole purpose is internal
|
||||
* client testing. The testing of an engineering sample may in no way
|
||||
* replace the testing of a product series. Bosch Sensortec assumes
|
||||
* no liability for the use of engineering samples.
|
||||
* By accepting the engineering samples, the Purchaser agrees to indemnify
|
||||
* Bosch Sensortec from all claims arising from the use of engineering
|
||||
* samples.
|
||||
*
|
||||
* Special:
|
||||
* This software module (hereinafter called "Software") and any information
|
||||
* on application-sheets (hereinafter called "Information") is provided
|
||||
* free of charge for the sole purpose to support your application work.
|
||||
* The Software and Information is subject to the following
|
||||
* terms and conditions:
|
||||
*
|
||||
* The Software is specifically designed for the exclusive use for
|
||||
* Bosch Sensortec products by personnel who have special experience
|
||||
* and training. Do not use this Software if you do not have the
|
||||
* proper experience or training.
|
||||
*
|
||||
* This Software package is provided `` as is `` and without any expressed
|
||||
* or implied warranties,including without limitation, the implied warranties
|
||||
* of merchantability and fitness for a particular purpose.
|
||||
*
|
||||
* Bosch Sensortec and their representatives and agents deny any liability
|
||||
* for the functional impairment
|
||||
* of this Software in terms of fitness, performance and safety.
|
||||
* Bosch Sensortec and their representatives and agents shall not be liable
|
||||
* for any direct or indirect damages or injury, except as
|
||||
* otherwise stipulated in mandatory applicable law.
|
||||
*
|
||||
* The Information provided is believed to be accurate and reliable.
|
||||
* Bosch Sensortec assumes no responsibility for the consequences of use
|
||||
* of such Information nor for any infringement of patents or
|
||||
* other rights of third parties which may result from its use.
|
||||
* No license is granted by implication or otherwise under any patent or
|
||||
* patent rights of Bosch. Specifications mentioned in the Information are
|
||||
* subject to change without notice.
|
||||
**************************************************************************/
|
||||
*
|
||||
****************************************************************************
|
||||
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
|
||||
*
|
||||
* File : bma423.h
|
||||
*
|
||||
* Date: 12 Oct 2017
|
||||
*
|
||||
* Revision : 1.1.4 $
|
||||
*
|
||||
* Usage: Sensor Driver for BMA423 sensor
|
||||
*
|
||||
****************************************************************************
|
||||
*
|
||||
* Disclaimer
|
||||
*
|
||||
* Common:
|
||||
* Bosch Sensortec products are developed for the consumer goods industry.
|
||||
* They may only be used within the parameters of the respective valid
|
||||
* product data sheet. Bosch Sensortec products are provided with the
|
||||
* express understanding that there is no warranty of fitness for a
|
||||
* particular purpose.They are not fit for use in life-sustaining,
|
||||
* safety or security sensitive systems or any system or device
|
||||
* that may lead to bodily harm or property damage if the system
|
||||
* or device malfunctions. In addition,Bosch Sensortec products are
|
||||
* not fit for use in products which interact with motor vehicle systems.
|
||||
* The resale and or use of products are at the purchasers own risk and
|
||||
* his own responsibility. The examination of fitness for the intended use
|
||||
* is the sole responsibility of the Purchaser.
|
||||
*
|
||||
* The purchaser shall indemnify Bosch Sensortec from all third party
|
||||
* claims, including any claims for incidental, or consequential damages,
|
||||
* arising from any product use not covered by the parameters of
|
||||
* the respective valid product data sheet or not approved by
|
||||
* Bosch Sensortec and reimburse Bosch Sensortec for all costs in
|
||||
* connection with such claims.
|
||||
*
|
||||
* The purchaser must monitor the market for the purchased products,
|
||||
* particularly with regard to product safety and inform Bosch Sensortec
|
||||
* without delay of all security relevant incidents.
|
||||
*
|
||||
* Engineering Samples are marked with an asterisk (*) or (e).
|
||||
* Samples may vary from the valid technical specifications of the product
|
||||
* series. They are therefore not intended or fit for resale to third
|
||||
* parties or for use in end products. Their sole purpose is internal
|
||||
* client testing. The testing of an engineering sample may in no way
|
||||
* replace the testing of a product series. Bosch Sensortec assumes
|
||||
* no liability for the use of engineering samples.
|
||||
* By accepting the engineering samples, the Purchaser agrees to indemnify
|
||||
* Bosch Sensortec from all claims arising from the use of engineering
|
||||
* samples.
|
||||
*
|
||||
* Special:
|
||||
* This software module (hereinafter called "Software") and any information
|
||||
* on application-sheets (hereinafter called "Information") is provided
|
||||
* free of charge for the sole purpose to support your application work.
|
||||
* The Software and Information is subject to the following
|
||||
* terms and conditions:
|
||||
*
|
||||
* The Software is specifically designed for the exclusive use for
|
||||
* Bosch Sensortec products by personnel who have special experience
|
||||
* and training. Do not use this Software if you do not have the
|
||||
* proper experience or training.
|
||||
*
|
||||
* This Software package is provided `` as is `` and without any expressed
|
||||
* or implied warranties,including without limitation, the implied warranties
|
||||
* of merchantability and fitness for a particular purpose.
|
||||
*
|
||||
* Bosch Sensortec and their representatives and agents deny any liability
|
||||
* for the functional impairment
|
||||
* of this Software in terms of fitness, performance and safety.
|
||||
* Bosch Sensortec and their representatives and agents shall not be liable
|
||||
* for any direct or indirect damages or injury, except as
|
||||
* otherwise stipulated in mandatory applicable law.
|
||||
*
|
||||
* The Information provided is believed to be accurate and reliable.
|
||||
* Bosch Sensortec assumes no responsibility for the consequences of use
|
||||
* of such Information nor for any infringement of patents or
|
||||
* other rights of third parties which may result from its use.
|
||||
* No license is granted by implication or otherwise under any patent or
|
||||
* patent rights of Bosch. Specifications mentioned in the Information are
|
||||
* subject to change without notice.
|
||||
**************************************************************************/
|
||||
/*! \file bma423.h
|
||||
\brief Sensor Driver for BMA423 sensor */
|
||||
#ifndef BMA423_H
|
||||
|
@ -93,258 +93,257 @@ extern "C" {
|
|||
#include "bma4.h"
|
||||
|
||||
/**\name Chip ID of BMA423 sensor */
|
||||
#define BMA423_CHIP_ID UINT8_C(0x13)
|
||||
#define BMA423_CHIP_ID UINT8_C(0x13)
|
||||
|
||||
/**\name Sensor feature size */
|
||||
#define BMA423_FEATURE_SIZE UINT8_C(64)
|
||||
#define BMA423_ANYMOTION_EN_LEN UINT8_C(2)
|
||||
#define BMA423_RD_WR_MIN_LEN UINT8_C(2)
|
||||
#define BMA423_FEATURE_SIZE UINT8_C(64)
|
||||
#define BMA423_ANYMOTION_EN_LEN UINT8_C(2)
|
||||
#define BMA423_RD_WR_MIN_LEN UINT8_C(2)
|
||||
|
||||
/**\name Feature offset address */
|
||||
#define BMA423_ANY_NO_MOTION_OFFSET UINT8_C(0x00)
|
||||
#define BMA423_STEP_CNTR_OFFSET UINT8_C(0x36)
|
||||
#define BMA423_STEP_CNTR_PARAM_OFFSET UINT8_C(0x04)
|
||||
#define BMA423_WAKEUP_OFFSET UINT8_C(0x38)
|
||||
#define BMA423_TILT_OFFSET UINT8_C(0x3A)
|
||||
#define BMA423_CONFIG_ID_OFFSET UINT8_C(0x3C)
|
||||
#define BMA423_AXES_REMAP_OFFSET UINT8_C(0x3E)
|
||||
|
||||
#define BMA423_ANY_NO_MOTION_OFFSET UINT8_C(0x00)
|
||||
#define BMA423_STEP_CNTR_OFFSET UINT8_C(0x36)
|
||||
#define BMA423_STEP_CNTR_PARAM_OFFSET UINT8_C(0x04)
|
||||
#define BMA423_WAKEUP_OFFSET UINT8_C(0x38)
|
||||
#define BMA423_TILT_OFFSET UINT8_C(0x3A)
|
||||
#define BMA423_CONFIG_ID_OFFSET UINT8_C(0x3C)
|
||||
#define BMA423_AXES_REMAP_OFFSET UINT8_C(0x3E)
|
||||
|
||||
/**************************************************************/
|
||||
/**\name Remap Axes */
|
||||
/**************************************************************/
|
||||
#define BMA423_X_AXIS_MASK UINT8_C(0x03)
|
||||
#define BMA423_X_AXIS_SIGN_MASK UINT8_C(0x04)
|
||||
#define BMA423_Y_AXIS_MASK UINT8_C(0x18)
|
||||
#define BMA423_Y_AXIS_SIGN_MASK UINT8_C(0x20)
|
||||
#define BMA423_Z_AXIS_MASK UINT8_C(0xC0)
|
||||
#define BMA423_Z_AXIS_SIGN_MASK UINT8_C(0x01)
|
||||
#define BMA423_X_AXIS_MASK UINT8_C(0x03)
|
||||
#define BMA423_X_AXIS_SIGN_MASK UINT8_C(0x04)
|
||||
#define BMA423_Y_AXIS_MASK UINT8_C(0x18)
|
||||
#define BMA423_Y_AXIS_SIGN_MASK UINT8_C(0x20)
|
||||
#define BMA423_Z_AXIS_MASK UINT8_C(0xC0)
|
||||
#define BMA423_Z_AXIS_SIGN_MASK UINT8_C(0x01)
|
||||
|
||||
/**************************************************************/
|
||||
/**\name Step Counter & Detector */
|
||||
/**************************************************************/
|
||||
/**\name Step counter enable macros */
|
||||
#define BMA423_STEP_CNTR_EN_POS UINT8_C(4)
|
||||
#define BMA423_STEP_CNTR_EN_MSK UINT8_C(0x10)
|
||||
#define BMA423_ACTIVITY_EN_MSK UINT8_C(0x20)
|
||||
#define BMA423_STEP_CNTR_EN_POS UINT8_C(4)
|
||||
#define BMA423_STEP_CNTR_EN_MSK UINT8_C(0x10)
|
||||
#define BMA423_ACTIVITY_EN_MSK UINT8_C(0x20)
|
||||
|
||||
/**\name Step counter watermark macros */
|
||||
#define BMA423_STEP_CNTR_WM_MSK UINT16_C(0x03FF)
|
||||
#define BMA423_STEP_CNTR_WM_MSK UINT16_C(0x03FF)
|
||||
|
||||
/**\name Step counter reset macros */
|
||||
#define BMA423_STEP_CNTR_RST_POS UINT8_C(2)
|
||||
#define BMA423_STEP_CNTR_RST_MSK UINT8_C(0x04)
|
||||
#define BMA423_STEP_CNTR_RST_POS UINT8_C(2)
|
||||
#define BMA423_STEP_CNTR_RST_MSK UINT8_C(0x04)
|
||||
|
||||
/**\name Step detector enable macros */
|
||||
#define BMA423_STEP_DETECTOR_EN_POS UINT8_C(3)
|
||||
#define BMA423_STEP_DETECTOR_EN_MSK UINT8_C(0x08)
|
||||
#define BMA423_STEP_DETECTOR_EN_POS UINT8_C(3)
|
||||
#define BMA423_STEP_DETECTOR_EN_MSK UINT8_C(0x08)
|
||||
|
||||
/**\name Tilt enable macros */
|
||||
#define BMA423_TILT_EN_MSK UINT8_C(0x01)
|
||||
#define BMA423_TILT_EN_MSK UINT8_C(0x01)
|
||||
|
||||
/**\name Step count output length*/
|
||||
#define BMA423_STEP_CNTR_DATA_SIZE UINT16_C(4)
|
||||
#define BMA423_STEP_CNTR_DATA_SIZE UINT16_C(4)
|
||||
|
||||
/**\name Wakeup enable macros */
|
||||
#define BMA423_WAKEUP_EN_MSK UINT8_C(0x01)
|
||||
#define BMA423_WAKEUP_EN_MSK UINT8_C(0x01)
|
||||
|
||||
/**\name Wake up sensitivity macros */
|
||||
#define BMA423_WAKEUP_SENS_POS UINT8_C(1)
|
||||
#define BMA423_WAKEUP_SENS_MSK UINT8_C(0x0E)
|
||||
#define BMA423_WAKEUP_SENS_POS UINT8_C(1)
|
||||
#define BMA423_WAKEUP_SENS_MSK UINT8_C(0x0E)
|
||||
|
||||
/**\name Tap selection macro */
|
||||
#define BMA423_TAP_SEL_POS UINT8_C(4)
|
||||
#define BMA423_TAP_SEL_MSK UINT8_C(0x10)
|
||||
#define BMA423_TAP_SEL_POS UINT8_C(4)
|
||||
#define BMA423_TAP_SEL_MSK UINT8_C(0x10)
|
||||
|
||||
/**************************************************************/
|
||||
/**\name Any Motion */
|
||||
/**************************************************************/
|
||||
/**\name Any motion threshold macros */
|
||||
#define BMA423_ANY_NO_MOTION_THRES_POS UINT8_C(0)
|
||||
#define BMA423_ANY_NO_MOTION_THRES_MSK UINT16_C(0x07FF)
|
||||
#define BMA423_ANY_NO_MOTION_THRES_POS UINT8_C(0)
|
||||
#define BMA423_ANY_NO_MOTION_THRES_MSK UINT16_C(0x07FF)
|
||||
|
||||
/**\name Any motion selection macros */
|
||||
#define BMA423_ANY_NO_MOTION_SEL_POS UINT8_C(3)
|
||||
#define BMA423_ANY_NO_MOTION_SEL_MSK UINT8_C(0x08)
|
||||
#define BMA423_ANY_NO_MOTION_SEL_POS UINT8_C(3)
|
||||
#define BMA423_ANY_NO_MOTION_SEL_MSK UINT8_C(0x08)
|
||||
|
||||
/**\name Any motion enable macros */
|
||||
#define BMA423_ANY_NO_MOTION_AXIS_EN_POS UINT8_C(5)
|
||||
#define BMA423_ANY_NO_MOTION_AXIS_EN_MSK UINT8_C(0xE0)
|
||||
#define BMA423_ANY_NO_MOTION_AXIS_EN_POS UINT8_C(5)
|
||||
#define BMA423_ANY_NO_MOTION_AXIS_EN_MSK UINT8_C(0xE0)
|
||||
|
||||
/**\name Any motion duration macros */
|
||||
#define BMA423_ANY_NO_MOTION_DUR_MSK UINT16_C(0x1FFF)
|
||||
#define BMA423_ANY_NO_MOTION_DUR_MSK UINT16_C(0x1FFF)
|
||||
|
||||
/**************************************************************/
|
||||
/**\name User macros */
|
||||
/**************************************************************/
|
||||
|
||||
/**\name Anymotion/Nomotion axis enable macros */
|
||||
#define BMA423_X_AXIS_EN UINT8_C(0x01)
|
||||
#define BMA423_Y_AXIS_EN UINT8_C(0x02)
|
||||
#define BMA423_Z_AXIS_EN UINT8_C(0x04)
|
||||
#define BMA423_ALL_AXIS_EN UINT8_C(0x07)
|
||||
#define BMA423_ALL_AXIS_DIS UINT8_C(0x00)
|
||||
#define BMA423_X_AXIS_EN UINT8_C(0x01)
|
||||
#define BMA423_Y_AXIS_EN UINT8_C(0x02)
|
||||
#define BMA423_Z_AXIS_EN UINT8_C(0x04)
|
||||
#define BMA423_ALL_AXIS_EN UINT8_C(0x07)
|
||||
#define BMA423_ALL_AXIS_DIS UINT8_C(0x00)
|
||||
|
||||
/**\name Feature enable macros for the sensor */
|
||||
#define BMA423_STEP_CNTR UINT8_C(0x01)
|
||||
#define BMA423_STEP_CNTR UINT8_C(0x01)
|
||||
/**\name Below macros are mutually exclusive */
|
||||
#define BMA423_ANY_MOTION UINT8_C(0x02)
|
||||
#define BMA423_NO_MOTION UINT8_C(0x04)
|
||||
#define BMA423_ACTIVITY UINT8_C(0x08)
|
||||
#define BMA423_TILT UINT8_C(0x10)
|
||||
#define BMA423_WAKEUP UINT8_C(0x20)
|
||||
#define BMA423_ANY_MOTION UINT8_C(0x02)
|
||||
#define BMA423_NO_MOTION UINT8_C(0x04)
|
||||
#define BMA423_ACTIVITY UINT8_C(0x08)
|
||||
#define BMA423_TILT UINT8_C(0x10)
|
||||
#define BMA423_WAKEUP UINT8_C(0x20)
|
||||
|
||||
/**\name Interrupt status macros */
|
||||
#define BMA423_STEP_CNTR_INT UINT8_C(0x02)
|
||||
#define BMA423_ACTIVITY_INT UINT8_C(0x04)
|
||||
#define BMA423_TILT_INT UINT8_C(0x08)
|
||||
#define BMA423_WAKEUP_INT UINT8_C(0x20)
|
||||
#define BMA423_ANY_NO_MOTION_INT UINT8_C(0x40)
|
||||
#define BMA423_ERROR_INT UINT8_C(0x80)
|
||||
#define BMA423_STEP_CNTR_INT UINT8_C(0x02)
|
||||
#define BMA423_ACTIVITY_INT UINT8_C(0x04)
|
||||
#define BMA423_TILT_INT UINT8_C(0x08)
|
||||
#define BMA423_WAKEUP_INT UINT8_C(0x20)
|
||||
#define BMA423_ANY_NO_MOTION_INT UINT8_C(0x40)
|
||||
#define BMA423_ERROR_INT UINT8_C(0x80)
|
||||
|
||||
/**\name Activity recognition macros */
|
||||
#define BMA423_USER_STATIONARY UINT8_C(0x00)
|
||||
#define BMA423_USER_WALKING UINT8_C(0x01)
|
||||
#define BMA423_USER_RUNNING UINT8_C(0x02)
|
||||
#define BMA423_STATE_INVALID UINT8_C(0x03)
|
||||
#define BMA423_USER_STATIONARY UINT8_C(0x00)
|
||||
#define BMA423_USER_WALKING UINT8_C(0x01)
|
||||
#define BMA423_USER_RUNNING UINT8_C(0x02)
|
||||
#define BMA423_STATE_INVALID UINT8_C(0x03)
|
||||
|
||||
/**\name Configuration selection macros */
|
||||
#define BMA423_PHONE_CONFIG UINT8_C(0x00)
|
||||
#define BMA423_WRIST_CONFIG UINT8_C(0x01)
|
||||
#define BMA423_PHONE_CONFIG UINT8_C(0x00)
|
||||
#define BMA423_WRIST_CONFIG UINT8_C(0x01)
|
||||
|
||||
/**\name Step counter parameter setting(1-25) for phone */
|
||||
#define BMA423_PHONE_SC_PARAM_1 UINT16_C(0x132)
|
||||
#define BMA423_PHONE_SC_PARAM_2 UINT16_C(0x78E6)
|
||||
#define BMA423_PHONE_SC_PARAM_3 UINT16_C(0x84)
|
||||
#define BMA423_PHONE_SC_PARAM_4 UINT16_C(0x6C9C)
|
||||
#define BMA423_PHONE_SC_PARAM_5 UINT8_C(0x07)
|
||||
#define BMA423_PHONE_SC_PARAM_6 UINT16_C(0x7564)
|
||||
#define BMA423_PHONE_SC_PARAM_7 UINT16_C(0x7EAA)
|
||||
#define BMA423_PHONE_SC_PARAM_8 UINT16_C(0x55F)
|
||||
#define BMA423_PHONE_SC_PARAM_9 UINT16_C(0xABE)
|
||||
#define BMA423_PHONE_SC_PARAM_10 UINT16_C(0x55F)
|
||||
#define BMA423_PHONE_SC_PARAM_11 UINT16_C(0xE896)
|
||||
#define BMA423_PHONE_SC_PARAM_12 UINT16_C(0x41EF)
|
||||
#define BMA423_PHONE_SC_PARAM_13 UINT8_C(0x01)
|
||||
#define BMA423_PHONE_SC_PARAM_14 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_15 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_16 UINT8_C(0x4A)
|
||||
#define BMA423_PHONE_SC_PARAM_17 UINT8_C(0xA0)
|
||||
#define BMA423_PHONE_SC_PARAM_18 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_19 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_20 UINT16_C(0x3CF0)
|
||||
#define BMA423_PHONE_SC_PARAM_21 UINT16_C(0x100)
|
||||
#define BMA423_PHONE_SC_PARAM_22 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_23 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_24 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_25 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_1 UINT16_C(0x132)
|
||||
#define BMA423_PHONE_SC_PARAM_2 UINT16_C(0x78E6)
|
||||
#define BMA423_PHONE_SC_PARAM_3 UINT16_C(0x84)
|
||||
#define BMA423_PHONE_SC_PARAM_4 UINT16_C(0x6C9C)
|
||||
#define BMA423_PHONE_SC_PARAM_5 UINT8_C(0x07)
|
||||
#define BMA423_PHONE_SC_PARAM_6 UINT16_C(0x7564)
|
||||
#define BMA423_PHONE_SC_PARAM_7 UINT16_C(0x7EAA)
|
||||
#define BMA423_PHONE_SC_PARAM_8 UINT16_C(0x55F)
|
||||
#define BMA423_PHONE_SC_PARAM_9 UINT16_C(0xABE)
|
||||
#define BMA423_PHONE_SC_PARAM_10 UINT16_C(0x55F)
|
||||
#define BMA423_PHONE_SC_PARAM_11 UINT16_C(0xE896)
|
||||
#define BMA423_PHONE_SC_PARAM_12 UINT16_C(0x41EF)
|
||||
#define BMA423_PHONE_SC_PARAM_13 UINT8_C(0x01)
|
||||
#define BMA423_PHONE_SC_PARAM_14 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_15 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_16 UINT8_C(0x4A)
|
||||
#define BMA423_PHONE_SC_PARAM_17 UINT8_C(0xA0)
|
||||
#define BMA423_PHONE_SC_PARAM_18 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_19 UINT8_C(0x0C)
|
||||
#define BMA423_PHONE_SC_PARAM_20 UINT16_C(0x3CF0)
|
||||
#define BMA423_PHONE_SC_PARAM_21 UINT16_C(0x100)
|
||||
#define BMA423_PHONE_SC_PARAM_22 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_23 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_24 UINT8_C(0x00)
|
||||
#define BMA423_PHONE_SC_PARAM_25 UINT8_C(0x00)
|
||||
|
||||
/**\name Step counter parameter setting(1-25) for wrist (Default) */
|
||||
#define BMA423_WRIST_SC_PARAM_1 UINT16_C(0x12D)
|
||||
#define BMA423_WRIST_SC_PARAM_2 UINT16_C(0x7BD4)
|
||||
#define BMA423_WRIST_SC_PARAM_3 UINT16_C(0x13B)
|
||||
#define BMA423_WRIST_SC_PARAM_4 UINT16_C(0x7ADB)
|
||||
#define BMA423_WRIST_SC_PARAM_5 UINT8_C(0x04)
|
||||
#define BMA423_WRIST_SC_PARAM_6 UINT16_C(0x7B3F)
|
||||
#define BMA423_WRIST_SC_PARAM_7 UINT16_C(0x6CCD)
|
||||
#define BMA423_WRIST_SC_PARAM_8 UINT16_C(0x4C3)
|
||||
#define BMA423_WRIST_SC_PARAM_9 UINT16_C(0x985)
|
||||
#define BMA423_WRIST_SC_PARAM_10 UINT16_C(0x4C3)
|
||||
#define BMA423_WRIST_SC_PARAM_11 UINT16_C(0xE6EC)
|
||||
#define BMA423_WRIST_SC_PARAM_12 UINT16_C(0x460C)
|
||||
#define BMA423_WRIST_SC_PARAM_13 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_14 UINT8_C(0x27)
|
||||
#define BMA423_WRIST_SC_PARAM_15 UINT8_C(0x19)
|
||||
#define BMA423_WRIST_SC_PARAM_16 UINT8_C(0x96)
|
||||
#define BMA423_WRIST_SC_PARAM_17 UINT8_C(0xA0)
|
||||
#define BMA423_WRIST_SC_PARAM_18 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_19 UINT8_C(0x0C)
|
||||
#define BMA423_WRIST_SC_PARAM_20 UINT16_C(0x3CF0)
|
||||
#define BMA423_WRIST_SC_PARAM_21 UINT16_C(0x100)
|
||||
#define BMA423_WRIST_SC_PARAM_22 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_23 UINT8_C(0x03)
|
||||
#define BMA423_WRIST_SC_PARAM_24 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_25 UINT8_C(0x0E)
|
||||
#define BMA423_WRIST_SC_PARAM_1 UINT16_C(0x12D)
|
||||
#define BMA423_WRIST_SC_PARAM_2 UINT16_C(0x7BD4)
|
||||
#define BMA423_WRIST_SC_PARAM_3 UINT16_C(0x13B)
|
||||
#define BMA423_WRIST_SC_PARAM_4 UINT16_C(0x7ADB)
|
||||
#define BMA423_WRIST_SC_PARAM_5 UINT8_C(0x04)
|
||||
#define BMA423_WRIST_SC_PARAM_6 UINT16_C(0x7B3F)
|
||||
#define BMA423_WRIST_SC_PARAM_7 UINT16_C(0x6CCD)
|
||||
#define BMA423_WRIST_SC_PARAM_8 UINT16_C(0x4C3)
|
||||
#define BMA423_WRIST_SC_PARAM_9 UINT16_C(0x985)
|
||||
#define BMA423_WRIST_SC_PARAM_10 UINT16_C(0x4C3)
|
||||
#define BMA423_WRIST_SC_PARAM_11 UINT16_C(0xE6EC)
|
||||
#define BMA423_WRIST_SC_PARAM_12 UINT16_C(0x460C)
|
||||
#define BMA423_WRIST_SC_PARAM_13 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_14 UINT8_C(0x27)
|
||||
#define BMA423_WRIST_SC_PARAM_15 UINT8_C(0x19)
|
||||
#define BMA423_WRIST_SC_PARAM_16 UINT8_C(0x96)
|
||||
#define BMA423_WRIST_SC_PARAM_17 UINT8_C(0xA0)
|
||||
#define BMA423_WRIST_SC_PARAM_18 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_19 UINT8_C(0x0C)
|
||||
#define BMA423_WRIST_SC_PARAM_20 UINT16_C(0x3CF0)
|
||||
#define BMA423_WRIST_SC_PARAM_21 UINT16_C(0x100)
|
||||
#define BMA423_WRIST_SC_PARAM_22 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_23 UINT8_C(0x03)
|
||||
#define BMA423_WRIST_SC_PARAM_24 UINT8_C(0x01)
|
||||
#define BMA423_WRIST_SC_PARAM_25 UINT8_C(0x0E)
|
||||
|
||||
/*!
|
||||
* @brief Any motion configuration
|
||||
*/
|
||||
struct bma423_anymotion_config {
|
||||
/*! Expressed in 50 Hz samples (20 ms) */
|
||||
uint16_t duration;
|
||||
/*! Threshold value for Any-motion / No-motion detection in
|
||||
5.11g format */
|
||||
uint16_t threshold;
|
||||
/*! Indicates if No-motion or Any-motion is selected */
|
||||
uint8_t nomotion_sel;
|
||||
/*! Expressed in 50 Hz samples (20 ms) */
|
||||
uint16_t duration;
|
||||
/*! Threshold value for Any-motion / No-motion detection in
|
||||
5.11g format */
|
||||
uint16_t threshold;
|
||||
/*! Indicates if No-motion or Any-motion is selected */
|
||||
uint8_t nomotion_sel;
|
||||
};
|
||||
|
||||
/*!
|
||||
* @brief Axes remapping configuration
|
||||
*/
|
||||
struct bma423_axes_remap {
|
||||
uint8_t x_axis;
|
||||
uint8_t x_axis_sign;
|
||||
uint8_t y_axis;
|
||||
uint8_t y_axis_sign;
|
||||
uint8_t z_axis;
|
||||
uint8_t z_axis_sign;
|
||||
uint8_t x_axis;
|
||||
uint8_t x_axis_sign;
|
||||
uint8_t y_axis;
|
||||
uint8_t y_axis_sign;
|
||||
uint8_t z_axis;
|
||||
uint8_t z_axis_sign;
|
||||
};
|
||||
|
||||
/*!
|
||||
* @brief Step counter param settings
|
||||
*/
|
||||
struct bma423_stepcounter_settings {
|
||||
/*! Step Counter param 1 */
|
||||
uint16_t param1;
|
||||
/*! Step Counter param 2 */
|
||||
uint16_t param2;
|
||||
/*! Step Counter param 3 */
|
||||
uint16_t param3;
|
||||
/*! Step Counter param 4 */
|
||||
uint16_t param4;
|
||||
/*! Step Counter param 5 */
|
||||
uint16_t param5;
|
||||
/*! Step Counter param 6 */
|
||||
uint16_t param6;
|
||||
/*! Step Counter param 7 */
|
||||
uint16_t param7;
|
||||
/*! Step Counter param 8 */
|
||||
uint16_t param8;
|
||||
/*! Step Counter param 9 */
|
||||
uint16_t param9;
|
||||
/*! Step Counter param 10 */
|
||||
uint16_t param10;
|
||||
/*! Step Counter param 11 */
|
||||
uint16_t param11;
|
||||
/*! Step Counter param 12 */
|
||||
uint16_t param12;
|
||||
/*! Step Counter param 13 */
|
||||
uint16_t param13;
|
||||
/*! Step Counter param 14 */
|
||||
uint16_t param14;
|
||||
/*! Step Counter param 15 */
|
||||
uint16_t param15;
|
||||
/*! Step Counter param 16 */
|
||||
uint16_t param16;
|
||||
/*! Step Counter param 17 */
|
||||
uint16_t param17;
|
||||
/*! Step Counter param 18 */
|
||||
uint16_t param18;
|
||||
/*! Step Counter param 19 */
|
||||
uint16_t param19;
|
||||
/*! Step Counter param 20 */
|
||||
uint16_t param20;
|
||||
/*! Step Counter param 21 */
|
||||
uint16_t param21;
|
||||
/*! Step Counter param 22 */
|
||||
uint16_t param22;
|
||||
/*! Step Counter param 23 */
|
||||
uint16_t param23;
|
||||
/*! Step Counter param 24 */
|
||||
uint16_t param24;
|
||||
/*! Step Counter param 25 */
|
||||
uint16_t param25;
|
||||
/*! Step Counter param 1 */
|
||||
uint16_t param1;
|
||||
/*! Step Counter param 2 */
|
||||
uint16_t param2;
|
||||
/*! Step Counter param 3 */
|
||||
uint16_t param3;
|
||||
/*! Step Counter param 4 */
|
||||
uint16_t param4;
|
||||
/*! Step Counter param 5 */
|
||||
uint16_t param5;
|
||||
/*! Step Counter param 6 */
|
||||
uint16_t param6;
|
||||
/*! Step Counter param 7 */
|
||||
uint16_t param7;
|
||||
/*! Step Counter param 8 */
|
||||
uint16_t param8;
|
||||
/*! Step Counter param 9 */
|
||||
uint16_t param9;
|
||||
/*! Step Counter param 10 */
|
||||
uint16_t param10;
|
||||
/*! Step Counter param 11 */
|
||||
uint16_t param11;
|
||||
/*! Step Counter param 12 */
|
||||
uint16_t param12;
|
||||
/*! Step Counter param 13 */
|
||||
uint16_t param13;
|
||||
/*! Step Counter param 14 */
|
||||
uint16_t param14;
|
||||
/*! Step Counter param 15 */
|
||||
uint16_t param15;
|
||||
/*! Step Counter param 16 */
|
||||
uint16_t param16;
|
||||
/*! Step Counter param 17 */
|
||||
uint16_t param17;
|
||||
/*! Step Counter param 18 */
|
||||
uint16_t param18;
|
||||
/*! Step Counter param 19 */
|
||||
uint16_t param19;
|
||||
/*! Step Counter param 20 */
|
||||
uint16_t param20;
|
||||
/*! Step Counter param 21 */
|
||||
uint16_t param21;
|
||||
/*! Step Counter param 22 */
|
||||
uint16_t param22;
|
||||
/*! Step Counter param 23 */
|
||||
uint16_t param23;
|
||||
/*! Step Counter param 24 */
|
||||
uint16_t param24;
|
||||
/*! Step Counter param 25 */
|
||||
uint16_t param25;
|
||||
};
|
||||
|
||||
/*!
|
||||
|
@ -385,7 +384,6 @@ uint16_t bma423_write_config_file(struct bma4_dev *dev);
|
|||
*/
|
||||
uint16_t bma423_get_config_id(uint16_t *config_id, struct bma4_dev *dev);
|
||||
|
||||
|
||||
/*!
|
||||
* @brief This API sets/unsets the user provided interrupt to either
|
||||
* interrupt pin1 or pin2 in the sensor.
|
||||
|
@ -422,7 +420,8 @@ uint16_t bma423_get_config_id(uint16_t *config_id, struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_map_interrupt(uint8_t int_line, uint16_t int_map, uint8_t enable, struct bma4_dev *dev);
|
||||
uint16_t bma423_map_interrupt(uint8_t int_line, uint16_t int_map,
|
||||
uint8_t enable, struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the bma423 interrupt status from the sensor.
|
||||
|
@ -479,8 +478,8 @@ uint16_t bma423_read_int_status(uint16_t *int_status, struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable, struct bma4_dev *dev);
|
||||
|
||||
uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API performs x, y and z axis remapping in the sensor.
|
||||
|
@ -492,7 +491,8 @@ uint16_t bma423_feature_enable(uint8_t feature, uint8_t enable, struct bma4_dev
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data, struct bma4_dev *dev);
|
||||
uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API reads the x, y and z axis remap data from the sensor.
|
||||
|
@ -505,8 +505,8 @@ uint16_t bma423_set_remap_axes(const struct bma423_axes_remap *remap_data, struc
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data, struct bma4_dev *dev);
|
||||
|
||||
uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the watermark level for step counter
|
||||
|
@ -522,7 +522,8 @@ uint16_t bma423_get_remap_axes(struct bma423_axes_remap *remap_data, struct bma4
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm, struct bma4_dev *dev);
|
||||
uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API gets the water mark level set for step counter interrupt
|
||||
|
@ -538,7 +539,8 @@ uint16_t bma423_step_counter_set_watermark(uint16_t step_counter_wm, struct bma4
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_step_counter_get_watermark(uint16_t *step_counter_wm, struct bma4_dev *dev);
|
||||
uint16_t bma423_step_counter_get_watermark(uint16_t *step_counter_wm,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API resets the counted steps of step counter.
|
||||
|
@ -613,7 +615,9 @@ uint16_t bma423_select_platform(uint8_t platform, struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *setting, struct bma4_dev *dev);
|
||||
uint16_t
|
||||
bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *setting,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the parameter1 to parameter7 settings of the
|
||||
|
@ -627,7 +631,8 @@ uint16_t bma423_stepcounter_get_parameter(struct bma423_stepcounter_settings *se
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_stepcounter_set_parameter(const struct bma423_stepcounter_settings *setting, struct bma4_dev *dev);
|
||||
uint16_t bma423_stepcounter_set_parameter(
|
||||
const struct bma423_stepcounter_settings *setting, struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API enables or disables the step detector feature in the
|
||||
|
@ -703,7 +708,9 @@ uint16_t bma423_anymotion_enable_axis(uint8_t axis, struct bma4_dev *dev);
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_motion, struct bma4_dev *dev);
|
||||
uint16_t
|
||||
bma423_set_any_motion_config(const struct bma423_anymotion_config *any_motion,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*! @brief This API gets the configuration of any motion feature from
|
||||
* the sensor.
|
||||
|
@ -741,7 +748,9 @@ uint16_t bma423_set_any_motion_config(const struct bma423_anymotion_config *any_
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion, struct bma4_dev *dev);
|
||||
uint16_t
|
||||
bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API sets the sensitivity of wake up feature in the sensor
|
||||
|
@ -758,7 +767,8 @@ uint16_t bma423_get_any_motion_config(struct bma423_anymotion_config *any_motion
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev);
|
||||
uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API gets the sensitivity of wake up feature in the sensor
|
||||
|
@ -775,7 +785,8 @@ uint16_t bma423_wakeup_set_sensitivity(uint8_t sensitivity, struct bma4_dev *dev
|
|||
* @retval 0 -> Success
|
||||
* @retval Any non zero value -> Fail
|
||||
*/
|
||||
uint16_t bma423_wakeup_get_sensitivity(uint8_t *sensitivity, struct bma4_dev *dev);
|
||||
uint16_t bma423_wakeup_get_sensitivity(uint8_t *sensitivity,
|
||||
struct bma4_dev *dev);
|
||||
|
||||
/*!
|
||||
* @brief This API is used to select single/double tap
|
||||
|
|
1162
src/bma4_defs.h
135
src/config.h
|
@ -1,55 +1,116 @@
|
|||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
|
||||
// Versioning
|
||||
#define WATCHY_LIB_VER "1.4.14"
|
||||
|
||||
//pins
|
||||
#define SDA 21
|
||||
#define SCL 22
|
||||
#define ADC_PIN 33
|
||||
#define RTC_PIN GPIO_NUM_27
|
||||
#define CS 5
|
||||
#define DC 10
|
||||
#define RESET 9
|
||||
#define BUSY 19
|
||||
#define VIB_MOTOR_PIN 13
|
||||
|
||||
#ifdef ARDUINO_ESP32S3_DEV //V3
|
||||
|
||||
#define WATCHY_V3_SDA 12
|
||||
#define WATCHY_V3_SCL 11
|
||||
|
||||
#define WATCHY_V3_SS 33
|
||||
#define WATCHY_V3_MOSI 48
|
||||
#define WATCHY_V3_MISO 46
|
||||
#define WATCHY_V3_SCK 47
|
||||
|
||||
#define MENU_BTN_PIN 7
|
||||
#define BACK_BTN_PIN 6
|
||||
#define UP_BTN_PIN 0
|
||||
#define DOWN_BTN_PIN 8
|
||||
|
||||
#define DISPLAY_CS 33
|
||||
#define DISPLAY_DC 34
|
||||
#define DISPLAY_RES 35
|
||||
#define DISPLAY_BUSY 36
|
||||
#define ACC_INT_1_PIN 14
|
||||
#define ACC_INT_2_PIN 13
|
||||
#define VIB_MOTOR_PIN 17
|
||||
#define BATT_ADC_PIN 9
|
||||
#define CHRG_STATUS_PIN 10
|
||||
#define USB_DET_PIN 21
|
||||
#define RTC_INT_PIN -1 //not used
|
||||
|
||||
#define MENU_BTN_MASK (BIT64(7))
|
||||
#define BACK_BTN_MASK (BIT64(6))
|
||||
#define UP_BTN_MASK (BIT64(0))
|
||||
#define DOWN_BTN_MASK (BIT64(8))
|
||||
#define ACC_INT_MASK (BIT64(14))
|
||||
#define BTN_PIN_MASK MENU_BTN_MASK|BACK_BTN_MASK|UP_BTN_MASK|DOWN_BTN_MASK
|
||||
|
||||
#else //V1,V1.5,V2
|
||||
|
||||
#if !defined(ARDUINO_WATCHY_V10) && !defined(ARDUINO_WATCHY_V15) && !defined(ARDUINO_WATCHY_V20)
|
||||
|
||||
#pragma message "Please install the latest ESP32 Arduino Core (2.0.5+) and choose Watchy as the target board"
|
||||
#pragma message "Hardware revision is not defined at the project level, please define in config.h. Defaulting to ARDUINO_WATCHY_V20"
|
||||
|
||||
#define ARDUINO_WATCHY_V20
|
||||
|
||||
#define MENU_BTN_PIN 26
|
||||
#define BACK_BTN_PIN 25
|
||||
#define UP_BTN_PIN 32
|
||||
#define DOWN_BTN_PIN 4
|
||||
#define MENU_BTN_MASK GPIO_SEL_26
|
||||
#define BACK_BTN_MASK GPIO_SEL_25
|
||||
#define UP_BTN_MASK GPIO_SEL_32
|
||||
#define DOWN_BTN_MASK GPIO_SEL_4
|
||||
#define ACC_INT_MASK GPIO_SEL_14
|
||||
#define BTN_PIN_MASK MENU_BTN_MASK|BACK_BTN_MASK|UP_BTN_MASK|DOWN_BTN_MASK
|
||||
#define DISPLAY_CS 5
|
||||
#define DISPLAY_RES 9
|
||||
#define DISPLAY_DC 10
|
||||
#define DISPLAY_BUSY 19
|
||||
#define ACC_INT_1_PIN 14
|
||||
#define ACC_INT_2_PIN 12
|
||||
#define VIB_MOTOR_PIN 13
|
||||
#define RTC_INT_PIN 27
|
||||
|
||||
#if defined (ARDUINO_WATCHY_V10)
|
||||
#define UP_BTN_PIN 32
|
||||
#define BATT_ADC_PIN 33
|
||||
#define UP_BTN_MASK (BIT64(32))
|
||||
#define RTC_TYPE 1 //DS3231
|
||||
#elif defined (ARDUINO_WATCHY_V15)
|
||||
#define UP_BTN_PIN 32
|
||||
#define BATT_ADC_PIN 35
|
||||
#define UP_BTN_MASK (BIT64(32))
|
||||
#define RTC_TYPE 2 //PCF8563
|
||||
#elif defined (ARDUINO_WATCHY_V20)
|
||||
#define UP_BTN_PIN 35
|
||||
#define BATT_ADC_PIN 34
|
||||
#define UP_BTN_MASK (BIT64(35))
|
||||
#define RTC_TYPE 2 //PCF8563
|
||||
#endif
|
||||
|
||||
#define MENU_BTN_MASK (BIT64(26))
|
||||
#define BACK_BTN_MASK (BIT64(25))
|
||||
#define DOWN_BTN_MASK (BIT64(4))
|
||||
#define ACC_INT_MASK (BIT64(14))
|
||||
#define BTN_PIN_MASK MENU_BTN_MASK|BACK_BTN_MASK|UP_BTN_MASK|DOWN_BTN_MASK
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
//display
|
||||
#define DISPLAY_WIDTH 200
|
||||
#define DISPLAY_HEIGHT 200
|
||||
//weather api
|
||||
#define CITY_NAME "NEW+YORK" //if your city name has a space, replace with '+'
|
||||
#define COUNTRY_CODE "US"
|
||||
#define OPENWEATHERMAP_APIKEY "f058fe1cad2afe8e2ddc5d063a64cecb" //use your own API key :)
|
||||
#define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?q="
|
||||
#define TEMP_UNIT "metric" //use "imperial" for Fahrenheit"
|
||||
//wifi
|
||||
// wifi
|
||||
#define WIFI_AP_TIMEOUT 60
|
||||
#define WIFI_AP_SSID "Watchy AP"
|
||||
//menu
|
||||
#define WIFI_AP_SSID "Watchy AP"
|
||||
// menu
|
||||
#define WATCHFACE_STATE -1
|
||||
#define MAIN_MENU_STATE 0
|
||||
#define APP_STATE 1
|
||||
#define APP_STATE 1
|
||||
#define FW_UPDATE_STATE 2
|
||||
#define MENU_HEIGHT 30
|
||||
#define MENU_LENGTH 6
|
||||
//set time
|
||||
#define SET_HOUR 0
|
||||
#define MENU_HEIGHT 25
|
||||
#define MENU_LENGTH 7
|
||||
// set time
|
||||
#define SET_HOUR 0
|
||||
#define SET_MINUTE 1
|
||||
#define SET_YEAR 2
|
||||
#define SET_MONTH 3
|
||||
#define SET_DAY 4
|
||||
#define YEAR_OFFSET 1970
|
||||
//BLE OTA
|
||||
#define BLE_DEVICE_NAME "Watchy BLE OTA"
|
||||
#define WATCHFACE_NAME "Watchy 7 Segment"
|
||||
#define SET_YEAR 2
|
||||
#define SET_MONTH 3
|
||||
#define SET_DAY 4
|
||||
#define HOUR_12_24 24
|
||||
// BLE OTA
|
||||
#define BLE_DEVICE_NAME "Watchy BLE OTA"
|
||||
#define WATCHFACE_NAME "Watchy 7 Segment"
|
||||
#define SOFTWARE_VERSION_MAJOR 1
|
||||
#define SOFTWARE_VERSION_MINOR 0
|
||||
#define SOFTWARE_VERSION_PATCH 0
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
#!/ bin / bash
|
||||
STYLE_OPT = "{BasedOnStyle: llvm, AlignConsecutiveMacros: true, "
|
||||
"AlignConsecutiveAssignments: true}" clang -
|
||||
format-- style = "$STYLE_OPT" - i *
|