Récupération du Log après coup + peaufinage des tests et du code
This commit is contained in:
parent
3284db23b6
commit
654425ad41
17
Log.c
17
Log.c
@ -6,7 +6,7 @@
|
||||
struct log_message_storage{
|
||||
struct Log_message_data message;
|
||||
struct log_message_storage * next;
|
||||
} * log_message_storage_envoi, log_message_storage_premier, *log_message_storage_courant;
|
||||
} * log_message_envoi, log_message_storage_premier, *log_message_storage_courant;
|
||||
|
||||
uint log_error = 0;
|
||||
|
||||
@ -20,7 +20,7 @@ void Log_init(void){
|
||||
log_message_storage_premier.next = NULL;
|
||||
|
||||
log_message_storage_courant = &log_message_storage_premier;
|
||||
log_message_storage_envoi = &log_message_storage_premier;
|
||||
log_message_envoi = &log_message_storage_premier;
|
||||
|
||||
}
|
||||
|
||||
@ -55,11 +55,11 @@ void Log_message(char * message, enum Log_level log_level){
|
||||
/// @brief Read messages in cache, store them and send them through the serial connection
|
||||
void Log_gestion(){
|
||||
// Envoi 1 message par la liaison série
|
||||
if(log_message_storage_envoi->next != NULL){
|
||||
log_message_storage_envoi = log_message_storage_envoi->next;
|
||||
envoi_message(log_message_storage_envoi->message);
|
||||
if(log_message_envoi->next != NULL){
|
||||
log_message_envoi = log_message_envoi->next;
|
||||
envoi_message(log_message_envoi->message);
|
||||
// Si on est à la fin des messages, en envoie le statut de la fonction Log
|
||||
if(log_message_storage_envoi->next == NULL){
|
||||
if(log_message_envoi->next == NULL){
|
||||
if(log_error & LOG_ERROR_MEMORY_FULL){
|
||||
printf("LOG ERROR : Memoire pleine !\n");
|
||||
}
|
||||
@ -67,6 +67,11 @@ void Log_gestion(){
|
||||
}
|
||||
}
|
||||
|
||||
/// @brief Renvoie l'intégralité du journal de log. La fonction Log_gestion() doit être appelée continuellement pour que cette fonction fonctionne.
|
||||
void Log_get_full_log(){
|
||||
log_message_envoi = &log_message_storage_premier;
|
||||
}
|
||||
|
||||
void envoi_message(struct Log_message_data message){
|
||||
printf("%u ms:%s\n", message.timestamp, message.message);
|
||||
}
|
||||
|
2
Log.h
2
Log.h
@ -3,7 +3,6 @@
|
||||
#define LOG_MAX_MESSAGE_SIZE 64
|
||||
|
||||
#define LOG_ERROR_MEMORY_FULL 1
|
||||
#define LOG_ERROR_CACHE_OVERFLOW 2
|
||||
|
||||
enum Log_level{
|
||||
TELEPLOT, TRACE, DEBUG, INFO, WARN, ERROR, FATAL
|
||||
@ -18,3 +17,4 @@ struct Log_message_data{
|
||||
void Log_init(void);
|
||||
void Log_gestion(void);
|
||||
void Log_message(char * message, enum Log_level log_level);
|
||||
void Log_get_full_log();
|
11
Test_log.c
11
Test_log.c
@ -28,6 +28,7 @@ int test_log(void){
|
||||
printf("A : 1 message\n");
|
||||
printf("B : 9 messages d'affilés\n");
|
||||
printf("C : 100 messages à 100 µs d'intervalle\n");
|
||||
printf("D : Récupération du log stocké\n");
|
||||
printf("Q : Quitter\n");
|
||||
lettre = getchar_timeout_us(TEST_TIMEOUT_US);
|
||||
stdio_flush();
|
||||
@ -46,7 +47,7 @@ int test_log(void){
|
||||
case 'b':
|
||||
printf("B : 9 messages d'affilés\n");
|
||||
for(int i=0; i<9; i++){
|
||||
sprintf(message, "Test message %d/9", i);
|
||||
sprintf(message, "Test message %d/9", i+1);
|
||||
Log_message(message, DEBUG);
|
||||
}
|
||||
break;
|
||||
@ -55,12 +56,18 @@ int test_log(void){
|
||||
case 'c':
|
||||
printf("C : 100 messages à 100 µs d'intervalle\n");
|
||||
for(int i=0; i<100; i++){
|
||||
sprintf(message, "Test message %d/100", i);
|
||||
sprintf(message, "Test message %d/100", i+1);
|
||||
Log_message(message, DEBUG);
|
||||
sleep_us(100);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
case 'd':
|
||||
printf("D : Récupération du log stocké\n");
|
||||
Log_get_full_log();
|
||||
break;
|
||||
|
||||
case 'Q':
|
||||
case 'q':
|
||||
printf("Q : Quitter\n");
|
||||
|
Loading…
Reference in New Issue
Block a user