Julia DESMAZES / Mbed 2 deprecated Hexapode

Dependencies:   mbed BLE_API X_NUCLEO_IDB0XA1 MODSERIAL

Committer:
Essenceia
Date:
Thu Aug 18 14:29:47 2016 +0000
Revision:
2:ca6d8d1f77d4
Parent:
1:8bab9152933e
Child:
3:13bd725bd47b
Startting to build main loop;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Essenceia 1:8bab9152933e 1 #include "LOGGER.h"
Essenceia 1:8bab9152933e 2 #include <stdio.h>
Essenceia 1:8bab9152933e 3 #include <cmath>
Essenceia 1:8bab9152933e 4 #include <cstdlib>
Essenceia 2:ca6d8d1f77d4 5 #define BUFFER_LENGTH 32
Essenceia 1:8bab9152933e 6 Logger* Logger::_instance = NULL;
Essenceia 1:8bab9152933e 7
Essenceia 1:8bab9152933e 8 Logger::Logger() {
Essenceia 2:ca6d8d1f77d4 9 serial = new MODSERIAL(SERIAL_TX, SERIAL_RX, BUFFER_LENGTH); //32 bitd long
Essenceia 2:ca6d8d1f77d4 10 serial->attach(&rxCallback, MODSERIAL::RxIrq);
Essenceia 2:ca6d8d1f77d4 11 buffer_index = 0 ;
Essenceia 2:ca6d8d1f77d4 12 buffer = new std::queue<char>;
Essenceia 2:ca6d8d1f77d4 13 }
Essenceia 2:ca6d8d1f77d4 14 void Logger::rxCallback(MODSERIAL_IRQ_INFO *q) {
Essenceia 2:ca6d8d1f77d4 15 char c =serial->getc();
Essenceia 2:ca6d8d1f77d4 16 if(c>='0'&&c<='9')
Essenceia 2:ca6d8d1f77d4 17 {
Essenceia 2:ca6d8d1f77d4 18 if(buffer_index < 32 )
Essenceia 2:ca6d8d1f77d4 19 else{ buffer_index = 0;
Essenceia 2:ca6d8d1f77d4 20 buffer= new std::queue<char>;
Essenceia 2:ca6d8d1f77d4 21 }
Essenceia 2:ca6d8d1f77d4 22 // il nous reste de la place dans le buffer
Essenceia 2:ca6d8d1f77d4 23 buffer_index++;
Essenceia 2:ca6d8d1f77d4 24 buffer.push(c);
Essenceia 2:ca6d8d1f77d4 25 }
Essenceia 2:ca6d8d1f77d4 26 }
Essenceia 1:8bab9152933e 27 }
Essenceia 1:8bab9152933e 28
Essenceia 1:8bab9152933e 29 Logger* Logger::Instance() {
Essenceia 1:8bab9152933e 30 if (_instance == NULL) _instance = new Logger();
Essenceia 1:8bab9152933e 31 return _instance;
Essenceia 1:8bab9152933e 32 }
Essenceia 1:8bab9152933e 33
Essenceia 1:8bab9152933e 34 void Logger::log(std::string s) {
Essenceia 1:8bab9152933e 35 this->serial->printf((s).c_str());
Essenceia 1:8bab9152933e 36 this->serial->printf(" ");
Essenceia 1:8bab9152933e 37 }
Essenceia 1:8bab9152933e 38
Essenceia 1:8bab9152933e 39 void Logger::logn(std::string s){
Essenceia 1:8bab9152933e 40 this->log((s+"\n\r").c_str());
Essenceia 1:8bab9152933e 41 }
Essenceia 1:8bab9152933e 42
Essenceia 1:8bab9152933e 43 void Logger::log(double f) {
Essenceia 1:8bab9152933e 44 this->serial->printf("%f",f);
Essenceia 1:8bab9152933e 45 this->log("");
Essenceia 1:8bab9152933e 46 }
Essenceia 1:8bab9152933e 47
Essenceia 1:8bab9152933e 48 void Logger::logn(double f){
Essenceia 1:8bab9152933e 49 this->log(f);
Essenceia 1:8bab9152933e 50 this->logn("");
Essenceia 1:8bab9152933e 51 }
Essenceia 1:8bab9152933e 52
Essenceia 1:8bab9152933e 53 void Logger::log(int i) {
Essenceia 1:8bab9152933e 54 this->serial->printf("%d",i);
Essenceia 1:8bab9152933e 55 this->log("");
Essenceia 1:8bab9152933e 56 }
Essenceia 1:8bab9152933e 57
Essenceia 1:8bab9152933e 58 void Logger::logn(int i){
Essenceia 1:8bab9152933e 59 this->log(i);
Essenceia 1:8bab9152933e 60 this->logn("");
Essenceia 1:8bab9152933e 61 }
Essenceia 1:8bab9152933e 62
Essenceia 1:8bab9152933e 63 void Logger::log(long i) {
Essenceia 1:8bab9152933e 64 this->serial->printf("%ld",i);
Essenceia 1:8bab9152933e 65 this->log("");
Essenceia 1:8bab9152933e 66 }
Essenceia 1:8bab9152933e 67
Essenceia 1:8bab9152933e 68 void Logger::logn(long i){
Essenceia 1:8bab9152933e 69 this->log(i);
Essenceia 1:8bab9152933e 70 this->logn("");
Essenceia 1:8bab9152933e 71 }
Essenceia 1:8bab9152933e 72 string Logger::log_itos(int i)
Essenceia 1:8bab9152933e 73 {
Essenceia 1:8bab9152933e 74 float v= (float) i;
Essenceia 1:8bab9152933e 75 char *c =(char*) malloc(sizeof(char)*((int)log10(v)+1));
Essenceia 1:8bab9152933e 76 sprintf(c,"%d",i);
Essenceia 1:8bab9152933e 77 return string(c);
Essenceia 1:8bab9152933e 78 }
Essenceia 2:ca6d8d1f77d4 79 int Logger::get_buffer_index()
Essenceia 2:ca6d8d1f77d4 80 {return buffer_index;
Essenceia 2:ca6d8d1f77d4 81 }
Essenceia 2:ca6d8d1f77d4 82 void Logger::flush_buffer()
Essenceia 2:ca6d8d1f77d4 83 {
Essenceia 2:ca6d8d1f77d4 84 if(buffer_index>0)
Essenceia 2:ca6d8d1f77d4 85 {
Essenceia 2:ca6d8d1f77d4 86 buffer= new std::queue<char>;
Essenceia 2:ca6d8d1f77d4 87 buffer_index=0;
Essenceia 2:ca6d8d1f77d4 88 }
Essenceia 2:ca6d8d1f77d4 89 else log("Logger::flush_buffer Erreur le buffer est déjà vide");
Essenceia 2:ca6d8d1f77d4 90 }
Essenceia 2:ca6d8d1f77d4 91 }