Add co-channel detector on AM

This commit is contained in:
ohmytime
2023-08-08 22:59:05 +08:00
parent ed79e2269d
commit 431938df97
11 changed files with 12823 additions and 12014 deletions
+3945 -3761
View File
File diff suppressed because it is too large Load Diff
+8701 -8218
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -189,8 +189,8 @@ void TEF6686::setAMBandw(uint16_t bandwidth) {
devTEF_Radio_Set_BandwidthAM(0, bandwidth * 10, 1000, 1000);
}
void TEF6686::setAMCoChannel(uint16_t start) {
devTEF_Radio_Set_CoChannel_AM(start * 10);
void TEF6686::setAMCoChannel(uint16_t start, uint8_t level) {
if (start == 0) devTEF_Radio_Set_CoChannel_AM(0, start * 10, level); else devTEF_Radio_Set_CoChannel_AM(1, start * 10, level);
}
void TEF6686::setSoftmuteAM(uint8_t mode) {
+1 -1
View File
@@ -231,7 +231,7 @@ class TEF6686 {
void setStHiBlendLevel(uint16_t limit);
void setStHiBlendOffset(uint8_t start);
void setFMNoiseBlanker(uint16_t start);
void setAMCoChannel(uint16_t start);
void setAMCoChannel(uint16_t start, uint8_t level = 3);
void setAMNoiseBlanker(uint16_t start);
void setAMAttenuation(uint16_t start);
void setMute();
+2 -2
View File
@@ -60,8 +60,8 @@ bool devTEF_Radio_Set_Attenuator_AM(uint16_t start) {
return devTEF_Set_Cmd(TEF_AM, Cmd_Set_Antenna, 5, start);
}
bool devTEF_Radio_Set_CoChannel_AM(uint16_t start) {
return devTEF_Set_Cmd(TEF_AM, Cmd_Set_CoChannelDet, 11, 1, 2, start, 1000, 3);
bool devTEF_Radio_Set_CoChannel_AM(uint8_t mode, uint16_t start, uint8_t level) {
return devTEF_Set_Cmd(TEF_AM, Cmd_Set_CoChannelDet, 11, mode, 2, start, 1000, level);
}
bool devTEF_Radio_Set_LevelOffset(int16_t offset) {
+1 -1
View File
@@ -81,7 +81,7 @@ bool devTEF_Radio_Set_Bandwidth(uint8_t mode, uint16_t bandwidth, uint16_t contr
bool devTEF_Radio_Set_BandwidthAM(uint8_t mode, uint16_t bandwidth, uint16_t control_sensitivity, uint16_t low_level_sensitivity);
bool devTEF_Radio_Set_Noiseblanker_AM(uint8_t mode, uint16_t start);
bool devTEF_Radio_Set_Attenuator_AM(uint16_t start);
bool devTEF_Radio_Set_CoChannel_AM(uint16_t start);
bool devTEF_Radio_Set_CoChannel_AM(uint8_t mode, uint16_t start, uint8_t level);
bool devTEF_Radio_Set_LevelOffset(int16_t offset);
bool devTEF_Radio_Set_AMLevelOffset(int16_t offset);
bool devTEF_Radio_Set_Stereo_Level(uint8_t mode, uint16_t start, uint16_t slope);
+4 -2
View File
@@ -101,9 +101,9 @@
// EEPROM index defines
#define EE_PRESETS_CNT 30
#define EE_CHECKBYTE_VALUE 33 // 0 ~ 255,add new entry, change for new value
#define EE_CHECKBYTE_VALUE 16 // 0 ~ 255,add new entry, change for new value
#define EE_TOTAL_CNT 274
#define EE_TOTAL_CNT 276
#define EE_UINT16_FREQUENCY_FM 0
#define EE_BYTE_VOLSET 4
#define EE_BYTE_STEREO 5
@@ -170,6 +170,8 @@
#define EE_BYTE_AF 268
#define EE_UINT16_FREQUENCY_OIRT 269
#define EE_BYTE_BATTERY_OPTIONS 273
#define EE_BYTE_AM_CO_DECT 274
#define EE_BYTE_AM_CO_DECT_COUNT 275
// End of EEPROM index defines
static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
+60 -3
View File
@@ -478,10 +478,13 @@ void BuildMenu() {
break;
case PAGE5:
tftPrint(-1, myLanguage[language][108], 8, ITEM1 + 6, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][173], 8, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][176], 8, ITEM3 + 6, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][108], 8, 36, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][173], 8, 56, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][176], 8, 76, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][185], 8, 96, ActiveColor, ActiveColorSmooth, 16);
tftPrint(-1, myLanguage[language][187], 8, 116, ActiveColor, ActiveColorSmooth, 16);
if (amcodect != 0) tftPrint(1, "%", 310, 96, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, 96, ActiveColor, ActiveColorSmooth, 16);
switch (hardwaremodel) {
case BASE_ILI9341: tftPrint(1, myLanguage[language][109], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break;
case PORTABLE_ILI9341: tftPrint(1, myLanguage[language][110 ], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); break;
@@ -495,6 +498,8 @@ void BuildMenu() {
}
if (radio.rds.rtbuffer) tftPrint(1, myLanguage[language][42], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM3 + 6, PrimaryColor, PrimaryColorSmooth, 16);
if (amcodect != 0) tftPrint(1, String(amcodect, DEC), 270, 96, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, 176, PrimaryColor, PrimaryColorSmooth, 16);
tftPrint(1, String(amcodectcount, DEC), 310, 116, PrimaryColor, PrimaryColorSmooth, 16);
break;
}
@@ -1140,8 +1145,28 @@ void MenuUp() {
if (radio.rds.rtbuffer) radio.rds.rtbuffer = false; else radio.rds.rtbuffer = true;
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
break;
case ITEM4:
if (amcodect != 0) tftPrint(0, String(amcodect, DEC) + " %", 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28);
amcodect++;
if (amcodect > 150 || amcodect <= 50) {
if (amcodect == 1) amcodect = 50; else amcodect = 0;
}
if (amcodect != 0) tftPrint(0, String(amcodect, DEC) + " %", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
case ITEM5:
tftPrint(0, String(amcodectcount, DEC), 155, 118, BackgroundColor, BackgroundColor, 28);
amcodectcount++;
if (amcodectcount > 15) amcodectcount = 1;
tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
}
break;
}
}
}
@@ -1409,6 +1434,7 @@ void MenuDown() {
break;
}
break;
case PAGE4:
switch (menuoption) {
case ITEM1:
@@ -1540,8 +1566,27 @@ void MenuDown() {
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
break;
case ITEM4:
if (amcodect != 0) tftPrint(0, String(amcodect, DEC) + " %", 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(1, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28);
amcodect--;
if (amcodect < 50 || amcodect > 150) {
if (amcodect > 150) amcodect = 150; else amcodect = 0;
}
if (amcodect != 0) tftPrint(0, String(amcodect, DEC) + " %", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
case ITEM5:
tftPrint(0, String(amcodectcount, DEC), 155, 118, BackgroundColor, BackgroundColor, 28);
amcodectcount--;
if (amcodectcount < 1) amcodectcount = 15;
tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
if (band > BAND_GAP) radio.setAMCoChannel(amcodect, amcodectcount);
break;
}
break;
}
}
}
@@ -1842,6 +1887,18 @@ void DoMenu() {
case ITEM3:
tftPrint(0, myLanguage[language][176], 155, 78, ActiveColor, ActiveColorSmooth, 28);
if (radio.rds.rtbuffer) tftPrint(0, myLanguage[language][42], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
break;
case ITEM4:
tftPrint(0, myLanguage[language][186], 155, 78, ActiveColor, ActiveColorSmooth, 28);
if (amcodect != 0) tftPrint(0, String(amcodect, DEC) + " %", 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(1, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
break;
case ITEM5:
tftPrint(0, myLanguage[language][188], 155, 78, ActiveColor, ActiveColorSmooth, 28);
tftPrint(0, String(amcodectcount, DEC), 155, 118, PrimaryColor, PrimaryColorSmooth, 28);
break;
}
break;
+2
View File
@@ -76,6 +76,8 @@ extern byte CurrentTheme;
extern byte ECCold;
extern byte fmdefaultstepsize;
extern byte fmnb;
extern byte amcodect;
extern byte amcodectcount;
extern byte hardwaremodel;
extern byte hardwaremodelold;
extern byte HighCutLevel;
+88 -24
View File
@@ -1,6 +1,6 @@
// [number of languages][number of texts][max. length of text]
static const char* const myLanguage[16][185] = {
static const char* const myLanguage[16][189] = {
{ "English", // English
"Rotary direction changed", // 1
"Please release button", // 2
@@ -185,7 +185,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Nederlands", // Dutch
@@ -372,7 +376,11 @@ static const char* const myLanguage[16][185] = {
"FM instellingen", // 181
"AM instellingen", // 182
"Connectiviteit", // 183
"DRUK OP MODE OM TERUG TE GAAN" // 184
"DRUK OP MODE OM TERUG TE GAAN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Polski", // Polish
@@ -559,7 +567,11 @@ static const char* const myLanguage[16][185] = {
"Ustawienia FM", // 181
"Ustawienia AM", // 182
"Lacznosc", // 183
"NACISNIJ MODE ABY POWROCIC" // 184
"NACISNIJ MODE ABY POWROCIC", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Hrvatski", // Croatian
@@ -746,7 +758,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Ελληνικά", // Greek
@@ -933,7 +949,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Romana", // Romanian
@@ -1120,7 +1140,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Deutsch", // German
@@ -1307,7 +1331,11 @@ static const char* const myLanguage[16][185] = {
"UKW Einstellungen", // 181
"AM Einstellungen", // 182
"Vernetzung", // 183
"DRÜCKE MODE FÜR ZURÜCK" // 184
"DRÜCKE MODE FÜR ZURÜCK", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Czech", // Czech
@@ -1494,7 +1522,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Slovak", // Slovak
@@ -1681,7 +1713,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Français", // French
@@ -1868,7 +1904,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Български", // Bulgarian
@@ -2055,7 +2095,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Русский", // Russian
@@ -2242,7 +2286,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Українська", // Ukranian
@@ -2429,7 +2477,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Italiano", // Italian
@@ -2616,7 +2668,11 @@ static const char* const myLanguage[16][185] = {
"FM settings", // 181
"AM settings", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
"PRESS MODE TO RETURN", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
},
{ "Simplified Chinese", // Simplified Chinese
@@ -2795,15 +2851,19 @@ static const char* const myLanguage[16][185] = {
"显示电池", // 173
"电压值", // 174
"电池百分比", // 175
"RT buffering", // 176
"Main settings", // 177
"Audio settings", // 178
"Display settings", // 179
"RDS settings", // 180
"FM settings", // 181
"AM settings", // 182
"RT 缓存", // 176
"主要设置", // 177
"音频设置", // 178
"显示设置", // 179
"RDS设置", // 180
"FM 设置", // 181
"AM 设置", // 182
"Connectivity", // 183
"PRESS MODE TO RETURN" // 184
" MODE 键返回", // 184
"AM载波跟踪", // 185
"设置跟踪灵敏度", // 186
"AM载波跟踪层级", // 187
"设置跟踪层级" // 188
},
{ "Norsk", // Norwegian
@@ -2990,7 +3050,11 @@ static const char* const myLanguage[16][185] = {
"FM innstillinger", // 181
"AM innstillinger", // 182
"Tilkobling", // 183
"TRYKK MODE FOR Å RETUNERE" // 184
"TRYKK MODE FOR Å RETUNERE", // 184
"AM CoChannelDet", // 185
"CoChannelDet sensitivity", // 186
"AM CoChannelDet threshold", // 187
"CoChannelDet counet" // 188
}
};