trabalho final

Dependencies:   X_NUCLEO_IKS01A1-f255a2c75ecb mbed-rtos mbed

Committer:
Jacinta
Date:
Wed May 18 11:40:30 2016 +0000
Revision:
37:886dcde018ad
Parent:
36:0e30191d7db6
commited revision

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