Version 1.4.1.
This commit is contained in:
parent
c55efa7b3e
commit
fbbe3f72df
@ -10,9 +10,9 @@
|
||||
// WiFi
|
||||
#define WiFi_AP_SSID "Watchy Connect"
|
||||
#define WiFi_AP_PSWD "Watchy123"
|
||||
#define WiFi_AP_HIDE false
|
||||
#define WiFi_AP_MAXC 4
|
||||
#define WiFi_SSID_MAX 32
|
||||
#define WiFi_AP_HIDE false // Hide "WiFi_AP_SSID" so it doesn't show up in the normal scan list. IS NOT A SECURITY METHOD!
|
||||
#define WiFi_AP_MAXC 4 // Maximum user connections (default is 4).
|
||||
#define WiFi_SSID_MAX 32 // Do not change these two values.
|
||||
#define WiFi_PASS_MAX 63
|
||||
// Use instead of Watchy Connect (if necessary)
|
||||
#define WiFi_DEF_SSID ""
|
||||
@ -36,11 +36,8 @@
|
||||
#define MenuWidth 200
|
||||
#define MenuHeight 83
|
||||
|
||||
// BMA For Tilt/DTap
|
||||
#define BMA432_INT1_PIN 14
|
||||
#define BMA432_INT2_PIN 12
|
||||
#define BMA432_INT1_MASK (1<<BMA432_INT1_PIN)
|
||||
#define BMA432_INT2_MASK (1<<BMA432_INT2_PIN)
|
||||
// Max number of WatchStyles
|
||||
#define MaxStyles 1
|
||||
|
||||
// Menu offsets so I don't have to statically entere them everywhere.
|
||||
#define MENU_STEPS 0
|
||||
@ -54,27 +51,28 @@
|
||||
#define MENU_TONES 8
|
||||
#define MENU_TIMEDN 9
|
||||
#define MENU_TIMEUP 10
|
||||
#define MENU_DISP 11
|
||||
#define MENU_BRDR 12
|
||||
#define MENU_SIDE 13
|
||||
#define MENU_SWAP 14
|
||||
#define MENU_ORNT 15
|
||||
#define MENU_MODE 16
|
||||
#define MENU_FEED 17
|
||||
#define MENU_TRBO 18
|
||||
#define MENU_DARK 19
|
||||
#define MENU_SAVE 20
|
||||
#define MENU_TPWR 21
|
||||
#define MENU_INFO 22
|
||||
#define MENU_TRBL 23
|
||||
#define MENU_SYNC 24
|
||||
#define MENU_WIFI 25
|
||||
#define MENU_OTAU 26
|
||||
#define MENU_OTAM 27
|
||||
#define MENU_SCRN 28
|
||||
#define MENU_RSET 29
|
||||
#define MENU_TOFF 30 // Time Diff offset.
|
||||
#define MENU_UNVS 31
|
||||
#define MENU_STYL 11
|
||||
#define MENU_DISP 12
|
||||
#define MENU_BRDR 13
|
||||
#define MENU_SIDE 14
|
||||
#define MENU_SWAP 15
|
||||
#define MENU_ORNT 16
|
||||
#define MENU_MODE 17
|
||||
#define MENU_FEED 18
|
||||
#define MENU_TRBO 19
|
||||
#define MENU_DARK 20
|
||||
#define MENU_SAVE 21
|
||||
#define MENU_TPWR 22
|
||||
#define MENU_INFO 23
|
||||
#define MENU_TRBL 24
|
||||
#define MENU_SYNC 25
|
||||
#define MENU_WIFI 26
|
||||
#define MENU_OTAU 27
|
||||
#define MENU_OTAM 28
|
||||
#define MENU_SCRN 29
|
||||
#define MENU_RSET 30
|
||||
#define MENU_TOFF 31 // Time Diff offset.
|
||||
#define MENU_UNVS 32
|
||||
|
||||
// Menu segments.
|
||||
#define MENU_INNORMAL 0
|
||||
@ -98,11 +96,11 @@
|
||||
#define AlarmSetup 1234567890
|
||||
|
||||
//pins
|
||||
#define RTC_PIN GPIO_NUM_27
|
||||
#define CS 5
|
||||
#define DC 10
|
||||
#define RESET 9
|
||||
//#define BUSY 19
|
||||
#define RTC_INT_PIN GPIO_NUM_27
|
||||
#define EPD_CS 5
|
||||
#define EPD_DC 10
|
||||
#define EPD_RESET 9
|
||||
#define EPD_BUSY 19
|
||||
#define VIB_MOTOR_PIN 13
|
||||
#define MENU_BTN_PIN 26
|
||||
#define BACK_BTN_PIN 25
|
||||
|
||||
@ -64,6 +64,7 @@ RTC_DATA_ATTR struct Optional final {
|
||||
uint8_t Performance; // Performance style, "Turbo", "Normal", "Battery Saving"
|
||||
bool NeedsSaving; // NVS code to tell it things have been updated, so save to NVS.
|
||||
bool BedTimeOrientation; // Make Buttons only work while Watch is in normal orientation.
|
||||
uint8_t WatchFaceStyle; // Using the Style values from Defines_GSR.
|
||||
} Options;
|
||||
|
||||
RTC_DATA_ATTR struct Designing final {
|
||||
@ -71,6 +72,7 @@ RTC_DATA_ATTR struct Designing final {
|
||||
byte Top; // MenuTop 72
|
||||
byte Header; // HeaderY 97
|
||||
byte Data; // DataY 138
|
||||
const GFXfont *Font; // Menu Font.
|
||||
} Menu;
|
||||
struct FacePOS {
|
||||
byte Time; // TimeY 56
|
||||
@ -119,6 +121,7 @@ RTC_DATA_ATTR struct TimeData final {
|
||||
int64_t WatchyRTC; // Counts Microseconds from boot.
|
||||
bool DeadRTC; // Set when Drift fails to get a good count less than 30 seconds.
|
||||
uint8_t NextAlarm; // Next index that will need to wake the Watchy from sleep to fire.
|
||||
bool BedTime; // If the hour is within the Bed Time settings.
|
||||
} WatchTime;
|
||||
|
||||
RTC_DATA_ATTR struct Countdown final {
|
||||
@ -180,14 +183,11 @@ RTC_DATA_ATTR struct dispUpdate final {
|
||||
bool Tapped;
|
||||
} Updates;
|
||||
|
||||
#ifndef WATCHY_H
|
||||
RTC_DATA_ATTR BMA423 sensor;
|
||||
#endif
|
||||
|
||||
//WatchyRTC WatchyGSR::SRTC;
|
||||
SmallRTC WatchyGSR::SRTC;
|
||||
SmallNTP WatchyGSR::SNTP;
|
||||
GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> WatchyGSR::display(GxEPD2_154_D67(CS, DC, RESET, BUSY));
|
||||
RTC_DATA_ATTR StableBMA SBMA;
|
||||
GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> WatchyGSR::display(GxEPD2_154_D67(EPD_CS, EPD_DC, EPD_RESET, EPD_BUSY));
|
||||
|
||||
volatile uint8_t Button;
|
||||
|
||||
@ -286,6 +286,7 @@ void WatchyGSR::init(String datetime){
|
||||
UpdateClock();
|
||||
detectBattery();
|
||||
UpdateDisp=Showing();
|
||||
InsertOnMinute();
|
||||
break;
|
||||
case ESP_SLEEP_WAKEUP_EXT1: //button Press
|
||||
RefreshCPU(CPUDEF);
|
||||
@ -298,24 +299,26 @@ void WatchyGSR::init(String datetime){
|
||||
if (Options.SleepMode == 0) Options.SleepMode = 2; // Do this to avoid someone accidentally not setting this before usage.
|
||||
UpdateClock(); // Make sure these are done during times when it won't.
|
||||
Darkness.Woke=true; Updates.Tapped=true; Darkness.Last=millis(); UpdateDisp = true; // Update Screen to new state.
|
||||
}else if (Button == 6){ // Wrist.
|
||||
}else if (Button == 6 && !WatchTime.BedTime){ // Wrist.
|
||||
UpdateClock(); // Make sure these are done during times when it won't.
|
||||
Darkness.Woke=true; Darkness.Last=millis(); UpdateDisp = true; // Do this anyways, always.
|
||||
}
|
||||
}
|
||||
InsertOnMinute();
|
||||
SRTC.resetWake();
|
||||
break;
|
||||
default: //reset
|
||||
SRTC.init();
|
||||
initZeros();
|
||||
setupDefaults();
|
||||
Rebooted=true;
|
||||
Darkness.Woke=true;
|
||||
_bmaConfig();
|
||||
UpdateUTC();
|
||||
if (OkNVS(GName)) B = NVS.getString(GTZ,S);
|
||||
OP.setCurrentPOSIX(S);
|
||||
RetrieveSettings();
|
||||
RefreshCPU(CPUDEF);
|
||||
initWatchFaceStyle();
|
||||
WatchTime.WatchyRTC = esp_timer_get_time() + ((60 - WatchTime.UTC.Second) * 1000000);
|
||||
WatchTime.EPSMS = (millis() + (1000 * (60 - WatchTime.UTC.Second)));
|
||||
UpdateClock();
|
||||
@ -330,7 +333,7 @@ void WatchyGSR::init(String datetime){
|
||||
}
|
||||
|
||||
|
||||
if ((Battery.Last > LowBattery || Button != 0 || Updates.Tapped) && !(Options.SleepStyle == 4 && Darkness.Went && !Updates.Tapped)){
|
||||
if ((Battery.Last > LowBattery || Button != 0 || Updates.Tapped || Darkness.Woke) && !(Options.SleepStyle == 4 && Darkness.Went && !Updates.Tapped)){
|
||||
//Init interrupts.
|
||||
attachInterrupt(digitalPinToInterrupt(MENU_BTN_PIN), std::bind(&WatchyGSR::handleInterrupt,this), HIGH);
|
||||
attachInterrupt(digitalPinToInterrupt(BACK_BTN_PIN), std::bind(&WatchyGSR::handleInterrupt,this), HIGH);
|
||||
@ -340,10 +343,10 @@ void WatchyGSR::init(String datetime){
|
||||
|
||||
// Sometimes BMA crashes - simply try to reinitialize bma...
|
||||
|
||||
if (sensor.getErrorCode() != 0) {
|
||||
sensor.shutDown();
|
||||
sensor.wakeUp();
|
||||
sensor.softReset();
|
||||
if (SBMA.getErrorCode() != 0) {
|
||||
SBMA.shutDown();
|
||||
SBMA.wakeUp();
|
||||
SBMA.softReset();
|
||||
_bmaConfig();
|
||||
}
|
||||
|
||||
@ -364,10 +367,10 @@ void WatchyGSR::init(String datetime){
|
||||
while (ActiveMode == true) { // Here, we hijack the init and LOOP until the NTP is done, watching for the proper time when we *SHOULD* update the screen to keep time with everything.
|
||||
Since=millis();
|
||||
ManageTime(); // Handle Time method.
|
||||
Up=IsUp();
|
||||
Up=SBMA.IsUp();
|
||||
// Wrist Tilt delay, keep screen on during this until you put your wrist down.
|
||||
if (Darkness.Woke && Up) Darkness.Last = millis();
|
||||
if ((Options.SleepStyle == 1 || Options.SleepStyle > 2) && Darkness.Went && Up) { Darkness.Last = millis(); Darkness.Woke = true; UpdateDisp=Showing(); }
|
||||
if ((Options.SleepStyle == 1 || Options.SleepStyle > 2) && Darkness.Went && Up && !WatchTime.BedTime) { Darkness.Last = millis(); Darkness.Woke = true; UpdateDisp=Showing(); }
|
||||
processWiFiRequest(); // Process any WiFi requests.
|
||||
if (!Sensitive){
|
||||
if (currentWiFi() == WL_CONNECTED && NTPData.State == 0 && !OTAUpdate && !WatchyAPOn && !NTPData.TimeTest) InsertWiFi();
|
||||
@ -679,16 +682,12 @@ void WatchyGSR::drawWatchFace(){
|
||||
InsertBitmap();
|
||||
display.setTextColor(ForeColor());
|
||||
|
||||
if (!(OTAUpdate || WatchyAPOn || (Menu.Item == MENU_TOFF && Menu.SubItem == 2))){
|
||||
drawTime();
|
||||
drawDay();
|
||||
drawYear();
|
||||
}
|
||||
if (GuiMode == WATCHON) drawDate();
|
||||
else if (GuiMode == MENUON) drawMenu();
|
||||
drawWatchFaceStyle();
|
||||
|
||||
drawChargeMe();
|
||||
// Show WiFi/AP/TZ/NTP if in progress.
|
||||
drawStatus();
|
||||
if (GuiMode == MENUON) drawMenu();
|
||||
UpdateDisp = false;
|
||||
}
|
||||
|
||||
@ -726,8 +725,7 @@ void WatchyGSR::drawMenu(){
|
||||
uint16_t w, h;
|
||||
String O, S;
|
||||
|
||||
display.setFont(&aAntiCorona12pt7b);
|
||||
//display.fillRect(0, Design.Menu.Top, MenuWidth, MenuHeight, BackColor());
|
||||
display.setFont(Design.Menu.Font);
|
||||
display.drawBitmap(0, Design.Menu.Top, (Menu.Style == MENU_INOPTIONS) ? OptionsMenuBackground : MenuBackground, MenuWidth, MenuHeight, ForeColor(), BackColor());
|
||||
display.setTextColor(Options.LightMode && Menu.Style != MENU_INNORMAL ? GxEPD_WHITE : GxEPD_BLACK);
|
||||
switch (Menu.Item){
|
||||
@ -778,6 +776,9 @@ void WatchyGSR::drawMenu(){
|
||||
case MENU_TIMEUP:
|
||||
O = "Elapsed Timer";
|
||||
break;
|
||||
case MENU_STYL:
|
||||
O = "Watch Style";
|
||||
break;
|
||||
case MENU_DISP:
|
||||
O = "Display Style";
|
||||
break;
|
||||
@ -869,16 +870,16 @@ void WatchyGSR::drawMenu(){
|
||||
break;
|
||||
}
|
||||
}
|
||||
display.getTextBounds(O, 0, Design.Menu.Header, &x1, &y1, &w, &h);
|
||||
display.getTextBounds(O, 0, Design.Menu.Header + Design.Menu.Top, &x1, &y1, &w, &h);
|
||||
w = (196 - w) /2;
|
||||
display.setCursor(w + 2, Design.Menu.Header);
|
||||
display.setCursor(w + 2, Design.Menu.Header + Design.Menu.Top);
|
||||
display.print(O);
|
||||
display.setTextColor(GxEPD_BLACK); // Only show menu in Light mode
|
||||
if (Menu.Item == MENU_STEPS){ //Steps
|
||||
switch (Menu.SubItem){
|
||||
case 0: // Steps.
|
||||
S = ""; if (Steps.Yesterday > 0) S = " (" + MakeSteps(Steps.Yesterday) + ")";
|
||||
O = MakeSteps(sensor.getCounter()) + S;
|
||||
O = MakeSteps(SBMA.getCounter()) + S;
|
||||
break;
|
||||
case 1: // Hour.
|
||||
O="[" + MakeHour(Steps.Hour) + "]:" + MakeMinutes(Steps.Minutes) + MakeTOD(Steps.Hour, true);
|
||||
@ -988,6 +989,15 @@ void WatchyGSR::drawMenu(){
|
||||
}
|
||||
}else if (Menu.Item == MENU_OPTIONS){ // Options Menu
|
||||
O = "MENU to Enter";
|
||||
}else if (Menu.Item == MENU_STYL){ // Switch Watch Style
|
||||
switch (Options.WatchFaceStyle){
|
||||
case 1:
|
||||
O = "Ballsy";
|
||||
break;
|
||||
default:
|
||||
O = "Original";
|
||||
break;
|
||||
}
|
||||
}else if (Menu.Item == MENU_DISP){ // Switch Mode
|
||||
if (Options.LightMode){
|
||||
O = "Light";
|
||||
@ -1152,9 +1162,9 @@ void WatchyGSR::drawMenu(){
|
||||
}
|
||||
|
||||
if (O > ""){
|
||||
display.getTextBounds(O, 0, Design.Menu.Data, &x1, &y1, &w, &h);
|
||||
display.getTextBounds(O, 0, Design.Menu.Data + Design.Menu.Top, &x1, &y1, &w, &h);
|
||||
w = (196 - w) /2;
|
||||
display.setCursor(w + 2, Design.Menu.Data);
|
||||
display.setCursor(w + 2, Design.Menu.Data + Design.Menu.Top);
|
||||
display.print(O);
|
||||
}
|
||||
}
|
||||
@ -1192,12 +1202,13 @@ void WatchyGSR::drawData(String dData, byte Left, byte Bottom, WatchyGSR::DesOps
|
||||
|
||||
void WatchyGSR::deepSleep(){
|
||||
uint8_t I, N, D;
|
||||
bool BatOk = (Battery.Last == 0 || Battery.Last > LowBattery);
|
||||
bool BT = (Options.SleepStyle == 2 && BedTime());
|
||||
bool B = (((Options.SleepStyle == 1 || Options.SleepStyle > 2) || BT) && BatOk);
|
||||
bool DM;
|
||||
bool BatOk, BT,B, DM;
|
||||
UpdateUTC(); UpdateClock();
|
||||
BatOk = (Battery.Last == 0 || Battery.Last > LowBattery);
|
||||
BT = (Options.SleepStyle == 2 && WatchTime.BedTime);
|
||||
B = (((Options.SleepStyle == 1 || Options.SleepStyle > 2) || BT) && BatOk);
|
||||
|
||||
UpdateUTC(); UpdateClock(); UpdateBMA(); GoDark();
|
||||
UpdateBMA(); GoDark();
|
||||
DM = (Darkness.Went && !TimerDown.Active);
|
||||
D = WatchTime.Local.Wday + 1;
|
||||
|
||||
@ -1212,8 +1223,8 @@ void WatchyGSR::deepSleep(){
|
||||
if (Options.NeedsSaving) RecordSettings();
|
||||
DisplaySleep();
|
||||
for(I = 0; I < 40; I++) { pinMode(I, INPUT); }
|
||||
esp_sleep_enable_ext1_wakeup((B ? (BMA432_INT1_MASK | BMA432_INT2_MASK) : 0) | BTN_PIN_MASK, ESP_EXT1_WAKEUP_ANY_HIGH); //enable deep sleep wake on button press ... |ACC_INT_MASK
|
||||
esp_sleep_enable_ext0_wakeup(RTC_PIN, 0); //enable deep sleep wake on RTC interrupt
|
||||
esp_sleep_enable_ext1_wakeup((B ? SBMA.WakeMask() : 0) | BTN_PIN_MASK, ESP_EXT1_WAKEUP_ANY_HIGH); //enable deep sleep wake on button press ... |ACC_INT_MASK
|
||||
esp_sleep_enable_ext0_wakeup(RTC_INT_PIN, 0); //enable deep sleep wake on RTC interrupt
|
||||
if (DM) SRTC.atMinuteWake(N % 60, WatchTime.Local.Hour, D);
|
||||
else SRTC.nextMinuteWake();
|
||||
esp_deep_sleep_start();
|
||||
@ -1453,12 +1464,12 @@ void WatchyGSR::setStatus(String Status){
|
||||
void WatchyGSR::VibeTo(bool Mode){
|
||||
if (Mode != VibeMode){
|
||||
if (Mode){
|
||||
sensor.enableFeature(BMA423_WAKEUP, false);
|
||||
SBMA.enableFeature(BMA423_WAKEUP, false);
|
||||
pinMode(VIB_MOTOR_PIN, OUTPUT);
|
||||
digitalWrite(VIB_MOTOR_PIN, true);
|
||||
}else{
|
||||
digitalWrite(VIB_MOTOR_PIN, false);
|
||||
sensor.enableFeature(BMA423_WAKEUP,(Options.SleepStyle > 2 && BedTime()));
|
||||
SBMA.enableFeature(BMA423_WAKEUP,(Options.SleepStyle == 2 && WatchTime.BedTime) || (Options.SleepStyle > 2));
|
||||
}
|
||||
VibeMode = Mode;
|
||||
}
|
||||
@ -1470,8 +1481,8 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
|
||||
if (Darkness.Went && Options.SleepStyle == 4 && !WatchTime.DeadRTC && !Updates.Tapped) return; // No buttons unless a tapped happened.
|
||||
if (!UpRight()) return; // Don't do buttons if not upright.
|
||||
if (LastButton > 0 && (millis() - LastButton) < KEYPAUSE) return;
|
||||
if (Darkness.Went) { Darkness.Woke=true; Darkness.Last=millis(); UpdateClock(); UpdateDisp=true; return; } // Don't do the button, just exit.
|
||||
if (Pressed < 5 && LastButton > 0 && (millis() - LastButton) < KEYPAUSE) return;
|
||||
if (Darkness.Went) { Darkness.Woke=true; Darkness.Last=millis(); UpdateUTC(); UpdateClock(); UpdateDisp=true; return; } // Don't do the button, just exit.
|
||||
if ((NTPData.TimeTest || OTAUpdate) && (Pressed == 3 || Pressed == 4)) return; // Up/Down don't work in these modes.
|
||||
|
||||
switch (Pressed){
|
||||
@ -1483,7 +1494,7 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
SetTurbo();
|
||||
}else if (GuiMode == MENUON){
|
||||
if (Menu.Item == MENU_OPTIONS && Menu.SubItem == 0){ // Options
|
||||
Menu.Item = MENU_DISP;
|
||||
Menu.Item = MENU_STYL;
|
||||
Menu.Style = MENU_INOPTIONS;
|
||||
DoHaptic = true;
|
||||
UpdateDisp = true; // Quick Update.
|
||||
@ -1496,7 +1507,7 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
SetTurbo();
|
||||
}else if (Menu.Item == MENU_STEPS){ // Steps
|
||||
if (Menu.SubItem == 4){
|
||||
sensor.resetStepCounter();
|
||||
SBMA.resetStepCounter();
|
||||
Menu.SubItem = 0;
|
||||
DoHaptic = true;
|
||||
UpdateDisp = true; // Quick Update.
|
||||
@ -1638,13 +1649,20 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
NTPData.UpdateUTC = true;
|
||||
}
|
||||
GuiMode = WATCHON;
|
||||
Menu.Item = MENU_DISP;
|
||||
Menu.Item = MENU_STYL;
|
||||
Menu.SubItem = 0;
|
||||
DoHaptic = true;
|
||||
UpdateDisp = true; // Quick Update.
|
||||
SetTurbo();
|
||||
AskForWiFi();
|
||||
}
|
||||
}else if (Menu.Item == MENU_STYL){ // Switch Watch Face
|
||||
Options.WatchFaceStyle = roller(Options.WatchFaceStyle + 1,0,MaxStyles);
|
||||
initWatchFaceStyle();
|
||||
Options.NeedsSaving = true;
|
||||
DoHaptic = true;
|
||||
UpdateDisp = true; // Quick Update.
|
||||
SetTurbo();
|
||||
}else if (Menu.Item == MENU_DISP){ // Switch Mode
|
||||
Options.LightMode = !Options.LightMode;
|
||||
Options.NeedsSaving = true;
|
||||
@ -2015,7 +2033,7 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
return;
|
||||
}else{
|
||||
if (Menu.Style == MENU_INOPTIONS){
|
||||
Menu.Item = roller(Menu.Item - 1, MENU_DISP, (NTPData.State > 0 || WatchyAPOn || OTAUpdate || Battery.Last < MinBattery) ? MENU_TRBL : MENU_OTAM);
|
||||
Menu.Item = roller(Menu.Item - 1, MENU_STYL, (NTPData.State > 0 || WatchyAPOn || OTAUpdate || Battery.Last < MinBattery) ? MENU_TRBL : MENU_OTAM);
|
||||
}else if (Menu.Style == MENU_INALARMS){
|
||||
Menu.Item = roller(Menu.Item - 1, MENU_ALARM1, MENU_TONES);
|
||||
}else if (Menu.Style == MENU_INTIMERS){
|
||||
@ -2193,7 +2211,7 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
||||
return;
|
||||
}else{
|
||||
if (Menu.Style == MENU_INOPTIONS){
|
||||
Menu.Item = roller(Menu.Item + 1, MENU_DISP, (NTPData.State > 0 || WatchyAPOn || OTAUpdate || Battery.Last < MinBattery) ? MENU_TRBL : MENU_OTAM);
|
||||
Menu.Item = roller(Menu.Item + 1, MENU_STYL, (NTPData.State > 0 || WatchyAPOn || OTAUpdate || Battery.Last < MinBattery) ? MENU_TRBL : MENU_OTAM);
|
||||
}else if (Menu.Style == MENU_INALARMS){
|
||||
Menu.Item = roller(Menu.Item + 1, MENU_ALARM1, MENU_TONES);
|
||||
}else if (Menu.Style == MENU_INTIMERS){
|
||||
@ -2233,6 +2251,8 @@ void WatchyGSR::UpdateClock(){
|
||||
WatchTime.Local.Day = TM->tm_mday;
|
||||
WatchTime.Local.Month = TM->tm_mon + 1;
|
||||
WatchTime.Local.Year = TM->tm_year;
|
||||
if (Options.SleepEnd > Options.SleepStart) WatchTime.BedTime = (WatchTime.Local.Hour >= Options.SleepStart && WatchTime.Local.Hour < Options.SleepEnd);
|
||||
else WatchTime.BedTime = (WatchTime.Local.Hour >= Options.SleepStart || WatchTime.Local.Hour < Options.SleepEnd);
|
||||
CalculateTones(); monitorSteps(); // Moved here for accuracy during Deep Sleep.
|
||||
}
|
||||
|
||||
@ -2296,109 +2316,33 @@ void WatchyGSR::ManageTime(){
|
||||
|
||||
void WatchyGSR::_bmaConfig() {
|
||||
|
||||
if (sensor.begin(_readRegister, _writeRegister, delay) == false) {
|
||||
if (SBMA.begin(_readRegister, _writeRegister, delay, SRTC.getType()) == false) {
|
||||
//fail to init BMA
|
||||
return;
|
||||
}
|
||||
|
||||
// Accel parameter structure
|
||||
Acfg cfg;
|
||||
/*!
|
||||
Output data rate in Hz, Optional parameters:
|
||||
- BMA4_OUTPUT_DATA_RATE_0_78HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_1_56HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_3_12HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_6_25HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_12_5HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_25HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_50HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_100HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_200HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_400HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_800HZ
|
||||
- BMA4_OUTPUT_DATA_RATE_1600HZ
|
||||
*/
|
||||
cfg.odr = BMA4_OUTPUT_DATA_RATE_100HZ;
|
||||
/*!
|
||||
G-range, Optional parameters:
|
||||
- BMA4_ACCEL_RANGE_2G
|
||||
- BMA4_ACCEL_RANGE_4G
|
||||
- BMA4_ACCEL_RANGE_8G
|
||||
- BMA4_ACCEL_RANGE_16G
|
||||
*/
|
||||
cfg.range = BMA4_ACCEL_RANGE_2G;
|
||||
/*!
|
||||
Bandwidth parameter, determines filter configuration, Optional parameters:
|
||||
- BMA4_ACCEL_OSR4_AVG1
|
||||
- BMA4_ACCEL_OSR2_AVG2
|
||||
- BMA4_ACCEL_NORMAL_AVG4
|
||||
- BMA4_ACCEL_CIC_AVG8
|
||||
- BMA4_ACCEL_RES_AVG16
|
||||
- BMA4_ACCEL_RES_AVG32
|
||||
- BMA4_ACCEL_RES_AVG64
|
||||
- BMA4_ACCEL_RES_AVG128
|
||||
*/
|
||||
cfg.bandwidth = BMA4_ACCEL_NORMAL_AVG4;
|
||||
|
||||
/*! Filter performance mode , Optional parameters:
|
||||
- BMA4_CIC_AVG_MODE
|
||||
- BMA4_CONTINUOUS_MODE
|
||||
*/
|
||||
cfg.perf_mode = BMA4_CONTINUOUS_MODE;
|
||||
|
||||
// Configure the BMA423 accelerometer
|
||||
sensor.setAccelConfig(cfg);
|
||||
|
||||
// Enable BMA423 accelerometer
|
||||
// Warning : Need to use feature, you must first enable the accelerometer
|
||||
sensor.enableAccel();
|
||||
|
||||
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;
|
||||
// The correct trigger interrupt needs to be configured as needed
|
||||
sensor.setINTPinConfig(config, BMA4_INTR1_MAP);
|
||||
|
||||
struct bma423_axes_remap remap_data;
|
||||
remap_data.x_axis = 1;
|
||||
remap_data.x_axis_sign = 1;
|
||||
remap_data.y_axis = 0;
|
||||
remap_data.y_axis_sign = 1;
|
||||
remap_data.z_axis = 2;
|
||||
remap_data.z_axis_sign = 1;
|
||||
|
||||
// Need to raise the wrist function, need to set the correct axis
|
||||
sensor.setRemapAxes(&remap_data);
|
||||
|
||||
if (!SBMA.defaultConfig()) return; // Failed.
|
||||
// Enable BMA423 isStepCounter feature
|
||||
sensor.enableFeature(BMA423_STEP_CNTR, true);
|
||||
// Enable BMA423 isTilt feature
|
||||
//sensor.enableFeature(BMA423_TILT, true);
|
||||
// Enable BMA423 isDoubleClick feature
|
||||
// sensor.enableFeature(BMA423_WAKEUP, true);
|
||||
SBMA.enableFeature(BMA423_STEP_CNTR, true);
|
||||
// Enable isTilt feature
|
||||
//SBMA.enableTiltWake();
|
||||
// Enable isDoubleClick feature
|
||||
// SBMA.enableDoubleClickWake();
|
||||
|
||||
// Reset steps
|
||||
//sensor.resetStepCounter();
|
||||
//SBMA.resetStepCounter();
|
||||
|
||||
// Turn on feature interrupt
|
||||
//sensor.enableStepCountInterrupt();
|
||||
//sensor.enableTiltInterrupt();
|
||||
// It corresponds to isDoubleClick interrupt
|
||||
// sensor.enableWakeupInterrupt();
|
||||
//SBMA.enableStepCountInterrupt();
|
||||
}
|
||||
|
||||
void WatchyGSR::UpdateBMA(){
|
||||
bool BT = (Options.SleepStyle == 2 && BedTime());
|
||||
bool BT = (Options.SleepStyle == 2 && WatchTime.BedTime);
|
||||
bool B = (Options.SleepStyle > 2);
|
||||
bool A = (Options.SleepStyle == 1);
|
||||
|
||||
sensor.enableFeature(BMA423_WAKEUP,B | BT);
|
||||
sensor.enableWakeupInterrupt(B | BT);
|
||||
sensor.enableFeature(BMA423_TILT,A | B);
|
||||
sensor.enableTiltInterrupt(A | B);
|
||||
SBMA.enableDoubleClickWake(B | BT);
|
||||
SBMA.enableTiltWake((A | B) & !WatchTime.BedTime);
|
||||
}
|
||||
|
||||
float WatchyGSR::getBatteryVoltage(){ return ((BatteryRead() - 0.0125) + (BatteryRead() - 0.0125) + (BatteryRead() - 0.0125) + (BatteryRead() - 0.0125)) / 4; }
|
||||
@ -2617,8 +2561,8 @@ String WatchyGSR::getReduce(uint8_t Amount){
|
||||
void WatchyGSR::monitorSteps(){
|
||||
if (Steps.Hour == WatchTime.Local.Hour && Steps.Minutes == WatchTime.Local.Minute){
|
||||
if (!Steps.Reset){
|
||||
Steps.Yesterday=sensor.getCounter();
|
||||
sensor.resetStepCounter();
|
||||
Steps.Yesterday=SBMA.getCounter();
|
||||
SBMA.resetStepCounter();
|
||||
Steps.Reset=true;
|
||||
}
|
||||
}else if (Steps.Reset) Steps.Reset=false;
|
||||
@ -2648,11 +2592,9 @@ uint8_t WatchyGSR::getButtonMaskToID(uint64_t HW){
|
||||
else if (HW & BACK_BTN_MASK) return Options.Lefty ? 3 : getSwapped(2); // Back Button [SW2]
|
||||
else if (HW & UP_BTN_MASK) return Options.Lefty ? getSwapped(2) : 3; // Up Button [SW3]
|
||||
else if (HW & DOWN_BTN_MASK) return Options.Lefty ? getSwapped(1) : 4; // Down Button [SW4]
|
||||
else if ((HW & BMA432_INT1_MASK) || (HW & BMA432_INT2_MASK)) { // Acccelerometer.
|
||||
sensor.getINT();
|
||||
int IRQMask = sensor.getIRQMASK();
|
||||
if (IRQMask & BMA423_WAKEUP_INT) return 5; // Double Tap.
|
||||
else if (IRQMask & BMA423_TILT_INT) return 6; // Wrist Tilt.
|
||||
else if (SBMA.didBMAWakeUp(HW)) { // Acccelerometer.
|
||||
if (SBMA.isDoubleClick()) return 5; // Double Tap.
|
||||
else if (SBMA.isTilt()) return 6; // Wrist Tilt.
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -2857,31 +2799,6 @@ String WatchyGSR::PASStoString(uint8_t Index){
|
||||
void WatchyGSR::initZeros(){
|
||||
String S = "";
|
||||
uint8_t I;
|
||||
Design.Menu.Top = 72;
|
||||
Design.Menu.Header = 97;
|
||||
Design.Menu.Data = 138;
|
||||
Design.Face.Time = 56;
|
||||
Design.Face.TimeHeight = 45;
|
||||
Design.Face.TimeColor = GxEPD_BLACK;
|
||||
Design.Face.TimeFont = &aAntiCorona36pt7b;
|
||||
Design.Face.TimeStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Day = 101;
|
||||
Design.Face.DayColor = GxEPD_BLACK;
|
||||
Design.Face.DayFont = &aAntiCorona16pt7b;
|
||||
Design.Face.DayStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Date = 143;
|
||||
Design.Face.DateColor = GxEPD_BLACK;
|
||||
Design.Face.DateFont = &aAntiCorona15pt7b;
|
||||
Design.Face.DateStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Year = 186;
|
||||
Design.Face.YearLeft = 99;
|
||||
Design.Face.YearColor = GxEPD_BLACK;
|
||||
Design.Face.YearFont = &aAntiCorona16pt7b;
|
||||
Design.Face.YearStyle = WatchyGSR::dCENTER;
|
||||
Design.Status.WIFIx = 5;
|
||||
Design.Status.WIFIy = 193;
|
||||
Design.Status.BATTx = 155;
|
||||
Design.Status.BATTy = 178;
|
||||
GuiMode = WATCHON;
|
||||
VibeMode = 0;
|
||||
WatchyStatus = "";
|
||||
@ -2986,7 +2903,7 @@ String WatchyGSR::GetSettings(){
|
||||
|
||||
// Retrieve the settings from the current state into a base64 string.
|
||||
|
||||
I[J] = 130; J++; // New Version.
|
||||
I[J] = 131; J++; // New Version.
|
||||
I[J] = (Steps.Hour); J++;
|
||||
I[J] = (Steps.Minutes); J++;
|
||||
K = Options.TwentyFour ? 1 : 0;
|
||||
@ -3012,6 +2929,9 @@ String WatchyGSR::GetSettings(){
|
||||
K = Options.BedTimeOrientation ? 1 : 0;
|
||||
I[J] = (K); J++;
|
||||
// Emd Version 130.
|
||||
// Version 131.
|
||||
I[J] = Options.WatchFaceStyle; J++;
|
||||
// End Version 131.
|
||||
|
||||
V = (Options.MasterRepeats << 5); I[J] = (Options.Turbo | V); J++;
|
||||
|
||||
@ -3103,6 +3023,9 @@ void WatchyGSR::StoreSettings(String FromUser){
|
||||
J++; if (L > J){ V = constrain(O[J],0,10); GSRWiFi.TransmitPower = RawWiFiTX[V]; }
|
||||
J++; if (L > J){ V = O[J]; Options.BedTimeOrientation = (V & 1) ? true : false; }
|
||||
}
|
||||
if (NewV > 130){
|
||||
J++; if (L > J){ V = constrain(O[J],0,MaxStyles); Options.WatchFaceStyle = V; }
|
||||
}
|
||||
}
|
||||
if (WatchTime.DeadRTC) Options.Feedback = false;
|
||||
J++; if (L > J){
|
||||
@ -3215,25 +3138,15 @@ void WatchyGSR::SetTurbo(){
|
||||
|
||||
bool WatchyGSR::InTurbo() { return (!WatchTime.DeadRTC && Options.Turbo > 0 && TurboTime != 0 && millis() - TurboTime < (Options.Turbo * 1000)); }
|
||||
|
||||
bool WatchyGSR::BedTime() {
|
||||
if (Options.SleepEnd > Options.SleepStart) return (WatchTime.Local.Hour >= Options.SleepStart && WatchTime.Local.Hour < Options.SleepEnd);
|
||||
return (WatchTime.Local.Hour >= Options.SleepStart || WatchTime.Local.Hour < Options.SleepEnd);
|
||||
}
|
||||
|
||||
bool WatchyGSR::UpRight() {
|
||||
if (Options.Orientated || (BedTime() && Options.BedTimeOrientation)) return IsUp();
|
||||
if (Options.Orientated || (WatchTime.BedTime && Options.BedTimeOrientation)) return SBMA.IsUp();
|
||||
return true; // Fake it til you make it.
|
||||
}
|
||||
|
||||
bool WatchyGSR::IsUp() {
|
||||
uint8_t Direction = sensor.getDirection();
|
||||
return (Direction == DIRECTION_DISP_UP || Direction == DIRECTION_BOTTOM_EDGE); // Return whether or not it is up.
|
||||
}
|
||||
|
||||
bool WatchyGSR::DarkWait(){
|
||||
bool B = ((Options.SleepStyle > 0 || WatchTime.DeadRTC) && Darkness.Last != 0 && (millis() - Darkness.Last) < (Options.SleepMode * 1000));
|
||||
if (Options.SleepStyle == 2){
|
||||
if (!BedTime()) return false;
|
||||
if (!WatchTime.BedTime) return false;
|
||||
return B;
|
||||
}else if (Options.SleepStyle > 0 || WatchTime.DeadRTC) return B;
|
||||
return false;
|
||||
@ -3286,3 +3199,126 @@ void WatchyGSR::DisplayInit(bool ForceDark){
|
||||
}
|
||||
|
||||
void WatchyGSR::DisplaySleep(){ if (!Updates.Init) { Updates.Init = true; display.hibernate(); } }
|
||||
|
||||
bool WatchyGSR::SafeToDraw() { return (!(OTAUpdate || WatchyAPOn || (Menu.Item == MENU_TOFF && Menu.SubItem == 2))); }
|
||||
|
||||
void WatchyGSR::getAngle(uint16_t Angle, uint8_t Away, uint8_t &X, uint8_t &Y){
|
||||
uint8_t S = 200 - (Away * 2);
|
||||
float fX, fY, fA;
|
||||
if (Angle > 44 && Angle < 135){ // Right
|
||||
fA = Angle - 45; fA /= 90;
|
||||
fY = Away + (fA * S);
|
||||
fX = 200 - Away;
|
||||
}else if (Angle > 134 && Angle < 225){ // Bottom
|
||||
fA = Angle - 135; fA /= 90;
|
||||
fX = 200 - (Away + (fA * S));
|
||||
fY = 200 - Away;
|
||||
}else if (Angle > 224 && Angle < 315){ // Left.
|
||||
fA = Angle - 225; fA /= 90;
|
||||
fY = 200 - (Away + (fA * S));
|
||||
fX = Away;
|
||||
}else { // Top
|
||||
if (Angle > 314) Angle -= 315;
|
||||
else Angle += 45;
|
||||
fA = Angle; fA /= 90;
|
||||
fX = Away + (fA * S);
|
||||
fY = Away;
|
||||
}
|
||||
X = fX;
|
||||
Y = fY;
|
||||
}
|
||||
|
||||
// Watch Face designs are here.
|
||||
|
||||
void WatchyGSR::initWatchFaceStyle(){
|
||||
switch (Options.WatchFaceStyle){
|
||||
case 1: // Ballsy
|
||||
Design.Menu.Top = 117;
|
||||
Design.Menu.Header = 25;
|
||||
Design.Menu.Data = 66;
|
||||
Design.Menu.Font = &aAntiCorona12pt7b;
|
||||
Design.Face.Time = 56;
|
||||
Design.Face.TimeHeight = 45;
|
||||
Design.Face.TimeColor = GxEPD_BLACK;
|
||||
Design.Face.TimeFont = &aAntiCorona36pt7b;
|
||||
Design.Face.TimeStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Day = 54;
|
||||
Design.Face.DayColor = GxEPD_BLACK;
|
||||
Design.Face.DayFont = &aAntiCorona14pt7b;
|
||||
Design.Face.DayStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Date = 106;
|
||||
Design.Face.DateColor = GxEPD_BLACK;
|
||||
Design.Face.DateFont = &aAntiCorona13pt7b;
|
||||
Design.Face.DateStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Year = 160;
|
||||
Design.Face.YearLeft = 99;
|
||||
Design.Face.YearColor = GxEPD_BLACK;
|
||||
Design.Face.YearFont = &aAntiCorona14pt7b;
|
||||
Design.Face.YearStyle = WatchyGSR::dCENTER;
|
||||
Design.Status.WIFIx = 40;
|
||||
Design.Status.WIFIy = 82;
|
||||
Design.Status.BATTx = 120;
|
||||
Design.Status.BATTy = 66;
|
||||
break;
|
||||
default:
|
||||
Design.Menu.Top = 72;
|
||||
Design.Menu.Header = 25;
|
||||
Design.Menu.Data = 66;
|
||||
Design.Menu.Font = &aAntiCorona12pt7b;
|
||||
Design.Face.Time = 56;
|
||||
Design.Face.TimeHeight = 45;
|
||||
Design.Face.TimeColor = GxEPD_BLACK;
|
||||
Design.Face.TimeFont = &aAntiCorona36pt7b;
|
||||
Design.Face.TimeStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Day = 101;
|
||||
Design.Face.DayColor = GxEPD_BLACK;
|
||||
Design.Face.DayFont = &aAntiCorona16pt7b;
|
||||
Design.Face.DayStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Date = 143;
|
||||
Design.Face.DateColor = GxEPD_BLACK;
|
||||
Design.Face.DateFont = &aAntiCorona15pt7b;
|
||||
Design.Face.DateStyle = WatchyGSR::dCENTER;
|
||||
Design.Face.Year = 186;
|
||||
Design.Face.YearLeft = 99;
|
||||
Design.Face.YearColor = GxEPD_BLACK;
|
||||
Design.Face.YearFont = &aAntiCorona16pt7b;
|
||||
Design.Face.YearStyle = WatchyGSR::dCENTER;
|
||||
Design.Status.WIFIx = 5;
|
||||
Design.Status.WIFIy = 193;
|
||||
Design.Status.BATTx = 155;
|
||||
Design.Status.BATTy = 178;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void WatchyGSR::drawWatchFaceStyle(){
|
||||
uint8_t X, Y;
|
||||
uint16_t A;
|
||||
switch (Options.WatchFaceStyle){
|
||||
case 1: // Ballsy
|
||||
drawDay();
|
||||
drawDate();
|
||||
if (SafeToDraw()){
|
||||
for (A = 0; A < 60; A++){
|
||||
getAngle(A * 6, 5, X, Y);
|
||||
display.fillCircle(X, Y, (A == WatchTime.Local.Minute ? 5 : (A % 5 == 0 ? 3 : 1)), ForeColor());
|
||||
}
|
||||
X = WatchTime.Local.Hour;
|
||||
if (X > 11) X -= 12;
|
||||
A = (X * 30) + (WatchTime.Local.Minute / 2);
|
||||
getAngle(A, 22, X, Y);
|
||||
display.fillCircle(X, Y, 9, ForeColor());
|
||||
if (WatchTime.Local.Hour < 12) display.fillCircle(X, Y, 3, BackColor());
|
||||
}
|
||||
if (GuiMode == WATCHON) drawYear();
|
||||
break;
|
||||
default:
|
||||
if (SafeToDraw()){
|
||||
drawTime();
|
||||
drawDay();
|
||||
drawYear();
|
||||
}
|
||||
if (GuiMode == WATCHON) drawDate();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,23 +20,25 @@
|
||||
#include "GxEPD2_BW.h"
|
||||
#include <mbedtls/base64.h>
|
||||
#include <Wire.h>
|
||||
#include <bma.h>
|
||||
#include <StableBMA.h>
|
||||
|
||||
#include "Icons_GSR.h"
|
||||
#include "ArduinoNvs.h"
|
||||
|
||||
#include "aAntiCorona15pt7b.h"
|
||||
#include "Bronova_Regular13pt7b.h"
|
||||
#include "aAntiCorona12pt7b.h"
|
||||
#include "aAntiCorona13pt7b.h"
|
||||
#include "aAntiCorona14pt7b.h"
|
||||
#include "aAntiCorona15pt7b.h"
|
||||
#include "aAntiCorona16pt7b.h"
|
||||
#include "aAntiCorona36pt7b.h"
|
||||
#include "aAntiCorona12pt7b.h"
|
||||
|
||||
class WatchyGSR{
|
||||
public:
|
||||
static SmallRTC SRTC;
|
||||
static SmallNTP SNTP;
|
||||
static GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display;
|
||||
static constexpr const char* Build = "1.4";
|
||||
static constexpr const char* Build = "1.4.1";
|
||||
enum DesOps {dSTATIC, dLEFT, dRIGHT, dCENTER};
|
||||
public:
|
||||
WatchyGSR();
|
||||
@ -70,6 +72,10 @@ class WatchyGSR{
|
||||
virtual void AskForWiFi() final;
|
||||
virtual wl_status_t currentWiFi() final;
|
||||
virtual void endWiFi() final;
|
||||
virtual void getAngle(uint16_t Angle, uint8_t Away, uint8_t &X, uint8_t &Y) final;
|
||||
virtual bool SafeToDraw() final;
|
||||
void initWatchFaceStyle();
|
||||
void drawWatchFaceStyle();
|
||||
private:
|
||||
void setStatus(String Status);
|
||||
void drawMenu();
|
||||
@ -122,7 +128,6 @@ class WatchyGSR{
|
||||
bool InTurbo();
|
||||
bool BedTime();
|
||||
bool UpRight();
|
||||
bool IsUp();
|
||||
bool DarkWait();
|
||||
bool Showing();
|
||||
void RefreshCPU();
|
||||
@ -131,6 +136,5 @@ class WatchyGSR{
|
||||
void DisplayInit(bool ForceDark = false);
|
||||
void DisplaySleep();
|
||||
};
|
||||
|
||||
extern RTC_DATA_ATTR BMA423 sensor;
|
||||
extern RTC_DATA_ATTR StableBMA SBMA;
|
||||
#endif
|
||||
|
||||
305
src/aAntiCorona13pt7b.h
Normal file
305
src/aAntiCorona13pt7b.h
Normal file
@ -0,0 +1,305 @@
|
||||
const uint8_t aAntiCorona13pt7bBitmaps[] PROGMEM = {
|
||||
0x00, 0x6E, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEC, 0x00, 0x6F, 0xF6, 0x63,
|
||||
0xE7, 0xE7, 0xE7, 0xE7, 0xC6, 0x46, 0x01, 0x8C, 0x07, 0x38, 0x1C, 0x70,
|
||||
0x39, 0xC0, 0x73, 0x87, 0xFF, 0xDF, 0xFF, 0xBF, 0xFE, 0x1C, 0x60, 0x39,
|
||||
0xC1, 0xFF, 0xF7, 0xFF, 0xEF, 0xFF, 0x8E, 0x30, 0x1C, 0xE0, 0x39, 0xC0,
|
||||
0xE3, 0x00, 0x86, 0x00, 0x03, 0x00, 0x7E, 0x07, 0xFC, 0x7F, 0xE7, 0xFF,
|
||||
0x3B, 0xB1, 0xFC, 0x0F, 0xE0, 0x3F, 0xE1, 0xFF, 0x83, 0xFE, 0x0F, 0xF0,
|
||||
0x73, 0x93, 0x9D, 0xFF, 0xDF, 0xFE, 0x7F, 0xE0, 0xFC, 0x01, 0x80, 0x1E,
|
||||
0x03, 0x00, 0x7F, 0x06, 0x01, 0xFE, 0x1C, 0x03, 0x9E, 0x78, 0x0E, 0x1C,
|
||||
0xE0, 0x1C, 0x3B, 0x80, 0x38, 0x77, 0x00, 0x70, 0xFC, 0x78, 0xF3, 0xBB,
|
||||
0xF8, 0xFF, 0xEF, 0xF9, 0xFD, 0xDC, 0x78, 0xF7, 0x70, 0x70, 0x0E, 0xE0,
|
||||
0xE0, 0x39, 0xC1, 0xC0, 0x73, 0xC3, 0x81, 0xC7, 0x8E, 0x03, 0x87, 0xFC,
|
||||
0x0E, 0x07, 0xF0, 0x18, 0x07, 0x80, 0x0F, 0x80, 0x7F, 0x03, 0xFE, 0x1C,
|
||||
0x78, 0x70, 0xE1, 0xC3, 0x87, 0x9C, 0x1F, 0xF0, 0x3F, 0x80, 0xFC, 0x07,
|
||||
0xFB, 0x1F, 0xFC, 0xE7, 0xF3, 0x8F, 0xCE, 0x1F, 0xBC, 0x3F, 0xFF, 0xFD,
|
||||
0xFF, 0x61, 0xF8, 0x00, 0x7F, 0xFF, 0x90, 0x06, 0x1E, 0x1E, 0x38, 0x70,
|
||||
0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0,
|
||||
0xF0, 0x70, 0x78, 0x7C, 0x3E, 0x1E, 0x0E, 0x70, 0x78, 0x7C, 0x3E, 0x1E,
|
||||
0x0E, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06,
|
||||
0x0E, 0x0E, 0x0C, 0x1C, 0x78, 0x78, 0x60, 0x06, 0x00, 0xE0, 0x7E, 0x0F,
|
||||
0xFF, 0xFF, 0xF7, 0xFE, 0x1F, 0x03, 0xF8, 0x77, 0x86, 0x38, 0x03, 0x00,
|
||||
0x06, 0x01, 0xC0, 0x38, 0x07, 0x07, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x0E,
|
||||
0x01, 0xC0, 0x30, 0x00, 0xEF, 0xF7, 0x6C, 0x7F, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x6F, 0xF6, 0x01, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x1C, 0x1C,
|
||||
0x0E, 0x07, 0x07, 0x03, 0x83, 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x30, 0x00,
|
||||
0x03, 0xC0, 0x1F, 0xE0, 0x7F, 0xE1, 0xC3, 0xE7, 0x03, 0xCE, 0x03, 0xD8,
|
||||
0x07, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7F, 0x00,
|
||||
0xDE, 0x03, 0x9E, 0x07, 0x3E, 0x1C, 0x3F, 0xF0, 0x3F, 0xC0, 0x1E, 0x00,
|
||||
0x19, 0xDF, 0xFF, 0xDC, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCC,
|
||||
0x1F, 0x83, 0xFE, 0x3F, 0xF8, 0x83, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xC0,
|
||||
0x1E, 0x00, 0xE0, 0x0F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x0F, 0x00, 0xF0,
|
||||
0x0F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFC, 0x3E, 0x0F, 0xF3, 0xFE, 0x23,
|
||||
0xE0, 0x3C, 0x03, 0x80, 0x70, 0x1C, 0x1F, 0x87, 0xF8, 0xFF, 0x01, 0xF0,
|
||||
0x1E, 0x01, 0xC0, 0x3B, 0x0E, 0xFF, 0xDF, 0xF1, 0xF8, 0x00, 0x00, 0xC0,
|
||||
0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x73, 0x0E, 0x71, 0xC7, 0x1C, 0x73,
|
||||
0x87, 0x78, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x70, 0x07, 0x00, 0x70,
|
||||
0x07, 0x00, 0x60, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x70, 0x07, 0x00,
|
||||
0x7F, 0x07, 0xFC, 0x7F, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07,
|
||||
0x00, 0x66, 0x0E, 0xFF, 0xCF, 0xF8, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x07,
|
||||
0xFC, 0x71, 0xC7, 0x06, 0x38, 0x03, 0x9F, 0x1F, 0xFC, 0xFF, 0xF7, 0xC7,
|
||||
0xFC, 0x1F, 0xE0, 0x7F, 0x03, 0xF8, 0x1D, 0xE1, 0xCF, 0xFE, 0x3F, 0xE0,
|
||||
0xFE, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0xE0, 0x1C,
|
||||
0x01, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, 0xE0,
|
||||
0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x18, 0x00, 0x0F, 0x81, 0xFC, 0x3F,
|
||||
0xE7, 0x1E, 0x70, 0xE7, 0x0E, 0x78, 0xE7, 0xFC, 0x3F, 0xC3, 0xFE, 0x7F,
|
||||
0xF7, 0x1F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x06, 0x7F, 0xE7, 0xFC, 0x1F,
|
||||
0x00, 0x0F, 0x80, 0x7F, 0x83, 0xFF, 0x1F, 0xFC, 0x70, 0xFB, 0x81, 0xEE,
|
||||
0x07, 0xB8, 0x0E, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x8F, 0xFE, 0x1F, 0x38,
|
||||
0x00, 0xE3, 0x07, 0x1E, 0x3C, 0x7F, 0xE0, 0xFF, 0x01, 0xF0, 0x00, 0x6F,
|
||||
0xF6, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, 0x00, 0x0E, 0xFF,
|
||||
0x76, 0xC0, 0x00, 0x1C, 0x01, 0xF0, 0x3F, 0x83, 0xFC, 0x7F, 0x83, 0xF8,
|
||||
0x0F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF0, 0x0F, 0xC0, 0x0E, 0x7F,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xC0,
|
||||
0x70, 0x03, 0xF0, 0x0F, 0xF8, 0x1F, 0xF8, 0x1F, 0xFC, 0x0F, 0xF0, 0x1F,
|
||||
0xC1, 0xFE, 0x3F, 0xC1, 0xFC, 0x0F, 0x80, 0x38, 0x00, 0x3F, 0x8F, 0xFC,
|
||||
0xFF, 0xEC, 0x1F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xE0, 0x3C,
|
||||
0x07, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x1E, 0x01, 0xE0,
|
||||
0x0C, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x81, 0xFF, 0xF0, 0xF0, 0x7E, 0x38,
|
||||
0x0F, 0x9C, 0x3D, 0xF6, 0x3F, 0x3F, 0x8F, 0xC7, 0xE7, 0x71, 0xF9, 0xDC,
|
||||
0x7E, 0x7F, 0x1F, 0x9F, 0xC7, 0xF3, 0xF9, 0x9E, 0xFF, 0xE7, 0xC7, 0xF0,
|
||||
0xF8, 0xF8, 0x1F, 0xE0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x01, 0x80, 0x07,
|
||||
0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xB8, 0x07, 0x78,
|
||||
0x0E, 0xF0, 0x38, 0xE0, 0x71, 0xE0, 0xFF, 0xC3, 0xFF, 0xC7, 0xFF, 0x9C,
|
||||
0x07, 0x38, 0x0F, 0x70, 0x1F, 0xC0, 0x1D, 0x80, 0x30, 0x7F, 0x87, 0xFE,
|
||||
0x3F, 0xF9, 0xC3, 0xEE, 0x0F, 0x70, 0x7B, 0x81, 0xDC, 0x1C, 0xFF, 0xE7,
|
||||
0xFF, 0xBF, 0xFD, 0xC1, 0xFE, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x0E, 0xFF,
|
||||
0xE7, 0xFE, 0x3F, 0xC0, 0x01, 0xF8, 0x0F, 0xFC, 0x7F, 0xF9, 0xE0, 0xE3,
|
||||
0x80, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80,
|
||||
0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1F, 0x00, 0x1F, 0x07, 0x3F, 0xFE,
|
||||
0x1F, 0xF8, 0x0F, 0xC0, 0x7F, 0x81, 0xFF, 0xC3, 0xFF, 0xE7, 0x07, 0xEE,
|
||||
0x07, 0xDC, 0x07, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x1F, 0x80,
|
||||
0x3F, 0x00, 0x7E, 0x00, 0xDC, 0x03, 0xB8, 0x0E, 0x78, 0x38, 0xFF, 0xE1,
|
||||
0xFF, 0x83, 0xFC, 0x00, 0x7F, 0xF7, 0xFF, 0xBF, 0xF9, 0xC0, 0x0E, 0x00,
|
||||
0x70, 0x03, 0x80, 0x1C, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xC0, 0x0E,
|
||||
0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7F,
|
||||
0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xFE, 0x3F, 0x8F,
|
||||
0xC3, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0C, 0x00, 0x01,
|
||||
0xF8, 0x0F, 0xFC, 0x3F, 0xF8, 0xE0, 0xF3, 0x80, 0x0E, 0x00, 0x18, 0x00,
|
||||
0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0x87, 0xFF, 0x0F, 0xFF,
|
||||
0x01, 0xDF, 0x03, 0x9F, 0x07, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, 0xF0, 0x60,
|
||||
0x0F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8,
|
||||
0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E,
|
||||
0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7C, 0x01, 0x80, 0x7F, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x0E,
|
||||
0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01,
|
||||
0xC0, 0x33, 0x0E, 0xFF, 0x9F, 0xE1, 0xF0, 0x00, 0x60, 0x33, 0x81, 0xCE,
|
||||
0x0F, 0x38, 0x78, 0xE3, 0xC3, 0xBE, 0x0F, 0xE0, 0x3F, 0x00, 0xF8, 0x03,
|
||||
0xE0, 0x0F, 0xC0, 0x3F, 0xC0, 0xFF, 0x83, 0xBF, 0x0E, 0x7F, 0x38, 0x7E,
|
||||
0xE0, 0xFB, 0x81, 0xEC, 0x03, 0x80, 0x60, 0x38, 0x0E, 0x03, 0x80, 0xE0,
|
||||
0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E,
|
||||
0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFC, 0x60, 0x07, 0xE0, 0x1F, 0xC0, 0x3F,
|
||||
0x80, 0xFF, 0x81, 0xFF, 0x07, 0xFF, 0x0F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC,
|
||||
0xFF, 0xFB, 0xBF, 0x7F, 0x7E, 0xFC, 0xFC, 0xF9, 0xF9, 0xF3, 0xF3, 0xC7,
|
||||
0xE3, 0x0F, 0xC0, 0x1F, 0x00, 0x30, 0x60, 0x0F, 0xC0, 0x7F, 0x81, 0xFF,
|
||||
0x07, 0xFC, 0x1F, 0xF8, 0x7F, 0xF1, 0xFF, 0xE7, 0xEF, 0xDF, 0x9F, 0x7E,
|
||||
0x3F, 0xF8, 0x7F, 0xE0, 0xFF, 0x83, 0xFE, 0x07, 0xF8, 0x0F, 0xE0, 0x1F,
|
||||
0x80, 0x7C, 0x01, 0x80, 0x01, 0xF8, 0x01, 0xFF, 0x81, 0xFF, 0xF0, 0xF0,
|
||||
0x7E, 0x38, 0x0F, 0x9C, 0x01, 0xF6, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01,
|
||||
0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x01, 0x9E, 0x00, 0xE7,
|
||||
0xC0, 0x70, 0xF8, 0x3C, 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x7F,
|
||||
0xC7, 0xFF, 0x3F, 0xFD, 0xC1, 0xFE, 0x07, 0xF0, 0x1F, 0x80, 0xFC, 0x0E,
|
||||
0xFF, 0xE7, 0xFE, 0x3F, 0xE1, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C,
|
||||
0x00, 0xE0, 0x07, 0x00, 0x30, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x81, 0xFF,
|
||||
0xF0, 0xF0, 0x7E, 0x38, 0x0F, 0x9C, 0x01, 0xF6, 0x00, 0x3F, 0x80, 0x07,
|
||||
0xE0, 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x01, 0x9E,
|
||||
0x00, 0xE7, 0xC0, 0x70, 0xF8, 0x3C, 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x7E,
|
||||
0x00, 0x7F, 0x83, 0xFF, 0x8F, 0xFF, 0x38, 0x3E, 0xE0, 0x7B, 0x80, 0xEE,
|
||||
0x03, 0xB8, 0x1C, 0xFF, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0xC0, 0xFF, 0x83,
|
||||
0xBF, 0x0E, 0x7F, 0x38, 0xFE, 0xE0, 0xFB, 0x81, 0xEC, 0x03, 0x00, 0x07,
|
||||
0xC0, 0x7F, 0xE3, 0xFF, 0x9C, 0x3E, 0x70, 0x01, 0xC0, 0x07, 0xC0, 0x1F,
|
||||
0xF0, 0x3F, 0xF0, 0xFF, 0xE0, 0xFF, 0xC0, 0x3F, 0x00, 0x3C, 0x00, 0x72,
|
||||
0x01, 0xDE, 0x0E, 0xFF, 0xF9, 0xFF, 0xC1, 0xFC, 0x00, 0x7F, 0xFF, 0xFF,
|
||||
0xFF, 0xFC, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00,
|
||||
0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07,
|
||||
0x00, 0x38, 0x01, 0x80, 0x60, 0x1F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03,
|
||||
0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E,
|
||||
0x03, 0xF8, 0x1F, 0xC0, 0xCF, 0x0E, 0x7F, 0xE1, 0xFE, 0x03, 0xC0, 0x60,
|
||||
0x0F, 0xC0, 0x1F, 0xC0, 0x77, 0x80, 0xE7, 0x01, 0xCF, 0x07, 0x1E, 0x0E,
|
||||
0x1E, 0x38, 0x3C, 0x70, 0x38, 0xE0, 0x7B, 0x80, 0xF7, 0x00, 0xEE, 0x01,
|
||||
0xF8, 0x03, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x0C, 0x00, 0x60,
|
||||
0x00, 0x1F, 0x00, 0x01, 0xFC, 0x0C, 0x0F, 0xE0, 0xE0, 0xE7, 0x07, 0x87,
|
||||
0x38, 0x7C, 0x39, 0xE3, 0xE1, 0x8F, 0x1F, 0x9C, 0x39, 0xFC, 0xE1, 0xEE,
|
||||
0xE7, 0x0F, 0x77, 0xF0, 0x3F, 0x3F, 0x81, 0xF8, 0xFC, 0x0F, 0xC7, 0xC0,
|
||||
0x7C, 0x3E, 0x01, 0xE1, 0xF0, 0x0F, 0x07, 0x80, 0x70, 0x38, 0x01, 0x81,
|
||||
0xC0, 0x60, 0x07, 0xE0, 0x1F, 0xE0, 0x73, 0xC1, 0xE7, 0xC3, 0x87, 0xCE,
|
||||
0x07, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, 0x80, 0x1F, 0x80, 0x7F, 0x00,
|
||||
0xFF, 0x03, 0x9F, 0x0E, 0x1F, 0x3C, 0x1E, 0x70, 0x3F, 0xC0, 0x3F, 0x00,
|
||||
0x30, 0x60, 0x07, 0xE0, 0x1F, 0xE0, 0x73, 0xC1, 0xE7, 0xC3, 0x87, 0xCE,
|
||||
0x07, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00,
|
||||
0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C,
|
||||
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0E,
|
||||
0x00, 0x38, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x01,
|
||||
0xE0, 0x03, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xF0, 0x7F, 0xFF, 0xF7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E,
|
||||
0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1F, 0xFF, 0xFE, 0x60, 0x70,
|
||||
0x3C, 0x1E, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0,
|
||||
0xF0, 0x78, 0x3C, 0x0F, 0x07, 0x81, 0xC0, 0xC0, 0x7F, 0xFF, 0xF8, 0x70,
|
||||
0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
|
||||
0x38, 0x70, 0xEF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x07, 0x80, 0xF8, 0x1F,
|
||||
0xC1, 0xFC, 0x39, 0xE3, 0x9F, 0x70, 0xF6, 0x0F, 0x60, 0x60, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x61, 0xE3, 0xE3, 0xC3, 0xC3, 0xC3, 0x00, 0x1F, 0x87,
|
||||
0xF9, 0xFF, 0xB0, 0xF0, 0x0E, 0x0F, 0xCF, 0xFB, 0xFF, 0x7E, 0xFE, 0x1F,
|
||||
0x83, 0xF8, 0x7F, 0xFE, 0xFF, 0xCF, 0xB0, 0x60, 0x0E, 0x00, 0xE0, 0x0E,
|
||||
0x00, 0xE0, 0x0F, 0xF0, 0xFF, 0xCF, 0xFE, 0xE1, 0xEE, 0x0F, 0xE0, 0xFE,
|
||||
0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xF0, 0xEF, 0xFC, 0xFF, 0x8F,
|
||||
0xE0, 0x07, 0xC1, 0xFE, 0x3F, 0xE7, 0x0C, 0x70, 0x0E, 0x00, 0xE0, 0x0E,
|
||||
0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x07, 0xC6, 0x7F, 0xE3, 0xFE, 0x0F, 0x80,
|
||||
0x00, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x7F, 0x1F, 0xF3, 0xFF,
|
||||
0x70, 0xF6, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xF0, 0x7F, 0x07,
|
||||
0xF8, 0x77, 0xFF, 0x3F, 0xF0, 0xFE, 0x07, 0xC1, 0xFE, 0x3F, 0xF7, 0x87,
|
||||
0x70, 0x7E, 0x0F, 0xE7, 0xEF, 0xFE, 0xFF, 0x8F, 0xF0, 0xF0, 0x07, 0xC3,
|
||||
0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x0F, 0x87, 0xF3, 0xFC, 0xC6, 0x70, 0x1C,
|
||||
0x07, 0x01, 0xF8, 0xFE, 0x3F, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x07, 0x01,
|
||||
0xC0, 0x70, 0x1C, 0x07, 0x01, 0x80, 0x07, 0xF1, 0xFF, 0x3F, 0xF7, 0x0F,
|
||||
0x60, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7F, 0x07, 0xF0, 0x77, 0x87,
|
||||
0x7F, 0xF3, 0xFF, 0x1F, 0xF0, 0x06, 0x30, 0xE7, 0xFC, 0x7F, 0x83, 0xE0,
|
||||
0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x7C, 0xFF, 0xEF, 0xFF,
|
||||
0xF0, 0xFF, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
|
||||
0xE0, 0x7E, 0x07, 0xE0, 0x7C, 0x06, 0x6F, 0xF6, 0x03, 0x77, 0x77, 0x77,
|
||||
0x77, 0x77, 0x77, 0x76, 0x00, 0x60, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x00,
|
||||
0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0,
|
||||
0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC3,
|
||||
0x1C, 0x7F, 0x87, 0xF0, 0x3E, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00,
|
||||
0xE0, 0x0E, 0x0C, 0xE3, 0xCE, 0xFC, 0xFF, 0x0F, 0xC0, 0xF8, 0x0F, 0xC0,
|
||||
0xFE, 0x0F, 0xF0, 0xFF, 0x8E, 0xFC, 0xE7, 0xEE, 0x3F, 0xE0, 0xFC, 0x06,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x6F, 0x1E, 0x7F, 0xFF,
|
||||
0xBF, 0xFF, 0xFE, 0x7C, 0xFE, 0x1C, 0x3F, 0x0E, 0x1F, 0x87, 0x0F, 0xC3,
|
||||
0x87, 0xE1, 0xC3, 0xF0, 0xE1, 0xF8, 0x70, 0xFC, 0x38, 0x7E, 0x1C, 0x3F,
|
||||
0x0E, 0x1F, 0x06, 0x0C, 0x6F, 0x9F, 0xFB, 0xFF, 0xF8, 0xFE, 0x0F, 0xC1,
|
||||
0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF0,
|
||||
0x30, 0x07, 0xC0, 0x7F, 0xC3, 0xFF, 0x9E, 0x3E, 0x70, 0x3F, 0x80, 0xFE,
|
||||
0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0x7F, 0x03, 0x9F, 0x1E, 0x7F, 0xF0,
|
||||
0xFF, 0x80, 0xF8, 0x00, 0x7F, 0x8F, 0xFC, 0xFF, 0xEE, 0x1F, 0xE0, 0xFE,
|
||||
0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x6F, 0x0E, 0xFF, 0xCF,
|
||||
0xF8, 0xFE, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x07, 0xF1,
|
||||
0xFF, 0x3F, 0xF7, 0xFF, 0x70, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7F,
|
||||
0x07, 0xF8, 0x77, 0xFF, 0x7F, 0xF3, 0xFF, 0x0F, 0xF0, 0x07, 0x00, 0x70,
|
||||
0x07, 0x00, 0x70, 0x06, 0x07, 0x8F, 0xFB, 0xFF, 0x78, 0xCE, 0x01, 0xC0,
|
||||
0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x30,
|
||||
0x00, 0x0F, 0x81, 0xFE, 0x3F, 0xE7, 0x1C, 0x78, 0x07, 0xF8, 0x7F, 0xE3,
|
||||
0xFF, 0x1F, 0xF0, 0x3F, 0x00, 0x77, 0x07, 0x7F, 0xE7, 0xFC, 0x1F, 0x00,
|
||||
0x30, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xE7, 0xFC, 0xFF,
|
||||
0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC6, 0x3F, 0xC7,
|
||||
0xF8, 0x3C, 0x00, 0x60, 0x7C, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8,
|
||||
0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF8, 0xFF, 0xFE, 0xFF, 0xCF, 0xB0,
|
||||
0x60, 0x6E, 0x07, 0xF0, 0xEF, 0x0E, 0x71, 0xC7, 0x9C, 0x79, 0xC3, 0xF8,
|
||||
0x3F, 0x83, 0xF8, 0x1F, 0x01, 0xF0, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0x60,
|
||||
0x03, 0xE0, 0x87, 0xF1, 0xC7, 0xF3, 0xC7, 0x73, 0xCE, 0x73, 0xEE, 0x7B,
|
||||
0xEE, 0x7F, 0xFC, 0x3F, 0xFC, 0x3E, 0xFC, 0x3E, 0x7C, 0x1E, 0x78, 0x1E,
|
||||
0x78, 0x1C, 0x38, 0x18, 0x30, 0x60, 0x3F, 0x07, 0xF8, 0xE7, 0x9E, 0x7D,
|
||||
0xC3, 0xF8, 0x1F, 0x00, 0xF0, 0x0F, 0x81, 0xFC, 0x3B, 0xE7, 0x9F, 0xF1,
|
||||
0xFE, 0x0F, 0xC0, 0x60, 0x70, 0x37, 0x07, 0x70, 0x77, 0x8E, 0x78, 0xE3,
|
||||
0x8C, 0x3D, 0xC3, 0xDC, 0x1F, 0x81, 0xF8, 0x1F, 0x80, 0xF0, 0x0F, 0x00,
|
||||
0x60, 0x0E, 0x00, 0xE0, 0x7C, 0x0F, 0xC0, 0xF8, 0x07, 0x00, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0xE0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x80, 0xF0, 0x1E, 0x01,
|
||||
0xC0, 0x3C, 0x07, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x1C, 0x71,
|
||||
0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x71, 0xC3, 0x87, 0x8F, 0x0E, 0x1C, 0x38,
|
||||
0x70, 0xE1, 0xC3, 0xC3, 0xC7, 0x86, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xF8, 0x61, 0xE3, 0xC3, 0xC7, 0x87, 0x0E, 0x1C, 0x38,
|
||||
0x70, 0xF1, 0xE1, 0xC3, 0x8E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x8E, 0x3C,
|
||||
0x70, 0x00, 0x3C, 0x1F, 0xDF, 0xFF, 0xE7, 0xE0, 0x78 };
|
||||
|
||||
const GFXglyph aAntiCorona13pt7bGlyphs[] PROGMEM = {
|
||||
{ 0, 1, 1, 7, 0, 0 }, // 0x20 ' '
|
||||
{ 1, 4, 20, 7, 2, -17 }, // 0x21 '!'
|
||||
{ 11, 8, 7, 12, 2, -17 }, // 0x22 '"'
|
||||
{ 18, 15, 18, 17, 1, -15 }, // 0x23 '#'
|
||||
{ 52, 13, 19, 16, 2, -16 }, // 0x24 '$'
|
||||
{ 83, 23, 19, 24, 1, -16 }, // 0x25 '%'
|
||||
{ 138, 14, 19, 16, 1, -16 }, // 0x26 '&'
|
||||
{ 172, 3, 7, 7, 2, -17 }, // 0x27 '''
|
||||
{ 175, 8, 24, 9, 1, -17 }, // 0x28 '('
|
||||
{ 199, 8, 24, 9, 0, -17 }, // 0x29 ')'
|
||||
{ 223, 12, 11, 14, 1, -18 }, // 0x2A '*'
|
||||
{ 240, 11, 11, 13, 1, -12 }, // 0x2B '+'
|
||||
{ 256, 4, 6, 6, 1, -1 }, // 0x2C ','
|
||||
{ 259, 11, 3, 13, 1, -5 }, // 0x2D '-'
|
||||
{ 264, 4, 4, 8, 2, -1 }, // 0x2E '.'
|
||||
{ 266, 9, 19, 11, 1, -16 }, // 0x2F '/'
|
||||
{ 288, 15, 19, 17, 1, -16 }, // 0x30 '0'
|
||||
{ 324, 5, 19, 8, 1, -16 }, // 0x31 '1'
|
||||
{ 336, 13, 19, 14, 0, -16 }, // 0x32 '2'
|
||||
{ 367, 11, 19, 13, 1, -16 }, // 0x33 '3'
|
||||
{ 394, 12, 19, 13, 0, -16 }, // 0x34 '4'
|
||||
{ 423, 12, 19, 14, 1, -16 }, // 0x35 '5'
|
||||
{ 452, 13, 19, 15, 1, -16 }, // 0x36 '6'
|
||||
{ 483, 12, 19, 12, 0, -16 }, // 0x37 '7'
|
||||
{ 512, 12, 19, 14, 1, -16 }, // 0x38 '8'
|
||||
{ 541, 14, 19, 15, 1, -16 }, // 0x39 '9'
|
||||
{ 575, 4, 13, 8, 2, -10 }, // 0x3A ':'
|
||||
{ 582, 4, 15, 7, 2, -10 }, // 0x3B ';'
|
||||
{ 590, 14, 12, 16, 1, -12 }, // 0x3C '<'
|
||||
{ 611, 11, 9, 14, 1, -11 }, // 0x3D '='
|
||||
{ 624, 14, 12, 16, 1, -12 }, // 0x3E '>'
|
||||
{ 645, 12, 19, 14, 1, -16 }, // 0x3F '?'
|
||||
{ 674, 18, 19, 21, 1, -16 }, // 0x40 '@'
|
||||
{ 717, 15, 19, 15, -1, -16 }, // 0x41 'A'
|
||||
{ 753, 13, 19, 15, 1, -16 }, // 0x42 'B'
|
||||
{ 784, 15, 19, 17, 1, -16 }, // 0x43 'C'
|
||||
{ 820, 15, 19, 17, 1, -16 }, // 0x44 'D'
|
||||
{ 856, 13, 19, 15, 1, -16 }, // 0x45 'E'
|
||||
{ 887, 10, 19, 11, 1, -16 }, // 0x46 'F'
|
||||
{ 911, 15, 19, 17, 1, -16 }, // 0x47 'G'
|
||||
{ 947, 14, 19, 17, 1, -16 }, // 0x48 'H'
|
||||
{ 981, 3, 19, 6, 1, -16 }, // 0x49 'I'
|
||||
{ 989, 11, 19, 11, -1, -16 }, // 0x4A 'J'
|
||||
{ 1016, 14, 19, 15, 1, -16 }, // 0x4B 'K'
|
||||
{ 1050, 10, 19, 11, 1, -16 }, // 0x4C 'L'
|
||||
{ 1074, 15, 19, 18, 1, -16 }, // 0x4D 'M'
|
||||
{ 1110, 14, 19, 17, 1, -16 }, // 0x4E 'N'
|
||||
{ 1144, 18, 19, 20, 1, -16 }, // 0x4F 'O'
|
||||
{ 1187, 13, 19, 15, 1, -16 }, // 0x50 'P'
|
||||
{ 1218, 18, 19, 20, 1, -16 }, // 0x51 'Q'
|
||||
{ 1261, 14, 19, 16, 1, -16 }, // 0x52 'R'
|
||||
{ 1295, 14, 19, 15, 0, -16 }, // 0x53 'S'
|
||||
{ 1329, 13, 19, 15, 1, -16 }, // 0x54 'T'
|
||||
{ 1360, 13, 19, 15, 1, -16 }, // 0x55 'U'
|
||||
{ 1391, 15, 19, 15, 0, -16 }, // 0x56 'V'
|
||||
{ 1427, 21, 19, 22, 1, -16 }, // 0x57 'W'
|
||||
{ 1477, 15, 19, 17, 1, -16 }, // 0x58 'X'
|
||||
{ 1513, 15, 19, 17, 1, -16 }, // 0x59 'Y'
|
||||
{ 1549, 15, 19, 17, 1, -16 }, // 0x5A 'Z'
|
||||
{ 1585, 7, 24, 8, 1, -17 }, // 0x5B '['
|
||||
{ 1606, 9, 19, 11, 1, -16 }, // 0x5C '\'
|
||||
{ 1628, 7, 24, 9, 0, -17 }, // 0x5D ']'
|
||||
{ 1649, 12, 11, 13, 0, -17 }, // 0x5E '^'
|
||||
{ 1666, 11, 3, 13, 1, 2 }, // 0x5F '_'
|
||||
{ 1671, 7, 7, 8, 1, -16 }, // 0x60 '`'
|
||||
{ 1678, 11, 15, 13, 1, -12 }, // 0x61 'a'
|
||||
{ 1699, 12, 20, 14, 1, -17 }, // 0x62 'b'
|
||||
{ 1729, 12, 15, 13, 1, -12 }, // 0x63 'c'
|
||||
{ 1752, 12, 20, 14, 1, -17 }, // 0x64 'd'
|
||||
{ 1782, 12, 15, 14, 1, -12 }, // 0x65 'e'
|
||||
{ 1805, 10, 20, 10, 1, -17 }, // 0x66 'f'
|
||||
{ 1830, 12, 20, 14, 1, -12 }, // 0x67 'g'
|
||||
{ 1860, 12, 20, 14, 1, -17 }, // 0x68 'h'
|
||||
{ 1890, 4, 20, 6, 1, -17 }, // 0x69 'i'
|
||||
{ 1900, 12, 25, 6, -7, -17 }, // 0x6A 'j'
|
||||
{ 1938, 12, 20, 14, 1, -17 }, // 0x6B 'k'
|
||||
{ 1968, 3, 20, 5, 1, -17 }, // 0x6C 'l'
|
||||
{ 1976, 17, 15, 19, 1, -12 }, // 0x6D 'm'
|
||||
{ 2008, 11, 15, 13, 1, -12 }, // 0x6E 'n'
|
||||
{ 2029, 14, 15, 16, 1, -12 }, // 0x6F 'o'
|
||||
{ 2056, 12, 20, 14, 1, -12 }, // 0x70 'p'
|
||||
{ 2086, 12, 20, 15, 1, -12 }, // 0x71 'q'
|
||||
{ 2116, 11, 15, 12, 1, -12 }, // 0x72 'r'
|
||||
{ 2137, 12, 15, 13, 0, -12 }, // 0x73 's'
|
||||
{ 2160, 11, 19, 12, 1, -16 }, // 0x74 't'
|
||||
{ 2187, 11, 15, 13, 1, -12 }, // 0x75 'u'
|
||||
{ 2208, 12, 15, 13, 1, -12 }, // 0x76 'v'
|
||||
{ 2231, 16, 15, 18, 1, -12 }, // 0x77 'w'
|
||||
{ 2261, 12, 15, 14, 1, -12 }, // 0x78 'x'
|
||||
{ 2284, 12, 20, 14, 1, -12 }, // 0x79 'y'
|
||||
{ 2314, 12, 15, 14, 1, -12 }, // 0x7A 'z'
|
||||
{ 2337, 7, 24, 8, 0, -17 }, // 0x7B '{'
|
||||
{ 2358, 3, 26, 7, 2, -17 }, // 0x7C '|'
|
||||
{ 2368, 7, 25, 8, 1, -17 }, // 0x7D '}'
|
||||
{ 2390, 11, 5, 14, 2, -8 } }; // 0x7E '~'
|
||||
|
||||
const GFXfont aAntiCorona13pt7b PROGMEM = {
|
||||
(uint8_t *)aAntiCorona13pt7bBitmaps,
|
||||
(GFXglyph *)aAntiCorona13pt7bGlyphs,
|
||||
0x20, 0x7E, 28 };
|
||||
|
||||
// Approx. 3069 bytes
|
||||
337
src/aAntiCorona14pt7b.h
Normal file
337
src/aAntiCorona14pt7b.h
Normal file
@ -0,0 +1,337 @@
|
||||
const uint8_t aAntiCorona14pt7bBitmaps[] PROGMEM = {
|
||||
0x00, 0x6E, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEC, 0x00, 0x0F, 0xFF,
|
||||
0x63, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x42, 0x00, 0x00, 0x00, 0xE7, 0x00,
|
||||
0x73, 0x80, 0x71, 0xC0, 0x39, 0xC0, 0x1C, 0xE0, 0x7F, 0xFE, 0x7F, 0xFF,
|
||||
0x3F, 0xFF, 0x07, 0x18, 0x03, 0x9C, 0x01, 0xCE, 0x07, 0xFF, 0xE7, 0xFF,
|
||||
0xF3, 0xFF, 0xF0, 0x71, 0x80, 0x39, 0xC0, 0x38, 0xE0, 0x1C, 0x60, 0x0C,
|
||||
0x30, 0x00, 0x01, 0x80, 0x1F, 0x01, 0xFF, 0x0F, 0xFE, 0x3F, 0xF9, 0xCF,
|
||||
0xC7, 0xB8, 0x1F, 0xE0, 0x7F, 0xC0, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x03,
|
||||
0xFC, 0x0E, 0xF0, 0x39, 0xDE, 0xE7, 0x7F, 0xF9, 0xFF, 0xE7, 0xFF, 0x03,
|
||||
0xF0, 0x03, 0x00, 0x0F, 0x01, 0x80, 0x3F, 0x83, 0x80, 0x7F, 0xC3, 0x80,
|
||||
0x71, 0xE7, 0x80, 0xE1, 0xE7, 0x00, 0xE0, 0xE7, 0x00, 0xE0, 0xEE, 0x00,
|
||||
0xE0, 0xEE, 0x00, 0xF0, 0xFC, 0x78, 0xF9, 0xDD, 0xFC, 0x7F, 0xFB, 0xFE,
|
||||
0x3F, 0xBB, 0x8F, 0x1E, 0x77, 0x0F, 0x00, 0x77, 0x07, 0x00, 0xE7, 0x07,
|
||||
0x00, 0xE7, 0x07, 0x01, 0xC7, 0x87, 0x01, 0xC7, 0xCE, 0x03, 0x83, 0xFE,
|
||||
0x03, 0x81, 0xFC, 0x03, 0x00, 0xF0, 0x07, 0x80, 0x1F, 0x80, 0x7F, 0x80,
|
||||
0xCF, 0x03, 0x8E, 0x07, 0x1C, 0x0F, 0x38, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F,
|
||||
0x00, 0xFC, 0x03, 0xFC, 0xC7, 0xFF, 0x9E, 0xFF, 0x38, 0xFE, 0x70, 0xFC,
|
||||
0xF0, 0xFF, 0xF0, 0xFD, 0xFF, 0xF3, 0xFE, 0x01, 0xF0, 0x00, 0x7F, 0xFF,
|
||||
0xD0, 0x07, 0x07, 0x87, 0xC7, 0x03, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70,
|
||||
0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x1C, 0x0F, 0x07,
|
||||
0x81, 0xE0, 0xFC, 0x3E, 0x0F, 0x00, 0x70, 0xF8, 0xFC, 0x3C, 0x1E, 0x1E,
|
||||
0x0E, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06,
|
||||
0x0E, 0x0E, 0x0C, 0x1C, 0x78, 0xF0, 0xE0, 0x03, 0x00, 0x70, 0x07, 0x07,
|
||||
0x70, 0xFF, 0xFF, 0xFF, 0x7F, 0xE1, 0xFC, 0x1F, 0xC3, 0xFC, 0x79, 0xC7,
|
||||
0x18, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0,
|
||||
0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x77, 0xBC, 0xE7, 0x31, 0x00,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0xFF, 0xF0, 0x01, 0x80, 0x70, 0x38, 0x0E,
|
||||
0x07, 0x81, 0xC0, 0x70, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x0E,
|
||||
0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xC0, 0x00, 0x03, 0xE0,
|
||||
0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x7C, 0x30, 0x1E, 0x70, 0x1E, 0x60, 0x0F,
|
||||
0xE0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07,
|
||||
0xF0, 0x07, 0xF0, 0x06, 0x78, 0x0E, 0x78, 0x0C, 0x3E, 0x3C, 0x3F, 0xF8,
|
||||
0x1F, 0xF0, 0x07, 0xC0, 0x0C, 0x73, 0xDF, 0x7D, 0xF1, 0xC7, 0x1C, 0x71,
|
||||
0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x18, 0x3F, 0x07, 0xFE, 0x3F,
|
||||
0xF9, 0x83, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x0F,
|
||||
0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03,
|
||||
0xC0, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0x03, 0xFC, 0x1F, 0xF0,
|
||||
0xC7, 0xC0, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0xFE, 0x0F,
|
||||
0xF8, 0x7F, 0xE0, 0x1F, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x00, 0x3B, 0x83,
|
||||
0xBF, 0xF9, 0xFF, 0x87, 0xF0, 0x00, 0x00, 0x60, 0x07, 0x00, 0x38, 0x03,
|
||||
0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x60, 0xE7, 0x0E, 0x38, 0xF1, 0xC7, 0x0E,
|
||||
0x78, 0x77, 0x83, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x01, 0xC0,
|
||||
0x0E, 0x00, 0x70, 0x03, 0x00, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x70,
|
||||
0x07, 0x00, 0x70, 0x07, 0x00, 0x7F, 0x07, 0xFC, 0x7F, 0xE0, 0x1F, 0x00,
|
||||
0xF0, 0x07, 0x00, 0x70, 0x07, 0x00, 0x66, 0x0E, 0xFF, 0xCF, 0xF8, 0x7E,
|
||||
0x00, 0x03, 0xC0, 0x3F, 0xC1, 0xFF, 0x8E, 0x3E, 0x38, 0x71, 0xC0, 0x07,
|
||||
0x00, 0x3D, 0xF8, 0xEF, 0xF3, 0xFF, 0xEF, 0x87, 0xBC, 0x0F, 0xF0, 0x1F,
|
||||
0xC0, 0x7F, 0x81, 0xDE, 0x07, 0x7C, 0x39, 0xFF, 0xE3, 0xFF, 0x07, 0xF8,
|
||||
0x0F, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xE0, 0x0F, 0x00, 0x70,
|
||||
0x03, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03,
|
||||
0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, 0x80,
|
||||
0x00, 0x0F, 0x80, 0xFE, 0x0F, 0xF8, 0x63, 0xC7, 0x0E, 0x38, 0x71, 0xE3,
|
||||
0x8F, 0x9C, 0x7F, 0xE1, 0xFF, 0x0F, 0xFC, 0xFF, 0xF7, 0x1F, 0xF0, 0x3F,
|
||||
0x80, 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0x9F, 0xF8, 0x7F, 0x81, 0xF8, 0x00,
|
||||
0x07, 0xC0, 0x3F, 0xC0, 0xFF, 0xC3, 0xFF, 0xC7, 0x0F, 0x9C, 0x0F, 0xB8,
|
||||
0x0F, 0x70, 0x1E, 0xE0, 0x3D, 0xE0, 0x7B, 0xE1, 0xF3, 0xFF, 0xE3, 0xFF,
|
||||
0xC1, 0xF3, 0x80, 0x0F, 0x00, 0x1C, 0x38, 0x38, 0xF8, 0xE1, 0xFF, 0x81,
|
||||
0xFE, 0x00, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0xFF,
|
||||
0xF0, 0x00, 0x00, 0x06, 0xFF, 0x76, 0x6C, 0x00, 0x06, 0x00, 0x3E, 0x00,
|
||||
0xFE, 0x07, 0xFC, 0x3F, 0xE0, 0x7F, 0x80, 0xFE, 0x00, 0xFF, 0xC0, 0x7F,
|
||||
0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x00, 0x7E, 0x00, 0x1C, 0x7F, 0xFF, 0xFF,
|
||||
0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x70,
|
||||
0x00, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFC, 0x03, 0xFE, 0x00,
|
||||
0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x3F, 0xC0, 0xFF, 0x00, 0xF8, 0x00, 0xE0,
|
||||
0x00, 0x3F, 0x0F, 0xFC, 0xFF, 0xEC, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x70,
|
||||
0x07, 0x00, 0xF0, 0x0E, 0x01, 0xC0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00,
|
||||
0xE0, 0x0C, 0x00, 0x00, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x00, 0xFC, 0x00,
|
||||
0x7F, 0xF0, 0x0F, 0xFF, 0x81, 0xE0, 0xFC, 0x38, 0x03, 0xE3, 0x00, 0x1E,
|
||||
0x70, 0x79, 0xF6, 0x0F, 0xCF, 0xE1, 0xFC, 0xFE, 0x3B, 0xC7, 0xE3, 0xBC,
|
||||
0x7E, 0x3F, 0xC7, 0xE3, 0xFC, 0x7F, 0x3F, 0xC6, 0xF1, 0xFC, 0xE7, 0x9F,
|
||||
0xFC, 0x7C, 0x1F, 0x83, 0xF0, 0xF0, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x01,
|
||||
0xE0, 0x00, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0,
|
||||
0x07, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x0F, 0xF8, 0x0E, 0x78, 0x1E, 0x78,
|
||||
0x1E, 0x7C, 0x1C, 0x3C, 0x3F, 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x70, 0x1E,
|
||||
0x70, 0x0F, 0x70, 0x0F, 0xE0, 0x0F, 0xE0, 0x06, 0x7F, 0x83, 0xFF, 0x8F,
|
||||
0xFF, 0x38, 0x7C, 0xE0, 0xFB, 0x81, 0xEE, 0x07, 0xB8, 0x1E, 0xE0, 0xF3,
|
||||
0xFF, 0xCF, 0xFF, 0x3F, 0xFE, 0xE0, 0xFF, 0x80, 0xFE, 0x01, 0xF8, 0x07,
|
||||
0xE0, 0x1B, 0xC0, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF, 0x80, 0x01, 0xFC, 0x07,
|
||||
0xFF, 0x0F, 0xFF, 0x1E, 0x1F, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60,
|
||||
0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xF0,
|
||||
0x00, 0xF0, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x07, 0x1F, 0xFF, 0x0F,
|
||||
0xFE, 0x03, 0xF0, 0x7F, 0xC0, 0xFF, 0xF0, 0xFF, 0xF8, 0xE0, 0xFC, 0xE0,
|
||||
0x3E, 0xE0, 0x1E, 0xE0, 0x1F, 0xE0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0,
|
||||
0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x06, 0xE0, 0x0E, 0xE0, 0x0C, 0xE0,
|
||||
0x1C, 0xF0, 0x78, 0xFF, 0xF0, 0xFF, 0xE0, 0xFF, 0x00, 0x7F, 0xF3, 0xFF,
|
||||
0xCF, 0xFF, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0,
|
||||
0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38,
|
||||
0x00, 0xE0, 0x03, 0x80, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1F, 0xC3,
|
||||
0xF8, 0x7E, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80,
|
||||
0x70, 0x0C, 0x00, 0x00, 0xFC, 0x07, 0xFF, 0x0F, 0xFF, 0x1E, 0x0F, 0x38,
|
||||
0x02, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0,
|
||||
0x00, 0xE0, 0x3F, 0xE0, 0x7F, 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C,
|
||||
0x07, 0x3F, 0x07, 0x1F, 0xFF, 0x0F, 0xFF, 0x03, 0xF6, 0x60, 0x0F, 0x80,
|
||||
0x7E, 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xE0,
|
||||
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8,
|
||||
0x07, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x07, 0xC0, 0x18, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x30, 0x07, 0x00, 0x70, 0x07,
|
||||
0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07,
|
||||
0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE7, 0x0C, 0x7F, 0xC7, 0xF8,
|
||||
0x3E, 0x00, 0x60, 0x19, 0xC0, 0x73, 0x81, 0xE7, 0x07, 0x8E, 0x3E, 0x1C,
|
||||
0xF8, 0x3B, 0xE0, 0x7F, 0x00, 0xFC, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xF0,
|
||||
0x0F, 0xF0, 0x1F, 0xF0, 0x3B, 0xF0, 0x73, 0xF8, 0xE3, 0xF9, 0xC3, 0xFB,
|
||||
0x81, 0xFF, 0x01, 0xEC, 0x01, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x0E,
|
||||
0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01,
|
||||
0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xFF, 0xFC, 0x60,
|
||||
0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xF8, 0x0F, 0xF8, 0x0F, 0xF8, 0x1F, 0xFC,
|
||||
0x1F, 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFF, 0x77, 0xEF,
|
||||
0xF7, 0xEF, 0xE7, 0xE7, 0xE7, 0xE7, 0xC7, 0xE7, 0xC7, 0xE3, 0xC7, 0xE3,
|
||||
0x87, 0xE0, 0x07, 0xC0, 0x06, 0x60, 0x0F, 0xC0, 0x7F, 0x81, 0xFE, 0x07,
|
||||
0xFC, 0x1F, 0xF8, 0x7F, 0xE1, 0xFF, 0xC7, 0xEF, 0x9F, 0xBF, 0x7E, 0x7D,
|
||||
0xF8, 0xFF, 0xE1, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80,
|
||||
0xFE, 0x01, 0xF8, 0x07, 0xC0, 0x18, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x0F,
|
||||
0xFF, 0x81, 0xE0, 0xFC, 0x38, 0x03, 0xE3, 0x00, 0x1E, 0x70, 0x01, 0xF6,
|
||||
0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07,
|
||||
0xE0, 0x00, 0x7F, 0x00, 0x06, 0xF0, 0x00, 0xE7, 0x80, 0x0C, 0x7C, 0x01,
|
||||
0xC3, 0xF0, 0x78, 0x1F, 0xFF, 0x00, 0xFF, 0xE0, 0x03, 0xF0, 0x00, 0x7F,
|
||||
0xC3, 0xFF, 0xCF, 0xFF, 0xB8, 0x3E, 0xE0, 0x3F, 0x80, 0xFE, 0x01, 0xF8,
|
||||
0x07, 0xE0, 0x1B, 0x81, 0xEF, 0xFF, 0x3F, 0xF8, 0xFF, 0x83, 0x80, 0x0E,
|
||||
0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xC0, 0x00,
|
||||
0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x0F, 0xFF, 0x81, 0xE0, 0xFC, 0x38, 0x03,
|
||||
0xE3, 0x00, 0x1E, 0x70, 0x01, 0xF6, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00,
|
||||
0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0x00, 0x06, 0xF0,
|
||||
0x00, 0xE7, 0x80, 0x0C, 0x7C, 0x01, 0xC3, 0xF0, 0x78, 0x1F, 0xFF, 0x00,
|
||||
0xFF, 0xE0, 0x03, 0xF0, 0x00, 0x7F, 0xC1, 0xFF, 0xE3, 0xFF, 0xE7, 0x07,
|
||||
0xEE, 0x03, 0xDC, 0x03, 0xB8, 0x07, 0x70, 0x1E, 0xFF, 0xF9, 0xFF, 0xE3,
|
||||
0xFF, 0x87, 0xFE, 0x0F, 0xF0, 0x1F, 0xF8, 0x3B, 0xF8, 0x73, 0xF8, 0xE3,
|
||||
0xF9, 0xC3, 0xFB, 0x81, 0xF7, 0x01, 0xEC, 0x01, 0x80, 0x07, 0xE0, 0x3F,
|
||||
0xF0, 0xFF, 0xF1, 0x83, 0xE7, 0x01, 0x8E, 0x00, 0x1E, 0x00, 0x3F, 0x80,
|
||||
0x7F, 0xF0, 0x7F, 0xF0, 0xFF, 0xF0, 0x7F, 0xF0, 0x1F, 0xE0, 0x07, 0xC0,
|
||||
0x07, 0x80, 0x07, 0x30, 0x0C, 0xF8, 0x39, 0xFF, 0xE3, 0xFF, 0x81, 0xFC,
|
||||
0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0xC0, 0x07, 0x00, 0x1C, 0x00,
|
||||
0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00,
|
||||
0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0,
|
||||
0x06, 0x00, 0x60, 0x1F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F,
|
||||
0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0,
|
||||
0x1F, 0x80, 0xFE, 0x06, 0xF0, 0x73, 0xC3, 0x1F, 0xF8, 0x7F, 0x80, 0xF0,
|
||||
0x00, 0x60, 0x07, 0xF0, 0x07, 0xF0, 0x0E, 0xF0, 0x0E, 0x78, 0x0E, 0x78,
|
||||
0x1C, 0x78, 0x1C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, 0x38, 0x1E, 0x78, 0x1E,
|
||||
0x70, 0x1F, 0x70, 0x0F, 0xE0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07,
|
||||
0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x60, 0x00, 0x0D, 0xC0, 0x00,
|
||||
0x3F, 0xC0, 0x60, 0x77, 0x81, 0xC0, 0xEF, 0x03, 0x81, 0xCF, 0x0F, 0x87,
|
||||
0x1E, 0x1F, 0x0E, 0x3C, 0x3E, 0x1C, 0x38, 0xFE, 0x78, 0x79, 0xFC, 0xE0,
|
||||
0xF3, 0xF9, 0xC1, 0xEE, 0x7B, 0x81, 0xFC, 0xFE, 0x03, 0xF9, 0xFC, 0x07,
|
||||
0xF1, 0xF8, 0x07, 0xC3, 0xF0, 0x0F, 0x87, 0xC0, 0x1F, 0x07, 0x80, 0x3C,
|
||||
0x0F, 0x00, 0x38, 0x1C, 0x00, 0x60, 0x18, 0x00, 0x60, 0x03, 0xF0, 0x07,
|
||||
0xF8, 0x0F, 0xFC, 0x1E, 0x7C, 0x1C, 0x3E, 0x38, 0x1F, 0x78, 0x1F, 0xF0,
|
||||
0x0F, 0xE0, 0x07, 0xC0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, 0xF8,
|
||||
0x1E, 0xFC, 0x1C, 0x7C, 0x38, 0x3E, 0x78, 0x1F, 0xF0, 0x1F, 0xE0, 0x0F,
|
||||
0xC0, 0x06, 0x60, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xF8, 0x1E, 0x7C, 0x3C,
|
||||
0x3E, 0x78, 0x3E, 0x70, 0x1F, 0xE0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0x80,
|
||||
0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80,
|
||||
0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x00, 0x7F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0,
|
||||
0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00,
|
||||
0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x7F, 0xFF, 0xF7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87,
|
||||
0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x3F, 0xFF, 0xFC,
|
||||
0x60, 0x3C, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x0F,
|
||||
0x01, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x81, 0xE0, 0x3C,
|
||||
0x0E, 0x03, 0x00, 0x7F, 0xFF, 0xF8, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C,
|
||||
0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xDF, 0xFF,
|
||||
0xFC, 0x02, 0x00, 0x70, 0x0F, 0x00, 0xF8, 0x1F, 0x83, 0xFC, 0x3B, 0xE7,
|
||||
0x3E, 0x71, 0xFE, 0x0F, 0xE0, 0xFC, 0x06, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0,
|
||||
0x00, 0xE3, 0xC7, 0xC7, 0xC7, 0xC7, 0x82, 0x0F, 0x83, 0xFE, 0x7F, 0xE7,
|
||||
0x0F, 0x00, 0xF0, 0x3F, 0x1F, 0xF3, 0xFF, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E,
|
||||
0x07, 0xF0, 0x7F, 0xFF, 0x7F, 0xF1, 0xF6, 0x60, 0x07, 0x00, 0x38, 0x01,
|
||||
0xC0, 0x0E, 0x00, 0x70, 0x03, 0xFE, 0x1F, 0xF8, 0xFF, 0xE7, 0x0F, 0xB8,
|
||||
0x3F, 0xC0, 0xFE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x37, 0x03,
|
||||
0xBC, 0x39, 0xFF, 0x8F, 0xF8, 0x7F, 0x80, 0x03, 0xE0, 0x7F, 0x87, 0xFC,
|
||||
0x70, 0xC7, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C,
|
||||
0x01, 0xF0, 0x07, 0xC3, 0x1F, 0xF8, 0x7F, 0xC1, 0xF8, 0x00, 0x30, 0x07,
|
||||
0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x07, 0xF1, 0xFF, 0x3F, 0xF3, 0x0F,
|
||||
0x70, 0x76, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xF0, 0x7F, 0x07,
|
||||
0x7C, 0x77, 0xFF, 0x3F, 0xF0, 0xFE, 0x03, 0xE0, 0x7F, 0x87, 0xFE, 0x70,
|
||||
0xF7, 0x03, 0xB0, 0x1F, 0x87, 0xDF, 0xFE, 0xFF, 0xE7, 0xFE, 0x3F, 0x81,
|
||||
0xF0, 0x07, 0xC3, 0x9F, 0xFC, 0x7F, 0xC1, 0xF8, 0x07, 0x83, 0xFC, 0x7F,
|
||||
0x9C, 0xE3, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x1F, 0xE3, 0xF8, 0x38,
|
||||
0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07,
|
||||
0x00, 0xC0, 0x00, 0x07, 0xF1, 0xFF, 0x3F, 0xF3, 0x0F, 0x70, 0x76, 0x07,
|
||||
0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0x7C, 0x77, 0xFF,
|
||||
0x3F, 0xF0, 0xFF, 0x00, 0x60, 0x0E, 0x30, 0xC7, 0xFC, 0x7F, 0x83, 0xE0,
|
||||
0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE7, 0x8F, 0xFE,
|
||||
0xFF, 0xEF, 0x8F, 0xF0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
|
||||
0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7C, 0x06, 0xEF, 0xF0, 0x00,
|
||||
0x37, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x76, 0x00, 0xE0, 0x0F, 0x00,
|
||||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00,
|
||||
0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00,
|
||||
0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x70, 0xCF, 0xFC, 0xFF,
|
||||
0x87, 0xE0, 0x60, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x03,
|
||||
0x83, 0x1C, 0x78, 0xEF, 0xC7, 0xFC, 0x3F, 0x81, 0xF0, 0x0F, 0x80, 0x7E,
|
||||
0x03, 0xF8, 0x1F, 0xF0, 0xFF, 0xC7, 0x3F, 0x38, 0xFD, 0xC3, 0xFE, 0x0F,
|
||||
0x60, 0x30, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x6F,
|
||||
0x8F, 0x9F, 0xFF, 0xFB, 0xFF, 0xFF, 0x78, 0xF8, 0xFF, 0x0F, 0x0F, 0xC1,
|
||||
0xC1, 0xF8, 0x38, 0x3F, 0x07, 0x07, 0xE0, 0xE0, 0xFC, 0x1C, 0x1F, 0x83,
|
||||
0x83, 0xF0, 0x70, 0x7E, 0x0E, 0x0F, 0xC1, 0xC1, 0xF8, 0x38, 0x3E, 0x06,
|
||||
0x06, 0x67, 0x8F, 0xFE, 0xFF, 0xEF, 0x0F, 0xF0, 0x7E, 0x07, 0xE0, 0x7E,
|
||||
0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7C,
|
||||
0x06, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xC3, 0xE7, 0x03, 0xEC, 0x03,
|
||||
0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x37, 0xC0, 0xE7,
|
||||
0xC3, 0x87, 0xFE, 0x07, 0xF8, 0x07, 0xC0, 0x7F, 0x0F, 0xFC, 0xFF, 0xEE,
|
||||
0x3E, 0xE0, 0xFE, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x6E,
|
||||
0x0E, 0xF0, 0xCF, 0xFC, 0xFF, 0x8F, 0xE0, 0xE0, 0x0E, 0x00, 0xE0, 0x0E,
|
||||
0x00, 0xE0, 0x0C, 0x00, 0x03, 0xF8, 0x7F, 0xCF, 0xFE, 0x7F, 0xF7, 0x07,
|
||||
0xB0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x81, 0xFC, 0x0F, 0xF8, 0x77,
|
||||
0xFF, 0x9F, 0xFC, 0xFF, 0xE1, 0xFF, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00,
|
||||
0x70, 0x03, 0x80, 0x18, 0x07, 0xC7, 0xFE, 0xFF, 0xEF, 0x0C, 0xF0, 0x0E,
|
||||
0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E,
|
||||
0x00, 0xE0, 0x0C, 0x00, 0x0F, 0xC1, 0xFF, 0x3F, 0xF7, 0x1E, 0x78, 0x07,
|
||||
0xF0, 0x7F, 0xC7, 0xFE, 0x3F, 0xF0, 0xFF, 0x01, 0xF0, 0x07, 0x78, 0x67,
|
||||
0xFE, 0x7F, 0xC3, 0xF0, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07,
|
||||
0x00, 0x70, 0x07, 0xFC, 0xFF, 0xCF, 0xF8, 0x70, 0x07, 0x00, 0x70, 0x07,
|
||||
0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0xC6, 0x3F, 0xE1, 0xFE, 0x0F, 0x80,
|
||||
0x60, 0x3E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07,
|
||||
0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, 0xF7, 0xFF, 0x7F, 0xF1, 0xF6,
|
||||
0x60, 0x3F, 0x07, 0xF0, 0x7F, 0x07, 0x78, 0xE7, 0x8E, 0x79, 0xE3, 0xDC,
|
||||
0x3D, 0xC3, 0xF8, 0x1F, 0x81, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x60,
|
||||
0x60, 0x01, 0xF8, 0x21, 0xFC, 0x30, 0xFE, 0x3C, 0x77, 0x1E, 0x7B, 0xDF,
|
||||
0x39, 0xEF, 0xDC, 0xF7, 0xEE, 0x3F, 0xFE, 0x1F, 0xBF, 0x0F, 0xDF, 0x87,
|
||||
0xEF, 0xC1, 0xE3, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x18, 0x30, 0x60, 0x3F,
|
||||
0x07, 0xF8, 0xFF, 0x8E, 0x7D, 0xC3, 0xF8, 0x3F, 0x81, 0xF0, 0x0F, 0x81,
|
||||
0xFC, 0x1F, 0xC3, 0xBE, 0x71, 0xFF, 0x1F, 0xE0, 0xFC, 0x06, 0x30, 0x1B,
|
||||
0x81, 0xFC, 0x1E, 0xF0, 0xE7, 0x87, 0x3E, 0x70, 0xF3, 0x87, 0x9C, 0x1F,
|
||||
0xC0, 0xFE, 0x07, 0xF0, 0x1F, 0x00, 0xF8, 0x07, 0x80, 0x1C, 0x00, 0xE0,
|
||||
0x0E, 0x00, 0x70, 0x1F, 0x81, 0xF8, 0x0F, 0xC0, 0x3C, 0x00, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01,
|
||||
0xE0, 0x3C, 0x03, 0xC0, 0x78, 0x0F, 0xFF, 0xFF, 0xFF, 0xFE, 0x06, 0x0E,
|
||||
0x1E, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x70, 0x70, 0x78,
|
||||
0x78, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x3C, 0x3E, 0x1F, 0x1E, 0x0E,
|
||||
0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x61,
|
||||
0xE3, 0xC7, 0xC7, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xE3, 0xE3, 0xC7,
|
||||
0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x38, 0xF1, 0xC0, 0x00, 0x3E,
|
||||
0x37, 0xF7, 0xFF, 0xFE, 0xFE, 0xC7, 0xC0, 0x10 };
|
||||
|
||||
const GFXglyph aAntiCorona14pt7bGlyphs[] PROGMEM = {
|
||||
{ 0, 1, 1, 7, 0, 0 }, // 0x20 ' '
|
||||
{ 1, 4, 22, 7, 2, -19 }, // 0x21 '!'
|
||||
{ 12, 8, 7, 13, 2, -19 }, // 0x22 '"'
|
||||
{ 19, 17, 20, 19, 1, -17 }, // 0x23 '#'
|
||||
{ 62, 14, 21, 17, 2, -18 }, // 0x24 '$'
|
||||
{ 99, 24, 21, 25, 1, -18 }, // 0x25 '%'
|
||||
{ 162, 15, 21, 17, 1, -18 }, // 0x26 '&'
|
||||
{ 202, 3, 7, 7, 2, -19 }, // 0x27 '''
|
||||
{ 205, 9, 25, 10, 1, -19 }, // 0x28 '('
|
||||
{ 234, 8, 25, 10, 1, -19 }, // 0x29 ')'
|
||||
{ 259, 12, 12, 14, 1, -19 }, // 0x2A '*'
|
||||
{ 277, 12, 12, 14, 1, -13 }, // 0x2B '+'
|
||||
{ 295, 5, 7, 8, 2, -2 }, // 0x2C ','
|
||||
{ 300, 12, 3, 14, 1, -5 }, // 0x2D '-'
|
||||
{ 305, 4, 3, 8, 2, 0 }, // 0x2E '.'
|
||||
{ 307, 10, 21, 12, 1, -18 }, // 0x2F '/'
|
||||
{ 334, 16, 21, 18, 1, -18 }, // 0x30 '0'
|
||||
{ 376, 6, 21, 8, 0, -18 }, // 0x31 '1'
|
||||
{ 392, 13, 21, 15, 1, -18 }, // 0x32 '2'
|
||||
{ 427, 13, 21, 15, 1, -18 }, // 0x33 '3'
|
||||
{ 462, 13, 21, 14, 0, -18 }, // 0x34 '4'
|
||||
{ 497, 12, 21, 14, 1, -18 }, // 0x35 '5'
|
||||
{ 529, 14, 21, 16, 1, -18 }, // 0x36 '6'
|
||||
{ 566, 13, 21, 13, 0, -18 }, // 0x37 '7'
|
||||
{ 601, 13, 21, 15, 1, -18 }, // 0x38 '8'
|
||||
{ 636, 15, 21, 16, 1, -18 }, // 0x39 '9'
|
||||
{ 676, 4, 13, 8, 2, -10 }, // 0x3A ':'
|
||||
{ 683, 4, 16, 8, 2, -11 }, // 0x3B ';'
|
||||
{ 691, 16, 13, 17, 1, -13 }, // 0x3C '<'
|
||||
{ 717, 12, 9, 15, 1, -11 }, // 0x3D '='
|
||||
{ 731, 16, 13, 17, 1, -13 }, // 0x3E '>'
|
||||
{ 757, 12, 21, 14, 1, -18 }, // 0x3F '?'
|
||||
{ 789, 20, 21, 23, 1, -18 }, // 0x40 '@'
|
||||
{ 842, 16, 21, 16, -1, -18 }, // 0x41 'A'
|
||||
{ 884, 14, 21, 17, 2, -18 }, // 0x42 'B'
|
||||
{ 921, 16, 21, 18, 1, -18 }, // 0x43 'C'
|
||||
{ 963, 16, 21, 19, 2, -18 }, // 0x44 'D'
|
||||
{ 1005, 14, 21, 16, 2, -18 }, // 0x45 'E'
|
||||
{ 1042, 11, 21, 13, 2, -18 }, // 0x46 'F'
|
||||
{ 1071, 16, 21, 19, 1, -18 }, // 0x47 'G'
|
||||
{ 1113, 14, 21, 18, 2, -18 }, // 0x48 'H'
|
||||
{ 1150, 3, 21, 7, 2, -18 }, // 0x49 'I'
|
||||
{ 1158, 12, 21, 12, -1, -18 }, // 0x4A 'J'
|
||||
{ 1190, 15, 21, 17, 2, -18 }, // 0x4B 'K'
|
||||
{ 1230, 11, 21, 13, 2, -18 }, // 0x4C 'L'
|
||||
{ 1259, 16, 21, 20, 2, -18 }, // 0x4D 'M'
|
||||
{ 1301, 14, 21, 18, 2, -18 }, // 0x4E 'N'
|
||||
{ 1338, 20, 21, 22, 1, -18 }, // 0x4F 'O'
|
||||
{ 1391, 14, 21, 17, 2, -18 }, // 0x50 'P'
|
||||
{ 1428, 20, 21, 22, 1, -18 }, // 0x51 'Q'
|
||||
{ 1481, 15, 21, 18, 2, -18 }, // 0x52 'R'
|
||||
{ 1521, 15, 21, 16, 0, -18 }, // 0x53 'S'
|
||||
{ 1561, 14, 21, 16, 1, -18 }, // 0x54 'T'
|
||||
{ 1598, 13, 21, 15, 1, -18 }, // 0x55 'U'
|
||||
{ 1633, 16, 21, 17, 0, -18 }, // 0x56 'V'
|
||||
{ 1675, 23, 21, 24, 1, -18 }, // 0x57 'W'
|
||||
{ 1736, 16, 21, 18, 1, -18 }, // 0x58 'X'
|
||||
{ 1778, 16, 21, 18, 1, -18 }, // 0x59 'Y'
|
||||
{ 1820, 16, 21, 18, 1, -18 }, // 0x5A 'Z'
|
||||
{ 1862, 7, 25, 10, 2, -19 }, // 0x5B '['
|
||||
{ 1884, 10, 21, 12, 1, -18 }, // 0x5C '\'
|
||||
{ 1911, 7, 25, 9, 0, -19 }, // 0x5D ']'
|
||||
{ 1933, 12, 12, 13, 1, -19 }, // 0x5E '^'
|
||||
{ 1951, 12, 3, 15, 2, 2 }, // 0x5F '_'
|
||||
{ 1956, 7, 8, 9, 1, -17 }, // 0x60 '`'
|
||||
{ 1963, 12, 16, 14, 1, -13 }, // 0x61 'a'
|
||||
{ 1987, 13, 22, 16, 2, -19 }, // 0x62 'b'
|
||||
{ 2023, 13, 16, 14, 1, -13 }, // 0x63 'c'
|
||||
{ 2049, 12, 22, 14, 1, -19 }, // 0x64 'd'
|
||||
{ 2082, 13, 16, 15, 1, -13 }, // 0x65 'e'
|
||||
{ 2108, 11, 22, 11, 1, -19 }, // 0x66 'f'
|
||||
{ 2139, 12, 22, 15, 1, -13 }, // 0x67 'g'
|
||||
{ 2172, 12, 22, 15, 2, -19 }, // 0x68 'h'
|
||||
{ 2205, 4, 22, 6, 1, -19 }, // 0x69 'i'
|
||||
{ 2216, 12, 28, 6, -7, -19 }, // 0x6A 'j'
|
||||
{ 2258, 13, 22, 15, 2, -19 }, // 0x6B 'k'
|
||||
{ 2294, 3, 22, 6, 2, -19 }, // 0x6C 'l'
|
||||
{ 2303, 19, 16, 21, 1, -13 }, // 0x6D 'm'
|
||||
{ 2341, 12, 16, 14, 1, -13 }, // 0x6E 'n'
|
||||
{ 2365, 15, 16, 17, 1, -13 }, // 0x6F 'o'
|
||||
{ 2395, 12, 22, 14, 1, -13 }, // 0x70 'p'
|
||||
{ 2428, 13, 22, 16, 1, -13 }, // 0x71 'q'
|
||||
{ 2464, 12, 16, 13, 1, -13 }, // 0x72 'r'
|
||||
{ 2488, 12, 16, 13, 0, -13 }, // 0x73 's'
|
||||
{ 2512, 12, 21, 13, 1, -18 }, // 0x74 't'
|
||||
{ 2544, 12, 16, 14, 1, -13 }, // 0x75 'u'
|
||||
{ 2568, 12, 16, 14, 1, -13 }, // 0x76 'v'
|
||||
{ 2592, 17, 16, 19, 1, -13 }, // 0x77 'w'
|
||||
{ 2626, 12, 16, 14, 1, -13 }, // 0x78 'x'
|
||||
{ 2650, 13, 22, 14, 1, -13 }, // 0x79 'y'
|
||||
{ 2686, 12, 16, 14, 1, -13 }, // 0x7A 'z'
|
||||
{ 2710, 8, 26, 8, 0, -19 }, // 0x7B '{'
|
||||
{ 2736, 3, 28, 7, 2, -19 }, // 0x7C '|'
|
||||
{ 2747, 7, 27, 9, 1, -19 }, // 0x7D '}'
|
||||
{ 2771, 12, 6, 15, 2, -8 } }; // 0x7E '~'
|
||||
|
||||
const GFXfont aAntiCorona14pt7b PROGMEM = {
|
||||
(uint8_t *)aAntiCorona14pt7bBitmaps,
|
||||
(GFXglyph *)aAntiCorona14pt7bGlyphs,
|
||||
0x20, 0x7E, 30 };
|
||||
|
||||
// Approx. 3452 bytes
|
||||
Loading…
x
Reference in New Issue
Block a user