3rd Repo, trying to figure this out.

Dependencies:   LPS25H hts221

Fork of SOFT253_Template_Weather_OS_54 by Stage-1 Students SoCEM

Committer:
aburch1
Date:
Thu May 11 15:53:15 2017 +0000
Revision:
82:668b51a39148
Parent:
81:996c0a3319b4
Child:
83:0d3572a8a851
Added formatting to messages, errors now terminate the program and wait for user input to restart

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Netaphous 64:8ada3e0b2048 1 #include "CircularArray.h"
Netaphous 64:8ada3e0b2048 2 #include <stdio.h>
Netaphous 64:8ada3e0b2048 3 #include <ctype.h>
Netaphous 64:8ada3e0b2048 4 /*
Netaphous 64:8ada3e0b2048 5 Constructor
Netaphous 64:8ada3e0b2048 6 */
aburch1 81:996c0a3319b4 7 CircularArray::CircularArray(int limit, MessageLogger *newLogger)
Netaphous 64:8ada3e0b2048 8 {
Netaphous 64:8ada3e0b2048 9 maxSize = limit;
Netaphous 64:8ada3e0b2048 10 array = new Measure[maxSize];
Netaphous 64:8ada3e0b2048 11 firstValue = 0;
Netaphous 64:8ada3e0b2048 12 currentSize = 0;
aburch1 81:996c0a3319b4 13 logger = newLogger;
aburch1 81:996c0a3319b4 14 }
Netaphous 64:8ada3e0b2048 15 void CircularArray::pushValue(Measure _measure)
Netaphous 64:8ada3e0b2048 16 {
Netaphous 64:8ada3e0b2048 17 if(currentSize >= maxSize)
Netaphous 64:8ada3e0b2048 18 {
Netaphous 64:8ada3e0b2048 19 firstValue++;
Netaphous 64:8ada3e0b2048 20 currentSize--;
Netaphous 64:8ada3e0b2048 21 }
aburch1 72:ef4a4e3089c1 22 int next = nextSpace();
aburch1 72:ef4a4e3089c1 23 array[next] = _measure;
Netaphous 64:8ada3e0b2048 24 currentSize++;
Netaphous 64:8ada3e0b2048 25 }
aburch1 80:959151952153 26
aburch1 80:959151952153 27 Measure CircularArray::pullValue()
aburch1 80:959151952153 28 {
aburch1 80:959151952153 29 return array[firstValue];
aburch1 80:959151952153 30 }
aburch1 81:996c0a3319b4 31 char temp2[256];
Netaphous 65:3723d2729b68 32 void CircularArray::readX(int x)
Netaphous 64:8ada3e0b2048 33 {
Netaphous 64:8ada3e0b2048 34 if(x > currentSize)
Netaphous 64:8ada3e0b2048 35 {
Netaphous 64:8ada3e0b2048 36 x = currentSize;
aburch1 82:668b51a39148 37 snprintf(temp2, 256, "Not enough measurements taken. Printing all %i measurement(s): \r\n", x);
Netaphous 64:8ada3e0b2048 38 }
aburch1 82:668b51a39148 39 else
aburch1 82:668b51a39148 40 {
aburch1 82:668b51a39148 41 snprintf(temp2, 256, "Printing %i measurement(s): \r\n", x);
aburch1 82:668b51a39148 42 }
aburch1 82:668b51a39148 43
aburch1 82:668b51a39148 44 logger->SendMessage(temp2);
aburch1 82:668b51a39148 45
Netaphous 64:8ada3e0b2048 46 int currentElement = nextSpace() - x;
Netaphous 64:8ada3e0b2048 47 if(currentElement < 0)
Netaphous 64:8ada3e0b2048 48 {
Netaphous 64:8ada3e0b2048 49 currentElement += maxSize;
Netaphous 64:8ada3e0b2048 50 }
aburch1 79:4e6b53eb678b 51
aburch1 79:4e6b53eb678b 52 char* ptr;
Netaphous 64:8ada3e0b2048 53 for(int i = 0; i < x; i++)
Netaphous 64:8ada3e0b2048 54 {
aburch1 79:4e6b53eb678b 55 ptr = array[currentElement].date.ToString();
aburch1 82:668b51a39148 56 snprintf(temp2, 256, "%i. %s, T: %f, H: %f, P: %f\n\r",i + 1,ptr , array[currentElement].temperature, array[currentElement].humidity, array[currentElement].pressure);
aburch1 81:996c0a3319b4 57 logger->SendMessage(temp2);
Netaphous 64:8ada3e0b2048 58 currentElement++;
Netaphous 64:8ada3e0b2048 59 currentElement = currentElement % maxSize;
Netaphous 64:8ada3e0b2048 60 }
Netaphous 64:8ada3e0b2048 61 }
Netaphous 65:3723d2729b68 62 void CircularArray::readAll()
Netaphous 64:8ada3e0b2048 63 {
aburch1 82:668b51a39148 64 logger->SendMessage("Printing all measurementss performed so far: \r\n");
aburch1 82:668b51a39148 65
Netaphous 65:3723d2729b68 66 readX(currentSize);
Netaphous 64:8ada3e0b2048 67 }
Netaphous 64:8ada3e0b2048 68 void CircularArray::deleteX(int x)
Netaphous 64:8ada3e0b2048 69 {
Netaphous 64:8ada3e0b2048 70 if(x >= maxSize)
Netaphous 64:8ada3e0b2048 71 {
Netaphous 64:8ada3e0b2048 72 deleteAll();
Netaphous 64:8ada3e0b2048 73 }
Netaphous 64:8ada3e0b2048 74 else
Netaphous 64:8ada3e0b2048 75 {
Netaphous 64:8ada3e0b2048 76 firstValue += x;
Netaphous 64:8ada3e0b2048 77 currentSize -= x;
Netaphous 64:8ada3e0b2048 78 firstValue = firstValue % maxSize;
Netaphous 64:8ada3e0b2048 79 }
Netaphous 64:8ada3e0b2048 80 }
Netaphous 64:8ada3e0b2048 81 void CircularArray::deleteAll()
Netaphous 64:8ada3e0b2048 82 {
aburch1 82:668b51a39148 83 snprintf(temp2, 256, "Deleted %i records.", currentSize);
aburch1 82:668b51a39148 84 logger->SendMessage(temp2);
Netaphous 64:8ada3e0b2048 85 currentSize = 0;
aburch1 82:668b51a39148 86
Netaphous 64:8ada3e0b2048 87 }
Netaphous 64:8ada3e0b2048 88 int CircularArray::getSize()
Netaphous 64:8ada3e0b2048 89 {
Netaphous 64:8ada3e0b2048 90 return currentSize;
Netaphous 64:8ada3e0b2048 91 }
Netaphous 64:8ada3e0b2048 92 int CircularArray::nextSpace()
Netaphous 64:8ada3e0b2048 93 {
Netaphous 64:8ada3e0b2048 94 int nextSpace = firstValue + currentSize;
Netaphous 64:8ada3e0b2048 95 nextSpace = nextSpace % maxSize;
Netaphous 64:8ada3e0b2048 96 return nextSpace;
Netaphous 64:8ada3e0b2048 97 }