120 lines
3.4 KiB
C++
120 lines
3.4 KiB
C++
/**
|
|
* @file menuSensorData.cpp
|
|
* @author Alexander Klein (alex@kleiax.de)
|
|
* @brief
|
|
* @version 0.1
|
|
* @date 2023-09-04
|
|
*
|
|
* @copyright Copyright (c) 2023
|
|
*
|
|
*/
|
|
|
|
#include "menuSensorData.h"
|
|
|
|
MenuSensorData::MenuSensorData(SensorData* sensorData) :
|
|
MenuInformationSites(7) {
|
|
this->sensorData = sensorData;
|
|
}
|
|
|
|
void MenuSensorData::printPage() const {
|
|
const UBX_NAV_PVT_data_t* gpsData = this->sensorData->getGnssData();
|
|
uint8_t fixType = 0;
|
|
if (gpsData)
|
|
fixType = gpsData->fixType;
|
|
|
|
String lineOne = "";
|
|
String lineTwo = "";
|
|
|
|
switch (this->getCurrentPage()) {
|
|
case 0:
|
|
lineOne = " Y P R :";
|
|
lineTwo.concat(this->sensorData->getGyroData()[0]);
|
|
lineTwo.concat(" ");
|
|
lineTwo.concat(this->sensorData->getGyroData()[1]);
|
|
lineTwo.concat(" ");
|
|
lineTwo.concat(this->sensorData->getGyroData()[2]);
|
|
break;
|
|
|
|
case 1:
|
|
lineOne = "Real Azimuth:";
|
|
lineTwo.concat(this->sensorData->getRealAzimuth());
|
|
break;
|
|
|
|
case 2:
|
|
lineOne = "Calc Azimuth:";
|
|
lineTwo.concat(this->sensorData->getCalcAzimuth());
|
|
lineTwo.concat(" ");
|
|
lineTwo.concat(CalcAzimuth::stateToString(this->sensorData->getCalcAzimuthState));
|
|
break;
|
|
|
|
case 3: {
|
|
lineOne = "Lat:";
|
|
lineTwo = "Lon:";
|
|
Point pos = this->sensorData->getCurrentPos();
|
|
lineOne.concat(pos.getLatitude());
|
|
lineTwo.concat(pos.getLongitude());
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
lineOne = "Time: ";
|
|
lineTwo = "";
|
|
if (fixType) {
|
|
if (gpsData->hour < 10)
|
|
lineTwo.concat("0");
|
|
lineTwo.concat(gpsData->hour);
|
|
lineTwo.concat(":");
|
|
if (gpsData->min < 10)
|
|
lineTwo.concat("0");
|
|
lineTwo.concat(gpsData->min);
|
|
lineTwo.concat(":");
|
|
if (gpsData->sec < 10)
|
|
lineTwo.concat("0");
|
|
lineTwo.concat(gpsData->sec);
|
|
} else
|
|
lineTwo = "00:00:00";
|
|
|
|
break;
|
|
|
|
case 5: {
|
|
lineOne = "CarSol: ";
|
|
lineTwo = "Ntrip: ";
|
|
uint8_t carrSoln = gpsData->flags.bits.carrSoln;
|
|
if (carrSoln == 0)
|
|
lineOne = "None";
|
|
else if (carrSoln == 1)
|
|
lineOne = "Floating";
|
|
else if (carrSoln == 2)
|
|
lineOne = "Fixed";
|
|
else
|
|
lineOne = "UNKNOWN";
|
|
NTRIPClientStates status = this->sensorData->getNtripState();
|
|
if (status == NTRIPClientStates::pushData)
|
|
lineTwo = "enabled";
|
|
else if (status == NTRIPClientStates::notAvailable)
|
|
lineTwo = " N/A";
|
|
else
|
|
lineTwo = "disabled";
|
|
}
|
|
break;
|
|
|
|
case 6:
|
|
lineOne = "HAcc: ";
|
|
lineTwo = "Sats: ";
|
|
if (fixType) {
|
|
lineOne.concat(gpsData->hAcc);
|
|
lineTwo.concat(gpsData->numSV);
|
|
} else {
|
|
lineOne = "-/-";
|
|
lineTwo = "-/-";
|
|
}
|
|
break;
|
|
|
|
default:
|
|
this->printDefault();
|
|
return;
|
|
}
|
|
|
|
this->print(lineOne, lineTwo);
|
|
}
|