aboutsummaryrefslogtreecommitdiff
path: root/src/core/Print.cpp
blob: d2c3848d43b03e72fb3fd738ee457073c856dada (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#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;
}

void Print::print(const char c)
{
	write(c);
	return;
}

void Print::println(const char c)
{
	write(c);
	println();
	return;
}