MythTV  0.26-pre
dtvconfparserhelpers.cpp
Go to the documentation of this file.
00001 
00002 #include <QMutex>
00003 #include <QMap>
00004 
00005 #include "mythlogging.h"
00006 #include "dtvconfparserhelpers.h"
00007 
00008 bool DTVParamHelper::ParseParam(const QString &symbol, int &value,
00009                                 const DTVParamHelperStruct *table)
00010 {
00011     const DTVParamHelperStruct *p = table;
00012 
00013     while (!p->symbol.isEmpty())
00014     {
00015         if (p->symbol == symbol) //.left(p->symbol.length()))
00016         {
00017             //symbol = symbol.mid(p->symbol.length());
00018             value = p->value;
00019             return true;
00020         }
00021         p++;
00022     }
00023 
00024     return false;
00025 }
00026 
00027 QString DTVParamHelper::toString(const char *strings[], int index,
00028                                  uint strings_size)
00029 {
00030     if ((index < 0) || ((uint)index >= strings_size))
00031     {
00032         LOG(VB_GENERAL, LOG_ERR,
00033             "DTVParamHelper::toString() index out of bounds");
00034 
00035         return QString::null;
00036     }
00037 
00038     return strings[index];
00039 }
00040 
00041 const int DTVTunerType::kTunerTypeDVBS1   = 0x0000;
00042 const int DTVTunerType::kTunerTypeDVBS2   = 0x0020;
00043 const int DTVTunerType::kTunerTypeDVBC    = 0x0001;
00044 const int DTVTunerType::kTunerTypeDVBT    = 0x0002;
00045 const int DTVTunerType::kTunerTypeATSC    = 0x0003;
00046 const int DTVTunerType::kTunerTypeASI     = 0x1000;
00047 const int DTVTunerType::kTunerTypeOCUR    = 0x2000;
00048 const int DTVTunerType::kTunerTypeUnknown = 0x80000000;
00049 
00050 static QMutex dtv_tt_canonical_str_lock;
00051 static QMap<int,QString> dtv_tt_canonical_str;
00052 void DTVTunerType::initStr(void)
00053 {
00054     QMutexLocker locker(&dtv_tt_canonical_str_lock);
00055     dtv_tt_canonical_str[kTunerTypeATSC]    = "ATSC";
00056     dtv_tt_canonical_str[kTunerTypeDVBT]    = "OFDM";
00057     dtv_tt_canonical_str[kTunerTypeDVBC]    = "QAM";
00058     dtv_tt_canonical_str[kTunerTypeDVBS1]   = "QPSK";
00059     dtv_tt_canonical_str[kTunerTypeDVBS2]   = "DVB_S2";
00060     dtv_tt_canonical_str[kTunerTypeASI]     = "ASI";
00061     dtv_tt_canonical_str[kTunerTypeOCUR]    = "OCUR";
00062     dtv_tt_canonical_str[kTunerTypeUnknown] = "UNKNOWN";
00063 }
00064 
00065 QString DTVTunerType::toString(int _value)
00066 {
00067     QMutexLocker locker(&dtv_tt_canonical_str_lock);
00068     QMap<int,QString>::const_iterator it = dtv_tt_canonical_str.find(_value);
00069     if (it != dtv_tt_canonical_str.end())
00070         return *it;
00071     return dtv_tt_canonical_str[kTunerTypeUnknown];
00072 }
00073 
00074 const DTVParamHelperStruct DTVTunerType::parseTable[] =
00075 {
00076     { "QPSK",    kTunerTypeDVBS1   },
00077     { "QAM",     kTunerTypeDVBC    },
00078     { "OFDM",    kTunerTypeDVBT    },
00079     { "ATSC",    kTunerTypeATSC    },
00080     { "DVB_S2",  kTunerTypeDVBS2   },
00081     { "ASI",     kTunerTypeASI     },
00082     { "OCUR",    kTunerTypeOCUR    },
00083     { "UNKNOWN", kTunerTypeUnknown },
00084     { NULL,      kTunerTypeUnknown },
00085 };
00086 
00087 const DTVParamHelperStruct DTVInversion::confTable[] =
00088 {
00089    { "INVERSION_AUTO", kInversionAuto },
00090    { "INVERSION_OFF",  kInversionOff  },
00091    { "INVERSION_ON",   kInversionOn   },
00092    { NULL,             kInversionAuto },
00093 };
00094 
00095 const DTVParamHelperStruct DTVInversion::vdrTable[] =
00096 {
00097    { "999", kInversionAuto },
00098    { "0",   kInversionOff  },
00099    { "1",   kInversionOn   },
00100    { NULL,  kInversionAuto },
00101 };
00102 
00103 const DTVParamHelperStruct DTVInversion::parseTable[] =
00104 {
00105    { "a",  kInversionAuto },
00106    { "0",  kInversionOff  },
00107    { "1",  kInversionOn   },
00108    { NULL, kInversionAuto },
00109 };
00110 
00111 const char *DTVInversion::dbStr[DTVInversion::kDBStrCnt] =
00112 {
00113     "0", 
00114     "1", 
00115     "a"  
00116 };
00117 
00118 const DTVParamHelperStruct DTVBandwidth::confTable[] =
00119 {
00120    { "BANDWIDTH_AUTO",  kBandwidthAuto },
00121    { "BANDWIDTH_8_MHZ", kBandwidth8MHz },
00122    { "BANDWIDTH_7_MHZ", kBandwidth7MHz },
00123    { "BANDWIDTH_6_MHZ", kBandwidth6MHz },
00124    { NULL,              kBandwidthAuto },
00125 };
00126 
00127 const DTVParamHelperStruct DTVBandwidth::vdrTable[] =
00128 {
00129    { "999", kBandwidthAuto },
00130    { "8",   kBandwidth8MHz },
00131    { "7",   kBandwidth7MHz },
00132    { "6",   kBandwidth6MHz },
00133    { NULL,  kBandwidthAuto },
00134 };
00135 
00136 const DTVParamHelperStruct DTVBandwidth::parseTable[] =
00137 {
00138    { "a",    kBandwidthAuto },
00139    { "8",    kBandwidth8MHz },
00140    { "7",    kBandwidth7MHz },
00141    { "6",    kBandwidth6MHz },
00142    { NULL,   kBandwidthAuto },
00143 };
00144 
00145 const char *DTVBandwidth::dbStr[DTVBandwidth::kDBStrCnt] =
00146 {
00147     "8",   
00148     "7",   
00149     "6",   
00150     "a"    
00151 };
00152 
00153 const DTVParamHelperStruct DTVCodeRate::confTable[] =
00154 {
00155     { "FEC_AUTO", kFECAuto },
00156     { "FEC_1_2",  kFEC_1_2  },
00157     { "FEC_2_3",  kFEC_2_3  },
00158     { "FEC_3_4",  kFEC_3_4  },
00159     { "FEC_4_5",  kFEC_4_5  },
00160     { "FEC_5_6",  kFEC_5_6  },
00161     { "FEC_6_7",  kFEC_6_7  },
00162     { "FEC_7_8",  kFEC_7_8  },
00163     { "FEC_8_9",  kFEC_8_9  },
00164     { "FEC_NONE", kFECNone },
00165     { "FEC_3_5",  kFEC_3_5  },
00166     { "FEC_9_10", kFEC_9_10 },
00167     { NULL,       kFECAuto },
00168 };
00169 
00170 const DTVParamHelperStruct DTVCodeRate::vdrTable[] =
00171 {
00172     { "999", kFECAuto },
00173     { "12",  kFEC_1_2 },
00174     { "23",  kFEC_2_3 },
00175     { "34",  kFEC_3_4 },
00176     { "45",  kFEC_4_5 },
00177     { "56",  kFEC_5_6 },
00178     { "67",  kFEC_6_7 },
00179     { "78",  kFEC_7_8 },
00180     { "89",  kFEC_8_9 },
00181     { "0",   kFECNone },
00182     { "35",  kFEC_3_5 },
00183     { "910", kFEC_9_10 },
00184     { NULL,  kFECAuto }
00185 };
00186 
00187 const DTVParamHelperStruct DTVCodeRate::parseTable[] =
00188 {
00189     { "auto", kFECAuto },
00190     { "1/2",  kFEC_1_2 },
00191     { "2/3",  kFEC_2_3 },
00192     { "3/4",  kFEC_3_4 },
00193     { "4/5",  kFEC_4_5 },
00194     { "5/6",  kFEC_5_6 },
00195     { "6/7",  kFEC_6_7 },
00196     { "7/8",  kFEC_7_8 },
00197     { "8/9",  kFEC_8_9 },
00198     { "none", kFECNone },
00199     { "3/5",  kFEC_3_5 },
00200     { "9/10", kFEC_9_10},
00201     { NULL,   kFECAuto }
00202 };
00203 
00204 const char *DTVCodeRate::dbStr[DTVCodeRate::kDBStrCnt] =
00205 {
00206      "none", 
00207      "1/2",  
00208      "2/3",  
00209      "3/4",  
00210      "4/5",  
00211      "5/6",  
00212      "6/7",  
00213      "7/8",  
00214      "8/9",  
00215      "auto", 
00216      "3/5",  
00217      "9/10",  
00218 };
00219 
00220 const DTVParamHelperStruct DTVModulation::confTable[] =
00221 {
00222    { "QAM_AUTO", kModulationQAMAuto },
00223    { "QAM_16",   kModulationQAM16   },
00224    { "QAM_32",   kModulationQAM32   },
00225    { "QAM_64",   kModulationQAM64   },
00226    { "QAM_128",  kModulationQAM128  },
00227    { "QAM_256",  kModulationQAM256  },
00228    { "QPSK",     kModulationQPSK    },
00229    { "8VSB",     kModulation8VSB    },
00230    { "16VSB",    kModulation16VSB   },
00231    { "8PSK",     kModulation8PSK    },
00232    { "16APSK",   kModulation16APSK  },
00233    { "32APSK",   kModulation32APSK  },
00234    { "DQPSK",    kModulationDQPSK   },
00235    { "16PSK",    kModulationInvalid },
00236    { "2VSB",     kModulationInvalid },
00237    { "4VSB",     kModulationInvalid },
00238    { "BPSK",     kModulationInvalid },
00239    { "analog",   kModulationAnalog  },
00240    { NULL,       kModulationQAMAuto },
00241 };
00242 
00243 const DTVParamHelperStruct DTVModulation::vdrTable[] =
00244 {
00245    { "998", kModulationQAMAuto },
00246    { "16",  kModulationQAM16   },
00247    { "32",  kModulationQAM32   },
00248    { "64",  kModulationQAM64   },
00249    { "128", kModulationQAM128  },
00250    { "256", kModulationQAM256  },
00251    { "2",   kModulationQPSK    },
00252    { "5",   kModulation8PSK    },
00253    { "6",   kModulation16APSK  },
00254    { "7",   kModulation32APSK  },
00255    { "10",  kModulation8VSB    },
00256    { "11",  kModulation16VSB   },
00257    { NULL,  kModulationQAMAuto },
00258 };
00259 
00260 const DTVParamHelperStruct DTVModulation::parseTable[] =
00261 {
00262    { "auto",     kModulationQAMAuto },
00263    { "qam_16",   kModulationQAM16   },
00264    { "qam_32",   kModulationQAM32   },
00265    { "qam_64",   kModulationQAM64   },
00266    { "qam_128",  kModulationQAM128  },
00267    { "qam_256",  kModulationQAM256  },
00268    { "qpsk",     kModulationQPSK    },
00269    { "8vsb",     kModulation8VSB    },
00270    { "16vsb",    kModulation16VSB   },
00271    { "8psk",     kModulation8PSK    },
00272    { "16apsk",   kModulation16APSK  },
00273    { "32apsk",   kModulation32APSK  },
00274    { "dqpsk",    kModulationDQPSK   },
00275    // alternates
00276    { "a",        kModulationQAMAuto },
00277    { "qam_auto", kModulationQAMAuto },
00278    { "qam-16",   kModulationQAM16   },
00279    { "qam-32",   kModulationQAM32   },
00280    { "qam-64",   kModulationQAM64   },
00281    { "qam-128",  kModulationQAM128  },
00282    { "qam-256",  kModulationQAM256  },
00283    // qpsk, no alternative
00284    { "8-vsb",    kModulation8VSB    },
00285    { "16-vsb",   kModulation16VSB   },
00286    // bpsk, no alternative
00287    { "16-apsk",  kModulation16APSK  },
00288    { "32-apsk",  kModulation32APSK  },
00289    { "8-psk",    kModulation8PSK    },
00290    // removed modulations and alternatives
00291    { "bpsk",     kModulationInvalid },
00292    { "2vsb",     kModulationInvalid },
00293    { "2-vsb",    kModulationInvalid },
00294    { "4vsb",     kModulationInvalid },
00295    { "4-vsb",    kModulationInvalid },
00296    { "16psk",    kModulationInvalid },
00297    { "16-psk",   kModulationInvalid },
00298    { NULL,       kModulationQAMAuto },
00299 };
00300 
00301 const char *DTVModulation::dbStr[DTVModulation::kDBStrCnt] =
00302 {
00303     "qpsk",    
00304     "qam_16",  
00305     "qam_32",  
00306     "qam_64",  
00307     "qam_128", 
00308     "qam_256", 
00309     "auto",    
00310     "8vsb",    
00311     "16vsb",   
00312     "8psk",    
00313     "16apsk",  
00314     "32apsk",  
00315     "dqpsk"    
00316 };
00317 
00318 const DTVParamHelperStruct DTVTransmitMode::confTable[] =
00319 {
00320    { "TRANSMISSION_MODE_AUTO", kTransmissionModeAuto },
00321    { "TRANSMISSION_MODE_2K",   kTransmissionMode2K   },
00322    { "TRANSMISSION_MODE_8K",   kTransmissionMode8K   },
00323    { NULL,                     kTransmissionModeAuto },
00324 };
00325 
00326 const DTVParamHelperStruct DTVTransmitMode::vdrTable[] =
00327 {
00328    { "999", kTransmissionModeAuto },
00329    { "2",   kTransmissionMode2K   },
00330    { "8",   kTransmissionMode8K   },
00331    { NULL,  kTransmissionModeAuto },
00332 };
00333 
00334 const DTVParamHelperStruct DTVTransmitMode::parseTable[] =
00335 {
00336    { "a",    kTransmissionModeAuto },
00337    { "2",    kTransmissionMode2K   },
00338    { "8",    kTransmissionMode8K   },
00339    { NULL,   kTransmissionModeAuto },
00340 };
00341 
00342 const char *DTVTransmitMode::dbStr[DTVTransmitMode::kDBStrCnt] =
00343 {
00344     "2",   
00345     "8",   
00346     "a"    
00347 };
00348 
00349 const DTVParamHelperStruct DTVGuardInterval::confTable[] =
00350 {
00351    { "GUARD_INTERVAL_AUTO", kGuardIntervalAuto  },
00352    { "GUARD_INTERVAL_1_32", kGuardInterval_1_32 },
00353    { "GUARD_INTERVAL_1_16", kGuardInterval_1_16 },
00354    { "GUARD_INTERVAL_1_8",  kGuardInterval_1_8  },
00355    { "GUARD_INTERVAL_1_4",  kGuardInterval_1_4  },
00356    { NULL,                  kGuardIntervalAuto  },
00357 };
00358 
00359 const DTVParamHelperStruct DTVGuardInterval::vdrTable[] =
00360 {
00361    { "999", kGuardIntervalAuto  },
00362    { "32",  kGuardInterval_1_32 },
00363    { "16",  kGuardInterval_1_16 },
00364    { "8",   kGuardInterval_1_8  },
00365    { "4",   kGuardInterval_1_4  },
00366    { NULL,  kGuardIntervalAuto  },
00367 };
00368 
00369 const DTVParamHelperStruct DTVGuardInterval::parseTable[] =
00370 {
00371    { "auto", kGuardIntervalAuto  },
00372    { "1/32", kGuardInterval_1_32 },
00373    { "1/16", kGuardInterval_1_16 },
00374    { "1/8",  kGuardInterval_1_8  },
00375    { "1/4",  kGuardInterval_1_4  },
00376    { NULL,   kGuardIntervalAuto  },
00377 };
00378 
00379 const char *DTVGuardInterval::dbStr[DTVGuardInterval::kDBStrCnt] =
00380 {
00381     "1/32", 
00382     "1/16", 
00383     "1/8",  
00384     "1/4",  
00385     "auto"  
00386 };
00387 
00388 const DTVParamHelperStruct DTVHierarchy::confTable[] =
00389 {
00390    { "HIERARCHY_NONE", kHierarchyNone },
00391    { "HIERARCHY_1",    kHierarchy1    },
00392    { "HIERARCHY_2",    kHierarchy2    },
00393    { "HIERARCHY_4",    kHierarchy4    },
00394    { "HIERARCHY_AUTO", kHierarchyAuto },
00395    { NULL,             kHierarchyAuto },
00396 };
00397 
00398 const DTVParamHelperStruct DTVHierarchy::vdrTable[] =
00399 {
00400    { "0",   kHierarchyNone },
00401    { "1",   kHierarchy1    },
00402    { "2",   kHierarchy2    },
00403    { "4",   kHierarchy4    },
00404    { "999", kHierarchyAuto },
00405    { NULL,  kHierarchyAuto },
00406 };
00407 
00408 const DTVParamHelperStruct DTVHierarchy::parseTable[] =
00409 {
00410    { "n",  kHierarchyNone },
00411    { "1",  kHierarchy1    },
00412    { "2",  kHierarchy2    },
00413    { "4",  kHierarchy4    },
00414    { "a",  kHierarchyAuto },
00415    { NULL, kHierarchyAuto },
00416 };
00417 
00418 const char *DTVHierarchy::dbStr[DTVHierarchy::kDBStrCnt] =
00419 {
00420     "n", 
00421     "1", 
00422     "2", 
00423     "4", 
00424     "a"  
00425 };
00426 
00427 const DTVParamHelperStruct DTVPolarity::parseTable[] =
00428 {
00429     { "v",  kPolarityVertical   },
00430     { "h",  kPolarityHorizontal },
00431     { "r",  kPolarityRight      },
00432     { "l",  kPolarityLeft       },
00433     { NULL, kPolarityVertical   },
00434 };
00435 
00436 const char *DTVPolarity::dbStr[DTVPolarity::kDBStrCnt] =
00437 {
00438    "v", 
00439    "h", 
00440    "r", 
00441    "l"  
00442 };
00443 
00444 const DTVParamHelperStruct DTVModulationSystem::confTable[] =
00445 {
00446     { "SYS_UNDEFINED",     kModulationSystem_UNDEFINED     },
00447     { "SYS_DVBC_ANNEX_AC", kModulationSystem_DVBC_ANNEX_AC },
00448     { "SYS_DVBC_ANNEX_B",  kModulationSystem_DVBC_ANNEX_B  },
00449     { "SYS_DVBT",          kModulationSystem_DVBT          },
00450     { "SYS_DSS",           kModulationSystem_DSS           },
00451     { "SYS_DVBS",          kModulationSystem_DVBS          },
00452     { "SYS_DVBS2",         kModulationSystem_DVBS2         },
00453     { "SYS_DVBH",          kModulationSystem_DVBH          },
00454     { "SYS_ISDBT",         kModulationSystem_ISDBT         },
00455     { "SYS_ISDBS",         kModulationSystem_ISDBS         },
00456     { "SYS_ISDBC",         kModulationSystem_ISDBC         },
00457     { "SYS_ATSC",          kModulationSystem_ATSC          },
00458     { "SYS_ATSCMH",        kModulationSystem_ATSCMH        },
00459     { "SYS_DMBTH",         kModulationSystem_DMBTH         },
00460     { "SYS_CMMB",          kModulationSystem_CMMB          },
00461     { "SYS_DAB",           kModulationSystem_DAB           },
00462     { NULL,                kModulationSystem_UNDEFINED     },
00463 };
00464 
00465 const DTVParamHelperStruct DTVModulationSystem::vdrTable[] =
00466 {
00467     { "0",  kModulationSystem_DVBS      },
00468     { "1",  kModulationSystem_DVBS2     },
00469     { NULL, kModulationSystem_UNDEFINED },
00470 };
00471 
00472 const DTVParamHelperStruct DTVModulationSystem::parseTable[] =
00473 {
00474     { "UNDEFINED", kModulationSystem_UNDEFINED     },
00475     { "DVBC_AC",   kModulationSystem_DVBC_ANNEX_AC },
00476     { "DVBC_B",    kModulationSystem_DVBC_ANNEX_B  },
00477     { "DVBT",      kModulationSystem_DVBT          },
00478     { "DSS",       kModulationSystem_DSS           },
00479     { "DVB-S",     kModulationSystem_DVBS          },
00480     { "DVB-S2",    kModulationSystem_DVBS2         },
00481     { "DVBH",      kModulationSystem_DVBH          },
00482     { "ISDBT",     kModulationSystem_ISDBT         },
00483     { "ISDBS",     kModulationSystem_ISDBS         },
00484     { "ISDBC",     kModulationSystem_ISDBC         },
00485     { "ATSC",      kModulationSystem_ATSC          },
00486     { "ATSCMH",    kModulationSystem_ATSCMH        },
00487     { "DMBTH",     kModulationSystem_DMBTH         },
00488     { "CMMB",      kModulationSystem_CMMB          },
00489     { "DAB",       kModulationSystem_DAB           },
00490     { NULL,        kModulationSystem_UNDEFINED    },
00491 };
00492 
00493 const char *DTVModulationSystem::dbStr[DTVModulationSystem::kDBStrCnt] =
00494 {
00495     "UNDEFINED", 
00496     "DVBCAC",    
00497     "DVBC_B",    
00498     "DVBT",      
00499     "DSS",       
00500     "DVB-S",     
00501     "DVB-S2",    
00502     "DVBH",      
00503     "ISDBT",     
00504     "ISDBS",     
00505     "ISDBC",     
00506     "ATSC",      
00507     "ATSCMH",    
00508     "DMBTH",     
00509     "CMMB",      
00510     "DAB",       
00511 };
00512 
00513 const DTVParamHelperStruct DTVRollOff::confTable[] =
00514 {
00515    { "ROLLOFF_35",   kRollOff_35   },
00516    { "ROLLOFF_20",   kRollOff_20   },
00517    { "ROLLOFF_25",   kRollOff_25   },
00518    { "ROLLOFF_AUTO", kRollOff_Auto },
00519    { NULL,           kRollOff_35 },
00520 };
00521 
00522 const DTVParamHelperStruct DTVRollOff::vdrTable[] =
00523 {
00524    { "35",   kRollOff_35   },
00525    { "20",   kRollOff_20   },
00526    { "25",   kRollOff_25   },
00527    { "0",    kRollOff_Auto },
00528    { NULL,   kRollOff_35   },
00529 };
00530 const DTVParamHelperStruct DTVRollOff::parseTable[] =
00531 {
00532    { "0.35", kRollOff_35   },
00533    { "0.20", kRollOff_20   },
00534    { "0.25", kRollOff_25   },
00535    { "auto", kRollOff_Auto },
00536    { NULL,   kRollOff_35   },
00537 };
00538 
00539 const char *DTVRollOff::dbStr[DTVRollOff::kDBStrCnt] =
00540 {
00541    "0.35",   
00542    "0.20",   
00543    "0.25",   
00544    "auto", 
00545 };
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends