Bmag incl gps rettelse

Dependencies:   mbed WDT MODSERIAL BME280

Committer:
MAA
Date:
Thu May 11 13:42:32 2017 +0000
Revision:
21:325cb82f1838
Parent:
17:e859eba6e0a9
Child:
22:9f5955f051f5
Corrected crc value calculation failure; Corrected error with sps lines containing extra carriage returns and newlines.;

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