trabalho final

Dependencies:   X_NUCLEO_IKS01A1-f255a2c75ecb mbed-rtos mbed

Committer:
nlsantos
Date:
Tue May 17 21:59:20 2016 +0000
Revision:
25:2197b8bb930c
Parent:
21:849e5636076e
Child:
30:b1d50b25d87e
Child:
31:8bbdfea60151
COMMENTS COMPLETED

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