#include #include "pico/platform/panic.h" #define NB_MAX_CDC_CONNEXION 10 #define INVALID_ID ((char)-1) struct log_buffer_t{ char idx; char copy_active; char tampon[1020]; char log_dispo[1020]; unsigned int index_tampon; }log_buffer[10]; static struct log_buffer_t * get_buffer(const char idx); static struct log_buffer_t * get_buffer(const char idx){ for (int i=0; iidx = INVALID_ID; } void log_analyse_input_string(const char idx, const char * input_data, unsigned int str_len){ // On charge les données dans le tampon // Si on a un message complet, on charge dans log dispo (s'il y a la place) struct log_buffer_t * p_log_bufffer; p_log_bufffer = get_buffer(idx); for(int i=0; i< str_len; i++){ if(input_data[i] == '>'){ p_log_bufffer->copy_active = 1; } if(p_log_bufffer->copy_active == 1){ p_log_bufffer->tampon[p_log_bufffer->index_tampon] = input_data[i]; p_log_bufffer->index_tampon++; if(input_data[i] == '\n'){ p_log_bufffer->copy_active = 0; p_log_bufffer->tampon[p_log_bufffer->index_tampon] = '\0'; strcat(p_log_bufffer->log_dispo, p_log_bufffer->tampon); p_log_bufffer->index_tampon=0; } } } } // On renvoi la chaine et on remet log_dispo à 0; void log_get(const char idx, char * chaine){ struct log_buffer_t * p_log_bufffer; p_log_bufffer = get_buffer(idx); if(p_log_bufffer == NULL){ chaine[0] = '\0'; return; } strcpy(chaine, p_log_bufffer->log_dispo); p_log_bufffer->log_dispo[0] = '\0'; }