From cce43c2efc8de47fedebf70529b71145f1d2beb9 Mon Sep 17 00:00:00 2001 From: matsutsuka Date: Tue, 11 Sep 2007 12:03:20 +0000 Subject: [PATCH] Baud-rate has been added to the architecture-depend initialization. Enabled packaged buffer reading. --- cpu/z80/dev/rs232-slip.c | 85 ++++++++++++++++++++++++++++++++++++++++ cpu/z80/dev/rs232-slip.h | 45 +++++++++++++++++++++ cpu/z80/dev/rs232.c | 18 +++++---- cpu/z80/dev/rs232.h | 22 ++++++++--- 4 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 cpu/z80/dev/rs232-slip.c create mode 100644 cpu/z80/dev/rs232-slip.h diff --git a/cpu/z80/dev/rs232-slip.c b/cpu/z80/dev/rs232-slip.c new file mode 100644 index 000000000..408b84bae --- /dev/null +++ b/cpu/z80/dev/rs232-slip.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2007, Takahide Matsutsuka. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: rs232-slip.c,v 1.1 2007/09/11 12:03:20 matsutsuka Exp $ + * + */ +/* + * \file + * This is RS-232C SLIP process based on polling. + * Note that rs232.c and rs232-slip.c cannot be used at the same time. + * \author + * Takahide Matsutsuka + */ + +#include "contiki.h" +#include "slip.h" +#include "rs232.h" +#include "rs232-slip.h" + +/*---------------------------------------------------------------------------*/ +void slip_arch_init(unsigned long ubr) { + rs232_arch_init(ubr); +} +/*---------------------------------------------------------------------------*/ +void slip_arch_writeb(unsigned char c) { + rs232_arch_writeb(c); +} +/*---------------------------------------------------------------------------*/ +PROCESS(rs232sl_process, "RS-232C SLIP polling process"); +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(rs232sl_process, ev, data) +{ + static struct etimer timer; + char ch; + unsigned char i; + PROCESS_BEGIN(); + + rs232_arch_init(RS232_BAUD_RATE); + etimer_set(&timer, CLOCK_SECOND / 16); + + while(1) { + PROCESS_WAIT_EVENT(); + + if (etimer_expired(&timer)) { + for (i = 0; i < RS232_BUFSIZE; i++) { + ch = rs232_arch_poll(); + if (ch == 0) { + break; + } + /* We have an input data */ + slip_input_byte(ch); + } + etimer_reset(&timer); + } + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/cpu/z80/dev/rs232-slip.h b/cpu/z80/dev/rs232-slip.h new file mode 100644 index 000000000..043ec0a1d --- /dev/null +++ b/cpu/z80/dev/rs232-slip.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2007, Takahide Matsutsuka. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $Id: rs232-slip.h,v 1.1 2007/09/11 12:03:20 matsutsuka Exp $ + * + */ +/* + * \file + * This is RS-232C process based on polling. + * \author + * Takahide Matsutsuka + */ + +#ifndef __RS232_SLIP_H__ +#define __RS232_SLIP_H__ + +PROCESS_NAME(rs232sl_process); + +#endif /* __RS232_SLIP_H__ */ diff --git a/cpu/z80/dev/rs232.c b/cpu/z80/dev/rs232.c index 3359cf4fe..b785ded39 100644 --- a/cpu/z80/dev/rs232.c +++ b/cpu/z80/dev/rs232.c @@ -27,20 +27,20 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: rs232.c,v 1.1 2007/09/09 13:41:15 matsutsuka Exp $ + * $Id: rs232.c,v 1.2 2007/09/11 12:03:20 matsutsuka Exp $ * */ /* * \file * This is RS-232C process based on polling. + * Note that rs232.c and rs232-slip.c cannot be used at the same time. * \author * Takahide Matsutsuka */ #include "contiki.h" -#include "serial.h" -#include "rs232.h" -#include "log.h" +#include "dev/serial.h" +#include "dev/rs232.h" PROCESS(rs232_process, "RS-232C polling process"); /*---------------------------------------------------------------------------*/ @@ -48,17 +48,21 @@ PROCESS_THREAD(rs232_process, ev, data) { static struct etimer timer; char ch; + unsigned char i; PROCESS_BEGIN(); - rs232_arch_init(); + rs232_arch_init(RS232_BAUD_RATE); etimer_set(&timer, CLOCK_SECOND / 16); while(1) { PROCESS_WAIT_EVENT(); if (etimer_expired(&timer)) { - ch = rs232_arch_poll(); - if (ch != 0) { + for (i = 0; i < RS232_BUFSIZE; i++) { + ch = rs232_arch_poll(); + if (ch == 0) { + break; + } /* We have an input data */ serial_input_byte(ch); } diff --git a/cpu/z80/dev/rs232.h b/cpu/z80/dev/rs232.h index f09afc7fa..d2c29c3c4 100644 --- a/cpu/z80/dev/rs232.h +++ b/cpu/z80/dev/rs232.h @@ -27,7 +27,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: rs232.h,v 1.1 2007/09/09 13:41:15 matsutsuka Exp $ + * $Id: rs232.h,v 1.2 2007/09/11 12:03:20 matsutsuka Exp $ * */ /* @@ -37,8 +37,8 @@ * Takahide Matsutsuka */ -#ifndef __RS_232C_H__ -#define __RS_232C_H__ +#ifndef __RS232_H__ +#define __RS232_H__ /* * Implement the following methods for each platform. @@ -47,7 +47,7 @@ /* * An architecture-depend implementation of RS-232C initialization. */ -void rs232_arch_init(void); +void rs232_arch_init(unsigned long ubr); /* * An architecture-depend implementation of RS-232C polling. @@ -62,4 +62,16 @@ void rs232_arch_writeb(u8_t ch); PROCESS_NAME(rs232_process); -#endif /* __RS_232C_H__ */ +#ifdef RS232_CONF_BUFISZE +#define RS232_BUFSIZE RS232_CONF_BUFISZE +#else /* RS232_CONF_BUFISZE */ +#define RS232_BUFSIZE 64 +#endif /* RS232_CONF_BUFISZE */ + +#ifdef RS232_CONF_BAUD_RATE +#define RS232_BAUD_RATE RS232_CONF_BAUD_RATE +#else /* RS232_CONF_BAUD_RATE */ +#define RS232_BAUD_RATE 9600 +#endif /* RS232_CONF_BAUD_RATE */ + +#endif /* __RS232_H__ */