- Fixes '[+]=' whitespace
[fw/openocd] / src / helper / log.c
index b6bb3479ab44bb70e90f76e03a9da4eafd482030..0e04af6f6bb88b7151e75b96dcdadb88344521e1 100644 (file)
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "log.h"
-#include "configuration.h"
 #include "time_support.h"
-#include "command.h"
+// @todo the inclusion of server.h here is a layering violation
 #include "server.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
 #include <stdarg.h>
 
 #ifdef _DEBUG_FREE_SPACE_
@@ -96,7 +89,7 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
        if (f != NULL)
                file = f + 1;
 
-       if (strchr(string, '\n')!=NULL)
+       if (strchr(string, '\n') != NULL)
        {
                if (debug_level >= LOG_LVL_DEBUG)
                {
@@ -116,7 +109,7 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
 #endif
                                        string);
                }
-               else if(server_use_pipes == 0)
+               else if (server_use_pipes == 0)
                {
                        /* if we are using gdb through pipes then we do not want any output
                         * to the pipe otherwise we get repeated strings */
@@ -201,17 +194,16 @@ void log_printf_lf(enum log_levels level, const char *file, int line, const char
  */
 int handle_debug_level_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
-       if (argc == 0)
-               command_print(cmd_ctx, "debug_level: %i", debug_level);
-
-       if (argc > 0)
-               debug_level = strtoul(args[0], NULL, 0);
-
-       if (debug_level < 0)
-               debug_level = 0;
-
-       if (debug_level > 3)
-               debug_level = 3;
+       if (argc == 1)
+       {
+               unsigned new_level;
+               int retval = parse_uint(args[0], &new_level);
+               if (ERROR_OK != retval)
+                       return retval;
+               debug_level = MIN(new_level, LOG_LVL_DEBUG);
+       }
+       else if (argc > 1)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
        if (debug_level >= LOG_LVL_DEBUG && server_use_pipes == 1)
        {
@@ -225,6 +217,8 @@ int handle_debug_level_command(struct command_context_s *cmd_ctx, char *cmd, cha
                }
        }
 
+       command_print(cmd_ctx, "debug_level: %i", debug_level);
+
        return ERROR_OK;
 }
 
@@ -392,7 +386,19 @@ void keep_alive()
        current_time=timeval_ms();
        if (current_time-last_time>1000)
        {
-               LOG_WARNING("keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (%lld). Workaround: increase \"set remotetimeout\" in GDB", current_time-last_time);
+               extern int gdb_actual_connections;
+
+               if (gdb_actual_connections)
+                       LOG_WARNING("keep_alive() was not invoked in the "
+                               "1000ms timelimit. GDB alive packet not "
+                               "sent! (%lld). Workaround: increase "
+                               "\"set remotetimeout\" in GDB",
+                               current_time-last_time);
+               else
+                       LOG_DEBUG("keep_alive() was not invoked in the "
+                               "1000ms timelimit (%lld). This may cause "
+                               "trouble with GDB connections.",
+                               current_time-last_time);
        }
        if (current_time-last_time>500)
        {
@@ -423,7 +429,7 @@ void alive_sleep(int ms)
 {
        int i;
        int napTime=10;
-       for (i=0; i<ms; i+=napTime)
+       for (i=0; i<ms; i += napTime)
        {
                int sleep_a_bit=ms-i;
                if (sleep_a_bit>napTime)