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