From 3139f3d9f436e293e9884a3e79179d23395023d5 Mon Sep 17 00:00:00 2001 From: Horst Beham Date: Sat, 3 Jun 2023 10:38:11 +0200 Subject: [PATCH] Various changes and refactorings to integrate the suggested changes from pull-request https://github.com/PredatH0r/ChanSort/pull/358 to handle the distinction between IP-antenna, IP-cable, IP-sat and DVB-T, DVB-C, DVB-S for Panasonic TVs. - SignalSource.IP is now treated as a broadcast system (distinguishing Analog/Dvb/Ip) and no longer a broadcast medium (like antenna/cable/sat). - SignalSource.Digital was renamed to DVB --- .../Controller/CsvRefListSerializer.cs | 26 +++++--- source/ChanSort.Api/Model/ChannelInfo.cs | 4 +- source/ChanSort.Api/Model/ChannelList.cs | 10 ++-- source/ChanSort.Api/Model/DataRoot.cs | 4 +- source/ChanSort.Api/Model/Enums.cs | 60 +++++++++++-------- .../CmdbFileSerializer.cs | 2 +- source/ChanSort.Loader.DBM/DbmSerializer.cs | 6 +- source/ChanSort.Loader.Enigma2/Serializer.cs | 4 +- source/ChanSort.Loader.Grundig/Serializer.cs | 4 +- .../HisBin/HisSvlBinSerializer.cs | 6 +- .../ServicelistDb/ServicelistDbSerializer.cs | 4 +- .../ChanSort.Loader.LG/Binary/DtvChannel.cs | 2 +- .../Binary/TllChannelBase.cs | 2 +- .../GlobalClone/GcJsonSerializer.cs | 2 +- .../GlobalClone/GcXmlSerializer.cs | 2 +- source/ChanSort.Loader.Loewe/Serializer.cs | 2 +- source/ChanSort.Loader.M3u/Channel.cs | 2 +- source/ChanSort.Loader.M3u/Serializer.cs | 2 +- .../MedionSerializer.cs | 2 +- source/ChanSort.Loader.Panasonic/DbChannel.cs | 33 +++++++++- .../SvlSerializer.cs | 41 +++++++++---- .../BinarySerializer.cs | 12 ++-- .../ChanSort.Loader.Philips/XmlSerializer.cs | 6 +- .../Scm/ScmSerializer.cs | 2 +- .../ChanSort.Loader.Samsung/Zip/DbChannel.cs | 2 +- .../Zip/DbSerializer.cs | 8 +-- source/ChanSort.Loader.SatcoDX/Channel.cs | 2 +- source/ChanSort.Loader.Sony/Serializer.cs | 2 +- .../ChanSort.Loader.TCL/DtvDataSerializer.cs | 8 +-- .../VisionEdge4KDbSerializer.cs | 2 +- source/ChanSort/MainForm.cs | 36 +++++------ source/ChanSort/Properties/Resources.de.resx | 2 +- source/ChanSort/Properties/Resources.es.resx | 2 +- source/ChanSort/Properties/Resources.hu.resx | 2 +- source/ChanSort/Properties/Resources.pl.resx | 2 +- source/ChanSort/Properties/Resources.resx | 2 +- source/ChanSort/Properties/Resources.ro.resx | 2 +- source/ChanSort/Properties/Resources.tr.resx | 2 +- source/ChanSort/Properties/licenses.licx | 3 + source/ChanSort/ReferenceListForm.cs | 13 ++-- source/ChanSort/ReferenceListForm.resx | 17 +++--- .../PhilipsXmlStatsCollector.cs | 2 +- .../Test.Loader.Samsung/Scm/SamsungScmTest.cs | 4 +- .../Test.Loader.Samsung/Zip/SamsungZipTest.cs | 4 +- source/Test.Loader/LgTest.cs | 2 +- 45 files changed, 211 insertions(+), 148 deletions(-) diff --git a/source/ChanSort.Api/Controller/CsvRefListSerializer.cs b/source/ChanSort.Api/Controller/CsvRefListSerializer.cs index 0ad21e1..121d62c 100644 --- a/source/ChanSort.Api/Controller/CsvRefListSerializer.cs +++ b/source/ChanSort.Api/Controller/CsvRefListSerializer.cs @@ -121,12 +121,13 @@ namespace ChanSort.Api SignalSource s = 0; var code = parts[5]; if (code[0] == 'A') s |= SignalSource.Analog; - else if (code[0] == 'D') s |= SignalSource.Digital; + else if (code[0] == 'D') s |= SignalSource.Dvb; + else if (code[0] == 'I') s |= SignalSource.Ip; if (code[1] == 'A') s |= SignalSource.Antenna; else if (code[1] == 'C') s |= SignalSource.Cable; else if (code[1] == 'S') s |= SignalSource.Sat; - else if (code[1] == 'I') s |= SignalSource.IP; + else if (code[1] == 'I') s |= SignalSource.IpSat; // legacy value with the assumption that IP was mutually exclusive to antenna/cable/sat if (code[2] == 'T') s |= SignalSource.Tv; else if (code[2] == 'R') s |= SignalSource.Radio; @@ -189,10 +190,16 @@ namespace ChanSort.Api sb.Append("DVB-C"); else if ((signalSource & SignalSource.DvbS) == SignalSource.DvbS) sb.Append("DVB-S"); - else if ((signalSource & SignalSource.IP) == SignalSource.IP) - sb.Append("IP"); - else if ((signalSource & SignalSource.Digital) == SignalSource.Digital) + else if ((signalSource & SignalSource.IpAntenna) == SignalSource.IpAntenna) + sb.Append("IP-T"); + else if ((signalSource & SignalSource.IpCable) == SignalSource.IpCable) + sb.Append("IP-C"); + else if ((signalSource & SignalSource.IpSat) == SignalSource.IpSat) + sb.Append("IP-S"); + else if ((signalSource & SignalSource.Dvb) == SignalSource.Dvb) sb.Append("DVB"); + else if ((signalSource & SignalSource.Ip) == SignalSource.Ip) + sb.Append("IP"); else if ((signalSource & SignalSource.Analog) == SignalSource.Analog) sb.Append("Analog"); @@ -272,17 +279,20 @@ namespace ChanSort.Api { var sb = new StringBuilder(); if ((signalSource & SignalSource.Analog) != 0) sb.Append('A'); - else sb.Append('D'); + else if ((signalSource & SignalSource.Dvb) != 0) sb.Append('D'); + else if ((signalSource & SignalSource.Ip) != 0) sb.Append('I'); + else sb.Append(' '); if ((signalSource & SignalSource.Antenna) != 0) sb.Append('A'); else if ((signalSource & SignalSource.Cable) != 0) sb.Append('C'); else if ((signalSource & SignalSource.Sat) != 0) sb.Append('S'); - else sb.Append("I"); + else sb.Append(' '); // "I" is no longer exported as it is now considered a broadcast system option rather than a broadcast medium if ((signalSource & SignalSource.Radio) != 0) sb.Append('R'); + else if ((signalSource & SignalSource.Data) != 0) sb.Append('D'); else sb.Append('T'); - sb.Append((int) signalSource >> 12); + sb.Append((int) signalSource >> 12); // preset list (Astra HD+, FreeSat, ...) return sb.ToString(); } diff --git a/source/ChanSort.Api/Model/ChannelInfo.cs b/source/ChanSort.Api/Model/ChannelInfo.cs index 37aa716..f60d98b 100644 --- a/source/ChanSort.Api/Model/ChannelInfo.cs +++ b/source/ChanSort.Api/Model/ChannelInfo.cs @@ -156,9 +156,9 @@ namespace ChanSort.Api { if ((signalSource & SignalSource.Analog) != 0) return "A-0-" + (int)(freqInMhz * 20) + "-0"; - if ((signalSource & SignalSource.MaskAntennaCableSat) == SignalSource.Sat) + if ((signalSource & SignalSource.MaskBcastMedium) == SignalSource.Sat) return "S" + /*this.SatPosition + */ "-" + onid + "-" + tsid + "-" + sid; - if ((signalSource & SignalSource.MaskAntennaCableSat) == SignalSource.Antenna || (signalSource & SignalSource.MaskAntennaCableSat) == SignalSource.Cable) + if ((signalSource & SignalSource.MaskBcastMedium) == SignalSource.Antenna || (signalSource & SignalSource.MaskBcastMedium) == SignalSource.Cable) { // ChannelOrTransponder is needed for DVB-T where the same ONID+TSID+SID can be received from 2 different radio transmitters, but on different frequencies/channels if (string.IsNullOrEmpty(channelOrTransponder)) diff --git a/source/ChanSort.Api/Model/ChannelList.cs b/source/ChanSort.Api/Model/ChannelList.cs index 9b64e75..614e969 100644 --- a/source/ChanSort.Api/Model/ChannelList.cs +++ b/source/ChanSort.Api/Model/ChannelList.cs @@ -18,16 +18,16 @@ namespace ChanSort.Api public ChannelList(SignalSource source, string caption) { - if ((source & SignalSource.MaskAnalogDigital) == 0) - source |= SignalSource.MaskAnalogDigital; - if ((source & SignalSource.MaskAntennaCableSat) == 0) - source |= SignalSource.MaskAntennaCableSat; + if ((source & SignalSource.MaskBcastSystem) == 0) + source |= SignalSource.MaskBcastSystem; + if ((source & SignalSource.MaskBcastMedium) == 0) + source |= SignalSource.MaskBcastMedium; if ((source & SignalSource.MaskTvRadioData) == 0) source |= SignalSource.MaskTvRadioData; this.SignalSource = source; this.ShortCaption = caption; - this.FirstProgramNumber = (source & SignalSource.Digital) != 0 ? 1 : 0; + this.FirstProgramNumber = (source & SignalSource.Dvb) != 0 ? 1 : 0; this.VisibleColumnFieldNames = DefaultVisibleColumns.ToList(); // create copy of default list, so it can be modified } diff --git a/source/ChanSort.Api/Model/DataRoot.cs b/source/ChanSort.Api/Model/DataRoot.cs index 8c5387e..a75c1a8 100644 --- a/source/ChanSort.Api/Model/DataRoot.cs +++ b/source/ChanSort.Api/Model/DataRoot.cs @@ -94,9 +94,9 @@ namespace ChanSort.Api { var listMask = list.SignalSource; - if ((searchMask & SignalSource.MaskAnalogDigital) != 0 && (listMask & SignalSource.MaskAnalogDigital & searchMask) == 0) // digital/analog + if ((searchMask & SignalSource.MaskBcastSystem) != 0 && (listMask & SignalSource.MaskBcastSystem & searchMask) == 0) // analog/dvb/ip continue; - if ((searchMask & SignalSource.MaskAntennaCableSat) != 0 && (listMask & SignalSource.MaskAntennaCableSat & searchMask) == 0) // air/cable/sat/ip + if ((searchMask & SignalSource.MaskBcastMedium) != 0 && (listMask & SignalSource.MaskBcastMedium & searchMask) == 0) // air/cable/sat continue; if ((searchMask & SignalSource.MaskTvRadioData) != 0 && (listMask & SignalSource.MaskTvRadioData & searchMask) == 0) // tv/radio/data continue; diff --git a/source/ChanSort.Api/Model/Enums.cs b/source/ChanSort.Api/Model/Enums.cs index 44d229a..1b06b3e 100644 --- a/source/ChanSort.Api/Model/Enums.cs +++ b/source/ChanSort.Api/Model/Enums.cs @@ -13,27 +13,29 @@ namespace ChanSort.Api { Any = 0, - // bit 0-1: analog/digital - MaskAnalogDigital = 0x0003, + // bit 0-1, 7: analog/dvb/ip Analog = 0x0001, - Digital = 0x0002, + Dvb = 0x0002, + Ip = 0x0080, + MaskBcastSystem = Analog | Dvb | Ip, - // bit 3-7: AvInput/Antenna/Cable/Sat/IP - MaskAntennaCableSat = 0x00F8, + // bit 3-6: AvInput/Antenna/Cable/Sat AvInput = 0x0008, Antenna = 0x0010, Cable = 0x0020, Sat = 0x0040, - IP = 0x0080, + MaskBcastMedium = AvInput | Antenna | Cable | Sat, + + + MaskBcast = MaskBcastSystem | MaskBcastMedium, - MaskAdInput = MaskAnalogDigital | MaskAntennaCableSat, // bit 8-10: TV/Radio/Data - MaskTvRadioData = 0x0700, Tv = 0x0100, Radio = 0x0200, Data = 0x0400, - TvAndData = Tv|Data, + MaskTvRadioData = Tv | Radio | Data, + TvAndData = Tv | Data, // bit 12-15: Preset list selector (AstraHD+, Freesat, TivuSat, CanalDigitalSat, ... for Samsung) MaskProvider = 0xF000, @@ -54,24 +56,32 @@ namespace ChanSort.Api StandardCable = 0 << 12, CablePrime = 1 << 12, - AnalogC = Analog + Cable, - AnalogT = Analog + Antenna, - AnalogCT = Analog + Cable + Antenna, - DvbC = Digital + Cable, - DvbT = Digital + Antenna, - DvbCT = Digital + Cable + Antenna, - DvbS = Digital + Sat, - SatIP = Digital + IP, // must NOT add Sat + // some predefined combinations - CablePrimeD = Digital + Cable + CablePrime, - HdPlusD = Digital + Sat + AstraHdPlus, - FreesatD = Digital + Sat + Freesat, - TivuSatD = Digital + Sat + TivuSat, - CanalDigitalSatD = Digital + Sat + CanalDigital, - DigitalPlusD = Digital + Sat + DigitalPlus, - CyfraPlusD = Digital + Sat + CyfraPlus, + AnalogC = Analog | Cable, + AnalogT = Analog | Antenna, + AnalogCT = Analog | Cable | Antenna, + DvbC = Dvb | Cable, + DvbT = Dvb | Antenna, + DvbCT = Dvb | Cable | Antenna, + DvbS = Dvb | Sat, - All = MaskAnalogDigital | MaskAntennaCableSat | MaskTvRadioData + IpAntenna = Ip | Antenna, + IpCable = Ip | Cable, + IpSat = Ip | Sat, + IpAll = Ip | Antenna | Cable | Sat, + + + + CablePrimeD = Dvb | Cable | CablePrime, + HdPlusD = Dvb | Sat | AstraHdPlus, + FreesatD = Dvb | Sat | Freesat, + TivuSatD = Dvb | Sat | TivuSat, + CanalDigitalSatD = Dvb | Sat | CanalDigital, + DigitalPlusD = Dvb | Sat | DigitalPlus, + CyfraPlusD = Dvb | Sat | CyfraPlus, + + All = MaskBcastSystem | MaskBcastMedium | MaskTvRadioData } #endregion diff --git a/source/ChanSort.Loader.CmdbBin/CmdbFileSerializer.cs b/source/ChanSort.Loader.CmdbBin/CmdbFileSerializer.cs index 2d4ba34..a26c48f 100644 --- a/source/ChanSort.Loader.CmdbBin/CmdbFileSerializer.cs +++ b/source/ChanSort.Loader.CmdbBin/CmdbFileSerializer.cs @@ -309,7 +309,7 @@ namespace ChanSort.Loader.CmdbBin foreach (var list in this.DataRoot.ChannelLists) { - if ((list.SignalSource & (SignalSource.MaskAnalogDigital | SignalSource.MaskAntennaCableSat)) != sourceMask) + if ((list.SignalSource & (SignalSource.MaskBcastSystem | SignalSource.MaskBcastMedium)) != sourceMask) continue; foreach (var chan in list.Channels) { diff --git a/source/ChanSort.Loader.DBM/DbmSerializer.cs b/source/ChanSort.Loader.DBM/DbmSerializer.cs index 4b5bd45..8eb5a13 100644 --- a/source/ChanSort.Loader.DBM/DbmSerializer.cs +++ b/source/ChanSort.Loader.DBM/DbmSerializer.cs @@ -67,13 +67,13 @@ namespace ChanSort.Loader.DBM if (isDvbS) { allChannels.ShortCaption = "DVB-S"; - allChannels.SignalSource &= ~SignalSource.MaskAntennaCableSat; + allChannels.SignalSource &= ~SignalSource.MaskBcastMedium; allChannels.SignalSource |= SignalSource.Sat; } else { allChannels.ShortCaption = "DVB-C"; - allChannels.SignalSource &= ~SignalSource.MaskAntennaCableSat; + allChannels.SignalSource &= ~SignalSource.MaskBcastMedium; allChannels.SignalSource |= SignalSource.Cable; allChannels.VisibleColumnFieldNames.Remove(nameof(ChannelInfo.Satellite)); } @@ -178,7 +178,7 @@ namespace ChanSort.Loader.DBM { var serviceType = mapping.GetByte("offServiceType"); var src = serviceType == 1 ? SignalSource.Tv : serviceType == 2 ? SignalSource.Radio : SignalSource.Data; - src |= SignalSource.Digital; + src |= SignalSource.Dvb; src |= isDvbS ? SignalSource.Sat : SignalSource.Cable; var c = new ChannelInfo(src, i, -1, null); dec.GetChannelNames(data, mapping.BaseOffset + sec.GetInt("offName"), sec.GetInt("lenName"), out var longName, out var shortName); diff --git a/source/ChanSort.Loader.Enigma2/Serializer.cs b/source/ChanSort.Loader.Enigma2/Serializer.cs index 93e01fa..18f835b 100644 --- a/source/ChanSort.Loader.Enigma2/Serializer.cs +++ b/source/ChanSort.Loader.Enigma2/Serializer.cs @@ -18,7 +18,7 @@ namespace ChanSort.Loader.Enigma2 { private static readonly Encoding utf8WithoutBom = new UTF8Encoding(false); - private ChannelList channels = new ChannelList(SignalSource.Digital, "All Channels"); + private ChannelList channels = new ChannelList(SignalSource.Dvb, "All Channels"); private readonly List favListFileNames = new(); private readonly Dictionary transponderByLamedbId = new(); @@ -181,7 +181,7 @@ namespace ChanSort.Loader.Enigma2 return; var ch = new Channel(); - ch.SignalSource = SignalSource.Digital; + ch.SignalSource = SignalSource.Dvb; // line 1: SID:DvbNamespace:TSID:ONID:ServiceType:ServiceNumber var parts = line.Split(':'); diff --git a/source/ChanSort.Loader.Grundig/Serializer.cs b/source/ChanSort.Loader.Grundig/Serializer.cs index 5ad88c7..5ab6055 100644 --- a/source/ChanSort.Loader.Grundig/Serializer.cs +++ b/source/ChanSort.Loader.Grundig/Serializer.cs @@ -373,7 +373,7 @@ namespace ChanSort.Loader.Grundig continue; if (ch.NewProgramNr < 0) { - if ((ch.SignalSource & SignalSource.Digital) != 0) + if ((ch.SignalSource & SignalSource.Dvb) != 0) ch.IsDeleted = true; else { @@ -406,7 +406,7 @@ namespace ChanSort.Loader.Grundig att["f"+i].Value = Math.Max(0, ch.GetPosition(i)).ToString(); // convert -1 to 0 att["skp"].InnerText = ch.Skip ? "1" : "0"; att["lck"].InnerText = ch.Lock ? "1" : "0"; - if ((ch.SignalSource & SignalSource.Digital) != 0) + if ((ch.SignalSource & SignalSource.Dvb) != 0) att["vis"].InnerText = ch.Hidden ? "0" : "1"; else att["hid"].InnerText = ch.Hidden ? "1" : "0"; diff --git a/source/ChanSort.Loader.Hisense/HisBin/HisSvlBinSerializer.cs b/source/ChanSort.Loader.Hisense/HisBin/HisSvlBinSerializer.cs index c972841..82623e0 100644 --- a/source/ChanSort.Loader.Hisense/HisBin/HisSvlBinSerializer.cs +++ b/source/ChanSort.Loader.Hisense/HisBin/HisSvlBinSerializer.cs @@ -210,7 +210,7 @@ public class HisSvlBinSerializer : SerializerBase var broadcastDataOffset = svlMapping.Settings.GetInt("BroadcastSystemData"); var nameLength = svlMapping.Settings.GetInt("NameLength"); - var source = channels.SignalSource & (SignalSource.MaskAnalogDigital | SignalSource.MaskAntennaCableSat); + var source = channels.SignalSource & (SignalSource.MaskBcastSystem | SignalSource.MaskBcastMedium); for (int i = 0; i < channelCount; i++) { svlMapping.SetDataPtr(svlFileContent, off); @@ -317,7 +317,7 @@ public class HisSvlBinSerializer : SerializerBase ci.ServiceId = dvbMapping.GetWord("Sid"); } - if ((ci.SignalSource & (SignalSource.MaskAnalogDigital | SignalSource.MaskAntennaCableSat)) == SignalSource.DvbC) + if ((ci.SignalSource & (SignalSource.MaskBcastSystem | SignalSource.MaskBcastMedium)) == SignalSource.DvbC) { ci.OriginalNetworkId = dvbMapping.GetWord("DvbcOnid"); ci.TransportStreamId = dvbMapping.GetWord("DvbcTsid"); @@ -575,7 +575,7 @@ public class HisSvlBinSerializer : SerializerBase svlMapping.BaseOffset = chan.RawDataOffset; chan.Name = ReadString(svlMapping, "Name", nameLength); - if ((chan.SignalSource & SignalSource.Digital) == 0) + if ((chan.SignalSource & SignalSource.Dvb) == 0) continue; dvbMapping.BaseOffset = chan.RawDataOffset + dvbOffset; diff --git a/source/ChanSort.Loader.Hisense/ServicelistDb/ServicelistDbSerializer.cs b/source/ChanSort.Loader.Hisense/ServicelistDb/ServicelistDbSerializer.cs index 3fb59dc..0428ced 100644 --- a/source/ChanSort.Loader.Hisense/ServicelistDb/ServicelistDbSerializer.cs +++ b/source/ChanSort.Loader.Hisense/ServicelistDb/ServicelistDbSerializer.cs @@ -258,7 +258,7 @@ namespace ChanSort.Loader.Hisense.ServicelistDb trans.Source = "DVB-T2"; break; default: - trans.SignalSource = SignalSource.Digital; + trans.SignalSource = SignalSource.Dvb; break; } @@ -425,7 +425,7 @@ left outer join {dbSchema.DvbServiceTable} digs on digs.ServiceId=s.Pid ci.Source = list.ShortCaption; if (ci.IsDeleted) ci.OldProgramNr = -1; - if ((ci.SignalSource & (SignalSource.MaskAntennaCableSat | SignalSource.MaskAnalogDigital)) == SignalSource.DvbS) + if ((ci.SignalSource & (SignalSource.MaskBcastMedium | SignalSource.MaskBcastSystem)) == SignalSource.DvbS) ci.Satellite = list.ShortCaption; DataRoot.AddChannel(list, ci); diff --git a/source/ChanSort.Loader.LG/Binary/DtvChannel.cs b/source/ChanSort.Loader.LG/Binary/DtvChannel.cs index 67eb5cc..443a003 100644 --- a/source/ChanSort.Loader.LG/Binary/DtvChannel.cs +++ b/source/ChanSort.Loader.LG/Binary/DtvChannel.cs @@ -15,7 +15,7 @@ namespace ChanSort.Loader.LG.Binary public DtvChannel(int slot, DataMapping data) : base(data) { - var signalSource = SignalSource.Digital; + var signalSource = SignalSource.Dvb; signalSource |= data.GetByte(_SignalSource) == 1 ? SignalSource.Antenna : SignalSource.Cable; this.InitCommonData(slot, signalSource, data); this.InitDvbData(data); diff --git a/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs b/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs index 2d83c7e..85b9d98 100644 --- a/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs +++ b/source/ChanSort.Loader.LG/Binary/TllChannelBase.cs @@ -110,7 +110,7 @@ namespace ChanSort.Loader.LG.Binary mapping.SetFlag(_Deleted, true); mapping.SetByte("off" + _Moved, 0); //skip,lock,hide,moved } - else if ((this.SignalSource&SignalSource.Digital) != 0) + else if ((this.SignalSource&SignalSource.Dvb) != 0) { mapping.SetFlag(_Moved, true); } diff --git a/source/ChanSort.Loader.LG/GlobalClone/GcJsonSerializer.cs b/source/ChanSort.Loader.LG/GlobalClone/GcJsonSerializer.cs index 824e1e1..d69ebfd 100644 --- a/source/ChanSort.Loader.LG/GlobalClone/GcJsonSerializer.cs +++ b/source/ChanSort.Loader.LG/GlobalClone/GcJsonSerializer.cs @@ -238,7 +238,7 @@ namespace ChanSort.Loader.GlobalClone ch.TransportStreamId = (int)node["TSID"]; - if ((ch.SignalSource & SignalSource.Digital) != 0) + if ((ch.SignalSource & SignalSource.Dvb) != 0) { var transSystem = (string) node["transSystem"]; diff --git a/source/ChanSort.Loader.LG/GlobalClone/GcXmlSerializer.cs b/source/ChanSort.Loader.LG/GlobalClone/GcXmlSerializer.cs index 2ee9a5a..9d0dbff 100644 --- a/source/ChanSort.Loader.LG/GlobalClone/GcXmlSerializer.cs +++ b/source/ChanSort.Loader.LG/GlobalClone/GcXmlSerializer.cs @@ -215,7 +215,7 @@ namespace ChanSort.Loader.GlobalClone if (itemNode.LocalName != "ITEM") continue; ++i; - var ch = new GcChannel(analog ? SignalSource.AnalogCT | SignalSource.Tv : SignalSource.Digital, i, itemNode); + var ch = new GcChannel(analog ? SignalSource.AnalogCT | SignalSource.Tv : SignalSource.Dvb, i, itemNode); this.ParseChannelInfoNodes(itemNode, ch); var list = this.DataRoot.GetChannelList(ch.SignalSource); diff --git a/source/ChanSort.Loader.Loewe/Serializer.cs b/source/ChanSort.Loader.Loewe/Serializer.cs index 7ee28c0..cd5b5b5 100644 --- a/source/ChanSort.Loader.Loewe/Serializer.cs +++ b/source/ChanSort.Loader.Loewe/Serializer.cs @@ -261,7 +261,7 @@ class Serializer : SerializerBase if (!this.channelsById.TryGetValue(id, out var c)) return; c.ServiceId = int.Parse(a["Sid"].InnerText); - c.SignalSource |= SignalSource.Digital; + c.SignalSource |= SignalSource.Dvb; var transponderId = int.Parse(a["TunerId"].InnerText); var t = DataRoot.Transponder.TryGet(transponderId); diff --git a/source/ChanSort.Loader.M3u/Channel.cs b/source/ChanSort.Loader.M3u/Channel.cs index 9587ad6..2404c93 100644 --- a/source/ChanSort.Loader.M3u/Channel.cs +++ b/source/ChanSort.Loader.M3u/Channel.cs @@ -9,7 +9,7 @@ namespace ChanSort.Loader.M3u public int ExtInfTrackNameIndex { get; set; } public int ExtInfParamIndex { get; set; } - public Channel(int index, int progNr, string name, List lines) : base(SignalSource.IP, index, progNr, name) + public Channel(int index, int progNr, string name, List lines) : base(SignalSource.IpAll, index, progNr, name) { this.Lines = lines; } diff --git a/source/ChanSort.Loader.M3u/Serializer.cs b/source/ChanSort.Loader.M3u/Serializer.cs index 54e9b1f..af0b9ef 100644 --- a/source/ChanSort.Loader.M3u/Serializer.cs +++ b/source/ChanSort.Loader.M3u/Serializer.cs @@ -16,7 +16,7 @@ namespace ChanSort.Loader.M3u class Serializer : SerializerBase { private static readonly Regex ExtInfTrackName = new Regex(@"^(?:(\d+). )?(.*)$"); - private readonly ChannelList allChannels = new ChannelList(SignalSource.IP, "All"); + private readonly ChannelList allChannels = new ChannelList(SignalSource.IpAll, "All"); private Encoding overrideEncoding; private string newLine = "\r\n"; diff --git a/source/ChanSort.Loader.Medion/MedionSerializer.cs b/source/ChanSort.Loader.Medion/MedionSerializer.cs index 8fdac85..061a0a7 100644 --- a/source/ChanSort.Loader.Medion/MedionSerializer.cs +++ b/source/ChanSort.Loader.Medion/MedionSerializer.cs @@ -102,7 +102,7 @@ public class MedionSerializer : SerializerBase ch.SignalSource |= SignalSource.Analog; break; case 2: - ch.SignalSource |= SignalSource.Digital; + ch.SignalSource |= SignalSource.Dvb; break; } diff --git a/source/ChanSort.Loader.Panasonic/DbChannel.cs b/source/ChanSort.Loader.Panasonic/DbChannel.cs index e17f324..379d330 100644 --- a/source/ChanSort.Loader.Panasonic/DbChannel.cs +++ b/source/ChanSort.Loader.Panasonic/DbChannel.cs @@ -14,6 +14,14 @@ namespace ChanSort.Loader.Panasonic internal int InternalProviderFlag2; + public int PhysicalChannel { get; set; } + + /// + /// delivery number to seperate dvbc/dvbt/dvbs from cableip/antennaip/satip + /// + public int DeliveryType { get; set; } + + #region ctor(IDataReader, ...) internal DbChannel(IDataReader r, IDictionary field, DataRoot dataRoot, Encoding encoding) { @@ -24,6 +32,7 @@ namespace ChanSort.Loader.Panasonic { } int ntype = r.GetInt32(field["ntype"]); + this.DeliveryType = r.GetInt32(field["delivery_type"]); if (ntype == 1) { this.SignalSource |= SignalSource.DvbS; @@ -39,7 +48,16 @@ namespace ChanSort.Loader.Panasonic else if (ntype == 14) this.SignalSource |= SignalSource.AnalogC | SignalSource.Tv; else if (ntype == 15) - this.SignalSource |= SignalSource.SatIP; + { + if (this.DeliveryType == 15) + this.SignalSource |= SignalSource.IpSat; + // else if (this.DeliveryType == 0) // currently no sample for IpAntenna found + // this.SignalSource |= SignalSource.IpAntenna; + else if (this.DeliveryType == 18) + this.SignalSource |= SignalSource.IpCable; + else + this.SignalSource |= SignalSource.IpSat; + } byte[] buffer = new byte[1000]; int len = 0; @@ -89,6 +107,11 @@ namespace ChanSort.Loader.Panasonic { this.FreqInMhz = r.IsDBNull(field["freq"]) ? 0 : (decimal)r.GetInt32(field["freq"]) / 1000; this.ChannelOrTransponder = Tools.GetAnalogChannelNumber((int)this.FreqInMhz); + + this.PhysicalChannel = r.GetInt32(field["physical_ch"]); + this.OriginalNetworkId = r.GetInt32(field["onid"]); + this.TransportStreamId = r.GetInt32(field["tsid"]); + this.ServiceId = r.GetInt32(field["sid"]); } #endregion @@ -99,11 +122,14 @@ namespace ChanSort.Loader.Panasonic this.SignalSource |= LookupData.Instance.IsRadioTvOrData(stype); this.ServiceType = stype; - int freq = r.IsDBNull(field["freq"]) ? 0 : r.GetInt32(field["freq"]); + decimal freq = r.IsDBNull(field["freq"]) ? 0 : r.GetInt32(field["freq"]); if ((this.SignalSource & SignalSource.Sat) != 0) { + // SAT>IP has the freq value in units of 100Hz (so divide by 10k to get MHz), DVB>S has the value already in MHz // ReSharper disable PossibleLossOfFraction - this.FreqInMhz = freq/10; + this.FreqInMhz = (int)(freq/10); + if (this.FreqInMhz > 15000) // must be some satellite frequency in kHz instead of MHz, so convert + this.FreqInMhz /= 1000; // ReSharper restore PossibleLossOfFraction if (deliveryLength >= 12) @@ -161,6 +187,7 @@ namespace ChanSort.Loader.Panasonic this.Source = (this.SignalSource & SignalSource.Antenna) != 0 ? "DVB-T" : "DVB-C"; } + this.PhysicalChannel = r.GetInt32(field["physical_ch"]); this.OriginalNetworkId = r.GetInt32(field["onid"]); this.TransportStreamId = r.GetInt32(field["tsid"]); this.ServiceId = r.GetInt32(field["sid"]); diff --git a/source/ChanSort.Loader.Panasonic/SvlSerializer.cs b/source/ChanSort.Loader.Panasonic/SvlSerializer.cs index 3149055..c187d6d 100644 --- a/source/ChanSort.Loader.Panasonic/SvlSerializer.cs +++ b/source/ChanSort.Loader.Panasonic/SvlSerializer.cs @@ -5,6 +5,7 @@ using System.IO; using System.Text; using Microsoft.Data.Sqlite; using ChanSort.Api; +using System.Runtime.Remoting.Channels; namespace ChanSort.Loader.Panasonic { @@ -12,13 +13,15 @@ namespace ChanSort.Loader.Panasonic class SvlSerializer : SerializerBase { - private readonly ChannelList avbtChannels = new ChannelList(SignalSource.AnalogT, "Analog Antenna"); - private readonly ChannelList avbcChannels = new ChannelList(SignalSource.AnalogC, "Analog Cable"); - private readonly ChannelList dvbtChannels = new ChannelList(SignalSource.DvbT, "DVB-T"); - private readonly ChannelList dvbcChannels = new ChannelList(SignalSource.DvbC, "DVB-C"); - private readonly ChannelList dvbsChannels = new ChannelList(SignalSource.DvbS, "DVB-S"); - private readonly ChannelList satipChannels = new ChannelList(SignalSource.SatIP, "SAT>IP"); - private readonly ChannelList freesatChannels = new ChannelList(SignalSource.DvbS | SignalSource.Freesat, "Freesat"); + private readonly ChannelList avbtChannels = new (SignalSource.AnalogT, "Analog Antenna"); + private readonly ChannelList avbcChannels = new (SignalSource.AnalogC, "Analog Cable"); + private readonly ChannelList dvbtChannels = new (SignalSource.DvbT, "DVB-T"); + private readonly ChannelList dvbcChannels = new (SignalSource.DvbC, "DVB-C"); + private readonly ChannelList dvbsChannels = new (SignalSource.DvbS, "DVB-S"); + private readonly ChannelList antIpChannels = new(SignalSource.IpAntenna, "Antenna>IP"); + private readonly ChannelList cabIpChannels = new(SignalSource.IpCable, "Cable>IP"); + private readonly ChannelList satIpChannels = new (SignalSource.IpSat, "SAT>IP"); + private readonly ChannelList freesatChannels = new (SignalSource.DvbS | SignalSource.Freesat, "Freesat"); private string workFile; private CypherMode cypherMode; @@ -54,7 +57,9 @@ namespace ChanSort.Loader.Panasonic this.DataRoot.AddChannelList(this.dvbtChannels); this.DataRoot.AddChannelList(this.dvbcChannels); this.DataRoot.AddChannelList(this.dvbsChannels); - this.DataRoot.AddChannelList(this.satipChannels); + this.DataRoot.AddChannelList(this.antIpChannels); + this.DataRoot.AddChannelList(this.cabIpChannels); + this.DataRoot.AddChannelList(this.satIpChannels); this.DataRoot.AddChannelList(this.freesatChannels); // hide columns for fields that don't exist in Panasonic channel list @@ -231,11 +236,11 @@ namespace ChanSort.Loader.Panasonic private void ReadChannels(SqliteCommand cmd) { string[] fieldNames = { "rowid", "major_channel", "physical_ch","sname", "freq", "skip", "running_status","free_CA_mode","child_lock", - "profile1index","profile2index","profile3index","profile4index","stype", "onid", "tsid", "sid", "ntype", "ya_svcid", "delivery" }; + "profile1index","profile2index","profile3index","profile4index","stype", "onid", "tsid", "sid", "ntype", "ya_svcid", "delivery", "delivery_type" }; const string sql = @" select s.rowid,s.major_channel,s.physical_ch,cast(s.sname as blob),t.freq,s.skip,s.running_status,s.free_CA_mode,s.child_lock, - profile1index,profile2index,profile3index,profile4index,s.stype,s.onid,s.tsid,s.svcid,s.ntype,s.ya_svcid,delivery + profile1index,profile2index,profile3index,profile4index,s.stype,s.onid,s.tsid,s.svcid,s.ntype,s.ya_svcid,delivery,ifnull(t.delivery_type, 0) from SVL s left outer join TSL t on s.ntype=t.ntype and s.physical_ch=t.physical_ch and s.tsid=t.tsid order by s.ntype,major_channel @@ -309,7 +314,9 @@ order by s.ntype,major_channel this.WriteChannels(cmd, this.dvbtChannels); this.WriteChannels(cmd, this.dvbcChannels); this.WriteChannels(cmd, this.dvbsChannels); - this.WriteChannels(cmd, this.satipChannels); + this.WriteChannels(cmd, this.antIpChannels); + this.WriteChannels(cmd, this.cabIpChannels); + this.WriteChannels(cmd, this.satIpChannels); this.WriteChannels(cmd, this.freesatChannels); trans.Commit(); @@ -327,7 +334,8 @@ order by s.ntype,major_channel if (channelList.Channels.Count == 0) return; - cmd.CommandText = "update SVL set major_channel=@progNr, sname=@sname, profile1index=@fav1, profile2index=@fav2, profile3index=@fav3, profile4index=@fav4, child_lock=@lock, skip=@skip where rowid=@rowid"; + cmd.CommandText = "update SVL set major_channel=@progNr, sname=@sname, profile1index=@fav1, profile2index=@fav2, profile3index=@fav3, profile4index=@fav4, " + + "child_lock=@lock, skip=@skip, free_CA_mode=@encr where rowid=@rowid"; cmd.Parameters.Clear(); cmd.Parameters.Add("@rowid", SqliteType.Integer); cmd.Parameters.Add("@progNr", SqliteType.Integer); @@ -338,6 +346,7 @@ order by s.ntype,major_channel cmd.Parameters.Add("@fav4", SqliteType.Integer); cmd.Parameters.Add("@lock", SqliteType.Integer); cmd.Parameters.Add("@skip", SqliteType.Integer); + cmd.Parameters.Add("@encr", SqliteType.Integer); cmd.Prepare(); foreach (ChannelInfo channelInfo in channelList.Channels) { @@ -354,6 +363,7 @@ order by s.ntype,major_channel cmd.Parameters["@fav" + (fav + 1)].Value = Math.Max(0, channel.GetPosition(fav+1)); cmd.Parameters["@lock"].Value = channel.Lock; cmd.Parameters["@skip"].Value = channel.Skip; + cmd.Parameters["@encr"].Value = channel.Encrypted; cmd.ExecuteNonQuery(); } @@ -369,6 +379,13 @@ order by s.ntype,major_channel cmd.ExecuteNonQuery(); } } + + // remove unassigned/deleted transponders from TSL table + // add. info: only digital transponders should be deleted as import + // generates error when no analog transponders are found + cmd.CommandText = "delete from TSL where onid<>0 and physical_ch not in (select physical_ch from SVL where physical_ch is not null)"; + cmd.Parameters.Clear(); + cmd.ExecuteNonQuery(); } #endregion diff --git a/source/ChanSort.Loader.Philips/BinarySerializer.cs b/source/ChanSort.Loader.Philips/BinarySerializer.cs index 62ce36f..172965c 100644 --- a/source/ChanSort.Loader.Philips/BinarySerializer.cs +++ b/source/ChanSort.Loader.Philips/BinarySerializer.cs @@ -236,7 +236,7 @@ namespace ChanSort.Loader.Philips throw LoaderException.Fail($"Invalid CRC in record {i} in {path}"); } - var ch = new Channel(list.SignalSource & SignalSource.MaskAntennaCableSat, i, progNr, channelName); + var ch = new Channel(list.SignalSource & SignalSource.MaskBcastMedium, i, progNr, channelName); ch.Id = mapping.GetWord("offId"); // only relevant for ChannelMap45 if (chanLstBin.VersionMajor <= 11) ch.FreqInMhz = (decimal) mapping.GetWord("offFreqTimes16") / 16; @@ -244,7 +244,7 @@ namespace ChanSort.Loader.Philips { ch.FreqInMhz = mapping.GetDword("offFreq") / 1000; ch.Encrypted = mapping.GetDword("offEncrypted") != 0; - ch.SignalSource |= mapping.GetDword("offIsDigital") == 0 ? SignalSource.Analog : SignalSource.Digital; + ch.SignalSource |= mapping.GetDword("offIsDigital") == 0 ? SignalSource.Analog : SignalSource.Dvb; if (mapping.GetDword("offServiceType") == 2) { ch.SignalSource |= SignalSource.Radio; @@ -477,7 +477,7 @@ namespace ChanSort.Loader.Philips { var transponderId = mapping.GetWord("offTransponderIndex"); var progNr = mapping.GetWord("offProgNr"); - var ch = new Channel(list.SignalSource & SignalSource.MaskAntennaCableSat, recordIndex, progNr, ""); + var ch = new Channel(list.SignalSource & SignalSource.MaskBcastMedium, recordIndex, progNr, ""); // deleted channels must be kept in the list because their records must also be physically reordered when saving the list if (progNr == 0xFFFF || transponderId == 0xFFFF) @@ -508,7 +508,7 @@ namespace ChanSort.Loader.Philips } else { - ch.SignalSource |= mapping.GetWord("offIsDigital") == 0 ? SignalSource.Analog : SignalSource.Digital; + ch.SignalSource |= mapping.GetWord("offIsDigital") == 0 ? SignalSource.Analog : SignalSource.Dvb; ch.Name = Encoding.Unicode.GetString(mapping.Data, mapping.BaseOffset + mapping.GetConst("offName", 0), mapping.GetConst("lenName", 0)).TrimEnd('\0'); ch.FreqInMhz = (decimal)mapping.GetDword("offFreq") / 1000; ch.Encrypted = mapping.GetDword("offEncrypted") != 0; @@ -603,9 +603,9 @@ namespace ChanSort.Loader.Philips var queries = new[] { - new Tuple(SignalSource.Analog | (list.SignalSource & SignalSource.MaskAntennaCableSat), "AnalogTable", + new Tuple(SignalSource.Analog | (list.SignalSource & SignalSource.MaskBcastMedium), "AnalogTable", "select Dbindex, Frequency, 0, 0, 0, ChannelName, PresetNumber from AnalogTable order by Dbindex"), - new Tuple(SignalSource.Digital | (list.SignalSource & SignalSource.MaskAntennaCableSat), "DigSrvTable", + new Tuple(SignalSource.Dvb | (list.SignalSource & SignalSource.MaskBcastMedium), "DigSrvTable", "select Dbindex, Frequency, OriginalNetworkId, Tsid, ServiceId, ChannelName, PresetNumber from DigSrvTable order by Dbindex") }; diff --git a/source/ChanSort.Loader.Philips/XmlSerializer.cs b/source/ChanSort.Loader.Philips/XmlSerializer.cs index 1be4a7a..5728cc2 100644 --- a/source/ChanSort.Loader.Philips/XmlSerializer.cs +++ b/source/ChanSort.Loader.Philips/XmlSerializer.cs @@ -428,7 +428,7 @@ namespace ChanSort.Loader.Philips if (!data.ContainsKey("UniqueID") || !int.TryParse(data["UniqueID"], out var uniqueId)) // UniqueId only exists in ChannelMap_105 and later uniqueId = rowId; - var chan = new Channel(curList.SignalSource & SignalSource.MaskAdInput, rowId, uniqueId, setupNode); + var chan = new Channel(curList.SignalSource & SignalSource.MaskBcast, rowId, uniqueId, setupNode); chan.OldProgramNr = -1; chan.IsDeleted = false; if (file.formatVersion == FormatVersion.RepairXml) @@ -436,9 +436,9 @@ namespace ChanSort.Loader.Philips else if (file.formatVersion == FormatVersion.ChannelMapXml) this.ParseChannelMapXml(data, chan); - if ((chan.SignalSource & SignalSource.MaskAdInput) == SignalSource.DvbT) + if ((chan.SignalSource & SignalSource.MaskBcast) == SignalSource.DvbT) chan.ChannelOrTransponder = LookupData.Instance.GetDvbtTransponder(chan.FreqInMhz).ToString(); - else if ((chan.SignalSource & SignalSource.MaskAdInput) == SignalSource.DvbC) + else if ((chan.SignalSource & SignalSource.MaskBcast) == SignalSource.DvbC) chan.ChannelOrTransponder = LookupData.Instance.GetDvbcChannelName(chan.FreqInMhz); DataRoot.AddChannel(curList, chan); diff --git a/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs b/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs index 5d1dfcd..925579c 100644 --- a/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs +++ b/source/ChanSort.Loader.Samsung/Scm/ScmSerializer.cs @@ -709,7 +709,7 @@ namespace ChanSort.Loader.Samsung.Scm { foreach (var list in this.DataRoot.ChannelLists) { - if ((list.SignalSource & SignalSource.Digital) == 0) + if ((list.SignalSource & SignalSource.Dvb) == 0) continue; var listOfChannels = new List(list.Channels); foreach (var chan in listOfChannels) diff --git a/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs b/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs index 5bfc70f..3c01376 100644 --- a/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs +++ b/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs @@ -38,7 +38,7 @@ namespace ChanSort.Loader.Samsung.Zip this.Polarity = tp.Polarity; } - if ((this.SignalSource & SignalSource.Digital) != 0) + if ((this.SignalSource & SignalSource.Dvb) != 0) this.ReadDvbData(r, field, loader, providers); else this.ReadAnalogData(r, field); diff --git a/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs b/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs index cf95acf..fb405e6 100644 --- a/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs +++ b/source/ChanSort.Loader.Samsung/Zip/DbSerializer.cs @@ -299,7 +299,7 @@ namespace ChanSort.Loader.Samsung.Zip private ChannelList CreateChannelList(SignalSource signalSource, string name) { var list = new ChannelList(signalSource, name); - if ((list.SignalSource & SignalSource.IP) != 0) + if ((list.SignalSource & SignalSource.Ip) != 0) { list.VisibleColumnFieldNames = new List { @@ -314,8 +314,8 @@ namespace ChanSort.Loader.Samsung.Zip private static SignalSource DetectSignalSource(IDbCommand cmd, FileType fileType) { if (fileType == FileType.ChannelDbIp) - return SignalSource.IP|SignalSource.Digital; - var signalSource = fileType == FileType.ChannelDbAnalog ? SignalSource.Analog : SignalSource.Digital; + return SignalSource.Ip; + var signalSource = fileType == FileType.ChannelDbAnalog ? SignalSource.Analog : SignalSource.Dvb; cmd.CommandText = "select distinct chType from CHNL"; using var r = cmd.ExecuteReader(); if (r.Read()) @@ -538,7 +538,7 @@ namespace ChanSort.Loader.Samsung.Zip using (var trans = conn.BeginTransaction()) { using var cmdUpdateSrv = PrepareUpdateCommand(conn); - using var cmdDeleteSrv = PrepareDeleteCommand(conn, (channelList.SignalSource & SignalSource.Digital) != 0); + using var cmdDeleteSrv = PrepareDeleteCommand(conn, (channelList.SignalSource & SignalSource.Dvb) != 0); using var cmdInsertFav = PrepareInsertFavCommand(conn); using var cmdUpdateFav = PrepareUpdateFavCommand(conn); using var cmdDeleteFav = PrepareDeleteFavCommand(conn); diff --git a/source/ChanSort.Loader.SatcoDX/Channel.cs b/source/ChanSort.Loader.SatcoDX/Channel.cs index 5425d09..b5ef5f4 100644 --- a/source/ChanSort.Loader.SatcoDX/Channel.cs +++ b/source/ChanSort.Loader.SatcoDX/Channel.cs @@ -31,7 +31,7 @@ namespace ChanSort.Loader.SatcoDX // 28: channel type var type = line[28]; - this.SignalSource = SignalSource.Digital | SignalSource.Sat | (type == 'T' ? SignalSource.Tv : type == 'R' ? SignalSource.Radio : 0); + this.SignalSource = SignalSource.Dvb | SignalSource.Sat | (type == 'T' ? SignalSource.Tv : type == 'R' ? SignalSource.Radio : 0); this.ServiceTypeName = type == 'T' ? "TV" : type == 'R' ? "Radio" : type == 'D' ? "Data" : "Other"; // 29-32: broadcast system diff --git a/source/ChanSort.Loader.Sony/Serializer.cs b/source/ChanSort.Loader.Sony/Serializer.cs index 57bf604..5878b0c 100644 --- a/source/ChanSort.Loader.Sony/Serializer.cs +++ b/source/ChanSort.Loader.Sony/Serializer.cs @@ -222,7 +222,7 @@ namespace ChanSort.Loader.Sony { foreach (var list in this.DataRoot.ChannelLists) { - if ((list.SignalSource & (SignalSource.MaskAdInput | SignalSource.MaskProvider)) == signalSource) + if ((list.SignalSource & (SignalSource.MaskBcast | SignalSource.MaskProvider)) == signalSource) list.ReadOnly = true; } } diff --git a/source/ChanSort.Loader.TCL/DtvDataSerializer.cs b/source/ChanSort.Loader.TCL/DtvDataSerializer.cs index cca6235..5a404c6 100644 --- a/source/ChanSort.Loader.TCL/DtvDataSerializer.cs +++ b/source/ChanSort.Loader.TCL/DtvDataSerializer.cs @@ -31,9 +31,9 @@ namespace ChanSort.Loader.TCL AllKnown = Favorite|CustomProgNum|Hidden|Delete } - private readonly ChannelList dvbT = new(SignalSource.Antenna | SignalSource.MaskTvRadioData|SignalSource.Digital, "DVB-T"); - private readonly ChannelList dvbC = new(SignalSource.Cable | SignalSource.MaskTvRadioData | SignalSource.Digital, "DVB-C"); - private readonly ChannelList dvbS = new(SignalSource.Sat | SignalSource.MaskTvRadioData | SignalSource.Digital, "DVB-S"); + private readonly ChannelList dvbT = new(SignalSource.Antenna | SignalSource.MaskTvRadioData|SignalSource.Dvb, "DVB-T"); + private readonly ChannelList dvbC = new(SignalSource.Cable | SignalSource.MaskTvRadioData | SignalSource.Dvb, "DVB-C"); + private readonly ChannelList dvbS = new(SignalSource.Sat | SignalSource.MaskTvRadioData | SignalSource.Dvb, "DVB-S"); private string dbDir; private string dtvFile; private string satFile; @@ -304,7 +304,7 @@ left outer join CurCIOPSerType c on c.u8DtvRoute=p.u8DtvRoute oldProgNr = -1; var name = r.GetString(2)?.TrimEnd(' ', '\0'); - ChannelInfo channel = new ChannelInfo(SignalSource.Digital, handle, oldProgNr, name); + ChannelInfo channel = new ChannelInfo(SignalSource.Dvb, handle, oldProgNr, name); channel.ShortName = r.GetString(3).TrimEnd(' ', '\0'); channel.ServiceId = r.GetInt32(4); var vtype = r.GetInt32(5); diff --git a/source/ChanSort.Loader.VisionEdge4K/VisionEdge4KDbSerializer.cs b/source/ChanSort.Loader.VisionEdge4K/VisionEdge4KDbSerializer.cs index 907a64d..d2901ee 100644 --- a/source/ChanSort.Loader.VisionEdge4K/VisionEdge4KDbSerializer.cs +++ b/source/ChanSort.Loader.VisionEdge4K/VisionEdge4KDbSerializer.cs @@ -108,7 +108,7 @@ namespace ChanSort.Loader.VisionEdge4K sat.Name = r.GetString(1); this.DataRoot.AddSatellite(sat); - var list = new ChannelList(SignalSource.Sat | SignalSource.Digital | SignalSource.MaskTvRadioData, sat.Name); + var list = new ChannelList(SignalSource.Sat | SignalSource.Dvb | SignalSource.MaskTvRadioData, sat.Name); this.channels.Add(sat.Id, list); this.DataRoot.AddChannelList(list); } diff --git a/source/ChanSort/MainForm.cs b/source/ChanSort/MainForm.cs index f5c6c2f..dcc422d 100644 --- a/source/ChanSort/MainForm.cs +++ b/source/ChanSort/MainForm.cs @@ -781,7 +781,7 @@ namespace ChanSort.Ui if ((this.currentTvSerializer.Features.ChannelNameEdit & ChannelNameEditMode.Analog) != 0) src |= SignalSource.Analog; if ((this.currentTvSerializer.Features.ChannelNameEdit & ChannelNameEditMode.Digital) != 0) - src |= SignalSource.Digital; + src |= SignalSource.Dvb; this.colName.OptionsColumn.AllowEdit = this.colOutName.OptionsColumn.AllowEdit = (channelList.SignalSource & src) != 0; if (this.DataRoot.MixedSourceFavorites) @@ -1654,30 +1654,30 @@ namespace ChanSort.Ui if (col == this.colPrNr) return this.subListIndex > 0; if (col == this.colChannelOrTransponder) return (source & SignalSource.Sat) == 0; - if (col == this.colShortName) return (source & SignalSource.Digital) != 0; - if (col == this.colEncrypted) return (source & SignalSource.Digital) != 0; - if (col == this.colServiceId) return (source & SignalSource.Digital) != 0; - if (col == this.colPcrPid) return (source & SignalSource.Digital) != 0; - if (col == this.colVideoPid) return (source & SignalSource.Digital) != 0; - if (col == this.colAudioPid) return (source & SignalSource.Digital) != 0; + if (col == this.colShortName) return (source & SignalSource.Dvb) != 0; + if (col == this.colEncrypted) return (source & SignalSource.Dvb) != 0; + if (col == this.colServiceId) return (source & SignalSource.Dvb) != 0; + if (col == this.colPcrPid) return (source & SignalSource.Dvb) != 0; + if (col == this.colVideoPid) return (source & SignalSource.Dvb) != 0; + if (col == this.colAudioPid) return (source & SignalSource.Dvb) != 0; //if (col == this.colServiceType) return (source & SignalSource.Digital) != 0; - if (col == this.colServiceTypeName) return (source & SignalSource.Digital) != 0; - if (col == this.colTransportStreamId) return (source & SignalSource.Digital) != 0; - if (col == this.colNetworkName) return (source & SignalSource.Digital) != 0; - if (col == this.colNetworkOperator) return (source & SignalSource.Digital) != 0; - if (col == this.colProvider) return (source & SignalSource.Digital) != 0; + if (col == this.colServiceTypeName) return (source & SignalSource.Dvb) != 0; + if (col == this.colTransportStreamId) return (source & SignalSource.Dvb) != 0; + if (col == this.colNetworkName) return (source & SignalSource.Dvb) != 0; + if (col == this.colNetworkOperator) return (source & SignalSource.Dvb) != 0; + if (col == this.colProvider) return (source & SignalSource.Dvb) != 0; if (col == this.colSatellite) return (source & SignalSource.Sat) != 0; - if (col == this.colNetworkId) return (source & SignalSource.Digital) != 0; - if (col == this.colSymbolRate) return (source & SignalSource.Digital) != 0; - if (col == this.colSkip) return (source & SignalSource.Digital) != 0 && this.DataRoot.CanSkip; - if (col == this.colLock) return (source & SignalSource.Digital) != 0 && this.DataRoot.CanLock; - if (col == this.colHidden) return (source & SignalSource.Digital) != 0 && this.DataRoot.CanHide; + if (col == this.colNetworkId) return (source & SignalSource.Dvb) != 0; + if (col == this.colSymbolRate) return (source & SignalSource.Dvb) != 0; + if (col == this.colSkip) return (source & SignalSource.Dvb) != 0 && this.DataRoot.CanSkip; + if (col == this.colLock) return (source & SignalSource.Dvb) != 0 && this.DataRoot.CanLock; + if (col == this.colHidden) return (source & SignalSource.Dvb) != 0 && this.DataRoot.CanHide; if (col == this.colIndex) return col.Visible; if (col == this.colUid) return col.Visible; if (col == this.colDebug) return col.Visible; if (col == this.colSignalSource) return col.Visible; if (col == this.colLogicalIndex) return col.Visible; - if (col == this.colPolarity) return (source & SignalSource.Sat) != 0 || (source & SignalSource.IP) != 0; + if (col == this.colPolarity) return (source & SignalSource.Sat) != 0; return true; } diff --git a/source/ChanSort/Properties/Resources.de.resx b/source/ChanSort/Properties/Resources.de.resx index bc1f3c0..f32d6a4 100644 --- a/source/ChanSort/Properties/Resources.de.resx +++ b/source/ChanSort/Properties/Resources.de.resx @@ -269,7 +269,7 @@ Sollen die Programmnummern in fortlaufende Zahlen umgeändert werden? Mögliche Ursachen sind USB-Sticks, die mit NTFS formatiert sind (FAT32 sollte immer funktionieren) oder ein am TV durchgeführtes Firmwareupdate, ohne einen anschließenden neuen Suchlauf. Dabei kann dann unter Umständen die neue Firmware die alten Daten nicht korrekt exportieren. - Antenne,Kabel,Sat,IP,Analog,Digital,TV,Radio,Daten + Antenne,Kabel,Sat,IP,Analog,DVB,TV,Radio,Daten Wie soll vorgegangen werden, wenn eine Pr# bereits vergeben ist? diff --git a/source/ChanSort/Properties/Resources.es.resx b/source/ChanSort/Properties/Resources.es.resx index 9b21258..3126276 100644 --- a/source/ChanSort/Properties/Resources.es.resx +++ b/source/ChanSort/Properties/Resources.es.resx @@ -250,7 +250,7 @@ o bien se ha actualizado el firmware sin hacer una nueva búsqueda de canales. (El nuevo firmware de la TV puede ser incapáz de procesar los datos existentes de canales durante la exportación.) - Antena,Cable,Sat,IP,Analógico,Digital,TV,Radio,Data + Antena,Cable,Sat,IP,Analógico,DVB,TV,Radio,Data ¿Cómo desea proceder cuando un Pr# ya exista en la lista de destino? diff --git a/source/ChanSort/Properties/Resources.hu.resx b/source/ChanSort/Properties/Resources.hu.resx index 19b404b..5530e13 100644 --- a/source/ChanSort/Properties/Resources.hu.resx +++ b/source/ChanSort/Properties/Resources.hu.resx @@ -259,7 +259,7 @@ A tipikus ok, ha az USB memóriakártya NTFS fájlrendszerű (próbáljon inkáb (Előfordulhat, hogy az új szoftver a TV-ben nem tudja feldolgozni a régi csatornaadatokat az exportálás során.) - Antenna,Kábel,Műhold,IP,Analóg,Digitális,TV,Rádió,Adat + Antenna,Kábel,Műhold,IP,Analóg,DVB,TV,Rádió,Adat Hogyan szeretné kezelni, ha egy Pr# már szerepel a céllistában? diff --git a/source/ChanSort/Properties/Resources.pl.resx b/source/ChanSort/Properties/Resources.pl.resx index 686211b..0911f78 100644 --- a/source/ChanSort/Properties/Resources.pl.resx +++ b/source/ChanSort/Properties/Resources.pl.resx @@ -252,7 +252,7 @@ lub aktualizacje oprogramowania układowego bez uruchamiania nowego skanowania k (Nowe oprogramowanie w telewizorze może nie być w stanie przetworzyć danych starego kanału podczas eksportu.) - Antena, telewizja kablowa, satelitarna, IP, analogowa, cyfrowa, TV, radio, dane + Antena, telewizja kablowa, satelitarna, IP, analogowa, DVB, TV, radio, dane Jak chcesz sobie z tym poradzić, gdy Pr# jest już zajęty na liście docelowej? diff --git a/source/ChanSort/Properties/Resources.resx b/source/ChanSort/Properties/Resources.resx index 1b2bfe5..5c56215 100644 --- a/source/ChanSort/Properties/Resources.resx +++ b/source/ChanSort/Properties/Resources.resx @@ -267,7 +267,7 @@ or firmware upgrades without running a new channel scan. (The new software in the TV might be unable to process the old channel data during the export.) - Antenna,Cable,Sat,IP,Analog,Digital,TV,Radio,Data + Antenna,Cable,Sat,IP,Analog,DVB,TV,Radio,Data How do you want to handle it when a Pr# is already taken in the target list? diff --git a/source/ChanSort/Properties/Resources.ro.resx b/source/ChanSort/Properties/Resources.ro.resx index 967ae01..4a67bb6 100644 --- a/source/ChanSort/Properties/Resources.ro.resx +++ b/source/ChanSort/Properties/Resources.ro.resx @@ -261,7 +261,7 @@ sau actualizări ale firmware-ului fără a efectua o nouă scanare a canalelor. (Noul software din televizor ar putea să nu poată procesa datele vechi ale canalului în timpul exportului.) - Antenă, Cablu, Sat, IP, analog, digital, TV, radio, data + Antenă, Cablu, Sat, IP, analog, DVB, TV, radio, data Cum doriți să o gestionați atunci când un Pr # este deja luat în lista țintă? diff --git a/source/ChanSort/Properties/Resources.tr.resx b/source/ChanSort/Properties/Resources.tr.resx index 2880089..e699ad5 100644 --- a/source/ChanSort/Properties/Resources.tr.resx +++ b/source/ChanSort/Properties/Resources.tr.resx @@ -259,7 +259,7 @@ veya yeni bir kanal taraması yapmadan ürün yazılımını güncelleyin. (TV'deki yeni yazılım dışa aktarma sırasında eski kanal verilerini işleyemeyebilir.) - Anten,Kablo,Uydu,IP,Analog,Digital,TV,Radyo,Veri + Anten,Kablo,Uydu,IP,Analog,DVB,TV,Radyo,Veri Hedef listesinden bir Pr# alındığında bunu nasıl ele almak istersiniz? diff --git a/source/ChanSort/Properties/licenses.licx b/source/ChanSort/Properties/licenses.licx index e69de29..3fc76c7 100644 --- a/source/ChanSort/Properties/licenses.licx +++ b/source/ChanSort/Properties/licenses.licx @@ -0,0 +1,3 @@ +DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a +DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a diff --git a/source/ChanSort/ReferenceListForm.cs b/source/ChanSort/ReferenceListForm.cs index 4948c73..3288ab7 100644 --- a/source/ChanSort/ReferenceListForm.cs +++ b/source/ChanSort/ReferenceListForm.cs @@ -223,8 +223,8 @@ namespace ChanSort.Ui var src = list?.SignalSource ?? 0; var sb = new StringBuilder(); - var sigSource = new[] {SignalSource.Antenna, SignalSource.Cable, SignalSource.Sat, SignalSource.IP, SignalSource.Analog, SignalSource.Digital, SignalSource.Tv, SignalSource.Radio, SignalSource.Data}; - var infoText = Resources.ReferenceListForm_AntennaCableSatIPAnalogDigitalTVRadio.Split(','); + var sigSource = new[] {SignalSource.Antenna, SignalSource.Cable, SignalSource.Sat, SignalSource.Ip, SignalSource.Analog, SignalSource.Dvb, SignalSource.Tv, SignalSource.Radio, SignalSource.Data}; + var infoText = Resources.ReferenceListForm_AntennaCableSatIPAnalogDigitalTVRadio.Split(',').Select(txt => txt.Trim()).ToArray(); var controls = new[] {cbAntenna, cbCable, cbSat, cbIp, cbAnalog, cbDigital, cbTv, cbRadio, cbData }; for (int i = 0, c = sigSource.Length; i < c; i++) @@ -252,14 +252,13 @@ namespace ChanSort.Ui var ss = ch.SignalSource; if (source) { - if ((ss & SignalSource.MaskAntennaCableSat) != 0 && - !(this.cbAntenna.Checked && (ss & SignalSource.Antenna) != 0 || this.cbCable.Checked && (ss & SignalSource.Cable) != 0 || this.cbSat.Checked && (ss & SignalSource.Sat) != 0 || - this.cbIp.Checked && (ss & SignalSource.IP) != 0)) + if ((ss & SignalSource.MaskBcastMedium) != 0 && + !(this.cbAntenna.Checked && (ss & SignalSource.Antenna) != 0 || this.cbCable.Checked && (ss & SignalSource.Cable) != 0 || this.cbSat.Checked && (ss & SignalSource.Sat) != 0)) return false; } - if ((ss & SignalSource.MaskAnalogDigital) != 0 && - !(this.cbAnalog.Checked && (ss & SignalSource.Analog) != 0 || this.cbDigital.Checked && (ss & SignalSource.Digital) != 0)) + if ((ss & SignalSource.MaskBcastSystem) != 0 && + !(this.cbAnalog.Checked && (ss & SignalSource.Analog) != 0 || this.cbDigital.Checked && (ss & SignalSource.Dvb) != 0) || this.cbIp.Checked && (ss & SignalSource.Ip) != 0) return false; if ((ss & SignalSource.MaskTvRadioData) != 0 && diff --git a/source/ChanSort/ReferenceListForm.resx b/source/ChanSort/ReferenceListForm.resx index 5214e85..3d082f6 100644 --- a/source/ChanSort/ReferenceListForm.resx +++ b/source/ChanSort/ReferenceListForm.resx @@ -590,7 +590,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 1 - 368, 59 + 284, 85 IP (Network) @@ -599,7 +599,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 82, 18 - 10 + 13 cbIp @@ -716,7 +716,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 59, 13 - 11 + 10 Signal Type: @@ -743,7 +743,7 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 54, 18 - 12 + 11 cbAnalog @@ -761,13 +761,13 @@ or a data file from another TV (SCM, TLL, DB, BIN, ...) 204, 84 - Digital + DVB - 50, 18 + 40, 18 - 13 + 12 cbDigital @@ -1127,7 +1127,4 @@ This step can be repeated as needed. DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v22.2, Version=22.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a - - Data/Other - \ No newline at end of file diff --git a/source/Spike.LgWebOs5/PhilipsXmlStatsCollector.cs b/source/Spike.LgWebOs5/PhilipsXmlStatsCollector.cs index bbad80f..d83aea5 100644 --- a/source/Spike.LgWebOs5/PhilipsXmlStatsCollector.cs +++ b/source/Spike.LgWebOs5/PhilipsXmlStatsCollector.cs @@ -68,7 +68,7 @@ namespace Spike.PhilipsXml lastNr = c.OldProgramNr; hasFav |= c.GetOldPosition(1) != -1; var s = c.SignalSource; - var i0 = (s & SignalSource.Antenna) != 0 ? 1 : (s & SignalSource.Cable) != 0 ? 2 : (s & SignalSource.Sat) != 0 ? 3 : (s & SignalSource.IP) != 0 ? 4 : 0; + var i0 = (s & SignalSource.Antenna) != 0 ? 1 : (s & SignalSource.Cable) != 0 ? 2 : (s & SignalSource.Sat) != 0 ? 3 : (s & SignalSource.Ip) != 0 ? 4 : 0; var i1 = (s & SignalSource.Tv) != 0 ? 1 : (s & SignalSource.Radio) != 0 ? 2 : (s & SignalSource.Data) != 0 ? 3 : 0; ++chanCountBySrc[i0, i1]; ++srcSum[i0]; diff --git a/source/Test.Loader.Samsung/Scm/SamsungScmTest.cs b/source/Test.Loader.Samsung/Scm/SamsungScmTest.cs index 3945a16..a37d91d 100644 --- a/source/Test.Loader.Samsung/Scm/SamsungScmTest.cs +++ b/source/Test.Loader.Samsung/Scm/SamsungScmTest.cs @@ -41,7 +41,7 @@ namespace Test.Loader.Samsung.Scm SamsungPlugin plugin = new SamsungPlugin(); StringBuilder errors = new StringBuilder(); - var list = LoaderTestBase.FindAllFiles("TestFiles_Samsung", "*.scm"); + var list = LoaderTestBase.FindAllFiles("TestFiles\\TestFiles_Samsung", "*.scm"); var models = new Dictionary(); foreach (var file in list) { @@ -67,7 +67,7 @@ namespace Test.Loader.Samsung.Scm var hdplusChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.HdPlusD | ChanSort.Api.SignalSource.Tv); var freesatChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.FreesatD | ChanSort.Api.SignalSource.Tv); var tivusatChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.TivuSatD | ChanSort.Api.SignalSource.Tv); - var iptvChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.IP | SignalSource.Tv); + var iptvChannelList = serializer.DataRoot.GetChannelList(ChanSort.Api.SignalSource.Ip | SignalSource.Tv); string key = serializer.Series + "\t" + model + diff --git a/source/Test.Loader.Samsung/Zip/SamsungZipTest.cs b/source/Test.Loader.Samsung/Zip/SamsungZipTest.cs index e3210c6..b7b652e 100644 --- a/source/Test.Loader.Samsung/Zip/SamsungZipTest.cs +++ b/source/Test.Loader.Samsung/Zip/SamsungZipTest.cs @@ -152,7 +152,7 @@ namespace Test.Loader.Samsung.Zip TestUtils.DeploymentItem("ChanSort.Loader.Samsung\\ChanSort.Loader.Samsung.ini"); StringBuilder errors = new StringBuilder(); - var list = LoaderTestBase.FindAllFiles("TestFiles_Samsung", "*.zip"); + var list = LoaderTestBase.FindAllFiles("TestFiles\\TestFiles_Samsung", "*.zip"); var models = new Dictionary(); foreach (var file in list) { @@ -179,7 +179,7 @@ namespace Test.Loader.Samsung.Zip var hdplusChannelList = serializer.DataRoot.GetChannelList(SignalSource.HdPlusD | SignalSource.Tv); var freesatChannelList = serializer.DataRoot.GetChannelList(SignalSource.FreesatD | SignalSource.Tv); var tivusatChannelList = serializer.DataRoot.GetChannelList(SignalSource.TivuSatD | SignalSource.Tv); - var iptvChannelList = serializer.DataRoot.GetChannelList(SignalSource.IP | SignalSource.Tv); + var iptvChannelList = serializer.DataRoot.GetChannelList(SignalSource.Ip | SignalSource.Tv); string key = serializer.FileFormatVersion + "\t" + model + diff --git a/source/Test.Loader/LgTest.cs b/source/Test.Loader/LgTest.cs index f40f24e..afb6692 100644 --- a/source/Test.Loader/LgTest.cs +++ b/source/Test.Loader/LgTest.cs @@ -22,7 +22,7 @@ namespace Test.Loader var plugin = new LgPlugin(); StringBuilder errors = new StringBuilder(); - var list = FindAllFiles("TestFiles_LG", "*.tll"); + var list = FindAllFiles("TestFiles\\TestFiles_LG", "*.tll"); var models = new Dictionary(); var firmwareSize = new Dictionary(); foreach(var file in list)