Index: libs/libmythtv/channelutil.cpp =================================================================== --- libs/libmythtv/channelutil.cpp (revision 9481) +++ libs/libmythtv/channelutil.cpp (working copy) @@ -20,51 +20,68 @@ { MSqlQuery query(MSqlQuery::InitCon()); // If transport not present add it, and move on to the next - query.prepare( - "INSERT INTO dtv_multiplex " - " (transportid, networkid, frequency, symbolrate, " - " fec, polarity, modulation, constellation, bandwidth, " - " hierarchy, hp_code_rate, lp_code_rate, guard_interval, " - " transmission_mode, inversion, sourceid, sistandard) " - "VALUES " - " (:TRANSPORTID, :NETWORKID, :FREQUENCY, :SYMBOLRATE, " - " :FEC, :POLARITY, :MODULATION, :CONSTELLATION, :BANDWIDTH, " - " :HIERARCHY, :HP_CODE_RATE, :LP_CODE_RATE, :GUARD_INTERVAL, " - " :TRANS_MODE, :INVERSION, :SOURCEID, :SISTANDARD);"); + query.prepare("SELECT * FROM dtv_multiplex WHERE sourceid=:SOURCEID AND transportid=:TRANSPORTID AND networkid=:NETWORKID"); query.bindValue(":SOURCEID", db_source_id); + if (network_id > 0) + query.bindValue(":NETWORKID", network_id); if (transport_id > 0) query.bindValue(":TRANSPORTID",transport_id); - if (network_id > 0) - query.bindValue(":NETWORKID", network_id); - query.bindValue(":FREQUENCY", frequency); - if (modulation != QString::null) - query.bindValue(":MODULATION", modulation); - query.bindValue(":SISTANDARD", sistandard); - if (symbol_rate >= 0) - query.bindValue(":SYMBOLRATE", symbol_rate); - if (polarity >= 0) - query.bindValue(":POLARITY", QString("%1").arg(polarity)); - if (inner_FEC != QString::null) - query.bindValue(":FEC", inner_FEC); - - if (set_odfm_info) + if (!query.exec() || !query.isActive()) { - query.bindValue(":INVERSION", QString("%1").arg(inversion)); - query.bindValue(":BANDWIDTH", QString("%1").arg(bandwidth)); - query.bindValue(":HP_CODE_RATE", hp_code_rate); - query.bindValue(":LP_CODE_RATE", lp_code_rate); - query.bindValue(":CONSTELLATION", constellation); - query.bindValue(":TRANS_MODE", QString("%1").arg(trans_mode)); - query.bindValue(":GUARD_INTERVAL", guard_interval); - query.bindValue(":HIERARCHY", QString("%1").arg(hierarchy)); + MythContext::DBError("Selecting duplicate transport from Database.", query); + return false; } - if (!query.exec() || !query.isActive()) + if (query.size() == 0) { - MythContext::DBError("Adding transport to Database.", query); - return false; + query.prepare( + "INSERT INTO dtv_multiplex " + " (transportid, networkid, frequency, symbolrate, " + " fec, polarity, modulation, constellation, bandwidth, " + " hierarchy, hp_code_rate, lp_code_rate, guard_interval, " + " transmission_mode, inversion, sourceid, sistandard) " + "VALUES " + " (:TRANSPORTID, :NETWORKID, :FREQUENCY, :SYMBOLRATE, " + " :FEC, :POLARITY, :MODULATION, :CONSTELLATION, :BANDWIDTH, " + " :HIERARCHY, :HP_CODE_RATE, :LP_CODE_RATE, :GUARD_INTERVAL, " + " :TRANS_MODE, :INVERSION, :SOURCEID, :SISTANDARD);"); + + query.bindValue(":SOURCEID", db_source_id); + if (transport_id > 0) + query.bindValue(":TRANSPORTID",transport_id); + if (network_id > 0) + query.bindValue(":NETWORKID", network_id); + query.bindValue(":FREQUENCY", frequency); + if (modulation != QString::null) + query.bindValue(":MODULATION", modulation); + query.bindValue(":SISTANDARD", sistandard); + + if (symbol_rate >= 0) + query.bindValue(":SYMBOLRATE", symbol_rate); + if (polarity >= 0) + query.bindValue(":POLARITY", QString("%1").arg(polarity)); + if (inner_FEC != QString::null) + query.bindValue(":FEC", inner_FEC); + + if (set_odfm_info) + { + query.bindValue(":INVERSION", QString("%1").arg(inversion)); + query.bindValue(":BANDWIDTH", QString("%1").arg(bandwidth)); + query.bindValue(":HP_CODE_RATE", hp_code_rate); + query.bindValue(":LP_CODE_RATE", lp_code_rate); + query.bindValue(":CONSTELLATION", constellation); + query.bindValue(":TRANS_MODE", QString("%1").arg(trans_mode)); + query.bindValue(":GUARD_INTERVAL", guard_interval); + query.bindValue(":HIERARCHY", QString("%1").arg(hierarchy)); + } + + if (!query.exec() || !query.isActive()) + { + MythContext::DBError("Adding transport to Database.", query); + return false; + } } return true; @@ -163,6 +180,9 @@ Alpha() OtherFrequencyInUse() */ + + if (cd.OtherFrequencyInUse() == 1) + VERBOSE(VB_SIPARSER, "Alternative frequency available, not used at present"); } else if (tag == DescriptorID::satellite_delivery_system) { @@ -206,29 +226,29 @@ if (mux >= 0) muxes.push_back(mux); } - else if (tag == DescriptorID::frequency_list) - { - const FrequencyListDescriptor cd(desc); - //uint ct = cd.CodingType(); //nd,sat,cable,terra - for (uint i = 0; i= 0) - muxes.push_back(mux); - } - } +// else if (tag == DescriptorID::frequency_list) +// { +// const FrequencyListDescriptor cd(desc); +// //uint ct = cd.CodingType(); //nd,sat,cable,terra +// for (uint i = 0; i= 0) +// muxes.push_back(mux); +// } +// } } /** \fn ChannelUtil::CreateMultiplexes(int, const NetworkInformationTable*)