trabalho final

Dependencies:   X_NUCLEO_IKS01A1-f255a2c75ecb mbed-rtos mbed

Committer:
Jacinta
Date:
Wed May 18 11:10:28 2016 +0000
Revision:
36:0e30191d7db6
Parent:
35:34bbca276f99
Child:
37:886dcde018ad
....

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