Improved extended bandwidth function

This commit is contained in:
Sjef Verhoeven PE5PVB
2025-09-03 16:37:04 +02:00
parent 498476fc57
commit 49243a5fcf
6 changed files with 17 additions and 4 deletions

View File

@@ -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) {

View File

@@ -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:

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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
};