This is an automated email from the ASF dual-hosted git repository.

vipulrahane pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ca145c  sys/console: add support for silencing output from the 
console (#1341)
3ca145c is described below

commit 3ca145c8cfa11d67385911cb4327125f694ed7df
Author: Vipul Rahane <[email protected]>
AuthorDate: Tue Aug 21 13:48:44 2018 -0700

    sys/console: add support for silencing output from the console (#1341)
    
    * sys/console: add support for silencing output from the console
    - Add support for silencing output from the console
    - Change parse_ull_bounds to check for range and return SYS_ERANGE error
    * console/stub: add stub function for console_silence
    * parse: cleanup, adding comments and addressing review
    - Return character if console is silenced
---
 sys/console/full/include/console/console.h    | 16 ++++++++++++++++
 sys/console/full/src/ble_monitor_console.c    |  4 ++++
 sys/console/full/src/console.c                |  1 +
 sys/console/full/src/rtt_console.c            |  4 ++++
 sys/console/full/src/uart_console.c           |  4 ++++
 sys/console/minimal/include/console/console.h | 17 +++++++++++++++++
 sys/console/minimal/src/console.c             |  1 +
 sys/console/minimal/src/rtt_console.c         |  4 ++++
 sys/console/minimal/src/uart_console.c        |  4 ++++
 sys/console/stub/include/console/console.h    |  6 ++++++
 util/parse/src/parse.c                        | 20 ++++++++++++--------
 11 files changed, 73 insertions(+), 8 deletions(-)

diff --git a/sys/console/full/include/console/console.h 
b/sys/console/full/include/console/console.h
index ab1af6e..bb9f11a 100644
--- a/sys/console/full/include/console/console.h
+++ b/sys/console/full/include/console/console.h
@@ -65,6 +65,22 @@ int console_handle_char(uint8_t byte);
 void console_line_queue_set(struct os_eventq *evq);
 /* Put (handled) line event to console */
 void console_line_event_put(struct os_event *ev);
+/**
+ * Global indicating whether console is silent or not
+ */
+extern bool g_silence_console;
+
+/**
+ * Silences console output, input is still active
+ *
+ * @param silent Let console know if it needs to be silent,
+ *        true for silence, false otherwise
+ */
+static void inline
+console_silence(bool silent)
+{
+    g_silence_console = silent;
+}
 
 extern int console_is_midline;
 extern int console_out(int character);
diff --git a/sys/console/full/src/ble_monitor_console.c 
b/sys/console/full/src/ble_monitor_console.c
index d25bfdb..12cd44f 100644
--- a/sys/console/full/src/ble_monitor_console.c
+++ b/sys/console/full/src/ble_monitor_console.c
@@ -27,6 +27,10 @@
 int
 console_out(int c)
 {
+    if (g_silence_console) {
+        return c;
+    }
+
     console_is_midline = (c != '\n');
 
     return ble_monitor_out(c);
diff --git a/sys/console/full/src/console.c b/sys/console/full/src/console.c
index 78bf9cc..6f996cf 100644
--- a/sys/console/full/src/console.c
+++ b/sys/console/full/src/console.c
@@ -82,6 +82,7 @@ static uint16_t cur, end;
 static struct os_eventq avail_queue;
 static struct os_eventq *lines_queue;
 static completion_cb completion;
+bool g_silence_console;
 
 /*
  * Default implementation in case all consoles are disabled - we just ignore 
any
diff --git a/sys/console/full/src/rtt_console.c 
b/sys/console/full/src/rtt_console.c
index fa3c692..0191372 100644
--- a/sys/console/full/src/rtt_console.c
+++ b/sys/console/full/src/rtt_console.c
@@ -37,6 +37,10 @@ console_out(int character)
 {
     char c = (char)character;
 
+    if (g_silence_console) {
+        return c;
+    }
+
     if ('\n' == c) {
         SEGGER_RTT_WriteWithOverwriteNoLock(0, &CR, 1);
         console_is_midline = 0;
diff --git a/sys/console/full/src/uart_console.c 
b/sys/console/full/src/uart_console.c
index aa25790..252d576 100644
--- a/sys/console/full/src/uart_console.c
+++ b/sys/console/full/src/uart_console.c
@@ -154,6 +154,10 @@ uart_console_non_blocking_mode(void)
 int
 console_out(int c)
 {
+    if (g_silence_console) {
+        return c;
+    }
+
     /* Assure that there is a write cb installed; this enables to debug
      * code that is faulting before the console was initialized.
      */
diff --git a/sys/console/minimal/include/console/console.h 
b/sys/console/minimal/include/console/console.h
index 5e8eeb2..6c82006 100644
--- a/sys/console/minimal/include/console/console.h
+++ b/sys/console/minimal/include/console/console.h
@@ -63,6 +63,23 @@ console_set_completion_cb(uint8_t (*completion)(char *str, 
uint8_t len))
 {
 }
 
+/**
+ * Global indicating whether console is silent or not
+ */
+extern bool g_silence_console;
+
+/**
+ * Silences console output, input is still active
+ *
+ * @param silent Let console know if it needs to be silent,
+ *        true for silence, false otherwise
+ */
+static void inline
+console_silence(bool silent)
+{
+    g_silence_console = silent;
+}
+
 int console_handle_char(uint8_t byte);
 
 extern int console_is_midline;
diff --git a/sys/console/minimal/src/console.c 
b/sys/console/minimal/src/console.c
index d0fc786..9f50e90 100644
--- a/sys/console/minimal/src/console.c
+++ b/sys/console/minimal/src/console.c
@@ -56,6 +56,7 @@ static int echo = MYNEWT_VAL(CONSOLE_ECHO);
 static uint8_t cur, end;
 static struct os_eventq *avail_queue;
 static struct os_eventq *lines_queue;
+bool g_silence_console;
 
 int __attribute__((weak))
 console_out(int c)
diff --git a/sys/console/minimal/src/rtt_console.c 
b/sys/console/minimal/src/rtt_console.c
index b678e96..085690d 100644
--- a/sys/console/minimal/src/rtt_console.c
+++ b/sys/console/minimal/src/rtt_console.c
@@ -37,6 +37,10 @@ console_out(int character)
 {
     char c = (char)character;
 
+    if (g_silence_console) {
+        return c;
+    }
+
     if ('\n' == c) {
         SEGGER_RTT_WriteWithOverwriteNoLock(0, &CR, 1);
         console_is_midline = 0;
diff --git a/sys/console/minimal/src/uart_console.c 
b/sys/console/minimal/src/uart_console.c
index 7c3a72e..0f9b00b 100644
--- a/sys/console/minimal/src/uart_console.c
+++ b/sys/console/minimal/src/uart_console.c
@@ -132,6 +132,10 @@ uart_console_non_blocking_mode(void)
 int
 console_out(int c)
 {
+    if (g_silence_console) {
+        return c;
+    }
+
     if ('\n' == c) {
         write_char_cb(uart_dev, '\r');
         console_is_midline = 0;
diff --git a/sys/console/stub/include/console/console.h 
b/sys/console/stub/include/console/console.h
index f1e27a3..57c5ab0 100644
--- a/sys/console/stub/include/console/console.h
+++ b/sys/console/stub/include/console/console.h
@@ -20,6 +20,7 @@
 #define __CONSOLE_H__
 
 #include <inttypes.h>
+#include <stdbool.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -111,6 +112,11 @@ console_out(int character)
     return 0;
 }
 
+static void inline
+console_silence(bool silent)
+{
+}
+
 #define console_is_midline  (0)
 
 #ifdef __cplusplus
diff --git a/util/parse/src/parse.c b/util/parse/src/parse.c
index 626a97e..e403203 100644
--- a/util/parse/src/parse.c
+++ b/util/parse/src/parse.c
@@ -54,11 +54,13 @@ parse_ll_bounds(const char *sval, long long min, long long 
max,
     char *endptr;
     long long llval;
 
-    llval = strtoll(sval, &endptr, parse_num_base(sval));
-    if (sval[0] != '\0' && *endptr == '\0' &&
-        llval >= min && llval <= max) {
+    *out_status = SYS_EOK;
 
-        *out_status = 0;
+    llval = strtoll(sval, &endptr, parse_num_base(sval));
+    if (sval[0] != '\0' && *endptr == '\0') {
+        if (llval < min || llval > max) {
+            *out_status = SYS_ERANGE;
+        }
         return llval;
     }
 
@@ -74,11 +76,13 @@ parse_ull_bounds(const char *sval,
     char *endptr;
     unsigned long long ullval;
 
-    ullval = strtoull(sval, &endptr, parse_num_base(sval));
-    if (sval[0] != '\0' && *endptr == '\0' &&
-        ullval >= min && ullval <= max) {
+    *out_status = SYS_EOK;
 
-        *out_status = 0;
+    ullval = strtoull(sval, &endptr, parse_num_base(sval));
+    if (sval[0] != '\0' && *endptr == '\0') {
+        if (ullval < min || ullval > max) {
+            *out_status = SYS_ERANGE;
+        }
         return ullval;
     }
 

Reply via email to