more sensorData menu

This commit is contained in:
2023-09-10 13:00:12 +02:00
parent 7c8406f438
commit ad560e7d16
9 changed files with 119 additions and 212 deletions
-1
View File
@@ -40,7 +40,6 @@ Do later:
Do now: Do now:
Code: Code:
Doxygen Kommentare aktualisieren Doxygen Kommentare aktualisieren
Add Gyroskop Sensor
Latex: Latex:
Genaue Beschreibung von PulseCounter HardwareUnit wenn möglich Genaue Beschreibung von PulseCounter HardwareUnit wenn möglich
+22
View File
@@ -30,6 +30,28 @@ void CalcAzimuth::updateCurrentPosition(Point point) {
this->positionChanged = true; this->positionChanged = true;
} }
String CalcAzimuth::stateToString(State state) {
switch (state) {
case State::Invalid:
return "Invalid";
case State::Bad:
return "Bad";
case State::Ok:
return "Ok";
case State::Good:
return "Good";
case State::Super:
return "Super";
default:
return "UNKOWN";
}
}
void CalcAzimuth::run() { void CalcAzimuth::run() {
if (!this->positionChanged) if (!this->positionChanged)
return; return;
+2
View File
@@ -34,6 +34,8 @@ class CalcAzimuth : public Component {
int16_t getAzimuth() const { return this->calcAzimuth; } int16_t getAzimuth() const { return this->calcAzimuth; }
State getState() const { return this->state; } State getState() const { return this->state; }
static String stateToString(State state);
private: private:
void run() override; void run() override;
void updateAzimuth(); void updateAzimuth();
+6
View File
@@ -105,6 +105,12 @@ CalcAzimuth::State SensorData::getCalcAzimuthState() const {
return CalcAzimuth::State::Invalid; return CalcAzimuth::State::Invalid;
} }
NTRIPClientStates SensorData::getNtripState() const {
if (this->ntripClient)
return this->ntripClient->getClientState();
return NTRIPClientStates::notAvailable;
}
void SensorData::printPVTdata(UBX_NAV_PVT_data_t *ubxDataStruct) { void SensorData::printPVTdata(UBX_NAV_PVT_data_t *ubxDataStruct) {
if (!SensorData::outputStatusPrintPVTdata) if (!SensorData::outputStatusPrintPVTdata)
return; return;
+1
View File
@@ -47,6 +47,7 @@ class SensorData : public Component {
Point getCurrentPos() const { return this->currentPosition; } Point getCurrentPos() const { return this->currentPosition; }
const UBX_NAV_PVT_data_t* getGnssData() const { return this->gnssData; }; const UBX_NAV_PVT_data_t* getGnssData() const { return this->gnssData; };
NTRIPClientStates getNtripState() const;
const float* getGyroData() const { return this->yawPitchRoll; } const float* getGyroData() const { return this->yawPitchRoll; }
CalcAzimuth* getCalcCompass() const { return this->calcCompass; } CalcAzimuth* getCalcCompass() const { return this->calcCompass; }
-159
View File
@@ -1,159 +0,0 @@
/**
* @file menuGPS.cpp
* @author Alexander Klein (alex@kleiax.de)
* @brief Contains an implementation of the class MenuGPS
* @version 0.1
* @date 2022-01-29
*
* @copyright Copyright (c) 2022
*
*/
#include "menuGPS.h"
MenuGPS::MenuGPS(SensorData* sensorData) :
MenuInformationSites(10) {
this->sensorData = sensorData;
// this->ntripClient = this->navigation->getNTRIPClient();
}
void MenuGPS::printPage() const {
const UBX_NAV_PVT_data_t* gpsData = this->sensorData->getGnssData();
uint8_t fixType = 0;
if (gpsData)
fixType = gpsData->fixType;
String lineOne = "Data isn't valid";
String lineTwo = "or no GPS signal";
switch (this->getCurrentPage()) {
case 0:
if (fixType) {
lineOne = "Sats: ";
lineOne.concat(gpsData->numSV);
lineTwo = "PDOP: ";
lineTwo.concat(gpsData->pDOP);
}
break;
case 1:
if (fixType) {
lineOne = "Lat: ";
lineOne.concat(gpsData->lat);
lineTwo = "Lon: ";
lineTwo.concat(gpsData->lon);
}
break;
case 2:
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 3: {
// NTRIPClientStates status = this->ntripClient->getClientState();
// lineOne = "NTRIP Client is";
// if (status == NTRIPClientStates::pushData)
// lineTwo = "enabled";
// else if (status == NTRIPClientStates::notAvailable)
// lineTwo = "not available";
// else
// lineTwo = "disabled";
}
break;
case 4:
lineOne = "Fix type:";
if (fixType == 0)
lineTwo = "None";
else if (fixType == 1)
lineTwo = "Dead Reckoning";
else if (fixType == 2)
lineTwo = "2D";
else if (fixType == 3)
lineTwo = "3D";
else if (fixType == 3)
lineTwo = "GNSS + Dead Reck";
else if (fixType == 5)
lineTwo = "Time Only";
else
lineTwo = "UNKNOWN";
break;
case 5: {
lineOne = "Carrier Solution";
uint8_t carrSoln = gpsData->flags.bits.carrSoln;
if (carrSoln == 0)
lineTwo = "None";
else if (carrSoln == 1)
lineTwo = "Floating";
else if (carrSoln == 2)
lineTwo = "Fixed";
else
lineTwo = "UNKNOWN";
}
break;
case 6:
lineOne = "Hrizntl Accuracy";
if (fixType) {
lineTwo = "";
lineTwo.concat(gpsData->hAcc);
} else
lineTwo = "0";
break;
case 7:
lineOne = "magDec: ";
lineTwo = "magAcc: ";
if (fixType) {
lineOne.concat(gpsData->magDec);
lineTwo.concat(gpsData->magAcc);
} else {
lineOne.concat("---");
lineTwo.concat("---");
}
break;
case 8:
lineOne = "Azimuth: ";
lineTwo = "";
lineTwo.concat(this->sensorData->getRealAzimuth());
break;
default:
this->printDefault();
return;
}
this->print(lineOne, lineTwo);
}
void MenuGPS::runCommand() const {
switch (this->getCurrentPage()) {
case 3: {
// // std::cout << "MenuGPS::runCommand " << this->ntripClient->getClientState() << std::endl;
// if (this->ntripClient->getClientState() == NTRIPClientStates::pushData)
// this->ntripClient->setActivated(false);
// else if (this->ntripClient->getClientState() != NTRIPClientStates::notAvailable)
// this->ntripClient->setActivated(true);
}
break;
}
}
-42
View File
@@ -1,42 +0,0 @@
/**
* @file menuGPS.h
* @author Alexander Klein (alex@kleiax.de)
* @brief Contains a class to print informations about the GPS object
* @version 0.1
* @date 2022-01-29
*
* @copyright Copyright (c) 2022
*
*/
#ifndef MENU_GPS_H
#define MENU_GPS_H
#include <SparkFun_u-blox_GNSS_Arduino_Library.h>
#include "menuInformationSites.h"
#include "sensorData.h"
#include "ntripClient.h"
/**
* @brief A class to print informations about the GPS object
*
*/
class MenuGPS : public MenuInformationSites {
public:
/**
* @brief Construct a new Menu GPS object
*
* @param gps
*/
MenuGPS(SensorData* sensorData);
private:
void printPage() const override;
void runCommand() const override;
// NTRIPClient* ntripClient;
SensorData* sensorData;
};
#endif // MENU_GPS_H
+80 -6
View File
@@ -12,28 +12,102 @@
#include "menuSensorData.h" #include "menuSensorData.h"
MenuSensorData::MenuSensorData(SensorData* sensorData) : MenuSensorData::MenuSensorData(SensorData* sensorData) :
MenuInformationSites(4) { MenuInformationSites(7) {
this->sensorData = sensorData; this->sensorData = sensorData;
} }
void MenuSensorData::printPage() const { 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 lineOne = "";
String lineTwo = ""; String lineTwo = "";
switch (this->getCurrentPage()) { switch (this->getCurrentPage()) {
case 0: case 0:
lineOne = "Yaw:"; lineOne = " Y P R :";
lineTwo.concat(this->sensorData->getGyroData()[0]); lineTwo.concat(this->sensorData->getGyroData()[0]);
lineTwo.concat(" ");
lineTwo.concat(this->sensorData->getGyroData()[1]);
lineTwo.concat(" ");
lineTwo.concat(this->sensorData->getGyroData()[2]);
break; break;
case 1: case 1:
lineOne = "Pitch:"; lineOne = "Real Azimuth:";
lineTwo.concat(this->sensorData->getGyroData()[1]); lineTwo.concat(this->sensorData->getRealAzimuth());
break; break;
case 2: case 2:
lineOne = "Roll:"; lineOne = "Calc Azimuth:";
lineTwo.concat(this->sensorData->getGyroData()[2]); 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; break;
default: default:
+8 -4
View File
@@ -217,6 +217,7 @@ void makeMenu() {
main_m = new Menu(); main_m = new Menu();
main_m->setLcd(lcdWrapper); main_m->setLcd(lcdWrapper);
Menu* mode_m = new Menu(); Menu* mode_m = new Menu();
Menu* set_m = new Menu();
Menu* pid_m = new Menu(); Menu* pid_m = new Menu();
MenuIntInput* pidl_m = new MenuIntInput(3, new MenuPidSettings(moveController.getPID(0))); MenuIntInput* pidl_m = new MenuIntInput(3, new MenuPidSettings(moveController.getPID(0)));
MenuIntInput* pidr_m = new MenuIntInput(3, new MenuPidSettings(moveController.getPID(1))); MenuIntInput* pidr_m = new MenuIntInput(3, new MenuPidSettings(moveController.getPID(1)));
@@ -225,23 +226,20 @@ void makeMenu() {
MenuAutopilot* auto_m = new MenuAutopilot(driveManager); MenuAutopilot* auto_m = new MenuAutopilot(driveManager);
MenuTestMode* testM_m = new MenuTestMode(driveManager); MenuTestMode* testM_m = new MenuTestMode(driveManager);
MenuCalibrateCompass* comp_m = new MenuCalibrateCompass(driveManager); MenuCalibrateCompass* comp_m = new MenuCalibrateCompass(driveManager);
MenuGPS* gps_m = new MenuGPS(sensorData);
MenuSysteminformation* sys_m = new MenuSysteminformation(mainBattery); MenuSysteminformation* sys_m = new MenuSysteminformation(mainBattery);
MenuSensorData* sen_m = new MenuSensorData(sensorData); MenuSensorData* sen_m = new MenuSensorData(sensorData);
//TODO: Wie bekommt jeder die dumme Route? //TODO: Wie bekommt jeder die dumme Route?
MenuRoute* rout_m = new MenuRoute(new Route()); MenuRoute* rout_m = new MenuRoute(new Route());
auto_m->setUpdateDelay(1000); auto_m->setUpdateDelay(1000);
gps_m->setUpdateDelay(1000);
sys_m->setUpdateDelay(1500); sys_m->setUpdateDelay(1500);
sen_m->setUpdateDelay(500); sen_m->setUpdateDelay(500);
// Entry for the main menu // Entry for the main menu
main_m->addEntry(new MenuAction("Mode", mode_m)); main_m->addEntry(new MenuAction("Mode", mode_m));
main_m->addEntry(new MenuAction("Sensor", sen_m)); main_m->addEntry(new MenuAction("Sensor", sen_m));
main_m->addEntry(new MenuAction("GPS", gps_m));
main_m->addEntry(new MenuAction("Route", rout_m)); main_m->addEntry(new MenuAction("Route", rout_m));
main_m->addEntry(new MenuAction("PID", pid_m)); main_m->addEntry(new MenuAction("Settings", set_m));
main_m->addEntry(new MenuAction("Systeminfo", sys_m)); main_m->addEntry(new MenuAction("Systeminfo", sys_m));
main_m->addEntry(new MenuAction("Restart", restart)); main_m->addEntry(new MenuAction("Restart", restart));
@@ -253,6 +251,12 @@ void makeMenu() {
mode_m->addEntry(new MenuAction("Test Mode", testM_m)); mode_m->addEntry(new MenuAction("Test Mode", testM_m));
mode_m->addEntry(new MenuAction("Consol Control", dummy)); mode_m->addEntry(new MenuAction("Consol Control", dummy));
// Entry for the setting menu
set_m->addEntry(new MenuAction("PID", pid_m));
set_m->addEntry(new MenuAction("Speed", dummy));
set_m->addEntry(new MenuAction("Distance", dummy));
set_m->addEntry(new MenuAction("WiFi", dummy));
// Entry for the PID Menu // Entry for the PID Menu
pid_m->addEntry(new MenuAction("Left", pidl_m)); pid_m->addEntry(new MenuAction("Left", pidl_m));
pid_m->addEntry(new MenuAction("Right", pidr_m)); pid_m->addEntry(new MenuAction("Right", pidr_m));