diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 91350ce..cc66263 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -3455,6 +3455,7 @@ void ShowOffset() { // Right arrow dimmed (◀) tft.fillTriangle(rightArrowBaseX, arrowBaseYTop, centerX + arrowGap, centerY, rightArrowBaseX, arrowBaseYBottom, SignificantColor); tuned = false; + radio.extendBW(false); } else if (USN < 250 && WAM < 250 && OStatus > -250 && OStatus < 250 && !SQ) { // Both arrows dimmed tft.fillTriangle(leftArrowBaseX, arrowBaseYTop, centerX - arrowGap, centerY, leftArrowBaseX, arrowBaseYBottom, GreyoutColor); @@ -3462,6 +3463,7 @@ void ShowOffset() { // Center dot active tft.fillCircle(centerX, centerY, 3, InsignificantColor); tuned = true; + radio.extendBW(true); } else if (OStatus > 250) { // Right arrow active (◀) tft.fillTriangle(rightArrowBaseX, arrowBaseYTop, centerX + arrowGap, centerY, rightArrowBaseX, arrowBaseYBottom, GreyoutColor); @@ -3470,12 +3472,14 @@ void ShowOffset() { // Left arrow dimmed (▶) tft.fillTriangle(leftArrowBaseX, arrowBaseYTop, centerX - arrowGap, centerY, leftArrowBaseX, arrowBaseYBottom, SignificantColor); tuned = false; + radio.extendBW(false); } else { // Everything dimmed tft.fillTriangle(leftArrowBaseX, arrowBaseYTop, centerX - arrowGap, centerY, leftArrowBaseX, arrowBaseYBottom, GreyoutColor); tft.fillTriangle(rightArrowBaseX, arrowBaseYTop, centerX + arrowGap, centerY, rightArrowBaseX, arrowBaseYBottom, GreyoutColor); tft.fillCircle(centerX, centerY, 3, GreyoutColor); tuned = false; + radio.extendBW(false); } } else { if (OStatus < -2) { diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index e364e03..285320b 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -175,6 +175,10 @@ void TEF6686::power(bool mode) { if (mode == 0) devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 1, 10000); } +void TEF6686::extendBW(bool yesno) { + devTEF_Radio_Extend_BW(yesno); +} + void TEF6686::SetFreq(uint16_t frequency) { devTEF_Radio_Tune_To(frequency); currentfreq = ((frequency + 5) / 10) * 10; @@ -597,8 +601,8 @@ void TEF6686::readRDS(byte showrdserrors) { if (!rds.rdsBerror || showrdserrors == 3) rdsblock = rds.rdsB >> 11; else return; rds.blockcounter[rdsblock]++; - processed_rdsblocks++; - + processed_rdsblocks++; + switch (rdsblock) { case RDS_GROUP_0A: case RDS_GROUP_0B: diff --git a/src/TEF6686.h b/src/TEF6686.h index 729079d..5db3a45 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -727,6 +727,7 @@ class TEF6686 { void setUnMute(); void setVolume(int8_t volume); void tone(uint16_t time, int16_t amplitude, uint16_t frequency); + void extendBW(bool yesno); uint16_t getBlockA(void); String trimTrailingSpaces(String str); uint8_t af_counter; diff --git a/src/Tuner_Drv_Lithio.cpp b/src/Tuner_Drv_Lithio.cpp index 0877bf8..51ee593 100644 --- a/src/Tuner_Drv_Lithio.cpp +++ b/src/Tuner_Drv_Lithio.cpp @@ -132,6 +132,10 @@ void devTEF_Radio_Set_ChannelEqualizer(bool eq) { devTEF_Set_Cmd(TEF_FM, Cmd_Set_ChannelEqualizer, 5, eq); } +void devTEF_Radio_Extend_BW(bool yesno) { + devTEF_Set_Cmd(TEF_FM, Cmd_Set_Bandwidth_Options, 5, (yesno ? 400 : 950)); +} + void devTEF_Radio_Set_Stereo_Min(bool mode) { if (mode) devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Min, 7, 2); else devTEF_Set_Cmd(TEF_FM, Cmd_Set_Stereo_Min, 7, 0); } diff --git a/src/Tuner_Drv_Lithio.h b/src/Tuner_Drv_Lithio.h index 2c59391..e36abfb 100644 --- a/src/Tuner_Drv_Lithio.h +++ b/src/Tuner_Drv_Lithio.h @@ -36,6 +36,7 @@ typedef enum { Cmd_Set_StHiBlend_Max = 75, Cmd_Set_RDS = 81, Cmd_Set_Specials = 85, + Cmd_Set_Bandwidth_Options = 86, Cmd_Set_StBandBlend_Time = 90, Cmd_Set_StBandBlend_Gain = 91, Cmd_Set_StBandBlend_Bias = 92, @@ -103,6 +104,7 @@ void devTEF_Radio_Set_NoisBlanker(uint8_t mode, uint16_t start); void devTEF_Radio_Set_Wavegen(bool mode, int16_t amplitude, uint16_t freq); void devTEF_Radio_Set_I2S_Input(bool mode); void devTEF_Radio_Set_GPIO(uint8_t mode); +void devTEF_Radio_Extend_BW(bool yesno); bool devTEF_Radio_Get_Identification (uint16_t *device, uint16_t *hw_version, uint16_t *sw_version); 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, int8_t *snr); diff --git a/src/Tuner_Interface.cpp b/src/Tuner_Interface.cpp index 3043f29..7a944e0 100644 --- a/src/Tuner_Interface.cpp +++ b/src/Tuner_Interface.cpp @@ -15,9 +15,7 @@ const unsigned char tuner_init_tab[] PROGMEM = { 9, 0x20, 0x49, 0x01, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x8C, 9, 0x20, 0x4A, 0x01, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x8C, 7, 0x20, 0x4B, 0x01, 0x00, 0x00, 0x0F, 0xA0, - 5, 0x20, 0x56, 0x01, 0x01, 0xf4, 7, 0x30, 0x15, 0x01, 0x00, 0x80, 0x00, 0x01, - 13, 0x30, 0x16, 0x01, 0x00, 0x20, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x12, 0xc0, 13, 0x30, 0x16, 0x01, 0x00, 0x21, 0x00, 0x02, 0x00, 0x10, 0x01, 0x00, 0x12, 0xc0, 7, 0x30, 0x0d, 0x01, 0x00, 0x80, 0x00, 0xe0 };