소스 검색

Merge pull request #9131 from Bob-the-Kuhn/LPC-formatted-prints

[2.0.x] LPC1768 formatted print statements
Scott Lahteine 7 년 전
부모
커밋
cf654b9a1a
No account linked to committer's email address
2개의 변경된 파일178개의 추가작업 그리고 51개의 파일을 삭제
  1. 103
    21
      Marlin/src/HAL/HAL_LPC1768/HardwareSerial.h
  2. 75
    30
      Marlin/src/HAL/HAL_LPC1768/serial.h

+ 103
- 21
Marlin/src/HAL/HAL_LPC1768/HardwareSerial.h 파일 보기

@@ -73,27 +73,109 @@ public:
73 73
 
74 74
   void IRQHandler();
75 75
 
76
-  void print(const char value[])              { printf("%s" , value); }
77
-  void print(char value, int = 0)             { printf("%c" , value); }
78
-  void print(unsigned char value, int = 0)    { printf("%u" , value); }
79
-  void print(int value, int = 0)              { printf("%d" , value); }
80
-  void print(unsigned int value, int = 0)     { printf("%u" , value); }
81
-  void print(long value, int = 0)             { printf("%ld" , value); }
82
-  void print(unsigned long value, int = 0)    { printf("%lu" , value); }
83
-
84
-  void print(float value, int round = 6)      { printf("%f" , value); }
85
-  void print(double value, int round = 6)     { printf("%f" , value ); }
86
-
87
-  void println(const char value[])            { printf("%s\n" , value); }
88
-  void println(char value, int = 0)           { printf("%c\n" , value); }
89
-  void println(unsigned char value, int = 0)  { printf("%u\r\n" , value); }
90
-  void println(int value, int = 0)            { printf("%d\n" , value); }
91
-  void println(unsigned int value, int = 0)   { printf("%u\n" , value); }
92
-  void println(long value, int = 0)           { printf("%ld\n" , value); }
93
-  void println(unsigned long value, int = 0)  { printf("%lu\n" , value); }
94
-  void println(float value, int round = 6)    { printf("%f\n" , value ); }
95
-  void println(double value, int round = 6)   { printf("%f\n" , value ); }
96
-  void println(void)                          { print('\n'); }
76
+  #define DEC 10
77
+  #define HEX 16
78
+  #define OCT 8
79
+  #define BIN 2
80
+  #define BYTE 0
81
+
82
+
83
+  void print_bin(uint32_t value, uint8_t num_digits) {
84
+    uint32_t mask = 1 << (num_digits -1);
85
+    for (uint8_t i = 0; i < num_digits; i++) {
86
+      if (!(i % 4) && i)    printf(" ");
87
+      if (!(i % 16)  && i)  printf(" ");
88
+      if (value & mask)     printf("1");
89
+      else                  printf("0");
90
+      value <<= 1;
91
+    }
92
+  }
93
+
94
+  void print(const char value[]) {
95
+    printf("%s" , value);
96
+  }
97
+  void print(char value, int nbase = BYTE) {
98
+    if (nbase == BIN) print_bin(value,8);
99
+    else if (nbase == OCT) printf("%3o", value);
100
+    else if (nbase == HEX) printf("%2X", value);
101
+    else if (nbase == DEC ) printf("%d", value);
102
+    else printf("%c" , value);
103
+  }
104
+  void print(unsigned char value, int nbase = BYTE) {
105
+    if (nbase == BIN) print_bin(value,8);
106
+    else if (nbase == OCT) printf("%3o", value);
107
+    else if (nbase == HEX) printf("%2X", value);
108
+    else printf("%u" , value);
109
+  }
110
+  void print(int value, int nbase = BYTE) {
111
+    if (nbase == BIN) print_bin(value,16);
112
+    else if (nbase == OCT) printf("%6o", value);
113
+    else if (nbase == HEX) printf("%4X", value);
114
+    else printf("%d", value);
115
+  }
116
+  void print(unsigned int value, int nbase = BYTE) {
117
+    if (nbase == BIN) print_bin(value,16);
118
+    else if (nbase == OCT) printf("%6o", value);
119
+    else if (nbase == HEX) printf("%4X", value);
120
+    else printf("%u" , value);
121
+  }
122
+  void print(long value, int nbase = BYTE) {
123
+    if (nbase == BIN) print_bin(value,32);
124
+    else if (nbase == OCT) printf("%11o", value);
125
+    else if (nbase == HEX) printf("%8X", value);
126
+    else printf("%ld" , value);
127
+  }
128
+  void print(unsigned long value, int nbase = BYTE) {
129
+    if (nbase == BIN) print_bin(value,32);
130
+    else if (nbase == OCT) printf("%11o", value);
131
+    else if (nbase == HEX) printf("%8X", value);
132
+    else printf("%lu" , value);
133
+  }
134
+  void print(float value, int round = 6) {
135
+    printf("%f" , value);
136
+  }
137
+  void print(double value, int round = 6) {
138
+    printf("%f" , value );
139
+  }
140
+
141
+
142
+
143
+  void println(const char value[]) {
144
+    printf("%s\n" , value);
145
+  }
146
+  void println(char value, int nbase = BYTE) {
147
+    print(value, nbase);
148
+    println();
149
+  }
150
+  void println(unsigned char value, int nbase = BYTE) {
151
+    print(value, nbase);
152
+    println();
153
+  }
154
+  void println(int value, int nbase = BYTE) {
155
+    print(value, nbase);
156
+    println();
157
+  }
158
+  void println(unsigned int value, int nbase = BYTE) {
159
+    print(value, nbase);
160
+    println();
161
+  }
162
+  void println(long value, int nbase = BYTE) {
163
+    print(value, nbase);
164
+    println();
165
+  }
166
+  void println(unsigned long value, int nbase = BYTE) {
167
+    print(value, nbase);
168
+    println();
169
+  }
170
+  void println(float value, int round = 6) {
171
+    printf("%f\n" , value );
172
+  }
173
+  void println(double value, int round = 6) {
174
+    printf("%f\n" , value );
175
+  }
176
+  void println(void) {
177
+    print('\n');
178
+  }
97 179
 
