]> git.donarmstrong.com Git - tmk_firmware.git/commitdiff
Merge branch 'rn42' into merge_rn42
authortmk <nobody@nowhere>
Mon, 24 Nov 2014 04:50:33 +0000 (13:50 +0900)
committertmk <nobody@nowhere>
Mon, 24 Nov 2014 04:50:33 +0000 (13:50 +0900)
Conflicts:
.gitignore
common.mk
common/debug_config.h
common/print.h

1  2 
.gitignore
common.mk
common/action.c
common/avr/xprintf.h
common/debug.h
common/keyboard.c
protocol.mk

diff --cc .gitignore
index 0fd85b53143e75f8b4c4ebdee59d1d30520b2644,b79d72b7c7ae72142099d4e3b9efa6d3e54d7f99..f3f46872a07e990dcf0f8dca6c8de554d0fdce66
@@@ -8,4 -8,5 +8,6 @@@
  *.map
  *.sym
  tags
 +*~
+ build/
+ *.bak
diff --cc common.mk
index 1cffc3cc22c5d7b46adf24267a50c2d612f3b115,04f036477115de2a1410d5e7fb517ec3f2d2ed2c..b854f09cdbf98a0dd2d872d084140911e20c293e
+++ b/common.mk
@@@ -7,13 -7,12 +7,13 @@@ SRC +=        $(COMMON_DIR)/host.c 
        $(COMMON_DIR)/action_layer.c \
        $(COMMON_DIR)/action_util.c \
        $(COMMON_DIR)/keymap.c \
-       $(COMMON_DIR)/timer.c \
        $(COMMON_DIR)/print.c \
-       $(COMMON_DIR)/bootloader.c \
-       $(COMMON_DIR)/suspend.c \
-       $(COMMON_DIR)/xprintf.S \
-       $(COMMON_DIR)/util.c
 +      $(COMMON_DIR)/debug.c \
+       $(COMMON_DIR)/util.c \
+       $(COMMON_DIR)/avr/suspend.c \
+       $(COMMON_DIR)/avr/xprintf.S \
+       $(COMMON_DIR)/avr/timer.c \
+       $(COMMON_DIR)/avr/bootloader.c
  
  
  # Option modules
diff --cc common/action.c
Simple merge
index 0000000000000000000000000000000000000000,f58bca817be791356cc11b2aed9a16841e03618d..59c6f253123957e4aa7527c0bdc5b47d392563ef
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,103 +1,111 @@@
+ /*---------------------------------------------------------------------------\r
+    Extended itoa, puts and printf                    (C)ChaN, 2011\r
+ -----------------------------------------------------------------------------*/\r
\r
+ #ifndef XPRINTF_H\r
+ #define XPRINTF_H\r
\r
+ #include <inttypes.h>\r
+ #include <avr/pgmspace.h>\r
\r
++#ifdef __cplusplus\r
++extern "C" {\r
++#endif\r
++\r
+ extern void (*xfunc_out)(uint8_t);\r
+ #define xdev_out(func) xfunc_out = (void(*)(uint8_t))(func)\r
\r
+ /* This is a pointer to user defined output function. It must be initialized\r
+    before using this modle.\r
+ */\r
\r
+ void xputc(char chr);\r
\r
+ /* This is a stub function to forward outputs to user defined output function.\r
+    All outputs from this module are output via this function.\r
+ */\r
\r
\r
+ /*-----------------------------------------------------------------------------*/\r
+ void xputs(const char *string_p);\r
\r
+ /*  The string placed in the ROM is forwarded to xputc() directly.\r
+ */\r
\r
\r
+ /*-----------------------------------------------------------------------------*/\r
+ void xitoa(long value, char radix, char width);\r
\r
+ /* Extended itoa().\r
\r
+       value  radix  width   output\r
+         100     10      6   "   100"\r
+         100     10     -6   "000100"\r
+         100     10      0   "100"\r
+  4294967295     10      0   "4294967295"\r
+  4294967295    -10      0   "-1"\r
+      655360     16     -8   "000A0000"\r
+        1024     16      0   "400"\r
+        0x55      2     -8   "01010101"\r
+ */\r
\r
\r
+ /*-----------------------------------------------------------------------------*/\r
+ #define xprintf(format, ...)            __xprintf(PSTR(format), ##__VA_ARGS__)\r
+ #define xsprintf(str, format, ...)      __xsprintf(str, PSTR(format), ##__VA_ARGS__)\r
+ #define xfprintf(func, format, ...)     __xfprintf(func, PSTR(format), ##__VA_ARGS__)\r
\r
+ void __xprintf(const char *format_p, ...);    /* Send formatted string to the registered device */\r
+ void __xsprintf(char*, const char *format_p, ...);    /* Put formatted string to the memory */\r
+ void __xfprintf(void(*func)(uint8_t), const char *format_p, ...); /* Send formatted string to the specified device */\r
\r
+ /* Format string is placed in the ROM. The format flags is similar to printf().\r
\r
+    %[flag][width][size]type\r
\r
+    flag\r
+      A '0' means filled with '0' when output is shorter than width.\r
+      ' ' is used in default. This is effective only numeral type.\r
+    width\r
+      Minimum width in decimal number. This is effective only numeral type.\r
+      Default width is zero.\r
+    size\r
+      A 'l' means the argument is long(32bit). Default is short(16bit).\r
+      This is effective only numeral type.\r
+    type\r
+      'c' : Character, argument is the value\r
+      's' : String placed on the RAM, argument is the pointer\r
+      'S' : String placed on the ROM, argument is the pointer\r
+      'd' : Signed decimal, argument is the value\r
+      'u' : Unsigned decimal, argument is the value\r
+      'X' : Hexdecimal, argument is the value\r
+      'b' : Binary, argument is the value\r
+      '%' : '%'\r
\r
+ */\r
\r
\r
+ /*-----------------------------------------------------------------------------*/\r
+ char xatoi(char **str, long *ret);\r
\r
+ /* Get value of the numeral string. \r
\r
+   str\r
+     Pointer to pointer to source string\r
\r
+     "0b11001010" binary\r
+     "0377" octal\r
+     "0xff800" hexdecimal\r
+     "1250000" decimal\r
+     "-25000" decimal\r
\r
+   ret\r
+     Pointer to return value\r
+ */\r
\r
++#ifdef __cplusplus\r
++}\r
++#endif\r
++\r
+ #endif\r
\r
diff --cc common/debug.h
index 8aaa5ed915e2b62a9ada6ff3b9e6b628cc21122c,26472c8fa3980725f8eea07e9568b3ee7eb749da..472dd478c407c4390600fc30dd89a2c747cb878c
@@@ -19,22 -19,54 +19,54 @@@ along with this program.  If not, see <
  #define DEBUG_H 1
  
  #include "print.h"
