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@3:13bd725bd47b, 2016-08-20 (annotated)
- Committer:
- Essenceia
- Date:
- Sat Aug 20 18:24:21 2016 +0000
- Revision:
- 3:13bd725bd47b
- Parent:
- 2:ca6d8d1f77d4
traitement de events en cours;
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 | 3:13bd725bd47b | 5 | #include "Event.h" |
| Essenceia | 2:ca6d8d1f77d4 | 6 | #define BUFFER_LENGTH 32 |
| Essenceia | 3:13bd725bd47b | 7 | |
| Essenceia | 3:13bd725bd47b | 8 | static event *Ev = event::Instance(); |
| Essenceia | 3:13bd725bd47b | 9 | |
| Essenceia | 1:8bab9152933e | 10 | Logger* Logger::_instance = NULL; |
| Essenceia | 1:8bab9152933e | 11 | |
| Essenceia | 3:13bd725bd47b | 12 | Logger::Logger() |
| Essenceia | 3:13bd725bd47b | 13 | { |
| Essenceia | 3:13bd725bd47b | 14 | serial = new MODSERIAL(SERIAL_TX, SERIAL_RX, BUFFER_LENGTH); //32 bitd long |
| Essenceia | 2:ca6d8d1f77d4 | 15 | serial->attach(&rxCallback, MODSERIAL::RxIrq); |
| Essenceia | 2:ca6d8d1f77d4 | 16 | buffer_index = 0 ; |
| Essenceia | 2:ca6d8d1f77d4 | 17 | buffer = new std::queue<char>; |
| Essenceia | 3:13bd725bd47b | 18 | new_event=false; |
| Essenceia | 3:13bd725bd47b | 19 | event_detected = false; |
| Essenceia | 2:ca6d8d1f77d4 | 20 | } |
| Essenceia | 3:13bd725bd47b | 21 | void Logger::rxCallback(MODSERIAL_IRQ_INFO *q) |
| Essenceia | 3:13bd725bd47b | 22 | { |
| Essenceia | 2:ca6d8d1f77d4 | 23 | char c =serial->getc(); |
| Essenceia | 3:13bd725bd47b | 24 | if(event_detected) { |
| Essenceia | 3:13bd725bd47b | 25 | if(c != FIN_TRAME) { |
| Essenceia | 3:13bd725bd47b | 26 | if(buffer_index < MAX_SIZE_BUFFER) { |
| Essenceia | 3:13bd725bd47b | 27 | buffer_index++; |
| Essenceia | 3:13bd725bd47b | 28 | buffer.push(c); |
| Essenceia | 3:13bd725bd47b | 29 | } |
| Essenceia | 3:13bd725bd47b | 30 | else { // une erreur c'est produite et ont n'a pas recu la fin du message |
| Essenceia | 3:13bd725bd47b | 31 | flush_buffer(); |
| Essenceia | 3:13bd725bd47b | 32 | log("Logger::rxCallback Erreur dépassement de la taille maximale du buffer sans recevoire la fin de la trame"); |
| Essenceia | 3:13bd725bd47b | 33 | event_detected = false; |
| Essenceia | 3:13bd725bd47b | 34 | } |
| Essenceia | 3:13bd725bd47b | 35 | } |
| Essenceia | 3:13bd725bd47b | 36 | else { |
| Essenceia | 3:13bd725bd47b | 37 | //on a recu la fin de la trame et ont vas reseter et envoyer le message aux gestoinaire d'event |
| Essenceia | 3:13bd725bd47b | 38 | Ev->give_buffer(&buffer); |
| Essenceia | 3:13bd725bd47b | 39 | event_detected = false; |
| Essenceia | 3:13bd725bd47b | 40 | flush_buffer(); |
| Essenceia | 3:13bd725bd47b | 41 | log("Logger::rxCallback On a transferet un buffer au gestionaire d'event aprés reception de signalement de la fin de trame"); |
| Essenceia | 3:13bd725bd47b | 42 | } |
| Essenceia | 3:13bd725bd47b | 43 | } |
| Essenceia | 3:13bd725bd47b | 44 | else { //event hesn't been detected yet |
| Essenceia | 3:13bd725bd47b | 45 | if(c == DEBUT_TRAME ) { |
| Essenceia | 3:13bd725bd47b | 46 | event_detected =true; |
| Essenceia | 3:13bd725bd47b | 47 | log("Logger::rxCallback Debut de trame detecter, ont flush le buffer par precausion "); |
| Essenceia | 3:13bd725bd47b | 48 | flush_buffer(); |
| Essenceia | 3:13bd725bd47b | 49 | } |
| Essenceia | 3:13bd725bd47b | 50 | else { |
| Essenceia | 3:13bd725bd47b | 51 | log("Logger::rxCallback Incoherant message pas de debut de trame detecter, recu : "); |
| Essenceia | 3:13bd725bd47b | 52 | log(c); |
| Essenceia | 3:13bd725bd47b | 53 | } |
| Essenceia | 3:13bd725bd47b | 54 | |
| Essenceia | 2:ca6d8d1f77d4 | 55 | } |
| Essenceia | 1:8bab9152933e | 56 | } |
| Essenceia | 1:8bab9152933e | 57 | |
| Essenceia | 3:13bd725bd47b | 58 | Logger* Logger::Instance() |
| Essenceia | 3:13bd725bd47b | 59 | { |
| Essenceia | 1:8bab9152933e | 60 | if (_instance == NULL) _instance = new Logger(); |
| Essenceia | 1:8bab9152933e | 61 | return _instance; |
| Essenceia | 1:8bab9152933e | 62 | } |
| Essenceia | 3:13bd725bd47b | 63 | |
| Essenceia | 3:13bd725bd47b | 64 | void Logger::log(std::string s) |
| Essenceia | 3:13bd725bd47b | 65 | { |
| Essenceia | 1:8bab9152933e | 66 | this->serial->printf((s).c_str()); |
| Essenceia | 1:8bab9152933e | 67 | this->serial->printf(" "); |
| Essenceia | 1:8bab9152933e | 68 | } |
| Essenceia | 3:13bd725bd47b | 69 | |
| Essenceia | 3:13bd725bd47b | 70 | void Logger::logn(std::string s) |
| Essenceia | 3:13bd725bd47b | 71 | { |
| Essenceia | 1:8bab9152933e | 72 | this->log((s+"\n\r").c_str()); |
| Essenceia | 1:8bab9152933e | 73 | } |
| Essenceia | 1:8bab9152933e | 74 | |
| Essenceia | 3:13bd725bd47b | 75 | void Logger::log(double f) |
| Essenceia | 3:13bd725bd47b | 76 | { |
| Essenceia | 1:8bab9152933e | 77 | this->serial->printf("%f",f); |
| Essenceia | 1:8bab9152933e | 78 | this->log(""); |
| Essenceia | 1:8bab9152933e | 79 | } |
| Essenceia | 3:13bd725bd47b | 80 | |
| Essenceia | 3:13bd725bd47b | 81 | void Logger::logn(double f) |
| Essenceia | 3:13bd725bd47b | 82 | { |
| Essenceia | 1:8bab9152933e | 83 | this->log(f); |
| Essenceia | 1:8bab9152933e | 84 | this->logn(""); |
| Essenceia | 1:8bab9152933e | 85 | } |
| Essenceia | 1:8bab9152933e | 86 | |
| Essenceia | 3:13bd725bd47b | 87 | void Logger::log(int i) |
| Essenceia | 3:13bd725bd47b | 88 | { |
| Essenceia | 1:8bab9152933e | 89 | this->serial->printf("%d",i); |
| Essenceia | 1:8bab9152933e | 90 | this->log(""); |
| Essenceia | 1:8bab9152933e | 91 | } |
| Essenceia | 3:13bd725bd47b | 92 | |
| Essenceia | 3:13bd725bd47b | 93 | void Logger::logn(int i) |
| Essenceia | 3:13bd725bd47b | 94 | { |
| Essenceia | 1:8bab9152933e | 95 | this->log(i); |
| Essenceia | 1:8bab9152933e | 96 | this->logn(""); |
| Essenceia | 1:8bab9152933e | 97 | } |
| Essenceia | 1:8bab9152933e | 98 | |
| Essenceia | 3:13bd725bd47b | 99 | void Logger::log(long i) |
| Essenceia | 3:13bd725bd47b | 100 | { |
| Essenceia | 1:8bab9152933e | 101 | this->serial->printf("%ld",i); |
| Essenceia | 1:8bab9152933e | 102 | this->log(""); |
| Essenceia | 1:8bab9152933e | 103 | } |
| Essenceia | 3:13bd725bd47b | 104 | |
| Essenceia | 3:13bd725bd47b | 105 | void Logger::logn(long i) |
| Essenceia | 3:13bd725bd47b | 106 | { |
| Essenceia | 1:8bab9152933e | 107 | this->log(i); |
| Essenceia | 1:8bab9152933e | 108 | this->logn(""); |
| Essenceia | 1:8bab9152933e | 109 | } |
| Essenceia | 1:8bab9152933e | 110 | string Logger::log_itos(int i) |
| Essenceia | 1:8bab9152933e | 111 | { |
| Essenceia | 3:13bd725bd47b | 112 | float v= (float) i; |
| Essenceia | 3:13bd725bd47b | 113 | char *c =(char*) malloc(sizeof(char)*((int)log10(v)+1)); |
| Essenceia | 3:13bd725bd47b | 114 | sprintf(c,"%d",i); |
| Essenceia | 1:8bab9152933e | 115 | return string(c); |
| Essenceia | 1:8bab9152933e | 116 | } |
| Essenceia | 2:ca6d8d1f77d4 | 117 | int Logger::get_buffer_index() |
| Essenceia | 3:13bd725bd47b | 118 | { |
| Essenceia | 3:13bd725bd47b | 119 | return buffer_index; |
| Essenceia | 2:ca6d8d1f77d4 | 120 | } |
| Essenceia | 2:ca6d8d1f77d4 | 121 | void Logger::flush_buffer() |
| Essenceia | 2:ca6d8d1f77d4 | 122 | { |
| Essenceia | 3:13bd725bd47b | 123 | if(buffer_index>0) { |
| Essenceia | 3:13bd725bd47b | 124 | buffer= new std::queue<char>; |
| Essenceia | 3:13bd725bd47b | 125 | buffer_index=0; |
| Essenceia | 3:13bd725bd47b | 126 | } else log("Logger::flush_buffer Erreur le buffer est déjà vide"); |
| Essenceia | 3:13bd725bd47b | 127 | } |
| Essenceia | 3:13bd725bd47b | 128 | } |