]> git.donarmstrong.com Git - tmk_firmware.git/commitdiff
Add print_dec() and debug_dec().
authortmk <nobody@nowhere>
Wed, 24 Oct 2012 18:28:25 +0000 (03:28 +0900)
committertmk <nobody@nowhere>
Fri, 26 Oct 2012 17:27:09 +0000 (02:27 +0900)
common/command.c
common/debug.c
common/debug.h
common/mousekey.c
common/print.c
common/print.h

index 85cc05733a4a8dce5b5157ab5e16117ae4e2fbc9..a06e6a00d15128606c3adb5978127bd2eb4f64ad 100644 (file)
@@ -164,9 +164,6 @@ static bool command_common(uint8_t code)
                 debug_enable   = false;
             } else {
                 print("\nDEBUG: enabled.\n");
-                debug_matrix   = true;
-                debug_keyboard = true;
-                debug_mouse    = true;
                 debug_enable   = true;
             }
             break;
@@ -205,7 +202,7 @@ static bool command_common(uint8_t code)
             print("VERSION: " STR(DEVICE_VER) "\n");
             break;
         case KC_T: // print timer
-            pv_hex32(timer_count);
+            print_val_hex32(timer_count);
             break;
         case KC_P: // print toggle
             if (print_enable) {
@@ -218,20 +215,20 @@ static bool command_common(uint8_t code)
             break;
         case KC_S:
             print("\n\n----- Status -----\n");
-            pv_hex8(host_keyboard_leds());
+            print_val_hex8(host_keyboard_leds());
 #ifdef HOST_PJRC
-            pv_hex8(UDCON);
-            pv_hex8(UDIEN);
-            pv_hex8(UDINT);
-            pv_hex8(usb_keyboard_leds);
-            pv_hex8(usb_keyboard_protocol);
-            pv_hex8(usb_keyboard_idle_config);
-            pv_hex8(usb_keyboard_idle_count);
+            print_val_hex8(UDCON);
+            print_val_hex8(UDIEN);
+            print_val_hex8(UDINT);
+            print_val_hex8(usb_keyboard_leds);
+            print_val_hex8(usb_keyboard_protocol);
+            print_val_hex8(usb_keyboard_idle_config);
+            print_val_hex8(usb_keyboard_idle_count);
 #endif
 
 #ifdef HOST_VUSB
 #   if USB_COUNT_SOF
-            pv_hex8(usbSofCount);
+            print_val_hex8(usbSofCount);
 #   endif
 #endif
             break;
@@ -350,7 +347,7 @@ static void mousekey_param_print(void)
     print("6: mk_wheel_time_to_max: "); pdec(mk_wheel_time_to_max); print("\n");
 }
 
-#define PRINT_SET_VAL(v)  print(#v " = "); print_dec8(v); print("\n");
+#define PRINT_SET_VAL(v)  print(#v " = "); print_dec(v); print("\n");
 static void mousekey_param_inc(uint8_t param, uint8_t inc)
 {
     switch (param) {
@@ -552,11 +549,11 @@ static uint8_t numkey2num(uint8_t code)
 
 static void switch_layer(uint8_t layer)
 {
-    pv_hex8(current_layer);
-    pv_hex8(default_layer);
+    print_val_hex8(current_layer);
+    print_val_hex8(default_layer);
     current_layer = layer;
     default_layer = layer;
-    print("switch to "); pv_hex8(layer);
+    print("switch to "); print_val_hex8(layer);
 }
 
 static void clear_keyboard(void)
index 41d566ee3a3de8f33a71bf4557b7a85408f206e1..e406d39b0ecc622f3a80f5779b13f07ba18827f5 100644 (file)
@@ -6,4 +6,3 @@ bool debug_enable = false;
 bool debug_matrix = false;
 bool debug_keyboard = false;
 bool debug_mouse = false;
-
index 1d56e21f77e6a69011dccb57d45769a93b093631..c12f2cb004180b7c0a75039aff6748d06dc45445 100644 (file)
@@ -22,13 +22,34 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "print.h"
 
 
-#define debug(s)             if(debug_enable) print_P(PSTR(s))
-#define debug_P(s)           if(debug_enable) print_P(s)
-#define debug_S(s)           if(debug_enable) print_S(s)
-#define debug_hex(c)         if(debug_enable) phex(c)
-#define debug_hex16(i)       if(debug_enable) phex16(i)
-#define debug_bin(c)         if(debug_enable) pbin(c)
-#define debug_bin_reverse(c) if(debug_enable) pbin_reverse(c)
+#define debug(s)                  do { if (debug_enable) print(s); } while (0)
+#define debugln(s)                do { if (debug_enable) println(s); } while (0)
+#define debug_S(s)                do { if (debug_enable) print_S(s); } while (0)
+#define debug_P(s)                do { if (debug_enable) print_P(s); } while (0)
+#define debug_msg(s)              do { \
+    if (debug_enable) { \
+        print(__FILE__); print(" at "); print_dec(__LINE__); print(" in "); print(": "); print(s); \
+    } \
+} while (0)
+
+    
+
+#define debug_dec(data)           do { if (debug_enable) print_dec(data); } while (0)
+#define debug_decs(data)          do { if (debug_enable) print_decs(data); } while (0)
+#define debug_hex8(data)          do { if (debug_enable) print_hex8(data); } while (0)
+#define debug_hex16(data)         do { if (debug_enable) print_hex16(data); } while (0)
+#define debug_hex32(data)         do { if (debug_enable) print_hex32(data); } while (0)
+#define debug_bin8(data)          do { if (debug_enable) print_bin8(data); } while (0)
+#define debug_bin16(data)         do { if (debug_enable) print_bin16(data); } while (0)
+#define debug_bin32(data)         do { if (debug_enable) print_bin32(data); } while (0)
+#define debug_bin_reverse8(data)  do { if (debug_enable) print_bin_reverse8(data); } while (0)
+#define debug_bin_reverse16(data) do { if (debug_enable) print_bin_reverse16(data); } while (0)
+#define debug_bin_reverse32(data) do { if (debug_enable) print_bin_reverse32(data); } while (0)
+
+#define debug_dec(data)           debug_dec(data)
+#define debug_hex(data)           debug_hex8(data)
+#define debug_bin(data)           debug_bin8(data)
+#define debug_bin_reverse(data)   debug_bin8(data)
 
 
 #ifdef __cplusplus
index d26b26306f04c8f60216591632918f503f0451f2..3068fc5e377480de135ae68bfe4eb6370a888307 100644 (file)
@@ -187,10 +187,10 @@ static void mousekey_debug(void)
     if (!debug_mouse) return;
     print("mousekey [btn|x y v h](rep/acl): [");
     phex(mouse_report.buttons); print("|");
-    phex(mouse_report.x); print(" ");
-    phex(mouse_report.y); print(" ");
-    phex(mouse_report.v); print(" ");
-    phex(mouse_report.h); print("](");
-    phex(mousekey_repeat); print("/");
-    phex(mousekey_accel); print(")\n");
+    print_decs(mouse_report.x); print(" ");
+    print_decs(mouse_report.y); print(" ");
+    print_decs(mouse_report.v); print(" ");
+    print_decs(mouse_report.h); print("](");
+    print_dec(mousekey_repeat); print("/");
+    print_dec(mousekey_accel); print(")\n");
 }