- #include "debug_config.h"
  
  
 -    uint8_t raw;
+ /* 
+  * Debug output control
+  */
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ typedef union {
+     struct {
+         bool enable:1;
+         bool matrix:1;
+         bool keyboard:1;
+         bool mouse:1;
+         uint8_t reserved:4;
+     };
++    uint8_t raw;
+ } debug_config_t;
+ extern debug_config_t debug_config;
+ debug_config_t debug_config  __attribute__ ((weak)) = {};
+ #ifdef __cplusplus
+ }
+ #endif
+ #define debug_enable    (debug_config.enable)
+ #define debug_matrix    (debug_config.matrix)
+ #define debug_keyboard  (debug_config.keyboard)
+ #define debug_mouse     (debug_config.mouse)
+ /*
+  * Debug print utils
+  */
  #ifndef NO_DEBUG
  
- #define dprint(s)           do { if (debug_enable) print(s); } while (0)
- #define dprintln()          do { if (debug_enable) print_crlf(); } while (0)
- #define dprintf(fmt, ...)   do { if (debug_enable) __xprintf(PSTR(fmt), ##__VA_ARGS__); } while (0)
- #define dmsg(s)             dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s))
- /* DO NOT USE these anymore */
- #define debug(s)                  do { if (debug_enable) print(s); } while (0)
- #define debugln(s)                do { if (debug_enable) print_crlf(); } 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 { \
+ #define dprint(s)                   do { if (debug_enable) print(s); } while (0)
+ #define dprintln(s)                 do { if (debug_enable) println(s); } while (0)
+ #define dprintf(fmt, ...)           do { if (debug_enable) xprintf(fmt, ##__VA_ARGS__); } while (0)
+ #define dmsg(s)                     dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s))
+ /* Deprecated. DO NOT USE these anymore, use dprintf instead. */
+ #define debug(s)                    do { if (debug_enable) print(s); } while (0)
+ #define debugln(s)                  do { if (debug_enable) println(s); } while (0)
+ #define debug_msg(s)                do { \
      if (debug_enable) { \
          print(__FILE__); print(" at "); print_dec(__LINE__); print(" in "); print(": "); print(s); \
      } \
Simple merge
diff --cc protocol.mk
Simple merge