diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/debug.h | 2 | ||||
| -rw-r--r-- | common/print.c | 22 | ||||
| -rw-r--r-- | common/print.h | 145 |
3 files changed, 75 insertions, 94 deletions
diff --git a/common/debug.h b/common/debug.h index 8aaa5ed91..399b2d0a7 100644 --- a/common/debug.h +++ b/common/debug.h | |||
| @@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 26 | 26 | ||
| 27 | #define dprint(s) do { if (debug_enable) print(s); } while (0) | 27 | #define dprint(s) do { if (debug_enable) print(s); } while (0) |
| 28 | #define dprintln() do { if (debug_enable) print_crlf(); } while (0) | 28 | #define dprintln() do { if (debug_enable) print_crlf(); } while (0) |
| 29 | #define dprintf(fmt, ...) do { if (debug_enable) __xprintf(PSTR(fmt), ##__VA_ARGS__); } while (0) | 29 | #define dprintf(fmt, ...) do { if (debug_enable) xprintf(fmt, ##__VA_ARGS__); } while (0) |
| 30 | #define dmsg(s) dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s)) | 30 | #define dmsg(s) dprintf("%s at %s: %S\n", __FILE__, __LINE__, PSTR(s)) |
| 31 | 31 | ||
| 32 | /* DO NOT USE these anymore */ | 32 | /* DO NOT USE these anymore */ |
diff --git a/common/print.c b/common/print.c index 783bb4e9b..c13a29f31 100644 --- a/common/print.c +++ b/common/print.c | |||
| @@ -37,26 +37,4 @@ void print_set_sendchar(int8_t (*sendchar_func)(uint8_t)) | |||
| 37 | xdev_out(sendchar_func); | 37 | xdev_out(sendchar_func); |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | void print_S(const char *s) | ||
| 41 | { | ||
| 42 | uint8_t c; | ||
| 43 | while (1) { | ||
| 44 | c = *s++; | ||
| 45 | if (!c) break; | ||
| 46 | if (c == '\n') sendchar('\r'); | ||
| 47 | sendchar(c); | ||
| 48 | } | ||
| 49 | } | ||
| 50 | |||
| 51 | void print_lf(void) | ||
| 52 | { | ||
| 53 | sendchar('\n'); | ||
| 54 | } | ||
| 55 | |||
| 56 | void print_crlf(void) | ||
| 57 | { | ||
| 58 | sendchar('\r'); | ||
| 59 | sendchar('\n'); | ||
| 60 | } | ||
| 61 | |||
| 62 | #endif | 40 | #endif |
diff --git a/common/print.h b/common/print.h index 930e84be9..6a6771f71 100644 --- a/common/print.h +++ b/common/print.h | |||
| @@ -27,98 +27,79 @@ | |||
| 27 | 27 | ||
| 28 | #include <stdint.h> | 28 | #include <stdint.h> |
| 29 | #include <stdbool.h> | 29 | #include <stdbool.h> |
| 30 | #include <avr/pgmspace.h> | ||
| 31 | #include "xprintf.h" | ||
| 32 | #include "util.h" | 30 | #include "util.h" |
| 33 | 31 | ||
| 34 | 32 | ||
| 35 | // this macro allows you to write print("some text") and | ||
| 36 | // the string is automatically placed into flash memory :) | ||
| 37 | // TODO: avoid collision with arduino/Print.h | ||
| 38 | #ifndef __cplusplus | ||
| 39 | #define print(s) print_P(PSTR(s)) | ||
| 40 | #endif | ||
| 41 | #define println(s) print_P(PSTR(s "\n")) | ||
| 42 | 33 | ||
| 43 | /* for old name */ | ||
| 44 | #define pdec(data) print_dec(data) | ||
| 45 | #define pdec16(data) print_dec(data) | ||
| 46 | #define phex(data) print_hex8(data) | ||
| 47 | #define phex16(data) print_hex16(data) | ||
| 48 | #define pbin(data) print_bin8(data) | ||
| 49 | #define pbin16(data) print_bin16(data) | ||
| 50 | #define pbin_reverse(data) print_bin_reverse8(data) | ||
| 51 | #define pbin_reverse16(data) print_bin_reverse16(data) | ||
| 52 | 34 | ||
| 53 | /* print value utility */ | 35 | #ifndef NO_PRINT |
| 54 | #define print_val_dec(v) xprintf(#v ": %u\n", v) | ||
| 55 | #define print_val_decs(v) xprintf(#v ": %d\n", v) | ||
| 56 | #define print_val_hex8(v) xprintf(#v ": %X\n", v) | ||
| 57 | #define print_val_hex16(v) xprintf(#v ": %02X\n", v) | ||
| 58 | #define print_val_hex32(v) xprintf(#v ": %04lX\n", v) | ||
| 59 | #define print_val_bin8(v) xprintf(#v ": %08b\n", v) | ||
| 60 | #define print_val_bin16(v) xprintf(#v ": %016b\n", v) | ||
| 61 | #define print_val_bin32(v) xprintf(#v ": %032lb\n", v) | ||
| 62 | #define print_val_bin_reverse8(v) xprintf(#v ": %08b\n", bitrev(v)) | ||
| 63 | #define print_val_bin_reverse16(v) xprintf(#v ": %016b\n", bitrev16(v)) | ||
| 64 | #define print_val_bin_reverse32(v) xprintf(#v ": %032lb\n", bitrev32(v)) | ||
| 65 | 36 | ||
| 66 | 37 | ||
| 38 | #ifdef __AVR__ | ||
| 39 | |||
| 40 | #include "xprintf.h" | ||
| 67 | 41 | ||
| 68 | #ifndef NO_PRINT | 42 | |
| 43 | // TODO: avoid collision with arduino/Print.h | ||
| 44 | #ifndef __cplusplus | ||
| 45 | #define print(s) xputs(PSTR(s)) | ||
| 46 | #endif | ||
| 47 | #define println(s) xputs(PSTR(s "\n")) | ||
| 69 | 48 | ||
| 70 | #ifdef __cplusplus | 49 | #ifdef __cplusplus |
| 71 | extern "C" { | 50 | extern "C" { |
| 72 | #endif | 51 | #endif |
| 73 | |||
| 74 | /* function pointer of sendchar to be used by print utility */ | 52 | /* function pointer of sendchar to be used by print utility */ |
| 75 | void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); | 53 | void print_set_sendchar(int8_t (*print_sendchar_func)(uint8_t)); |
| 76 | 54 | ||
| 77 | /* print string stored in data memory(SRAM) | 55 | #elif __arm__ |
| 78 | * print_S("hello world"); | ||
| 79 | * This consumes precious SRAM memory space for string. | ||
| 80 | */ | ||
| 81 | void print_S(const char *s); | ||
| 82 | 56 | ||
| 83 | void print_lf(void); | 57 | #include "mbed.h" |
| 84 | void print_crlf(void); | 58 | Serial ser(UART_TX, UART_RX); |
| 59 | #define xprintf ser.printf | ||
| 60 | #define print(s) xprintf(s) | ||
| 61 | #define println(s) xprintf(s "\n") | ||
| 62 | /* TODO: to select output destinations: UART/USBSerial */ | ||
| 63 | #define print_set_sendchar(func) | ||
| 85 | 64 | ||
| 65 | #endif /* __AVR__ */ | ||
| 86 | 66 | ||
| 87 | /* print string stored in program memory(FLASH) | ||
| 88 | * print_P(PSTR("hello world"); | ||
| 89 | * This consumes relatively abundant FLASH memory area not SRAM. | ||
| 90 | */ | ||
| 91 | #define print_P(s) xputs(s) | ||
| 92 | 67 | ||
| 93 | /* decimal */ | 68 | /* decimal */ |
| 94 | #define print_dec(i) xprintf("%u", i) | 69 | #define print_dec(i) xprintf("%u", i) |
| 95 | #define print_decs(i) xprintf("%d", i) | 70 | #define print_decs(i) xprintf("%d", i) |
| 96 | |||
| 97 | /* hex */ | 71 | /* hex */ |
| 98 | #define print_hex4(i) xprintf("%X", i) | 72 | #define print_hex4(i) xprintf("%X", i) |
| 99 | #define print_hex8(i) xprintf("%02X", i) | 73 | #define print_hex8(i) xprintf("%02X", i) |
| 100 | #define print_hex16(i) xprintf("%04X", i) | 74 | #define print_hex16(i) xprintf("%04X", i) |
| 101 | #define print_hex32(i) xprintf("%08lX", i) | 75 | #define print_hex32(i) xprintf("%08lX", i) |
| 102 | |||
| 103 | /* binary */ | 76 | /* binary */ |
| 104 | #define print_bin4(i) xprintf("%04b", i) | 77 | #define print_bin4(i) xprintf("%04b", i) |
| 105 | #define print_bin8(i) xprintf("%08b", i) | 78 | #define print_bin8(i) xprintf("%08b", i) |
| 106 | #define print_bin16(i) xprintf("%016b", i) | 79 | #define print_bin16(i) xprintf("%016b", i) |
| 107 | #define print_bin32(i) xprintf("%032lb", i) | 80 | #define print_bin32(i) xprintf("%032lb", i) |
| 108 | 81 | #define print_bin_reverse8(i) xprintf("%08b", bitrev(i)) | |
| 109 | #define print_bin_reverse8(i) xprintf("%08b", bitrev(i)) | 82 | #define print_bin_reverse16(i) xprintf("%016b", bitrev16(i)) |
| 110 | #define print_bin_reverse16(i) xprintf("%016b", bitrev16(i)) | 83 | #define print_bin_reverse32(i) xprintf("%032lb", bitrev32(i)) |
| 111 | #define print_bin_reverse32(i) xprintf("%032lb", bitrev32(i)) | 84 | /* print value utility */ |
| 112 | 85 | #define print_val_dec(v) xprintf(#v ": %u\n", v) | |
| 113 | #ifdef __cplusplus | 86 | #define print_val_decs(v) xprintf(#v ": %d\n", v) |
| 114 | } | 87 | #define print_val_hex8(v) xprintf(#v ": %X\n", v) |
| 115 | #endif | 88 | #define print_val_hex16(v) xprintf(#v ": %02X\n", v) |
| 116 | 89 | #define print_val_hex32(v) xprintf(#v ": %04lX\n", v) | |
| 117 | #else | 90 | #define print_val_bin8(v) xprintf(#v ": %08b\n", v) |
| 118 | 91 | #define print_val_bin16(v) xprintf(#v ": %016b\n", v) | |
| 92 | #define print_val_bin32(v) xprintf(#v ": %032lb\n", v) | ||
| 93 | #define print_val_bin_reverse8(v) xprintf(#v ": %08b\n", bitrev(v)) | ||
| 94 | #define print_val_bin_reverse16(v) xprintf(#v ": %016b\n", bitrev16(v)) | ||
| 95 | #define print_val_bin_reverse32(v) xprintf(#v ": %032lb\n", bitrev32(v)) | ||
| 96 | |||
| 97 | #else /* NO_PRINT */ | ||
| 98 | |||
| 99 | #define xprintf | ||
| 100 | #define print | ||
| 101 | #define println | ||
| 119 | #define print_set_sendchar(func) | 102 | #define print_set_sendchar(func) |
| 120 | #define print_S(s) | ||
| 121 | #define print_P(s) | ||
| 122 | #define print_dec(data) | 103 | #define print_dec(data) |
| 123 | #define print_decs(data) | 104 | #define print_decs(data) |
| 124 | #define print_hex4(data) | 105 | #define print_hex4(data) |
| @@ -132,8 +113,30 @@ void print_crlf(void); | |||
| 132 | #define print_bin_reverse8(data) | 113 | #define print_bin_reverse8(data) |
| 133 | #define print_bin_reverse16(data) | 114 | #define print_bin_reverse16(data) |
| 134 | #define print_bin_reverse32(data) | 115 | #define print_bin_reverse32(data) |
| 135 | 116 | #define print_val_dec(v) | |
| 136 | #endif | 117 | #define print_val_decs(v) |
| 118 | #define print_val_hex8(v) | ||
| 119 | #define print_val_hex16(v) | ||
| 120 | #define print_val_hex32(v) | ||
| 121 | #define print_val_bin8(v) | ||
| 122 | #define print_val_bin16(v) | ||
| 123 | #define print_val_bin32(v) | ||
| 124 | #define print_val_bin_reverse8(v) | ||
| 125 | #define print_val_bin_reverse16(v) | ||
| 126 | #define print_val_bin_reverse32(v) | ||
| 127 | |||
| 128 | #endif /* NO_PRINT */ | ||
| 129 | |||
| 130 | |||
| 131 | /* Backward compatiblitly for old name */ | ||
| 132 | #define pdec(data) print_dec(data) | ||
| 133 | #define pdec16(data) print_dec(data) | ||
| 134 | #define phex(data) print_hex8(data) | ||
| 135 | #define phex16(data) print_hex16(data) | ||
| 136 | #define pbin(data) print_bin8(data) | ||
| 137 | #define pbin16(data) print_bin16(data) | ||
| 138 | #define pbin_reverse(data) print_bin_reverse8(data) | ||
| 139 | #define pbin_reverse16(data) print_bin_reverse16(data) | ||
| 137 | 140 | ||
| 138 | 141 | ||
| 139 | #endif | 142 | #endif |
