Files
ChanSort/source/ChanSort.Loader.LG/SatTransponder.cs
2015-06-04 13:31:43 +02:00

82 lines
2.5 KiB
C#

using ChanSort.Api;
namespace ChanSort.Loader.LG
{
internal class SatTransponder : Transponder
{
private const string _FirstChannelIndex = "offFirstChannelIndex";
private const string _LastChannelIndex = "offLastChannelIndex";
private const string _ChannelCount = "offChannelCount";
private const string _Frequency = "offFrequency";
private const string _OriginalNetworkId = "offOriginalNetworkId";
private const string _TransportStreamId = "offTransportStreamId";
private const string _SymbolRate = "offSymbolRate";
private const string _SatIndex = "offSatIndex";
private readonly DataMapping mapping;
private readonly byte[] data;
private readonly int offset;
private int symbolRate;
private int firstChannelIndex;
private int lastChannelIndex;
public SatTransponder(int index, DataMapping mapping, DataRoot dataRoot, int satIndexFactor) : base(index)
{
this.mapping = mapping;
this.data = mapping.Data;
this.offset = mapping.BaseOffset;
this.firstChannelIndex = mapping.GetWord(_FirstChannelIndex);
this.lastChannelIndex = mapping.GetWord(_LastChannelIndex);
this.FrequencyInMhz = mapping.GetWord(_Frequency);
this.OriginalNetworkId = mapping.GetWord(_OriginalNetworkId);
this.TransportStreamId = mapping.GetWord(_TransportStreamId);
this.symbolRate = mapping.GetWord(_SymbolRate);
if (this.symbolRate%100 >= 95)
this.symbolRate = (this.symbolRate/100 + 1)*100;
// note: a correction factor is applied later after all transponders were loaded (*0.5, *1, *2)
this.Satellite = dataRoot.Satellites.TryGet(mapping.GetByte(_SatIndex)/satIndexFactor);
}
public int FirstChannelIndex
{
get { return this.firstChannelIndex; }
set
{
mapping.SetDataPtr(this.data, this.offset);
mapping.SetWord(_FirstChannelIndex, value);
this.firstChannelIndex = value;
}
}
public int LastChannelIndex
{
get { return lastChannelIndex; }
set
{
mapping.SetDataPtr(this.data, this.offset);
mapping.SetWord(_LastChannelIndex, value);
this.lastChannelIndex = value;
}
}
public int ChannelCount
{
set
{
mapping.SetDataPtr(this.data, this.offset);
mapping.SetWord(_ChannelCount, value);
}
}
public override int SymbolRate
{
get { return symbolRate; }
set { this.symbolRate = value; }
}
}
}