//TemperatureRecorder class //Written by Napoleon Leoni, February 2014 //This class takes a pointer to an LM75B sensor on the MBED //application board and reads it temperature value, keeps track //of the max and min values (since a last reset of the values) and also //keeps a circular buffer of recorded temperature values
temperatureRecorder.cpp
- Committer:
- nleoni
- Date:
- 2014-02-13
- Revision:
- 0:aca019487653
- Child:
- 1:8ec88bb8425f
File content as of revision 0:aca019487653:
//TemperatureRecorder class //Written by Napoleon Leoni, February 2014 //This class takes a pointer to an LM75B sensor //and reads it temperature value, keeps track of the max and //min values (since a last reset of the values) and also keeps //a circular buffer of recorded temperature values //***************************** TESTING ********************************************************// // TEST TEST DESCRIPTION STATUS // // 1 Time display is inceremented in seconds and date shown PASS // // corresponds to date set in code // // 2 Max temperature displayed is highest reached PASS // // during a heating event (finger touch) // // 3 Min Temperature displayed is lowest reached PASS // // during a cooling event // // 4 Changing from degrees C to degress F and back retains PASS // // Max and min values and displays proper conversion // //**********************************************************************************************// #include "temperatureRecorder.h" //temperature Recorder class definition //default constructor, sets default buffer size to max temperatureRecorder::temperatureRecorder(){ //set size of circular buffer for temperature history this->recordingBufferSize=maxRecordingBufferSize; this->sensorValid=false; this->resetTemperatureFlag=true; } //**********************************************************************************************// // temperatureRecorder::temperatureRecorder(int bufferSize,LM75B *ptrTsensor) // // Constructor with buffer size specified and ptr to temperature sensor object // // Inputs: bufferSize integer, buffer size for circular buffer use to record temperatures // // limited to max value set in MAXRECORDINGBUFFER, internally enforced // // no error or warning displayed // // *ptrTsensor pointer to LM75B sensor object, if sensor is valid temperature // // readings can be made, otherwise the object is still created but // // temperatures are returned as zero. // //**********************************************************************************************// temperatureRecorder::temperatureRecorder(int bufferSize,LM75B *ptrTsensor){ this->sensorValid=false; this->resetTemperatureFlag=true; if(bufferSize <= this->maxRecordingBufferSize){ this->recordingBufferSize=bufferSize; } else { this->recordingBufferSize=maxRecordingBufferSize; //TODO return error message, but to where? } this->tsensor=ptrTsensor; //Check if sensor is valid if (this->tsensor->open()) { this->sensorValid=true; this->makeReading(); } else { //TODO: how to return error condition here } } //**********************************************************************************************// // void temperatureRecorder::makeReading(void){ // // Makes a temperature reading from the LM75B, stores the reading in the appropiate units // // in the object's member this->currentTemperature and updates the maxTemperature and // // minTemperature // // Inputs: void // //**********************************************************************************************// void temperatureRecorder::makeReading(void){ if(this->sensorValid){ this->currentTemperature=this->tsensor->temp(); //check if Trecorder is set in farehnheit if so make the conversion if(this->temperatureInFarenheit) this->currentTemperature=convertToFarenheit(this->currentTemperature); //TODO store temperature into buffer if(this->resetTemperatureFlag){ //reset max an min values this->maxTemperature=this->currentTemperature; this->minTemperature=this->currentTemperature; this->resetTemperatureFlag=false; } else { //compare current temperature to stored esxtremes,replace if neccesary if((this->currentTemperature) > (this->maxTemperature)) this->maxTemperature=this->currentTemperature; if((this->currentTemperature) < (this->minTemperature)) this->minTemperature=this->currentTemperature; } } }//end of temperatureRecorder::makeReading() //**********************************************************************************************// // void temperatureRecorder::getTemperature(void){ // // returns this->currentTemperature (last reading made) in the set units // // if the sensor is not valid returns 0 // // Inputs: void // //**********************************************************************************************// float temperatureRecorder::getTemperature(void){ if(this->sensorValid){ return this->currentTemperature; } else { return 0; } } //**********************************************************************************************// // void temperatureRecorder::getMaxTemperature(void){ // // returns this->maxTemperature (last reading made) in the set units // // if the sensor is not valid returns 0 // // Inputs: void // //**********************************************************************************************// float temperatureRecorder::getMaxTemperature(void){ if(this->sensorValid){ return this->maxTemperature; } else { return 0; } } //**********************************************************************************************// // void temperatureRecorder::getMinTemperature(void){ // // returns this->minTemperature (last reading made) in the set units // // if the sensor is not valid returns 0 // // Inputs: void // //**********************************************************************************************// float temperatureRecorder::getMinTemperature(void){ if(this->sensorValid){ return this->minTemperature; } else { return 0; } } //**********************************************************************************************// // void temperatureRecorder::resetTemperatureExtremes(void){ // // sets an object internal flag that will trigger a reset of the Max and Min Temepratures // // recorded when the next reading is made from temperature sensor // // Inputs: void // //**********************************************************************************************// void temperatureRecorder::resetTemperatureExtremes(void){ this->resetTemperatureFlag=true; } //**********************************************************************************************// // void temperatureRecorder::setTemperatureToCelsius(void){ // // sets all recorded values to celsius and converts all future readings as well // // Inputs: void // //**********************************************************************************************// void temperatureRecorder::setTemperatureToCelsius(void){ if(this->temperatureInFarenheit){ this->temperatureInFarenheit=false; this->currentTemperature=this->convertToCelsius(this->currentTemperature); this->maxTemperature=this->convertToCelsius(this->maxTemperature); this->minTemperature=this->convertToCelsius(this->minTemperature); } } //**********************************************************************************************// // void temperatureRecorder::setTemperatureToFarenheit(void){ // // sets all recorded values to farenheit and converts all future readings as well // // Inputs: void // //**********************************************************************************************// void temperatureRecorder::setTemperatureToFarenheit(void){ if(!this->temperatureInFarenheit){ this->temperatureInFarenheit=true; this->currentTemperature=this->convertToFarenheit(this->currentTemperature); this->maxTemperature=this->convertToFarenheit(this->maxTemperature); this->minTemperature=this->convertToFarenheit(this->minTemperature); } } //**********************************************************************************************// // void temperatureRecorder::convertToCelsius(void){ // // returns a float resulting from converting farenheit to celcius // // Inputs: float Tfarenheit....Input Temperature in farenheit to be converted to Celsius // // //**********************************************************************************************// float temperatureRecorder::convertToCelsius(float Tfarenheit){ float Tc; Tc=(Tfarenheit-32.0)*5.0/9.0; return Tc; } //**********************************************************************************************// // void temperatureRecorder::convertToFarenheit(void){ // // returns a float resulting from converting celcius to farenheit // // Inputs: float Tcelsius....Input Temperature in Celsius to be converted to farenheit // // //**********************************************************************************************// float temperatureRecorder::convertToFarenheit(float Tcelsius){ float Tf; Tf=(Tcelsius*9.0/5.0)+32.0; return Tf; } //**********************************************************************************************// // void temperatureRecorder::isTemperatureInFarenheit(void){ // // returns a BOOL value which is true if the current units are farenheit otherwise false // // Inputs: void // //**********************************************************************************************// bool temperatureRecorder::isTemperatureInFarenheit(void){ return this->temperatureInFarenheit; }