private TuningConfig GetDefaultTuningConfigForChannelAndScannedLineup(SDChannel ch, Lineup lineup) { var tunerType = ChannelEditing.GetTunerTypeForLineup(lineup); List <long> tunerIDs = new List <long>(); foreach (Device device in lineup.ScanDevices) { tunerIDs.Add(device.Id); } TuningConfig tuning_config = new TuningConfig(); tuning_config.tunerIDs = tunerIDs; switch (tunerType) { case ChannelEditing.TunerType.ATSC: if (ch.atscMajor > 1 && ch.atscMinor > 0) { tuning_config.number = ch.atscMajor; tuning_config.subNumber = ch.atscMinor; } else { return(null); // Tuner not compatible with channel } break; case ChannelEditing.TunerType.Aux: case ChannelEditing.TunerType.CableCARD: if (ch.guideChannelMinor > 0) { return(null); // not compatible } tuning_config.number = ch.guideChannelMajor; break; case ChannelEditing.TunerType.QAM: if (ch.QAMMajor * ch.QAMMinor == 0) { return(null); // not compatible } tuning_config.number = ch.QAMMajor; tuning_config.subNumber = ch.QAMMinor; break; case ChannelEditing.TunerType.Analog: if (ch.uhfVhf > 1) { tuning_config.number = ch.uhfVhf; } else if (ch.guideChannelMinor == 0) { tuning_config.number = ch.guideChannelMajor; } else { return(null); // not compatible } break; case ChannelEditing.TunerType.DVBT: case ChannelEditing.TunerType.DVBS: case ChannelEditing.TunerType.DVBC: if (ch.frequencyHz > 0) { tuning_config.deliverySystem = ch.deliverySystem; tuning_config.fec = ch.fec; tuning_config.frequencyHz = ch.frequencyHz; tuning_config.modulationSystem = ch.modulationSystem; tuning_config.networkID = ch.networkID; tuning_config.polarization = ch.polarization; tuning_config.serviceID = ch.serviceID; tuning_config.symbolrate = ch.symbolrate; tuning_config.transportID = ch.transportID; } else { return(null); // not compatible } break; default: Console.WriteLine("Channel not added with scanned lineup {0} because the tuner type is unrecognized", lineup.Name); return(null); } // end switch statement return(tuning_config); }