private bool UpdateSnr(int prn, int snr, GNSSSatelliteType type) { for (int i = 0; i < MaxSattellite; i++) { switch (type) { case GNSSSatelliteType.Gps: if (prn < 1 || prn > 32) { //pass the special satellite for gps. In different module it may not have these satellite. return false; } if (gpSate[i].prn == NullValue) { gpSate[i].prn = prn; gpSate[i].snr = snr; gpSate[i].inUse = false; return true; } else if (gpSate[i].prn == prn) { gpSate[i].snr = snr; return true; } break; case GNSSSatelliteType.Glonass: if (glSate[i].prn == NullValue) { glSate[i].prn = prn; glSate[i].snr = snr; glSate[i].inUse = false; return true; } else if (glSate[i].prn == prn) { glSate[i].snr = snr; return true; } break; case GNSSSatelliteType.Beidou: if (bdSate[i].prn == NullValue) { bdSate[i].prn = prn; bdSate[i].snr = snr; bdSate[i].inUse = false; return true; } else if (bdSate[i].prn == prn) { bdSate[i].snr = snr; return true; } break; case GNSSSatelliteType.Galileo: break; } } return false; }
private sateInfo[] GetSortedSateArray(GNSSSatelliteType t) { sateInfo[] s = GetSateArray(t).Clone() as sateInfo[]; Array.Sort(s, delegate(sateInfo s1, sateInfo s2) { return s2.snr.CompareTo(s1.snr); } ); return s; }
private int GetSpecSate(GNSSSatelliteType t, int id1, int id2, int id3, ref int sn1, ref int sn2, ref int sn3) { int getCount = 0; int snr; snr = GetSnr(id1, t).snr; if (snr != NullValue) { sn1 = snr; getCount++; } snr = GetSnr(id2, t).snr; if (snr != NullValue) { sn2 = snr; getCount++; } snr = GetSnr(id3, t).snr; if (snr != NullValue) { sn3 = snr; getCount++; } return getCount; }
private sateInfo[] GetSateArray(GNSSSatelliteType t) { switch (t) { case GNSSSatelliteType.Gps: return gpSate; case GNSSSatelliteType.Glonass: return glSate; case GNSSSatelliteType.Beidou: return bdSate; case GNSSSatelliteType.Galileo: return null; default: return null; } }
private sateInfo GetSate(int i, GNSSSatelliteType t) { switch (t) { case GNSSSatelliteType.Gps: return gpSate[i]; case GNSSSatelliteType.Glonass: return glSate[i]; case GNSSSatelliteType.Beidou: return bdSate[i]; case GNSSSatelliteType.Galileo: //return glSate[i]; break; } return NullSate; }
private int GetFrontSate(GNSSSatelliteType t, ref int id1, ref int id2, ref int id3, ref int sn1, ref int sn2, ref int sn3) { sateInfo[] sortedSateArray = GetSateArray(t).Clone() as sateInfo[]; for (int i = 0; i < MaxSattellite; i++) { for (int j = i + 1; j < MaxSattellite; j++) { if (sortedSateArray[i].snr < sortedSateArray[j].snr) { sateInfo tmp = sortedSateArray[i]; sortedSateArray[i] = sortedSateArray[j]; sortedSateArray[j] = tmp; } } } if (sortedSateArray[0].snr == NullValue) { return 0; } id1 = sortedSateArray[0].prn; sn1 = sortedSateArray[0].snr; if (sortedSateArray[1].snr == NullValue) { return 1; } id2 = sortedSateArray[1].prn; sn2 = sortedSateArray[1].snr; if (sortedSateArray[2].snr == NullValue) { return 2; } id3 = sortedSateArray[2].prn; sn3 = sortedSateArray[2].snr; return 3; }
public sateInfo GetSnr(int prn, GNSSSatelliteType t) { sateInfo[] p = GetSateArray(t); for (int i = 0; i < MaxSattellite; i++) { if (p[i].prn == prn) { return p[i]; } } return NullSate; }
public sateInfo GetRealBeidouSnr(int prn, GNSSSatelliteType t) { sateInfo[] p = GetSateArray(t); for (int i = 0; i < MaxSattellite; i++) { if (GetRealBeidouPrn(p[i].prn) == GetRealBeidouPrn(prn)) { return p[i]; } } return NullSate; }