Merge pull request #145 from Dima73/tuner
[openblackhole/openblackhole-enigma2.git] / lib / dvb / frontend.cpp
index f48119d..f9f5242 100644 (file)
@@ -782,6 +782,7 @@ void eDVBFrontend::calculateSignalQuality(int snr, int &signalquality, int &sign
 {
        int sat_max = 1600; // for stv0288 / bsbe2
        int ret = 0x12345678;
 {
        int sat_max = 1600; // for stv0288 / bsbe2
        int ret = 0x12345678;
+       int ter_max = 2900;
        if (!strcmp(m_description, "AVL2108")) // ET9000
        {
                ret = (int)(snr / 40.5);
        if (!strcmp(m_description, "AVL2108")) // ET9000
        {
                ret = (int)(snr / 40.5);
@@ -990,10 +991,15 @@ void eDVBFrontend::calculateSignalQuality(int snr, int &signalquality, int &sign
                {
                        case eDVBFrontendParametersTerrestrial::System_DVB_T:
                        case eDVBFrontendParametersTerrestrial::System_DVB_T2: 
                {
                        case eDVBFrontendParametersTerrestrial::System_DVB_T:
                        case eDVBFrontendParametersTerrestrial::System_DVB_T2: 
-                       case eDVBFrontendParametersTerrestrial::System_DVB_T_T2: ret = (int)((snr * 10) / 15); break;
+                       case eDVBFrontendParametersTerrestrial::System_DVB_T_T2: ret = (int)(snr / 58); ter_max = 1700; break;
                        default: break;
                }
        }
                        default: break;
                }
        }
+       else if (strstr(m_description, "Sundtek DVB-T (III)")) // Sundtek MediaTV Digital Home III...dvb-t/t2 mode
+       {
+               ret = (int)(snr / 75);
+               ter_max = 1700;
+       }
 
        signalqualitydb = ret;
        if (ret == 0x12345678) // no snr db calculation avail.. return untouched snr value..
 
        signalqualitydb = ret;
        if (ret == 0x12345678) // no snr db calculation avail.. return untouched snr value..
@@ -1013,7 +1019,7 @@ void eDVBFrontend::calculateSignalQuality(int snr, int &signalquality, int &sign
                        signalquality = (ret >= 4200 ? 65536 : ret * 65536 / 4200);
                        break;
                case feTerrestrial: // we assume a max of 29db here
                        signalquality = (ret >= 4200 ? 65536 : ret * 65536 / 4200);
                        break;
                case feTerrestrial: // we assume a max of 29db here
-                       signalquality = (ret >= 2900 ? 65536 : ret * 65536 / 2900);
+                       signalquality = (ret >= ter_max ? 65536 : ret * 65536 / ter_max);
                        break;
                case feATSC: // we assume a max of 42db here
                        signalquality = (ret >= 4200 ? 65536 : ret * 65536 / 4200);
                        break;
                case feATSC: // we assume a max of 42db here
                        signalquality = (ret >= 4200 ? 65536 : ret * 65536 / 4200);