index dd73ff59ddbcffa81e0addab9613eea345f00f71..6a8a725bca11e2211f2c9fd28f71121f6bef6dea 100644 (file)
  * THE SOFTWARE.
  */
 
-#include <stdio.h>
 #include <avr/io.h>
 #include <avr/pgmspace.h>
 #include "print.h"
+
+
 #define sendchar(c)    do { if (print_enable && print_sendchar_func) (print_sendchar_func)(c); } while (0)
 
 
-int8_t (*print_sendchar_func)(uint8_t) = NULL;
+int8_t (*print_sendchar_func)(uint8_t) = 0;
 bool print_enable = false;
 
+
 /* print string stored in data memory(SRAM)
  *     print_P("hello world");
  * This consumes precious SRAM memory space for string.
@@ -62,6 +64,55 @@ void print_P(const char *s)
     }
 }
 
+void print_CRLF(void)
+{
+    sendchar('\r'); sendchar('\n');
+}
+
+
+#define SIGNED  0x80
+#define BIN     2
+#define OCT     8
+#define DEC     10
+#define HEX     16
+
+static inline
+char itoc(uint8_t i)
+{
+    return (i < 10 ? '0' + i : 'A' + i - 10);
+}
+
+static inline
+void print_int(uint16_t data, uint8_t base)
+{
+    char buf[7] = {'\0'};
+    char *p = &buf[6];
+    if ((base & SIGNED) && (data & 0x8000)) {
+        data = -data;
+        buf[0] = '-';
+    }
+    base &= ~SIGNED;
+    uint16_t n;
+    do {
+        n = data;
+        data /= base;
+        *(--p) = itoc(n - data*base);
+    } while (data);
+    if (buf[0]) *(--p) = buf[0];
+    print_S(p);
+}
+
+void print_dec(uint16_t data)
+{
+    print_int(data, DEC);
+}
+
+void print_decs(int16_t data)
+{
+    print_int(data, DEC|SIGNED);
+}
+
+
 static inline
 void print_hex4(uint8_t data)
 {
@@ -86,22 +137,6 @@ void print_hex32(uint32_t data)
     print_hex16(data);
 }
 
-void print_dec8(uint8_t data)
-{
-    if (data/100) sendchar('0' + (data/100));
-    if (data/100 || data%100/10) sendchar('0' + (data%100/10));
-    sendchar('0' + (data%10));
-}
-
-void print_dec16(uint16_t data)
-{
-    // TODO
-}
-
-void print_dec32(uint32_t data)
-{
-    // TODO
-}
 
 void print_bin(uint8_t data)
 {
index 3a949ba053aeb4fdf035a3146f26ff27e1e69dc8..9c31b24a2edf48b1f4936fa36f9e71805b72e939 100644 (file)
 #ifndef __cplusplus
 // this macro allows you to write print("some text") and
 // the string is automatically placed into flash memory :)
-#define print(s) print_P(PSTR(s))
+#define print(s)                print_P(PSTR(s))
 #endif
 
-#define println(s)          print_P(PSTR(s "\n"))
+#define println(s)              print_P(PSTR(s "\n"))
 
+/* for old name */
+#define pdec(data)              print_dec(data)
+#define pdec16(data)            print_dec(data)
 #define phex(data)              print_hex8(data)
 #define phex16(data)            print_hex16(data)
