public GetTuningDetailsByName ( string name, int channelType ) : IList |
||
name | string | |
channelType | int | |
return | IList |
private void mpButton1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(_configuration.Graph.Crossbar.Name)) { IUser user = new User(); user.CardId = _cardNumber; AnalogChannel temp = new AnalogChannel(); temp.TunerSource = TunerInputType.Antenna; temp.VideoSource = AnalogChannel.VideoInputType.Tuner; temp.AudioSource = AnalogChannel.AudioInputType.Tuner; temp.IsRadio = false; temp.IsTv = true; RemoteControl.Instance.Tune(ref user, temp, -1); _configuration = Configuration.readConfiguration(_cardNumber, _cardName, _devicePath); if (string.IsNullOrEmpty(_configuration.Graph.Crossbar.Name)) { MessageBox.Show(this, "The S-Video channels could not be detected."); return; } ReCheckSettings(); } TvBusinessLayer layer = new TvBusinessLayer(); Dictionary<AnalogChannel.VideoInputType, int> videoPinMap = _configuration.Graph.Crossbar.VideoPinMap; AnalogChannel tuningDetail; Card card = layer.GetCardByDevicePath(RemoteControl.Instance.CardDevice(_cardNumber)); Channel dbChannel; if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.VideoInput1)) { string channelName = "CVBS#1 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.VideoInput1; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.VideoInput2)) { string channelName = "CVBS#2 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.VideoInput2; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.VideoInput3)) { string channelName = "CVBS#3 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.VideoInput3; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.SvhsInput1)) { string channelName = "S-Video#1 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.SvhsInput1; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.SvhsInput2)) { string channelName = "S-Video#2 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.SvhsInput2; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.SvhsInput3)) { string channelName = "S-Video#3 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.SvhsInput3; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.RgbInput1)) { string channelName = "RGB#1 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.RgbInput1; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.RgbInput2)) { string channelName = "RGB#2 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.RgbInput2; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.RgbInput3)) { string channelName = "RGB#3 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.RgbInput3; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.YRYBYInput1)) { string channelName = "YRYBY#1 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.YRYBYInput1; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.YRYBYInput2)) { string channelName = "YRYBY#2 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.YRYBYInput2; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.YRYBYInput3)) { string channelName = "YRYBY#3 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.YRYBYInput3; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput1)) { string channelName = "HDMI#1 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput1; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput2)) { string channelName = "HDMI#2 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput2; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput3)) { string channelName = "HDMI#3 on " + card.IdCard; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } else { dbChannel = layer.AddNewChannel(channelName); } dbChannel.IsTv = true; dbChannel.Persist(); tuningDetail = new AnalogChannel(); tuningDetail.IsTv = true; tuningDetail.Name = dbChannel.DisplayName; tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput3; layer.AddTuningDetails(dbChannel, tuningDetail); layer.MapChannelToCard(card, dbChannel, false); layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); } MessageBox.Show(this, "Channels added."); }
private void DoTvScan() { int channelsNew = 0; int channelsUpdated = 0; string buttonText = mpButtonScanTv.Text; checkButton.Enabled = false; try { _isScanning = true; _stopScanning = false; mpButtonScanTv.Text = "Cancel..."; RemoteControl.Instance.EpgGrabberEnabled = false; TvBusinessLayer layer = new TvBusinessLayer(); Card card = layer.GetCardByDevicePath(RemoteControl.Instance.CardDevice(_cardNumber)); mpComboBoxCountry.Enabled = false; mpComboBoxSource.Enabled = false; mpComboBoxSensitivity.Enabled = false; checkBoxCreateSignalGroup.Enabled = false; checkBoxNoMerge.Enabled = false; mpButtonScanRadio.Enabled = false; mpButtonAddSvideoChannels.Enabled = false; mpListView1.Items.Clear(); CountryCollection countries = new CountryCollection(); IUser user = new User(); user.CardId = _cardNumber; AnalogChannel temp = new AnalogChannel(); temp.TunerSource = mpComboBoxSource.SelectedIndex == 0 ? TunerInputType.Antenna : TunerInputType.Cable; temp.VideoSource = AnalogChannel.VideoInputType.Tuner; temp.AudioSource = AnalogChannel.AudioInputType.Tuner; temp.Country = countries.Countries[mpComboBoxCountry.SelectedIndex]; temp.IsRadio = false; temp.IsTv = true; TvResult tuneResult = RemoteControl.Instance.Tune(ref user, temp, -1); if (tuneResult == TvResult.SWEncoderMissing) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show("Please install a supported audio/video encoder for your software analog card", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (tuneResult == TvResult.GraphBuildingFailed) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show( "The graph building. Mostly your card is not supported by TvServer. Please create a report in our forum", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (string.IsNullOrEmpty(_configuration.Graph.Capture.Name)) { _configuration = Configuration.readConfiguration(_cardNumber, _cardName, _devicePath); ReCheckSettings(); } int minChannel = RemoteControl.Instance.MinChannel(_cardNumber); int maxChannel = RemoteControl.Instance.MaxChannel(_cardNumber); if (maxChannel <= 0) { maxChannel = mpComboBoxSource.SelectedIndex == 0 ? 69 : 125; } if (minChannel < 0) minChannel = 1; Log.Info("Min channel = {0}. Max channel = {1}", minChannel, maxChannel); for (int channelNr = minChannel; channelNr <= maxChannel; channelNr++) { if (_stopScanning) return; float percent = ((float)((channelNr - minChannel)) / (maxChannel - minChannel)); percent *= 100f; if (percent > 100f) percent = 100f; if (percent < 0) percent = 0f; progressBar1.Value = (int)percent; AnalogChannel channel = new AnalogChannel(); channel.TunerSource = mpComboBoxSource.SelectedIndex == 0 ? TunerInputType.Antenna : TunerInputType.Cable; channel.Country = countries.Countries[mpComboBoxCountry.SelectedIndex]; channel.ChannelNumber = channelNr; channel.IsTv = true; channel.IsRadio = false; channel.VideoSource = AnalogChannel.VideoInputType.Tuner; channel.AudioSource = AnalogChannel.AudioInputType.Automatic; string line = String.Format("channel:{0} source:{1} ", channel.ChannelNumber, mpComboBoxSource.SelectedItem); ListViewItem item = mpListView1.Items.Add(new ListViewItem(line)); item.EnsureVisible(); IChannel[] channels = RemoteControl.Instance.Scan(_cardNumber, channel); UpdateStatus(); if (channels == null || channels.Length == 0) { if (RemoteControl.Instance.TunerLocked(_cardNumber) == false) { line = String.Format("channel:{0} source:{1} : No Signal", channel.ChannelNumber, mpComboBoxSource.SelectedItem); item.Text = line; item.ForeColor = Color.Red; continue; } line = String.Format("channel:{0} source:{1} : Nothing found", channel.ChannelNumber, mpComboBoxSource.SelectedItem); item.Text = line; item.ForeColor = Color.Red; continue; } bool exists = false; channel = (AnalogChannel)channels[0]; if (channel.Name == "") channel.Name = String.Format(channel.ChannelNumber.ToString()); Channel dbChannel = null; if (checkBoxNoMerge.Checked) { dbChannel = layer.AddNewChannel(channel.Name); } else { IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channel.Name, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } if (dbChannel != null) { exists = true; } else { dbChannel = layer.AddNewChannel(channel.Name); } } dbChannel.IsTv = channel.IsTv; dbChannel.IsRadio = channel.IsRadio; dbChannel.Persist(); layer.AddTuningDetails(dbChannel, channel); layer.MapChannelToCard(card, dbChannel, false); if (dbChannel.IsTv) { layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels); if (checkBoxCreateSignalGroup.Checked) { layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.Analog); } } if (dbChannel.IsRadio) { layer.AddChannelToGroup(dbChannel, TvConstants.RadioGroupNames.AllChannels); if (checkBoxCreateSignalGroup.Checked) { layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.Analog); } } if (exists) { line = String.Format("channel:{0} source:{1} : Channel update found - {2}", channel.ChannelNumber, mpComboBoxSource.SelectedItem, channel.Name); channelsUpdated++; } else { line = String.Format("channel:{0} source:{1} : New channel found - {2}", channel.ChannelNumber, mpComboBoxSource.SelectedItem, channel.Name); channelsNew++; } item.Text = line; } } catch (TvExceptionSWEncoderMissing) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show("Please install a supported audio/video encoder for your software analog card", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (TvExceptionGraphBuildingFailed) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show( "The graph building. Mostly your card is not supported by TvServer. Please create a report in our forum", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { Log.Error("analog: DoTvScan error ({0})", ex.StackTrace); MessageBox.Show(string.Format("Generic error: {0}", ex.Message), "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { IUser user = new User(); user.CardId = _cardNumber; RemoteControl.Instance.StopCard(user); RemoteControl.Instance.EpgGrabberEnabled = true; mpButtonScanTv.Text = buttonText; progressBar1.Value = 100; mpComboBoxCountry.Enabled = true; mpComboBoxSource.Enabled = true; mpComboBoxSensitivity.Enabled = true; checkBoxCreateSignalGroup.Enabled = true; checkBoxNoMerge.Enabled = true; mpButtonScanTv.Enabled = true; mpButtonScanRadio.Enabled = true; mpButtonAddSvideoChannels.Enabled = true; _isScanning = false; checkButton.Enabled = true; } ListViewItem lastItem = mpListView1.Items.Add( new ListViewItem(String.Format("Total tv channels new:{0} updated:{1}", channelsNew, channelsUpdated))); lastItem.EnsureVisible(); }
private void DoRadioScan() { int channelsNew = 0; int channelsUpdated = 0; checkButton.Enabled = false; int sensitivity = 1; switch (mpComboBoxSensitivity.Text) { case "High": sensitivity = 10; break; case "Medium": sensitivity = 2; break; case "Low": sensitivity = 1; break; } string buttonText = mpButtonScanRadio.Text; try { _isScanning = true; _stopScanning = false; mpButtonScanRadio.Text = "Cancel..."; RemoteControl.Instance.EpgGrabberEnabled = false; TvBusinessLayer layer = new TvBusinessLayer(); Card card = layer.GetCardByDevicePath(RemoteControl.Instance.CardDevice(_cardNumber)); mpComboBoxCountry.Enabled = false; mpComboBoxSource.Enabled = false; mpComboBoxSensitivity.Enabled = false; checkBoxCreateSignalGroup.Enabled = false; checkBoxNoMerge.Enabled = false; mpButtonScanTv.Enabled = false; mpButtonAddSvideoChannels.Enabled = false; UpdateStatus(); mpListView1.Items.Clear(); CountryCollection countries = new CountryCollection(); for (int freq = 87500000; freq < 108000000; freq += 100000) { if (_stopScanning) return; float percent = ((freq - 87500000)) / (108000000f - 87500000f); percent *= 100f; if (percent > 100f) percent = 100f; progressBar1.Value = (int)percent; AnalogChannel channel = new AnalogChannel(); channel.IsRadio = true; channel.TunerSource = mpComboBoxSource.SelectedIndex == 0 ? TunerInputType.Antenna : TunerInputType.Cable; channel.VideoSource = AnalogChannel.VideoInputType.Tuner; channel.AudioSource = AnalogChannel.AudioInputType.Automatic; channel.Country = countries.Countries[mpComboBoxCountry.SelectedIndex]; channel.Frequency = freq; channel.IsTv = false; channel.IsRadio = true; float freqMHz = channel.Frequency; freqMHz /= 1000000f; string line = String.Format("frequence:{0} MHz ", freqMHz.ToString("f2")); ListViewItem item = mpListView1.Items.Add(new ListViewItem(line)); item.EnsureVisible(); IUser user = new User(); user.CardId = _cardNumber; TvResult tuneResult = RemoteControl.Instance.Tune(ref user, channel, -1); if (tuneResult == TvResult.SWEncoderMissing) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show("Please install a supported audio/video encoder for your software analog card", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } if (tuneResult == TvResult.GraphBuildingFailed) { Log.Error("analog: DoTvScan error (missing software encoder)"); MessageBox.Show( "The graph building. Mostly your card is not supported by TvServer. Please create a report in our forum", "Unable to scan", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } UpdateStatus(); Thread.Sleep(2000); if (SignalStrength(sensitivity) == 100) { channel.Name = String.Format("{0}", freq); Channel dbChannel = null; IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channel.Name, 0); if (tuningDetails != null && tuningDetails.Count > 0) { dbChannel = tuningDetails[0].ReferencedChannel(); } if (dbChannel != null) { line = String.Format("frequence:{0} MHz : Channel update found - {1}", freqMHz.ToString("f2"), channel.Name); channelsUpdated++; } else { dbChannel = layer.AddNewChannel(channel.Name); line = String.Format("frequence:{0} MHz : New channel found - {1}", freqMHz.ToString("f2"), channel.Name); channelsNew++; } item.Text = line; dbChannel.IsTv = channel.IsTv; dbChannel.IsRadio = channel.IsRadio; dbChannel.Persist(); layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.AllChannels); if (checkBoxCreateSignalGroup.Checked) { layer.AddChannelToRadioGroup(dbChannel, TvConstants.RadioGroupNames.Analog); } layer.AddTuningDetails(dbChannel, channel); layer.MapChannelToCard(card, dbChannel, false); freq += 300000; } else { line = String.Format("frequence:{0} MHz : No Signal", freqMHz.ToString("f2")); item.Text = line; item.ForeColor = Color.Red; } } } catch (Exception ex) { Log.Write(ex); } finally { checkButton.Enabled = true; IUser user = new User(); user.CardId = _cardNumber; RemoteControl.Instance.StopCard(user); RemoteControl.Instance.EpgGrabberEnabled = true; mpButtonScanRadio.Text = buttonText; progressBar1.Value = 100; mpComboBoxCountry.Enabled = true; mpComboBoxSource.Enabled = true; mpComboBoxSensitivity.Enabled = true; checkBoxCreateSignalGroup.Enabled = true; checkBoxNoMerge.Enabled = true; mpButtonScanTv.Enabled = true; mpButtonScanRadio.Enabled = true; mpButtonAddSvideoChannels.Enabled = true; _isScanning = false; } ListViewItem lastItem = mpListView1.Items.Add( new ListViewItem(String.Format("Total radio channels new:{0} updated:{1}", channelsNew, channelsUpdated))); lastItem.EnsureVisible(); }