diff options
Diffstat (limited to 'src/core/Print.cpp')
| -rw-r--r-- | src/core/Print.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/core/Print.cpp b/src/core/Print.cpp new file mode 100644 index 0000000..ab58b9f --- /dev/null +++ b/src/core/Print.cpp @@ -0,0 +1,109 @@ +#include "Print.h" + +void Print::print(const char *s) //uart_puts +{ + int n; + for (n = 0; *s; s++, n++) { + write(*s); + } + //return n; + return; +} + +void Print::print(int val, RADIX_FORMAT format) +{ + if(format == BYTE) + { + write((char)(val & 0xff)); + return; + } + char s[32]; + int i,j; + i=j=0; // header of strings + if (val<0) + { //minus value + s[i]='-'; + val=~val+1; + i++; + j++; + } + switch(format) + { + case BIN: + while (val>0) + { // do until zero + s[i++]=radix_bin[val%format]; + val/=format; + } + break; + + case OCT: + while (val>0) + { // do until zero + s[i++]=radix_oct[val%format]; + val/=format; + } + break; + + case DEC: //RADIX = Decimal + while (val>0) + { // do until zero + s[i++]=radix_dec[val%format]; + val/=format; + } + break; + + case HEX: //RADIX = Hexadecimal + while (val>0) + { // do until zero + s[i++]=radix_hex[val%format]; + val/=format; + } + break; + default: + break; + } + s[i--]='\0'; // EOF + while (j<i) + { // reverse strings array + char t; + t=s[j]; s[j]=s[i]; s[i]=t; + j++; i--; + } + print(s); + + return ; +} + +void Print::write(const char *s, int length) +{ + int n; + for(n=0;n<length;s++,n++) + { + write(*s); + } + return; +} + +void Print::println(const char *s) +{ + print(s); + println(); + return; +} + + +void Print::println(int val, RADIX_FORMAT format) +{ + print(val,format); + println(); + return; +} + +void Print::println(void) +{ + write ('\r'); + write ('\n'); + return; +} + |
