X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fser.h;h=06930cb439ff4ea9f2dda2763cfd8b1e3f7e5625;hb=dd4c57ad1010a2347247fd6bbcce30956d3de791;hp=7e773056c98d7284aa8df1b16538ecc484ff35c6;hpb=272271646858e81780184331f386656203223575;p=bertos.git diff --git a/drv/ser.h b/drv/ser.h index 7e773056..06930cb4 100644 --- a/drv/ser.h +++ b/drv/ser.h @@ -40,7 +40,7 @@ #ifndef DRV_SER_H #define DRV_SER_H - +#include #include #include @@ -126,30 +126,32 @@ typedef struct Serial struct SerialHardware* hw; } Serial; +typedef struct KFileSerial +{ + KFile fd; + Serial *ser; +} KFileSerial; -/* 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); +INLINE KFileSerial * KFILESERIAL(KFile *fd) +{ + ASSERT(fd->_type == KFT_SERIAL); + return (KFileSerial *)fd; +} -extern int ser_print(struct Serial *port, const char *s); -extern int ser_printf(struct Serial *port, const char *format, ...) FORMAT(__printf__, 2, 3); +/* Function prototypes */ +//extern int ser_getchar_nowait(struct Serial *port); -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); +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); -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); +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); -extern struct Serial *ser_open(unsigned int unit); -extern void ser_close(struct Serial *port); /** * \name Additional functions implemented as macros @@ -158,7 +160,6 @@ extern void ser_close(struct Serial *port); */ #define ser_getstatus(h) ((h)->status) #define ser_setstatus(h, x) ((h)->status = (x)) -#define ser_clearstatus(h) ser_setstatus(h, 0) /* \} */ #endif /* DRV_SER_H */