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"; }
/// <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); } }