mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-16 04:12:03 +01:00
initial import
This commit is contained in:
83
ChanSort.Plugin.ScmFile/DvbSChannelDataMapping.cs
Normal file
83
ChanSort.Plugin.ScmFile/DvbSChannelDataMapping.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System.Text;
|
||||
using ChanSort.Api;
|
||||
|
||||
namespace ChanSort.Plugin.ScmFile
|
||||
{
|
||||
internal class DvbSChannelDataMapping : DvbChannelMappingBase
|
||||
{
|
||||
private const string offChecksum = "offChecksum";
|
||||
private const string offTransponderNr = "offTransponderNr";
|
||||
private const string offSatelliteNr = "offSatelliteNr";
|
||||
private readonly bool hasExtendedFavorites;
|
||||
|
||||
#region ctor()
|
||||
public DvbSChannelDataMapping(IniFile.Section settings, int dataLength)
|
||||
: base(settings, dataLength, new UnicodeEncoding(true, false))
|
||||
{
|
||||
this.hasExtendedFavorites = dataLength >= 168;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region TransponderNr
|
||||
public ushort TransponderNr
|
||||
{
|
||||
get { return this.GetWord(offTransponderNr); }
|
||||
set { this.SetWord(offTransponderNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region SatelliteNr
|
||||
public ushort SatelliteNr
|
||||
{
|
||||
get { return this.GetWord(offSatelliteNr); }
|
||||
set { this.SetWord(offSatelliteNr, value); }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Favorites
|
||||
public override Favorites Favorites
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!this.hasExtendedFavorites)
|
||||
return base.Favorites;
|
||||
|
||||
byte fav = 0;
|
||||
byte mask = 0x01;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if (this.GetDword(off) == 1)
|
||||
fav |= mask;
|
||||
mask <<= 1;
|
||||
}
|
||||
return (Favorites)fav;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (!this.hasExtendedFavorites)
|
||||
{
|
||||
base.Favorites = value;
|
||||
return;
|
||||
}
|
||||
|
||||
int intValue = (int)value;
|
||||
foreach (int off in this.GetOffsets(offFavorites))
|
||||
{
|
||||
if ((intValue & 1) != 0)
|
||||
this.SetDword(off, 1);
|
||||
intValue >>= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
#region Checksum
|
||||
public byte Checksum
|
||||
{
|
||||
get { return this.GetByte(offChecksum); }
|
||||
set { this.SetByte(offChecksum, value); }
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user