From 3d9d119b5b8a9d32f58dfd0cb2e2843a8389f13b Mon Sep 17 00:00:00 2001 From: Sjef Verhoeven PE5PVB Date: Sat, 17 Jun 2023 14:46:15 +0200 Subject: [PATCH] Fixed BER on RDS Spy --- TEF6686_ESP32.ino | 21 +++--- src/TEF6686.cpp | 18 ++--- src/TEF6686.h | 5 ++ src/font.h | 178 +++++++++++++++++++++++----------------------- 4 files changed, 115 insertions(+), 107 deletions(-) diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index e11f0ea..dcefe29 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -1708,14 +1708,10 @@ void readRds() { if ((RDSstatus == 1 && RDSSPYUSB == true) || (RDSstatus == 1 && RDSSPYTCP == true)) { RDSSPYRDS = "G:\r\n"; - RDSSPYRDS += String(((radio.rds.rdsA >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsA >> 8) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsA) >> 4) & 0xF, HEX) + String((radio.rds.rdsA) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsB >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsB >> 8) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsB) >> 4) & 0xF, HEX) + String((radio.rds.rdsB) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsC >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsC >> 8) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsC) >> 4) & 0xF, HEX) + String((radio.rds.rdsC) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsD >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsD >> 8) & 0xF, HEX); - RDSSPYRDS += String(((radio.rds.rdsD) >> 4) & 0xF, HEX) + String((radio.rds.rdsD) & 0xF, HEX); + if (radio.rds.rdsAerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsA >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsA >> 8) & 0xF, HEX) + String(((radio.rds.rdsA) >> 4) & 0xF, HEX) + String((radio.rds.rdsA) & 0xF, HEX); + if (radio.rds.rdsBerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsB >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsB >> 8) & 0xF, HEX) + String(((radio.rds.rdsB) >> 4) & 0xF, HEX) + String((radio.rds.rdsB) & 0xF, HEX); + if (radio.rds.rdsCerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsC >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsC >> 8) & 0xF, HEX) + String(((radio.rds.rdsC) >> 4) & 0xF, HEX) + String((radio.rds.rdsC) & 0xF, HEX); + if (radio.rds.rdsDerror) RDSSPYRDS += "----"; else RDSSPYRDS += String(((radio.rds.rdsD >> 8) >> 4) & 0xF, HEX) + String((radio.rds.rdsD >> 8) & 0xF, HEX) + String(((radio.rds.rdsD) >> 4) & 0xF, HEX) + String((radio.rds.rdsD) & 0xF, HEX); RDSSPYRDS += "\r\n\r\n"; if (RDSSPYRDS != RDSSPYRDSold) { @@ -3356,7 +3352,8 @@ void TuneUp() { frequency_SW = frequency_AM; } radio.clearRDS(fullsearchrds); - if (RDSSPYUSB == true || RDSSPYTCP == true) DataPrint("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); } void TuneDown() { @@ -3419,7 +3416,8 @@ void TuneDown() { frequency_SW = frequency_AM; } radio.clearRDS(fullsearchrds); - if (RDSSPYUSB == true || RDSSPYTCP == true) DataPrint("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); } void EdgeBeeper() { @@ -3443,7 +3441,8 @@ void Seek(bool mode) { store = true; } else { seek = true; - if (RDSSPYUSB == true || RDSSPYTCP == true) DataPrint("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYUSB == true) Serial.print("G:\r\nRESET-------\r\n\r\n"); + if (RDSSPYTCP == true) RemoteClient.print("G:\r\nRESET-------\r\n\r\n"); } } } diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index 0e54803..a6b4f2c 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -221,16 +221,16 @@ bool TEF6686::getStatusAM(int16_t &level, uint16_t &noise, uint16_t &cochannel, bool TEF6686::readRDS(bool showrdserrors) { char status; - uint16_t rdsStat = 0, rdsErr = 65535, rdsErrA = 65535, rdsErrB = 65535, rdsErrC = 65535, rdsErrD = 65535; + uint16_t rdsStat = 0, rdsErr = 65535; uint16_t result = devTEF_Radio_Get_RDS_Data(&rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rdsErr); uint8_t rds_group; uint8_t offset; bool rdsErrCheck = false, rdsDataReady = false; - rdsErrA = ((rdsErr >> 14) & 0x02); - rdsErrB = ((rdsErr >> 12) & 0x02); - rdsErrC = ((rdsErr >> 10) & 0x02); - rdsErrD = ((rdsErr >> 8) & 0x02); + if (((rdsErr >> 14) & 0x02) > 1) rds.rdsAerror = true; else rds.rdsAerror = false; + if (((rdsErr >> 12) & 0x02) > 1) rds.rdsBerror = true; else rds.rdsBerror = false; + if (((rdsErr >> 10) & 0x02) > 1) rds.rdsCerror = true; else rds.rdsCerror = false; + if (((rdsErr >> 8) & 0x02) > 1) rds.rdsDerror = true; else rds.rdsDerror = false; rdsTimeOut += rdsErr == 0 && rds.rdsA != 0 ? -rdsTimeOut : rdsTimeOut < 32768 ? 1 : 0; rds.hasRDS = rdsTimeOut < 32768 ? true : false; @@ -315,8 +315,7 @@ bool TEF6686::readRDS(bool showrdserrors) if (rds.region == 0) strcpy(rds.stationType, PTY_EU[rds.stationTypeCode]); if (rds.region == 1) strcpy(rds.stationType, PTY_USA[rds.stationTypeCode]); - //TP-TA-EON-MS - if ((bitRead(rds.rdsB, 4)) == 1 && ((bitRead(rds.rdsB, 10)) == 0)) rds.hasEON = true; else rds.hasEON = false; + //TP-TA-MS if ((bitRead(rds.rdsB, 4)) == 0 && ((bitRead(rds.rdsB, 10)) == 1)) rds.hasTP = true; else rds.hasTP = false; rds.hasTA = (bitRead(rds.rdsB, 4)) && (bitRead(rds.rdsB, 10)) & 0x1F; if (((bitRead(rds.rdsB, 3)) & 0x1F) == 1) rds.MS = 1; else rds.MS = 2; @@ -521,6 +520,9 @@ bool TEF6686::readRDS(bool showrdserrors) } } } break; + case RDS_GROUP_14A: + rds.hasEON = true; + break; } } return rdsDataReady; @@ -768,4 +770,4 @@ void TEF6686::RDScharConverter(const char* input, wchar_t* output, size_t size) } } output[size - 1] = L'\0'; -} +} \ No newline at end of file diff --git a/src/TEF6686.h b/src/TEF6686.h index 64a4a70..838382e 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -160,6 +160,10 @@ typedef struct _rds_ { int8_t offset; uint8_t stationTextOffset = 0; int ECC; + bool rdsAerror; + bool rdsBerror; + bool rdsCerror; + bool rdsDerror; bool hasMusicTitle; bool hasMusicArtist; bool hasStationHost; @@ -249,4 +253,5 @@ class TEF6686 { byte rt_timer; byte offsetold; char stationTextBuffer[65]; + uint64_t doublecheck; }; diff --git a/src/font.h b/src/font.h index 074bad7..4ca0f06 100644 --- a/src/font.h +++ b/src/font.h @@ -5900,103 +5900,105 @@ static const GFXfont Aura2ProRegular14pt8b PROGMEM = { (GFXglyph *)Aura2ProRegular14pt8bGlyphs, 0x20, 0x400, 38 }; -static const uint8_t Aura2ProRegular24pt7bBitmaps[] PROGMEM = { - 0x2F, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, - 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, - 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, - 0x00, 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, - 0x00, 0x0E, 0x00, 0x07, 0x00, 0x00, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, - 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xC7, 0xC0, 0x1E, 0x78, 0x01, 0xE7, - 0x80, 0x0E, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, +const uint8_t Aura2ProRegular24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x2F, 0xFF, 0xFF, 0x20, 0x00, 0x01, 0x80, + 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x00, 0x03, + 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xC7, + 0xC0, 0x1E, 0x78, 0x01, 0xE7, 0x80, 0x0E, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xF7, 0x80, 0x1E, 0x78, 0x01, 0xE7, - 0xC0, 0x3E, 0x3F, 0x9F, 0xC3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x7F, 0xE0, - 0x00, 0x40, 0x00, 0x00, 0xE0, 0x7C, 0x3F, 0xBF, 0xFF, 0xFF, 0xFD, 0xFC, - 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, - 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, - 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, - 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x04, 0x0F, 0xF0, 0x0F, 0xFF, 0x83, 0xFF, - 0xFC, 0x7F, 0xFF, 0x8F, 0x01, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, - 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, - 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, - 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0x80, - 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0xE0, 0x1F, 0xFE, - 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0xF0, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, - 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, 0x00, - 0x07, 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x03, 0xF8, 0x0F, 0xFC, 0x03, 0xFE, - 0x00, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x78, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x7C, 0xF9, 0xFF, 0x3F, 0xFF, - 0x8F, 0xFF, 0xC1, 0xFF, 0xC0, 0x02, 0x00, 0x00, 0x00, 0x70, 0x00, 0x03, - 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, - 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xC0, 0x00, 0x1E, 0x03, 0x00, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x0F, - 0x03, 0xC0, 0x78, 0x3C, 0x03, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF0, 0xF0, - 0x07, 0x87, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x10, 0x00, 0x7F, 0xFF, - 0x1F, 0xFF, 0xC7, 0xFF, 0xF1, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, - 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFE, - 0x1F, 0xFF, 0xC6, 0x01, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, - 0x0E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x01, 0xF3, 0xE7, 0xFC, 0xFF, 0xFE, - 0x3F, 0xFF, 0x07, 0xFF, 0x00, 0x08, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, - 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, - 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xFF, 0xE0, 0x1F, - 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0xFF, 0xC3, 0xE0, 0x3E, 0x7C, 0x01, 0xE7, - 0x80, 0x0F, 0x78, 0x00, 0xF7, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x07, - 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0x70, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x01, - 0xF3, 0xC0, 0x3E, 0x3F, 0xDF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, 0x7F, - 0xE0, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, + 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xF7, + 0x80, 0x1E, 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x9F, 0xC3, 0xFF, 0xFC, + 0x1F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x7C, 0x3F, + 0xBF, 0xFF, 0xFF, 0xFD, 0xFC, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x04, 0x0F, + 0xF0, 0x0F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, + 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x0F, 0xE0, 0x1F, 0xFE, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0xF0, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x03, + 0xF8, 0x0F, 0xFC, 0x03, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, + 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x7C, 0xF9, 0xFF, 0x3F, 0xFF, 0x8F, 0xFF, 0xC1, 0xFF, 0xC0, 0x02, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x03, 0x00, 0xF0, 0x3C, + 0x07, 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x3C, 0x03, 0xC1, 0xE0, + 0x1E, 0x0F, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x00, + 0x00, 0x10, 0x00, 0x7F, 0xFF, 0x1F, 0xFF, 0xC7, 0xFF, 0xF1, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0xFF, + 0x01, 0xFF, 0xF0, 0x7F, 0xFE, 0x1F, 0xFF, 0xC6, 0x01, 0xF8, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x01, + 0xF3, 0xE7, 0xFC, 0xFF, 0xFE, 0x3F, 0xFF, 0x07, 0xFF, 0x00, 0x08, 0x00, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0xFF, 0xC3, + 0xE0, 0x3E, 0x7C, 0x01, 0xE7, 0x80, 0x0F, 0x78, 0x00, 0xF7, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0x70, 0x00, + 0xF7, 0x80, 0x0F, 0x78, 0x01, 0xF3, 0xC0, 0x3E, 0x3F, 0xDF, 0xE1, 0xFF, + 0xFC, 0x0F, 0xFF, 0x80, 0x7F, 0xE0, 0x00, 0x20, 0x00, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, - 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, - 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x1F, - 0xFF, 0x83, 0xFF, 0xF8, 0x3E, 0x07, 0xC7, 0xC0, 0x3C, 0x78, 0x01, 0xE7, - 0x80, 0x1E, 0x70, 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x01, 0xE7, 0x80, 0x1E, - 0x78, 0x01, 0xE7, 0x80, 0x1E, 0x3C, 0x03, 0xC3, 0xF0, 0xFC, 0x1F, 0xFF, - 0x80, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7C, 0x07, 0xE7, 0x80, - 0x1E, 0xF8, 0x01, 0xEF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x1E, 0x78, 0x01, 0xE7, - 0xC0, 0x3E, 0x3F, 0xFF, 0xC3, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, - 0x00, 0x40, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, - 0xFC, 0x7E, 0x07, 0xC7, 0x80, 0x3E, 0xF8, 0x01, 0xEF, 0x00, 0x0F, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x7F, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, 0x3E, 0x07, 0xC7, + 0xC0, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x1E, 0x70, 0x01, 0xE7, 0x00, 0x0E, + 0x70, 0x01, 0xE7, 0x80, 0x1E, 0x78, 0x01, 0xE7, 0x80, 0x1E, 0x3C, 0x03, + 0xC3, 0xF0, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, + 0xFC, 0x7C, 0x07, 0xE7, 0x80, 0x1E, 0xF8, 0x01, 0xEF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x00, 0x0F, 0xF0, 0x00, 0xE7, 0x80, 0x1E, 0x7C, 0x03, 0xE7, 0xF0, 0xFC, - 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, 0x1E, 0xF8, 0x00, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x03, - 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, - 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x00, 0x80, 0x00 }; + 0x00, 0x1E, 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0xFF, 0xC3, 0xFF, 0xF8, + 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x00, 0x40, 0x00, 0x03, 0xF8, 0x00, 0xFF, + 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x07, 0xC7, 0x80, 0x3E, 0xF8, + 0x01, 0xEF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xE7, 0x80, 0x1E, + 0x7C, 0x03, 0xE7, 0xF0, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x1E, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x1C, 0x00, 0x00, 0x80, 0x00 }; -static const GFXglyph Aura2ProRegular24pt7bGlyphs[] PROGMEM = { - { 0, 4, 7, 10, 1, -5 }, // 0x2E '.' - { 4, 17, 46, 19, 1, -37 }, // 0x2F '/' - { 102, 20, 37, 23, 2, -35 }, // 0x30 '0' - { 195, 11, 37, 22, 4, -35 }, // 0x31 '1' - { 246, 19, 36, 23, 2, -35 }, // 0x32 '2' - { 332, 18, 37, 23, 2, -35 }, // 0x33 '3' - { 416, 21, 37, 23, 2, -35 }, // 0x34 '4' - { 514, 18, 36, 23, 3, -34 }, // 0x35 '5' - { 595, 20, 37, 23, 2, -35 }, // 0x36 '6' - { 688, 19, 36, 23, 1, -34 }, // 0x37 '7' - { 774, 20, 37, 23, 2, -35 }, // 0x38 '8' - { 867, 20, 37, 23, 2, -35 } }; // 0x39 '9' +const GFXglyph Aura2ProRegular24pt7bGlyphs[] PROGMEM = { + { 0, 13, 3, 15, 1, -13 }, // 0x2D '-' + { 5, 4, 7, 10, 1, -5 }, // 0x2E '.' + { 9, 17, 46, 19, 1, -37 }, // 0x2F '/' + { 107, 20, 37, 23, 2, -35 }, // 0x30 '0' + { 200, 11, 37, 22, 4, -35 }, // 0x31 '1' + { 251, 19, 36, 23, 2, -35 }, // 0x32 '2' + { 337, 18, 37, 23, 2, -35 }, // 0x33 '3' + { 421, 21, 37, 23, 2, -35 }, // 0x34 '4' + { 519, 18, 36, 23, 3, -34 }, // 0x35 '5' + { 600, 20, 37, 23, 2, -35 }, // 0x36 '6' + { 693, 19, 36, 23, 1, -34 }, // 0x37 '7' + { 779, 20, 37, 23, 2, -35 }, // 0x38 '8' + { 872, 20, 37, 23, 2, -35 } }; // 0x39 '9' -static const GFXfont Aura2ProRegular24pt7b PROGMEM = { +const GFXfont Aura2ProRegular24pt7b PROGMEM = { (uint8_t *)Aura2ProRegular24pt7bBitmaps, (GFXglyph *)Aura2ProRegular24pt7bGlyphs, - 0x2E, 0x39, 67 }; \ No newline at end of file + 0x2D, 0x39, 67 }; \ No newline at end of file