added support for LG's LN series

This commit is contained in:
hbeham
2013-05-07 12:20:38 +02:00
parent ede6144d91
commit a14cbaa063
13 changed files with 1666 additions and 31 deletions

View File

@@ -29,6 +29,34 @@
offServiceType = 182
offAudioPid2 = 238
[ACTChannelDataMapping:224]
; LN series
reorderChannelData = 0
lenName = 40
offChannelTransponder = 10, 118, 153, 160
offProgramNr = 12, 156
offFavorites = 20
offPcrPid = 24, 208
offAudioPid = 26
offVideoPid = 36
offName = 44, 168
offNameLength = 84, 167
offServiceId = 86, 164
offFrequencyLong = 120
offOriginalNetworkId = 130
offTransportStreamId = 132
offFavorites2 = 162
offDeleted = 162
maskDeleted = 0x42
offLock = 163
maskLock = 0x01
offSkip = 163
maskSkip = 0x02
offHide = 163
maskHide = 0x04
offServiceType = 166
offAudioPid2 = 238
[ACTChannelDataMapping:192]
; LM series with Firmware 4.x (all except LM611S and LM340S)
reorderChannelData = 0
@@ -231,7 +259,7 @@
offAudioPid2 = 154
[DvbsBlock:687880]
; everything before LM series (but including LM611S and LM340S)
; everything before LM series + LM611S and LM340S
satCount = 64
satLength = 44
transponderCount = 2400
@@ -241,6 +269,19 @@
lnbCount = 40
lnbLength = 44
[DvbsBlock:629932]
; LN
satCount = 64
satLength = 44
transponderCount = 2400
transponderLength = 44
linkedListExtraDataLength = 2
dvbsChannelCount = 6000
dvbsChannelLength = 76
lnbCount = 40
lnbLength = 48
[DvbsBlock:717960]
; LM and PM series except LM611S and LM340S
satCount = 64
@@ -264,6 +305,7 @@
lnbLength = 52
[TransponderDataMapping:40]
; everything up to LM
offFirstChannelIndex = 0
offLastChannelIndex = 2
offChannelCount = 4
@@ -275,7 +317,21 @@
offSatIndex = 36
symbolRateFactor = 1
[TransponderDataMapping:44]
; LN
offFirstChannelIndex = 0
offLastChannelIndex = 2
offChannelCount = 4
offTransponderIndex = 10
offFrequency = 12
offOriginalNetworkId = 22
offTransportStreamId = 24
offSymbolRate = 29
offSatIndex = 40
symbolRateFactor = 0.5
[TransponderDataMapping:56]
; LA
offFirstChannelIndex = 0
offLastChannelIndex = 2
offChannelCount = 4
@@ -288,6 +344,7 @@
symbolRateFactor = 0.5
[SatChannelDataMapping:68]
; everything before LM + LM340S and LM611S
lenName = 40
offSatelliteNr = 0
offSourceType = 4
@@ -315,6 +372,35 @@
offAudioPid = 62
[SatChannelDataMapping:72]
; LM series
lenName = 40
offSatelliteNr = 0
offSourceType = 4
offTransponderIndex = 6, 12
offProgramNr = 8
offProgramNrPreset = 10
offFavorites2 = 14
offDeleted = 14
maskDeleted = 0x42
offEncrypted = 14
maskEncrypted = 0x80
offLock = 15
maskLock = 0x01
offSkip = 15
maskSkip = 0x02
offHide = 15
maskHide = 0x04
offProgNrCustomized = 15
maskProgNrCustomized = 0x40
offServiceId = 16
offServiceType = 18
offNameLength = 19
offName = 20
offVideoPid = 60
offAudioPid = 62
[SatChannelDataMapping:76]
; LN series
lenName = 40
offSatelliteNr = 0
offSourceType = 4

View File

@@ -8,6 +8,7 @@
public readonly int transponderCount;
public readonly int transponderLength;
public readonly int sizeOfChannelLinkedListEntry = 8;
public readonly int linkedListExtraDataLength;
public readonly int dvbsMaxChannelCount;
public readonly int dvbsChannelLength;
public readonly int lnbCount;
@@ -24,6 +25,7 @@
this.transponderCount = iniSection.GetInt("transponderCount");
this.transponderLength = iniSection.GetInt("transponderLength");
this.sizeOfTransponderBlockHeader = 14 + transponderCount/8 + transponderCount*6 + 2;
this.linkedListExtraDataLength = iniSection.GetInt("linkedListExtraDataLength");
this.dvbsMaxChannelCount = iniSection.GetInt("dvbsChannelCount");
this.dvbsChannelLength = iniSection.GetInt("dvbsChannelLength");
this.lnbCount = iniSection.GetInt("lnbCount");
@@ -34,7 +36,7 @@
12, // header
14 + 2 + this.satCount + this.satCount*this.satLength, // satellites
sizeOfTransponderBlockHeader - 4 + transponderCount * transponderLength, // transponder
12 + dvbsMaxChannelCount/8 + dvbsMaxChannelCount*sizeOfChannelLinkedListEntry + dvbsMaxChannelCount * dvbsChannelLength, // channels
12 + dvbsMaxChannelCount/8 + dvbsMaxChannelCount*sizeOfChannelLinkedListEntry + linkedListExtraDataLength + dvbsMaxChannelCount * dvbsChannelLength, // channels
LnbBlockHeaderSize - 4 + lnbCount * lnbLength // sat/LNB-Config
};
@@ -73,7 +75,7 @@
/// </summary>
public int ChannelListOffset
{
get { return SequenceTableOffset + dvbsMaxChannelCount*sizeOfChannelLinkedListEntry; }
get { return SequenceTableOffset + dvbsMaxChannelCount*sizeOfChannelLinkedListEntry + linkedListExtraDataLength; }
}

