예제 #1
0
 public TrackingChannel(SBP_Enums.TrackingState trackingState, uint sid, SBP_Enums.SIDCode sidCode, float cn0)
 {
     _trackingState = trackingState;
     _sid           = sid;
     _sidCode       = sidCode;
     _cn0           = cn0;
 }
예제 #2
0
 public ObservationItem(byte[] data)
 {
     _p         = BitConverter.ToUInt32(data, 0);
     _li        = BitConverter.ToInt32(data, 4);
     _lf        = data[8];
     _di        = BitConverter.ToInt16(data, 9);
     _df        = data[11];
     _cn0       = data[12];
     _lockTimer = data[13];
     _flags     = data[14];
     _sid       = data[15];
     _sidCode   = (SBP_Enums.SIDCode)data[16];
 }
예제 #3
0
        public ObservationItem(double pseudoRange, double carrierPhase, double doppler, float carrierToNoiseDensity, ushort lockTimer, bool validPseudorange, bool validCarrierphase, bool halfCyclePhaseAmbiguityResolved, bool validDopplerMeasurement, byte sid, SBP_Enums.SIDCode sidCode)
        {
            _p = (uint)(pseudoRange * P_MULTIPLIER);
            double carrierWhole    = Math.Floor(carrierPhase);
            double carrierFraction = (carrierPhase - carrierWhole);
            double dopplerWhole    = Math.Floor(carrierPhase);
            double dopplerFraction = (carrierPhase - carrierWhole);

            _li        = (int)carrierWhole;
            _lf        = (byte)(carrierFraction * LF_DOPPLER_MULTIPLIER);
            _di        = (short)dopplerWhole;
            _df        = (byte)(dopplerFraction * LF_DOPPLER_MULTIPLIER);
            _cn0       = (byte)(carrierToNoiseDensity * CN0_MULTIPLIER);
            _lockTimer = lockTimer;
            _flags     = Convert.ToByte(validPseudorange);
            _flags     = (byte)(_flags | (Convert.ToByte(validCarrierphase) << 1));
            _flags     = (byte)(_flags | (Convert.ToByte(halfCyclePhaseAmbiguityResolved) << 2));
            _flags     = (byte)(_flags | (Convert.ToByte(validDopplerMeasurement) << 3));
            _sid       = sid;
            _sidCode   = sidCode;
        }