X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser.h;h=d74c2235e94c3d70d31c9a249aad508c9c279bce;hb=HEAD;hp=4f69a2af780c00c6d121ece2fc1647771bd790ee;hpb=1e6fd302fca27fb288343fc74b9f5e212078d5fe;p=bertos.git diff --git a/drv/ser.h b/drv/ser.h deleted file mode 100644 index 4f69a2af..00000000 --- a/drv/ser.h +++ /dev/null @@ -1,164 +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 CPU_HEADER(ser) - -#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; - - -/* Function prototypes */ -extern int ser_putchar(int c, struct Serial *port); -extern int ser_getchar(struct Serial *port); -extern int ser_getchar_nowait(struct Serial *port); - -extern int ser_write(struct Serial *port, const void *buf, size_t len); -extern int ser_read(struct Serial *port, void *buf, size_t size); - -extern int ser_print(struct Serial *port, const char *s); -extern int ser_printf(struct Serial *port, const char *format, ...) FORMAT(__printf__, 2, 3); - -extern int ser_gets(struct Serial *port, char *buf, int size); -extern int ser_gets_echo(struct Serial *port, char *buf, int size, bool echo); -extern void ser_clearstatus(struct Serial *port); - -extern void ser_setbaudrate(struct Serial *port, unsigned long rate); -extern void ser_setparity(struct Serial *port, int parity); -extern void ser_settimeouts(struct Serial *port, mtime_t rxtimeout, mtime_t txtimeout); -extern void ser_resync(struct Serial *port, mtime_t delay); -extern void ser_purge(struct Serial *port); -extern void ser_drain(struct Serial *port); - -extern struct Serial *ser_open(unsigned int unit); -extern void ser_close(struct Serial *port); - -/** - * \name Additional functions implemented as macros - * - * \{ - */ -#define ser_getstatus(h) ((h)->status) -#define ser_setstatus(h, x) ((h)->status = (x)) -/* \} */ - -#endif /* DRV_SER_H */