X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser.h;h=d74c2235e94c3d70d31c9a249aad508c9c279bce;hb=HEAD;hp=b71580556c06c6679c3f545f04457db071f9ab03;hpb=94c0c70c1db78ecbd8de629bf78991ae144a1dc6;p=bertos.git diff --git a/drv/ser.h b/drv/ser.h deleted file mode 100644 index b7158055..00000000 --- a/drv/ser.h +++ /dev/null @@ -1,189 +0,0 @@ -/** - * \file - * - * - * \brief High level serial I/O API - * - * \version $Id$ - * \author Bernardo Innocenti - */ - -#ifndef DRV_SER_H -#define DRV_SER_H - -#include -#include -#include - -#if OS_HOSTED - typedef uint16_t serstatus_t; - - /* Software errors */ - #define SERRF_RXFIFOOVERRUN BV(0) /**< Rx FIFO buffer overrun */ - #define SERRF_RXTIMEOUT BV(1) /**< Receive timeout */ - #define SERRF_TXTIMEOUT BV(2) /**< Transmit timeout */ - - /* Hardware errors */ - #define SERRF_RXSROVERRUN 0 /**< Unsupported in emulated serial port. */ - #define SERRF_FRAMEERROR 0 /**< Unsupported in emulated serial port. */ - #define SERRF_PARITYERROR 0 /**< Unsupported in emulated serial port. */ - #define SERRF_NOISEERROR 0 /**< Unsupported in emulated serial port. */ - - enum - { - SER_UART0, - SER_UART1, - - SER_CNT /**< Number of serial ports */ - }; - -#else - #include CPU_HEADER(ser) -#endif - -#include - - - -/** - * \name Masks to group TX/RX errors. - * \{ - */ -#define SERRF_RX \ - ( SERRF_RXFIFOOVERRUN \ - | SERRF_RXTIMEOUT \ - | SERRF_RXSROVERRUN \ - | SERRF_PARITYERROR \ - | SERRF_FRAMEERROR \ - | SERRF_NOISEERROR) -#define SERRF_TX (SERRF_TXTIMEOUT) -/*\}*/ - -/** - * \name LSB or MSB first data order for SPI driver. - * \{ - */ -#define SER_MSB_FIRST 0 -#define SER_LSB_FIRST 1 -/*\}*/ - -/** - * \name Parity settings for ser_setparity(). - * - * \note Values are AVR-specific for performance reasons. - * Other processors should either decode them or - * redefine these macros. - * \{ - */ -#define SER_PARITY_NONE 0 -#define SER_PARITY_EVEN 2 -#define SER_PARITY_ODD 3 -/*\}*/ - - -struct SerialHardware; - -/** Human-readable serial error descriptions */ -extern const char * const serial_errors[8]; - -/** Serial handle structure */ -typedef struct Serial -{ - /** Physical port number */ - unsigned int unit; - -#ifdef _DEBUG - bool is_open; -#endif - - /** - * \name Transmit and receive FIFOs. - * - * Declared volatile because handled asinchronously by interrupts. - * - * \{ - */ - FIFOBuffer txfifo; - FIFOBuffer rxfifo; - /* \} */ - -#if CONFIG_SER_RXTIMEOUT != -1 - ticks_t rxtimeout; -#endif -#if CONFIG_SER_TXTIMEOUT != -1 - ticks_t txtimeout; -#endif - - /** Holds the flags defined above. Will be 0 when no errors have occurred. */ - volatile serstatus_t status; - - /** Low-level interface to hardware. */ - struct SerialHardware* hw; -} Serial; - -typedef struct KFileSerial -{ - KFile fd; - Serial *ser; -} KFileSerial; - -INLINE KFileSerial * KFILESERIAL(KFile *fd) -{ - ASSERT(fd->_type == KFT_SERIAL); - return (KFileSerial *)fd; -} - -/* Function prototypes */ -//extern int ser_getchar_nowait(struct Serial *port); - -void ser_setbaudrate(struct KFileSerial *fd, unsigned long rate); -void ser_setparity(struct KFileSerial *fd, int parity); -void ser_settimeouts(struct KFileSerial *fd, mtime_t rxtimeout, mtime_t txtimeout); -void ser_resync(struct KFileSerial *fd, mtime_t delay); - -void ser_purgeRx(struct KFileSerial *fd); -void ser_purgeTx(struct KFileSerial *fd); -void ser_purge(struct KFileSerial *fd); -void ser_init(struct KFileSerial *fds, unsigned int unit); -void spimaster_init(KFileSerial *fds, unsigned int unit); - - -/** - * \name Additional functions implemented as macros - * - * \{ - */ -#define ser_getstatus(h) ((h)->status) -#define ser_setstatus(h, x) ((h)->status = (x)) -/* \} */ - -#endif /* DRV_SER_H */