Files
ChanSort/source/ChanSort.Loader.Samsung/Zip/DbChannel.cs

77 lines
2.8 KiB
C#

using System.Collections.Generic;
using System.Data;
using ChanSort.Api;
namespace ChanSort.Loader.Samsung.Zip
{
internal class DbChannel : ChannelInfo
{
#region ctor()
internal DbChannel(IDataReader r, IDictionary<string, int> field, DbSerializer loader, Dictionary<long, string> providers, Satellite sat, Transponder tp)
{
var chType = r.GetInt32(field["chType"]);
this.SignalSource = DbSerializer.ChTypeToSignalSource(chType);
this.RecordIndex = r.GetInt64(field["SRV.srvId"]);
this.OldProgramNr = r.GetInt32(field["major"]);
this.FreqInMhz = (decimal)r.GetInt32(field["freq"]) / 1000;
this.ChannelOrTransponder =
(this.SignalSource & SignalSource.DvbT) == SignalSource.DvbT ? LookupData.Instance.GetDvbtTransponder(this.FreqInMhz).ToString() :
(this.SignalSource & SignalSource.DvbC) == SignalSource.DvbC ? LookupData.Instance.GetDvbcTransponder(this.FreqInMhz).ToString() :
(this.SignalSource & SignalSource.DvbS) == SignalSource.DvbS ? LookupData.Instance.GetAstraTransponder((int)this.FreqInMhz).ToString() :
"";
this.Name = loader.ReadUtf16(r, field["srvName"]);
this.Hidden = r.GetBoolean(field["hidden"]);
this.Encrypted = r.GetBoolean(field["scrambled"]);
this.Lock = r.GetBoolean(field["lockMode"]);
this.Skip = !r.GetBoolean(field["numSel"]);
if (sat != null)
{
this.Satellite = sat.Name;
this.SatPosition = sat.OrbitalPosition;
}
if (tp != null)
{
this.Transponder = tp;
this.SymbolRate = tp.SymbolRate;
this.Polarity = tp.Polarity;
}
if ((this.SignalSource & SignalSource.Digital) != 0)
this.ReadDvbData(r, field, loader, providers);
else
this.ReadAnalogData(r, field);
base.IsDeleted = this.OldProgramNr == -1;
}
#endregion
#region ReadAnalogData()
private void ReadAnalogData(IDataReader r, IDictionary<string, int> field)
{
}
#endregion
#region ReadDvbData()
protected void ReadDvbData(IDataReader r, IDictionary<string, int> field, DbSerializer loader, Dictionary<long, string> providers)
{
this.ShortName = loader.ReadUtf16(r, field["srvName"]);
this.RecordOrder = r.GetInt32(field["major"]);
int serviceType = r.GetInt32(field["srvType"]);
this.ServiceType = serviceType;
this.SignalSource |= LookupData.Instance.IsRadioTvOrData(serviceType);
this.OriginalNetworkId = r.GetInt32(field["onid"]);
this.TransportStreamId = r.GetInt32(field["tsid"]);
this.ServiceId = r.GetInt32(field["progNum"]);
this.VideoPid = r.GetInt32(field["vidPid"]);
if (!r.IsDBNull(field["provId"]))
this.Provider = providers.TryGet(r.GetInt64(field["provId"]));
this.AddDebug(r.GetInt32(field["lcn"]).ToString());
}
#endregion
}
}