Exemple #1
0
        private void HandleUICEMRangeData(Msg_UICEMRangeData msg)
        {
            if (!peerMap_.ContainsKey(msg.Address))
            {
                return;                  // EARLY RETURN!
            }
            Peer peer = peerMap_[msg.Address];

            peer.NewRangeData(msg);

            string dataCheck;

            if (msg.RCMRangeStatus == 0)
            {
                switch (msg.DataCheck)
                {
                case RCMCheckToken.DataOk:
                    dataCheck = "Data OK";
                    break;

                case RCMCheckToken.DataIsZero:
                    dataCheck = "Data is ZERO **********";
                    break;

                case RCMCheckToken.DataIsHuge:
                    dataCheck = "Data is HUGE **********";
                    break;

                case RCMCheckToken.DataTypeUnexpected:
                    dataCheck = "Data type unexpected";
                    break;

                case RCMCheckToken.NoData:
                    dataCheck = "No data";
                    break;

                case RCMCheckToken.DataDiscarded_HighREE:
                    dataCheck = "DISCARD: High REE";
                    break;

                case RCMCheckToken.DataDiscarded_UnexpectedRangeChange:
                    dataCheck = "DISCARD: Unexpected range change";
                    break;

                default:
                    dataCheck = string.Format("Bad check value 0x{0:x8}", msg.DataCheck);
                    break;
                }
            }
            else
            {
                dataCheck = "No data";
            }

            DateTime now = DateTime.Now;

            lastCEMRangeData_ = now;
            string finalResult = ((msg.RangeResult == RCMRangeResult.GotRange) && !msg.RangeWasDiscarded) ? "ok" : "XX";
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="msg"></param>
        ///
        public void NewRangeData(Msg_UICEMRangeData msg)
        {
            RangeData data = new RangeData(
                msg.Address,
                msg.RangeResult,
                msg.Range,
                msg.ChannelRiseOrNoise,
                msg.RangeErrEstimate,
                msg.RCMRangeStatus,
                msg.RequesterLEDFlags,
                msg.ResponderLEDFlags,
                msg.VPeak,
                msg.RCMTimestamp,
                msg.SNR);

            RangeList.Insert(0, data);

            if (rcmDataCount_ < 32)
            {
                ++rcmDataCount_;
            }

            rcmData_ <<= 1;

            if (msg.RangeResult == RCMRangeResult.GotRange)
            {
                rcmData_ |= 1;
            }

            PropChanged("RCMRangeSuccessRate");
            PropChanged("RCMRangeSuccessRateText");

            if (RangeList.Count > kMaxRangeEntries)
            {
                RangeList.RemoveAt(kMaxRangeEntries - 1);
            }
        }