From d5d826d6dc8dce514e16e6ac27d59a7fa2e2a356 Mon Sep 17 00:00:00 2001 From: schodet Date: Sun, 29 Feb 2004 17:58:45 +0000 Subject: Mod: Nouveau systeme plus modulaire pour le port série. --- 2004/i/nono/src/serial/serial_base.cc | 72 +++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 2004/i/nono/src/serial/serial_base.cc (limited to '2004/i/nono/src/serial/serial_base.cc') diff --git a/2004/i/nono/src/serial/serial_base.cc b/2004/i/nono/src/serial/serial_base.cc new file mode 100644 index 0000000..4815c67 --- /dev/null +++ b/2004/i/nono/src/serial/serial_base.cc @@ -0,0 +1,72 @@ +// serial_base.cc +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "serial_base.h" + +/// Constructeur. +SerialBase::SerialBase (void) + : fd_ (-1) +{ +} + +/// Destructeur. +SerialBase::~SerialBase (void) +{ +} + +/// Lit un bloc, retourne le nombre d'octets lus ou <= 0 en cas d'erreur +/// ou si aucun caractère n'est disponible. Pour le robot, préferer en +/// général getchar() pour du non-bloquant. +ssize_t +SerialBase::read (void *buf, size_t size) +{ + return ::read (fd_, buf, size); +} + +/// Lit un caractère, ou -1 en cas d'erreur ou si aucun caractère n'est +/// disponible. +int +SerialBase::getchar (void) +{ + char c; + if (read (&c, 1) == 1) + return c; + else + return -1; +} + +/// Ecrit un bloc. +void +SerialBase::write (const void *buf, size_t size) +{ + ::write (fd_, buf, size); +} + +/// Ecrit un caractère. +void +SerialBase::putchar (int c) +{ + write (&c, 1); +} + -- cgit v1.2.3