98 180
 };
99 181
 

+ 75
- 30
Marlin/src/HAL/HAL_LPC1768/serial.h 파일 보기

@@ -146,28 +146,64 @@ public:
146 146
     }
147 147
   }
148 148
 
149
+  #define DEC 10
150
+  #define HEX 16
151
+  #define OCT 8
152
+  #define BIN 2
153
+  #define BYTE 0
154
+
155
+
156
+  void print_bin(uint32_t value, uint8_t num_digits) {
157
+    uint32_t mask = 1 << (num_digits -1);
158
+    for (uint8_t i = 0; i < num_digits; i++) {
159
+      if (!(i % 4) && i)    printf(" ");
160
+      if (!(i % 16)  && i)  printf(" ");
161
+      if (value & mask)     printf("1");
162
+      else                  printf("0");
163
+      value <<= 1;
164
+    }
165
+  }
166
+
149 167
   void print(const char value[]) {
150 168
     printf("%s" , value);
151 169
   }
152
-  void print(char value, int = 0) {
153
-    printf("%c" , value);
154
-  }
155
-  void print(unsigned char value, int = 0) {
156
-    printf("%u" , value);
157
-  }
158
-  void print(int value, int = 0) {
159
-    printf("%d" , value);
170
+  void print(char value, int nbase = BYTE) {
171
+    if (nbase == BIN) print_bin(value,8);
172
+    else if (nbase == OCT) printf("%3o", value);
173
+    else if (nbase == HEX) printf("%2X", value);
174
+    else if (nbase == DEC ) printf("%d", value);
175
+    else printf("%c" , value);
176
+  }
177
+  void print(unsigned char value, int nbase = BYTE) {
178
+    if (nbase == BIN) print_bin(value,8);
179
+    else if (nbase == OCT) printf("%3o", value);
180
+    else if (nbase == HEX) printf("%2X", value);
181
+    else printf("%u" , value);
182
+  }
183
+  void print(int value, int nbase = BYTE) {
184
+    if (nbase == BIN) print_bin(value,16);
185
+    else if (nbase == OCT) printf("%6o", value);
186
+    else if (nbase == HEX) printf("%4X", value);
187
+    else printf("%d", value);
188
+  }
189
+  void print(unsigned int value, int nbase = BYTE) {
190
+    if (nbase == BIN) print_bin(value,16);
191
+    else if (nbase == OCT) printf("%6o", value);
192
+    else if (nbase == HEX) printf("%4X", value);
193
+    else printf("%u" , value);
194
+  }
195
+  void print(long value, int nbase = BYTE) {
196
+    if (nbase == BIN) print_bin(value,32);
197
+    else if (nbase == OCT) printf("%11o", value);
198
+    else if (nbase == HEX) printf("%8X", value);
199
+    else printf("%ld" , value);
200
+  }
201
+  void print(unsigned long value, int nbase = BYTE) {
202
+    if (nbase == BIN) print_bin(value,32);
203
+    else if (nbase == OCT) printf("%11o", value);
204
+    else if (nbase == HEX) printf("%8X", value);
205
+    else printf("%lu" , value);
160 206
   }
161
-  void print(unsigned int value, int = 0) {
162
-    printf("%u" , value);
163
-  }
164
-  void print(long value, int = 0) {
165
-    printf("%ld" , value);
166
-  }
167
-  void print(unsigned long value, int = 0) {
168
-    printf("%lu" , value);
169
-  }
170
-
171 207
   void print(float value, int round = 6) {
172 208
     printf("%f" , value);
173 209
   }
@@ -175,26 +211,34 @@ public:
175 211
     printf("%f" , value );
176 212
   }
