mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-13 19:02:05 +01:00
82 lines
2.5 KiB
C#
82 lines
2.5 KiB
C#
using ChanSort.Api;
|
|
|
|
namespace ChanSort.Loader.LG.Binary
|
|
{
|
|
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; }
|
|
}
|
|
}
|
|
}
|