View File

@@ -335,7 +335,7 @@ namespace ChanSort.Loader.LG
off += header.Size;
off += satConfig.dvbsMaxChannelCount/8; // skip allocation bitmap
this.ReadDvbsChannelLinkedList(header, ref off);
off += satConfig.linkedListExtraDataLength;
this.ReadDvbsChannels(ref off, header.LinkedListStartIndex);
// subblock 5 (satellite/LNB config)
@@ -707,10 +707,12 @@ namespace ChanSort.Loader.LG
private void UpdateChannelLinkedList(int counter)
{
var header = new SatChannelListHeader(this.fileContent, this.dvbsBlockOffset + satConfig.ChannelListHeaderOffset);
header.ChannelCount = counter;
header.LinkedListStartIndex = 0;
if (counter == 0)
counter = 1;
header.LinkedListEndIndex1 = counter - 1;
header.LinkedListEndIndex2 = counter - 1;
header.ChannelCount = counter;
// update linked list
var off = this.dvbsBlockOffset + satConfig.SequenceTableOffset;

View File

@@ -13,6 +13,8 @@ namespace ChanSort.Ui
public static void Show(IWin32Window owner, string message, string caption)
{
if (string.IsNullOrEmpty(message))
return;
var box = new InfoBox();
box.Text = caption;
box.txtMessage.Text = message;

View File

@@ -105,8 +105,8 @@
this.miSave = new DevExpress.XtraBars.BarButtonItem();
this.miSaveAs = new DevExpress.XtraBars.BarButtonItem();
this.miOpenReferenceFile = new DevExpress.XtraBars.BarButtonItem();
this.miQuit = new DevExpress.XtraBars.BarButtonItem();
this.miSaveReferenceFile = new DevExpress.XtraBars.BarButtonItem();
this.miQuit = new DevExpress.XtraBars.BarButtonItem();
this.miEdit = new DevExpress.XtraBars.BarSubItem();
this.miAddChannel = new DevExpress.XtraBars.BarButtonItem();
this.miRemove = new DevExpress.XtraBars.BarButtonItem();
@@ -950,6 +950,14 @@
this.miOpenReferenceFile.Name = "miOpenReferenceFile";
this.miOpenReferenceFile.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miOpenReferenceFile_ItemClick);
//
// miSaveReferenceFile
//
resources.ApplyResources(this.miSaveReferenceFile, "miSaveReferenceFile");
this.miSaveReferenceFile.Id = 57;
this.miSaveReferenceFile.ImageIndex = 6;
this.miSaveReferenceFile.Name = "miSaveReferenceFile";
this.miSaveReferenceFile.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miSaveReferenceFile_ItemClick);
//
// miQuit
//
resources.ApplyResources(this.miQuit, "miQuit");
@@ -959,14 +967,6 @@
this.miQuit.Name = "miQuit";
this.miQuit.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miQuit_ItemClick);
//
// miSaveReferenceFile
//
resources.ApplyResources(this.miSaveReferenceFile, "miSaveReferenceFile");
this.miSaveReferenceFile.Id = 57;
this.miSaveReferenceFile.ImageIndex = 6;
this.miSaveReferenceFile.Name = "miSaveReferenceFile";
this.miSaveReferenceFile.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(this.miSaveReferenceFile_ItemClick);
//
// miEdit
//
resources.ApplyResources(this.miEdit, "miEdit");
@@ -1150,7 +1150,8 @@
this.barSubItem2.Id = 47;
this.barSubItem2.LinksPersistInfo.AddRange(new DevExpress.XtraBars.LinkPersistInfo[] {
new DevExpress.XtraBars.LinkPersistInfo(this.miTvSettings),
new DevExpress.XtraBars.LinkPersistInfo(this.miEraseChannelData)});
new DevExpress.XtraBars.LinkPersistInfo(this.miEraseChannelData),
new DevExpress.XtraBars.LinkPersistInfo(this.miCleanupChannels)});
this.barSubItem2.Name = "barSubItem2";
//
// miTvSettings
@@ -1256,7 +1257,6 @@
this.miEraseDuplicateChannels.Checked = true;
this.miEraseDuplicateChannels.Id = 53;
this.miEraseDuplicateChannels.Name = "miEraseDuplicateChannels";
this.miEraseDuplicateChannels.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
//
// mnuHelp
//