177 213
 
214
+
215
+
178 216
   void println(const char value[]) {
179 217
     printf("%s\n" , value);
180 218
   }
181
-  void println(char value, int = 0) {
182
-    printf("%c\n" , value);
219
+  void println(char value, int nbase = BYTE) {
220
+    print(value, nbase);
221
+    println();
183 222
   }
184
-  void println(unsigned char value, int = 0) {
185
-    printf("%u\r\n" , value);
223
+  void println(unsigned char value, int nbase = BYTE) {
224
+    print(value, nbase);
225
+    println();
186 226
   }
187
-  void println(int value, int = 0) {
188
-    printf("%d\n" , value);
227
+  void println(int value, int nbase = BYTE) {
228
+    print(value, nbase);
229
+    println();
189 230
   }
190
-  void println(unsigned int value, int = 0) {
191
-    printf("%u\n" , value);
231
+  void println(unsigned int value, int nbase = BYTE) {
232
+    print(value, nbase);
233
+    println();
192 234
   }
193
-  void println(long value, int = 0) {
194
-    printf("%ld\n" , value);
235
+  void println(long value, int nbase = BYTE) {
236
+    print(value, nbase);
237
+    println();
195 238
   }
196
-  void println(unsigned long value, int = 0) {
197
-    printf("%lu\n" , value);
239
+  void println(unsigned long value, int nbase = BYTE) {
240
+    print(value, nbase);
241
+    println();
198 242
   }
199 243
   void println(float value, int round = 6) {
200 244
     printf("%f\n" , value );
@@ -205,6 +249,7 @@ public:
205 249
   void println(void) {
206 250
     print('\n');
207 251
   }
252
+
208 253
   volatile RingBuffer<uint8_t, 128> receive_buffer;
209 254
   volatile RingBuffer<uint8_t, 128> transmit_buffer;
210 255
   volatile bool host_connected;

Loading…
취소
저장