+ default: // unknown rolloff
+ case 0: tmp = eDVBFrontendParametersSatellite::RollOff_alpha_0_35; break;
+ case 4: tmp = eDVBFrontendParametersSatellite::RollOff_alpha_0_25; break;
+ case 8: tmp = eDVBFrontendParametersSatellite::RollOff_alpha_0_20; break;
+ }
+ PutToDict(dict, "rolloff", tmp);
+ switch(parm_inversion & 0x30)
+ {
+ case 0: tmp = eDVBFrontendParametersSatellite::Pilot_Off; break;
+ case 0x10: tmp = eDVBFrontendParametersSatellite::Pilot_On; break;
+ case 0x20: tmp = eDVBFrontendParametersSatellite::Pilot_Unknown; break;
+ }
+ PutToDict(dict, "pilot", tmp);
+ tmp = eDVBFrontendParametersSatellite::System_DVB_S2;
+ }
+ else
+ tmp = eDVBFrontendParametersSatellite::System_DVB_S;
+#else
+ PutToDict(dict, "modulation", eDVBFrontendParametersSatellite::Modulation_QPSK );
+ tmp = eDVBFrontendParametersSatellite::System_DVB_S;
+#endif
+ PutToDict(dict, "system", tmp);
+}
+#endif
+
+static void fillDictWithCableData(ePyObject dict, const FRONTENDPARAMETERS &parm)
+{
+ long tmp=0;
+#if HAVE_DVB_API_VERSION < 3
+ PutToDict(dict, "frequency", parm_frequency);
+#else
+ PutToDict(dict, "frequency", parm_frequency/1000);
+#endif
+ PutToDict(dict, "symbol_rate", parm_u_qam_symbol_rate);
+ switch(parm_u_qam_fec_inner)
+ {
+ case FEC_NONE: tmp = eDVBFrontendParametersCable::FEC_None; break;
+ case FEC_1_2: tmp = eDVBFrontendParametersCable::FEC_1_2; break;
+ case FEC_2_3: tmp = eDVBFrontendParametersCable::FEC_2_3; break;
+ case FEC_3_4: tmp = eDVBFrontendParametersCable::FEC_3_4; break;
+ case FEC_5_6: tmp = eDVBFrontendParametersCable::FEC_5_6; break;
+ case FEC_7_8: tmp = eDVBFrontendParametersCable::FEC_7_8; break;
+#if HAVE_DVB_API_VERSION >= 3
+ case FEC_8_9: tmp = eDVBFrontendParametersCable::FEC_7_8; break;
+#endif
+ default:
+ case FEC_AUTO: tmp = eDVBFrontendParametersCable::FEC_Auto; break;
+ }
+ PutToDict(dict, "fec_inner", tmp);
+ switch(parm_u_qam_modulation)
+ {
+ case QAM_16: tmp = eDVBFrontendParametersCable::Modulation_QAM16; break;
+ case QAM_32: tmp = eDVBFrontendParametersCable::Modulation_QAM32; break;
+ case QAM_64: tmp = eDVBFrontendParametersCable::Modulation_QAM64; break;
+ case QAM_128: tmp = eDVBFrontendParametersCable::Modulation_QAM128; break;
+ case QAM_256: tmp = eDVBFrontendParametersCable::Modulation_QAM256; break;
+ default:
+ case QAM_AUTO: tmp = eDVBFrontendParametersCable::Modulation_Auto; break;
+ }
+ PutToDict(dict, "modulation", tmp);
+}
+
+static void fillDictWithTerrestrialData(ePyObject dict, const FRONTENDPARAMETERS &parm)
+{
+ long tmp=0;
+ PutToDict(dict, "frequency", parm_frequency);
+ switch (parm_u_ofdm_bandwidth)
+ {
+ case BANDWIDTH_8_MHZ: tmp = eDVBFrontendParametersTerrestrial::Bandwidth_8MHz; break;
+ case BANDWIDTH_7_MHZ: tmp = eDVBFrontendParametersTerrestrial::Bandwidth_7MHz; break;
+ case BANDWIDTH_6_MHZ: tmp = eDVBFrontendParametersTerrestrial::Bandwidth_6MHz; break;
+ default:
+ case BANDWIDTH_AUTO: tmp = eDVBFrontendParametersTerrestrial::Bandwidth_Auto; break;
+ }
+ PutToDict(dict, "bandwidth", tmp);
+ switch (parm_u_ofdm_code_rate_LP)
+ {
+ case FEC_1_2: tmp = eDVBFrontendParametersTerrestrial::FEC_1_2; break;
+ case FEC_2_3: tmp = eDVBFrontendParametersTerrestrial::FEC_2_3; break;
+ case FEC_3_4: tmp = eDVBFrontendParametersTerrestrial::FEC_3_4; break;
+ case FEC_5_6: tmp = eDVBFrontendParametersTerrestrial::FEC_5_6; break;
+ case FEC_7_8: tmp = eDVBFrontendParametersTerrestrial::FEC_7_8; break;
+ default:
+ case FEC_AUTO: tmp = eDVBFrontendParametersTerrestrial::FEC_Auto; break;
+ }
+ PutToDict(dict, "code_rate_lp", tmp);
+ switch (parm_u_ofdm_code_rate_HP)
+ {
+ case FEC_1_2: tmp = eDVBFrontendParametersTerrestrial::FEC_1_2; break;
+ case FEC_2_3: tmp = eDVBFrontendParametersTerrestrial::FEC_2_3; break;
+ case FEC_3_4: tmp = eDVBFrontendParametersTerrestrial::FEC_3_4; break;
+ case FEC_5_6: tmp = eDVBFrontendParametersTerrestrial::FEC_5_6; break;
+ case FEC_7_8: tmp = eDVBFrontendParametersTerrestrial::FEC_7_8; break;
+ default:
+ case FEC_AUTO: tmp = eDVBFrontendParametersTerrestrial::FEC_Auto; break;
+ }
+ PutToDict(dict, "code_rate_hp", tmp);
+ switch (parm_u_ofdm_constellation)
+ {
+ case QPSK: tmp = eDVBFrontendParametersTerrestrial::Modulation_QPSK; break;
+ case QAM_16: tmp = eDVBFrontendParametersTerrestrial::Modulation_QAM16; break;
+ case QAM_64: tmp = eDVBFrontendParametersTerrestrial::Modulation_QAM64; break;
+ default:
+ case QAM_AUTO: tmp = eDVBFrontendParametersTerrestrial::Modulation_Auto; break;
+ }
+ PutToDict(dict, "constellation", tmp);
+ switch (parm_u_ofdm_transmission_mode)
+ {
+ case TRANSMISSION_MODE_2K: tmp = eDVBFrontendParametersTerrestrial::TransmissionMode_2k; break;
+ case TRANSMISSION_MODE_8K: tmp = eDVBFrontendParametersTerrestrial::TransmissionMode_8k; break;
+ default:
+ case TRANSMISSION_MODE_AUTO: tmp = eDVBFrontendParametersTerrestrial::TransmissionMode_Auto; break;
+ }
+ PutToDict(dict, "transmission_mode", tmp);
+ switch (parm_u_ofdm_guard_interval)
+ {
+ case GUARD_INTERVAL_1_32: tmp = eDVBFrontendParametersTerrestrial::GuardInterval_1_32; break;
+ case GUARD_INTERVAL_1_16: tmp = eDVBFrontendParametersTerrestrial::GuardInterval_1_16; break;
+ case GUARD_INTERVAL_1_8: tmp = eDVBFrontendParametersTerrestrial::GuardInterval_1_8; break;
+ case GUARD_INTERVAL_1_4: tmp = eDVBFrontendParametersTerrestrial::GuardInterval_1_4; break;
+ default:
+ case GUARD_INTERVAL_AUTO: tmp = eDVBFrontendParametersTerrestrial::GuardInterval_Auto; break;
+ }
+ PutToDict(dict, "guard_interval", tmp);
+ switch (parm_u_ofdm_hierarchy_information)
+ {
+ case HIERARCHY_NONE: tmp = eDVBFrontendParametersTerrestrial::Hierarchy_None; break;
+ case HIERARCHY_1: tmp = eDVBFrontendParametersTerrestrial::Hierarchy_1; break;
+ case HIERARCHY_2: tmp = eDVBFrontendParametersTerrestrial::Hierarchy_2; break;
+ case HIERARCHY_4: tmp = eDVBFrontendParametersTerrestrial::Hierarchy_4; break;
+ default:
+ case HIERARCHY_AUTO: tmp = eDVBFrontendParametersTerrestrial::Hierarchy_Auto; break;
+ }
+ PutToDict(dict, "hierarchy_information", tmp);
+}
+
+void eDVBFrontend::getFrontendStatus(ePyObject dest)
+{
+ if (dest && PyDict_Check(dest))
+ {
+ const char *tmp = "UNKNOWN";
+ switch(m_state)
+ {
+ case stateIdle:
+ tmp="IDLE";