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_storage{
|
||||||
struct Log_message_data message;
|
struct Log_message_data message;
|
||||||
struct log_message_storage * next;
|
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;
|
uint log_error = 0;
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ void Log_init(void){
|
|||||||
log_message_storage_premier.next = NULL;
|
log_message_storage_premier.next = NULL;
|
||||||
|
|
||||||
log_message_storage_courant = &log_message_storage_premier;
|
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
|
/// @brief Read messages in cache, store them and send them through the serial connection
|
||||||
void Log_gestion(){
|
void Log_gestion(){
|
||||||
// Envoi 1 message par la liaison série
|
// Envoi 1 message par la liaison série
|
||||||
if(log_message_storage_envoi->next != NULL){
|
if(log_message_envoi->next != NULL){
|
||||||
log_message_storage_envoi = log_message_storage_envoi->next;
|
log_message_envoi = log_message_envoi->next;
|
||||||
envoi_message(log_message_storage_envoi->message);
|
envoi_message(log_message_envoi->message);
|
||||||
// Si on est à la fin des messages, en envoie le statut de la fonction Log
|
// 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){
|
if(log_error & LOG_ERROR_MEMORY_FULL){
|
||||||
printf("LOG ERROR : Memoire pleine !\n");
|
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){
|
void envoi_message(struct Log_message_data message){
|
||||||
printf("%u ms:%s\n", message.timestamp, message.message);
|
printf("%u ms:%s\n", message.timestamp, message.message);
|
||||||
}
|
}
|
||||||
|
4
Log.h
4
Log.h
@ -3,7 +3,6 @@
|
|||||||
#define LOG_MAX_MESSAGE_SIZE 64
|
#define LOG_MAX_MESSAGE_SIZE 64
|
||||||
|
|
||||||
#define LOG_ERROR_MEMORY_FULL 1
|
#define LOG_ERROR_MEMORY_FULL 1
|
||||||
#define LOG_ERROR_CACHE_OVERFLOW 2
|
|
||||||
|
|
||||||
enum Log_level{
|
enum Log_level{
|
||||||
TELEPLOT, TRACE, DEBUG, INFO, WARN, ERROR, FATAL
|
TELEPLOT, TRACE, DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
@ -17,4 +16,5 @@ struct Log_message_data{
|
|||||||
|
|
||||||
void Log_init(void);
|
void Log_init(void);
|
||||||
void Log_gestion(void);
|
void Log_gestion(void);
|
||||||
void Log_message(char * message, enum Log_level log_level);
|
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("A : 1 message\n");
|
||||||
printf("B : 9 messages d'affilés\n");
|
printf("B : 9 messages d'affilés\n");
|
||||||
printf("C : 100 messages à 100 µs d'intervalle\n");
|
printf("C : 100 messages à 100 µs d'intervalle\n");
|
||||||
|
printf("D : Récupération du log stocké\n");
|
||||||
printf("Q : Quitter\n");
|
printf("Q : Quitter\n");
|
||||||
lettre = getchar_timeout_us(TEST_TIMEOUT_US);
|
lettre = getchar_timeout_us(TEST_TIMEOUT_US);
|
||||||
stdio_flush();
|
stdio_flush();
|
||||||
@ -46,7 +47,7 @@ int test_log(void){
|
|||||||
case 'b':
|
case 'b':
|
||||||
printf("B : 9 messages d'affilés\n");
|
printf("B : 9 messages d'affilés\n");
|
||||||
for(int i=0; i<9; i++){
|
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);
|
Log_message(message, DEBUG);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -55,12 +56,18 @@ int test_log(void){
|
|||||||
case 'c':
|
case 'c':
|
||||||
printf("C : 100 messages à 100 µs d'intervalle\n");
|
printf("C : 100 messages à 100 µs d'intervalle\n");
|
||||||
for(int i=0; i<100; i++){
|
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);
|
Log_message(message, DEBUG);
|
||||||
sleep_us(100);
|
sleep_us(100);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'D':
|
||||||
|
case 'd':
|
||||||
|
printf("D : Récupération du log stocké\n");
|
||||||
|
Log_get_full_log();
|
||||||
|
break;
|
||||||
|
|
||||||
case 'Q':
|
case 'Q':
|
||||||
case 'q':
|
case 'q':
|
||||||
printf("Q : Quitter\n");
|
printf("Q : Quitter\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user