Added RBDS support with stationcall and underscore in PS

This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-08 22:40:55 +02:00
parent c2506405fa
commit 05b232fcb4
4 changed files with 342 additions and 161 deletions
+104 -13
View File
@@ -57,14 +57,17 @@ bool Stereostatusold;
bool StereoToggle = true; bool StereoToggle = true;
bool store; bool store;
bool tuned; bool tuned;
bool underscore;
bool USBstatus;
bool XDRMute;
byte region;
byte regionold;
byte language; byte language;
byte tunemode; byte tunemode;
byte memorypos; byte memorypos;
byte memoryposold; byte memoryposold;
byte menupage = 1; byte menupage = 1;
byte menupagestotal = 2; byte menupagestotal = 2;
bool USBstatus;
bool XDRMute;
byte band; byte band;
byte BWset; byte BWset;
byte ContrastSet; byte ContrastSet;
@@ -154,8 +157,8 @@ TFT_eSprite sprite = TFT_eSprite(&tft);
void setup() { void setup() {
setupmode = true; setupmode = true;
EEPROM.begin(221); EEPROM.begin(221);
if (EEPROM.readByte(43) != 20) { if (EEPROM.readByte(43) != 21) {
EEPROM.writeByte(43, 20); EEPROM.writeByte(43, 21);
EEPROM.writeUInt(0, 10000); EEPROM.writeUInt(0, 10000);
EEPROM.writeInt(4, 0); EEPROM.writeInt(4, 0);
EEPROM.writeUInt(8, 0); EEPROM.writeUInt(8, 0);
@@ -181,8 +184,10 @@ void setup() {
EEPROM.writeByte(44, 1); EEPROM.writeByte(44, 1);
EEPROM.writeByte(45, 1); EEPROM.writeByte(45, 1);
EEPROM.writeByte(46, 0); EEPROM.writeByte(46, 0);
EEPROM.writeInt(47, 20);
EEPROM.writeByte(51, 0); EEPROM.writeByte(51, 0);
EEPROM.writeInt(55, 20); EEPROM.writeByte(52, 0);
EEPROM.writeByte(53, 0);
for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0); for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0);
for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750); for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750);
EEPROM.commit(); EEPROM.commit();
@@ -213,8 +218,10 @@ void setup() {
iMSset = EEPROM.readByte(44); iMSset = EEPROM.readByte(44);
EQset = EEPROM.readByte(45); EQset = EEPROM.readByte(45);
band = EEPROM.readByte(46); band = EEPROM.readByte(46);
LowLevelSet = EEPROM.readInt(47);
memorypos = EEPROM.readByte(51); memorypos = EEPROM.readByte(51);
LowLevelSet = EEPROM.readInt(55); region = EEPROM.readByte(52);
underscore = EEPROM.readByte(53);
for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60); for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60);
for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100); for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100);
@@ -368,6 +375,8 @@ void setup() {
radio.setMute(); radio.setMute();
radio.setSoftmuteFM(softmutefm); radio.setSoftmuteFM(softmutefm);
radio.setSoftmuteAM(softmuteam); radio.setSoftmuteAM(softmuteam);
if (region == 1) radio.setDeemphasis(2);
radio.rds.region = region;
LowLevelInit = true; LowLevelInit = true;
if (ConverterSet >= 200) { if (ConverterSet >= 200) {
@@ -403,7 +412,8 @@ void loop() {
tft.drawString("120", 164, 146, GFXFF); tft.drawString("120", 164, 146, GFXFF);
tft.drawString("%", 196, 146, GFXFF); tft.drawString("%", 196, 146, GFXFF);
tft.drawString("M", 6, 132, GFXFF); tft.drawString("M", 6, 132, GFXFF);
tft.drawString("PI:", 216, 191, GFXFF); if (region == 0) tft.drawString("PI:", 216, 191, GFXFF);
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
tft.drawString("PS:", 6, 191, GFXFF); tft.drawString("PS:", 6, 191, GFXFF);
tft.drawString("PTY:", 6, 164, GFXFF); tft.drawString("PTY:", 6, 164, GFXFF);
tft.drawLine(20, 150, 200, 150, TFT_DARKGREY); tft.drawLine(20, 150, 200, 150, TFT_DARKGREY);
@@ -437,7 +447,8 @@ void loop() {
tft.drawString("120", 164, 146, GFXFF); tft.drawString("120", 164, 146, GFXFF);
tft.drawString("%", 196, 146, GFXFF); tft.drawString("%", 196, 146, GFXFF);
tft.drawString("M", 6, 132, GFXFF); tft.drawString("M", 6, 132, GFXFF);
tft.drawString("PI:", 216, 191, GFXFF); if (region == 0) tft.drawString("PI:", 216, 191, GFXFF);
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
tft.drawString("PS:", 6, 191, GFXFF); tft.drawString("PS:", 6, 191, GFXFF);
tft.drawString("PTY:", 6, 164, GFXFF); tft.drawString("PTY:", 6, 164, GFXFF);
tft.drawLine(20, 150, 200, 150, TFT_GREYOUT); tft.drawLine(20, 150, 200, 150, TFT_GREYOUT);
@@ -590,7 +601,8 @@ void SelectBand() {
radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus); radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (screenmute == false) BuildDisplay(); if (screenmute == false) BuildDisplay();
tft.setFreeFont(FONT7); tft.setFreeFont(FONT7);
tft.drawString("PI:", 216, 191, GFXFF); if (region == 0) tft.drawString("PI:", 216, 191, GFXFF);
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
tft.drawString("PS:", 6, 191, GFXFF); tft.drawString("PS:", 6, 191, GFXFF);
tft.drawString("PTY:", 6, 164, GFXFF); tft.drawString("PTY:", 6, 164, GFXFF);
tft.drawBitmap(110, 5, RDSLogo, 67, 22, TFT_GREYOUT); tft.drawBitmap(110, 5, RDSLogo, 67, 22, TFT_GREYOUT);
@@ -712,7 +724,9 @@ void ModeButtonPress() {
EEPROM.writeByte(30, softmutefm); EEPROM.writeByte(30, softmutefm);
EEPROM.writeByte(35, language); EEPROM.writeByte(35, language);
EEPROM.writeByte(36, showrdserrors); EEPROM.writeByte(36, showrdserrors);
EEPROM.writeInt(55, LowLevelSet); EEPROM.writeInt(47, LowLevelSet);
EEPROM.writeByte(52, region);
EEPROM.writeByte(53, underscore);
EEPROM.commit(); EEPROM.commit();
} }
while (digitalRead(MODEBUTTON) == LOW) delay(50); while (digitalRead(MODEBUTTON) == LOW) delay(50);
@@ -960,6 +974,21 @@ void ButtonPress() {
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break; break;
case 130:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][46], 155, 70, GFXFF);
tft.setTextColor(TFT_YELLOW);
if (region == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF);
if (region == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF);
break;
case 150:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][49], 155, 70, GFXFF);
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break;
} }
} }
} else { } else {
@@ -1171,6 +1200,28 @@ void KeyUp() {
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break; break;
case 130:
tft.setTextColor(TFT_BLACK);
if (region == 0) region = 1; else region = 0;
if (regionold == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF);
if (regionold == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF);
if (edgebeep) edgebeep = false; else edgebeep = true;
tft.setTextColor(TFT_YELLOW);
if (region == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF);
if (region == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF);
regionold = region;
if (region == 0) radio.setDeemphasis(1);
if (region == 1) radio.setDeemphasis(2);
radio.rds.region = region;
break;
case 150:
tft.setTextColor(TFT_BLACK);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (underscore) underscore = false; else underscore = true;
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
} }
} }
} }
@@ -1380,6 +1431,28 @@ void KeyDown() {
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
break; break;
case 130:
tft.setTextColor(TFT_BLACK);
if (region == 0) region = 1; else region = 0;
if (regionold == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF);
if (regionold == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF);
if (edgebeep) edgebeep = false; else edgebeep = true;
tft.setTextColor(TFT_YELLOW);
if (region == 0) tft.drawCentreString(myLanguage[language][47], 155, 110, GFXFF);
if (region == 1) tft.drawCentreString(myLanguage[language][48], 155, 110, GFXFF);
regionold = region;
if (region == 0) radio.setDeemphasis(1);
if (region == 1) radio.setDeemphasis(2);
radio.rds.region = region;
break;
case 150:
tft.setTextColor(TFT_BLACK);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
if (underscore) underscore = false; else underscore = true;
tft.setTextColor(TFT_YELLOW);
if (underscore) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
} }
} }
} }
@@ -1494,8 +1567,20 @@ void showPS() {
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
tft.drawString(PSold, 38, 182, GFXFF); tft.drawString(PSold, 38, 182, GFXFF);
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (underscore) {
char PS_[9];
strcpy (PS_, radio.rds.stationName);
for (int i = 0; i < 8; i++)
{
if (PS_[i] < 0x10) PS_[i] = '0';
if (PS_[i] == 0x20) PS_[i] = '_';
}
tft.drawString(PS_, 38, 182, GFXFF);
PSold = PS_;
} else {
tft.drawString(radio.rds.stationName, 38, 182, GFXFF); tft.drawString(radio.rds.stationName, 38, 182, GFXFF);
PSold = radio.rds.stationName; PSold = radio.rds.stationName;
}
strcpy(programServicePrevious, radio.rds.stationName); strcpy(programServicePrevious, radio.rds.stationName);
} }
} }
@@ -1596,12 +1681,17 @@ void BuildMenu() {
tft.drawString(myLanguage[language][43], 14, 70, GFXFF); tft.drawString(myLanguage[language][43], 14, 70, GFXFF);
tft.drawString(myLanguage[language][44], 14, 90, GFXFF); tft.drawString(myLanguage[language][44], 14, 90, GFXFF);
tft.drawString(myLanguage[language][45], 14, 110, GFXFF); tft.drawString(myLanguage[language][45], 14, 110, GFXFF);
tft.drawString(myLanguage[language][46], 14, 130, GFXFF);
tft.drawString(myLanguage[language][49], 14, 150, GFXFF);
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
tft.drawRightString(myLanguage[language][0], 305, 30, GFXFF); tft.drawRightString(myLanguage[language][0], 305, 30, GFXFF);
if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 50, GFXFF); if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 50, GFXFF);
if (softmutefm) tft.drawRightString(myLanguage[language][42], 305, 70, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 70, GFXFF); if (softmutefm) tft.drawRightString(myLanguage[language][42], 305, 70, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 70, GFXFF);
if (softmuteam) tft.drawRightString(myLanguage[language][42], 305, 90, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 90, GFXFF); if (softmuteam) tft.drawRightString(myLanguage[language][42], 305, 90, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 90, GFXFF);
if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF); if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 110, GFXFF);
if (region == 0) tft.drawRightString(myLanguage[language][47], 305, 130, GFXFF);
if (region == 1) tft.drawRightString(myLanguage[language][48], 305, 130, GFXFF);
if (underscore) tft.drawRightString(myLanguage[language][42], 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 150, GFXFF);
break; break;
} }
analogWrite(SMETERPIN, 0); analogWrite(SMETERPIN, 0);
@@ -1656,7 +1746,8 @@ void BuildDisplay() {
tft.drawString("dB", 300, 167, GFXFF); tft.drawString("dB", 300, 167, GFXFF);
tft.drawString("S", 6, 100, GFXFF); tft.drawString("S", 6, 100, GFXFF);
tft.drawString("M", 6, 132, GFXFF); tft.drawString("M", 6, 132, GFXFF);
tft.drawString("PI:", 216, 191, GFXFF); if (region == 0) tft.drawString("PI:", 216, 191, GFXFF);
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
tft.drawString("PS:", 6, 191, GFXFF); tft.drawString("PS:", 6, 191, GFXFF);
tft.drawString("PTY:", 6, 164, GFXFF); tft.drawString("PTY:", 6, 164, GFXFF);
tft.drawString("%", 196, 146, GFXFF); tft.drawString("%", 196, 146, GFXFF);
@@ -2421,12 +2512,12 @@ void XDRGTKRoutine() {
LevelOffset = atol(buff + 1); LevelOffset = atol(buff + 1);
if (LevelOffset == 0) { if (LevelOffset == 0) {
MuteScreen(0); MuteScreen(0);
LowLevelSet = EEPROM.readInt(55); LowLevelSet = EEPROM.readInt(47);
Serial.print("G00\n"); Serial.print("G00\n");
} }
if (LevelOffset == 10) { if (LevelOffset == 10) {
MuteScreen(1); MuteScreen(1);
LowLevelSet = EEPROM.readInt(55); LowLevelSet = EEPROM.readInt(47);
Serial.print("G10\n"); Serial.print("G10\n");
} }
if (LevelOffset == 1) { if (LevelOffset == 1) {
+31 -38
View File
@@ -1,42 +1,5 @@
#include "TEF6686.h" #include "TEF6686.h"
const char* const PTY[]
{
"None",
"News",
"Current Affairs",
"Information",
"Sport",
"Education",
"Drama",
"Cultures",
"Science",
"Varied Speech",
"Pop Music",
"Rock Music",
"Easy Listening",
"Light Classics",
"Serious Classics",
"Other Music",
"Weather",
"Finance",
"Children's Progs",
"Social Affair",
"Religion",
"Phone In",
"Travel & Touring",
"Leisure & Hobby",
"Jazz Music",
"Country Music",
"National Music",
"Oldies Music",
"Folk Music",
"Documentary",
"Alarm Test",
"Alarm!!!",
" "
};
void TEF6686::init(byte TEF) { void TEF6686::init(byte TEF) {
uint8_t bootstatus; uint8_t bootstatus;
Tuner_I2C_Init(); Tuner_I2C_Init();
@@ -280,12 +243,41 @@ bool TEF6686::readRDS(bool showrdserrors)
{ {
//PI //PI
if (rds.stationID == 0) rds.stationID = rds.rdsA; if (rds.stationID == 0) rds.stationID = rds.rdsA;
if (rds.region == 0) {
char Hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; char Hex[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
rds.picode[0] = Hex[(rds.rdsA & 0xF000U) >> 12]; rds.picode[0] = Hex[(rds.rdsA & 0xF000U) >> 12];
rds.picode[1] = Hex[(rds.rdsA & 0x0F00U) >> 8]; rds.picode[1] = Hex[(rds.rdsA & 0x0F00U) >> 8];
rds.picode[2] = Hex[(rds.rdsA & 0x00F0U) >> 4]; rds.picode[2] = Hex[(rds.rdsA & 0x00F0U) >> 4];
rds.picode[3] = Hex[(rds.rdsA & 0x000FU)]; rds.picode[3] = Hex[(rds.rdsA & 0x000FU)];
rds.picode[4] = '\0'; rds.picode[4] = '\0';
}
if (rds.region == 1) {
if (rds.stationID > 4096) {
if (rds.stationID > 21671 &&(rds.stationID & 0xF00U) >> 8 == 0) rds.stationID = ((uint16_t)uint8_t(0xA0 + ((rds.stationID & 0xF000U) >> 12)) << 8) + lowByte(rds.stationID); // C0DE -> ACDE
if (rds.stationID > 21671 && lowByte(rds.stationID) == 0) rds.stationID = 0xAF00 + uint8_t(highByte(rds.stationID)); // CD00 -> AFCD
if (rds.stationID < 39247) {
if (rds.stationID > 21671) {
rds.picode[0] = 'W';
rds.stationID -= 21672;
} else {
rds.picode[0] = 'K';
rds.stationID -= 4096;
}
rds.picode[1] = char(rds.stationID / 676 + 65);
rds.picode[2] = char((rds.stationID - 676 * int(rds.stationID / 676)) / 26 + 65);
rds.picode[3] = char(((rds.stationID - 676 * int(rds.stationID / 676)) % 26) + 65);
rds.picode[4] = '\0';
} else {
rds.stationID -= 4835;
rds.picode[0] = 'K';
rds.picode[1] = char(rds.stationID / 676 + 65);
rds.picode[2] = char((rds.stationID - 676 * int(rds.stationID / 676)) / 26 + 65);
rds.picode[3] = char(((rds.stationID - 676 * int(rds.stationID / 676)) % 26) + 65);
rds.picode[4] = '\0';
}
}
}
rds_group = (rds.rdsB >> 11); rds_group = (rds.rdsB >> 11);
if (rds.correctPI == false && rds.correct == true) rds.correctPI = true; if (rds.correctPI == false && rds.correct == true) rds.correctPI = true;
switch (rds_group) { switch (rds_group) {
@@ -313,7 +305,8 @@ bool TEF6686::readRDS(bool showrdserrors)
//PTY //PTY
rds.stationTypeCode = (rds.rdsB >> 5) & 0x1F; rds.stationTypeCode = (rds.rdsB >> 5) & 0x1F;
rds.hasPTY = true; rds.hasPTY = true;
strcpy(rds.stationType, PTY[rds.stationTypeCode]); 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 //TP-TA-EON-MS
if ((bitRead(rds.rdsB, 4)) == 1 && ((bitRead(rds.rdsB, 10)) == 0)) rds.hasEON = true; else rds.hasEON = false; if ((bitRead(rds.rdsB, 4)) == 1 && ((bitRead(rds.rdsB, 10)) == 0)) rds.hasEON = true; else rds.hasEON = false;
+74 -1
View File
@@ -11,7 +11,80 @@ enum RDS_GROUPS {
RDS_GROUP_12A, RDS_GROUP_12B, RDS_GROUP_13A, RDS_GROUP_13B, RDS_GROUP_14A, RDS_GROUP_14B, RDS_GROUP_15A, RDS_GROUP_15B RDS_GROUP_12A, RDS_GROUP_12B, RDS_GROUP_13A, RDS_GROUP_13B, RDS_GROUP_14A, RDS_GROUP_14B, RDS_GROUP_15A, RDS_GROUP_15B
}; };
const char* const PTY_EU[] {
"None",
"News",
"Current Affairs",
"Information",
"Sport",
"Education",
"Drama",
"Cultures",
"Science",
"Varied Speech",
"Pop Music",
"Rock Music",
"Easy Listening",
"Light Classics",
"Serious Classics",
"Other Music",
"Weather",
"Finance",
"Children's Progs",
"Social Affair",
"Religion",
"Phone In",
"Travel & Touring",
"Leisure & Hobby",
"Jazz Music",
"Country Music",
"National Music",
"Oldies Music",
"Folk Music",
"Documentary",
"Alarm Test",
"Alarm!!!",
" "
};
const char* const PTY_USA[] {
"None",
"News",
"Information",
"Sports",
"Talk",
"Rock",
"Classic Rock",
"Adult Hits",
"Soft Rock",
"Top 40",
"Country",
"Oldies",
"Soft",
"Nostalgia",
"Jazz",
"Classical",
"Rhythm and Blues ",
"Soft R & B",
"Foreign_Language",
"Religious Music",
"Religious Talk",
"Personality",
"Public",
"College",
"Hablar Espanol",
"Musica Espanol",
"Hip Hop",
" ",
" ",
"Weather",
"Emergency Test",
"ALERT! ALERT!",
" "
};
typedef struct _rds_ { typedef struct _rds_ {
byte region;
byte stationTypeCode; byte stationTypeCode;
char stationName[9]; char stationName[9];
char stationText[65]; char stationText[65];
@@ -94,9 +167,9 @@ class TEF6686 {
void setStereoLevel(uint8_t start); void setStereoLevel(uint8_t start);
void setUnMute(); void setUnMute();
void setVolume(int8_t volume); void setVolume(int8_t volume);
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
uint8_t af_counter; uint8_t af_counter;
bool mute; bool mute;
void tone(uint16_t time, int16_t amplitude, uint16_t frequency);
private: private:
uint8_t ascii_converter (uint8_t src); uint8_t ascii_converter (uint8_t src);
+31 -7
View File
@@ -1,6 +1,6 @@
// [number of languages][number of texts][max. length of text] // [number of languages][number of texts][max. length of text]
const char myLanguage[6][46][100] = { const char myLanguage[6][50][100] = {
{ "English", // English { "English", // English
"Rotary direction changed", "Rotary direction changed",
"Please release button", "Please release button",
@@ -46,7 +46,11 @@ const char myLanguage[6][46][100] = {
"On", "On",
"Softmute FM", "Softmute FM",
"Softmute AM", "Softmute AM",
"Beep at band edge" "Beep at band edge",
"Region",
"Europe",
"USA",
"Show underscore in PS"
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -94,7 +98,11 @@ const char myLanguage[6][46][100] = {
"Aan", "Aan",
"Softmute FM", "Softmute FM",
"Softmute AM", "Softmute AM",
"Piep op bandeinde" "Piep op bandeinde",
"Regio",
"Europa",
"USA",
"Toon underscore in PS"
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -142,7 +150,11 @@ const char myLanguage[6][46][100] = {
"Wlacz.", "Wlacz.",
"Lagodne wycisz. FM", "Lagodne wycisz. FM",
"Lagodne wycisz. AM", "Lagodne wycisz. AM",
"Beep na krawedzi pasma" "Beep na krawedzi pasma",
"Region",
"Europe",
"USA",
"Show underscore in PS"
}, },
{"Hrvatski", // Croatian {"Hrvatski", // Croatian
@@ -190,7 +202,11 @@ const char myLanguage[6][46][100] = {
"Uključeno", "Uključeno",
"Softmute FM", "Softmute FM",
"Softmute AM", "Softmute AM",
"Beep na rubu frekv. opsega" "Beep na rubu frekv. opsega",
"Region",
"Europe",
"USA",
"Show underscore in PS"
}, },
{"Ελληνικά", // Greek {"Ελληνικά", // Greek
@@ -238,7 +254,11 @@ const char myLanguage[6][46][100] = {
"Ενεργό", "Ενεργό",
"Softmute FM", "Softmute FM",
"Softmute AM", "Softmute AM",
"Ηχητικό σήμα στο όριο μπάντας" "Ηχητικό σήμα στο όριο μπάντας",
"Region",
"Europe",
"USA",
"Show underscore in PS"
}, },
{ "Romana", // Roman { "Romana", // Roman
@@ -286,6 +306,10 @@ const char myLanguage[6][46][100] = {
"Pornit", "Pornit",
"FM fara sonor", "FM fara sonor",
"A fara sonorM", "A fara sonorM",
"Sunet la marginea Benzii" "Sunet la marginea Benzii",
"Region",
"Europe",
"USA",
"Show underscore in PS"
} }
}; };