public void AddFilters(string path) { try { DirectoryInfo di = new DirectoryInfo(path); FileInfo[] files = di.GetFiles("*.f36"); foreach (FileInfo fi in files) { try { AD6636FilterFile filter = new AD6636FilterFile(fi.FullName); if (filter.Valid && filter.InputFrequency == NCOFreq) { FilterFiles.Add(filter); } } catch (Exception e) { } } } catch (Exception e) { } RebuildFilterFileButtons(); }
public bool SetFilter(AD6636FilterFile filter) { if (AD6636 == null) { return(false); } return(AD6636.SetFilter(filter)); }
public bool SetFilter(int channel, AD6636FilterFile filter) { bool success = true; CurrentFilter = filter; FilterRate = filter.Rate; _FilterWidth = filter.Width; lock (this) { /* set the MRCF channel to modify */ success &= this.Device.AD6636WriteReg(AD6636_REG_IOAC, AD6636_REG_IOAC_L, (1 << channel)); /* set the source FIR to read from */ success &= this.Device.AD6636WriteReg(AD6636_REG_MRCFC, AD6636_REG_MRCFC_L, (channel << 10)); success &= this.Device.AD6636WriteReg(104, 2, 0); success &= this.Device.AD6636WriteReg(108, 2, 5); success &= this.Device.AD6636WriteReg(110, 2, 5); success &= this.Device.AD6636WriteReg(116, 2, 0); int filterFlags = 0; if (filter.HB2) { filterFlags |= 0x01; } if (filter.FIR2) { filterFlags |= 0x02; } if (filter.HB1) { filterFlags |= 0x04; } if (filter.FIR1) { filterFlags |= 0x08; } success &= this.Device.AD6636WriteReg(120, 1, filterFlags); success &= this.Device.AD6636WriteReg(121, 1, filter.CIC5Scale); success &= this.Device.AD6636WriteReg(122, 1, filter.CIC5Decimation - 1); if (filter.CIC5) { success &= this.Device.AD6636WriteReg(123, 1, 0); } else { success &= this.Device.AD6636WriteReg(123, 1, 1); } success &= this.Device.AD6636WriteReg(136, 1, filter.DRCFNTaps - 1); success &= this.Device.AD6636WriteReg(137, 1, (long)(64 - filter.DRCFNTaps / 2)); success &= this.Device.AD6636WriteReg(138, 2, 0x700 | ((filter.DRCFDecimation - 1) << 4)); success &= this.Device.AD6636WriteReg(148, 1, filter.CRCFNTaps - 1); success &= this.Device.AD6636WriteReg(149, 1, (long)(64 - filter.CRCFNTaps / 2)); success &= this.Device.AD6636WriteReg(150, 2, 0x700 | ((filter.CRCFDecimation - 1) << 4)); success &= this.Device.AD6636WriteReg(184, 2, 0); int DRCFEntries = (int)((filter.DRCFNTaps + 1) / 2); success &= this.Device.AD6636WriteReg(140, 1, 0); success &= this.Device.AD6636WriteReg(141, 1, DRCFEntries - 1); for (int pos = 0; pos < DRCFEntries; pos++) { success &= this.Device.AD6636WriteReg(144, 2, filter.DRCFTaps[DRCFEntries - 1 + pos]); } int CRCFEntries = (int)((filter.CRCFNTaps + 1) / 2); success &= this.Device.AD6636WriteReg(152, 1, 0); success &= this.Device.AD6636WriteReg(153, 1, CRCFEntries - 1); for (int pos = 0; pos < CRCFEntries; pos++) { success &= this.Device.AD6636WriteReg(156, 3, filter.CRCFTaps[CRCFEntries - 1 + pos]); } success &= this.Device.AD6636WriteReg(184, 2, 0); if (FilterRate > NCOFreq / 4) { success &= SetDivisor(1); } else if (FilterRate > NCOFreq / 8) { success &= SetDivisor(2); } else if (FilterRate > NCOFreq / 16) { success &= SetDivisor(4); } else { success &= SetDivisor(8); } success &= SelectChannel(channel); success &= SoftSync(); /* inform listeners */ if (SamplingRateChanged != null) { SamplingRateChanged(this, null); } if (FilterWidthChanged != null) { FilterWidthChanged(this, null); } } return(success); }
public bool SetFilter(AD6636FilterFile filter) { return(SetFilter(CurrentChannel, filter)); }