Added AF
This commit is contained in:
+75
-1
@@ -7,6 +7,74 @@ unsigned long rdstimer = 0;
|
||||
unsigned long bitStartTime = 0;
|
||||
bool lastBitState = false;
|
||||
|
||||
uint16_t TEF6686::TestAF() {
|
||||
|
||||
if (rds.hasRDS) {
|
||||
uint16_t status;
|
||||
uint16_t rdsStat;
|
||||
uint16_t dummy1;
|
||||
uint16_t dummy2;
|
||||
uint8_t dummy3;
|
||||
|
||||
int16_t aflevel;
|
||||
uint16_t afusn;
|
||||
uint16_t afwam;
|
||||
int16_t afoffset;
|
||||
|
||||
int16_t currentlevel;
|
||||
uint16_t currentusn;
|
||||
uint16_t currentwam;
|
||||
int16_t currentoffset;
|
||||
uint16_t currentpi;
|
||||
|
||||
byte timing;
|
||||
|
||||
devTEF_Radio_Get_Quality_Status(&status, ¤tlevel, ¤tusn, ¤twam, ¤toffset, &dummy1, &dummy2, &dummy3);
|
||||
devTEF_Radio_Get_RDS_Status(&rdsStat, ¤tpi, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
|
||||
for (int x = 0; x < af_counter; x++) {
|
||||
timing = 0;
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 3, af[x].frequency);
|
||||
while (timing == 0 && !bitRead(timing, 15)) {
|
||||
devTEF_Radio_Get_Quality_Status(&status, &aflevel, &afusn, &afwam, &afoffset, &dummy1, &dummy2, &dummy3);
|
||||
timing = lowByte(status);
|
||||
}
|
||||
af[x].score = aflevel - afusn - afwam;
|
||||
if (afoffset < -125 || afoffset > 125) af[x].score = -32767;
|
||||
}
|
||||
|
||||
int16_t highestValue = af[0].score;
|
||||
int highestIndex = 0;
|
||||
|
||||
for (int i = 1; i < af_counter; i++) {
|
||||
if (af[i].score > highestValue) {
|
||||
highestValue = af[i].score;
|
||||
highestIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
if (af_counter != 0 && af[highestIndex].afvalid && af[highestIndex].score > (currentlevel - currentusn - currentwam) && (af[highestIndex].score - (currentlevel - currentusn - currentwam)) >= 70) {
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, af[highestIndex].frequency);
|
||||
delay(200);
|
||||
devTEF_Radio_Get_RDS_Status(&rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
if ((rdsStat & (1 << 9)) && rds.rdsA == currentpi) {
|
||||
currentfreq = af[highestIndex].frequency;
|
||||
for (byte y = 0; y < 50; y++) {
|
||||
af[y].frequency = 0;
|
||||
af[y].score = -32767;
|
||||
af[y].afvalid = true;
|
||||
af[y].filler = false;
|
||||
af_counter = 0;
|
||||
}
|
||||
} else {
|
||||
af[highestIndex].afvalid = false;
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, currentfreq);
|
||||
}
|
||||
}
|
||||
}
|
||||
return currentfreq;
|
||||
}
|
||||
|
||||
|
||||
void TEF6686::init(byte TEF) {
|
||||
uint8_t bootstatus;
|
||||
@@ -210,7 +278,8 @@ bool TEF6686::getProcessing(uint16_t &highcut, uint16_t &stereo, uint16_t &sthib
|
||||
}
|
||||
|
||||
bool TEF6686::getStatus(int16_t &level, uint16_t &USN, uint16_t &WAM, int16_t &offset, uint16_t &bandwidth, uint16_t &modulation, uint8_t &snr) {
|
||||
bool result = devTEF_Radio_Get_Quality_Status(&level, &USN, &WAM, &offset, &bandwidth, &modulation, &snr);
|
||||
uint16_t status;
|
||||
bool result = devTEF_Radio_Get_Quality_Status(&status, &level, &USN, &WAM, &offset, &bandwidth, &modulation, &snr);
|
||||
return level;
|
||||
return USN;
|
||||
return WAM;
|
||||
@@ -438,10 +507,13 @@ void TEF6686::readRDS(bool showrdserrors)
|
||||
if (af[j].frequency > af[j + 1].frequency && af[j + 1].frequency != 0) {
|
||||
uint16_t temp = af[j].frequency;
|
||||
bool temp2 = af[j].filler;
|
||||
bool temp3 = af[j].afvalid;
|
||||
af[j].frequency = af[j + 1].frequency;
|
||||
af[j].filler = af[j + 1].filler;
|
||||
af[j].afvalid = af[j + 1].afvalid;
|
||||
af[j + 1].frequency = temp;
|
||||
af[j + 1].filler = temp2;
|
||||
af[j + 1].afvalid = temp3;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -726,7 +798,9 @@ void TEF6686::clearRDS (bool fullsearchrds)
|
||||
|
||||
for (i = 0; i < 50; i++) {
|
||||
af[i].frequency = 0;
|
||||
af[i].score = -32767;
|
||||
af[i].filler = false;
|
||||
af[i].afvalid = true;
|
||||
}
|
||||
|
||||
for (i = 0; i < 20; i++) {
|
||||
|
||||
@@ -144,7 +144,9 @@ typedef struct _rds_ {
|
||||
|
||||
typedef struct _af_ {
|
||||
uint16_t frequency;
|
||||
int16_t score;
|
||||
bool filler;
|
||||
bool afvalid;
|
||||
} af_;
|
||||
|
||||
typedef struct _eon_ {
|
||||
@@ -162,6 +164,7 @@ class TEF6686 {
|
||||
af_ af[50];
|
||||
eon_ eon[20];
|
||||
rds_ rds;
|
||||
uint16_t TestAF();
|
||||
void readRDS(bool showrdserrors);
|
||||
void SetFreq(uint16_t frequency);
|
||||
void SetFreqAM(uint16_t frequency);
|
||||
|
||||
@@ -206,10 +206,12 @@ bool devTEF_Radio_Get_Processing_Status (uint16_t *highcut, uint16_t *stereo, ui
|
||||
return r;
|
||||
}
|
||||
|
||||
bool devTEF_Radio_Get_Quality_Status (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr) {
|
||||
bool devTEF_Radio_Get_Quality_Status (uint16_t *status, int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr) {
|
||||
uint8_t buf[14];
|
||||
uint16_t r = devTEF_Get_Cmd(TEF_FM, Cmd_Get_Quality_Data, buf, sizeof(buf));
|
||||
|
||||
uint16_t test = Convert8bto16b(buf);
|
||||
bool bitValue = bitRead(test,15);
|
||||
*status = Convert8bto16b(buf);
|
||||
*level = Convert8bto16b(buf + 2);
|
||||
*usn = Convert8bto16b(buf + 4);
|
||||
*wam = Convert8bto16b(buf + 6);
|
||||
|
||||
@@ -64,7 +64,7 @@ bool devTEF_Set_Cmd(TEF_MODULE module, uint8_t cmd, uint16_t len, ...);
|
||||
bool devTEF_Radio_Get_Identification (uint16_t *device, uint16_t *hw_version, uint16_t *sw_version);
|
||||
bool devTEF_Radio_Tune_To (uint16_t frequency );
|
||||
bool devTEF_Radio_Tune_AM (uint16_t frequency );
|
||||
bool devTEF_Radio_Get_Quality_Status (int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr);
|
||||
bool devTEF_Radio_Get_Quality_Status (uint16_t *status, int16_t *level, uint16_t *usn, uint16_t *wam, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr);
|
||||
bool devTEF_Radio_Get_Processing_Status (uint16_t *highcut, uint16_t *stereo, uint16_t *sthiblend, uint8_t *stband_1, uint8_t *stband_2, uint8_t *stband_3, uint8_t *stband_4);
|
||||
bool devTEF_Radio_Get_Quality_Status_AM (int16_t *level, uint16_t *noise, uint16_t *cochannel, int16_t *offset, uint16_t *bandwidth, uint16_t *mod, uint8_t *snr);
|
||||
bool devTEF_APPL_Get_Operation_Status(uint8_t *bootstatus);
|
||||
|
||||
+3
-2
@@ -97,7 +97,7 @@
|
||||
#define EE_PRESETS_CNT 30
|
||||
#define EE_CHECKBYTE_VALUE 34 // 0 ~ 255,add new entry, change for new value
|
||||
|
||||
#define EE_TOTAL_CNT 268
|
||||
#define EE_TOTAL_CNT 269
|
||||
#define EE_UINT_FREQUENCY_FM 0
|
||||
#define EE_INT_VOLSET 4
|
||||
#define EE_UINT_CONVERTERSET 8
|
||||
@@ -156,7 +156,8 @@
|
||||
#define EE_BYTE_FMDEFAULTSTEPSIZE 261
|
||||
#define EE_BYTE_SCREENSAVERSET 262
|
||||
#define EE_INT_AMLEVELOFFSET 263
|
||||
#define EE_BYTE_UINT 267
|
||||
#define EE_BYTE_UNIT 267
|
||||
#define EE_BYTE_AF 268
|
||||
// End of EEPROM index defines
|
||||
|
||||
static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
|
||||
|
||||
+31
-16
@@ -1,6 +1,6 @@
|
||||
// [number of languages][number of texts][max. length of text]
|
||||
|
||||
static const char* const myLanguage[15][99] = {
|
||||
static const char* const myLanguage[15][100] = {
|
||||
{ "English", // English
|
||||
"Rotary direction changed", // 1
|
||||
"Please release button", // 2
|
||||
@@ -99,7 +99,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Nederlands", // Dutch
|
||||
@@ -200,7 +201,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% helderheid", // 95
|
||||
"50% helderheid", // 96
|
||||
"AM RF Level afwijking:", // 97
|
||||
"Signaalmeter eenheid:" // 98
|
||||
"Signaalmeter eenheid:", // 98
|
||||
"Gebruik AF:" // 99
|
||||
},
|
||||
|
||||
{ "Polski", // Polish
|
||||
@@ -301,7 +303,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% jasnosci", // 95
|
||||
"50% jasnosci", // 96
|
||||
"Odchylenie poziomu RF AM:", // 97
|
||||
"Jednostka sygnalu:" // 98
|
||||
"Jednostka sygnalu:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Hrvatski", // Croatian
|
||||
@@ -402,7 +405,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% svjetlina", // 95
|
||||
"50% svjetlina", // 96
|
||||
"AM pomak RF razine:", // 97
|
||||
"Jedinica mjerača signala:" // 98
|
||||
"Jedinica mjerača signala:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Ελληνικά", // Greek
|
||||
@@ -503,7 +507,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% φωτεινότητα", // 95
|
||||
"50% φωτεινότητα", // 96
|
||||
"AM Ολίσθηση επιπέδου RF:", // 97
|
||||
"Μονάδα μέτρησης σήματος:" // 98
|
||||
"Μονάδα μέτρησης σήματος:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Romana", // Romanian
|
||||
@@ -604,7 +609,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Deutsch", // German
|
||||
@@ -705,7 +711,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% Helligkeit", // 95
|
||||
"50% Helligkeit", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Czech", // Czech
|
||||
@@ -806,7 +813,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Slovak", // Slovak
|
||||
@@ -907,7 +915,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Français", // French
|
||||
@@ -1008,7 +1017,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Български", // Bulgarian
|
||||
@@ -1109,7 +1119,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% brightness", // 95
|
||||
"50% brightness", // 96
|
||||
"AM RF Level offset:", // 97
|
||||
"Signalmeter unit:" // 98
|
||||
"Signalmeter unit:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Русский", // Russian
|
||||
@@ -1210,7 +1221,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% яркости", // 95
|
||||
"50% яркости", // 96
|
||||
"Смещение уровня AM RF:", // 97
|
||||
"Измеритель сигнала:" // 98
|
||||
"Измеритель сигнала:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Українська", // Ukranian
|
||||
@@ -1311,7 +1323,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25% яскравості", // 95
|
||||
"50% яскравості", // 96
|
||||
"Зміщення рівня AM RF:", // 97
|
||||
"Вимірник сигналу:" // 98
|
||||
"Вимірник сигналу:", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Italiano", // Italian
|
||||
@@ -1412,7 +1425,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"25 % di luminosità", // 95
|
||||
"50 % di luminosità", // 96
|
||||
"Offset livello RF AM: ", // 97
|
||||
"Unità S - meter: " // 98
|
||||
"Unità S - meter: ", // 98
|
||||
"Use AF:" // 99
|
||||
},
|
||||
|
||||
{ "Simplified Chinese", // Simplified Chinese
|
||||
@@ -1513,7 +1527,8 @@ static const char* const myLanguage[15][99] = {
|
||||
"屏幕25% 亮度", // 95
|
||||
"屏幕50% 亮度", // 96
|
||||
"AM 高频信号偏移:", // 97
|
||||
"信号单位:" // 98
|
||||
"信号单位:", // 98
|
||||
"Use AF:" // 99
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user