remove itoa hack
This commit is contained in:
@@ -8,55 +8,15 @@ SerialStream::SerialStream(ComPort port, BaudRate baud_rate, DataBits data_bits,
|
|||||||
SerialStream kout = SerialStream();
|
SerialStream kout = SerialStream();
|
||||||
|
|
||||||
void SerialStream::flush() {
|
void SerialStream::flush() {
|
||||||
print(buffer, pos);
|
print(kout.buffer, kout.pos);
|
||||||
pos = 0;
|
kout.pos = 0;
|
||||||
}
|
|
||||||
|
|
||||||
// https://stackoverflow.com/questions/3440726/what-is-the-proper-way-of-implementing-a-good-itoa-function
|
|
||||||
// Yet, another good itoa implementation
|
|
||||||
// returns: the length of the number string
|
|
||||||
int itoa(int value, char *sp, int radix)
|
|
||||||
{
|
|
||||||
char tmp[16];// be careful with the length of the buffer
|
|
||||||
char *tp = tmp;
|
|
||||||
int i;
|
|
||||||
unsigned v;
|
|
||||||
|
|
||||||
int sign = (radix == 10 && value < 0);
|
|
||||||
if (sign)
|
|
||||||
v = -value;
|
|
||||||
else
|
|
||||||
v = (unsigned)value;
|
|
||||||
|
|
||||||
while (v || tp == tmp)
|
|
||||||
{
|
|
||||||
i = v % radix;
|
|
||||||
v /= radix;
|
|
||||||
if (i < 10)
|
|
||||||
*tp++ = i+'0';
|
|
||||||
else
|
|
||||||
*tp++ = i + 'a' - 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
int len = tp - tmp;
|
|
||||||
|
|
||||||
if (sign)
|
|
||||||
{
|
|
||||||
*sp++ = '-';
|
|
||||||
len++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (tp > tmp)
|
|
||||||
*sp++ = *--tp;
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SerialStream::setForeground(Color c) {
|
void SerialStream::setForeground(Color c) {
|
||||||
write(0x1b);
|
write(0x1b);
|
||||||
write('[');
|
write('[');
|
||||||
write('3');
|
kout << 30+c;
|
||||||
write(c + 0x30);
|
flush();
|
||||||
write('m');
|
write('m');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,10 +42,13 @@ void SerialStream::reset() {
|
|||||||
|
|
||||||
void SerialStream::setPos(int x, int y) {
|
void SerialStream::setPos(int x, int y) {
|
||||||
//char out[] = {0x1b, '[', 0, 0, ';', 0, 0, 'H', 0};
|
//char out[] = {0x1b, '[', 0, 0, ';', 0, 0, 'H', 0};
|
||||||
*this << 0x1b;
|
//*this << 0x1b;
|
||||||
*this << '[';
|
write(0x1b);
|
||||||
*this << dec << x;
|
kout << '[';
|
||||||
*this << ';' << y << 'H' << endl;
|
kout << dec << x;
|
||||||
|
kout << ';';
|
||||||
|
kout << dec << y;
|
||||||
|
kout << 'H';
|
||||||
flush();
|
flush();
|
||||||
//itoa(x, &out[2], 10);
|
//itoa(x, &out[2], 10);
|
||||||
//itoa(y, &out[5], 10);
|
//itoa(y, &out[5], 10);
|
||||||
|
|||||||
25
main.cc
25
main.cc
@@ -38,18 +38,19 @@ extern "C" int main() {
|
|||||||
//Serial s = Serial();
|
//Serial s = Serial();
|
||||||
//s.write('a');
|
//s.write('a');
|
||||||
|
|
||||||
//// test SerialStream
|
// test SerialStream
|
||||||
//SerialStream ss = SerialStream();
|
SerialStream ss = SerialStream();
|
||||||
//ss.print("test", 4);
|
ss.print("test", 4);
|
||||||
//ss.setAttribute(SerialStream::UNDERSCORE);
|
ss.setAttribute(SerialStream::UNDERSCORE);
|
||||||
//ss.print("test", 4);
|
ss.print("test", 4);
|
||||||
//ss.setAttribute(SerialStream::RESET);
|
ss.setAttribute(SerialStream::RESET);
|
||||||
//ss.setForeground(SerialStream::MAGENTA);
|
ss.setForeground(SerialStream::MAGENTA);
|
||||||
//ss.print("test", 4);
|
ss.print("test", 4);
|
||||||
//ss.setBackground(SerialStream::CYAN);
|
ss.setBackground(SerialStream::CYAN);
|
||||||
//ss.print("test", 4);
|
ss.print("test", 4);
|
||||||
//ss.setPos(10, 10);
|
ss.setPos(10, 10);
|
||||||
//ss.print("test", 4);
|
ss.print("test\n", 5);
|
||||||
|
ss.setBackground(SerialStream::BLACK);
|
||||||
|
|
||||||
kout << "Test <stream result> -> <expected>" << endl;
|
kout << "Test <stream result> -> <expected>" << endl;
|
||||||
kout << "bool: " << true << " -> true" << endl;
|
kout << "bool: " << true << " -> true" << endl;
|
||||||
|
|||||||
Reference in New Issue
Block a user