View File

@@ -24,7 +24,7 @@ namespace ChanSort.Ui
{
public partial class MainForm : XtraForm
{
public const string AppVersion = "v2013-05-05";
public const string AppVersion = "v2013-05-07a";
#region enum EditMode
private enum EditMode
@@ -332,6 +332,8 @@ namespace ChanSort.Ui
{
#if ENABLE_TV_FILE_CLEANUP
this.currentTvSerializer.EraseDuplicateChannels = this.miEraseDuplicateChannels.Checked;
#else
this.currentTvSerializer.EraseDuplicateChannels = false;
#endif
this.currentTvSerializer.Load();
this.dataRoot = this.currentTvSerializer.DataRoot;
@@ -1116,6 +1118,7 @@ namespace ChanSort.Ui
#if ENABLE_TV_FILE_CLEANUP
this.miCleanupChannels.Visibility = this.currentTvSerializer != null &&
this.currentTvSerializer.Features.CleanUpChannelData ? BarItemVisibility.Always : BarItemVisibility.Never;
this.miEraseDuplicateChannels.Visibility = BarItemVisibility.Always;
#else
this.miCleanupChannels.Visibility = BarItemVisibility.Never;
this.miEraseDuplicateChannels.Visibility = BarItemVisibility.Never;
@@ -1248,6 +1251,7 @@ namespace ChanSort.Ui
{
if (this.currentTvSerializer != null && this.currentTvSerializer.Features.CleanUpChannelData)
{
this.currentTvSerializer.EraseDuplicateChannels = true;
var msg = this.currentTvSerializer.CleanUpChannelData();
this.FillChannelListCombo();
InfoBox.Show(this, msg, this.miCleanupChannels.Caption);

View File

@@ -374,6 +374,12 @@
<data name="miEraseChannelData.Caption" xml:space="preserve">
<value>Erase all channel data</value>
</data>
<data name="miCleanupChannels.Caption" xml:space="preserve">
<value>Cleanup channel data</value>
</data>
<data name="miCleanupChannels.Hint" xml:space="preserve">
<value>Remove duplicate channels and reorganize </value>
</data>
<data name="mnuOptions.Caption" xml:space="preserve">
<value>&amp;Settings</value>
</data>
@@ -550,12 +556,6 @@
<data name="miMoveDown.Caption" xml:space="preserve">
<value>Move down</value>
</data>
<data name="miCleanupChannels.Caption" xml:space="preserve">
<value>Cleanup channel data</value>
</data>
<data name="miCleanupChannels.Hint" xml:space="preserve">
<value>Remove duplicate channels and reorganize </value>
</data>
<data name="rbInsertSwap.Properties.Caption" xml:space="preserve">
<value>swap</value>
</data>
@@ -1154,18 +1154,18 @@
<data name="&gt;&gt;miOpenReferenceFile.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;miQuit.Name" xml:space="preserve">
<value>miQuit</value>
</data>
<data name="&gt;&gt;miQuit.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;miSaveReferenceFile.Name" xml:space="preserve">
<value>miSaveReferenceFile</value>
</data>
<data name="&gt;&gt;miSaveReferenceFile.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;miQuit.Name" xml:space="preserve">
<value>miQuit</value>
</data>
<data name="&gt;&gt;miQuit.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;miEdit.Name" xml:space="preserve">
<value>miEdit</value>
</data>
@@ -1407,7 +1407,7 @@
<value>DevExpress.XtraEditors.XtraForm, DevExpress.Utils.v12.2, Version=12.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="SharedImageCollection.Timestamp" type="System.DateTime, mscorlib">
<value>05/05/2013 19:31:31</value>
<value>05/07/2013 01:07:27</value>
</data>
<data name="SharedImageCollection.ImageSize" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>

View File

@@ -0,0 +1,16 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Test.Loader.LG
{
[TestClass]
public class TestLN : TestBase
{
[TestMethod]
public void TestLX9500_T224T_Sat76TR()
{
// "ThomasOhmes"
//this.GenerateTestFiles("LN/xxLN5406-ZA99999");
this.ExecuteTest("LN/xxLN5406-ZA99999");
}
}
}

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -78,6 +78,7 @@
<Compile Include="LE\TestLE.cs" />
<Compile Include="LK\TestLK.cs" />
<Compile Include="LM\TestLM.cs" />
<Compile Include="LN\TestLN.cs" />
<Compile Include="LS\TestLS.cs" />
<Compile Include="LV\TestLV.cs" />
<Compile Include="LW\TestLW.cs" />

View File

@@ -1,6 +1,7 @@
Version v2013-05-05a (preview) ============================================
Version v2013-05-07a (preview) ============================================
Changes:
- Added support for LG's LN-series
- Fixed: Saving reordered list for LG xxLH3000.
- Removed "Cleanup TV data file" option due to a report of a bricked LG TV.
(The cleanup no longer works since firmware 4.40.19 when a preset