trabalho final

Dependencies:   X_NUCLEO_IKS01A1-f255a2c75ecb mbed-rtos mbed

Committer:
Jacinta
Date:
Tue May 17 21:19:57 2016 +0000
Revision:
21:849e5636076e
Parent:
20:014a808b3ea2
Child:
25:2197b8bb930c
Child:
26:3aad7d411eb0
Sampling done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jacinta 0:1eaebb55408a 1 #include "userMethods.h"
Jacinta 0:1eaebb55408a 2 #include "sensor.h"
Jacinta 0:1eaebb55408a 3 #include <cstring>
Jacinta 0:1eaebb55408a 4 #include <ctime>
Jacinta 0:1eaebb55408a 5 #include <stdexcept>
Jacinta 2:0b8065489409 6 #include <vector>
Jacinta 7:ed4a10ebe720 7
Jacinta 7:ed4a10ebe720 8 vector<log_data> * UserMethods::v;
Jacinta 7:ed4a10ebe720 9 int * UserMethods::n;
Jacinta 15:a72b66e1f473 10 ExpansionBoard * UserMethods::e;
Jacinta 21:849e5636076e 11 bool UserMethods::flag;
Jacinta 0:1eaebb55408a 12
Jacinta 21:849e5636076e 13 void UserMethods::readAllData(const void*)
Jacinta 21:849e5636076e 14 {
Jacinta 7:ed4a10ebe720 15 vector<log_data> vector = *v;
Jacinta 21:849e5636076e 16
Jacinta 21:849e5636076e 17 if(flag) {
Jacinta 21:849e5636076e 18 printf("Entered in readAllData");
Jacinta 21:849e5636076e 19 }
Jacinta 2:0b8065489409 20 //TODO Serial not working
Jacinta 2:0b8065489409 21 //Serial pc(USBTX, USBRX);
Jacinta 2:0b8065489409 22 //pc.baud(115200); //For fast sampling rates
Jacinta 2:0b8065489409 23 char buffer[32];
Jacinta 21:849e5636076e 24
Jacinta 2:0b8065489409 25 //.csv header
Jacinta 21:849e5636076e 26 if(flag) {
Jacinta 21:849e5636076e 27 printf("Sample_Date,HTS221_Temp,LPS25H_Press,HTS221_Hum\n\r");
Jacinta 21:849e5636076e 28 }
Jacinta 7:ed4a10ebe720 29 for(int i = 0; i < vector.size(); i++)
Jacinta 2:0b8065489409 30 //TODO Add time here and read n
Jacinta 2:0b8065489409 31 //.csv friendly format for logging
Jacinta 7:ed4a10ebe720 32 printf("%s,%7s°C,%smbar,%s%%\n\r", ctime(&vector[i].date), ExpansionBoard::printDouble(buffer, vector[i].tempCelsius, 2),
Jacinta 21:849e5636076e 33 ExpansionBoard::printDouble(buffer, vector[i].pressure, 2), ExpansionBoard::printDouble(buffer, vector[i].humidity, 2));
Jacinta 0:1eaebb55408a 34 }
Jacinta 0:1eaebb55408a 35
Jacinta 21:849e5636076e 36 void UserMethods::readNData(const void*)
Jacinta 21:849e5636076e 37 {
Jacinta 7:ed4a10ebe720 38 vector<log_data> vector = *v;
Jacinta 7:ed4a10ebe720 39 int num = *n;
Jacinta 21:849e5636076e 40
Jacinta 2:0b8065489409 41 //Serial pc(USBTX, USBRX);
Jacinta 2:0b8065489409 42 //pc.baud(115200);
Jacinta 21:849e5636076e 43 if(flag) {
Jacinta 21:849e5636076e 44 printf("Sample_Date,HTS221_Temp,LPS25H_Press,HTS221_Hum\n\r");
Jacinta 21:849e5636076e 45 }
Jacinta 2:0b8065489409 46 char buffer[32];
Jacinta 7:ed4a10ebe720 47 for(int i = vector.size()-num-1; i < vector.size(); i++)
Jacinta 7:ed4a10ebe720 48 printf("%s,%7s°C,%smbar,%s%%\n\r", ctime(&vector[i].date), ExpansionBoard::printDouble(buffer, vector[i].tempCelsius, 2),
Jacinta 21:849e5636076e 49 ExpansionBoard::printDouble(buffer, vector[i].pressure, 2), ExpansionBoard::printDouble(buffer, vector[i].humidity, 2));
Jacinta 0:1eaebb55408a 50 }
Jacinta 0:1eaebb55408a 51
Jacinta 21:849e5636076e 52 int UserMethods::deleteAllData(const void*)
Jacinta 21:849e5636076e 53 {
Jacinta 21:849e5636076e 54 vector<log_data> vector = *v;
Jacinta 15:a72b66e1f473 55 int num = vector.size();
Jacinta 15:a72b66e1f473 56 ExpansionBoard sensor = *e;
Jacinta 21:849e5636076e 57
Jacinta 21:849e5636076e 58 for(int i = 0; i < vector.size(); i++) {
Jacinta 15:a72b66e1f473 59 osEvent evt = sensor.mail_box.get();
Jacinta 15:a72b66e1f473 60 if (evt.status == osEventMail) {
Jacinta 21:849e5636076e 61 log_data *log = (log_data*)evt.value.p;
Jacinta 21:849e5636076e 62 sensor.mail_box.free(log);
Jacinta 15:a72b66e1f473 63 }
Jacinta 15:a72b66e1f473 64 }
Jacinta 21:849e5636076e 65
Jacinta 21:849e5636076e 66 vector.clear();
Jacinta 21:849e5636076e 67
Jacinta 15:a72b66e1f473 68 return num;
Jacinta 15:a72b66e1f473 69 }
Jacinta 15:a72b66e1f473 70
Jacinta 21:849e5636076e 71 int UserMethods::deleteNData(const void*)
Jacinta 21:849e5636076e 72 {
Jacinta 21:849e5636076e 73 vector<log_data> vector = *v;
Jacinta 21:849e5636076e 74 int num = (int)vector.size();
Jacinta 15:a72b66e1f473 75 int nOfRecords = *n;
Jacinta 15:a72b66e1f473 76 ExpansionBoard sensor = *e;
Jacinta 21:849e5636076e 77
Jacinta 21:849e5636076e 78 if(nOfRecords >= num) {
Jacinta 15:a72b66e1f473 79 //nOfRecords = UserMethods::deleteAllData;
Jacinta 15:a72b66e1f473 80 return nOfRecords;
Jacinta 21:849e5636076e 81 } else {
Jacinta 21:849e5636076e 82 for(int i = 0; i < nOfRecords; i++) {
Jacinta 15:a72b66e1f473 83 osEvent evt = sensor.mail_box.get();
Jacinta 15:a72b66e1f473 84 if (evt.status == osEventMail) {
Jacinta 21:849e5636076e 85 log_data *log = (log_data*)evt.value.p;
Jacinta 21:849e5636076e 86 sensor.mail_box.free(log);
Jacinta 21:849e5636076e 87 }
Jacinta 21:849e5636076e 88 }
Jacinta 15:a72b66e1f473 89 //Erases the first n elements
Jacinta 21:849e5636076e 90 //vector.erase(v.begin(), v.begin() + nOfRecords);
Jacinta 15:a72b66e1f473 91 }
Jacinta 21:849e5636076e 92
Jacinta 15:a72b66e1f473 93 return nOfRecords;
Jacinta 15:a72b66e1f473 94 }
Jacinta 15:a72b66e1f473 95
Jacinta 21:849e5636076e 96 void UserMethods::logging(const void*)
Jacinta 21:849e5636076e 97 {
Jacinta 21:849e5636076e 98 return;
Jacinta 21:849e5636076e 99 }
Jacinta 7:ed4a10ebe720 100
Jacinta 21:849e5636076e 101 UserMethods::UserMethods(vector<log_data> vector, int num, ExpansionBoard sensor, bool lFlag)
Jacinta 21:849e5636076e 102 {
Jacinta 7:ed4a10ebe720 103 v = &vector;
Jacinta 7:ed4a10ebe720 104 n = &num;
Jacinta 15:a72b66e1f473 105 e = &sensor;
Jacinta 20:014a808b3ea2 106 flag = &lFlag;
Jacinta 7:ed4a10ebe720 107 }