diff --git a/skyscraper8/Passing.cs b/skyscraper8/Passing.cs deleted file mode 100644 index b3eb855..0000000 --- a/skyscraper8/Passing.cs +++ /dev/null @@ -1,293 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Net.NetworkInformation; -using System.Reflection; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using log4net; -using skyscraper5.Dvb.Psi.Model; -using skyscraper5.Mpeg2; -using skyscraper5.Skyscraper; -using skyscraper5.Skyscraper.Headless; -using skyscraper5.Skyscraper.IO; -using skyscraper5.Skyscraper.IO.CrazycatStreamReader; -using skyscraper5.Skyscraper.IO.TunerInterface; -using skyscraper5.Skyscraper.Plugins; -using skyscraper5.Skyscraper.Scraper; -using skyscraper5.Skyscraper.Scraper.Storage; -using skyscraper8.Skyscraper.Scraper.Storage; - -namespace skyscraper5 -{ - public class Passing - { - public DataStorage DataStorage { get; set; } - public ObjectStorage ObjectStorage { get; set; } - private IStreamReader streamReader; - private List tuners; - private List satellitePositions; - private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name); - - public Passing() - { - - } - - public bool Boot() - { - - Ini ini = PluginManager.GetInstance().Ini; - - StorageConnectionManager connectionManager = StorageConnectionManager.GetInstance(); - - IEnumerable> allKnownFactoryNames = connectionManager.GetAllKnownFactoryNames(); - foreach (Tuple knownFactoryName in allKnownFactoryNames) - { - logger.InfoFormat("Found {0} Storage Factory #{1}, {2}",knownFactoryName.Item2 ? "Data" : "Object",knownFactoryName.Item1,knownFactoryName.Item3); - } - - logger.Debug("Acquiring Default Data Storage..."); - DataStorageFactory dataStorageFactory = connectionManager.GetDefaultDataStorageFactory(); - logger.Debug("Acquiring Default Object Storage..."); - ObjectStorageFactory objectStorageFactory = connectionManager.GetDefaultObjectStorageFactory(); - logger.Debug("Acquiring Data Storage..."); - DataStorage = dataStorageFactory.CreateDataStorage(); - if (DataStorage == null) - { - logger.FatalFormat("The data storage factory didn't create a data storage."); - return false; - } - - bool isEquivalent = objectStorageFactory.IsEquivalent(dataStorageFactory); - if (isEquivalent) - { - logger.Debug("Using the Data Storage as Object Storage."); - ObjectStorage = (ObjectStorage)DataStorage; - } - else - { - logger.Debug("Acquiring Object Storage..."); - ObjectStorage = objectStorageFactory.CreateObjectStorage(); - if (ObjectStorage == null) - { - logger.FatalFormat("The object storage factory didn't create an object storage."); - return false; - } - } - - TunerFactoryConnectionManager tunerFactoryConnectionManager = TunerFactoryConnectionManager.GetInstance(); - ReadOnlyCollection> tunerFactories = tunerFactoryConnectionManager.GetKnownFactories(); - int tunerFactory = ini.ReadValue("startup", "tunerFactory", 0); - KeyValuePair bootingTuner = tunerFactories.First(x => x.Key.Id == tunerFactory); - if (bootingTuner.Value == null) - { - Console.WriteLine("The tuner factory #{0} didn't load.", tunerFactory); - return false; - } - - TunerFactoryConnectionManager.ConfigureFactoryFromIni(bootingTuner, ini); - - streamReader = bootingTuner.Value.CreateStreamReader(); - if (streamReader == null) - { - Console.WriteLine("The tuner factory #{0} didn't create a stream reader."); - return false; - } - - try - { - streamReader.CheckForDVB(); - } - catch (BadImageFormatException e) - { - Console.WriteLine("The configured tuner factory is not suitable for the current processor architecture. Tuning won't work, therefore functionality will be severely limited. Please configure a Tuner Factory Class suitable for this processor architecture in order to get the best experience. If you need to run crazycat69's StreamReader.dll on 64-bit machines, try RemoteStreamReader."); - streamReader = new NullTunerFactory().CreateStreamReader(); - } - - List foundTuners = new List(); - bool checkForDvbExEx = streamReader.CheckForDVBExEx((index, name, type) => - { - TunerMetadata tuner = new TunerMetadata(index, name, type); - foundTuners.Add(tuner); - }); - - foreach (TunerMetadata foundTuner in foundTuners) - { - streamReader.StopDVB(); - - bool startDvbEx = streamReader.StartDvbEx(foundTuner.Index); - if (!startDvbEx) - { - Console.WriteLine("Failed to start {0}", foundTuner.Name); - Thread.Sleep(1000); - continue; - } - - foundTuner.Caps = streamReader.GetCaps(); - - byte[] macBuffer = new byte[6]; - bool mac = streamReader.GetMAC(macBuffer); - if (!mac) - { - Console.WriteLine("Failed to read MAC Address of {0}", foundTuner.Name); - Thread.Sleep(1000); - } - else - { - foundTuner.MacAddress = new PhysicalAddress(macBuffer); - } - - bool stopDvb = streamReader.StopDVB(); - if (!stopDvb) - { - Console.WriteLine("Failed to stop {0}", foundTuner.Name); - Thread.Sleep(1000); - continue; - } -; - if (DataStorage.UiTunerTestFor(foundTuner)) - { - DataStorage.UiTunerGetConfiguration(foundTuner); - } - - if (tuners == null) - tuners = new List(); - tuners.Add(foundTuner); - } - - satellitePositions = DataStorage.UiSatellitesListAll(); - - return true; - } - - private HeadlessJob GetNextJob() - { - HeadlessJob headlessJob = DataStorage.GetQueuedJob(); - if (headlessJob != null) - { - return headlessJob; - } - - return new HeadlessJob(HeadlessJobType.BlindscanEverything); - } - - public void Run() - { - while (true) - { - HeadlessJob headlessJob = GetNextJob(); - Run(headlessJob); - if (!headlessJob.isSynthetic) - { - DataStorage.SetQueuedJobComplete(headlessJob); - } - } - } - - private void Run(HeadlessJob job) - { - switch (job.jobType) - { - case HeadlessJobType.Sleep: - Thread.Sleep(job.iArg1); - break; - case HeadlessJobType.MassImport: - DirectoryInfo di = new DirectoryInfo(job.sArg1); - MassImportDirectory(di); - break; - case HeadlessJobType.BlindscanEverything: - PerformBlindscanEverything(); - break; - case HeadlessJobType.ReimportByTag1: - ReimportTag(job.iArg1); - break; - default: - throw new NotImplementedException(job.jobType.ToString()); - } - } - - private void PerformBlindscanEverything() - { - if (tuners == null) - tuners = new List(); - if (tuners.Count == 0) - throw new ApplicationException("I'd need to blindscan everything, but I don't have any tuners I could use!"); - - throw new NotImplementedException(nameof(PerformBlindscanEverything)); - } - - private void ReimportTag(int tag1) - { - IReadOnlyList queue = DataStorage.ListImportFileByTag1(tag1); - foreach(string filename in queue) - { - FileInfo fi = new FileInfo(filename); - if (!fi.Exists) - continue; - ScrapeStream(fi); - } - } - - public void MassImportDirectory(DirectoryInfo sourceDir) - { - foreach (FileSystemInfo fileSystemInfo in sourceDir.GetFileSystemInfos()) - { - DirectoryInfo di = fileSystemInfo as DirectoryInfo; - FileInfo fi = fileSystemInfo as FileInfo; - if (di != null) - { - MassImportDirectory(di); - } - else if (fi != null) - { - if (fi.Length == 0) - continue; - - if (!fi.Extension.ToLowerInvariant().Equals(".ts")) - continue; - - if (DataStorage.ImportFileKnown(fi)) - continue; - - FileStream fileStream = fi.OpenRead(); - Stopwatch stopwatch = Stopwatch.StartNew(); - int tstype; - ScrapeStream(fileStream,true, out tstype); - stopwatch.Stop(); - Console.WriteLine("Importing {0} took {1}",fi.Name, stopwatch.Elapsed); - DataStorage.WaitForCompletion(); - DataStorage.ImportMarkFileAsKnown(fi, stopwatch.Elapsed, tstype); - fileStream.Close(); - } - else - { - throw new NotImplementedException(fileSystemInfo.GetType().ToString()); - } - } - } - - private void ScrapeStream(FileInfo fi) - { - FileStream fileStream = fi.OpenRead(); - ScrapeStream(fileStream, true, out _); - fileStream.Close(); - fileStream.Dispose(); - } - - private void ScrapeStream(Stream inStream, bool disk, out int tstype) - { - SkyscraperContext skyscraperContext = new SkyscraperContext(new TsContext(), DataStorage,ObjectStorage); - skyscraperContext.SourceIsDisk = disk; - skyscraperContext.InitalizeFilterChain(); - skyscraperContext.IngestFromStream(inStream); - skyscraperContext.Dispose(); - tstype = skyscraperContext.SpecialTsType; - } - } -} diff --git a/skyscraper8/Skyscraper/Equipment/BaseEquipment.cs b/skyscraper8/Skyscraper/Equipment/BaseEquipment.cs deleted file mode 100644 index 566f850..0000000 --- a/skyscraper8/Skyscraper/Equipment/BaseEquipment.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace skyscraper5.Skyscraper.Equipment -{ - public class BaseEquipment - { - [XmlIgnore] - public int Id { get; set; } - - [XmlAttribute] - public string Manufacturer { get; set; } - - [XmlAttribute] - public string Name { get; set; } - - [XmlIgnore] - public DateTime DateAdded { get; set; } - } -} diff --git a/skyscraper8/Skyscraper/Equipment/Dish.cs b/skyscraper8/Skyscraper/Equipment/Dish.cs deleted file mode 100644 index 35a558e..0000000 --- a/skyscraper8/Skyscraper/Equipment/Dish.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace skyscraper5.Skyscraper.Equipment -{ - public class DishEntity : BaseEquipment - { - public DishEntity(string manufac, string name, int diameter, DishShape shape) - { - this.Manufacturer = manufac; - this.Name = name; - this.Diameter = diameter; - this.Shape = shape; - } - - public DishEntity() - { - } - - [XmlAttribute] - public int Diameter { get; set; } - - [XmlAttribute] - public DishShape Shape { get; set; } - - protected bool Equals(DishEntity other) - { - return Diameter == other.Diameter && Shape == other.Shape; - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; - return Equals((DishEntity)obj); - } - - public override int GetHashCode() - { - return HashCode.Combine(Diameter, (int)Shape); - } - - public override string ToString() - { - return this.Name; - } - } - - public enum DishShape : int - { - Offset, - PrimeFocus, - Mesh, - Other - } -} diff --git a/skyscraper8/Skyscraper/Equipment/EquipmentCollection.cs b/skyscraper8/Skyscraper/Equipment/EquipmentCollection.cs deleted file mode 100644 index 01f467b..0000000 --- a/skyscraper8/Skyscraper/Equipment/EquipmentCollection.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace skyscraper5.Skyscraper.Equipment; - -public class EquipmentCollection -{ - public EquipmentCollection() - { - Dishes = new List(); - LNBs = new List(); - SatellitePositions = new List(); - } - - public List Dishes { get; set; } - public List LNBs { get; set; } - public List SatellitePositions { get; set; } - - public override string ToString() - { - return String.Format("{0} dishes, {1} LNBs, {2} satellite positions", Dishes.Count, LNBs.Count, SatellitePositions.Count); - } -} diff --git a/skyscraper8/Skyscraper/Equipment/EquipmentUtilities.cs b/skyscraper8/Skyscraper/Equipment/EquipmentUtilities.cs deleted file mode 100644 index f76f107..0000000 --- a/skyscraper8/Skyscraper/Equipment/EquipmentUtilities.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; -using System.Collections.Generic; -using skyscraper5.Skyscraper.Scraper.Storage; -using skyscraper8.Skyscraper.Scraper.Storage; - -namespace skyscraper5.Skyscraper.Equipment -{ - public static class EquipmentUtilities - { - public static void InsertDefaultLnbTypes(DataStorage storage) - { - List knownLnbTypes = storage.UiLnbTypesListAll(); - foreach (LnbEntity defaultLnbType in GetDefaultLnbTypes()) - { - if (!knownLnbTypes.Contains(defaultLnbType)) - storage.UiLnbTypesAdd(defaultLnbType); - } - } - - private static IEnumerable GetDefaultLnbTypes() - { - LnbEntity lnbType = new LnbEntity(); - lnbType.Lof1 = 9750; - lnbType.Lof2 = 10600; - lnbType.LofSw = 11700; - lnbType.MinimumFrequency = 10700; - lnbType.MaximumFrequency = 12750; - lnbType.Manufacturer = "Generic"; - lnbType.Name = "Universal LNB"; - yield return lnbType; - } - - public static void InsertDefaultDishTypes(DataStorage storage) - { - List knownDishTypes = storage.UiDishTypesListAll(); - foreach (DishEntity defaultDishType in GetDefaultDishTypes()) - { - if (!knownDishTypes.Contains(defaultDishType)) - storage.UiDishTypesAdd(defaultDishType); - } - } - - private static IEnumerable GetDefaultDishTypes() - { - int[] commonSizes = new int[] { 60, 80, 85, 100 }; - foreach (int commonSize in commonSizes) - { - DishEntity dishType = new DishEntity(); - dishType.Diameter = commonSize; - dishType.Shape = DishShape.Offset; - dishType.Manufacturer = "Generic"; - dishType.Name = String.Format("{0} cm Offset dish antenna", commonSize); - yield return dishType; - } - } - } -} diff --git a/skyscraper8/Skyscraper/Equipment/LNB.cs b/skyscraper8/Skyscraper/Equipment/LNB.cs deleted file mode 100644 index 9200aef..0000000 --- a/skyscraper8/Skyscraper/Equipment/LNB.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Xml.Serialization; - -namespace skyscraper5.Skyscraper.Equipment -{ - public class LnbEntity : BaseEquipment - { - public LnbEntity() { } - - public LnbEntity(string manufac, string name, int lof1, int lof2, int lofSw, int minFreq, int maxFreq) - { - this.Manufacturer = manufac; - this.Name = name; - this.Lof1 = lof1; - this.Lof2 = lof2; - this.LofSw = lofSw; - this.MinimumFrequency = minFreq; - this.MaximumFrequency = maxFreq; - } - - [XmlAttribute] - public int Lof1 { get; set; } - - [XmlAttribute] - public int Lof2 { get; set; } - - [XmlAttribute] - public int LofSw { get; set; } - - [XmlAttribute] - public int MinimumFrequency { get; set; } - - [XmlAttribute] - public int MaximumFrequency { get; set; } - - protected bool Equals(LnbEntity other) - { - return Lof1 == other.Lof1 && Lof2 == other.Lof2 && LofSw == other.LofSw && MinimumFrequency == other.MinimumFrequency && MaximumFrequency == other.MaximumFrequency; - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; - return Equals((LnbEntity)obj); - } - - public override int GetHashCode() - { - return HashCode.Combine(Lof1, Lof2, LofSw, MinimumFrequency, MaximumFrequency); - } - - public override string ToString() - { - return String.Format("{0} {1}", Manufacturer, Name); - } - } -} diff --git a/skyscraper8/Skyscraper/Equipment/SatellitePositionEntity.cs b/skyscraper8/Skyscraper/Equipment/SatellitePositionEntity.cs deleted file mode 100644 index c517183..0000000 --- a/skyscraper8/Skyscraper/Equipment/SatellitePositionEntity.cs +++ /dev/null @@ -1,108 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace skyscraper5.Skyscraper -{ - public class SatellitePositionEntity - { - public SatellitePositionEntity() - { - } - - public SatellitePositionEntity(float angle, string name) - { - this.angle = angle; - this.name = name; - } - - public float angle; - public string name; - - public int Checksum => GetChecksum(angle); - - public static int GetChecksum(float angle) - { - int result = (int)(angle * 10.0f); - return result; - } - - public override string ToString() - { - if (angle > 0) - { - return String.Format("{0}°E {1}", angle, name); - } - else - { - float tmpAngle = angle; - tmpAngle *= -1; - return String.Format("{0}°W {1}", tmpAngle, name); - } - } - - public static SatellitePositionEntity FromChecksum(int checksum) - { - float newAngle = checksum; - newAngle /= 10.0f; - return new SatellitePositionEntity(newAngle, "???"); - } - - protected bool Equals(SatellitePositionEntity other) - { - return angle.Equals(other.angle); - } - - public override bool Equals(object obj) - { - if (ReferenceEquals(null, obj)) return false; - if (ReferenceEquals(this, obj)) return true; - if (obj.GetType() != this.GetType()) return false; - return Equals((SatellitePositionEntity)obj); - } - - public override int GetHashCode() - { - return HashCode.Combine(angle); - } - - - /// - /// Returns an integer value for the cardinal direction. - /// - /// Returns 0 for east, 1 for west, 2 if satellite is at 0.0 - public int GetCardinalDirectionAsInt() - { - if (angle > 0) - return 0; - else if (angle < 0) - return 1; - else - return 2; - } - - /// - /// Get the letter matching the cardinal direction of the satellite. - /// - /// Returns either 'E' or 'W' depending on the angle. - public char GetCardinalDirectionAsChar() - { - int cardinalDirectionAsInt = GetCardinalDirectionAsInt(); - return cardinalDirectionAsInt == 0 ? 'E' : 'W'; - } - - /// - /// Get a filename-safe number of the angle. Meaning the angle stripped of its sign and decimal separator. - /// - /// For example: For 19.2°E, this will return 192, For 34.5°W, this will return 345 - public int GetCleanAngle() - { - int cleanAngle = (int)(angle * 10.0f); - if (cleanAngle < 0) - cleanAngle /= -1; - return cleanAngle; - } - } -} diff --git a/skyscraper8/Skyscraper/FrequencyListGenerator/BaseBlindscanJob.cs b/skyscraper8/Skyscraper/FrequencyListGenerator/BaseBlindscanJob.cs index 55ace83..5f3d20d 100644 --- a/skyscraper8/Skyscraper/FrequencyListGenerator/BaseBlindscanJob.cs +++ b/skyscraper8/Skyscraper/FrequencyListGenerator/BaseBlindscanJob.cs @@ -13,7 +13,6 @@ using skyscraper5.src.Mpeg2.PacketFilter; using skyscraper5.Skyscraper.IO; using skyscraper5.Skyscraper.Scraper; using System.Runtime.InteropServices; -using skyscraper5.Skyscraper.Equipment; namespace skyscraper8.Skyscraper.FrequencyListGenerator { @@ -94,12 +93,12 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator SearchResult sr1 = default; int tpNum = default; - int lof1 = config.LnbType.Lof1 * 1000; - int lof2 = config.LnbType.Lof2 * 1000; - int lofSw = config.LnbType.LofSw * 1000; + int lof1 = config.Lof1 * 1000; + int lof2 = config.Lof2 * 1000; + int lofSw = config.LofSw * 1000; int diseqc = config.TunerMetadata.DiseqcType; - int startFreq = config.LnbType.MinimumFrequency * 1000; - int endFreq = config.LnbType.MaximumFrequency * 1000; + int startFreq = config.MinimumFrequency * 1000; + int endFreq = config.MaximumFrequency * 1000; bool anythingSuceeded = false; nint allocHGlobal = Marshal.AllocHGlobal(ushort.MaxValue); @@ -395,15 +394,15 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator foundFrequencies.Add(blindscanSearchResult); } config.DataStorage.InsertSearchResult(jobInDb, true, searchResult, polarityIndex, new SearchResult2()); - config.Ui.OnBlindscanSearchResult1Callback(blindscanSearchResult, polarityIndex, config.LnbType.MinimumFrequency, config.LnbType.MaximumFrequency); + config.Ui.OnBlindscanSearchResult1Callback(blindscanSearchResult, polarityIndex, config.MinimumFrequency, config.MaximumFrequency); } public void RunScrape() { - int lof1 = config.LnbType.Lof1 * 1000; - int lof2 = config.LnbType.Lof2 * 1000; - int lofSw = config.LnbType.LofSw * 1000; + int lof1 = config.Lof1 * 1000; + int lof2 = config.Lof2 * 1000; + int lofSw = config.LofSw * 1000; foreach (BlindscanSearchResult blindscanResult in foundFrequencies) @@ -412,7 +411,7 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator blindscanResult.State = BlindscanResultState.Tuning; config.DataStorage.UpdateTransponderState(jobInDb, blindscanResult.IsSatellite(), blindscanResult.SearchResult, blindscanResult.State, blindscanResult.SearchResult2); - config.Ui.OnBlindscanBeforeSetChannel(blindscanResult, config.LnbType); + config.Ui.OnBlindscanBeforeSetChannel(blindscanResult); bool channel = config.StreamReader.SetChannel(blindscanResult.SearchResult.Freq, blindscanResult.SearchResult.SR, blindscanResult.SearchResult.Pol, blindscanResult.SearchResult.FEC, lof1, lof2, lofSw); if (!channel) { @@ -445,11 +444,11 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator config.Ui.OnBlindscanBeginRfSpectrum(); - int lof1 = config.LnbType.Lof1 * 1000; - int lof2 = config.LnbType.Lof2 * 1000; - int lofSw = config.LnbType.LofSw * 1000; - int startFreq = config.LnbType.MinimumFrequency * 1000; - int endFreq = config.LnbType.MaximumFrequency * 1000; + int lof1 = config.Lof1 * 1000; + int lof2 = config.Lof2 * 1000; + int lofSw = config.LofSw * 1000; + int startFreq = config.MinimumFrequency * 1000; + int endFreq = config.MaximumFrequency * 1000; RfSpectrumData spectrumData = RfSpectrumData.Create(); @@ -574,14 +573,14 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator { int polarity = result.SearchResult.Pol; int freq = result.SearchResult.Freq; - bool isHighBand = freq > config.LnbType.LofSw * 1000; + bool isHighBand = freq > config.LofSw * 1000; bool isHorizontal = polarity == 0; SendDiseqcCommand(isHighBand, isHorizontal); logger.Log(PluginLogLevel.Info, string.Format("Trying to BLScanEx..."), 8); if (!config.StreamReader.BLScanEx(result.SearchResult.Freq, 5000, result.SearchResult.Pol, - config.LnbType.Lof1 * 1000, config.LnbType.Lof2 * 1000, - config.LnbType.LofSw * 1000, 1000000, (STD_TYPE)result.SearchResult.StdType, + config.Lof1 * 1000, config.Lof2 * 1000, + config.LofSw * 1000, 1000000, (STD_TYPE)result.SearchResult.StdType, ref satelliteSr)) { //No blindscan? No problem! Try anyway! @@ -600,7 +599,7 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator Thread.Sleep(1000); result.State = BlindscanResultState.Retrying; logger.Log(PluginLogLevel.Info, string.Format("Retrying BLScanEx... ({0}/{1})", i + 1, attempts + 1), 8); - bool retryResult = config.StreamReader.BLScanEx(result.SearchResult.Freq, 5000, result.SearchResult.Pol, config.LnbType.Lof1 * 1000, config.LnbType.Lof2 * 1000, config.LnbType.LofSw * 1000, 1000000, (STD_TYPE)result.SearchResult.StdType,ref satelliteSr); + bool retryResult = config.StreamReader.BLScanEx(result.SearchResult.Freq, 5000, result.SearchResult.Pol, config.Lof1 * 1000, config.Lof2 * 1000, config.LofSw * 1000, 1000000, (STD_TYPE)result.SearchResult.StdType,ref satelliteSr); if (!retryResult) { result.State = BlindscanResultState.BlScanFailure; @@ -676,7 +675,7 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator if (plot != null) { result.State = BlindscanResultState.IqSaving; - config.ObjectStorage.StoreIqGraph(jobInDb.JobGuid, result.GetFrequency(), result.GetPolarity(config.LnbType.LofSw), plot); + config.ObjectStorage.StoreIqGraph(jobInDb.JobGuid, result.GetFrequency(), result.GetPolarity(config.LofSw), plot); } } @@ -707,22 +706,19 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator if (tsRecorder.PrepareRecording()) { DateTime now = DateTime.Now; - - int cardinalDirection = 0; - int angle = config.SatellitePosition.Checksum; - if (angle < 0) - { - angle *= -1; - cardinalDirection = 1; - } - + string recordingFilename = string.Format( - "skyscraper_{0:D4}{1:D2}{2:D2}_{3:D2}{4:D2}_{8:D4}{9}_{5}_{6}_{7}.ts", - now.Year, now.Month, now.Day, now.Hour, now.Minute, result.GetFrequency() / 1000, - result.GetPolarity(config.LnbType.LofSw), result.GetSymbolRate() / 1000, - config.SatellitePosition.GetCleanAngle(), - config.SatellitePosition.GetCardinalDirectionAsChar()); - tsRecorder.SetNextFilename(recordingFilename); + "skyscraper_{0:D4}{1:D2}{2:D2}_{3:D2}{4:D2}_{8}_{5}_{6}_{7}.ts", + now.Year, //0 + now.Month, //1 + now.Day, //2 + now.Hour, //3 + now.Minute, //4 + result.GetFrequency() / 1000, //5 + result.GetPolarity(config.LofSw), //6 + result.GetSymbolRate() / 1000, //7 + config.GetFiveLetterSattelitePosition()); //8 + tsRecorder.SetNextFilename(recordingFilename); tsRecorder.CreateBufferedStream(); } } diff --git a/skyscraper8/Skyscraper/FrequencyListGenerator/BlindscanJobConfiguration.cs b/skyscraper8/Skyscraper/FrequencyListGenerator/BlindscanJobConfiguration.cs index 0588476..63ebd8b 100644 --- a/skyscraper8/Skyscraper/FrequencyListGenerator/BlindscanJobConfiguration.cs +++ b/skyscraper8/Skyscraper/FrequencyListGenerator/BlindscanJobConfiguration.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using skyscraper5.Skyscraper; -using skyscraper5.Skyscraper.Equipment; using skyscraper5.Skyscraper.Gps; using skyscraper5.Skyscraper.IO; using skyscraper5.Skyscraper.Scraper; @@ -18,7 +17,7 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator public TunerMetadata TunerMetadata { get; set; } public int DiseqcIndex { get; set; } public IGpsReceiver Gps { get; set; } - public SatellitePositionEntity SatellitePosition { get; set; } + public double SatellitePosition { get; set; } public bool DoHorizontalHigh { get; set; } public bool DoHorizontalLow { get; set; } @@ -29,9 +28,27 @@ namespace skyscraper8.Skyscraper.FrequencyListGenerator public ObjectStorage ObjectStorage { get; set; } public ISkyscraperUiJunction Ui { get; set; } public bool DoCollectRfSpectrum { get; set; } - public LnbEntity LnbType { get; set; } public bool DoCollectIqGraphs { get; set; } public bool DoRecordTs { get; set; } - public Ini Ini { get; set; } - } + public Ini Ini { get; set; } + public int Lof1 { get; internal set; } + public int Lof2 { get; internal set; } + public int LofSw { get; internal set; } + public int MinimumFrequency { get; internal set; } + public int MaximumFrequency { get; internal set; } + + internal string GetFiveLetterSattelitePosition() + { + if (SatellitePosition >= 0) + { + return String.Format("{0:D4}E", (int)(SatellitePosition * 10)); + } + else + { + int westerner = (int)(SatellitePosition * 10); + westerner /= -1; + return String.Format("{0:D4}W", westerner); + } + } + } } diff --git a/skyscraper8/Skyscraper/FrequencyListGenerator/DbBlindscanJob.cs b/skyscraper8/Skyscraper/FrequencyListGenerator/DbBlindscanJob.cs index 26353fe..44fa95d 100644 --- a/skyscraper8/Skyscraper/FrequencyListGenerator/DbBlindscanJob.cs +++ b/skyscraper8/Skyscraper/FrequencyListGenerator/DbBlindscanJob.cs @@ -15,7 +15,7 @@ namespace skyscraper5.src.Skyscraper.FrequencyListGenerator public class DbBlindscanJob { public DbBlindscanJob(Guid jobGuid, PhysicalAddress tunerMac, STD_TYPE tunerStandard, int diseqCIndex, - IGpsReceiver jobContextGps, SatellitePositionEntity satellitePosition) + IGpsReceiver jobContextGps, double satellitePosition) { this.JobGuid = jobGuid; this.TunerMAC = tunerMac; @@ -37,7 +37,7 @@ namespace skyscraper5.src.Skyscraper.FrequencyListGenerator } - public SatellitePositionEntity SatPosition { get; private set; } + public double SatPosition { get; private set; } public GpsCoordinate? GpsCoordinate { get; private set; } @@ -68,8 +68,15 @@ namespace skyscraper5.src.Skyscraper.FrequencyListGenerator switch(mode) { case 1: - if (SatPosition != null) - return String.Format("{0:0.0}° {1}", SatPosition.angle, SatPosition.GetCardinalDirectionAsChar()); + if (SatPosition >= 0.0) + { + return String.Format("{0}°E", SatPosition); + } + else + { + double westerner = SatPosition /= -1; + return String.Format("{0}°W", westerner); + } return TunerStandard.ToString(); case 2: return String.Format("({0}/{1}/{2}/{3})", (int)HorizontalLowState, (int)HorizontalHighState, (int)VerticalLowState, (int)VerticalHighState); @@ -78,6 +85,19 @@ namespace skyscraper5.src.Skyscraper.FrequencyListGenerator } } + public string GetFiveLetterOrbitalPosition() + { + if (SatPosition >= 0) + { + return String.Format("{0:4}E", (int)(SatPosition * 10)); + } + else + { + double westerner = SatPosition /= -1; + return String.Format("{0:4}W", (int)(westerner * 10)); + } + } + } public enum DbBlindscanJobPolarizationStatus : int diff --git a/skyscraper8/Skyscraper/IO/RemoteStreamReader/RemoteStreamReaderClient.cs b/skyscraper8/Skyscraper/IO/RemoteStreamReader/RemoteStreamReaderClient.cs index cbca45a..add2d77 100644 --- a/skyscraper8/Skyscraper/IO/RemoteStreamReader/RemoteStreamReaderClient.cs +++ b/skyscraper8/Skyscraper/IO/RemoteStreamReader/RemoteStreamReaderClient.cs @@ -513,7 +513,10 @@ namespace skyscraper5.Skyscraper.IO.RemoteStreamReader { case RemoteStreamReaderConstants.COMMAND_SUCCESSFUL: pRFLevel = NetworkStreamExtensions.ReadDouble(TcpStream); - return true; + return true; + case RemoteStreamReaderConstants.COMMAND_FAILED: + pRFLevel = NetworkStreamExtensions.ReadDouble(TcpStream); + return false; default: throw new NotImplementedException(result.ToString()); } diff --git a/skyscraper8/Skyscraper/Scraper/ISkyscraperUiJunction.cs b/skyscraper8/Skyscraper/Scraper/ISkyscraperUiJunction.cs index 84e115b..82377e0 100644 --- a/skyscraper8/Skyscraper/Scraper/ISkyscraperUiJunction.cs +++ b/skyscraper8/Skyscraper/Scraper/ISkyscraperUiJunction.cs @@ -14,7 +14,6 @@ using skyscraper5.Mhp.Si.Model; using skyscraper5.Mpeg2.Descriptors; using skyscraper5.Mpeg2.Psi.Model; using skyscraper5.Scte35; -using skyscraper5.Skyscraper.Equipment; using skyscraper5.Skyscraper.IO.CrazycatStreamReader; using skyscraper5.Skyscraper.Net; using skyscraper5.src.InteractionChannel.Model; @@ -98,7 +97,7 @@ namespace skyscraper5.Skyscraper.Scraper /// Called before a SetChannel operation is performed. /// /// - void OnBlindscanBeforeSetChannel(BlindscanSearchResult blindscanResult, LnbEntity lnbType); + void OnBlindscanBeforeSetChannel(BlindscanSearchResult blindscanResult); /// /// Called after a band (meaning e.g. Horizontal High) has been scraped. diff --git a/skyscraper8/Skyscraper/Scraper/Storage/DataStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/DataStorage.cs index b351f78..d6b0048 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/DataStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/DataStorage.cs @@ -12,13 +12,11 @@ using skyscraper5.Mpeg2.Psi.Model; using skyscraper5.Rds.Messages; using skyscraper5.Scte35; using skyscraper5.Skyscraper; -using skyscraper5.Skyscraper.Equipment; using skyscraper5.Skyscraper.Gps; using skyscraper5.Skyscraper.Headless; using skyscraper5.Skyscraper.IO.CrazycatStreamReader; using skyscraper5.Skyscraper.Scraper.Storage.Utilities; using skyscraper5.src.InteractionChannel.Model; -using skyscraper5.src.InteractionChannel.Model.Descriptors; using skyscraper5.src.Skyscraper.FrequencyListGenerator; using skyscraper5.src.Skyscraper.Scraper.Dns; using skyscraper5.Teletext; @@ -30,8 +28,6 @@ using System.Net.NetworkInformation; using skyscraper5.src.InteractionChannel.Model2; using skyscraper8.InteractionChannel.Model; using skyscraper8.InteractionChannel.Model2; -using skyscraper8.InteractionChannel.Model2.Descriptors; -using Platform = skyscraper5.Dvb.SystemSoftwareUpdate.Model.Platform; namespace skyscraper8.Skyscraper.Scraper.Storage { @@ -85,9 +81,6 @@ namespace skyscraper8.Skyscraper.Scraper.Storage void T2MiSetTimestamp(int currentNetworkId, int currentTransportStreamId, int pid, DateTime resolveTime); bool TestForRelatedContent(EitEvent lEvent, RctLinkInfo rctLinkInfo); void SetRelatedContent(EitEvent lEvent, RctLinkInfo rctLinkInfo); - List UiSatellitesListAll(); - void UiSatellitesAdd(SatellitePositionEntity newPosition); - void UiSatellitesDelete(SatellitePositionEntity satellitePosition); bool UiTunerTestFor(TunerMetadata tuner); void UiTunerUpdate(TunerMetadata tuner); void UiTunerInsert(TunerMetadata tuner); @@ -107,11 +100,6 @@ namespace skyscraper8.Skyscraper.Scraper.Storage bool T2MiTestForTransmitter(int? currentNetworkId, int? currentTransportStreamId, int relatedPid, ushort txIdentifier); void T2MiRememberTransmitter(int? currentNetworkId, int? currentTransportStreamId, int relatedPid, ushort txIdentifier); void T2MiSetTransmitterTimeOffset(int? currentNetworkId, int? currentTransportStreamId, int relatedPid, ushort txIdentifier, ushort timeOffset); - List UiLnbTypesListAll(); - void UiLnbTypesAdd(LnbEntity defaultLnbType); - List UiDishTypesListAll(); - void UiDishTypesAdd(DishEntity defaultDishType); - IEnumerable> SelectAllPmt(); SdtService SelectSdtById(int networkId, int tsId, ushort programMappingProgramNumber); IEnumerable> SelectAllSdt(); diff --git a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs index bc33494..92e4d3e 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/Filesystem/FilesystemStorage.cs @@ -13,7 +13,6 @@ using skyscraper5.Mpeg2.Descriptors; using skyscraper5.Mpeg2.Psi.Model; using skyscraper5.Rds.Messages; using skyscraper5.Scte35; -using skyscraper5.Skyscraper.Equipment; using skyscraper5.Skyscraper.Gps; using skyscraper5.Skyscraper.Headless; using skyscraper5.Skyscraper.IO; @@ -789,48 +788,6 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem } } - public List UiSatellitesListAll() - { - string path = Path.Combine(rootDirectory.FullName, "satellites.json"); - FileInfo fi = new FileInfo(path); - if (!fi.Exists) - return new List(); - else - { - return JsonConvert.DeserializeObject>(File.ReadAllText(fi.FullName)); - } - } - - public void UiSatellitesAdd(SatellitePositionEntity newPosition) - { - string path = Path.Combine(rootDirectory.FullName, "satellites.json"); - FileInfo fi = new FileInfo(path); - List satellites; - if (!fi.Exists) - { - satellites = new List(); - } - else - { - satellites = JsonConvert.DeserializeObject>(File.ReadAllText(fi.FullName)); - } - - satellites.Add(newPosition); - EnsureDirectoryExists(fi.Directory); - File.WriteAllText(fi.FullName, JsonConvert.SerializeObject(satellites, Formatting.Indented)); - } - - public void UiSatellitesDelete(SatellitePositionEntity satellitePosition) - { - string path = Path.Combine(rootDirectory.FullName, "satellites.json"); - FileInfo fi = new FileInfo(path); - List satellites = JsonConvert.DeserializeObject>(File.ReadAllText(fi.FullName)); - - satellites.RemoveAll(x => x.Checksum == satellitePosition.Checksum); - - File.WriteAllText(fi.FullName, JsonConvert.SerializeObject(satellites, Formatting.Indented)); - } - public bool UiTunerTestFor(TunerMetadata tuner) { string fname = BitConverter.ToString(tuner.MacAddress.GetAddressBytes()); @@ -935,35 +892,6 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem File.WriteAllText(path, timeOffset.ToString()); } - public List UiLnbTypesListAll() - { - string path = Path.Combine(rootDirectory.FullName, "0-UI", "LnbTypes"); - DirectoryInfo di = new DirectoryInfo(path); - if (!di.Exists) - { - return new List(); - } - - List result = new List(); - FileInfo[] fileInfos = di.GetFiles("*.json"); - foreach (FileInfo fileInfo in fileInfos) - { - string fid = Path.GetFileNameWithoutExtension(fileInfo.Name); - if (!fid.IsNaturalNumeric()) - continue; - int iid = int.Parse(fid); - - string json = File.ReadAllText(fileInfo.FullName); - LnbEntity deserializeObject = JsonConvert.DeserializeObject(json); - if (deserializeObject.Id != iid) - continue; - if (result.Contains(deserializeObject)) - continue; - result.Add(deserializeObject); - } - - return result; - } private int GetNextJsonFileNumber(DirectoryInfo di) { @@ -988,61 +916,6 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem return result; } - public void UiLnbTypesAdd(LnbEntity defaultLnbType) - { - string path = Path.Combine(rootDirectory.FullName, "0-UI", "LnbTypes"); - DirectoryInfo di = new DirectoryInfo(path); - int fileId = GetNextJsonFileNumber(di); - defaultLnbType.Id = fileId; - defaultLnbType.DateAdded = DateTime.Now; - - path = Path.Combine(rootDirectory.FullName, "0-UI", "LnbTypes", fileId.ToString() + ".json"); - string json = JsonConvert.SerializeObject(defaultLnbType, jsonSerializerSettings); - File.WriteAllText(path, json); - } - - public List UiDishTypesListAll() - { - string path = Path.Combine(rootDirectory.FullName, "0-UI", "DishTypes"); - DirectoryInfo di = new DirectoryInfo(path); - if (!di.Exists) - { - return new List(); - } - - List result = new List(); - FileInfo[] fileInfos = di.GetFiles("*.json"); - foreach (FileInfo fileInfo in fileInfos) - { - string fid = Path.GetFileNameWithoutExtension(fileInfo.Name); - if (!fid.IsNaturalNumeric()) - continue; - int iid = int.Parse(fid); - - string json = File.ReadAllText(fileInfo.FullName); - DishEntity deserializeObject = JsonConvert.DeserializeObject(json); - if (deserializeObject.Id != iid) - continue; - if (result.Contains(deserializeObject)) - continue; - result.Add(deserializeObject); - } - - return result; - } - - public void UiDishTypesAdd(DishEntity defaultDishType) - { - string path = Path.Combine(rootDirectory.FullName, "0-UI", "DishTypes"); - DirectoryInfo di = new DirectoryInfo(path); - int fileId = GetNextJsonFileNumber(di); - defaultDishType.Id = fileId; - defaultDishType.DateAdded = DateTime.Now; - - path = Path.Combine(rootDirectory.FullName, "0-UI", "DishTypes", fileId.ToString() + ".json"); - string json = JsonConvert.SerializeObject(defaultDishType, jsonSerializerSettings); - File.WriteAllText(path, json); - } public object[] GetPluginConnector() { @@ -1243,7 +1116,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem { if (jobInDb.DateAdded == DateTime.MinValue) jobInDb.DateAdded = DateTime.Now; - string path = Path.Combine(rootDirectory.FullName, "0-Blindscan",jobInDb.SatPosition.Checksum.ToString(), jobInDb.JobGuid.ToString(), "index.json"); + string path = Path.Combine(rootDirectory.FullName, "0-Blindscan",jobInDb.GetFiveLetterOrbitalPosition(), jobInDb.JobGuid.ToString(), "index.json"); FileInfo fi = new FileInfo(path); EnsureDirectoryExists(fi.Directory); @@ -1260,7 +1133,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem SearchResult2 searchResult2) { string freq = satellite ? String.Format("{0}_{1}", searchResult.Freq, searchResult.Pol) : String.Format("{0}", searchResult2); - string path = Path.Combine(rootDirectory.FullName, "0-Blindscan", jobInDb.SatPosition.Checksum.ToString(), jobInDb.JobGuid.ToString(), freq + ".json"); + string path = Path.Combine(rootDirectory.FullName, "0-Blindscan", jobInDb.GetFiveLetterOrbitalPosition(), jobInDb.JobGuid.ToString(), freq + ".json"); string json = JsonConvert.SerializeObject(satellite ? searchResult : searchResult2, jsonSerializerSettings); File.WriteAllText(path, json); } @@ -1276,7 +1149,7 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.Filesystem { string freq = resultSatellite ? String.Format("{0}_{1}", resultSr1.Freq, resultSr1.Pol) : String.Format("{0}", resultSr2); string jsonName = String.Format("{0}.json", humanReadableService.ServiceId); - string path = Path.Combine(rootDirectory.FullName, "0-Blindscan", jobInDb.SatPosition.Checksum.ToString(), jobInDb.JobGuid.ToString(), freq, jsonName); + string path = Path.Combine(rootDirectory.FullName, "0-Blindscan", jobInDb.GetFiveLetterOrbitalPosition(), jobInDb.JobGuid.ToString(), freq, jsonName); FileInfo fi = new FileInfo(path); EnsureDirectoryExists(fi.Directory); string json = JsonConvert.SerializeObject(humanReadableService, jsonSerializerSettings); diff --git a/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs b/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs index f0bdad5..3d5c79d 100644 --- a/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs +++ b/skyscraper8/Skyscraper/Scraper/Storage/InMemory/InMemoryScraperStorage.cs @@ -12,7 +12,6 @@ using skyscraper5.Mpeg2.Descriptors; using skyscraper5.Mpeg2.Psi.Model; using skyscraper5.Rds.Messages; using skyscraper5.Scte35; -using skyscraper5.Skyscraper.Equipment; using skyscraper5.Skyscraper.Gps; using skyscraper5.Skyscraper.Headless; using skyscraper5.Skyscraper.IO; @@ -771,27 +770,6 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.InMemory throw new NotImplementedException(); } - private List satellitePositions; - - public List UiSatellitesListAll() - { - if (satellitePositions == null) - satellitePositions = new List(); - return satellitePositions.ToList(); - } - - public void UiSatellitesAdd(SatellitePositionEntity newPosition) - { - if (satellitePositions == null) - satellitePositions = new List(); - satellitePositions.Add(newPosition); - } - - public void UiSatellitesDelete(SatellitePositionEntity satellitePosition) - { - satellitePositions.RemoveAll(x => x.Checksum == satellitePosition.Checksum); - } - private List uiTuners; public bool UiTunerTestFor(TunerMetadata tuner) @@ -905,40 +883,6 @@ namespace skyscraper5.Skyscraper.Scraper.Storage.InMemory t2miTransmitters[t2miTransmitterId].TimeOffset = timeOffset; } - private List _lnbTypes; - - public List UiLnbTypesListAll() - { - if (_lnbTypes == null) - _lnbTypes = new List(); - return _lnbTypes; - } - - public void UiLnbTypesAdd(LnbEntity defaultLnbType) - { - if (_lnbTypes == null) - _lnbTypes = new List(); - if (!_lnbTypes.Contains(defaultLnbType)) - _lnbTypes.Add(defaultLnbType); - } - - private List _dishTypes; - - public List UiDishTypesListAll() - { - if (_dishTypes == null) - _dishTypes = new List(); - return _dishTypes; - - } - - public void UiDishTypesAdd(DishEntity defaultDishType) - { - if (_dishTypes == null) - _dishTypes = new List(); - if (!_dishTypes.Contains(defaultDishType)) - _dishTypes.Add(defaultDishType); - } public object[] GetPluginConnector() {