Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
gert_lauritsen
Date:
Tue Jul 09 09:54:41 2019 +0000
Branch:
MbedBMAGThrRev
Revision:
64:06b9b8ffd5a6
Parent:
43:358e853ba2c9
dataline version to 4 and fw til 1.0.0.7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MAA 11:d3d26d0e71ea 1 #include "ErrorHandler.h"
MAA 11:d3d26d0e71ea 2
MAA 17:e859eba6e0a9 3
MAA 17:e859eba6e0a9 4 //! ErrorHandler, default constructor
MAA 11:d3d26d0e71ea 5 ErrorHandler::ErrorHandler(){
MAA 11:d3d26d0e71ea 6 errorStr1.assign(" ");
MAA 11:d3d26d0e71ea 7 errorStr2.assign(" ");
MAA 11:d3d26d0e71ea 8 currentState = NONE;
MAA 12:2b46960a5d41 9 setMagTimePrompted = false;
MAA 12:2b46960a5d41 10 memset(tmparr,'\0',10);
MAA 12:2b46960a5d41 11 magPromptCounter = 0;
MAA 11:d3d26d0e71ea 12 };
MAA 11:d3d26d0e71ea 13
MAA 17:e859eba6e0a9 14
MAA 17:e859eba6e0a9 15 //! ErrorHandler, constructor taking a few inputs
MAA 17:e859eba6e0a9 16 /*!
MAA 17:e859eba6e0a9 17 This constuctor takes a few inputs, to enable more functionality
MAA 17:e859eba6e0a9 18
MAA 17:e859eba6e0a9 19 \param batteryvoltage A string pointer, enabling the class to access the current battery voltage string
MAA 17:e859eba6e0a9 20 \param fix A bool pointer, pointing to a boolean flag with gps fix status
MAA 21:325cb82f1838 21 \param bmag A BMAG object pointer, enabling the access to mag data directly from this class
MAA 21:325cb82f1838 22 \param gps An NMEA object pointer to a gps in this case
MAA 17:e859eba6e0a9 23 */
MAA 21:325cb82f1838 24 ErrorHandler::ErrorHandler(string * batteryvoltage, bool * fix, BMAG * bmag, NMEA * gps){
MAA 11:d3d26d0e71ea 25 errorStr1.assign(" ");
MAA 11:d3d26d0e71ea 26 errorStr2.assign(" ");
MAA 11:d3d26d0e71ea 27 currentState = NONE;
MAA 11:d3d26d0e71ea 28 memset(tmparr,'\0',10);
MAA 11:d3d26d0e71ea 29 fixptr = fix;
MAA 11:d3d26d0e71ea 30 batteryvoltageptr = batteryvoltage;
MAA 12:2b46960a5d41 31 bmagptr = bmag;
MAA 21:325cb82f1838 32 gpsPtr = gps;
MAA 12:2b46960a5d41 33 setMagTimePrompted = false;
MAA 12:2b46960a5d41 34 magPromptCounter = 0;
MAA 11:d3d26d0e71ea 35 };
MAA 11:d3d26d0e71ea 36
MAA 17:e859eba6e0a9 37 //! getLine1 is an error string getter method
MAA 17:e859eba6e0a9 38 /*!
MAA 17:e859eba6e0a9 39 This method returns the first row of input used in a display
MAA 17:e859eba6e0a9 40
MAA 17:e859eba6e0a9 41 \return errorStr1 a string containing the first display row
MAA 17:e859eba6e0a9 42
MAA 17:e859eba6e0a9 43 */
MAA 11:d3d26d0e71ea 44 string ErrorHandler::getLine1(void){
MAA 11:d3d26d0e71ea 45 return errorStr1;
MAA 11:d3d26d0e71ea 46 };
MAA 11:d3d26d0e71ea 47
MAA 17:e859eba6e0a9 48 //! getLine2 is an error string getter method
MAA 17:e859eba6e0a9 49 /*!
MAA 17:e859eba6e0a9 50 This method returns the second row of input used in a display
MAA 17:e859eba6e0a9 51
MAA 17:e859eba6e0a9 52 \return errorStr2 a string containing the second display row
MAA 17:e859eba6e0a9 53
MAA 17:e859eba6e0a9 54 */
MAA 11:d3d26d0e71ea 55 string ErrorHandler::getLine2(void){
MAA 11:d3d26d0e71ea 56 return errorStr2;
MAA 11:d3d26d0e71ea 57 };
MAA 11:d3d26d0e71ea 58
MAA 17:e859eba6e0a9 59
MAA 17:e859eba6e0a9 60 //! setErrorState is a error state setter method.
MAA 17:e859eba6e0a9 61 /*!
MAA 17:e859eba6e0a9 62 Used to set the current errorstate, and changing the display texts accordingly
MAA 17:e859eba6e0a9 63
MAA 17:e859eba6e0a9 64 \param es The errorstate needed of type ErrorState
MAA 17:e859eba6e0a9 65 */
MAA 11:d3d26d0e71ea 66 void ErrorHandler::setErrorState(ErrorState es){
MAA 22:9f5955f051f5 67
MAA 22:9f5955f051f5 68 this->currentState = es;
MAA 11:d3d26d0e71ea 69
MAA 11:d3d26d0e71ea 70 switch(currentState){
MAA 11:d3d26d0e71ea 71
MAA 22:9f5955f051f5 72 case(NONE):
MAA 24:099df3fa2b13 73 errorStr1.assign(" ");
MAA 24:099df3fa2b13 74 errorStr2.assign(" ");
MAA 11:d3d26d0e71ea 75 break;
MAA 11:d3d26d0e71ea 76
MAA 11:d3d26d0e71ea 77 case(NO_GPS):
MAA 28:ed0d29f63b55 78 errorStr1.assign("GPS Data");
MAA 28:ed0d29f63b55 79 errorStr2.assign("!Missing");
MAA 11:d3d26d0e71ea 80 break;
MAA 11:d3d26d0e71ea 81
MAA 11:d3d26d0e71ea 82 case(NO_FIX):
MAA 11:d3d26d0e71ea 83 errorStr1.assign("SetClock");
MAA 43:358e853ba2c9 84 errorStr2.assign("!on mag ");
MAA 12:2b46960a5d41 85
MAA 38:a1615de4ee64 86 if(magPromptCounter <= 30){
MAA 12:2b46960a5d41 87 magPromptCounter += 1;
MAA 12:2b46960a5d41 88 }
MAA 38:a1615de4ee64 89 if(magPromptCounter > 30){
MAA 12:2b46960a5d41 90 setMagTimePrompted = true;
MAA 12:2b46960a5d41 91 }
MAA 11:d3d26d0e71ea 92 break;
MAA 11:d3d26d0e71ea 93
MAA 11:d3d26d0e71ea 94 case(NO_MAG_DATA):
MAA 22:9f5955f051f5 95 memset(tmparr,'\0',15);
MAA 22:9f5955f051f5 96 sprintf(tmparr, "%s", gpsPtr->getCurrentTime().c_str());
MAA 21:325cb82f1838 97 errorStr1.assign("!MagData");
MAA 23:2e914b705b99 98
MAA 23:2e914b705b99 99 if(*fixptr){
MAA 23:2e914b705b99 100 errorStr2.assign(tmparr);
MAA 23:2e914b705b99 101 }
MAA 23:2e914b705b99 102 if(!(*fixptr)){
MAA 23:2e914b705b99 103 errorStr2.assign("!NoFix ");
MAA 23:2e914b705b99 104 }
MAA 11:d3d26d0e71ea 105 break;
MAA 11:d3d26d0e71ea 106
MAA 11:d3d26d0e71ea 107 case(DISPLAY_VBAT_FIX):
MAA 22:9f5955f051f5 108 memset(tmparr,'\0',15);
MAA 34:c6c5e7ec9163 109 sprintf(tmparr, "VB: %s", *(batteryvoltageptr));
MAA 11:d3d26d0e71ea 110 errorStr1.assign(tmparr);
MAA 11:d3d26d0e71ea 111
MAA 11:d3d26d0e71ea 112 if(*fixptr){
MAA 11:d3d26d0e71ea 113 errorStr2.assign("FIX: OK ");
MAA 11:d3d26d0e71ea 114 }
MAA 11:d3d26d0e71ea 115
MAA 11:d3d26d0e71ea 116 if(!(*fixptr)){
MAA 11:d3d26d0e71ea 117 errorStr2.assign("FIX:NONE");
MAA 11:d3d26d0e71ea 118 }
MAA 11:d3d26d0e71ea 119 break;
MAA 11:d3d26d0e71ea 120
MAA 11:d3d26d0e71ea 121 case(DISPLAY_MAG_MEASUREMENT):
MAA 41:d7d77ddd32c6 122 //memset(tmparr,'\0',15);
MAA 41:d7d77ddd32c6 123 errorStr1.assign("BMAG ");
MAA 41:d7d77ddd32c6 124 //errorStr1[2] = bmagptr->getMagSq()[0];
MAA 41:d7d77ddd32c6 125 //errorStr1[3] = bmagptr->getMagSq()[1];
MAA 12:2b46960a5d41 126
MAA 41:d7d77ddd32c6 127 //sprintf(tmparr, "%s",bmagptr->getMagNTStr().c_str());
MAA 41:d7d77ddd32c6 128 errorStr2.assign("Working ");
MAA 11:d3d26d0e71ea 129 break;
MAA 13:45b333983206 130
MAA 13:45b333983206 131 case(BATTERY_LOW):
MAA 13:45b333983206 132 errorStr1.assign("Battery ");
MAA 28:ed0d29f63b55 133 errorStr2.assign("!Low ");
MAA 13:45b333983206 134 break;
MAA 13:45b333983206 135
MAA 23:2e914b705b99 136 case(GPS_OVERRIDE_NEEDED):
MAA 28:ed0d29f63b55 137 errorStr1.assign("!GPS ");
MAA 24:099df3fa2b13 138 errorStr2.assign("Override");
MAA 23:2e914b705b99 139 break;
MAA 11:d3d26d0e71ea 140
MAA 11:d3d26d0e71ea 141 default:
MAA 11:d3d26d0e71ea 142 break;
MAA 11:d3d26d0e71ea 143 }
MAA 12:2b46960a5d41 144 };
MAA 12:2b46960a5d41 145
MAA 17:e859eba6e0a9 146
MAA 17:e859eba6e0a9 147 //! getMagTimePromtStatus is a prompt status flag getter method
MAA 17:e859eba6e0a9 148 /*!
MAA 17:e859eba6e0a9 149 Returns the status of the setMagTimePrompted flag, indicating if a "please set the clock on bmag" prompt has been shown on display.
MAA 17:e859eba6e0a9 150
MAA 17:e859eba6e0a9 151 \return setMagTimePrompted A bool indicating if user has been prompted to set time on mag or not.
MAA 17:e859eba6e0a9 152 */
MAA 12:2b46960a5d41 153 bool ErrorHandler::getMagTimePromtStatus(void){
MAA 22:9f5955f051f5 154 return this->setMagTimePrompted;
MAA 13:45b333983206 155 };
MAA 13:45b333983206 156
MAA 17:e859eba6e0a9 157 //! getErrorState is a method returning the current errorstate
MAA 17:e859eba6e0a9 158 /*!
MAA 17:e859eba6e0a9 159 Returns the current errorstate
MAA 17:e859eba6e0a9 160
MAA 17:e859eba6e0a9 161 \return currentState The current ErrorState
MAA 17:e859eba6e0a9 162 */
MAA 13:45b333983206 163 ErrorState ErrorHandler::getErrorState(void){
MAA 22:9f5955f051f5 164 return this->currentState;
MAA 11:d3d26d0e71ea 165 };