Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Tue May 16 09:33:12 2017 +0000
Revision:
23:2e914b705b99
Parent:
22:9f5955f051f5
Child:
24:099df3fa2b13
Timer added with threads to take care of display text and states.; ; State handling thread not completely implemented yet.; ; ;

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 11:d3d26d0e71ea 73 break;
MAA 11:d3d26d0e71ea 74
MAA 11:d3d26d0e71ea 75 case(NO_GPS):
MAA 11:d3d26d0e71ea 76 errorStr1.assign("GPS data");
MAA 11:d3d26d0e71ea 77 errorStr2.assign("Missing!");
MAA 11:d3d26d0e71ea 78 break;
MAA 11:d3d26d0e71ea 79
MAA 11:d3d26d0e71ea 80 case(NO_FIX):
MAA 11:d3d26d0e71ea 81 errorStr1.assign("SetClock");
MAA 12:2b46960a5d41 82 errorStr2.assign("on mag!");
MAA 12:2b46960a5d41 83
MAA 12:2b46960a5d41 84 if(magPromptCounter <= 300){
MAA 12:2b46960a5d41 85 magPromptCounter += 1;
MAA 12:2b46960a5d41 86 }
MAA 12:2b46960a5d41 87 if(magPromptCounter > 300){
MAA 12:2b46960a5d41 88 setMagTimePrompted = true;
MAA 12:2b46960a5d41 89 }
MAA 11:d3d26d0e71ea 90 break;
MAA 11:d3d26d0e71ea 91
MAA 11:d3d26d0e71ea 92 case(NO_MAG_DATA):
MAA 22:9f5955f051f5 93 memset(tmparr,'\0',15);
MAA 22:9f5955f051f5 94 sprintf(tmparr, "%s", gpsPtr->getCurrentTime().c_str());
MAA 21:325cb82f1838 95 errorStr1.assign("!MagData");
MAA 23:2e914b705b99 96
MAA 23:2e914b705b99 97 if(*fixptr){
MAA 23:2e914b705b99 98 errorStr2.assign(tmparr);
MAA 23:2e914b705b99 99 }
MAA 23:2e914b705b99 100 if(!(*fixptr)){
MAA 23:2e914b705b99 101 errorStr2.assign("!NoFix ");
MAA 23:2e914b705b99 102 }
MAA 11:d3d26d0e71ea 103 break;
MAA 11:d3d26d0e71ea 104
MAA 11:d3d26d0e71ea 105 case(DISPLAY_VBAT_FIX):
MAA 22:9f5955f051f5 106 memset(tmparr,'\0',15);
MAA 11:d3d26d0e71ea 107 sprintf(tmparr, "VB: %s", *batteryvoltageptr);
MAA 11:d3d26d0e71ea 108 errorStr1.assign(tmparr);
MAA 11:d3d26d0e71ea 109
MAA 11:d3d26d0e71ea 110 if(*fixptr){
MAA 11:d3d26d0e71ea 111 errorStr2.assign("FIX: OK ");
MAA 11:d3d26d0e71ea 112 }
MAA 11:d3d26d0e71ea 113
MAA 11:d3d26d0e71ea 114 if(!(*fixptr)){
MAA 11:d3d26d0e71ea 115 errorStr2.assign("FIX:NONE");
MAA 11:d3d26d0e71ea 116 }
MAA 11:d3d26d0e71ea 117 break;
MAA 11:d3d26d0e71ea 118
MAA 11:d3d26d0e71ea 119 case(DISPLAY_MAG_MEASUREMENT):
MAA 22:9f5955f051f5 120 memset(tmparr,'\0',15);
MAA 12:2b46960a5d41 121 errorStr1.assign("Q: nT:");
MAA 12:2b46960a5d41 122 errorStr1[2] = bmagptr->getMagSq()[0];
MAA 12:2b46960a5d41 123 errorStr1[3] = bmagptr->getMagSq()[1];
MAA 12:2b46960a5d41 124
MAA 11:d3d26d0e71ea 125 sprintf(tmparr, "%s",bmagptr->getMagNTStr().c_str());
MAA 11:d3d26d0e71ea 126 errorStr2.assign(tmparr);
MAA 11:d3d26d0e71ea 127 break;
MAA 13:45b333983206 128
MAA 13:45b333983206 129 case(BATTERY_LOW):
MAA 13:45b333983206 130 errorStr1.assign("Battery ");
MAA 13:45b333983206 131 errorStr2.assign("Low! ");
MAA 13:45b333983206 132 break;
MAA 13:45b333983206 133
MAA 23:2e914b705b99 134 case(GPS_OVERRIDE_NEEDED):
MAA 23:2e914b705b99 135 errorStr1.assign("Override");
MAA 23:2e914b705b99 136 errorStr2.assign("GPS! ");
MAA 23:2e914b705b99 137 break;
MAA 11:d3d26d0e71ea 138
MAA 11:d3d26d0e71ea 139 default:
MAA 11:d3d26d0e71ea 140 break;
MAA 11:d3d26d0e71ea 141 }
MAA 12:2b46960a5d41 142 };
MAA 12:2b46960a5d41 143
MAA 17:e859eba6e0a9 144
MAA 17:e859eba6e0a9 145 //! getMagTimePromtStatus is a prompt status flag getter method
MAA 17:e859eba6e0a9 146 /*!
MAA 17:e859eba6e0a9 147 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 148
MAA 17:e859eba6e0a9 149 \return setMagTimePrompted A bool indicating if user has been prompted to set time on mag or not.
MAA 17:e859eba6e0a9 150 */
MAA 12:2b46960a5d41 151 bool ErrorHandler::getMagTimePromtStatus(void){
MAA 22:9f5955f051f5 152 return this->setMagTimePrompted;
MAA 13:45b333983206 153 };
MAA 13:45b333983206 154
MAA 17:e859eba6e0a9 155 //! getErrorState is a method returning the current errorstate
MAA 17:e859eba6e0a9 156 /*!
MAA 17:e859eba6e0a9 157 Returns the current errorstate
MAA 17:e859eba6e0a9 158
MAA 17:e859eba6e0a9 159 \return currentState The current ErrorState
MAA 17:e859eba6e0a9 160 */
MAA 13:45b333983206 161 ErrorState ErrorHandler::getErrorState(void){
MAA 22:9f5955f051f5 162 return this->currentState;
MAA 11:d3d26d0e71ea 163 };