Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed BLE_API X_NUCLEO_IDB0XA1 MODSERIAL
COM/LOGGER.cpp@2:ca6d8d1f77d4, 2016-08-18 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |