diff --git a/src/driver/lcd4l.cpp b/src/driver/lcd4l.cpp index eba627c61..bdcbfe43b 100644 --- a/src/driver/lcd4l.cpp +++ b/src/driver/lcd4l.cpp @@ -78,6 +78,9 @@ extern CPictureViewer *g_PicViewer; #define RADIOTEXT LCD_DATADIR "radiotext" #define DOLBYDIGITAL LCD_DATADIR "dolbydigital" #define TUNER LCD_DATADIR "tuner" +#define TUNER_SIG LCD_DATADIR "tuner_sig" +#define TUNER_SNR LCD_DATADIR "tuner_snr" +#define TUNER_BER LCD_DATADIR "tuner_ber" #define VOLUME LCD_DATADIR "volume" #define MODE_REC LCD_DATADIR "mode_rec" #define MODE_REC_ICON LCD_DATADIR "mode_rec_icon" @@ -284,6 +287,9 @@ void CLCD4l::Init() m_Radiotext = -1; m_DolbyDigital = "n/a"; m_Tuner = -1; + m_Tuner_sig = -1; + m_Tuner_snr = -1; + m_Tuner_ber = -1; m_Volume = -1; m_ModeRec = -1; m_RecordCount = -1; @@ -563,15 +569,42 @@ void CLCD4l::ParseInfo(uint64_t parseID, bool newID, bool firstRun) /* ----------------------------------------------------------------- */ - if (CFEManager::getInstance()->getLiveFE()) + CFrontend *frontend = CFEManager::getInstance()->getLiveFE(); + if (frontend) { - int Tuner = 1 + CFEManager::getInstance()->getLiveFE()->getNumber(); + int Tuner = frontend->getNumber() + 1; if (m_Tuner != Tuner) { WriteFile(TUNER, to_string(Tuner)); m_Tuner = Tuner; } + + unsigned int sig = frontend->getSignalStrength() & 0xFFFF; + int Tuner_sig = (sig & 0xFFFF) * 100 / 65535; + + if (m_Tuner_sig != Tuner_sig) + { + WriteFile(TUNER_SIG, to_string(Tuner_sig)); + m_Tuner_sig = Tuner_sig; + } + + unsigned int snr = frontend->getSignalNoiseRatio() & 0xFFFF; + int Tuner_snr = (snr & 0xFFFF) * 100 / 65535; + + if (m_Tuner_snr != Tuner_snr) + { + WriteFile(TUNER_SNR, to_string(Tuner_snr)); + m_Tuner_snr = Tuner_snr; + } + + int Tuner_ber = frontend->getBitErrorRate(); + + if (m_Tuner_ber != Tuner_ber) + { + WriteFile(TUNER_BER, to_string(Tuner_ber)); + m_Tuner_ber = Tuner_ber; + } } /* ----------------------------------------------------------------- */ diff --git a/src/driver/lcd4l.h b/src/driver/lcd4l.h index f6e7908b0..6af4cb9c2 100644 --- a/src/driver/lcd4l.h +++ b/src/driver/lcd4l.h @@ -126,6 +126,9 @@ class CLCD4l int m_Radiotext; std::string m_DolbyDigital; int m_Tuner; + int m_Tuner_sig; + int m_Tuner_snr; + int m_Tuner_ber; int m_Volume; int m_ModeRec; int m_RecordCount;