CLI: log command argument (#1817)
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									d07c2dbe54
								
							
						
					
					
						commit
						e3a5df5959
					
				| @ -143,11 +143,37 @@ void cli_command_log_tx_callback(const uint8_t* buffer, size_t size, void* conte | |||||||
|     xStreamBufferSend(context, buffer, size, 0); |     xStreamBufferSend(context, buffer, size, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void cli_command_log_level_set_from_string(FuriString* level) { | ||||||
|  |     if(furi_string_cmpi_str(level, "default") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelDefault); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "none") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelNone); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "error") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelError); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "warn") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelWarn); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "info") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelInfo); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "debug") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelDebug); | ||||||
|  |     } else if(furi_string_cmpi_str(level, "trace") == 0) { | ||||||
|  |         furi_log_set_level(FuriLogLevelTrace); | ||||||
|  |     } else { | ||||||
|  |         printf("Unknown log level\r\n"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void cli_command_log(Cli* cli, FuriString* args, void* context) { | void cli_command_log(Cli* cli, FuriString* args, void* context) { | ||||||
|     UNUSED(args); |  | ||||||
|     UNUSED(context); |     UNUSED(context); | ||||||
|     StreamBufferHandle_t ring = xStreamBufferCreate(CLI_COMMAND_LOG_RING_SIZE, 1); |     StreamBufferHandle_t ring = xStreamBufferCreate(CLI_COMMAND_LOG_RING_SIZE, 1); | ||||||
|     uint8_t buffer[CLI_COMMAND_LOG_BUFFER_SIZE]; |     uint8_t buffer[CLI_COMMAND_LOG_BUFFER_SIZE]; | ||||||
|  |     FuriLogLevel previous_level = furi_log_get_level(); | ||||||
|  |     bool restore_log_level = false; | ||||||
|  | 
 | ||||||
|  |     if(furi_string_size(args) > 0) { | ||||||
|  |         cli_command_log_level_set_from_string(args); | ||||||
|  |         restore_log_level = true; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     furi_hal_console_set_tx_callback(cli_command_log_tx_callback, ring); |     furi_hal_console_set_tx_callback(cli_command_log_tx_callback, ring); | ||||||
| 
 | 
 | ||||||
| @ -159,6 +185,11 @@ void cli_command_log(Cli* cli, FuriString* args, void* context) { | |||||||
| 
 | 
 | ||||||
|     furi_hal_console_set_tx_callback(NULL, NULL); |     furi_hal_console_set_tx_callback(NULL, NULL); | ||||||
| 
 | 
 | ||||||
|  |     if(restore_log_level) { | ||||||
|  |         // There will be strange behaviour if log level is set from settings while log command is running
 | ||||||
|  |         furi_log_set_level(previous_level); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     vStreamBufferDelete(ring); |     vStreamBufferDelete(ring); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sergey Gavrilov
						Sergey Gavrilov