* EOF immediatly.
* \note Deprecated, use ser_getchar with rx_timeout set to 0.
*/
-int ser_getchar_nowait(struct KFileSerial *fd)
+int ser_getchar_nowait(struct SerialKFile *fd)
{
if (fifo_isempty_locked(&fd->ser->rxfifo))
return EOF;
*/
static size_t ser_read(struct KFile *fd, void *_buf, size_t size)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
size_t i = 0;
char *buf = (char *)_buf;
*/
static size_t ser_write(struct KFile *fd, const void *_buf, size_t size)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
const char *buf = (const char *)_buf;
size_t i = 0;
#if CONFIG_SER_RXTIMEOUT != -1 || CONFIG_SER_TXTIMEOUT != -1
-void ser_settimeouts(struct KFileSerial *fd, mtime_t rxtimeout, mtime_t txtimeout)
+void ser_settimeouts(struct SerialKFile *fd, mtime_t rxtimeout, mtime_t txtimeout)
{
fd->ser->rxtimeout = ms_to_ticks(rxtimeout);
fd->ser->txtimeout = ms_to_ticks(txtimeout);
*
* \note Serial errors are reset before and after executing the purge.
*/
-void ser_resync(struct KFileSerial *fd, mtime_t delay)
+void ser_resync(struct SerialKFile *fd, mtime_t delay)
{
mtime_t old_rxtimeout = ticks_to_ms(fd->ser->rxtimeout);
#endif /* CONFIG_SER_RXTIMEOUT */
-void ser_setbaudrate(struct KFileSerial *fd, unsigned long rate)
+void ser_setbaudrate(struct SerialKFile *fd, unsigned long rate)
{
fd->ser->hw->table->setBaudrate(fd->ser->hw, rate);
}
-void ser_setparity(struct KFileSerial *fd, int parity)
+void ser_setparity(struct SerialKFile *fd, int parity)
{
fd->ser->hw->table->setParity(fd->ser->hw, parity);
}
static int ser_error(struct KFile *fd)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
return ser_getstatus(fds->ser);
}
static void ser_clearerr(struct KFile *fd)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
ser_setstatus(fds->ser, 0);
}
/**
* Flush both the RX and TX buffers.
*/
-void ser_purge(struct KFileSerial *fd)
+void ser_purge(struct SerialKFile *fd)
{
ser_purgeRx(fd);
ser_purgeTx(fd);
/**
* Flush RX buffer.
*/
-void ser_purgeRx(struct KFileSerial *fd)
+void ser_purgeRx(struct SerialKFile *fd)
{
fifo_flush_locked(&fd->ser->rxfifo);
}
/**
* Flush TX buffer.
*/
-void ser_purgeTx(struct KFileSerial *fd)
+void ser_purgeTx(struct SerialKFile *fd)
{
fifo_flush_locked(&fd->ser->txfifo);
}
*/
static int ser_flush(struct KFile *fd)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
/*
* Wait until the FIFO becomes empty, and then until the byte currently in
* \param fd KFile Serial struct interface.
* \param unit Serial unit to open. Possible values are architecture dependant.
*/
-static struct Serial *ser_open(struct KFileSerial *fd, unsigned int unit)
+static struct Serial *ser_open(struct SerialKFile *fd, unsigned int unit)
{
struct Serial *port;
*/
static int ser_close(struct KFile *fd)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
Serial *port = fds->ser;
ASSERT(port->is_open);
*/
static struct KFile *ser_reopen(struct KFile *fd)
{
- KFileSerial *fds = KFILESERIAL(fd);
+ SerialKFile *fds = SERIALKFILE(fd);
ser_close(fd);
ser_open(fds, fds->ser->unit);
/**
* Init serial driver for \a unit.
*/
-void ser_init(struct KFileSerial *fds, unsigned int unit)
+void ser_init(struct SerialKFile *fds, unsigned int unit)
{
memset(fds, 0, sizeof(*fds));
*/
static size_t spimaster_read(struct KFile *fd, void *_buf, size_t size)
{
- KFileSerial *fd_spi = KFILESERIAL(fd);
+ SerialKFile *fd_spi = SERIALKFILE(fd);
ser_flush(&fd_spi->fd);
ser_purgeRx(fd_spi);
*/
static size_t spimaster_write(struct KFile *fd, const void *buf, size_t size)
{
- KFileSerial *fd_spi = KFILESERIAL(fd);
+ SerialKFile *fd_spi = SERIALKFILE(fd);
ser_purgeRx(fd_spi);
* we have to discard all incoming data. Then, when we want to
* receive, we must write fake data to SPI to trigger slave devices.
*/
-void spimaster_init(KFileSerial *fds, unsigned int unit)
+void spimaster_init(SerialKFile *fds, unsigned int unit)
{
ser_init(fds, unit);
fds->fd.read = spimaster_read;
struct SerialHardware* hw;
} Serial;
-typedef struct KFileSerial
+typedef struct SerialKFile
{
KFile fd;
Serial *ser;
-} KFileSerial;
+} SerialKFile;
/**
* ID for serial.
#define KFT_SERIAL MAKE_ID('S', 'E', 'R', 'L')
-INLINE KFileSerial * KFILESERIAL(KFile *fd)
+INLINE SerialKFile * SERIALKFILE(KFile *fd)
{
ASSERT(fd->_type == KFT_SERIAL);
- return (KFileSerial *)fd;
+ return (SerialKFile *)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);
-int ser_getchar_nowait(struct KFileSerial *fd);
-
-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);
+void ser_setbaudrate(struct SerialKFile *fd, unsigned long rate);
+void ser_setparity(struct SerialKFile *fd, int parity);
+void ser_settimeouts(struct SerialKFile *fd, mtime_t rxtimeout, mtime_t txtimeout);
+void ser_resync(struct SerialKFile *fd, mtime_t delay);
+int ser_getchar_nowait(struct SerialKFile *fd);
+
+void ser_purgeRx(struct SerialKFile *fd);
+void ser_purgeTx(struct SerialKFile *fd);
+void ser_purge(struct SerialKFile *fd);
+void ser_init(struct SerialKFile *fds, unsigned int unit);
+void spimaster_init(SerialKFile *fds, unsigned int unit);
/**
* you have to declare your context structure:
*
* \code
- * typedef struct KFileSerial
+ * typedef struct SerialKFile
* {
* KFile fd;
* Serial *ser;
- * } KFileSerial;
+ * } SerialKFile;
* \endcode
*
- * You should also supply a macro for casting KFile to KFileSerial:
+ * You should also supply a macro for casting KFile to SerialKFile:
*
* \code
- * INLINE KFileSerial * KFILESERIAL(KFile *fd)
+ * INLINE SerialKFile * SERIALKFILE(KFile *fd)
* {
* ASSERT(fd->_type == KFT_SERIAL);
- * return (KFileSerial *)fd;
+ * return (SerialKFile *)fd;
* }
* \endcode
*
* \code
* static int ser_kfile_close(struct KFile *fd)
* {
- * KFileSerial *fds = KFILESERIAL(fd);
+ * SerialKFile *fds = SerialKFile(fd);
* ser_close(fds->ser);
* return 0;
* }
* \endcode
- * KFILESERIAL macro helps to ensure that obj passed is really a Serial.
+ * SerialKFile macro helps to ensure that obj passed is really a Serial.
*
* KFile interface do not supply the open function: this is deliberate,
* because in embedded systems each device has its own init parameters.