uartspi.h

Go to the documentation of this file.
00001 #ifndef _DEV_UARTSPI_H_
00002 #define _DEV_UARTSPI_H_
00003 
00004 /*
00005  * Copyright (C) 2001-2003 by egnite Software GmbH. All rights reserved.
00006  *
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  *
00011  * 1. Redistributions of source code must retain the above copyright
00012  *    notice, this list of conditions and the following disclaimer.
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in the
00015  *    documentation and/or other materials provided with the distribution.
00016  * 3. Neither the name of the copyright holders nor the names of
00017  *    contributors may be used to endorse or promote products derived
00018  *    from this software without specific prior written permission.
00019  *
00020  * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS
00021  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00022  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00023  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE
00024  * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00025  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00026  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
00027  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
00028  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00029  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
00030  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00031  * SUCH DAMAGE.
00032  *
00033  * For additional information see http://www.ethernut.de/
00034  */
00035 
00036 #include <sys/device.h>
00037 
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048 
00049 /*
00050  * \addtogroup xgUartSpi
00051  */
00054 /*
00055  * UART device control block type.
00056  */
00057 typedef struct _UARTSDCB UARTSDCB;
00058 
00059 /*
00060  * \struct _UARTSDCB uartspi.h dev/uartspi.h
00061  * \brief UART device control block structure.
00062  */
00063 struct _UARTSDCB {
00064     /* \brief Baudrate selector.
00065      *
00066      * See devices datasheet for further details.
00067      */
00068     uint8_t dcb_baudSelect;
00069 
00070     /* \brief Mode.
00071      *  - xxxx xxx0  8 bit
00072      *  - xxxx xxx1  7 bit
00073      *  - xxxx x0xx  No parity bit
00074      *  - xxxx x10x  Even parity
00075      *  - xxxx x11x  Odd parity
00076      */
00077     uint8_t dcb_mode;
00078 
00079     /* \brief Read timeout.
00080      */
00081     uint32_t dcb_rtimeout;
00082 
00083     /* \brief Write timeout.
00084      */
00085     uint32_t dcb_wtimeout;
00086 
00087     /* \brief Configuration flag.
00088      * Set if device has been configured.
00089      */
00090     volatile uint8_t dcb_configured;
00091 
00092     /* \brief Configuration flag.
00093      * Set if device has been configured.
00094      */
00095     uint32_t dcb_crystal;
00096 
00097     /* \brief Device firmware version.
00098      */
00099     uint32_t dcb_version;
00100 
00101     /* \brief Queue of threads waiting for output buffer empty.
00102      *
00103      * Threads are added to this queue when calling UartSpiFlush(). 
00104      */
00105     HANDLE dcb_tx_rdy;
00106 
00107     /* \brief Queue of threads waiting for a character in the input buffer.
00108      *
00109      * Threads are added to this queue when calling UartSpiInput(). 
00110      */
00111     HANDLE dcb_rx_rdy;
00112 };
00113 
00116 /*
00117  * Available drivers.
00118  */
00119 extern NUTDEVICE devUarts[];
00120 
00121 extern int UartSpiInit(NUTDEVICE *dev);
00122 extern int UartSpiIOCtl(NUTDEVICE *dev, int req, void *conf);
00123 
00124 #ifdef __cplusplus
00125 }
00126 #endif
00127 
00128 #endif

© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/