-#define pdec(data)              print_dec8(data)
-#define pdec16(data)            print_dec16(data)
 #define pbin(data)              print_bin8(data)
 #define pbin16(data)            print_bin16(data)
 #define pbin_reverse(data)      print_bin_reverse8(data)
 
 
 /* print value utility */
-#define pv_hex8(v)          do { print_P(PSTR(#v ": ")); print_hex8(v);  print_P(PSTR("\n")); } while (0)
-#define pv_hex16(v)         do { print_P(PSTR(#v ": ")); print_hex16(v); print_P(PSTR("\n")); } while (0)
-#define pv_hex32(v)         do { print_P(PSTR(#v ": ")); print_hex32(v); print_P(PSTR("\n")); } while (0)
-#define pv_dec8(v)          do { print_P(PSTR(#v ": ")); print_dec8(v);  print_P(PSTR("\n")); } while (0)
-#define pv_dec16(v)         do { print_P(PSTR(#v ": ")); print_dec16(v); print_P(PSTR("\n")); } while (0)
-#define pv_dec32(v)         do { print_P(PSTR(#v ": ")); print_dec32(v); print_P(PSTR("\n")); } while (0)
-#define pv_bin8(v)          do { print_P(PSTR(#v ": ")); print_bin8(v);  print_P(PSTR("\n")); } while (0)
-#define pv_bin16(v)         do { print_P(PSTR(#v ": ")); print_bin16(v); print_P(PSTR("\n")); } while (0)
-#define pv_bin32(v)         do { print_P(PSTR(#v ": ")); print_bin32(v); print_P(PSTR("\n")); } while (0)
-#define pv_bin_reverse8(v)  do { print_P(PSTR(#v ": ")); print_bin_reverse8(v);  print_P(PSTR("\n")); } while (0)
-#define pv_bin_reverse16(v) do { print_P(PSTR(#v ": ")); print_bin_reverse16(v); print_P(PSTR("\n")); } while (0)
-#define pv_bin_reverse32(v) do { print_P(PSTR(#v ": ")); print_bin_reverse32(v); print_P(PSTR("\n")); } while (0)
+#define print_val_dec(v)          do { print_P(PSTR(#v ": ")); print_dec(v);  print_P(PSTR("\n")); } while (0)
+#define print_val_decs(v)          do { print_P(PSTR(#v ": ")); print_decs(v);  print_P(PSTR("\n")); } while (0)
+
+#define print_val_hex8(v)          do { print_P(PSTR(#v ": ")); print_hex8(v);  print_P(PSTR("\n")); } while (0)
+#define print_val_hex16(v)         do { print_P(PSTR(#v ": ")); print_hex16(v); print_P(PSTR("\n")); } while (0)
+#define print_val_hex32(v)         do { print_P(PSTR(#v ": ")); print_hex32(v); print_P(PSTR("\n")); } while (0)
+
+#define print_val_bin8(v)          do { print_P(PSTR(#v ": ")); print_bin8(v);  print_P(PSTR("\n")); } while (0)
+#define print_val_bin16(v)         do { print_P(PSTR(#v ": ")); print_bin16(v); print_P(PSTR("\n")); } while (0)
+#define print_val_bin32(v)         do { print_P(PSTR(#v ": ")); print_bin32(v); print_P(PSTR("\n")); } while (0)
+#define print_val_bin_reverse8(v)  do { print_P(PSTR(#v ": ")); print_bin_reverse8(v);  print_P(PSTR("\n")); } while (0)
+#define print_val_bin_reverse16(v) do { print_P(PSTR(#v ": ")); print_bin_reverse16(v); print_P(PSTR("\n")); } while (0)
+#define print_val_bin_reverse32(v) do { print_P(PSTR(#v ": ")); print_bin_reverse32(v); print_P(PSTR("\n")); } while (0)
 
 
 
@@ -78,15 +80,24 @@ void print_S(const char *s);
 /* print string stored in program memory(FLASH) */
 void print_P(const char *s);
 
+void print_CRLF(void);
+
+/* decimal */
+void print_dec(uint16_t data);
+void print_decs(int16_t data);
+
+/* hex */
 void print_hex8(uint8_t data);
 void print_hex16(uint16_t data);
 void print_hex32(uint32_t data);
-void print_dec8(uint8_t data);
-void print_dec16(uint16_t data);
+
+/* binary */
 void print_bin8(uint8_t data);
 void print_bin16(uint16_t data);
+void print_bin32(uint32_t data);
 void print_bin_reverse8(uint8_t data);
 void print_bin_reverse16(uint16_t data);
+void print_bin_reverse32(uint32_t data);
 
 #ifdef __cplusplus
 }