diff --git a/source/ChanSort.Api/Model/ChannelInfo.cs b/source/ChanSort.Api/Model/ChannelInfo.cs
index bbecc9c..0d7d84b 100644
--- a/source/ChanSort.Api/Model/ChannelInfo.cs
+++ b/source/ChanSort.Api/Model/ChannelInfo.cs
@@ -9,6 +9,7 @@ namespace ChanSort.Api
private string uid;
private string serviceTypeName;
+ private int newProgramNr;
public virtual bool IsDeleted { get; set; }
public SignalSource SignalSource { get; set; }
@@ -28,10 +29,21 @@ namespace ChanSort.Api
/// original program number from the file, except for channels with IsDeleted==true, which will have the value -1
///
public int OldProgramNr { get; set; }
+
///
/// new program number or -1, if the channel isn't assigned a number or has IsDeleted==true
///
- public int NewProgramNr { get; set; }
+ public int NewProgramNr
+ {
+ get => newProgramNr;
+ set
+ {
+ if (value == 0)
+ {
+ }
+ newProgramNr = value;
+ }
+ }
public string Name { get; set; }
public string ShortName { get; set; }
diff --git a/source/ChanSort.Loader.PhilipsBin/ChanSort.Loader.PhilipsBin.csproj b/source/ChanSort.Loader.PhilipsBin/ChanSort.Loader.PhilipsBin.csproj
index cc11a55..2c67c2d 100644
--- a/source/ChanSort.Loader.PhilipsBin/ChanSort.Loader.PhilipsBin.csproj
+++ b/source/ChanSort.Loader.PhilipsBin/ChanSort.Loader.PhilipsBin.csproj
@@ -75,9 +75,9 @@
-
- PreserveNewest
-
+
+ Always
+
\ No newline at end of file
diff --git a/source/ChanSort.Loader.PhilipsBin/Properties/AssemblyInfo.cs b/source/ChanSort.Loader.PhilipsBin/Properties/AssemblyInfo.cs
index 6de427c..7c55a2a 100644
--- a/source/ChanSort.Loader.PhilipsBin/Properties/AssemblyInfo.cs
+++ b/source/ChanSort.Loader.PhilipsBin/Properties/AssemblyInfo.cs
@@ -2,6 +2,8 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
+[assembly: InternalsVisibleTo("Test.Loader.PhilipsBin")]
+
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
diff --git a/source/ChanSort.Loader.PhilipsBin/Serializer.cs b/source/ChanSort.Loader.PhilipsBin/Serializer.cs
index 21bd58e..8a21833 100644
--- a/source/ChanSort.Loader.PhilipsBin/Serializer.cs
+++ b/source/ChanSort.Loader.PhilipsBin/Serializer.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
@@ -72,7 +73,8 @@ namespace ChanSort.Loader.PhilipsBin
this.satChannels.VisibleColumnFieldNames.Remove("Encrypted");
this.satChannels.VisibleColumnFieldNames.Remove("Hidden");
- this.ini = new IniFile("ChanSort.Loader.PhilipsBin.ini");
+ string iniFile = Assembly.GetExecutingAssembly().Location.Replace(".dll", ".ini");
+ this.ini = new IniFile(iniFile);
}
#endregion
@@ -287,53 +289,64 @@ namespace ChanSort.Loader.PhilipsBin
mapping.SetDataPtr(data, 12 + recordCount * 4);
for (int i = 0; i < recordCount; i++, mapping.BaseOffset += recordSize)
{
- var ch = new ChannelInfo(list.SignalSource, i, 0, null);
-
- var progNr = mapping.GetWord("offProgNr");
- var transponderId = mapping.GetWord("offTransponderIndex");
- if (progNr == 0xFFFF || transponderId == 0xFFFF)
- {
- ch.IsDeleted = true;
- ch.OldProgramNr = -1;
- DataRoot.AddChannel(list, ch);
- continue;
- }
-
- ch.PcrPid = mapping.GetWord("offPcrPid") & mapping.GetMask("maskPcrPid");
- ch.Lock = mapping.GetFlag("Locked");
- ch.OriginalNetworkId = mapping.GetWord("OffOnid"); // can be 0 in some lists
- ch.TransportStreamId = mapping.GetWord("offTsid");
- ch.ServiceId = mapping.GetWord("offSid");
-
- ch.VideoPid = mapping.GetWord("offVpid") & mapping.GetMask("maskVpid");
- //ch.Favorites = mapping.GetFlag("IsFav") ? Favorites.A : 0; // setting this here would mess up the proper order
- ch.OldProgramNr = progNr;
-
- dvbStringDecoder.GetChannelNames(data, mapping.BaseOffset + mapping.GetConst("offName",0), mapping.GetConst("lenName", 0), out var longName, out var shortName);
- ch.Name = longName.TrimEnd('\0');
- ch.ShortName = shortName.TrimEnd('\0');
-
- dvbStringDecoder.GetChannelNames(data, mapping.BaseOffset + mapping.GetConst("offProvider", 0), mapping.GetConst("lenProvider", 0), out var provider, out _);
- ch.Provider = provider.TrimEnd('\0');
-
- if (this.DataRoot.Transponder.TryGetValue(transponderId, out var t))
- {
- ch.Transponder = t;
- ch.FreqInMhz = t.FrequencyInMhz;
- ch.SymbolRate = t.SymbolRate;
- ch.SatPosition = t.Satellite?.OrbitalPosition;
- ch.Satellite = t.Satellite?.Name;
- if (ch.OriginalNetworkId == 0)
- ch.OriginalNetworkId = t.OriginalNetworkId;
- if (ch.TransportStreamId == 0)
- ch.TransportStreamId = t.TransportStreamId;
- }
-
+ var ch = LoadDvbsChannel(list, mapping, i, dvbStringDecoder);
this.DataRoot.AddChannel(list, ch);
}
}
#endregion
+ #region LoadDvbsChannel
+ private ChannelInfo LoadDvbsChannel(ChannelList list, DataMapping mapping, int recordIndex, DvbStringDecoder dvbStringDecoder)
+ {
+ var transponderId = mapping.GetWord("offTransponderIndex");
+ var progNr = mapping.GetWord("offProgNr");
+ var ch = new ChannelInfo(list.SignalSource, recordIndex, progNr, null);
+
+ // 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)
+ {
+ ch.IsDeleted = true;
+ ch.OldProgramNr = -1;
+ return ch;
+ }
+
+ // onid, tsid, pcrpid and vpid can be 0 in some lists
+ ch.PcrPid = mapping.GetWord("offPcrPid") & mapping.GetMask("maskPcrPid");
+ ch.Lock = mapping.GetFlag("Locked");
+ ch.OriginalNetworkId = mapping.GetWord("OffOnid");
+ ch.TransportStreamId = mapping.GetWord("offTsid");
+ ch.ServiceId = mapping.GetWord("offSid");
+ ch.VideoPid = mapping.GetWord("offVpid") & mapping.GetMask("maskVpid");
+ ch.Favorites = mapping.GetFlag("IsFav") ? Favorites.A : 0;
+ ch.OldProgramNr = progNr;
+
+ // the 0x1F as the first byte of the channel name is likely the DVB encoding indicator for UTF-8. So we use the DvbStringDecoder here
+ dvbStringDecoder.GetChannelNames(mapping.Data, mapping.BaseOffset + mapping.GetConst("offName", 0), mapping.GetConst("lenName", 0), out var longName, out var shortName);
+ ch.Name = longName.TrimEnd('\0');
+ ch.ShortName = shortName.TrimEnd('\0');
+
+ dvbStringDecoder.GetChannelNames(mapping.Data, mapping.BaseOffset + mapping.GetConst("offProvider", 0), mapping.GetConst("lenProvider", 0), out var provider, out _);
+ ch.Provider = provider.TrimEnd('\0');
+
+ // copy values from the satellite/transponder tables to the channel
+ if (this.DataRoot.Transponder.TryGetValue(transponderId, out var t))
+ {
+ ch.Transponder = t;
+ ch.FreqInMhz = t.FrequencyInMhz;
+ ch.SymbolRate = t.SymbolRate;
+ ch.SatPosition = t.Satellite?.OrbitalPosition;
+ ch.Satellite = t.Satellite?.Name;
+ if (t.OriginalNetworkId != 0)
+ ch.OriginalNetworkId = t.OriginalNetworkId;
+ if (t.TransportStreamId != 0)
+ ch.TransportStreamId = t.TransportStreamId;
+ }
+
+ return ch;
+ }
+
+ #endregion
+
#region LoadDvbsFavorites
private void LoadDvbsFavorites(string path)
{
diff --git a/source/ChanSort.sln b/source/ChanSort.sln
index 7266222..2f74000 100644
--- a/source/ChanSort.sln
+++ b/source/ChanSort.sln
@@ -78,6 +78,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.M3u", "Chan
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChanSort.Loader.PhilipsBin", "ChanSort.Loader.PhilipsBin\ChanSort.Loader.PhilipsBin.csproj", "{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.Loader.PhilipsBin", "Test.Loader.PhilipsBin\Test.Loader.PhilipsBin.csproj", "{36ED558E-576C-4D9D-A8C5-8D270A156B82}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -434,8 +436,20 @@ Global
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Any CPU.Build.0 = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.ActiveCfg = Release|Any CPU
- {1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.Build.0 = Release|Any CPU
+ {1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.ActiveCfg = Release|x86
+ {1F52B5EC-A2F1-4E53-9E1A-4658296C5BB5}.Release|x86.Build.0 = Release|x86
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|x86.ActiveCfg = Debug|x86
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Debug|x86.Build.0 = Debug|x86
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Any CPU.Build.0 = Release|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|x86.ActiveCfg = Release|x86
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/source/Test.Loader.PhilipsBin/PhilipsS2channellibTest.cs b/source/Test.Loader.PhilipsBin/PhilipsS2channellibTest.cs
new file mode 100644
index 0000000..1a3d82d
--- /dev/null
+++ b/source/Test.Loader.PhilipsBin/PhilipsS2channellibTest.cs
@@ -0,0 +1,97 @@
+using System;
+using System.IO;
+using System.Linq;
+using ChanSort.Api;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace Test.Loader.PhilipsBin
+{
+ [TestClass]
+ public class PhilipsS2channellibTest
+ {
+ [TestMethod]
+ public void TestFiles1()
+ {
+ var baseDir = Path.GetDirectoryName(this.GetType().Assembly.Location);
+ var baseFile = Path.Combine(baseDir, "TestFiles1\\Repair\\ChannelList\\chanLst.bin");
+ var plugin = new ChanSort.Loader.PhilipsBin.SerializerPlugin();
+ var loader = plugin.CreateSerializer(baseFile);
+ loader.Load();
+
+ var list = loader.DataRoot.GetChannelList(SignalSource.DvbS);
+ Assert.AreEqual(5000, list.Channels.Count);
+ Assert.AreEqual(4975, list.Channels.Count(ch => !ch.IsDeleted));
+
+ var ch0 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 0);
+ Assert.IsTrue(ch0.IsDeleted);
+
+ var ch1 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 1);
+ Assert.AreEqual(2, ch1.OldProgramNr);
+ Assert.AreEqual("ZDF HD", ch1.Name);
+ Assert.AreEqual(11361, ch1.FreqInMhz);
+ Assert.AreEqual("Astra 1", ch1.Satellite);
+ Assert.AreEqual(1, ch1.OriginalNetworkId);
+ Assert.AreEqual(1011, ch1.TransportStreamId);
+ Assert.AreEqual(11110, ch1.ServiceId);
+ Assert.AreEqual(6110, ch1.PcrPid);
+ Assert.AreEqual(6110, ch1.VideoPid);
+ Assert.AreEqual(21999, ch1.SymbolRate);
+ Assert.AreEqual("ZDFvision", ch1.Provider);
+ }
+
+ [TestMethod]
+ public void TestFiles2()
+ {
+ var baseDir = Path.GetDirectoryName(this.GetType().Assembly.Location);
+ var baseFile = Path.Combine(baseDir, "TestFiles2\\Repair\\ChannelList\\chanLst.bin");
+ var plugin = new ChanSort.Loader.PhilipsBin.SerializerPlugin();
+ var loader = plugin.CreateSerializer(baseFile);
+ loader.Load();
+
+ var list = loader.DataRoot.GetChannelList(SignalSource.DvbS);
+ Assert.AreEqual(5000, list.Channels.Count);
+ Assert.AreEqual(1326, list.Channels.Count(ch => !ch.IsDeleted));
+
+ var ch0 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 0);
+ Assert.AreEqual(1, ch0.OldProgramNr);
+ Assert.AreEqual("Das Erste HD", ch0.Name);
+ Assert.AreEqual(11493, ch0.FreqInMhz);
+ Assert.AreEqual("Astra 1", ch0.Satellite);
+ //Assert.AreEqual(1, ch0.OriginalNetworkId);
+ Assert.AreEqual(1019, ch0.TransportStreamId);
+ Assert.AreEqual(10301, ch0.ServiceId);
+ //Assert.AreEqual(6110, ch1.PcrPid);
+ //Assert.AreEqual(6110, ch1.VideoPid);
+ Assert.AreEqual(21999, ch0.SymbolRate);
+ Assert.AreEqual("ARD", ch0.Provider);
+ Assert.IsFalse(ch0.Lock);
+ Assert.AreEqual((Favorites)0, ch0.Favorites);
+ Assert.IsFalse(ch0.IsDeleted);
+
+ var ch2 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 2);
+ Assert.AreEqual("NDR FS HH", ch2.Name);
+ Assert.IsTrue(ch2.Lock);
+ Assert.AreEqual((Favorites)0, ch2.Favorites);
+
+ var ch3 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 3);
+ Assert.AreEqual("SAT.1", ch3.Name);
+ Assert.AreEqual(Favorites.A, ch3.Favorites);
+
+ var ch4 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 4);
+ Assert.AreEqual("arte HD", ch4.Name);
+ Assert.AreEqual(Favorites.A, ch4.Favorites);
+
+ var ch7 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 7);
+ Assert.AreEqual("RTL2", ch7.Name);
+ Assert.AreEqual(Favorites.A, ch7.Favorites);
+
+ var ch8 = list.Channels.FirstOrDefault(ch => ch.RecordIndex == 8);
+ Assert.IsTrue(ch8.IsDeleted);
+
+ Assert.AreEqual(1, ch4.OldFavIndex[0]);
+ Assert.AreEqual(2, ch7.OldFavIndex[0]);
+ Assert.AreEqual(3, ch3.OldFavIndex[0]);
+ }
+
+ }
+}
diff --git a/source/Test.Loader.PhilipsBin/Properties/AssemblyInfo.cs b/source/Test.Loader.PhilipsBin/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..f443e0a
--- /dev/null
+++ b/source/Test.Loader.PhilipsBin/Properties/AssemblyInfo.cs
@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Test.Loader.PhilipsBin")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Test.Loader.PhilipsBin")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("36ed558e-576c-4d9d-a8c5-8d270a156b82")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/source/Test.Loader.PhilipsBin/Test.Loader.PhilipsBin.csproj b/source/Test.Loader.PhilipsBin/Test.Loader.PhilipsBin.csproj
new file mode 100644
index 0000000..e0b81b1
--- /dev/null
+++ b/source/Test.Loader.PhilipsBin/Test.Loader.PhilipsBin.csproj
@@ -0,0 +1,260 @@
+
+
+
+
+
+ Debug
+ AnyCPU
+ {36ED558E-576C-4D9D-A8C5-8D270A156B82}
+ Library
+ Properties
+ Test.Loader.PhilipsBin
+ Test.Loader.PhilipsBin
+ v4.8
+ 512
+ {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 15.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+ $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
+ False
+ UnitTest
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+ true
+ ..\Debug\
+ DEBUG;TRACE
+ full
+ x86
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+ bin\x86\Release\
+ TRACE
+ true
+ pdbonly
+ x86
+ 7.3
+ prompt
+ MinimumRecommendedRules.ruleset
+
+
+
+ ..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll
+
+
+ ..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ {dccffa08-472b-4d17-bb90-8f513fc01392}
+ ChanSort.Api
+
+
+ {1f52b5ec-a2f1-4e53-9e1a-4658296c5bb5}
+ ChanSort.Loader.PhilipsBin
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/chanLst.bin b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/chanLst.bin
new file mode 100644
index 0000000..71f4578
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/chanLst.bin differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaAnalogTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaAnalogTable
new file mode 100644
index 0000000..e00beee
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaAnalogTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigSrvTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigSrvTable
new file mode 100644
index 0000000..fb47aae
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigSrvTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigTSTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigTSTable
new file mode 100644
index 0000000..a7c0be8
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaDigTSTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaFrqMapTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaFrqMapTable
new file mode 100644
index 0000000..d07e895
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaFrqMapTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaPresetTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaPresetTable
new file mode 100644
index 0000000..606885a
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/AntennaPresetTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableAnalogTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableAnalogTable
new file mode 100644
index 0000000..e00beee
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableAnalogTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigSrvTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigSrvTable
new file mode 100644
index 0000000..48c48a1
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigSrvTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigTSTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigTSTable
new file mode 100644
index 0000000..a25ec70
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableDigTSTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableFrqMapTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableFrqMapTable
new file mode 100644
index 0000000..212df40
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CableFrqMapTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CablePresetTable b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CablePresetTable
new file mode 100644
index 0000000..f108b07
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/channellib/CablePresetTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref.dat
new file mode 100644
index 0000000..f309cd4
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat
new file mode 100644
index 0000000..f309cd4
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info.dat
new file mode 100644
index 0000000..5e3defd
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info_backup.dat
new file mode 100644
index 0000000..526fb8e
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/db_file_info_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite.dat
new file mode 100644
index 0000000..e16bdec
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite_backup.dat
new file mode 100644
index 0000000..e16bdec
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/favorite_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb.dat
new file mode 100644
index 0000000..441218c
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb_backup.dat
new file mode 100644
index 0000000..441218c
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/lnb_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite.dat
new file mode 100644
index 0000000..2d7b658
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite_backup.dat
new file mode 100644
index 0000000..7a62845
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/satellite_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service.dat
new file mode 100644
index 0000000..2145a8b
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service_backup.dat
new file mode 100644
index 0000000..533f372
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/service_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo.dat
new file mode 100644
index 0000000..b520791
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo_backup.dat
new file mode 100644
index 0000000..d69e2a1
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/tuneinfo_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref.dat
new file mode 100644
index 0000000..0609c54
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref_backup.dat
new file mode 100644
index 0000000..6c8bc40
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles1/Repair/ChannelList/s2channellib/user_pref_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/chanLst.bin b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/chanLst.bin
new file mode 100644
index 0000000..55e8f8e
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/chanLst.bin differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaAnalogTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaAnalogTable
new file mode 100644
index 0000000..e00beee
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaAnalogTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigSrvTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigSrvTable
new file mode 100644
index 0000000..fb47aae
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigSrvTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigTSTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigTSTable
new file mode 100644
index 0000000..a7c0be8
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaDigTSTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaFrqMapTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaFrqMapTable
new file mode 100644
index 0000000..d07e895
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaFrqMapTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaPresetTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaPresetTable
new file mode 100644
index 0000000..606885a
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/AntennaPresetTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableAnalogTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableAnalogTable
new file mode 100644
index 0000000..421d2bf
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableAnalogTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigSrvTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigSrvTable
new file mode 100644
index 0000000..fb47aae
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigSrvTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigTSTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigTSTable
new file mode 100644
index 0000000..a7c0be8
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableDigTSTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableFrqMapTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableFrqMapTable
new file mode 100644
index 0000000..d07e895
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CableFrqMapTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CablePresetTable b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CablePresetTable
new file mode 100644
index 0000000..6b0abbe
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/channellib/CablePresetTable differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref.dat
new file mode 100644
index 0000000..c1a4829
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat
new file mode 100644
index 0000000..b8df2a7
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/adk_user_pref_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info.dat
new file mode 100644
index 0000000..d503264
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info_backup.dat
new file mode 100644
index 0000000..5b4a45c
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/db_file_info_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite.dat
new file mode 100644
index 0000000..a25484f
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite_backup.dat
new file mode 100644
index 0000000..a25484f
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/favorite_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb.dat
new file mode 100644
index 0000000..743b42f
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb_backup.dat
new file mode 100644
index 0000000..743b42f
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/lnb_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite.dat
new file mode 100644
index 0000000..1317e81
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite_backup.dat
new file mode 100644
index 0000000..1317e81
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/satellite_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service.dat
new file mode 100644
index 0000000..ef57382
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service_backup.dat
new file mode 100644
index 0000000..ef57382
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/service_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo.dat
new file mode 100644
index 0000000..1fc71f2
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo_backup.dat
new file mode 100644
index 0000000..de9e049
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/tuneinfo_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref.dat
new file mode 100644
index 0000000..622c5db
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref.dat differ
diff --git a/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref_backup.dat b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref_backup.dat
new file mode 100644
index 0000000..622c5db
Binary files /dev/null and b/source/Test.Loader.PhilipsBin/TestFiles2/Repair/ChannelList/s2channellib/user_pref_backup.dat differ
diff --git a/source/Test.Loader.PhilipsBin/packages.config b/source/Test.Loader.PhilipsBin/packages.config
new file mode 100644
index 0000000..fcf029f
--- /dev/null
+++ b/source/Test.Loader.PhilipsBin/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file