123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608 |
- #pragma once
- #include "StdAfx.h"
- #include "MSMDisplay.h"
- void MSMDisplay::InitializeSim()
- {
- dbDispAcumDist = 0;
- usPreviousDist = 0;
- dbDispAcumTime = 0;
- usPreviousTime = 0;
- eCalStatus = MSM::CalibrationStatus::NONE;
-
- msmData->ucMode = System::Convert::ToByte (this->numericUpDownMode->Value);
- ucPreviousMode = msmData->ucMode;
- msmData->usScaleFactor10000 = System::Convert::ToUInt16 (this->numericUpDownScaleFactor->Value * msmData->CAL_SF_SCALE_FACTOR);
- usPreviousScale = msmData->usScaleFactor10000;
- }
- void MSMDisplay::ANT_eventNotification(UCHAR ucEventCode_, UCHAR* pucEventBuffer_)
- {
- UCHAR ucPageNum = pucEventBuffer_[0];
- switch(ucEventCode_)
- {
- case EVENT_RX_ACKNOWLEDGED:
- case EVENT_RX_BURST_PACKET:
- case EVENT_RX_BROADCAST:
-
- if (ucPageNum < commonData->START_COMMON_PAGE)
- {
- msmData->Decode(pucEventBuffer_);
-
- if (ucPageNum == msmData->PAGE_CALIBRATION)
- UpdateCalibration();
- }
- else
- commonData->Decode(pucEventBuffer_);
- UpdateDisplay();
- break;
- case EVENT_TRANSFER_TX_COMPLETED:
- UpdateDisplayAckStatus(msmData->ACK_SUCCESS);
- break;
- case EVENT_TRANSFER_TX_FAILED:
- case EVENT_ACK_TIMEOUT:
- UpdateDisplayAckStatus(msmData->ACK_FAIL);
- break;
- default:
- break;
- }
- }
- void MSMDisplay::UpdateDisplay()
- {
-
- UpdateAcumValues();
-
- this->labelDisplayAcumDistance->Text = dbDispAcumDist.ToString("N2");
- this->labelDisplayAcumTime->Text = dbDispAcumTime.ToString("N2");
-
- if (msmData->IsSpeedValid(msmData->usInstSpeed1000))
- this->labelDisplayInstSpeed->Text = ((double) msmData->usInstSpeed1000 / msmData->SPEED_SCALE_FACTOR).ToString("N3");
- else
- this->labelDisplayInstSpeed->Text = "INVALID SPEED";
-
- if (msmData->bPage2Enabled)
- {
- this->labelDisplayLat->Text = (msmData->slLatitude_SC / msmData->SEMI_CIRCLE_CONVERSION).ToString("N6");
- this->labelDisplayLong->Text = (msmData->slLongitude_SC / msmData->SEMI_CIRCLE_CONVERSION).ToString("N6");
-
- this->labelRxLat->Text = msmData->slLatitude_SC.ToString();
- this->labelRxLon->Text = msmData->slLongitude_SC.ToString();
- }
-
- if (msmData->bPage3Enabled)
- {
-
- if (msmData->IsElevationValid())
- this->labelDisplayElevation->Text = (((double) msmData->usElevation5 / msmData->ELEVATION_SCALE_FACTOR) - msmData->ELEVATION_OFFSET).ToString("N1");
- else
- this->labelDisplayElevation->Text = "Invalid";
-
- if (msmData->IsHeadingValid())
- this->labelDisplayHeading->Text = ((double) msmData->usHeading10 / msmData->HEADING_SCALE_FACTOR).ToString("N1");
- else
- this->labelDisplayHeading->Text = "Invalid";
-
- switch (msmData->ucFixType)
- {
- case MSM::GpsFix::NONE:
- this->labelDisplayFixType->Text = "None";
- break;
- case MSM::GpsFix::INVALID:
- this->labelDisplayFixType->Text = "Invalid";
- break;
- case MSM::GpsFix::PROPAGATING:
- this->labelDisplayFixType->Text = "Propagating";
- break;
- case MSM::GpsFix::LAST_KNOWN:
- this->labelDisplayFixType->Text = "Last Known";
- break;
- case MSM::GpsFix::SEARCHING:
- this->labelDisplayFixType->Text = "Searching";
- break;
- case MSM::GpsFix::THREE_D:
- this->labelDisplayFixType->Text = "3D Fix";
- break;
- case MSM::GpsFix::THREE_D_DIF:
- this->labelDisplayFixType->Text = "3D Differential";
- break;
- case MSM::GpsFix::THREE_D_WAAS:
- this->labelDisplayFixType->Text = "3D WAAS";
- break;
- case MSM::GpsFix::TWO_D:
- this->labelDisplayFixType->Text = "2D Fix";
- break;
- case MSM::GpsFix::TWO_D_DIF:
- this->labelDisplayFixType->Text = "2D Differential";
- break;
- case MSM::GpsFix::TWO_D_WAAS:
- this->labelDisplayFixType->Text = "2D WAAS";
- break;
- default:
- this->labelDisplayFixType->Text = "Error";
- break;
- }
-
- this->labelRxElev->Text = msmData->usElevation5.ToString();
- this->labelRxHeading->Text = msmData->usHeading10.ToString();
- this->labelRxFix->Text = msmData->ucFixType.ToString();
- }
-
- this->labelTxAcumDist->Text = msmData->usAcumDist10.ToString();
- this->labelTxAcumTime->Text = msmData->usAcumTime1024.ToString();
- this->labelTxInstSpeed->Text = msmData->usInstSpeed1000.ToString();
-
- if (commonData->usMfgID != 0)
- {
- this->label_Glb_ManfIDDisplay->Text = commonData->usMfgID.ToString();
- this->label_Glb_HardwareVerDisplay->Text = commonData->ucHwVersion.ToString();
- this->label_Glb_ModelNumDisplay->Text = commonData->usModelNum.ToString();
- }
-
- if (commonData->ulSerialNum != 0)
- {
- if(commonData->ulSerialNum == 0xFFFFFFFF)
- this->label_Glb_SerialNumDisplay->Text = "N/A";
- else
- this->label_Glb_SerialNumDisplay->Text = commonData->ulSerialNum.ToString();
- this->label_Glb_SoftwareVerDisplay->Text = commonData->ucSwVersion.ToString();
- }
-
- if (commonData->ulOpTime != 0)
- {
- this->labelBattVolt->Text = System::Math::Round((double)commonData->usBatVoltage256/256,4).ToString("N2");
-
- if (commonData->eTimeResolution == CommonData::TimeResolution::SIXTEEN)
- this->labelTimeRes->Text = "16";
- else
- this->labelTimeRes->Text = "2";
-
- this->labelOpTime->Text = (commonData->ulOpTime * (UCHAR) commonData->eTimeResolution).ToString();
- switch (commonData->eBatStatus)
- {
- case CommonData::BatStatus::CRITICAL:
- this->labelBattStatus->Text = "Critical";
- break;
- case CommonData::BatStatus::GOOD:
- this->labelBattStatus->Text = "Good";
- break;
- case CommonData::BatStatus::INVALID:
- this->labelBattStatus->Text = "Invalid";
- break;
- case CommonData::BatStatus::LOW:
- this->labelBattStatus->Text = "Low";
- break;
- case CommonData::BatStatus::NEW:
- this->labelBattStatus->Text = "New";
- break;
- case CommonData::BatStatus::OK:
- this->labelBattStatus->Text = "Ok";
- break;
- default:
- break;
- }
- }
-
- if (commonData->ucDays != 0)
- {
- this->labelHours->Text = commonData->ucHours.ToString("D2");
- this->labelMinutes->Text = commonData->ucMinutes.ToString("D2");
- this->labelSeconds->Text = commonData->ucSeconds.ToString("D2");
- this->labelDay->Text = commonData->ucDays.ToString("D2");
- this->labelMonth->Text = commonData->ucMonth.ToString("D2");
- this->labelYear->Text = commonData->ucYears.ToString("D2");
- switch (commonData->eDayOfWeek)
- {
- case CommonData::DayOfWeek::SUNDAY:
- this->labelDayOfWeek->Text = "Sunday";
- break;
- case CommonData::DayOfWeek::MONDAY:
- this->labelDayOfWeek->Text = "Monday";
- break;
- case CommonData::DayOfWeek::TUESDAY:
- this->labelDayOfWeek->Text = "Tuesday";
- break;
- case CommonData::DayOfWeek::WEDNESDAY:
- this->labelDayOfWeek->Text = "Wednesday";
- break;
- case CommonData::DayOfWeek::THURSDAY:
- this->labelDayOfWeek->Text = "Thursday";
- break;
- case CommonData::DayOfWeek::FRIDAY:
- this->labelDayOfWeek->Text = "Friday";
- break;
- case CommonData::DayOfWeek::SATURDAY:
- this->labelDayOfWeek->Text = "Saturday";
- break;
- case CommonData::DayOfWeek::INVALID:
- this->labelDayOfWeek->Text = "Invalid";
- break;
- default:
- break;
- }
- }
- }
- void MSMDisplay::UpdateAcumValues()
- {
- USHORT usRollover;
- if (usPreviousDist == 0 && usPreviousTime == 0)
- {
-
- usPreviousDist = msmData->usAcumDist10;
- usPreviousTime = msmData->usAcumTime1024;
- }
- else
- {
-
- usRollover = msmData->usAcumDist10 - usPreviousDist;
- dbDispAcumDist += (double) usRollover / msmData->DIST_SCALE_FACTOR;
-
- usRollover = msmData->usAcumTime1024 - usPreviousTime;
- dbDispAcumTime += (double) usRollover / msmData->TIME_SCALE_FACTOR;
-
- usPreviousDist = msmData->usAcumDist10;
- usPreviousTime = msmData->usAcumTime1024;
- }
- }
- void MSMDisplay::UpdateCalibration()
- {
- if (eCalStatus == MSM::CalibrationStatus::REQUEST_IN_PROGRESS)
- {
-
- if (msmData->usScaleFactor10000 == msmData->CAL_SCALE_CONF)
- {
-
- this->numericUpDownScaleFactor->Value = System::Convert::ToDecimal(msmData->usScaleFactor10000 / msmData->CAL_SF_SCALE_FACTOR);
- if (msmData->ucMode == ucPreviousMode)
- {
- this->labelCalibrationProgress->Text = "Calibration Request Confirmed \nMode Data Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Green;
- }
- else if (!msmData->IsCalModeValid(msmData->ucMode))
- {
- this->labelCalibrationProgress->Text = "Calibration Request Confirmed \nMode Data Not Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::CadetBlue;
- }
- else
- {
- this->labelCalibrationProgress->Text = "Calibration Request Confirmed \nMode Data Invaild";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
-
- else if (!msmData->IsCalScaleValid(msmData->usScaleFactor10000))
- {
- eCalStatus = MSM::CalibrationStatus::NONE;
- this->labelCalibrationProgress->Text = "Calibration Not Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::CadetBlue;
- if (msmData->IsCalModeValid(msmData->ucMode))
- {
- this->labelCalibrationProgress->Text = "Calibration Not Supported \nMode Data Invaild: " + msmData->ucMode.ToString();
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
-
- else
- {
- this->labelCalibrationProgress->Text = "Scale Factor Invalid: " + msmData->usScaleFactor10000.ToString();
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
- if (eCalStatus == MSM::CalibrationStatus::SET_SCALE_IN_PROGRESS)
- {
-
- if (msmData->usScaleFactor10000 == usPreviousScale)
- {
-
- eCalStatus = MSM::CalibrationStatus::COMPLETE;
- if (msmData->ucMode == ucPreviousMode)
- {
- this->labelCalibrationProgress->Text = "Set Scale Factor Confirmed \nMode Data Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Green;
- }
- else if (!msmData->IsCalModeValid(msmData->ucMode))
- {
- this->labelCalibrationProgress->Text = "Set Scale Factor Confirmed \nMode Data Not Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::CadetBlue;
- }
- else
- {
- this->labelCalibrationProgress->Text = "Set Scale Factor Confirmed \nMode Data Invalid" + msmData->ucMode.ToString();
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
-
- else if (!msmData->IsCalScaleValid(msmData->usScaleFactor10000))
- {
-
- eCalStatus = MSM::CalibrationStatus::NONE;
- this->labelCalibrationProgress->Text = "Set Scale Factor Confirmed \nCalibration Not Supported";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::CadetBlue;
-
- if (msmData->IsCalModeValid(msmData->ucMode))
- {
- this->labelCalibrationProgress->Text = "Calibration Not Supported \nMode Data Invalid" + msmData->ucMode.ToString();
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
-
- else
- {
- this->labelCalibrationProgress->Text = "Scale Factor Invalid: " + msmData->usScaleFactor10000.ToString();
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- }
- if(eCalStatus == MSM::CalibrationStatus::COMPLETE)
- {
- this->labelCalibrationProgress->Text = "Calibration Process Complete";
- this->labelCalibrationProgress->BackColor = System::Drawing::SystemColors::Control;
- }
- }
- void MSMDisplay::SendCalibrationMsg(MSM::CalibrationStatus calType_)
- {
-
- UCHAR aucAckBuffer[8] = {0,0,0,0,0,0,0,0};
- switch (calType_)
- {
- case MSM::CalibrationStatus::REQUEST_IN_PROGRESS:
-
- msmData->usScaleFactor10000 = msmData->CAL_SCALE_REQUEST;
- break;
- case MSM::CalibrationStatus::SET_SCALE_IN_PROGRESS:
-
- msmData->usScaleFactor10000 = USHORT (this->numericUpDownScaleFactor->Value * msmData->CAL_SF_SCALE_FACTOR);
- break;
- default:
- break;
- }
-
- ucPreviousMode = msmData->ucMode;
- usPreviousScale = msmData->usScaleFactor10000;
-
- msmData->EncodeData(msmData->PAGE_CALIBRATION, aucAckBuffer);
-
- if (aucAckBuffer[0])
- {
-
- requestAckMsg(aucAckBuffer);
- }
- }
- void MSMDisplay::UpdateDisplayAckStatus(UCHAR ackStatus_)
- {
- switch (ackStatus_)
- {
- case msmData->ACK_SUCCESS:
- if (eCalStatus == MSM::CalibrationStatus::REQUEST_IN_PROGRESS)
- {
- this->labelCalibrationProgress->Text = "Calibration Request \nAcknowledgement Recieved";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Orange;
- }
- if (eCalStatus == MSM::CalibrationStatus::SET_SCALE_IN_PROGRESS)
- {
- this->labelCalibrationProgress->Text = "Set Scale \nAcknowledgement Recieved";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Orange;
- }
- break;
- case msmData->ACK_FAIL:
- if (eCalStatus == MSM::CalibrationStatus::REQUEST_IN_PROGRESS)
- {
- this->labelCalibrationProgress->Text = "Calibration Request \nAcknowledgement Failed";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- if (eCalStatus == MSM::CalibrationStatus::SET_SCALE_IN_PROGRESS)
- {
- this->labelCalibrationProgress->Text = "Set Scale \nAcknowledgement Failed";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Red;
- }
- break;
-
- default:
- break;
- }
- }
- void MSMDisplay::numericUpDownMode_ValueChanged(System::Object^ sender, System::EventArgs^ e)
- {
- msmData->ucMode = System::Convert::ToByte(this->numericUpDownMode->Value);
- }
- void MSMDisplay::numericUpDownScaleFactor_ValueChanged(System::Object^ sender, System::EventArgs^ e)
- {
- msmData->usScaleFactor10000 = System::Convert::ToUInt16(this->numericUpDownScaleFactor->Value * msmData->CAL_SF_SCALE_FACTOR);
- }
- void MSMDisplay::buttonCalibrationRequest_Click(System::Object^ sender, System::EventArgs^ e)
- {
- eCalStatus = MSM::CalibrationStatus::REQUEST_IN_PROGRESS;
- SendCalibrationMsg(eCalStatus);
-
- this->numericUpDownScaleFactor->Value = System::Convert::ToDecimal(msmData->usScaleFactor10000 / msmData->CAL_SF_SCALE_FACTOR);
- this->labelCalibrationProgress->Text = "Calibration Request Sent";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Yellow;
- }
- void MSMDisplay::buttonSetScaleFactor_Click(System::Object^ sender, System::EventArgs^ e)
- {
- eCalStatus = MSM::CalibrationStatus::SET_SCALE_IN_PROGRESS;
- SendCalibrationMsg(eCalStatus);
-
- this->labelCalibrationProgress->Text = "Set Scale Factor Sent";
- this->labelCalibrationProgress->BackColor = System::Drawing::Color::Yellow;
- }
|