public async Task <IActionResult> Index(int?satelliteId, int pageLimit = 150)
        {
            int satId = satelliteId ?? settings.DefaultSatelliteId;

            var getSatellitesTask = GetSatellites(satId);
            var getTelemetryTask  = GetTelemetryRows(satId);

            (List <SatelliteEntry> satellites, DateTimeOffset satLastUpdated) = await getSatellitesTask;

            List <TelemetryRow> telemetries;
            DateTimeOffset      lastUpdated;

            try
            {
                (telemetries, lastUpdated) = await getTelemetryTask;
            }
            catch (Exception ex)
            {
                telemetries = new List <TelemetryRow>();
                lastUpdated = default;

                ViewBag.Error = $"Could not get telemetry. {ex.Message}";
            }

            SatelliteEntry satellite = satellites.FirstOrDefault();

            // Fixup image URL
            //
            try
            {
                satellite.Image = new UriBuilder(satellite.Image)
                {
                    Scheme = Uri.UriSchemeHttps,
                    Port   = -1
                }.Uri.ToString();
            }
            catch
            {
            }

            ListTelemetryViewModel viewModel = new ListTelemetryViewModel()
            {
                SatelliteId = satId,
                Satellite   = satellite,
                Telemetries = telemetries.Take(pageLimit).ToList(),
                PageLimit   = pageLimit,
                LastUpdated = lastUpdated
            };

            return(View(viewModel));
        }
Example #2
0
        private void createSatelliteIni()
        {
            if (!RunParameters.Instance.DebugIDs.Contains("CREATESATINI"))
                return;

            Collection<SatelliteEntry> satelliteEntries = new Collection<SatelliteEntry>();

            foreach (NetworkInformationSection networkInformationSection in NetworkInformationSection.NetworkInformationSections)
            {
                foreach (TransportStream transportStream in networkInformationSection.TransportStreams)
                {
                    foreach (DescriptorBase descriptor in transportStream.Descriptors)
                    {
                        DVBSatelliteDeliverySystemDescriptor satelliteDescriptor = descriptor as DVBSatelliteDeliverySystemDescriptor;
                        if (satelliteDescriptor != null)
                        {
                            bool added = false;

                            foreach (SatelliteEntry satelliteEntry in satelliteEntries)
                            {
                                if (satelliteEntry.OrbitalPosition == satelliteDescriptor.OrbitalPosition && satelliteEntry.East == satelliteDescriptor.EastFlag)
                                {
                                    satelliteEntry.Add(satelliteDescriptor);
                                    added = true;
                                    break;
                                }

                            }

                            if (!added)
                            {
                                SatelliteEntry newSatelliteEntry = new SatelliteEntry();
                                newSatelliteEntry.Add(satelliteDescriptor);
                                satelliteEntries.Add(newSatelliteEntry);
                            }
                        }
                    }
                }
            }

            foreach (SatelliteEntry satelliteEntry in satelliteEntries)
            {
                string fileName = Path.Combine(RunParameters.DataDirectory, satelliteEntry.OrbitalPosition.ToString().PadLeft(4, '0') + ".ini");

                try
                {
                    if (File.Exists(fileName))
                    {
                        if (File.Exists(fileName + ".bak"))
                        {
                            File.SetAttributes(fileName + ".bak", FileAttributes.Normal);
                            File.Delete(fileName + ".bak");
                        }

                        File.Copy(fileName, fileName + ".bak");
                        File.SetAttributes(fileName + ".bak", FileAttributes.ReadOnly);

                        File.SetAttributes(fileName, FileAttributes.Normal);
                    }

                    FileStream fileStream = new FileStream(fileName, FileMode.Create);
                    StreamWriter streamWriter = new StreamWriter(fileStream);

                    streamWriter.WriteLine(";    [ Created by EPG Collector " + DateTime.Now);
                    streamWriter.WriteLine("");

                    streamWriter.WriteLine("[SATTYPE]");
                    streamWriter.WriteLine("1=" + satelliteEntry.OrbitalPosition.ToString().PadLeft(4, '0'));

                    string orbitalPosition;
                    if (satelliteEntry.East)
                        orbitalPosition = "2=" + (satelliteEntry.OrbitalPosition / 10) + "." + (satelliteEntry.OrbitalPosition % 10) + "E";
                    else
                        orbitalPosition = "2=" + (satelliteEntry.OrbitalPosition / 10) + "." + (satelliteEntry.OrbitalPosition % 10) + "W";
                    streamWriter.WriteLine(orbitalPosition);

                    streamWriter.WriteLine("");
                    streamWriter.WriteLine("[DVB]");
                    streamWriter.WriteLine("0=" + satelliteEntry.SatelliteDescriptors.Count);

                    int lineNumber = 0;

                    foreach (DVBSatelliteDeliverySystemDescriptor satelliteDescriptor in satelliteEntry.SatelliteDescriptors)
                    {
                        lineNumber++;

                        string polarization = getPolarization(satelliteDescriptor.Polarization);
                        string innerFec = getInnerFec(satelliteDescriptor.InnerFEC);
                        string modulationType = getModulationType(satelliteDescriptor.ModulationType);

                        string modulationSystem;
                        if (!satelliteDescriptor.S2Flag)
                            modulationSystem = "DVB-S";
                        else
                            modulationSystem = "S2";

                        streamWriter.WriteLine(lineNumber + "=" + (satelliteDescriptor.Frequency / 100) + "," +
                            polarization + "," +
                            (satelliteDescriptor.SymbolRate / 10) + "," +
                            innerFec + "," +
                            modulationSystem + "," +
                            modulationType);
                    }

                    streamWriter.Close();
                    fileStream.Close();
                }
                catch (IOException e)
                {
                    Logger.Instance.Write("<E> Exception creating satellite ini file:");
                    Logger.Instance.Write("<E> " + e.Message);
                    return;
                }
            }
        }