00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _DTVCONFPARSERHELPERS_H_
00033 #define _DTVCONFPARSERHELPERS_H_
00034
00035 #include <QString>
00036
00037
00038
00039
00040 struct DTVParamHelperStruct
00041 {
00042 QString symbol;
00043 int value;
00044 };
00045
00050 class DTVParamHelper
00051 {
00052 public:
00053 DTVParamHelper(int _value) : value(_value) { }
00054 DTVParamHelper &operator=(int _value) { value = _value; return *this; }
00055
00056 operator int() const { return value; }
00057 bool operator==(const int& v) const { return value == v; }
00058 bool operator!=(const int& v) const { return value != v; }
00059
00060 protected:
00061 static bool ParseParam(const QString &symbol, int &value,
00062 const DTVParamHelperStruct *table);
00063
00064 static QString toString(const char *strings[], int index,
00065 uint strings_size);
00066
00067 protected:
00068 int value;
00069 };
00070
00071 class DTVTunerType : public DTVParamHelper
00072 {
00073 static const DTVParamHelperStruct parseTable[];
00074
00075 public:
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 static const int kTunerTypeDVBS1;
00089 static const int kTunerTypeDVBS2;
00090 static const int kTunerTypeDVBC;
00091 static const int kTunerTypeDVBT;
00092 static const int kTunerTypeATSC;
00093
00094 static const int kTunerTypeASI;
00095 static const int kTunerTypeOCUR;
00096 static const int kTunerTypeUnknown;
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120 DTVTunerType(int _default = kTunerTypeUnknown)
00121 : DTVParamHelper(_default) { initStr(); }
00122
00123 bool Parse(const QString &_value)
00124 { return ParseParam(_value, value, parseTable); }
00125
00126 bool IsFECVariable(void) const
00127 {
00128 return ((kTunerTypeDVBC == value) ||
00129 (kTunerTypeDVBS1 == value) ||
00130 (kTunerTypeDVBS2 == value));
00131 }
00132
00133 bool IsModulationVariable(void) const
00134 {
00135 return ((kTunerTypeDVBC == value) ||
00136 (kTunerTypeATSC == value) ||
00137 (kTunerTypeDVBS2 == value));
00138 }
00139
00140 bool IsDiSEqCSupported(void) const
00141 {
00142 return ((kTunerTypeDVBS1 == value) ||
00143 (kTunerTypeDVBS2 == value));
00144 }
00145
00146 QString toString() const { return toString(value); }
00147
00148 static void initStr(void);
00149 static QString toString(int _value);
00150 };
00151
00152 class DTVInversion : public DTVParamHelper
00153 {
00154 protected:
00155 static const DTVParamHelperStruct confTable[];
00156 static const DTVParamHelperStruct vdrTable[];
00157 static const DTVParamHelperStruct parseTable[];
00158 static const uint kDBStrCnt = 3;
00159 static const char *dbStr[kDBStrCnt];
00160
00161 public:
00162 enum
00163 {
00164 kInversionOff,
00165 kInversionOn,
00166 kInversionAuto,
00167 };
00168
00169 DTVInversion(int _default = kInversionAuto)
00170 : DTVParamHelper(_default) { }
00171
00172 bool IsCompatible(const DTVInversion &other) const
00173 { return value == other.value || value == kInversionAuto ||
00174 other.value == kInversionAuto;
00175 }
00176
00177 bool ParseConf(const QString &_value)
00178 { return ParseParam(_value, value, confTable); }
00179 bool ParseVDR(const QString &_value)
00180 { return ParseParam(_value, value, vdrTable); }
00181 bool Parse(const QString &_value)
00182 { return ParseParam(_value, value, parseTable); }
00183
00184 QString toString() const { return toString(value); }
00185 QChar toChar() const
00186 { if (toString().length() > 0)
00187 return toString()[0]; else return QChar(0); }
00188
00189 static QString toString(int _value)
00190 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00191 };
00192
00193 class DTVBandwidth : public DTVParamHelper
00194 {
00195 protected:
00196 static const DTVParamHelperStruct confTable[];
00197 static const DTVParamHelperStruct vdrTable[];
00198 static const DTVParamHelperStruct parseTable[];
00199 static const uint kDBStrCnt = 4;
00200 static const char *dbStr[kDBStrCnt];
00201
00202 public:
00203 enum
00204 {
00205 kBandwidth8MHz,
00206 kBandwidth7MHz,
00207 kBandwidth6MHz,
00208 kBandwidthAuto,
00209 };
00210
00211 DTVBandwidth(int _default = kBandwidthAuto) : DTVParamHelper(_default) { }
00212
00213 bool IsCompatible(const DTVBandwidth &other) const
00214 { return value == other.value || value == kBandwidthAuto ||
00215 other.value == kBandwidthAuto;
00216 }
00217
00218 bool ParseConf(const QString &_value)
00219 { return ParseParam(_value, value, confTable); }
00220 bool ParseVDR(const QString &_value)
00221 { return ParseParam(_value, value, vdrTable); }
00222 bool Parse(const QString &_value)
00223 { return ParseParam(_value, value, parseTable); }
00224
00225 QString toString() const { return toString(value); }
00226 QChar toChar() const
00227 { if (toString().length() > 0)
00228 return toString()[0]; else return QChar(0); }
00229
00230 static QString toString(int _value)
00231 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00232 };
00233
00234 class DTVCodeRate : public DTVParamHelper
00235 {
00236 protected:
00237 static const DTVParamHelperStruct confTable[];
00238 static const DTVParamHelperStruct vdrTable[];
00239 static const DTVParamHelperStruct parseTable[];
00240 static const uint kDBStrCnt = 12;
00241 static const char *dbStr[kDBStrCnt];
00242
00243 public:
00244 enum
00245 {
00246 kFECNone,
00247 kFEC_1_2,
00248 kFEC_2_3,
00249 kFEC_3_4,
00250 kFEC_4_5,
00251 kFEC_5_6,
00252 kFEC_6_7,
00253 kFEC_7_8,
00254 kFEC_8_9,
00255 kFECAuto,
00256 kFEC_3_5,
00257 kFEC_9_10,
00258 };
00259
00260 DTVCodeRate(int _default = kFECAuto) : DTVParamHelper(_default) { }
00261
00262 bool IsCompatible(const DTVCodeRate &other) const
00263 { return value == other.value || value == kFECAuto ||
00264 other.value == kFECAuto;
00265 }
00266
00267 bool ParseConf(const QString &_value)
00268 { return ParseParam(_value, value, confTable); }
00269 bool ParseVDR(const QString &_value)
00270 { return ParseParam(_value, value, vdrTable); }
00271 bool Parse(const QString &_value)
00272 { return ParseParam(_value, value, parseTable); }
00273
00274 QString toString() const { return toString(value); }
00275
00276 static QString toString(int _value)
00277 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00278 };
00279
00280 class DTVModulation : public DTVParamHelper
00281 {
00282 protected:
00283 static const DTVParamHelperStruct confTable[];
00284 static const DTVParamHelperStruct vdrTable[];
00285 static const DTVParamHelperStruct parseTable[];
00286 static const uint kDBStrCnt = 13;
00287 static const char *dbStr[kDBStrCnt];
00288
00289 public:
00290 enum
00291 {
00292 kModulationQPSK,
00293 kModulationQAM16,
00294 kModulationQAM32,
00295 kModulationQAM64,
00296 kModulationQAM128,
00297 kModulationQAM256,
00298 kModulationQAMAuto,
00299 kModulation8VSB,
00300 kModulation16VSB,
00301 kModulation8PSK,
00302 kModulation16APSK,
00303 kModulation32APSK,
00304 kModulationDQPSK,
00305 kModulationInvalid = 0x100,
00306 kModulationAnalog = 0x200,
00307 };
00308
00309 DTVModulation(int _default = kModulationQAMAuto)
00310 : DTVParamHelper(_default) { }
00311
00312 bool IsCompatible(const DTVModulation &other) const
00313 { return value == other.value || value == kModulationQAMAuto ||
00314 other.value == kModulationQAMAuto;
00315 }
00316
00317 bool ParseConf(const QString &_value)
00318 { return ParseParam(_value, value, confTable); }
00319 bool ParseVDR(const QString &_value)
00320 { return ParseParam(_value, value, vdrTable); }
00321 bool Parse(const QString &_value)
00322 { return ParseParam(_value, value, parseTable); }
00323
00324 QString toString() const { return toString(value); }
00325
00326 static QString toString(int _value)
00327 {
00328 if (kModulationInvalid == _value)
00329 return "invalid";
00330 else if (kModulationAnalog == _value)
00331 return "analog";
00332 return DTVParamHelper::toString(dbStr, _value, kDBStrCnt);
00333 }
00334 };
00335
00336 class DTVTransmitMode : public DTVParamHelper
00337 {
00338 protected:
00339 static const DTVParamHelperStruct confTable[];
00340 static const DTVParamHelperStruct vdrTable[];
00341 static const DTVParamHelperStruct parseTable[];
00342 static const uint kDBStrCnt = 3;
00343 static const char *dbStr[kDBStrCnt];
00344
00345 public:
00346 enum
00347 {
00348 kTransmissionMode2K,
00349 kTransmissionMode8K,
00350 kTransmissionModeAuto,
00351 };
00352
00353 DTVTransmitMode(int _default = kTransmissionModeAuto)
00354 : DTVParamHelper(_default) { }
00355
00356 bool IsCompatible(const DTVTransmitMode &other) const
00357 { return value == other.value || value == kTransmissionModeAuto ||
00358 other.value == kTransmissionModeAuto;
00359 }
00360
00361 bool ParseConf(const QString &_value)
00362 { return ParseParam(_value, value, confTable); }
00363 bool ParseVDR(const QString &_value)
00364 { return ParseParam(_value, value, vdrTable); }
00365 bool Parse(const QString &_value)
00366 { return ParseParam(_value, value, parseTable); }
00367
00368 QString toString() const { return toString(value); }
00369 QChar toChar() const
00370 { if (toString().length() > 0)
00371 return toString()[0]; else return QChar(0); }
00372
00373 static QString toString(int _value)
00374 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00375 };
00376
00377 class DTVGuardInterval : public DTVParamHelper
00378 {
00379 protected:
00380 static const DTVParamHelperStruct confTable[];
00381 static const DTVParamHelperStruct vdrTable[];
00382 static const DTVParamHelperStruct parseTable[];
00383 static const uint kDBStrCnt = 5;
00384 static const char *dbStr[kDBStrCnt];
00385
00386 public:
00387 enum
00388 {
00389 kGuardInterval_1_32,
00390 kGuardInterval_1_16,
00391 kGuardInterval_1_8,
00392 kGuardInterval_1_4,
00393 kGuardIntervalAuto,
00394 };
00395
00396 DTVGuardInterval(int _default = kGuardIntervalAuto)
00397 : DTVParamHelper(_default) { }
00398
00399 bool IsCompatible(const DTVGuardInterval &other) const
00400 { return value == other.value || value == kGuardIntervalAuto ||
00401 other.value == kGuardIntervalAuto;
00402 }
00403
00404 bool ParseConf(const QString &_value)
00405 { return ParseParam(_value, value, confTable); }
00406 bool ParseVDR(const QString &_value)
00407 { return ParseParam(_value, value, vdrTable); }
00408 bool Parse(const QString &_value)
00409 { return ParseParam(_value, value, parseTable); }
00410
00411 QString toString() const { return toString(value); }
00412
00413 static QString toString(int _value)
00414 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00415 };
00416
00417 class DTVHierarchy : public DTVParamHelper
00418 {
00419 protected:
00420 static const DTVParamHelperStruct confTable[];
00421 static const DTVParamHelperStruct vdrTable[];
00422 static const DTVParamHelperStruct parseTable[];
00423 static const uint kDBStrCnt = 5;
00424 static const char *dbStr[kDBStrCnt];
00425
00426 public:
00427 enum
00428 {
00429 kHierarchyNone,
00430 kHierarchy1,
00431 kHierarchy2,
00432 kHierarchy4,
00433 kHierarchyAuto,
00434 };
00435
00436 DTVHierarchy(int _default = kHierarchyAuto) : DTVParamHelper(_default) { }
00437
00438 bool IsCompatible(const DTVHierarchy &other) const
00439 { return value == other.value || value == kHierarchyAuto ||
00440 other.value == kHierarchyAuto;
00441 }
00442
00443 bool ParseConf(const QString &_value)
00444 { return ParseParam(_value, value, confTable); }
00445 bool ParseVDR(const QString &_value)
00446 { return ParseParam(_value, value, vdrTable); }
00447 bool Parse(const QString &_value)
00448 { return ParseParam(_value, value, parseTable); }
00449
00450 QString toString() const { return toString(value); }
00451 QChar toChar() const
00452 { if (toString().length() > 0)
00453 return toString()[0]; else return QChar(0); }
00454
00455 static QString toString(int _value)
00456 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00457 };
00458
00459 class DTVPolarity : public DTVParamHelper
00460 {
00461 protected:
00462 static const DTVParamHelperStruct parseTable[];
00463 static const uint kDBStrCnt = 4;
00464 static const char *dbStr[kDBStrCnt];
00465
00466 public:
00467 enum PolarityValues
00468 {
00469 kPolarityVertical,
00470 kPolarityHorizontal,
00471 kPolarityRight,
00472 kPolarityLeft
00473 };
00474
00475 DTVPolarity(int _default = kPolarityVertical)
00476 : DTVParamHelper(_default) { }
00477
00478 bool ParseConf(const QString &_value)
00479 { return ParseParam(_value, value, parseTable); }
00480 bool ParseVDR(const QString &_value)
00481 { return ParseParam(_value, value, parseTable); }
00482 bool Parse(const QString &_value)
00483 { return ParseParam(_value, value, parseTable); }
00484
00485 QString toString() const { return toString(value); }
00486 QChar toChar() const
00487 { if (toString().length() > 0)
00488 return toString()[0]; else return QChar(0); }
00489
00490 static QString toString(int _value)
00491 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00492 };
00493
00494 class DTVModulationSystem : public DTVParamHelper
00495 {
00496 protected:
00497 static const DTVParamHelperStruct confTable[];
00498 static const DTVParamHelperStruct vdrTable[];
00499 static const DTVParamHelperStruct parseTable[];
00500 static const uint kDBStrCnt = 16;
00501 static const char *dbStr[kDBStrCnt];
00502
00503 public:
00504 enum
00505 {
00506 kModulationSystem_UNDEFINED,
00507 kModulationSystem_DVBC_ANNEX_AC,
00508 kModulationSystem_DVBC_ANNEX_B,
00509 kModulationSystem_DVBT,
00510 kModulationSystem_DSS,
00511 kModulationSystem_DVBS,
00512 kModulationSystem_DVBS2,
00513 kModulationSystem_DVBH,
00514 kModulationSystem_ISDBT,
00515 kModulationSystem_ISDBS,
00516 kModulationSystem_ISDBC,
00517 kModulationSystem_ATSC,
00518 kModulationSystem_ATSCMH,
00519 kModulationSystem_DMBTH,
00520 kModulationSystem_CMMB,
00521 kModulationSystem_DAB,
00522 };
00523
00524 DTVModulationSystem(int _default = kModulationSystem_UNDEFINED)
00525 : DTVParamHelper(_default) { }
00526
00527 bool ParseConf(const QString &_value)
00528 { return ParseParam(_value, value, confTable); }
00529 bool ParseVDR(const QString &_value)
00530 { return ParseParam(_value, value, vdrTable); }
00531 bool Parse(const QString &_value)
00532 { return ParseParam(_value, value, parseTable); }
00533
00534 QString toString() const { return toString(value); }
00535
00536 static QString toString(int _value)
00537 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00538 };
00539
00540 class DTVRollOff : public DTVParamHelper
00541 {
00542 protected:
00543 static const DTVParamHelperStruct confTable[];
00544 static const DTVParamHelperStruct vdrTable[];
00545 static const DTVParamHelperStruct parseTable[];
00546 static const uint kDBStrCnt = 4;
00547 static const char *dbStr[kDBStrCnt];
00548
00549 public:
00550 enum
00551 {
00552 kRollOff_35,
00553 kRollOff_20,
00554 kRollOff_25,
00555 kRollOff_Auto,
00556 };
00557
00558 DTVRollOff(int _default = kRollOff_35)
00559 : DTVParamHelper(_default) { }
00560
00561 bool IsCompatible(const DTVRollOff &other) const
00562 { return value == other.value || value == kRollOff_Auto ||
00563 other.value == kRollOff_Auto;
00564 }
00565
00566 bool ParseConf(const QString &_value)
00567 { return ParseParam(_value, value, confTable); }
00568 bool ParseVDR(const QString &_value)
00569 { return ParseParam(_value, value, vdrTable); }
00570 bool Parse(const QString &_value)
00571 { return ParseParam(_value, value, parseTable); }
00572
00573 QString toString() const { return toString(value); }
00574
00575 static QString toString(int _value)
00576 { return DTVParamHelper::toString(dbStr, _value, kDBStrCnt); }
00577 };
00578
00579 #endif // _DTVCONFPARSERHELPERS_H_