genode/repos/os/src/test/terminal_echo/main.cc

58 lines
1.2 KiB
C++

/*
* \brief Terminal echo program
* \author Norman Feske
* \date 2009-10-16
*/
/*
* Copyright (C) 2009-2013 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#include <base/printf.h>
#include <base/signal.h>
#include <terminal_session/connection.h>
using namespace Genode;
static const bool verbose = false;
int main(int, char **)
{
static Terminal::Connection terminal;
enum { READ_BUFFER_SIZE = 100 };
static char read_buffer[READ_BUFFER_SIZE];
Signal_receiver sig_rec;
Signal_context sig_ctx;
terminal.read_avail_sigh(sig_rec.manage(&sig_ctx));
static const char *intro_text =
"--- Terminal echo test started - now you can type characters to be echoed. ---\r\n";
terminal.write(intro_text, strlen(intro_text) + 1);
for (;;) {
sig_rec.wait_for_signal();
int num_bytes = terminal.read(read_buffer, sizeof(read_buffer));
if (verbose && (num_bytes > 0))
PDBG("got %d bytes", num_bytes);
for (int i = 0; i < num_bytes; i++) {
if (read_buffer[i] == '\r') {
terminal.write("\n", 1);
}
terminal.write(&read_buffer[i], 1);
}
}
return 0;
}