CLI: log command argument (#1817)

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
This commit is contained in:
Sergey Gavrilov 2022-10-07 02:13:02 +10:00 committed by GitHub
parent d07c2dbe54
commit e3a5df5959
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);
} }