using Ips.Library.Entity; namespace Ips.Library.SigLoc { public static class SigCalcUtil { public static int CalcMutil(long fs, int bandWidth, bool sup4m = true) { int mutil; var num = Convert.ToInt32(fs / (bandWidth * 1.25)); if (!sup4m || num <= 16) { var num1 = (int)(Math.Log10(num) / Math.Log10(2)); mutil = (int)Math.Pow(2, num1); } else { mutil = ((int)(num / 4)) * 4; } return mutil; } public static int CalcFs(long clockFreq, int bandWidth, int adcMutil = 1) { if (adcMutil == 0) return (int)clockFreq; var adfreq = clockFreq / adcMutil; var mutil = CalcMutil(adfreq, bandWidth, adcMutil <= 1); var fs = (int)(adfreq / mutil); return fs; } public static FreqPointInfo GetFreqPointBySigFreq(long sigFreq, SatType satType, long satTurn, long cfqTurn) { long upFreq, satDownFreq, downFreq; if (sigFreq < 400 * 1e6 && sigFreq > 200 * 1e6) { upFreq = sigFreq; if (satType == SatType.WarSat) { satDownFreq = WarSatFreq.GetDownFreq(upFreq); downFreq = satDownFreq + cfqTurn; } else { satDownFreq = upFreq + satTurn; downFreq = satDownFreq + cfqTurn; } } else if (sigFreq > 1000 * 1e6 && sigFreq < 2000 * 1e6) { downFreq = sigFreq; satDownFreq = sigFreq + cfqTurn; upFreq = satDownFreq + satTurn; } else if (sigFreq > 4000 * 1e6 && sigFreq < 6000 * 1e6) { downFreq = sigFreq - cfqTurn; satDownFreq = sigFreq; upFreq = sigFreq + satTurn; } else { satDownFreq = sigFreq - satTurn; downFreq = satDownFreq - cfqTurn; upFreq = sigFreq; } FreqPointInfo freqInfo = new FreqPointInfo() { SigFreq = sigFreq, UpFreq = upFreq, SatDownFreq = satDownFreq, DownFreq = downFreq }; return freqInfo; } //public static long GetDownFreq(long upFreq, SatType satType, long satTurn, long cfqTurn) //{ // long downFreq = 0; // if (upFreq < 400 * 1e6 && upFreq > 200 * 1e6) // { // if (satType == SatType.WarSat) // { // downFreq = WarSatFreq.GetDownFreq(upFreq) + cfqTurn; // } // else // { // downFreq = upFreq + satTurn + cfqTurn; // } // } // else // { // downFreq = upFreq - satTurn - cfqTurn; // } //} } }